Browse Source

部署版本

Pengxy 4 months ago
parent
commit
7b61b9a49f
100 changed files with 326 additions and 265 deletions
  1. BIN
      yudao-module-bpm/target/classes/cn/iocoder/yudao/module/bpm/controller/admin/definition/BpmModelController.class
  2. BIN
      yudao-module-bpm/target/classes/cn/iocoder/yudao/module/bpm/controller/admin/definition/BpmProcessDefinitionController.class
  3. BIN
      yudao-module-bpm/target/classes/cn/iocoder/yudao/module/bpm/controller/admin/definition/BpmProcessListenerController.class
  4. BIN
      yudao-module-bpm/target/classes/cn/iocoder/yudao/module/bpm/controller/admin/definition/BpmUserGroupController.class
  5. BIN
      yudao-module-bpm/target/classes/cn/iocoder/yudao/module/bpm/controller/admin/definition/vo/category/BpmCategoryRespVO.class
  6. BIN
      yudao-module-bpm/target/classes/cn/iocoder/yudao/module/bpm/controller/admin/definition/vo/form/BpmFormFieldVO.class
  7. BIN
      yudao-module-bpm/target/classes/cn/iocoder/yudao/module/bpm/controller/admin/definition/vo/form/BpmFormPageReqVO.class
  8. BIN
      yudao-module-bpm/target/classes/cn/iocoder/yudao/module/bpm/controller/admin/definition/vo/form/BpmFormSaveReqVO.class
  9. BIN
      yudao-module-bpm/target/classes/cn/iocoder/yudao/module/bpm/controller/admin/definition/vo/group/BpmUserGroupRespVO.class
  10. BIN
      yudao-module-bpm/target/classes/cn/iocoder/yudao/module/bpm/controller/admin/definition/vo/model/BpmModeUpdateBpmnReqVO.class
  11. BIN
      yudao-module-bpm/target/classes/cn/iocoder/yudao/module/bpm/controller/admin/definition/vo/model/BpmModelSaveReqVO.class
  12. BIN
      yudao-module-bpm/target/classes/cn/iocoder/yudao/module/bpm/controller/admin/definition/vo/model/BpmModelUpdateStateReqVO.class
  13. BIN
      yudao-module-bpm/target/classes/cn/iocoder/yudao/module/bpm/controller/admin/definition/vo/model/simple/BpmSimpleModelNodeVO$Condition.class
  14. BIN
      yudao-module-bpm/target/classes/cn/iocoder/yudao/module/bpm/controller/admin/definition/vo/model/simple/BpmSimpleModelNodeVO$DelaySetting.class
  15. BIN
      yudao-module-bpm/target/classes/cn/iocoder/yudao/module/bpm/controller/admin/definition/vo/model/simple/BpmSimpleModelNodeVO$HttpRequestParam.class
  16. BIN
      yudao-module-bpm/target/classes/cn/iocoder/yudao/module/bpm/controller/admin/definition/vo/model/simple/BpmSimpleModelNodeVO$ListenerHandler.class
  17. BIN
      yudao-module-bpm/target/classes/cn/iocoder/yudao/module/bpm/controller/admin/definition/vo/model/simple/BpmSimpleModelNodeVO$OperationButtonSetting.class
  18. BIN
      yudao-module-bpm/target/classes/cn/iocoder/yudao/module/bpm/controller/admin/definition/vo/process/BpmProcessDefinitionRespVO$UserTask.class
  19. BIN
      yudao-module-bpm/target/classes/cn/iocoder/yudao/module/bpm/controller/admin/definition/vo/process/BpmProcessDefinitionRespVO.class
  20. BIN
      yudao-module-bpm/target/classes/cn/iocoder/yudao/module/bpm/controller/admin/oa/vo/BpmOALeavePageReqVO.class
  21. BIN
      yudao-module-bpm/target/classes/cn/iocoder/yudao/module/bpm/controller/admin/task/vo/instance/BpmApprovalDetailRespVO$ActivityNodeTask.class
  22. BIN
      yudao-module-bpm/target/classes/cn/iocoder/yudao/module/bpm/controller/admin/task/vo/instance/BpmApprovalDetailRespVO.class
  23. BIN
      yudao-module-bpm/target/classes/cn/iocoder/yudao/module/bpm/controller/admin/task/vo/instance/BpmProcessInstancePageReqVO.class
  24. BIN
      yudao-module-bpm/target/classes/cn/iocoder/yudao/module/bpm/controller/admin/task/vo/instance/BpmProcessPrintDataRespVO.class
  25. BIN
      yudao-module-bpm/target/classes/cn/iocoder/yudao/module/bpm/controller/admin/task/vo/task/BpmTaskPageReqVO.class
  26. BIN
      yudao-module-bpm/target/classes/cn/iocoder/yudao/module/bpm/controller/admin/task/vo/task/BpmTaskReturnReqVO.class
  27. BIN
      yudao-module-bpm/target/classes/cn/iocoder/yudao/module/bpm/convert/definition/BpmModelConvert.class
  28. BIN
      yudao-module-bpm/target/classes/cn/iocoder/yudao/module/bpm/convert/task/BpmProcessInstanceConvert.class
  29. BIN
      yudao-module-bpm/target/classes/cn/iocoder/yudao/module/bpm/convert/task/BpmTaskConvert.class
  30. BIN
      yudao-module-bpm/target/classes/cn/iocoder/yudao/module/bpm/dal/dataobject/definition/BpmProcessDefinitionInfoDO$BpmProcessDefinitionInfoDOBuilder.class
  31. BIN
      yudao-module-bpm/target/classes/cn/iocoder/yudao/module/bpm/dal/dataobject/definition/BpmUserGroupDO$BpmUserGroupDOBuilder.class
  32. BIN
      yudao-module-bpm/target/classes/cn/iocoder/yudao/module/bpm/dal/dataobject/oa/BpmOALeaveDO$BpmOALeaveDOBuilder.class
  33. BIN
      yudao-module-bpm/target/classes/cn/iocoder/yudao/module/bpm/dal/dataobject/oa/BpmOALeaveDO.class
  34. BIN
      yudao-module-bpm/target/classes/cn/iocoder/yudao/module/bpm/enums/definition/BpmAutoApproveTypeEnum.class
  35. BIN
      yudao-module-bpm/target/classes/cn/iocoder/yudao/module/bpm/enums/definition/BpmSimpleModeConditionTypeEnum.class
  36. BIN
      yudao-module-bpm/target/classes/cn/iocoder/yudao/module/bpm/enums/definition/BpmUserTaskRejectHandlerTypeEnum.class
  37. BIN
      yudao-module-bpm/target/classes/cn/iocoder/yudao/module/bpm/enums/message/BpmMessageEnum.class
  38. BIN
      yudao-module-bpm/target/classes/cn/iocoder/yudao/module/bpm/enums/task/BpmProcessInstanceStatusEnum.class
  39. BIN
      yudao-module-bpm/target/classes/cn/iocoder/yudao/module/bpm/enums/task/BpmTaskSignTypeEnum.class
  40. BIN
      yudao-module-bpm/target/classes/cn/iocoder/yudao/module/bpm/enums/task/BpmTaskStatusEnum.class
  41. BIN
      yudao-module-bpm/target/classes/cn/iocoder/yudao/module/bpm/framework/flowable/config/BpmFlowableConfiguration.class
  42. BIN
      yudao-module-bpm/target/classes/cn/iocoder/yudao/module/bpm/framework/flowable/core/behavior/BpmParallelMultiInstanceBehavior.class
  43. BIN
      yudao-module-bpm/target/classes/cn/iocoder/yudao/module/bpm/framework/flowable/core/behavior/BpmSequentialMultiInstanceBehavior.class
  44. BIN
      yudao-module-bpm/target/classes/cn/iocoder/yudao/module/bpm/framework/flowable/core/candidate/strategy/dept/BpmTaskCandidateStartUserSelectStrategy.class
  45. BIN
      yudao-module-bpm/target/classes/cn/iocoder/yudao/module/bpm/framework/flowable/core/candidate/strategy/form/BpmTaskCandidateFormUserStrategy.class
  46. BIN
      yudao-module-bpm/target/classes/cn/iocoder/yudao/module/bpm/framework/flowable/core/candidate/strategy/other/BpmTaskCandidateExpressionStrategy.class
  47. BIN
      yudao-module-bpm/target/classes/cn/iocoder/yudao/module/bpm/framework/flowable/core/event/BpmProcessInstanceEventPublisher.class
  48. BIN
      yudao-module-bpm/target/classes/cn/iocoder/yudao/module/bpm/framework/flowable/core/listener/demo/exection/DemoDelegateClassExecutionListener.class
  49. BIN
      yudao-module-bpm/target/classes/cn/iocoder/yudao/module/bpm/framework/flowable/core/listener/demo/exection/DemoDelegateExpressionExecutionListener.class
  50. BIN
      yudao-module-bpm/target/classes/cn/iocoder/yudao/module/bpm/framework/flowable/core/listener/demo/task/DemoSpringExpressionTaskListener.class
  51. BIN
      yudao-module-bpm/target/classes/cn/iocoder/yudao/module/bpm/framework/flowable/core/util/BpmnModelUtils.class
  52. BIN
      yudao-module-bpm/target/classes/cn/iocoder/yudao/module/bpm/framework/flowable/core/util/SimpleModelUtils$ChildProcessConvert.class
  53. BIN
      yudao-module-bpm/target/classes/cn/iocoder/yudao/module/bpm/framework/flowable/core/util/SimpleModelUtils$EndNodeConvert.class
  54. BIN
      yudao-module-bpm/target/classes/cn/iocoder/yudao/module/bpm/framework/flowable/core/util/SimpleModelUtils$ParallelBranchNodeConvert.class
  55. BIN
      yudao-module-bpm/target/classes/cn/iocoder/yudao/module/bpm/framework/flowable/core/util/SimpleModelUtils$StartNodeConvert.class
  56. BIN
      yudao-module-bpm/target/classes/cn/iocoder/yudao/module/bpm/framework/flowable/core/util/SimpleModelUtils$StartUserNodeConvert.class
  57. BIN
      yudao-module-bpm/target/classes/cn/iocoder/yudao/module/bpm/framework/flowable/core/util/SimpleModelUtils$TriggerNodeConvert.class
  58. BIN
      yudao-module-bpm/target/classes/cn/iocoder/yudao/module/bpm/service/definition/BpmFormService.class
  59. BIN
      yudao-module-bpm/target/classes/cn/iocoder/yudao/module/bpm/service/definition/BpmProcessDefinitionServiceImpl.class
  60. BIN
      yudao-module-bpm/target/classes/cn/iocoder/yudao/module/bpm/service/definition/BpmProcessExpressionServiceImpl.class
  61. BIN
      yudao-module-bpm/target/classes/cn/iocoder/yudao/module/bpm/service/definition/dto/BpmFormFieldRespDTO.class
  62. BIN
      yudao-module-bpm/target/classes/cn/iocoder/yudao/module/bpm/service/task/BpmProcessInstanceServiceImpl$1.class
  63. BIN
      yudao-module-bpm/target/classes/cn/iocoder/yudao/module/bpm/service/task/BpmProcessInstanceServiceImpl$2.class
  64. BIN
      yudao-module-bpm/target/classes/cn/iocoder/yudao/module/bpm/service/task/BpmProcessInstanceServiceImpl.class
  65. BIN
      yudao-module-bpm/target/classes/cn/iocoder/yudao/module/bpm/service/task/BpmTaskServiceImpl.class
  66. BIN
      yudao-module-bpm/target/classes/cn/iocoder/yudao/module/bpm/service/task/listener/BpmCallActivityListener.class
  67. BIN
      yudao-module-bpm/target/classes/cn/iocoder/yudao/module/bpm/service/task/trigger/form/BpmFormDeleteTrigger.class
  68. 1 1
      yudao-module-bpm/target/generated-sources/annotations/cn/iocoder/yudao/module/bpm/convert/task/BpmProcessInstanceConvertImpl.java
  69. BIN
      yudao-module-bpm/target/test-classes/cn/iocoder/yudao/module/bpm/framework/flowable/core/candidate/BpmTaskCandidateInvokerTest.class
  70. BIN
      yudao-module-bpm/target/test-classes/cn/iocoder/yudao/module/bpm/framework/flowable/core/candidate/strategy/dept/BpmTaskCandidateDeptLeaderMultiStrategyTest.class
  71. BIN
      yudao-module-bpm/target/test-classes/cn/iocoder/yudao/module/bpm/framework/flowable/core/candidate/strategy/dept/BpmTaskCandidateDeptLeaderStrategyTest.class
  72. BIN
      yudao-module-bpm/target/test-classes/cn/iocoder/yudao/module/bpm/framework/flowable/core/candidate/strategy/dept/BpmTaskCandidateStartUserDeptLeaderMultiStrategyTest.class
  73. BIN
      yudao-module-bpm/target/test-classes/cn/iocoder/yudao/module/bpm/framework/flowable/core/candidate/strategy/dept/BpmTaskCandidateStartUserDeptLeaderStrategyTest.class
  74. BIN
      yudao-module-bpm/target/test-classes/cn/iocoder/yudao/module/bpm/framework/flowable/core/candidate/strategy/dept/BpmTaskCandidateStartUserSelectStrategyTest.class
  75. BIN
      yudao-module-bpm/target/test-classes/cn/iocoder/yudao/module/bpm/framework/flowable/core/candidate/strategy/other/BpmTaskCandidateAssignEmptyStrategyTest.class
  76. BIN
      yudao-module-bpm/target/test-classes/cn/iocoder/yudao/module/bpm/framework/flowable/core/candidate/strategy/user/BpmTaskCandidateStartUserStrategyTest.class
  77. BIN
      yudao-module-bpm/target/test-classes/cn/iocoder/yudao/module/bpm/service/definition/BpmUserGroupServiceTest.class
  78. BIN
      yudao-module-report/target/classes/cn/iocoder/yudao/module/report/controller/admin/goview/GoViewDataController.class
  79. BIN
      yudao-module-report/target/classes/cn/iocoder/yudao/module/report/controller/admin/goview/vo/data/GoViewDataGetBySqlReqVO.class
  80. BIN
      yudao-module-report/target/classes/cn/iocoder/yudao/module/report/controller/admin/goview/vo/data/GoViewDataRespVO.class
  81. BIN
      yudao-module-report/target/classes/cn/iocoder/yudao/module/report/controller/admin/goview/vo/project/GoViewProjectRespVO.class
  82. BIN
      yudao-module-report/target/classes/cn/iocoder/yudao/module/report/dal/mysql/goview/GoViewProjectMapper.class
  83. BIN
      yudao-module-report/target/classes/cn/iocoder/yudao/module/report/framework/jmreport/core/service/JmOnlDragExternalServiceImpl.class
  84. BIN
      yudao-module-report/target/classes/cn/iocoder/yudao/module/report/framework/jmreport/core/service/JmReportTokenServiceImpl.class
  85. 1 1
      yudao-module-system/target/generated-sources/annotations/cn/iocoder/yudao/module/system/convert/oauth2/OAuth2OpenConvertImpl.java
  86. 0 92
      yudao-server/.flattened-pom.xml
  87. 9 9
      yudao-server/src/main/resources/application-dev.yaml
  88. 1 1
      yudao-server/src/main/resources/application-local.yaml
  89. 0 2
      yudao-server/target/maven-status/maven-compiler-plugin/compile/default-compile/createdFiles.lst
  90. 0 1
      yudao-server/target/maven-status/maven-compiler-plugin/testCompile/default-testCompile/inputFiles.lst
  91. BIN
      yudao-server/target/yudao-server.jar
  92. BIN
      yudao-server/target/yudao-server.jar.original
  93. 2 2
      yudao-ui/yudao-ui-admin-vue3/.env.dev
  94. 5 5
      yudao-ui/yudao-ui-admin-vue3/package.json
  95. 5 0
      yudao-ui/yudao-ui-admin-vue3/src/api/jiaohuo/order.ts
  96. 44 0
      yudao-ui/yudao-ui-admin-vue3/src/router/modules/remaining.ts
  97. 5 1
      yudao-ui/yudao-ui-admin-vue3/src/views/dingdan/purchase-order/MaterialPurchaseOrder.vue
  98. 68 34
      yudao-ui/yudao-ui-admin-vue3/src/views/jiaohuo/OrderDelivery.vue
  99. 131 91
      yudao-ui/yudao-ui-admin-vue3/src/views/jiaohuo/components/ShippingPlanForm.vue
  100. 54 25
      yudao-ui/yudao-ui-admin-vue3/src/views/jiaohuo/components/ValueStreamForm.vue

