运单调整

This commit is contained in:
2026-09-11 14:39:30 +08:00
parent 1a9cd55d66
commit 764c0f4581
7 changed files with 610 additions and 59 deletions
+27 -11
View File
@@ -227,7 +227,7 @@
<el-radio-group
v-model="row.confirmMode"
:disabled="dialogReadonly || !row.enabled"
@change="syncNodeFields"
@change="handleAcceptConfirmChange(row)"
>
<el-radio label="yes"></el-radio>
<el-radio label="no_confirm_accept">无需确认接单</el-radio>
@@ -235,12 +235,7 @@
</div>
<div class="process-config-form__require-line">
<span class="process-config-form__require-label">确认接单人</span>
<el-checkbox
v-model="row.confirmDriver"
:disabled="dialogReadonly || !row.enabled || row.confirmMode !== 'yes'"
@change="syncNodeFields"
>司机</el-checkbox
>
<el-checkbox v-model="row.confirmDriver" :disabled="true">司机</el-checkbox>
</div>
</template>
@@ -551,10 +546,19 @@ export default {
hasPermission(code) {
return this.isAdmin || this.validData(this.permission && this.permission[code], false);
},
handleAcceptConfirmChange(row) {
row.confirmDriver = row.confirmMode === 'yes';
this.syncNodeFields();
},
handleReturnConfirmChange(row) {
row.confirmInternal = row.confirmMode === 'yes';
this.syncNodeFields();
},
enforceAcceptDriver(node) {
if (!node || (node.key !== 'accept' && node.name !== '接单')) return node;
node.confirmDriver = node.confirmMode === 'yes';
return node;
},
initDeptOptions() {
getDeptTree(this.userInfo.tenantId).then(res => {
const deptColumn = this.findColumn(this.option.column, 'searchDeptId');
@@ -610,7 +614,7 @@ export default {
return 'warning';
},
canEdit(row) {
return this.hasPermission('process_config_edit') && !row.readonly;
return this.hasPermission('process_config_edit') && !row.readonly && !row.hasRelatedWaybill;
},
canDelete(row) {
return (
@@ -626,7 +630,7 @@ export default {
return this.hasPermission('process_config_disable') && !row.readonly && row.status === 1;
},
cloneNode(template) {
return {
const node = {
enabled: false,
punch: true,
location: true,
@@ -641,10 +645,16 @@ export default {
supportVoucher: false,
voucherOptions: [],
confirmMode: 'yes',
confirmDriver: false,
confirmDriver: true,
confirmInternal: false,
...template,
};
if ((node.key === 'accept' || node.name === '接单') && node.confirmMode === 'yes') {
node.confirmDriver = true;
} else if ((node.key === 'accept' || node.name === '接单') && node.confirmMode !== 'yes') {
node.confirmDriver = false;
}
return node;
},
resetNodeRows() {
this.nodeRows = NODE_TEMPLATES.map(item => this.cloneNode(item));
@@ -769,6 +779,7 @@ export default {
this.syncNodeFields();
},
syncNodeFields() {
this.nodeRows.forEach(item => this.enforceAcceptDriver(item));
const enabledNodes = this.nodeRows.filter(item => item.enabled);
this.form.includedNodes = enabledNodes.map(item => item.name).join(',');
this.form.nodeConfigJson = JSON.stringify(
@@ -935,7 +946,7 @@ export default {
);
},
openConfig(row, readonly = false) {
this.dialogReadonly = readonly;
this.dialogReadonly = readonly || !!(row && row.hasRelatedWaybill);
if (!row || !row.id) {
this.form = {
configName: '',
@@ -952,6 +963,7 @@ export default {
}
api.getDetail(row.id).then(res => {
const detail = res.data.data || {};
this.dialogReadonly = readonly || !!detail.hasRelatedWaybill;
this.form = {
...detail,
defaultFinishDays:
@@ -969,6 +981,10 @@ export default {
},
submitConfig(mode) {
if (this.submitting) return;
if (this.form.id && this.form.hasRelatedWaybill) {
this.$message.warning('该项目已有运单,过程配置不可修改');
return;
}
this.syncNodeFields();
const submitRow = this.normalizeRow({
...this.form,