refactor(wms/aps): 重构排产和订单页面布局与渲染逻辑

1. 优化aps/order.vue页面代码缩进与标签换行格式,统一代码风格
2. 将aps/schedule.vue的折叠表格改为自定义卡片式列表,移除原el-table展开行逻辑
3. 重构排产页面的明细展示、信息展示结构,新增状态标签样式与列表样式
4. 清理冗余的展开行相关状态和构建逻辑,简化页面交互逻辑
This commit is contained in:
2026-06-29 10:23:36 +08:00
parent 59dad19296
commit 78410b13b7
2 changed files with 347 additions and 125 deletions

View File

@@ -1,14 +1,15 @@
<template>
<div class="app-container" style="height: calc(100vh - 84px); display: flex;">
<!-- 左侧订单列表 -->
<div class="left-panel" v-loading="orderLoading" style="width: 30%; border-right: 1px solid #e4e7ed; overflow-y: auto;">
<div class="left-panel" v-loading="orderLoading"
style="width: 30%; border-right: 1px solid #e4e7ed; overflow-y: auto;">
<!-- 筛选区 -->
<div class="filter-section" style="padding: 10px; border-bottom: 1px solid #e4e7ed;">
<!-- 第一行搜索 + 按钮 + 记录数 -->
<div style="display: flex; align-items: center; justify-content: space-between; margin-bottom: 10px;">
<div style="display: flex; align-items: center; gap: 4px; flex-wrap: wrap;">
<el-input v-model="queryParams.keyword" placeholder="请输入关键字" clearable
@keyup.enter.native="handleSearch" style="width: 160px;" />
<el-input v-model="queryParams.keyword" placeholder="请输入关键字" clearable @keyup.enter.native="handleSearch"
style="width: 160px;" />
<el-button class="aps-btn-red" icon="el-icon-search" size="mini" @click="handleSearch">筛选</el-button>
<el-button icon="el-icon-sort" size="mini" @click="toggleMoreFilter"
:class="showMoreFilter ? 'aps-btn-red' : 'aps-btn-silver'"></el-button>
@@ -67,13 +68,9 @@
<!-- 列表区域 -->
<div class="custom-list">
<div class="list-body">
<div
v-for="item in orderList"
:key="item.orderId"
class="list-item"
<div v-for="item in orderList" :key="item.orderId" class="list-item"
:class="{ 'list-item-active': currentOrder && currentOrder.orderId === item.orderId }"
@click="handleOrderClick(item)"
>
@click="handleOrderClick(item)">
<!-- 第一行订单编号 + 客户公司 -->
<div style="display: flex; justify-content: space-between; align-items: center; margin-bottom: 8px;">
<div style="display: flex; align-items: center; gap: 8px;">
@@ -99,30 +96,23 @@
<div style="font-size: 12px; color: #909399;">
签订地点: {{ item.signLocation || '-' }}
</div>
<el-tag
:type="statusTagType(item.orderStatus)"
size="small"
>{{ statusLabel(item.orderStatus) }}</el-tag>
<el-tag :type="statusTagType(item.orderStatus)" size="small">{{ statusLabel(item.orderStatus) }}</el-tag>
</div>
</div>
<div v-if="orderList.length === 0 && !orderLoading" style="padding: 40px; text-align: center; color: #909399;">
<div v-if="orderList.length === 0 && !orderLoading"
style="padding: 40px; text-align: center; color: #909399;">
暂无订单数据
</div>
</div>
</div>
<pagination
v-show="total > 0"
:total="total"
:page.sync="queryParams.pageNum"
:limit.sync="queryParams.pageSize"
@pagination="getList"
style="padding: 10px; margin-bottom: 10px !important;"
/>
<pagination v-show="total > 0" :total="total" :page.sync="queryParams.pageNum" :limit.sync="queryParams.pageSize"
@pagination="getList" style="padding: 10px; margin-bottom: 10px !important;" />
</div>
<!-- 右侧内容区域 -->
<div class="right-panel" v-if="currentOrder && currentOrder.orderId" style="flex: 1; display: flex; flex-direction: column;">
<div class="right-panel" v-if="currentOrder && currentOrder.orderId"
style="flex: 1; display: flex; flex-direction: column;">
<div class="detail-panel">
<!-- 订单基本信息含甲乙双方卡片 -->
<div class="detail-card">
@@ -131,29 +121,68 @@
</div>
<div class="detail-card-body">
<div class="form-grid-2">
<div class="form-field"><label>销售员</label><div class="field-value">{{ currentOrder.salesman }}</div></div>
<div class="form-field"><label>合同号</label><div class="field-value">{{ currentOrder.contractCode }}</div></div>
<div class="form-field"><label>签订时间</label><div class="field-value">{{ currentOrder.signTime }}</div></div>
<div class="form-field"><label>交货日期</label><div class="field-value">{{ currentOrder.deliveryDate }}</div></div>
<div class="form-field"><label>订单总金额</label><div class="field-value">{{ currentOrder.orderAmount }}</div></div>
<div class="form-field"><label>签订地点</label><div class="field-value">{{ currentOrder.signLocation }}</div></div>
<div class="form-field" style="grid-column:1/3;"><label>备注</label><div class="field-value">{{ currentOrder.remark }}</div></div>
<div class="form-field"><label>销售员</label>
<div class="field-value">{{ currentOrder.salesman }}</div>
</div>
<div class="form-field"><label>合同号</label>
<div class="field-value">{{ currentOrder.contractCode }}</div>
</div>
<div class="form-field"><label>签订时间</label>
<div class="field-value">{{ currentOrder.signTime }}</div>
</div>
<div class="form-field"><label>交货日期</label>
<div class="field-value">{{ currentOrder.deliveryDate }}</div>
</div>
<div class="form-field"><label>订单总金额</label>
<div class="field-value">{{ currentOrder.orderAmount }}</div>
</div>
<div class="form-field"><label>签订地点</label>
<div class="field-value">{{ currentOrder.signLocation }}</div>
</div>
<div class="form-field" style="grid-column:1/3;"><label>备注</label>
<div class="field-value">{{ currentOrder.remark }}</div>
</div>
</div>
<div class="section-divider"></div>
<div class="form-grid-2">
<div class="form-field"><label>供方名称甲方</label><div class="field-value">{{ currentOrder.supplier }}</div></div>
<div class="form-field"><label>供方地址</label><div class="field-value">{{ currentOrder.supplierAddress }}</div></div>
<div class="form-field"><label>供方电话</label><div class="field-value">{{ currentOrder.supplierPhone }}</div></div>
<div class="form-field"><label>供方开户行</label><div class="field-value">{{ currentOrder.supplierBank }}</div></div>
<div class="form-field"><label>供方账号</label><div class="field-value">{{ currentOrder.supplierAccount }}</div></div>
<div class="form-field"><label>供方税号</label><div class="field-value">{{ currentOrder.supplierTaxNo }}</div></div>
<div class="form-field" style="border-top:1px solid #e8e8e8;padding-top:8px;margin-top:4px;grid-column:1/3;"></div>
<div class="form-field"><label>需方名称乙方</label><div class="field-value">{{ currentOrder.customer }}</div></div>
<div class="form-field"><label>需方地址</label><div class="field-value">{{ currentOrder.customerAddress }}</div></div>
<div class="form-field"><label>需方电话</label><div class="field-value">{{ currentOrder.customerPhone }}</div></div>
<div class="form-field"><label>需方开户行</label><div class="field-value">{{ currentOrder.customerBank }}</div></div>
<div class="form-field"><label>需方账号</label><div class="field-value">{{ currentOrder.customerAccount }}</div></div>
<div class="form-field"><label>需方税</label><div class="field-value">{{ currentOrder.customerTaxNo }}</div></div>
<div class="form-field"><label>供方名称甲方</label>
<div class="field-value">{{ currentOrder.supplier }}</div>
</div>
<div class="form-field"><label>供方地址</label>
<div class="field-value">{{ currentOrder.supplierAddress }}</div>
</div>
<div class="form-field"><label>供方电话</label>
<div class="field-value">{{ currentOrder.supplierPhone }}</div>
</div>
<div class="form-field"><label>供方开户行</label>
<div class="field-value">{{ currentOrder.supplierBank }}</div>
</div>
<div class="form-field"><label>供方账</label>
<div class="field-value">{{ currentOrder.supplierAccount }}</div>
</div>
<div class="form-field"><label>供方税号</label>
<div class="field-value">{{ currentOrder.supplierTaxNo }}</div>
</div>
<div class="form-field"
style="border-top:1px solid #e8e8e8;padding-top:8px;margin-top:4px;grid-column:1/3;"></div>
<div class="form-field"><label>需方名称乙方</label>
<div class="field-value">{{ currentOrder.customer }}</div>
</div>
<div class="form-field"><label>需方地址</label>
<div class="field-value">{{ currentOrder.customerAddress }}</div>
</div>
<div class="form-field"><label>需方电话</label>
<div class="field-value">{{ currentOrder.customerPhone }}</div>
</div>
<div class="form-field"><label>需方开户行</label>
<div class="field-value">{{ currentOrder.customerBank }}</div>
</div>
<div class="form-field"><label>需方账号</label>
<div class="field-value">{{ currentOrder.customerAccount }}</div>
</div>
<div class="form-field"><label>需方税号</label>
<div class="field-value">{{ currentOrder.customerTaxNo }}</div>
</div>
</div>
</div>
</div>
@@ -165,6 +194,11 @@
</div>
<div class="detail-card-body" style="padding:0;">
<div v-if="productList.length > 0" class="aps-product-table-wrap">
<div class="aps-product-summary">
<span>产品名称{{ productName }}</span>
<span>总数量{{ totalQuantity }} </span>
<span>含税总额{{ totalTaxTotal }}</span>
</div>
<el-table :data="productList" border size="small" class="aps-product-table">
<el-table-column label="规格" prop="spec" min-width="120" />
<el-table-column label="材质" prop="material" width="100" align="center" />
@@ -176,11 +210,6 @@
<el-table-column label="税额" prop="taxAmount" width="90" align="right" />
<el-table-column label="备注" prop="remark" min-width="120" />
</el-table>
<div class="aps-product-summary">
<span>产品名称{{ productName }}</span>
<span>总数量{{ totalQuantity }} </span>
<span>含税总额{{ totalTaxTotal }}</span>
</div>
</div>
<el-empty v-else description="暂无产品明细" />
</div>