BIN
yudao-module-bpm/target/classes/cn/iocoder/yudao/module/bpm/controller/admin/definition/BpmModelController.class


BIN
yudao-module-bpm/target/classes/cn/iocoder/yudao/module/bpm/controller/admin/definition/BpmProcessDefinitionController.class


BIN
yudao-module-bpm/target/classes/cn/iocoder/yudao/module/bpm/controller/admin/definition/BpmProcessListenerController.class


BIN
yudao-module-bpm/target/classes/cn/iocoder/yudao/module/bpm/controller/admin/definition/BpmUserGroupController.class


BIN
yudao-module-bpm/target/classes/cn/iocoder/yudao/module/bpm/controller/admin/definition/vo/category/BpmCategoryRespVO.class


BIN
yudao-module-bpm/target/classes/cn/iocoder/yudao/module/bpm/controller/admin/definition/vo/form/BpmFormFieldVO.class


BIN
yudao-module-bpm/target/classes/cn/iocoder/yudao/module/bpm/controller/admin/definition/vo/form/BpmFormPageReqVO.class


BIN
yudao-module-bpm/target/classes/cn/iocoder/yudao/module/bpm/controller/admin/definition/vo/form/BpmFormSaveReqVO.class


BIN
yudao-module-bpm/target/classes/cn/iocoder/yudao/module/bpm/controller/admin/definition/vo/group/BpmUserGroupRespVO.class


BIN
yudao-module-bpm/target/classes/cn/iocoder/yudao/module/bpm/controller/admin/definition/vo/model/BpmModeUpdateBpmnReqVO.class


BIN
yudao-module-bpm/target/classes/cn/iocoder/yudao/module/bpm/controller/admin/definition/vo/model/BpmModelSaveReqVO.class


BIN
yudao-module-bpm/target/classes/cn/iocoder/yudao/module/bpm/controller/admin/definition/vo/model/BpmModelUpdateStateReqVO.class


