feat(repair): add quick status filters, mandatory validations, FIFO sorting, and hide actions on finished orders
This commit is contained in:
@ -69,7 +69,14 @@ class RepairInboundService:
|
|||||||
if params.get('serial_number'):
|
if params.get('serial_number'):
|
||||||
query = query.filter(TransRepair.serial_number.ilike(f"%{params['serial_number']}%"))
|
query = query.filter(TransRepair.serial_number.ilike(f"%{params['serial_number']}%"))
|
||||||
if params.get('repair_status'):
|
if params.get('repair_status'):
|
||||||
query = query.filter(TransRepair.repair_status == params['repair_status'])
|
status_value = params['repair_status']
|
||||||
|
if status_value == '未出库':
|
||||||
|
# 未出库:排除已出库状态
|
||||||
|
query = query.filter(TransRepair.repair_status != '已出库')
|
||||||
|
elif status_value not in ['全部', '']:
|
||||||
|
# 其他明确状态:精确匹配
|
||||||
|
query = query.filter(TransRepair.repair_status == status_value)
|
||||||
|
# '全部' 或为空:不过滤状态
|
||||||
|
|
||||||
# 关联 MaterialBase 查询物料名称 或 直接搜索 TransRepair.material_name
|
# 关联 MaterialBase 查询物料名称 或 直接搜索 TransRepair.material_name
|
||||||
if params.get('material_name'):
|
if params.get('material_name'):
|
||||||
@ -82,8 +89,8 @@ class RepairInboundService:
|
|||||||
)
|
)
|
||||||
)
|
)
|
||||||
|
|
||||||
# 按创建时间倒序
|
# 按接收时间升序(先进先出)+ id 升序
|
||||||
query = query.order_by(db.desc(TransRepair.id))
|
query = query.order_by(db.asc(TransRepair.arrival_date), db.asc(TransRepair.id))
|
||||||
|
|
||||||
# 分页
|
# 分页
|
||||||
pagination = query.paginate(page=page, per_page=page_size, error_out=False)
|
pagination = query.paginate(page=page, per_page=page_size, error_out=False)
|
||||||
|
|||||||
@ -29,9 +29,19 @@
|
|||||||
</el-form>
|
</el-form>
|
||||||
</el-card>
|
</el-card>
|
||||||
|
|
||||||
<!-- 操作按钮区 -->
|
<!-- 操作按钮区 + 快捷状态过滤 -->
|
||||||
<div class="action-bar">
|
<div class="action-bar">
|
||||||
<el-button v-if="userStore.hasPermission('inbound_repair:add')" type="primary" :icon="Plus" @click="handleCreate">新增维修</el-button>
|
<el-button v-if="userStore.hasPermission('inbound_repair:add')" type="primary" :icon="Plus" @click="handleCreate">新增维修</el-button>
|
||||||
|
<el-radio-group v-model="searchForm.repair_status" @change="handleSearch" class="status-filter-group">
|
||||||
|
<el-radio-button value="未出库">未出库</el-radio-button>
|
||||||
|
<el-radio-button value="全部">全部</el-radio-button>
|
||||||
|
<el-radio-button value="待检测">待检测</el-radio-button>
|
||||||
|
<el-radio-button value="维修中">维修中</el-radio-button>
|
||||||
|
<el-radio-button value="等待配件">等待配件</el-radio-button>
|
||||||
|
<el-radio-button value="已修复">已修复</el-radio-button>
|
||||||
|
<el-radio-button value="报废转出">报废转出</el-radio-button>
|
||||||
|
<el-radio-button value="已出库">已出库</el-radio-button>
|
||||||
|
</el-radio-group>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<!-- 数据表格 -->
|
<!-- 数据表格 -->
|
||||||
@ -57,7 +67,7 @@
|
|||||||
<el-button v-if="userStore.hasPermission('inbound_repair:edit')" type="primary" link size="small" @click="handleEdit(row)">
|
<el-button v-if="userStore.hasPermission('inbound_repair:edit')" type="primary" link size="small" @click="handleEdit(row)">
|
||||||
编辑
|
编辑
|
||||||
</el-button>
|
</el-button>
|
||||||
<el-button v-if="userStore.hasPermission('inbound_repair:edit')" type="success" link size="small" @click="handleUpdateStatus(row)">
|
<el-button v-if="userStore.hasPermission('inbound_repair:edit') && row.repair_status !== '已出库'" type="success" link size="small" @click="handleUpdateStatus(row)">
|
||||||
更新状态
|
更新状态
|
||||||
</el-button>
|
</el-button>
|
||||||
<el-button v-if="userStore.hasPermission('inbound_repair:delete')" type="danger" link size="small" @click="handleDelete(row)">
|
<el-button v-if="userStore.hasPermission('inbound_repair:delete')" type="danger" link size="small" @click="handleDelete(row)">
|
||||||
@ -232,7 +242,7 @@ const searchForm = reactive({
|
|||||||
repair_no: '',
|
repair_no: '',
|
||||||
serial_number: '',
|
serial_number: '',
|
||||||
material_name: '',
|
material_name: '',
|
||||||
repair_status: ''
|
repair_status: '未出库'
|
||||||
})
|
})
|
||||||
|
|
||||||
// 表格数据
|
// 表格数据
|
||||||
@ -534,6 +544,13 @@ onMounted(() => {
|
|||||||
|
|
||||||
.action-bar {
|
.action-bar {
|
||||||
margin-bottom: 16px;
|
margin-bottom: 16px;
|
||||||
|
display: flex;
|
||||||
|
align-items: center;
|
||||||
|
gap: 20px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.status-filter-group {
|
||||||
|
margin-left: auto;
|
||||||
}
|
}
|
||||||
|
|
||||||
.pagination-container {
|
.pagination-container {
|
||||||
|
|||||||
Reference in New Issue
Block a user