流转确认

This commit is contained in:
tzy 2026-08-11 16:37:50 +08:00
parent f9ba34d72a
commit da1f401a7e
4 changed files with 142 additions and 79 deletions

View File

@ -4,6 +4,7 @@ export interface AssingWork {
id:number, id:number,
processId:number, processId:number,
processName:number, processName:number,
processCode?:string,
userId:string, userId:string,
quantity:number, quantity:number,
rework:number, rework:number,
@ -22,6 +23,11 @@ export interface AssingWork {
workshopId:number, workshopId:number,
sectionId:number, sectionId:number,
deviceId:number, deviceId:number,
deviceName?:string,
workshopName?:string,
sectionName?:string,
materialCode?:string,
materialName?:string,
traceId:number, traceId:number,
qcNum:number qcNum:number
} }
@ -65,7 +71,15 @@ export function pauseresume(data:any) {
} }
//我的派工任务 //我的派工任务
export function mytasks(params:{page:number,pageSize:number,processName:string}) { export function mytasks(params:{
page:number
pageSize:number
processName?:string
processId?:number | string
assingCode?:string
materialCode?:string
materialName?:string
}) {
return request({ return request({
url: `/mes/dispatch/my-tasks`, url: `/mes/dispatch/my-tasks`,
method: 'get', method: 'get',

View File

@ -50,6 +50,7 @@
<!-- 表格 --> <!-- 表格 -->
<n-data-table <n-data-table
remote
:columns="columns" :columns="columns"
:data="tableData" :data="tableData"
:loading="loading" :loading="loading"

View File

@ -1,16 +1,5 @@
<template> <template>
<div> <div>
<div class="toolbar">
<n-space>
<n-button
size="small"
:disabled="tableLoading || !AssingWorkTableData.length"
@click="AssingWorkToggleExpandAll"
>
{{ AssingWorkAllExpanded ? '全部收起' : '全部展开' }}
</n-button>
</n-space>
</div>
<n-scrollbar x-scrollable> <n-scrollbar x-scrollable>
<n-data-table <n-data-table
v-model:expanded-row-keys="AssingWorkExpandedKeys" v-model:expanded-row-keys="AssingWorkExpandedKeys"
@ -18,7 +7,7 @@
:data="AssingWorkTableData" :data="AssingWorkTableData"
:loading="tableLoading" :loading="tableLoading"
:row-key="RowKey" :row-key="RowKey"
:scroll-x="1800" :scroll-x="1700"
:max-height="1000" :max-height="1000"
size="small" size="small"
style="margin-bottom:15px" style="margin-bottom:15px"
@ -26,7 +15,15 @@
/> />
</n-scrollbar> </n-scrollbar>
<div class="pagination-container" style="display: flex; justify-content: flex-end; margin-top: 12px"> <div class="pagination-container">
<n-button
size="small"
quaternary
:disabled="tableLoading || !AssingWorkTableData.length"
@click="AssingWorkToggleExpandAll"
>
{{ AssingWorkAllExpanded ? '全部收起' : '全部展开' }}
</n-button>
<n-pagination <n-pagination
v-model:page="pagination.page" v-model:page="pagination.page"
v-model:page-size="pagination.pageSize" v-model:page-size="pagination.pageSize"
@ -135,6 +132,9 @@ const AssingWorkTableData = ref<AssingWork[]>([])
const AssingWorkExpandedKeys = ref<Array<string |number>>([]) const AssingWorkExpandedKeys = ref<Array<string |number>>([])
const processName = ref<string>() const processName = ref<string>()
const assingCode = ref<string>()
const materialCode = ref<string>()
const materialName = ref<string>()
// //
@ -153,7 +153,7 @@ const AssingWorkColumns :DataTableColumns<AssingWork> = [
align:"center", align:"center",
title:"派工编号", title:"派工编号",
key:"assingCode", key:"assingCode",
minWidth:150, width: 170,
render(row:any) { render(row:any) {
return h( return h(
'a', 'a',
@ -175,21 +175,43 @@ const AssingWorkColumns :DataTableColumns<AssingWork> = [
}, },
{ {
align:'center', align:'center',
title: '工序名称', title: '物料编码',
key: 'processName', key: 'materialCode',
minWidth: 200 width: 120,
ellipsis: { tooltip: true },
render(row:any) {
return row.materialCode || '-'
}
}, },
{ {
align:'center',
title: '物料名称',
key: 'materialName',
width: 140,
ellipsis: { tooltip: true },
render(row:any) {
return row.materialName || '-'
}
},
{
align:'center',
title: '工序名称',
key: 'processName',
width: 120,
ellipsis: { tooltip: true }
},
/*{
align:'center', align:'center',
title: '工序编号', title: '工序编号',
key: 'processCode', key: 'processCode',
minWidth: 200 width: 100
}, }, */
{ {
align:'center', align:'center',
title: '是否质检', title: '是否质检',
key: 'qualityInspection', key: 'qualityInspection',
minWidth: 200, width: 90,
render(row) { render(row) {
var opt = row.qualityInspection var opt = row.qualityInspection
if (opt == 0) { if (opt == 0) {
@ -204,7 +226,7 @@ const AssingWorkColumns :DataTableColumns<AssingWork> = [
align:'center', align:'center',
title: '是否入库', title: '是否入库',
key: 'storageEntry', key: 'storageEntry',
minWidth: 200, width: 90,
render(row) { render(row) {
var opt = row.storageEntry var opt = row.storageEntry
if (opt == 0) { if (opt == 0) {
@ -220,7 +242,7 @@ const AssingWorkColumns :DataTableColumns<AssingWork> = [
align:'center', align:'center',
title: '派工状态', title: '派工状态',
key: 'assingStatus', key: 'assingStatus',
minWidth: 150, width: 90,
render(row:any) { render(row:any) {
const val = row.assingStatus const val = row.assingStatus
const opt = qcAssingStatusOptions.value.find(o => o.value === val || String(o.value) === String(val)) const opt = qcAssingStatusOptions.value.find(o => o.value === val || String(o.value) === String(val))
@ -246,31 +268,32 @@ const AssingWorkColumns :DataTableColumns<AssingWork> = [
align:'center', align:'center',
title: '工位/设备', title: '工位/设备',
key: 'deviceName', key: 'deviceName',
minWidth: 200 width: 110,
ellipsis: { tooltip: true }
}, },
{ {
align:'center', align:'center',
title: '数量', title: '数量',
minWidth: 100, width: 70,
key: 'quantity' key: 'quantity'
}, },
{ {
align:'center', align:'center',
title: '完成数量', title: '完成数量',
key: 'completedQuantity', key: 'completedQuantity',
minWidth: 150 width: 80
}, },
{ {
align:'center', align:'center',
title: '完成时间', title: '完成时间',
key: 'completedTime', key: 'completedTime',
minWidth: 180 width: 160
}, },
{ {
align:'center', align:'center',
title: '状态', title: '状态',
key: 'status', key: 'status',
minWidth: 100, width: 80,
render(row:any) { render(row:any) {
if(row.status == 0){ if(row.status == 0){
return h(NTag, { return h(NTag, {
@ -309,7 +332,7 @@ const AssingWorkColumns :DataTableColumns<AssingWork> = [
align:'center', align:'center',
title: '操作', title: '操作',
key: 'action', key: 'action',
width: 250, width: 180,
fixed: 'right', fixed: 'right',
render(row:any) { render(row:any) {
const buttons:any = [] const buttons:any = []
@ -433,25 +456,34 @@ function handlePageSizeChange(pageSize: number) {
} }
// // // //
function getlist() { async function getlist() {
tableLoading.value = true
try { try {
mytasks({ const rps: any = await mytasks({
page: pagination.page, page: pagination.page,
pageSize: pagination.pageSize, pageSize: pagination.pageSize,
processName:processName.value processName: processName.value || undefined,
}).then((rps:any) => { assingCode: assingCode.value || undefined,
AssingWorkTableData.value = rps.records materialCode: materialCode.value || undefined,
pagination.itemCount = rps.total materialName: materialName.value || undefined,
}) })
AssingWorkTableData.value = rps?.records ?? []
pagination.itemCount = rps?.total ?? 0
} catch (error) { } catch (error) {
console.log(error); console.error(error)
} finally {
tableLoading.value = false
} }
} }
const loadTableData = async(params:Record<string,any>) => { const loadTableData = async (params: Record<string, any> = {}) => {
processName.value = params.processName processName.value = params.processName || undefined
getlist() assingCode.value = params.assingCode || undefined
materialCode.value = params.materialCode || undefined
materialName.value = params.materialName || undefined
pagination.page = 1
AssingWorkExpandedKeys.value = []
await getlist()
} }
@ -659,8 +691,11 @@ defineExpose({
<style scoped> <style scoped>
.toolbar { .pagination-container {
margin-bottom: 12px; display: flex;
justify-content: space-between;
align-items: center;
margin-top: 12px;
} }
.pgClass { .pgClass {
font-weight: bold; font-weight: bold;

View File

@ -9,22 +9,24 @@
label-placement="left" label-placement="left"
> >
<n-grid :cols="24" :x-gap="24"> <n-grid :cols="24" :x-gap="24">
<!-- <n-form-item-gi :span="6" label="工序编码"> <n-form-item-gi :span="4" label="派工编号">
<n-input v-model:value="searchForm.processId" placeholder="请输入工序编号" clearable /> <n-input v-model:value="searchForm.assingCode" placeholder="请输入派工编号" clearable />
</n-form-item-gi> --> </n-form-item-gi>
<n-form-item-gi :span="6" label="工序名称"> <n-form-item-gi :span="4" label="物料编码">
<n-input v-model:value="searchForm.materialCode" placeholder="请输入物料编码" clearable />
</n-form-item-gi>
<n-form-item-gi :span="4" label="物料名称">
<n-input v-model:value="searchForm.materialName" placeholder="请输入物料名称" clearable />
</n-form-item-gi>
<n-form-item-gi :span="4" label="工序名称">
<n-input v-model:value="searchForm.processName" placeholder="请输入工序名称" clearable /> <n-input v-model:value="searchForm.processName" placeholder="请输入工序名称" clearable />
</n-form-item-gi> </n-form-item-gi>
<n-form-item-gi :span="6"> <n-form-item-gi :span="4">
<n-space> <n-space>
<n-button type="primary" @click="search"> <n-button type="primary" @click="search">
<template #icon><n-icon><SearchOutline /></n-icon></template> <template #icon><n-icon><SearchOutline /></n-icon></template>
搜索 搜索
</n-button> </n-button>
<!-- <n-button type="primary" @click="search">
<template #icon><n-icon><SearchOutline /></n-icon></template>
我的派工
</n-button> -->
<n-button @click="reset"> <n-button @click="reset">
<template #icon><n-icon><RefreshOutline /></n-icon></template> <template #icon><n-icon><RefreshOutline /></n-icon></template>
重置 重置
@ -263,6 +265,9 @@ const searchForm = reactive({
pageSize: 20, pageSize: 20,
processId:'', processId:'',
processName:'', processName:'',
assingCode:'',
materialCode:'',
materialName:'',
}) })
@ -489,23 +494,31 @@ const columns = [
// //
function search() { function search() {
treeTableRef.value?.loadTableData({...searchForm}) treeTableRef.value?.loadTableData({
processName: searchForm.processName,
assingCode: searchForm.assingCode,
materialCode: searchForm.materialCode,
materialName: searchForm.materialName,
})
} }
// //
function reset() { function reset() {
searchForm.processId = '' searchForm.processId = ''
searchForm.processName = '' searchForm.processName = ''
treeTableRef.value?.loadTableData({...searchForm}) searchForm.assingCode = ''
searchForm.materialCode = ''
searchForm.materialName = ''
treeTableRef.value?.loadTableData({})
} }
// //
function getlist() { function getlist() {
searchForm.page = pagination.page treeTableRef.value?.loadTableData({
searchForm.pageSize = pagination.pageSize processName: searchForm.processName,
mytasks(searchForm).then((rps:any) => { assingCode: searchForm.assingCode,
datalist.value = rps.records materialCode: searchForm.materialCode,
pagination.itemCount = rps.total materialName: searchForm.materialName,
}) })
} }