BIN
yudao-module-bpm/target/classes/cn/iocoder/yudao/module/bpm/controller/admin/definition/vo/model/simple/BpmSimpleModelNodeVO$Condition.class


BIN
yudao-module-bpm/target/classes/cn/iocoder/yudao/module/bpm/controller/admin/definition/vo/model/simple/BpmSimpleModelNodeVO$DelaySetting.class


BIN
yudao-module-bpm/target/classes/cn/iocoder/yudao/module/bpm/controller/admin/definition/vo/model/simple/BpmSimpleModelNodeVO$HttpRequestParam.class


BIN
yudao-module-bpm/target/classes/cn/iocoder/yudao/module/bpm/controller/admin/definition/vo/model/simple/BpmSimpleModelNodeVO$ListenerHandler.class


BIN
yudao-module-bpm/target/classes/cn/iocoder/yudao/module/bpm/controller/admin/definition/vo/model/simple/BpmSimpleModelNodeVO$OperationButtonSetting.class


BIN
yudao-module-bpm/target/classes/cn/iocoder/yudao/module/bpm/controller/admin/definition/vo/process/BpmProcessDefinitionRespVO$UserTask.class


BIN
yudao-module-bpm/target/classes/cn/iocoder/yudao/module/bpm/controller/admin/definition/vo/process/BpmProcessDefinitionRespVO.class


BIN
yudao-module-bpm/target/classes/cn/iocoder/yudao/module/bpm/controller/admin/oa/vo/BpmOALeavePageReqVO.class


BIN
yudao-module-bpm/target/classes/cn/iocoder/yudao/module/bpm/controller/admin/task/vo/instance/BpmApprovalDetailRespVO$ActivityNodeTask.class


BIN
yudao-module-bpm/target/classes/cn/iocoder/yudao/module/bpm/controller/admin/task/vo/instance/BpmApprovalDetailRespVO.class


BIN
yudao-module-bpm/target/classes/cn/iocoder/yudao/module/bpm/controller/admin/task/vo/instance/BpmProcessInstancePageReqVO.class


BIN
yudao-module-bpm/target/classes/cn/iocoder/yudao/module/bpm/controller/admin/task/vo/instance/BpmProcessPrintDataRespVO.class


BIN
yudao-module-bpm/target/classes/cn/iocoder/yudao/module/bpm/controller/admin/task/vo/task/BpmTaskPageReqVO.class


BIN
yudao-module-bpm/target/classes/cn/iocoder/yudao/module/bpm/controller/admin/task/vo/task/BpmTaskReturnReqVO.class


BIN
yudao-module-bpm/target/classes/cn/iocoder/yudao/module/bpm/convert/definition/BpmModelConvert.class


BIN
yudao-module-bpm/target/classes/cn/iocoder/yudao/module/bpm/convert/task/BpmProcessInstanceConvert.class


BIN
yudao-module-bpm/target/classes/cn/iocoder/yudao/module/bpm/convert/task/BpmTaskConvert.class


BIN
yudao-module-bpm/target/classes/cn/iocoder/yudao/module/bpm/dal/dataobject/definition/BpmProcessDefinitionInfoDO$BpmProcessDefinitionInfoDOBuilder.class


BIN
yudao-module-bpm/target/classes/cn/iocoder/yudao/module/bpm/dal/dataobject/definition/BpmUserGroupDO$BpmUserGroupDOBuilder.class


BIN
yudao-module-bpm/target/classes/cn/iocoder/yudao/module/bpm/dal/dataobject/oa/BpmOALeaveDO$BpmOALeaveDOBuilder.class


BIN
yudao-module-bpm/target/classes/cn/iocoder/yudao/module/bpm/dal/dataobject/oa/BpmOALeaveDO.class


BIN
yudao-module-bpm/target/classes/cn/iocoder/yudao/module/bpm/enums/definition/BpmAutoApproveTypeEnum.class


BIN
yudao-module-bpm/target/classes/cn/iocoder/yudao/module/bpm/enums/definition/BpmSimpleModeConditionTypeEnum.class


BIN
yudao-module-bpm/target/classes/cn/iocoder/yudao/module/bpm/enums/definition/BpmUserTaskRejectHandlerTypeEnum.class


BIN
yudao-module-bpm/target/classes/cn/iocoder/yudao/module/bpm/enums/message/BpmMessageEnum.class


BIN
yudao-module-bpm/target/classes/cn/iocoder/yudao/module/bpm/enums/task/BpmProcessInstanceStatusEnum.class


BIN
yudao-module-bpm/target/classes/cn/iocoder/yudao/module/bpm/enums/task/BpmTaskSignTypeEnum.class


BIN
yudao-module-bpm/target/classes/cn/iocoder/yudao/module/bpm/enums/task/BpmTaskStatusEnum.class


BIN
yudao-module-bpm/target/classes/cn/iocoder/yudao/module/bpm/framework/flowable/config/BpmFlowableConfiguration.class


BIN
yudao-module-bpm/target/classes/cn/iocoder/yudao/module/bpm/framework/flowable/core/behavior/BpmParallelMultiInstanceBehavior.class


BIN
yudao-module-bpm/target/classes/cn/iocoder/yudao/module/bpm/framework/flowable/core/behavior/BpmSequentialMultiInstanceBehavior.class


BIN
yudao-module-bpm/target/classes/cn/iocoder/yudao/module/bpm/framework/flowable/core/candidate/strategy/dept/BpmTaskCandidateStartUserSelectStrategy.class


BIN
yudao-module-bpm/target/classes/cn/iocoder/yudao/module/bpm/framework/flowable/core/candidate/strategy/form/BpmTaskCandidateFormUserStrategy.class


BIN
yudao-module-bpm/target/classes/cn/iocoder/yudao/module/bpm/framework/flowable/core/candidate/strategy/other/BpmTaskCandidateExpressionStrategy.class


BIN
yudao-module-bpm/target/classes/cn/iocoder/yudao/module/bpm/framework/flowable/core/event/BpmProcessInstanceEventPublisher.class


BIN
yudao-module-bpm/target/classes/cn/iocoder/yudao/module/bpm/framework/flowable/core/listener/demo/exection/DemoDelegateClassExecutionListener.class


BIN
yudao-module-bpm/target/classes/cn/iocoder/yudao/module/bpm/framework/flowable/core/listener/demo/exection/DemoDelegateExpressionExecutionListener.class


BIN
yudao-module-bpm/target/classes/cn/iocoder/yudao/module/bpm/framework/flowable/core/listener/demo/task/DemoSpringExpressionTaskListener.class


BIN
yudao-module-bpm/target/classes/cn/iocoder/yudao/module/bpm/framework/flowable/core/util/BpmnModelUtils.class


BIN
yudao-module-bpm/target/classes/cn/iocoder/yudao/module/bpm/framework/flowable/core/util/SimpleModelUtils$ChildProcessConvert.class


BIN
yudao-module-bpm/target/classes/cn/iocoder/yudao/module/bpm/framework/flowable/core/util/SimpleModelUtils$EndNodeConvert.class


BIN
yudao-module-bpm/target/classes/cn/iocoder/yudao/module/bpm/framework/flowable/core/util/SimpleModelUtils$ParallelBranchNodeConvert.class


BIN
yudao-module-bpm/target/classes/cn/iocoder/yudao/module/bpm/framework/flowable/core/util/SimpleModelUtils$StartNodeConvert.class


BIN
yudao-module-bpm/target/classes/cn/iocoder/yudao/module/bpm/framework/flowable/core/util/SimpleModelUtils$StartUserNodeConvert.class


BIN
yudao-module-bpm/target/classes/cn/iocoder/yudao/module/bpm/framework/flowable/core/util/SimpleModelUtils$TriggerNodeConvert.class


BIN
yudao-module-bpm/target/classes/cn/iocoder/yudao/module/bpm/service/definition/BpmFormService.class


BIN
yudao-module-bpm/target/classes/cn/iocoder/yudao/module/bpm/service/definition/BpmProcessDefinitionServiceImpl.class


BIN
yudao-module-bpm/target/classes/cn/iocoder/yudao/module/bpm/service/definition/BpmProcessExpressionServiceImpl.class


BIN
yudao-module-bpm/target/classes/cn/iocoder/yudao/module/bpm/service/definition/dto/BpmFormFieldRespDTO.class


BIN
yudao-module-bpm/target/classes/cn/iocoder/yudao/module/bpm/service/task/BpmProcessInstanceServiceImpl$1.class


BIN
yudao-module-bpm/target/classes/cn/iocoder/yudao/module/bpm/service/task/BpmProcessInstanceServiceImpl$2.class


BIN
yudao-module-bpm/target/classes/cn/iocoder/yudao/module/bpm/service/task/BpmProcessInstanceServiceImpl.class


BIN
yudao-module-bpm/target/classes/cn/iocoder/yudao/module/bpm/service/task/BpmTaskServiceImpl.class


BIN
yudao-module-bpm/target/classes/cn/iocoder/yudao/module/bpm/service/task/listener/BpmCallActivityListener.class


BIN
yudao-module-bpm/target/classes/cn/iocoder/yudao/module/bpm/service/task/trigger/form/BpmFormDeleteTrigger.class


+ 1 - 1
yudao-module-bpm/target/generated-sources/annotations/cn/iocoder/yudao/module/bpm/convert/task/BpmProcessInstanceConvertImpl.java

