diff --git a/src/views/business/process-config.vue b/src/views/business/process-config.vue index 2be992d..4840e50 100644 --- a/src/views/business/process-config.vue +++ b/src/views/business/process-config.vue @@ -489,6 +489,12 @@ const NODE_TEMPLATES = [ }, ]; +// 过程配置必须覆盖装货端与卸货端各一个节点;货量下限只看装货端—— +// 到场没有货量开关,不能拿它顶替货量采集 +const PICKUP_NODE_KEYS = ['arrive_scene', 'load', 'dispatch']; +const DELIVERY_NODE_KEYS = ['unload', 'arrival', 'sign', 'return']; +const CARGO_NODE_KEYS = ['load', 'dispatch']; + export default { data() { return { @@ -916,8 +922,24 @@ export default { this.$message.warning('备注不能超过500个字符'); return false; } - if (!this.enabledNodes.length) { - this.$message.warning('请至少选择一个过程节点'); + const isEnabledNode = key => this.nodeRows.some(item => item.key === key && item.enabled); + if (!PICKUP_NODE_KEYS.some(isEnabledNode)) { + this.$message.warning('发货、装货、到场至少选择一个'); + return false; + } + if (!DELIVERY_NODE_KEYS.some(isEnabledNode)) { + this.$message.warning('卸货、到货、签收、回单至少选择一个'); + return false; + } + // 装货端没有节点采集货量时,整条配置在小程序侧等于不采集货量 + const collectsCargo = CARGO_NODE_KEYS.some(key => + this.nodeRows.some( + item => + item.key === key && item.enabled && item.uploadCargo && (item.cargoTypes || []).length + ) + ); + if (!collectsCargo) { + this.$message.warning('发货或装货至少勾选一个货量类型'); return false; } const transit = this.nodeRows.find(item => item.key === 'transit');