This commit is contained in:
andy 2026-05-27 09:06:32 +08:00
parent 13ca3ff660
commit 054cdc265f
3 changed files with 112 additions and 272 deletions

View File

@ -47,10 +47,19 @@ export function mytasks(params:any) {
} }
//派工数据统计 //派工数据统计
export function workload(params:any) { export function workload(params?:any) {
return request({ return request({
url: `/mes/dispatch/workload`, url: `/mes/dispatch/workload`,
method: 'get', method: 'get',
params params
}) })
}
//报检
export function inspectio(data:any) {
return request({
url: `/mes/dispatch/qc`,
method: 'put',
data
})
} }

View File

@ -115,7 +115,7 @@
<!-- 新增/编辑弹窗 --> <!-- 新增/编辑弹窗 -->
<n-modal <n-modal
v-model:show="editmodal" v-model:show="editmodal"
title="编辑派工" title="编辑派工"
preset="card" preset="card"
style="width: 800px" style="width: 800px"
:mask-closable="false" :mask-closable="false"
@ -128,7 +128,7 @@
label-width="80" label-width="80"
class="modal-form" class="modal-form"
> >
<n-grid :cols="2" :x-gap="16"> <n-grid :cols="2">
<!-- <n-gi> <!-- <n-gi>
<n-form-item label="工序编号" path="processName"> <n-form-item label="工序编号" path="processName">
<n-input v-model:value="formData.processName" placeholder="请输入用户名" :disabled="!!formData.id" /> <n-input v-model:value="formData.processName" placeholder="请输入用户名" :disabled="!!formData.id" />
@ -136,22 +136,22 @@
</n-gi> --> </n-gi> -->
<n-gi> <n-gi>
<n-form-item label="工序名称" path="processName"> <n-form-item label="工序名称" path="processName">
<n-input v-model:value="formData.processName" placeholder="请输入用户名" /> <n-input v-model:value="formData.processName" placeholder="请输入工序名称" />
</n-form-item> </n-form-item>
</n-gi> </n-gi>
<n-gi> <n-gi>
<n-form-item label="工人名称" path="stringUserName"> <n-form-item label="工人名称" path="stringUserName">
<n-input v-model:value="formData.stringUserName" placeholder="请输入用户名" /> <n-input v-model:value="formData.stringUserName" placeholder="请选择工人" />
</n-form-item> </n-form-item>
</n-gi> </n-gi>
<n-gi> <n-gi>
<n-form-item label="数" path="quantity"> <n-form-item label="数" path="quantity">
<n-input v-model:value="formData.quantity" placeholder="请输入用户名" /> <n-input v-model:value="formData.quantity" placeholder="请输入数量" />
</n-form-item> </n-form-item>
</n-gi> </n-gi>
<n-gi> <n-gi>
<n-form-item label="是否返工" path="rework"> <n-form-item label="是否返工" path="rework">
<n-input v-model:value="formData.rework" placeholder="请输入用户名" /> <n-input v-model:value="formData.rework" placeholder="请输入" />
</n-form-item> </n-form-item>
</n-gi> </n-gi>
<!-- <n-gi> <!-- <n-gi>
@ -160,7 +160,7 @@
</n-form-item> </n-form-item>
</n-gi> --> </n-gi> -->
<n-gi> <n-gi>
<n-form-item label="完成数" path="completedQuantity"> <n-form-item label="完成数" path="completedQuantity">
<n-input v-model:value="formData.completedQuantity" placeholder="请输入用户名" :disabled="!!formData.id" /> <n-input v-model:value="formData.completedQuantity" placeholder="请输入用户名" :disabled="!!formData.id" />
</n-form-item> </n-form-item>
</n-gi> </n-gi>
@ -194,8 +194,14 @@
:rules="reassrules" :rules="reassrules"
label-placement="top" label-placement="top"
label-width="80" label-width="80"
class="modal-form"
> >
<n-form-item label="工序编号">
<n-input v-model:value="gxobg.id" disabled />
</n-form-item>
<n-form-item label="工序名称">
<n-input v-model:value="gxobg.name" disabled />
</n-form-item>
<n-form-item label="工人名称" path=""> <n-form-item label="工人名称" path="">
<n-input v-model:value="reassform.userid" placeholder="请选择员工" /> <n-input v-model:value="reassform.userid" placeholder="请选择员工" />
</n-form-item> </n-form-item>
@ -211,7 +217,7 @@
:loading="reassLoading" :loading="reassLoading"
@click="reassSubmit" @click="reassSubmit"
:disabled="reassdisedbtn" :disabled="reassdisedbtn"
>保存</n-button> >确定</n-button>
</n-space> </n-space>
</template> </template>
</n-modal> </n-modal>
@ -229,9 +235,13 @@
:model="pauseform" :model="pauseform"
label-placement="top" label-placement="top"
label-width="80" label-width="80"
class="modal-form"
> >
<n-form-item label="工序编号">
<n-input v-model:value="gxobg.id" disabled />
</n-form-item>
<n-form-item label="工序名称">
<n-input v-model:value="gxobg.name" disabled />
</n-form-item>
<n-form-item label="暂停原因" path="reason"> <n-form-item label="暂停原因" path="reason">
<n-input type="textarea" v-model:value="pauseform.reason" placeholder="请输入暂停原因" /> <n-input type="textarea" v-model:value="pauseform.reason" placeholder="请输入暂停原因" />
</n-form-item> </n-form-item>
@ -244,7 +254,7 @@
:loading="submitLoading" :loading="submitLoading"
@click="pauseSubmit" @click="pauseSubmit"
:disabled="disedbtn" :disabled="disedbtn"
>保存</n-button> >确定</n-button>
</n-space> </n-space>
</template> </template>
</n-modal> </n-modal>
@ -286,7 +296,7 @@ import {
editdiswor, editdiswor,
transfer, transfer,
pauseresume, pauseresume,
workload //workload
} from '@/api/production' } from '@/api/production'
//const dialog = useDialog() //const dialog = useDialog()
@ -630,6 +640,8 @@ function handleSubmit() {
}) })
} }
let gxobg = reactive<any>({})
// //
let reassignmodal = ref(false) let reassignmodal = ref(false)
@ -650,6 +662,10 @@ let reassLoading = ref(false)
let reassdisedbtn = ref(false) let reassdisedbtn = ref(false)
function handlreass(n:any) { function handlreass(n:any) {
gxobg.name = n.processName
gxobg.id = n.processId
reassignmodal.value = true reassignmodal.value = true
reassLoading.value = false reassLoading.value = false
reassdisedbtn.value = false reassdisedbtn.value = false
@ -696,6 +712,10 @@ const pauseformRef = ref()
let pauseisedbtn = ref(false) let pauseisedbtn = ref(false)
function handlpause(n:any) { function handlpause(n:any) {
gxobg.name = n.processName
gxobg.id = n.processId
pausemodal.value = true pausemodal.value = true
pauseLoading.value = false pauseLoading.value = false
pauseisedbtn.value = false pauseisedbtn.value = false
@ -744,7 +764,7 @@ function pauseSubmit() {
onMounted(() => { onMounted(() => {
getlist() getlist()
workload() //workload()
}) })
</script> </script>

View File

@ -15,9 +15,7 @@
<n-form-item-gi :span="6" label="工序名称"> <n-form-item-gi :span="6" 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" label="工人名称">
<n-input v-model:value="searchForm.stringUserName" placeholder="请输入工人名称" clearable />
</n-form-item-gi>
<!-- <n-form-item-gi :span="6" label="数里"> <!-- <n-form-item-gi :span="6" label="数里">
<n-input v-model:value="searchForm.processId" placeholder="请输入数里" clearable /> <n-input v-model:value="searchForm.processId" placeholder="请输入数里" clearable />
</n-form-item-gi> --> </n-form-item-gi> -->
@ -112,109 +110,45 @@
</div> </div>
</n-card> </n-card>
<!-- 新增/编辑弹窗 --> <!--暂停恢复弹框-->
<n-modal <n-modal
v-model:show="editmodal" v-model:show="pausemodal"
title="编辑派工" title="报检"
preset="card"
style="width: 800px"
:mask-closable="false"
>
<n-form
ref="formRef"
:model="formData"
:rules="rules"
label-placement="left"
label-width="80"
class="modal-form"
>
<n-grid :cols="2" :x-gap="16">
<!-- <n-gi>
<n-form-item label="工序编号" path="processName">
<n-input v-model:value="formData.processName" placeholder="请输入用户名" :disabled="!!formData.id" />
</n-form-item>
</n-gi> -->
<n-gi>
<n-form-item label="工序名称" path="processName">
<n-input v-model:value="formData.processName" placeholder="请输入用户名" />
</n-form-item>
</n-gi>
<n-gi>
<n-form-item label="工人名称" path="stringUserName">
<n-input v-model:value="formData.stringUserName" placeholder="请输入用户名" />
</n-form-item>
</n-gi>
<n-gi>
<n-form-item label="数里" path="quantity">
<n-input v-model:value="formData.quantity" placeholder="请输入用户名" />
</n-form-item>
</n-gi>
<n-gi>
<n-form-item label="是否返工" path="rework">
<n-input v-model:value="formData.rework" placeholder="请输入用户名" />
</n-form-item>
</n-gi>
<!-- <n-gi>
<n-form-item label="返工次数" path="username">
<n-input v-model:value="formData.username" placeholder="请输入用户名" :disabled="!!formData.id" />
</n-form-item>
</n-gi> -->
<n-gi>
<n-form-item label="完成数里" path="completedQuantity">
<n-input v-model:value="formData.completedQuantity" placeholder="请输入用户名" :disabled="!!formData.id" />
</n-form-item>
</n-gi>
</n-grid>
</n-form>
<template #footer>
<n-space justify="end">
<n-button @click="editmodal = false">取消</n-button>
<n-button
type="primary"
:loading="submitLoading"
@click="handleSubmit"
:disabled="disedbtn"
>保存</n-button>
</n-space>
</template>
</n-modal>
<!--改派弹框-->
<n-modal
v-model:show="reassignmodal"
title="改派"
preset="card" preset="card"
style="width: 400px" style="width: 400px"
:mask-closable="false" :mask-closable="false"
> >
<n-form <n-form
ref="reassformRef" ref="pauseformRef"
:model="reassform" :model="pauseform"
:rules="reassrules" :rules="pauserules"
label-placement="top" label-placement="top"
label-width="80" label-width="80"
class="modal-form"
> >
<n-form-item label="工人名称" path=""> <n-form-item label="工序编号">
<n-input v-model:value="reassform.userid" placeholder="请选择员工" /> <n-input v-model:value="gxobg.id" disabled />
</n-form-item> </n-form-item>
<n-form-item label="改派原因" path="reason"> <n-form-item label="工序名称">
<n-input type="textarea" v-model:value="reassform.reason" placeholder="请输入改派原因" /> <n-input v-model:value="gxobg.name" disabled />
</n-form-item>
<n-form-item label="报检数量" path="qcNum">
<n-input v-model:value="pauseform.qcNum" placeholder="请输入报检数量" />
</n-form-item> </n-form-item>
</n-form> </n-form>
<template #footer> <template #footer>
<n-space justify="end"> <n-space justify="end">
<n-button @click="reassignmodal = false">取消</n-button> <n-button @click="pausemodal = false">取消</n-button>
<n-button <n-button
type="primary" type="primary"
:loading="reassLoading" :loading="pauseLoading"
@click="reassSubmit" @click="pauseSubmit"
:disabled="reassdisedbtn" :disabled="pauseisedbtn"
>保存</n-button> >保存</n-button>
</n-space> </n-space>
</template> </template>
</n-modal> </n-modal>
</div> </div>
</template> </template>
@ -224,7 +158,8 @@ import {
ref, ref,
reactive, reactive,
h, h,
onMounted, onMounted,
watch,
} from 'vue' } from 'vue'
@ -234,11 +169,11 @@ import {
NSpace, NSpace,
NPagination, NPagination,
NGrid, NGrid,
NGi, // NGi,
NTag, NTag,
useMessage, useMessage,
//useDialog, //useDialog,
type FormInst, //type FormInst,
} from 'naive-ui' } from 'naive-ui'
import { import {
@ -250,9 +185,7 @@ import { useUserStore } from '@/stores/user'
import { import {
mytasks, mytasks,
editdiswor, inspectio
transfer,
pauseresume
} from '@/api/production' } from '@/api/production'
//const dialog = useDialog() //const dialog = useDialog()
@ -269,9 +202,8 @@ const hasPermission = (permission: string) => userStore.hasPermission(permission
const searchForm = reactive({ const searchForm = reactive({
page: 1, page: 1,
pageSize: 20, pageSize: 20,
// processId:'', processId:'',
// processName:'', processName:'',
// stringUserName:''
}) })
@ -385,7 +317,7 @@ const columns = [
}, },
{ {
align:'center', align:'center',
title: '质检打回数', title: '质检打回数',
key: 'qualityReturnNum', key: 'qualityReturnNum',
minWidth: 150 minWidth: 150
}, },
@ -444,79 +376,30 @@ const columns = [
align:'center', align:'center',
title: '操作', title: '操作',
key: 'actions', key: 'actions',
width: 200, width: 100,
fixed: 'right', fixed: 'right',
render(row:any) { render(row:any) {
const buttons:any = [ const buttons:any = []
// h(NButton, {
// size: 'small',
// type:'warning',
// ghost:true,
// onClick: () => handleEdit(row) },
// //{ default: () => [h(NIcon, null, { default: () => h(CreateOutline) }), ' ' ]}
// { default: () => ''}
// )
]
// if(hasPermission('biz:assingWork:edit')){ if(hasPermission('biz:assingWork:edit')){
// buttons.push(h(NButton, { buttons.push(h(NButton, {
// size: 'small', size: 'small',
// type:'primary', type:'primary',
// ghost:true, ghost:true,
// onClick: () => { handleEdit(row) } }, onClick: () => { handlpause(row) } },
// //{ default: () => [h(NIcon, null, { default: () => h(CreateOutline) }), ' ' ]} //{ default: () => [h(NIcon, null, { default: () => h(CreateOutline) }), ' ' ]}
// { default: () => ''} { default: () => '报检'}
// )) ))
// } }
// if(hasPermission('biz:assingWork:transfer')){
// buttons.push(h(NButton, {
// size: 'small',
// type:'success',
// ghost:true,
// onClick: () => { handlreass(row) } },
// { default: () => ''}
// ))
// }
// if(hasPermission('biz:assingWork:pauseResume')){
// buttons.push(h(NButton, {
// size: 'small',
// type:'warning',
// ghost:true,
// onClick:()=>{ handlpause(row) }
// },
// { default: () => ''}
// ))
// }
// buttons.push(
// )
return buttons.length > 0 ? h(NSpace, {justify:'center'}, { default: () => buttons }) : '-' return buttons.length > 0 ? h(NSpace, {justify:'center'}, { default: () => buttons }) : '-'
} }
} }
] ]
//
const editmodal = ref(false)
const formRef = ref<FormInst | null>(null)
const submitLoading = ref(false)
const formData = reactive<any>({
id:'',
processName:'', //
userId:'', //id
stringUserName:'', //
quantity:'', //
rework:'', //
reworkNum:'', //
completedQuantity:'', //
})
const rules = {
processName: [{ required: true, message: '请输工序名称', trigger: 'blur' }],
quantity: [{ required: true, message: '请输入数里', trigger: 'blur' }]
}
// //
function search() { function search() {
@ -530,7 +413,6 @@ function search() {
function reset() { function reset() {
searchForm.processId ='' searchForm.processId =''
searchForm.processName = '' searchForm.processName = ''
searchForm.stringUserName = ''
} }
// //
@ -558,117 +440,46 @@ function handlePageSizeChange(pageSize: number) {
} }
// let gxobg = reactive<any>({})
let disedbtn = ref(false)
function handleEdit(n:any) {
editmodal.value = true
submitLoading.value = false
disedbtn.value = false
formRef.value?.restoreValidation()
formData.id = n.id
formData.processName = n.processName
// formData.userId = '' //id
// formData.stringUserName = '' //
// formData.quantity = '' //
// formData.rework = '' //
// formData.reworkNum = '' //
// formData.completedQuantity = '' //
}
function handleSubmit() {
formRef.value?.validate(v => {
if(!v){
submitLoading.value = true
disedbtn.value = true
editdiswor(formData).then(() => {
message.success('保存成功!')
setTimeout(()=> {
editmodal.value = false
submitLoading.value = false
disedbtn.value = false
getlist()
},1000)
}).catch(() => {
disedbtn.value = false
submitLoading.value = false
})
}
})
}
//
let reassignmodal = ref(false)
const reassformRef = ref()
let reassform = reactive<any>({
// userId:'', //id
// stringUserName:'', //
id:'', //id
reason:'', //
userid:456 //Id
})
const reassrules = {
userid: [{ required: true, message: '请选择员工', trigger: 'blur' }]
}
let reassLoading = ref(false)
let reassdisedbtn = ref(false)
function handlreass(n:any) {
reassignmodal.value = true
reassLoading.value = false
reassdisedbtn.value = false
reassformRef.value?.restoreValidation()
reassform.id = n.id
reassform.reason = ''
reassform.userid = 456
}
function reassSubmit() {
reassformRef.value?.validate((v:any) => {
if(!v){
reassLoading.value = true
reassdisedbtn.value = true
transfer(reassform).then(() => {
message.success('操作成功!')
setTimeout(()=> {
reassignmodal.value = false
reassLoading.value = false
reassdisedbtn.value = false
getlist()
},1000)
}).catch(() => {
reassdisedbtn.value = false
reassLoading.value = false
})
}
})
}
///
//
let pausemodal = ref(false) let pausemodal = ref(false)
let pauseform = reactive<any>({ let pauseform = reactive<any>({
id:'', id:'',
status:'', //012 qcNum:''
reason:'' //
}) })
const pauseformRef = ref() const pauseformRef = ref()
const pauserules = {
qcNum: [
{ required: true, message: '请输报检数量', trigger: 'blur' },
{
validator(value: number) {
return value > pauseform.qcNum
},
trigger: ['blur'],
message: `报检数量最大为${pauseform.qcNum}`
}
]
}
watch(()=>pauseform.qcNum,v => {
pauseform.qcNum = v.replace(/[^\d]/g,'')
})
let pauseLoading = ref(false) let pauseLoading = ref(false)
let pauseisedbtn = ref(false) let pauseisedbtn = ref(false)
function handlpause(n:any) { function handlpause(n:any) {
gxobg.id = n.id
gxobg.name = n.name
pausemodal.value = true pausemodal.value = true
pauseLoading.value = false pauseLoading.value = false
pauseisedbtn.value = false pauseisedbtn.value = false
pauseformRef.value?.restoreValidation() pauseformRef.value?.restoreValidation()
pauseform.id = n.id pauseform.id = n.id
pauseform.reason = '' pauseform.qcNum = `${n.quantity}`
pauseform.status = n.staus
} }
@ -677,7 +488,7 @@ function pauseSubmit() {
if(!v){ if(!v){
pauseLoading.value = true pauseLoading.value = true
pauseisedbtn.value = true pauseisedbtn.value = true
pauseresume(pauseform).then(() => { inspectio(Object.assign({},pauseform,{qcNum:pauseform.qcNum*1})).then(() => {
message.success('操作成功!') message.success('操作成功!')
setTimeout(()=> { setTimeout(()=> {
pausemodal.value = false pausemodal.value = false