@@ -8,7 +8,7 @@ import javax.annotation.processing.Generated;
 
 @Generated(
     value = "org.mapstruct.ap.MappingProcessor",
-    date = "2025-12-23T13:15:13+0800",
+    date = "2025-12-25T10:46:30+0800",
     comments = "version: 1.6.3, compiler: javac, environment: Java 17.0.17 (Oracle Corporation)"
 )
 public class BpmProcessInstanceConvertImpl implements BpmProcessInstanceConvert {

BIN
yudao-module-bpm/target/test-classes/cn/iocoder/yudao/module/bpm/framework/flowable/core/candidate/BpmTaskCandidateInvokerTest.class


BIN
yudao-module-bpm/target/test-classes/cn/iocoder/yudao/module/bpm/framework/flowable/core/candidate/strategy/dept/BpmTaskCandidateDeptLeaderMultiStrategyTest.class


BIN
yudao-module-bpm/target/test-classes/cn/iocoder/yudao/module/bpm/framework/flowable/core/candidate/strategy/dept/BpmTaskCandidateDeptLeaderStrategyTest.class


BIN
yudao-module-bpm/target/test-classes/cn/iocoder/yudao/module/bpm/framework/flowable/core/candidate/strategy/dept/BpmTaskCandidateStartUserDeptLeaderMultiStrategyTest.class


BIN
yudao-module-bpm/target/test-classes/cn/iocoder/yudao/module/bpm/framework/flowable/core/candidate/strategy/dept/BpmTaskCandidateStartUserDeptLeaderStrategyTest.class


BIN
yudao-module-bpm/target/test-classes/cn/iocoder/yudao/module/bpm/framework/flowable/core/candidate/strategy/dept/BpmTaskCandidateStartUserSelectStrategyTest.class


BIN
yudao-module-bpm/target/test-classes/cn/iocoder/yudao/module/bpm/framework/flowable/core/candidate/strategy/other/BpmTaskCandidateAssignEmptyStrategyTest.class


BIN
yudao-module-bpm/target/test-classes/cn/iocoder/yudao/module/bpm/framework/flowable/core/candidate/strategy/user/BpmTaskCandidateStartUserStrategyTest.class


BIN
yudao-module-bpm/target/test-classes/cn/iocoder/yudao/module/bpm/service/definition/BpmUserGroupServiceTest.class


BIN
yudao-module-report/target/classes/cn/iocoder/yudao/module/report/controller/admin/goview/GoViewDataController.class


BIN
yudao-module-report/target/classes/cn/iocoder/yudao/module/report/controller/admin/goview/vo/data/GoViewDataGetBySqlReqVO.class


BIN
yudao-module-report/target/classes/cn/iocoder/yudao/module/report/controller/admin/goview/vo/data/GoViewDataRespVO.class


BIN
yudao-module-report/target/classes/cn/iocoder/yudao/module/report/controller/admin/goview/vo/project/GoViewProjectRespVO.class


BIN
yudao-module-report/target/classes/cn/iocoder/yudao/module/report/dal/mysql/goview/GoViewProjectMapper.class


BIN
yudao-module-report/target/classes/cn/iocoder/yudao/module/report/framework/jmreport/core/service/JmOnlDragExternalServiceImpl.class


BIN
yudao-module-report/target/classes/cn/iocoder/yudao/module/report/framework/jmreport/core/service/JmReportTokenServiceImpl.class


+ 1 - 1
yudao-module-system/target/generated-sources/annotations/cn/iocoder/yudao/module/system/convert/oauth2/OAuth2OpenConvertImpl.java

@@ -4,7 +4,7 @@ import javax.annotation.processing.Generated;
 
 @Generated(
     value = "org.mapstruct.ap.MappingProcessor",
-    date = "2025-12-23T13:14:49+0800",
+    date = "2025-12-25T10:46:23+0800",
     comments = "version: 1.6.3, compiler: javac, environment: Java 17.0.17 (Oracle Corporation)"
 )
 public class OAuth2OpenConvertImpl implements OAuth2OpenConvert {

+ 0 - 92
yudao-server/.flattened-pom.xml

@@ -1,92 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<project xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd" xmlns="http://maven.apache.org/POM/4.0.0"
-    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
-  <modelVersion>4.0.0</modelVersion>
-  <groupId>cn.iocoder.boot</groupId>
-  <artifactId>yudao-server</artifactId>
-  <version>2025.11-SNAPSHOT</version>
-  <name>yudao-server</name>
-  <description>后端 Server 的主项目,通过引入需要 yudao-module-xxx 的依赖,
-        从而实现提供 RESTful API 给 yudao-ui-admin、yudao-ui-user 等前端项目。
-        本质上来说,它就是个空壳(容器)!</description>
-  <url>https://github.com/YunaiV/ruoyi-vue-pro</url>
-  <dependencies>
-    <dependency>
-      <groupId>cn.iocoder.boot</groupId>
-      <artifactId>yudao-module-system</artifactId>
-      <version>2025.11-SNAPSHOT</version>
-      <scope>compile</scope>
-    </dependency>
-    <dependency>
-      <groupId>cn.iocoder.boot</groupId>
-      <artifactId>yudao-module-infra</artifactId>
-      <version>2025.11-SNAPSHOT</version>
-      <scope>compile</scope>
-    </dependency>
-    <dependency>
-      <groupId>cn.iocoder.boot</groupId>
-      <artifactId>yudao-order-server</artifactId>
-      <version>2025.11-SNAPSHOT</version>
-      <scope>compile</scope>
-    </dependency>
-    <dependency>
-      <groupId>cn.iocoder.boot</groupId>
-      <artifactId>yudao-all-server</artifactId>
-      <version>2025.11-SNAPSHOT</version>
-      <scope>compile</scope>
-    </dependency>
-    <dependency>
-      <groupId>cn.iocoder.boot</groupId>
-      <artifactId>yudao-module-report</artifactId>
-      <version>2025.11-SNAPSHOT</version>
-      <scope>compile</scope>
-    </dependency>
-    <dependency>
-      <groupId>cn.iocoder.boot</groupId>
-      <artifactId>yudao-module-bpm</artifactId>
-      <version>2025.11-SNAPSHOT</version>
-      <scope>compile</scope>
-    </dependency>
-    <dependency>
-      <groupId>org.springframework.boot</groupId>
-      <artifactId>spring-boot-configuration-processor</artifactId>
-      <version>3.5.8</version>
-      <scope>compile</scope>
-      <optional>true</optional>
-    </dependency>
-    <dependency>
-      <groupId>cn.iocoder.boot</groupId>
-      <artifactId>yudao-spring-boot-starter-protection</artifactId>
-      <version>2025.11-SNAPSHOT</version>
-      <scope>compile</scope>
-    </dependency>
-  </dependencies>
-  <repositories>
-    <repository>
-      <id>huaweicloud</id>
-      <name>huawei</name>
-      <url>https://mirrors.huaweicloud.com/repository/maven/</url>
-    </repository>
-    <repository>
-      <id>aliyunmaven</id>
-      <name>aliyun</name>
-      <url>https://maven.aliyun.com/repository/public</url>
-    </repository>
-    <repository>
-      <snapshots>
-        <enabled>false</enabled>
-      </snapshots>
-      <id>spring-milestones</id>
-      <name>Spring Milestones</name>
-      <url>https://repo.spring.io/milestone</url>
-    </repository>
-    <repository>
-      <releases>
-        <enabled>false</enabled>
-      </releases>
-      <id>spring-snapshots</id>
-      <name>Spring Snapshots</name>
-      <url>https://repo.spring.io/snapshot</url>
-    </repository>
-  </repositories>
-</project>

+ 9 - 9
yudao-server/src/main/resources/application-dev.yaml

@@ -47,14 +47,14 @@ spring:
       primary: master
       datasource:
         master:
-          url: jdbc:mysql://127.0.0.1:3306/ruoyi-vue-pro?useSSL=false&serverTimezone=Asia/Shanghai&allowPublicKeyRetrieval=true&nullCatalogMeansCurrent=true&rewriteBatchedStatements=true # MySQL Connector/J 8.X 连接的示例
+          url: jdbc:mysql://123.60.180.165:3306/dopdemo?useSSL=false&serverTimezone=Asia/Shanghai&allowPublicKeyRetrieval=true&nullCatalogMeansCurrent=true&rewriteBatchedStatements=true # MySQL Connector/J 8.X 连接的示例
           username: root
-          password: yzzsohu123
-        slave: # 模拟从库,可根据自己需要修改 # 模拟从库,可根据自己需要修改
-          lazy: true # 开启懒加载,保证启动速度
-          url: jdbc:mysql://127.0.0.1:3306/ruoyi-vue-pro?useSSL=false&serverTimezone=Asia/Shanghai&allowPublicKeyRetrieval=true&nullCatalogMeansCurrent=true&rewriteBatchedStatements=true # MySQL Connector/J 8.X 连接的示例
-          username: root
-          password: yzzsohu123
+          password: 5heng=uN
+          # slave: # 模拟从库,可根据自己需要修改 # 模拟从库,可根据自己需要修改
+          # lazy: true # 开启懒加载,保证启动速度
+          #url: jdbc:mysql://127.0.0.1:3306/ruoyi-vue-pro?useSSL=false&serverTimezone=Asia/Shanghai&allowPublicKeyRetrieval=true&nullCatalogMeansCurrent=true&rewriteBatchedStatements=true # MySQL Connector/J 8.X 连接的示例
+          # username: root
+          #password: yzzsohu123
 
   # Redis 配置。Redisson 默认的配置足够使用,一般不需要进行调优
   data:
@@ -62,7 +62,7 @@ spring:
       host: 127.0.0.1 # 地址
       port: 6379 # 端口
       database: 1 # 数据库索引
-#    password: 123456 # 密码,建议生产环境开启
+      password: h1Q$us3r # 密码,建议生产环境开启
 
 --- #################### 定时任务相关配置 ####################
 
@@ -140,7 +140,7 @@ spring:
     admin:
       # Spring Boot Admin Client 客户端的相关配置
       client:
-        url: http://127.0.0.1:${server.port}/${spring.boot.admin.context-path} # 设置 Spring Boot Admin Server 地址
+        url: http://123.60.180.165:${server.port}/${spring.boot.admin.context-path} # 设置 Spring Boot Admin Server 地址
         instance:
           service-host-type: IP # 注册实例时,优先使用 IP [IP, HOST_NAME, CANONICAL_HOST_NAME]
       # Spring Boot Admin Server 服务端的相关配置

+ 1 - 1
yudao-server/src/main/resources/application-local.yaml

@@ -82,7 +82,7 @@ spring:
       host: 127.0.0.1 # 地址
       port: 6379 # 端口
       database: 0 # 数据库索引
-#      password: dev # 密码,建议生产环境开启
+      #password: h1Q$us3r # 密码,建议生产环境开启
 
 --- #################### 定时任务相关配置 ####################
 

+ 0 - 2
yudao-server/target/maven-status/maven-compiler-plugin/compile/default-compile/createdFiles.lst

@@ -1,2 +0,0 @@
-cn\iocoder\yudao\server\YudaoServerApplication.class
-cn\iocoder\yudao\server\controller\DefaultController.class

+ 0 - 1
yudao-server/target/maven-status/maven-compiler-plugin/testCompile/default-testCompile/inputFiles.lst

@@ -1 +0,0 @@
-D:\DemoJAVA\yudao-server\src\test\java\cn\iocoder\yudao\ProjectReactor.java

BIN
yudao-server/target/yudao-server.jar


BIN
yudao-server/target/yudao-server.jar.original


+ 2 - 2
yudao-ui/yudao-ui-admin-vue3/.env.dev

@@ -4,7 +4,7 @@ NODE_ENV=production
 VITE_DEV=true
 
 # 请求路径
-VITE_BASE_URL='http://api-dashboard.yudao.iocoder.cn'
+VITE_BASE_URL='http://123.60.180.165:8080'
 
 # 文件上传类型:server - 后端上传, client - 前端直连上传,仅支持S3服务
 VITE_UPLOAD_TYPE=server
@@ -28,7 +28,7 @@ VITE_BASE_PATH=/
 VITE_OUT_DIR=dist
 
 # 商城H5会员端域名
-VITE_MALL_H5_DOMAIN='http://mall.yudao.iocoder.cn'
+VITE_MALL_H5_DOMAIN='http://123.60.180.165:3000'
 
 # 验证码的开关
 VITE_APP_CAPTCHA_ENABLE=true

+ 5 - 5
yudao-ui/yudao-ui-admin-vue3/package.json

@@ -9,11 +9,11 @@
     "dev": "vite --mode env.local",
     "dev-server": "vite --mode dev",
     "ts:check": "vue-tsc --noEmit",
-    "build:local": "node --max_old_space_size=4096 ./node_modules/vite/bin/vite.js build",
-    "build:dev": "node --max_old_space_size=4096 ./node_modules/vite/bin/vite.js build --mode dev",
-    "build:test": "node --max_old_space_size=4096 ./node_modules/vite/bin/vite.js build --mode test",
-    "build:stage": "node --max_old_space_size=4096 ./node_modules/vite/bin/vite.js build --mode stage",
-    "build:prod": "node --max_old_space_size=4096 ./node_modules/vite/bin/vite.js build --mode prod",
+    "build:local": "node --max_old_space_size=8192 ./node_modules/vite/bin/vite.js build",
+    "build:dev": "node --max_old_space_size=8192 ./node_modules/vite/bin/vite.js build --mode dev",
+    "build:test": "node --max_old_space_size=8192 ./node_modules/vite/bin/vite.js build --mode test",
+    "build:stage": "node --max_old_space_size=8192 ./node_modules/vite/bin/vite.js build --mode stage",
+    "build:prod": "node --max_old_space_size=8192 ./node_modules/vite/bin/vite.js build --mode prod",
     "serve:dev": "vite preview --mode dev",
     "serve:prod": "vite preview --mode prod",
     "preview": "pnpm build:local && vite preview",

+ 5 - 0
yudao-ui/yudao-ui-admin-vue3/src/api/jiaohuo/order.ts

@@ -45,6 +45,11 @@ export const getOrderDeliveryList = (params: any) => {
   return request.get({ url: '/order/delivery/list', params })
 }
 
+// 获取价值流详情
+export const getValueStream = (id: number, factoryNum?: string) => {
+  return request.get({ url: '/order/delivery/value-stream', params: { id, factoryNum } })
+}
+
 // 获取发货单列表
 export const getShipmentList = (params: any) => {
   return request.get({ url: '/order/shipment/list', params })

+ 44 - 0
yudao-ui/yudao-ui-admin-vue3/src/router/modules/remaining.ts

@@ -1038,6 +1038,50 @@ const remainingRouter: AppRouteRecordRaw[] = [
         component: () => import('@/views/iot/ota/firmware/detail/index.vue')
       }
     ]
+  },
+  {
+    path: '/jiaohuo',
+    component: Layout,
+    name: 'JiaohuoCenter',
+    meta: { hidden: true },
+    children: [
+      {
+        path: '/shipping-plan/add',
+        name: 'ShippingPlanAdd',
+        meta: {
+          title: '创建出货计划',
+          noCache: true,
+          hidden: true,
+          canTo: true,
+          activeMenu: '/jiaohuo'
+        },
+        component: () => import('@/views/jiaohuo/ShippingPlan.vue')
+      },
+      {
+        path: '/shipping-plan/edit/:id',
+        name: 'ShippingPlanEdit',
+        meta: {
+          title: '编辑出货计划',
+          noCache: true,
+          hidden: true,
+          canTo: true,
+          activeMenu: '/jiaohuo'
+        },
+        component: () => import('@/views/jiaohuo/ShippingPlan.vue')
+      },
+      {
+        path: '/shipping-plan/view/:id',
+        name: 'ShippingPlanView',
+        meta: {
+          title: '查看出货计划',
+          noCache: true,
+          hidden: true,
+          canTo: true,
+          activeMenu: '/jiaohuo'
+        },
+        component: () => import('@/views/jiaohuo/ShippingPlan.vue')
+      }
+    ]
   }
 ]
 

