feat(wms盘库): 完成多项功能升级与体验优化

1. 新增仓库选择组件多选支持,适配批量库区操作
2. 售后单新增自动生成编号与当前日期填充
3. 盘点计划新增流程审批操作按钮,支持驳回与审批通过
4. 优化库区绑定页面,支持编辑删除已绑定库区
5. 替换人员选择为可搜索下拉框,支持多选参与人
6. 新增驳回审批弹窗,提供快捷驳回理由
7. 优化表单提交逻辑,适配多库区数据格式
This commit is contained in:
2026-06-27 14:38:33 +08:00
parent 88d2d864b2
commit 3d5c0a7281
7 changed files with 217 additions and 73 deletions

View File

@@ -46,6 +46,26 @@
<el-divider v-if="currentRow.planStatus === 0" />
<!-- 计划待审批 (1) 操作 -->
<div v-if="currentRow.planStatus === 1" class="section-title">
<span>流程操作 <span class="en-sub">· Actions</span></span>
</div>
<div class="flow-actions" v-if="currentRow.planStatus === 1">
<el-button type="danger" size="small" icon="el-icon-close" @click="$emit('reject')">驳回</el-button>
<el-button type="primary" size="small" icon="el-icon-check" @click="$emit('approve')">审批通过</el-button>
</div>
<el-divider v-if="currentRow.planStatus === 1" />
<!-- 差异审批中 (3) 操作 -->
<div v-if="currentRow.planStatus === 3" class="section-title">
<span>流程操作 <span class="en-sub">· Actions</span></span>
</div>
<div class="flow-actions" v-if="currentRow.planStatus === 3">
<el-button type="danger" size="small" icon="el-icon-close" @click="$emit('reject')">驳回</el-button>
<el-button type="primary" size="small" icon="el-icon-check" @click="$emit('diff-approve')">审批通过</el-button>
</div>
<el-divider v-if="currentRow.planStatus === 3" />
<div class="section-title">库区盘点明细 <span class="en-sub">· Warehouses</span>
<el-button v-if="currentRow.planStatus === 0" size="mini" type="primary" plain icon="el-icon-plus" style="margin-left:8px;" @click="$emit('bind-warehouse')">绑定库区</el-button>
</div>
@@ -53,12 +73,11 @@
<WarehouseDetailPanel ref="whPanel"
:planId="currentRow.planId"
:planStatus="currentRow.planStatus"
@approve="$emit('approve')"
@diff-approve="$emit('diff-approve')"
@reject="$emit('reject')"
@archive="$emit('archive')"
@process-disc="$emit('process-disc', $event)"
@submit-disc-approval="$emit('submit-disc-approval')"
@edit-warehouse="$emit('edit-warehouse', $event)"
@delete-warehouse="$emit('delete-warehouse', $event)"
/>
<div class="section-gap" />

View File

@@ -96,6 +96,10 @@
<span class="wh-detail-label">出入库查询截止</span>
<span class="wh-detail-value">{{ wh.ioEndTime ? formatTime(wh.ioEndTime) : '-' }}</span>
</div>
<div v-if="planStatus === 0" class="wh-detail-actions">
<el-button size="mini" type="primary" plain icon="el-icon-edit" @click="$emit('edit-warehouse', wh)">编辑</el-button>
<el-button size="mini" type="danger" plain icon="el-icon-delete" @click="$emit('delete-warehouse', wh)">删除</el-button>
</div>
</div>
</template>
@@ -130,18 +134,6 @@
</div>
</div>
<!-- ===== 计划待审批 (1) 操作 ===== -->
<div v-if="planStatus === 1" style="text-align:right;margin-bottom:8px;">
<el-button size="small" type="danger" icon="el-icon-close" @click="$emit('reject')">驳回</el-button>
<el-button size="small" type="primary" icon="el-icon-check" @click="$emit('approve')">审批通过</el-button>
</div>
<!-- ===== 差异审批中 (3) 操作 ===== -->
<div v-if="planStatus === 3" style="text-align:right;margin-bottom:8px;">
<el-button size="small" type="danger" icon="el-icon-close" @click="$emit('reject')">驳回</el-button>
<el-button size="small" type="primary" icon="el-icon-check" @click="$emit('diff-approve')">审批通过</el-button>
</div>
<!-- ===== 差异处理中 (4) 操作 ===== -->
<div v-if="planStatus === 4" style="text-align:right;margin-bottom:8px;">
<el-button size="small" type="success" icon="el-icon-circle-check" @click="$emit('archive')">归档封存</el-button>
@@ -461,9 +453,9 @@ export default {
async doGenSnapshot(wh) {
if (!wh) return;
var p = { dataType: 1, status: 0 };
if (wh.warehouseId) p.warehouseId = String(wh.warehouseId);
if (wh.actualWarehouseId) p.actualWarehouseId = String(wh.actualWarehouseId);
if (!p.warehouseId && !p.actualWarehouseId) { this.$message.warning('无库区条件'); return; }
if (wh.warehouseIds) p.warehouseIds = String(wh.warehouseIds);
if (wh.actualWarehouseIds) p.actualWarehouseIds = String(wh.actualWarehouseIds);
if (!p.warehouseIds && !p.actualWarehouseIds) { this.$message.warning('无库区条件'); return; }
this.genLoading = true;
try {
var resp = await exportCoilWithAll(p);
@@ -622,6 +614,7 @@ export default {
.wh-detail-row:last-child { border-bottom: none; }
.wh-detail-label { width: 120px; flex-shrink: 0; color: #606266; font-weight: 500; }
.wh-detail-value { color: #303133; }
.wh-detail-actions { display: flex; gap: 6px; padding: 8px 14px; border-top: 1px solid #f0ece6; justify-content: flex-end; }
.doc-tabs-header { display: flex; border-bottom: 1px solid #d4d0c8; margin-bottom: 12px; }
.doc-tab-item { padding: 8px 16px; cursor: pointer; color: #8c8c8c; font-size: 13px; font-weight: 500; border-bottom: 2px solid transparent; margin-bottom: -1px; transition: color 0.2s, border-color 0.2s; display: flex; align-items: center; gap: 6px; user-select: none; }
.doc-tab-item:hover { color: #1a3c6e; }