+ 5 - 1
yudao-ui/yudao-ui-admin-vue3/src/views/dingdan/purchase-order/MaterialPurchaseOrder.vue

@@ -270,7 +270,11 @@ import { Download } from '@element-plus/icons-vue'
 
 export default {
   name: 'MaterialPurchaseOrder',
-  components: { Download },
+  setup() {
+    return {
+      Download
+    }
+  },
   data() {
     return {
       // 搜索表单

+ 68 - 34
yudao-ui/yudao-ui-admin-vue3/src/views/jiaohuo/OrderDelivery.vue

@@ -5,7 +5,7 @@
       <el-form :inline="true" :model="searchForm" class="search-form">
         <el-form-item label="订单号">
           <el-input
-            v-model="searchForm.bill_no"
+            v-model="searchForm.billNo"
             placeholder="请输入订单号"
             clearable
             @keyup.enter="handleSearch"
@@ -13,7 +13,7 @@
         </el-form-item>
         <el-form-item label="客户编码">
           <el-input
-            v-model="searchForm.custom_no"
+            v-model="searchForm.customNo"
             placeholder="请输入客户编码"
             clearable
             @keyup.enter="handleSearch"
@@ -21,7 +21,7 @@
         </el-form-item>
         <el-form-item label="物料编码">
           <el-input
-            v-model="searchForm.item_number"
+            v-model="searchForm.itemNumber"
             placeholder="请输入物料编码"
             clearable
             @keyup.enter="handleSearch"
@@ -29,7 +29,7 @@
         </el-form-item>
         <el-form-item label="客户交期">
           <el-date-picker
-            v-model="searchForm.plan_date"
+            v-model="searchForm.planDate"
             type="date"
             placeholder="请选择日期"
             value-format="YYYY-MM-DD"
@@ -62,7 +62,7 @@
           type="primary" 
           :icon="Van" 
           @click="handleCreateShippingPlan" 
-          :disabled="!hasValidSelection"
+          :disabled="!hasSelection"
         >
           出货计划
         </el-button>
@@ -77,28 +77,32 @@
         @selection-change="handleSelectionChange"
       >
         <el-table-column type="selection" width="55" fixed="left" />
-        <el-table-column prop="custom_no" label="客户编码" width="120" fixed="left" />
-        <el-table-column prop="bill_no" label="订单号" width="180" />
-        <el-table-column prop="moentry_mono" label="工单编号" width="150" />
-        <el-table-column prop="item_number" label="物料编码" width="150" />
-        <el-table-column prop="item_name" label="物料名称" width="200" show-overflow-tooltip />
+        <el-table-column prop="customNo" label="客户编码" width="120" fixed="left" />
+        <el-table-column prop="billNo" label="订单号" width="180" />
+        <el-table-column prop="moentryMono" label="工单编号" width="150" />
+        <el-table-column prop="itemNumber" label="物料编码" width="150" />
+        <el-table-column prop="itemName" label="物料名称" width="200" show-overflow-tooltip />
         <el-table-column prop="qty" label="订单数量" width="120" align="right" />
-        <el-table-column prop="plan_date" label="客户交期" width="120">
+        <el-table-column prop="planDate" label="客户交期" width="120">
           <template #default="{ row }">
-            {{ row.plan_date ? row.plan_date.substring(0, 10) : '' }}
+            {{ formatDate(row.planDate) }}
           </template>
         </el-table-column>
-        <el-table-column prop="sys_capacity_date" label="建议交期" width="120">
+        <el-table-column prop="sysCapacityDate" label="建议交期" width="120">
           <template #default="{ row }">
-            {{ row.sys_capacity_date ? row.sys_capacity_date.substring(0, 10) : '' }}
+            {{ formatDate(row.sysCapacityDate) }}
           </template>
         </el-table-column>
-        <el-table-column prop="ShipDate" label="最终交期" width="120">
+        <el-table-column prop="shipDate" label="最终交期" width="120">
           <template #default="{ row }">
-            {{ row.ShipDate ? row.ShipDate.substring(0, 10) : '' }}
+            {{ formatDate(row.shipDate) }}
+          </template>
+        </el-table-column>
+        <el-table-column prop="progress" label="交付进度" width="120">
+          <template #default="{ row }">
+            {{ getProgressText(row.progress) }}
           </template>
         </el-table-column>
-        <el-table-column prop="progress" label="交付进度" width="120" />
         <el-table-column label="操作" width="180" fixed="right">
           <template #default="{ row }">
             <el-button type="primary" link :icon="Document" @click="handleViewOrder(row)">
@@ -129,6 +133,9 @@
 
     <!-- 价值流表单 -->
     <ValueStreamForm ref="valueStreamFormRef" />
+
+    <!-- 出货计划表单 -->
+    <ShippingPlanForm ref="shippingPlanFormRef" @success="handleSearch" />
   </div>
 </template>
 
@@ -138,8 +145,10 @@ import { Search, Refresh, Document, TrendCharts, Van } from '@element-plus/icons
 import { getOrderDeliveryList } from '@/api/jiaohuo/order'
 import { ElMessage } from 'element-plus'
 import { useRouter } from 'vue-router'
+import { formatDate } from '@/utils/format'
 import SalesOrderForm from './components/SalesOrderForm.vue'
 import ValueStreamForm from './components/ValueStreamForm.vue'
+import ShippingPlanForm from './components/ShippingPlanForm.vue'
 
 const router = useRouter()
 const loading = ref(false)
@@ -147,10 +156,10 @@ const tableData = ref([])
 const selectedRows = ref([])
 
 const searchForm = reactive({
-  bill_no: '',
-  custom_no: '',
-  item_number: '',
-  plan_date: '',
+  billNo: '',
+  customNo: '',
+  itemNumber: '',
+  planDate: '',
   progress: ''
 })
 
@@ -160,12 +169,29 @@ const pagination = reactive({
   total: 0
 })
 
-const hasValidSelection = computed(() => {
-  return selectedRows.value.length > 0 && selectedRows.value.every(row => !row.recid)
+const hasSelection = computed(() => {
+  return selectedRows.value.length > 0
 })
 
 const orderFormRef = ref(null)
 const valueStreamFormRef = ref(null)
+const shippingPlanFormRef = ref(null)
+
+// 交付进度映射
+const progressMap = {
+  '1': '评审',
+  '2': '排产',
+  '3': '齐套',
+  '4': '采购',
+  '5': '备料',
+  '6': '生产',
+  '7': '发运'
+}
+
+// 获取进度文本
+const getProgressText = (progress) => {
+  return progressMap[String(progress)] || progress || '-'
+}
 
 // 查询
 const handleSearch = async () => {
@@ -176,9 +202,18 @@ const handleSearch = async () => {
       page: pagination.page,
       pageSize: pagination.pageSize
     }
-    const { data } = await getOrderDeliveryList(params)
-    tableData.value = data.list || []
-    pagination.total = data.total || 0
+    const data = await getOrderDeliveryList(params)
+    // 后端返回的是 CommonResult<PageResult>,axios拦截器已经提取了data
+    // 所以这里的data就是PageResult对象 {list: [], total: 0}
+    if (data && typeof data === 'object') {
+      tableData.value = data.list || []
+      pagination.total = data.total || 0
+    } else {
+      console.error('返回数据格式错误:', data)
+      tableData.value = []
+      pagination.total = 0
+      ElMessage.error('返回数据格式错误')
+    }
   } catch (error) {
     console.error('查询失败:', error)
     if (error.code === 'ERR_NETWORK' || error.response?.status === 404) {
@@ -214,17 +249,16 @@ const handleCreateShippingPlan = () => {
     return
   }
 
+  // 检查是否有已生成出货计划的记录
   const invalidRows = selectedRows.value.filter(row => row.recid)
   if (invalidRows.length > 0) {
-    ElMessage.warning('选中的订单中包含已生成出货计划的记录')
+    const invalidBillNos = invalidRows.map(row => row.billNo).join('、')
+    ElMessage.warning(`以下订单已有出货计划,无法重复创建:${invalidBillNos}`)
     return
   }
 
-  const ids = selectedRows.value.map(row => row.id).join(',')
-  router.push({
-    path: '/shipping-plan/add',
-    query: { ids }
-  })
+  // 打开出货计划表单,传入选中的订单数据
+  shippingPlanFormRef.value.open('create', selectedRows.value)
 }
 
 // 查看销售订单
@@ -237,8 +271,8 @@ const handleViewValueStream = (row) => {
   valueStreamFormRef.value.open(row.id)
 }
 
-// 初始化 - 注释掉自动查询,等后端API准备好后再启用
-// handleSearch()
+// 初始化查询
+handleSearch()
 </script>
 
 <style scoped lang="scss">

+ 131 - 91
yudao-ui/yudao-ui-admin-vue3/src/views/jiaohuo/components/ShippingPlanForm.vue

@@ -15,14 +15,14 @@
     >
       <el-row :gutter="20">
         <el-col :span="8">
-          <el-form-item label="出货编号" prop="lotserial">
-            <el-input v-model="formData.lotserial" placeholder="请输入出货编号" />
+          <el-form-item label="出货编号" prop="lotSerial">
+            <el-input v-model="formData.lotSerial" placeholder="请输入出货编号" />
           </el-form-item>
         </el-col>
         <el-col :span="8">
-          <el-form-item label="出货日期" prop="shippingdate">
+          <el-form-item label="出货日期" prop="shippingDate">
             <el-date-picker
-              v-model="formData.shippingdate"
+              v-model="formData.shippingDate"
               type="date"
               placeholder="请选择出货日期"
               value-format="YYYY-MM-DD"
@@ -31,8 +31,8 @@
           </el-form-item>
         </el-col>
         <el-col :span="8">
-          <el-form-item label="出货地点" prop="shippingsite">
-            <el-input v-model="formData.shippingsite" placeholder="请输入出货地点" />
+          <el-form-item label="出货地点" prop="shippingSite">
+            <el-input v-model="formData.shippingSite" placeholder="请输入出货地点" />
           </el-form-item>
         </el-col>
       </el-row>
@@ -49,8 +49,8 @@
           </el-form-item>
         </el-col>
         <el-col :span="8">
-          <el-form-item label="收货地址" prop="shippingaddress">
-            <el-input v-model="formData.shippingaddress" placeholder="请输入收货地址" />
+          <el-form-item label="收货地址" prop="shippingAddress">
+            <el-input v-model="formData.shippingAddress" placeholder="请输入收货地址" />
           </el-form-item>
         </el-col>
       </el-row>
@@ -83,56 +83,56 @@
       </div>
 
       <el-table :data="formData.items" border stripe max-height="400">
-        <el-table-column prop="OrdNbr" label="客户订单号" width="150">
+        <el-table-column prop="ordNbr" label="客户订单号" width="150">
           <template #default="{ row }">
-            <el-input v-if="mode !== 'view'" v-model="row.OrdNbr" />
-            <span v-else>{{ row.OrdNbr }}</span>
+            <el-input v-if="mode !== 'view'" v-model="row.ordNbr" />
+            <span v-else>{{ row.ordNbr }}</span>
           </template>
         </el-table-column>
-        <el-table-column prop="bill_no" label="订单号" width="150">
+        <el-table-column prop="billNo" label="订单号" width="150">
           <template #default="{ row }">
-            <el-input v-if="mode !== 'view'" v-model="row.bill_no" />
-            <span v-else>{{ row.bill_no }}</span>
+            <el-input v-if="mode !== 'view'" v-model="row.billNo" />
+            <span v-else>{{ row.billNo }}</span>
           </template>
         </el-table-column>
-        <el-table-column prop="CustomNo" label="客户编码" width="120">
+        <el-table-column prop="customNo" label="客户编码" width="120">
           <template #default="{ row }">
-            <el-input v-if="mode !== 'view'" v-model="row.CustomNo" />
-            <span v-else>{{ row.CustomNo }}</span>
+            <el-input v-if="mode !== 'view'" v-model="row.customNo" />
+            <span v-else>{{ row.customNo }}</span>
           </template>
         </el-table-column>
-        <el-table-column prop="CustomName" label="客户名称" width="180">
+        <el-table-column prop="customName" label="客户名称" width="180">
           <template #default="{ row }">
-            <el-input v-if="mode !== 'view'" v-model="row.CustomName" />
-            <span v-else>{{ row.CustomName }}</span>
+            <el-input v-if="mode !== 'view'" v-model="row.customName" />
+            <span v-else>{{ row.customName }}</span>
           </template>
         </el-table-column>
-        <el-table-column prop="OrdDate" label="下单日期" width="150">
+        <el-table-column prop="ordDate" label="下单日期" width="150">
           <template #default="{ row }">
             <el-date-picker
               v-if="mode !== 'view'"
-              v-model="row.OrdDate"
+              v-model="row.ordDate"
               type="date"
               value-format="YYYY-MM-DD"
               style="width: 100%"
             />
-            <span v-else>{{ row.OrdDate }}</span>
+            <span v-else>{{ row.ordDate }}</span>
           </template>
         </el-table-column>
-        <el-table-column prop="Country" label="国家" width="120">
+        <el-table-column prop="country" label="国家" width="120">
           <template #default="{ row }">
-            <el-select v-if="mode !== 'view'" v-model="row.Country" style="width: 100%">
+            <el-select v-if="mode !== 'view'" v-model="row.country" style="width: 100%">
               <el-option label="中国" value="中国" />
               <el-option label="英国" value="英国" />
             </el-select>
-            <span v-else>{{ row.Country }}</span>
+            <span v-else>{{ row.country }}</span>
           </template>
         </el-table-column>
-        <el-table-column prop="ItemNum" label="物料编号" width="150">
+        <el-table-column prop="itemNum" label="物料编号" width="150">
           <template #default="{ row, $index }">
             <el-input
               v-if="mode !== 'view'"
-              v-model="row.ItemNum"
+              v-model="row.itemNum"
               placeholder="请选择"
               readonly
               @click="handleSelectMaterial($index)"
@@ -141,68 +141,68 @@
                 <el-button :icon="Search" @click="handleSelectMaterial($index)" />
               </template>
             </el-input>
-            <span v-else>{{ row.ItemNum }}</span>
+            <span v-else>{{ row.itemNum }}</span>
           </template>
         </el-table-column>
-        <el-table-column prop="ItemName" label="物料名称" width="180">
+        <el-table-column prop="itemName" label="物料名称" width="180">
           <template #default="{ row }">
-            <span>{{ row.ItemName }}</span>
+            <span>{{ row.itemName }}</span>
           </template>
         </el-table-column>
-        <el-table-column prop="Specification" label="规格型号" width="150">
+        <el-table-column prop="specification" label="规格型号" width="150">
           <template #default="{ row }">
-            <el-input v-if="mode !== 'view'" v-model="row.Specification" />
-            <span v-else>{{ row.Specification }}</span>
+            <el-input v-if="mode !== 'view'" v-model="row.specification" />
+            <span v-else>{{ row.specification }}</span>
           </template>
         </el-table-column>
-        <el-table-column prop="Qty" label="订单数量" width="120">
+        <el-table-column prop="qty" label="订单数量" width="120">
           <template #default="{ row }">
             <el-input-number
               v-if="mode !== 'view'"
-              v-model="row.Qty"
+              v-model="row.qty"
               :min="0"
               :controls="false"
               style="width: 100%"
             />
-            <span v-else>{{ row.Qty }}</span>
+            <span v-else>{{ row.qty }}</span>
           </template>
         </el-table-column>
-        <el-table-column prop="Weight" label="重量(KG)" width="120">
+        <el-table-column prop="weight" label="重量(KG)" width="120">
           <template #default="{ row }">
             <el-input-number
               v-if="mode !== 'view'"
-              v-model="row.Weight"
+              v-model="row.weight"
               :min="0"
               :precision="2"
               :controls="false"
               style="width: 100%"
             />
-            <span v-else>{{ row.Weight }}</span>
+            <span v-else>{{ row.weight }}</span>
           </template>
         </el-table-column>
-        <el-table-column prop="Volume" label="体积(M3)" width="120">
+        <el-table-column prop="volume" label="体积(M3)" width="120">
           <template #default="{ row }">
             <el-input-number
               v-if="mode !== 'view'"
-              v-model="row.Volume"
+              v-model="row.volume"
               :min="0"
               :precision="3"
               :controls="false"
               style="width: 100%"
             />
-            <span v-else>{{ row.Volume }}</span>
+            <span v-else>{{ row.volume }}</span>
           </template>
         </el-table-column>
-        <el-table-column prop="Packaging" label="包装要求" width="150">
+        <el-table-column prop="packaging" label="包装要求" width="150">
           <template #default="{ row }">
-            <el-input v-if="mode !== 'view'" v-model="row.Packaging" />
-            <span v-else>{{ row.Packaging }}</span>
+            <el-input v-if="mode !== 'view'" v-model="row.packaging" />
+            <span v-else>{{ row.packaging }}</span>
           </template>
         </el-table-column>
-        <el-table-column prop="Remark" label="备注" min-width="150">
+        <el-table-column prop="remark" label="备注" min-width="150">
           <template #default="{ row }">
-            <el-input v-if="mode !== 'view'" v-model="row.Remark" type="textarea" :rows="1" />
-            <span v-else>{{ row.Remark }}</span>
+            <el-input v-if="mode !== 'view'" v-model="row.remark" type="textarea" :rows="1" />
+            <span v-else>{{ row.remark }}</span>
           </template>
         </el-table-column>
         <el-table-column v-if="mode !== 'view'" label="操作" width="100" fixed="right">
@@ -251,22 +251,25 @@ const formRef = ref(null)
 const materialSelectorRef = ref(null)
 
 const formData = reactive({
-  lotserial: '',
-  shippingdate: '',
-  shippingsite: '',
+  lotSerial: '',
+  shippingDate: '',
+  shippingSite: '',
   consignee: '',
   telephone: '',
-  shippingaddress: '',
+  shippingAddress: '',
   remark: '',
   items: []
 })
 
 const formRules = {
-  lotserial: [{ required: true, message: '请输入出货编号', trigger: 'blur' }],
-  shippingdate: [{ required: true, message: '请选择出货日期', trigger: 'change' }],
-  shippingsite: [{ required: true, message: '请输入出货地点', trigger: 'blur' }],
+  lotSerial: [{ required: true, message: '请输入出货编号', trigger: 'blur' }],
+  shippingDate: [{ required: true, message: '请选择出货日期', trigger: 'change' }],
+  shippingSite: [{ required: true, message: '请输入出货地点', trigger: 'blur' }],
   consignee: [{ required: true, message: '请输入收货人', trigger: 'blur' }],
-  telephone: [{ required: true, message: '请输入联系方式', trigger: 'blur' }]
+  telephone: [
+    { required: true, message: '请输入联系方式', trigger: 'blur' },
+    { pattern: /^1[3-9]\d{9}$/, message: '请输入正确的手机号码', trigger: 'blur' }
+  ]
 }
 
 const dialogTitle = computed(() => {
@@ -281,28 +284,63 @@ const dialogTitle = computed(() => {
 const emit = defineEmits(['success'])
 
 // 打开对话框
-const open = async (type, id) => {
+const open = async (type, dataOrId) => {
   mode.value = type
-  currentId.value = id
   dialogVisible.value = true
 
-  if (type === 'add') {
+  if (type === 'add' || type === 'create') {
     resetForm()
-    // 如果从订单交付页面传入了ids,则自动加载订单数据
-    const ids = route.query.ids
-    if (ids) {
-      // TODO: 根据ids加载订单数据到items
+    // 设置默认出货日期为当前日期
+    formData.shippingDate = new Date().toISOString().substring(0, 10)
+    // 如果传入了订单数据数组,则自动填充到items
+    if (Array.isArray(dataOrId) && dataOrId.length > 0) {
+      loadOrderData(dataOrId)
     }
-  } else if (id) {
-    await loadData(id)
+  } else if (dataOrId) {
+    currentId.value = dataOrId
+    await loadData(dataOrId)
+  }
+}
+
+// 加载订单数据
+const loadOrderData = (orders) => {
+  try {
+    // 将订单数据转换为出货明细格式
+    formData.items = orders.map(order => ({
+      orderId: order.id, // 保存订单ID用于后续提交
+      seorderId: String(order.seorderId || ''), // 销售订单ID
+      sentryId: String(order.id || ''), // 订单行ID
+      ordNbr: order.customOrderBillNo || '', // 客户订单号
+      billNo: order.billNo || '', // 订单号
+      customNo: order.customNo || '', // 客户编码
+      customName: '', // 客户名称(需要从其他地方获取)
+      ordDate: order.createTime ? (typeof order.createTime === 'string' ? order.createTime.substring(0, 10) : new Date(order.createTime).toISOString().substring(0, 10)) : '', // 下单日期
+      country: '中国', // 默认中国
+      itemNum: order.itemNumber || '', // 物料编号
+      itemName: order.itemName || '', // 物料名称
+      specification: order.specification || '', // 规格型号
+      qty: order.qty || 0, // 订单数量
+      weight: 0, // 重量(需要用户填写)
+      volume: 0, // 体积(需要用户填写)
+      packaging: '', // 包装要求
+      remark: '' // 备注
+    }))
+    
+    ElMessage.success('已加载 ' + orders.length + ' 个订单信息')
+  } catch (error) {
+    ElMessage.error('加载订单数据失败:' + (error.message || '未知错误'))
   }
 }
 
 // 加载数据
 const loadData = async (id) => {
   try {
-    const { data } = await getShippingPlanDetail(id)
-    Object.assign(formData, data)
+    const response = await getShippingPlanDetail(id)
+    if (response && response.data) {
+      Object.assign(formData, response.data)
+    } else {
+      ElMessage.error('加载数据失败:返回数据为空')
+    }
   } catch (error) {
     ElMessage.error('加载数据失败:' + (error.message || '未知错误'))
   }
@@ -312,12 +350,12 @@ const loadData = async (id) => {
 const resetForm = () => {
   formRef.value?.resetFields()
   Object.assign(formData, {
-    lotserial: '',
-    shippingdate: '',
-    shippingsite: '',
+    lotSerial: '',
+    shippingDate: '',
+    shippingSite: '',
     consignee: '',
     telephone: '',
-    shippingaddress: '',
+    shippingAddress: '',
     remark: '',
     items: []
   })
@@ -333,29 +371,29 @@ const handleSelectMaterial = (index) => {
 const handleMaterialSelected = (material) => {
   if (currentRowIndex.value !== null) {
     const row = formData.items[currentRowIndex.value]
-    row.ItemNum = material.ItemNum
-    row.ItemName = material.Descr
-    row.Specification = material.Descr1
+    row.itemNum = material.ItemNum
+    row.itemName = material.Descr
+    row.specification = material.Descr1
   }
 }
 
 // 添加行
 const handleAddRow = () => {
   formData.items.push({
-    OrdNbr: '',
-    bill_no: '',
-    CustomNo: '',
-    CustomName: '',
-    OrdDate: '',
-    Country: '中国',
-    ItemNum: '',
-    ItemName: '',
-    Specification: '',
-    Qty: 0,
-    Weight: 0,
-    Volume: 0,
-    Packaging: '',
-    Remark: ''
+    ordNbr: '',
+    billNo: '',
+    customNo: '',
+    customName: '',
+    ordDate: '',
+    country: '中国',
+    itemNum: '',
+    itemName: '',
+    specification: '',
+    qty: 0,
+    weight: 0,
+    volume: 0,
+    packaging: '',
+    remark: ''
   })
 }
 
@@ -376,11 +414,13 @@ const handleSubmit = async () => {
 
     submitLoading.value = true
 
-    if (mode.value === 'add') {
+    if (mode.value === 'add' || mode.value === 'create') {
       await createShippingPlan(formData)
       ElMessage.success('添加成功')
     } else {
-      await updateShippingPlan(currentId.value, formData)
+      // 编辑模式需要包含ID
+      const updateData = { ...formData, id: currentId.value }
+      await updateShippingPlan(updateData)
       ElMessage.success('保存成功')
     }
 

+ 54 - 25
yudao-ui/yudao-ui-admin-vue3/src/views/jiaohuo/components/ValueStreamForm.vue

@@ -16,11 +16,11 @@
           <el-descriptions-item label="规格型号">{{ formData.specification }}</el-descriptions-item>
           <el-descriptions-item label="订单数量">{{ formData.qty }}</el-descriptions-item>
           <el-descriptions-item label="客户单号">{{ formData.bill_from }}</el-descriptions-item>
-          <el-descriptions-item label="订单交期">{{ formData.plan_date }}</el-descriptions-item>
+          <el-descriptions-item label="订单交期">{{ formatDate(formData.plan_date) }}</el-descriptions-item>
           <el-descriptions-item label="订单进度">
-            <el-tag>{{ formData.progress }}</el-tag>
+            <el-tag>{{ getProgressText(formData.progress) }}</el-tag>
           </el-descriptions-item>
-          <el-descriptions-item label="检查时间">{{ formData.mrptime }}</el-descriptions-item>
+          <el-descriptions-item label="检查时间">{{ formatDate(formData.mrptime) }}</el-descriptions-item>
         </el-descriptions>
       </el-card>
 
@@ -33,12 +33,12 @@
             <el-descriptions-item label="客户名称">{{ orderInfo.custom_name }}</el-descriptions-item>
             <el-descriptions-item label="客户级别">{{ orderInfo.custom_level }}</el-descriptions-item>
             <el-descriptions-item label="状态">{{ orderInfo.state }}</el-descriptions-item>
-            <el-descriptions-item label="签订日期">{{ orderInfo.date }}</el-descriptions-item>
+            <el-descriptions-item label="签订日期">{{ formatDate(orderInfo.date) }}</el-descriptions-item>
             <el-descriptions-item label="制单人">{{ orderInfo.create_by_name }}</el-descriptions-item>
             <el-descriptions-item label="订单类别">
               {{ orderInfo.order_type === '1' ? '销售' : orderInfo.order_type === '2' ? '计划' : '' }}
             </el-descriptions-item>
-            <el-descriptions-item label="审核日期">{{ orderInfo.audit_date }}</el-descriptions-item>
+            <el-descriptions-item label="审核日期">{{ formatDate(orderInfo.audit_date) }}</el-descriptions-item>
             <el-descriptions-item label="审核人">{{ orderInfo.auditor }}</el-descriptions-item>
             <el-descriptions-item label="订单来源">{{ orderInfo.bill_from }}</el-descriptions-item>
             <el-descriptions-item label="业务员">{{ orderInfo.emp_name }}</el-descriptions-item>
@@ -50,11 +50,11 @@
         <el-tab-pane label="订单评审" name="review">
           <el-descriptions :column="2" border class="review-desc">
             <el-descriptions-item label="系统预计交货日期">
-              {{ reviewInfo.sys_capacity_date }}
+              {{ formatDate(reviewInfo.sys_capacity_date) }}
             </el-descriptions-item>
             <el-descriptions-item label="新增工单">{{ reviewInfo.morder_no }}</el-descriptions-item>
             <el-descriptions-item label="交期评审确认">
-              {{ reviewInfo.create_time }}
+              {{ formatDate(reviewInfo.create_time) }}
             </el-descriptions-item>
             <el-descriptions-item label="新增工单数量">
               {{ reviewInfo.make_qty }}
@@ -279,8 +279,9 @@
 
 <script setup>
 import { ref, reactive } from 'vue'
-import { getOrderDetail } from '@/api/jiaohuo/order'
+import { getValueStream } from '@/api/jiaohuo/order'
 import { ElMessage } from 'element-plus'
+import { formatDate } from '@/utils/format'
 
 const dialogVisible = ref(false)
 const loading = ref(false)
@@ -315,6 +316,23 @@ const fqcList = ref([])
 const inboundList = ref([])
 const outboundList = ref([])
 
+// 订单进度映射函数
+const getProgressText = (progress) => {
+  const progressValue = String(progress)
+  switch (progressValue) {
+    case '1':
+      return '新建'
+    case '2':
+      return '评审'
+    case '3':
+      return '再评审'
+    case '4':
+      return '确认'
+    default:
+      return '确认'
+  }
+}
+
 // 打开对话框
 const open = async (id) => {
   dialogVisible.value = true
@@ -325,27 +343,38 @@ const open = async (id) => {
 const loadData = async (id) => {
   loading.value = true
   try {
-    const { data } = await getOrderDetail(id)
+    const response = await getValueStream(id)
+    const data = response || {}
     
     // 基本信息
-    Object.assign(formData, data || {})
+    if (data.basicInfo) {
+      formData.item_number = data.basicInfo.itemNumber || ''
+      formData.item_name = data.basicInfo.itemName || ''
+      formData.specification = data.basicInfo.specification || ''
+      formData.qty = data.basicInfo.qty || ''
+      formData.bill_from = data.basicInfo.billFrom || ''
+      formData.plan_date = data.basicInfo.planDate || ''
+      formData.progress = data.basicInfo.progress || ''
+      formData.mrptime = data.basicInfo.mrptime || ''
+    }
     
-    // Tab数据 - 暂时使用空数据,等后端API实现后再填充
-    orderInfo.value = data || {}
-    reviewInfo.value = {}
-    changeList.value = []
-    scheduleList.value = []
-    materialList.value = []
-    purchaseOrderList.value = []
-    purchaseReqList.value = []
-    deliveryList.value = []
-    materialPrepList.value = []
-    productionReportList.value = []
-    iqcList.value = []
-    fqcList.value = []
-    inboundList.value = []
-    outboundList.value = []
+    // Tab数据
+    orderInfo.value = data.orderInfo || {}
+    reviewInfo.value = data.reviewInfo || {}
+    changeList.value = data.changeList || []
+    scheduleList.value = data.scheduleList || []
+    materialList.value = data.materialList || []
+    purchaseOrderList.value = data.purchaseOrderList || []
+    purchaseReqList.value = data.purchaseReqList || []
+    deliveryList.value = data.deliveryList || []
+    materialPrepList.value = data.materialPrepList || []
+    productionReportList.value = data.productionReportList || []
+    iqcList.value = data.iqcList || []
+    fqcList.value = data.fqcList || []
+    inboundList.value = data.inboundList || []
+    outboundList.value = data.outboundList || []
   } catch (error) {
+    console.error('加载数据失败:', error)
     ElMessage.error('加载数据失败:' + (error.message || '未知错误'))
   } finally {
     loading.value = false

Some files were not shown because too many files changed in this diff