siontion 4 months ago
commit 09cf23465d

@ -70,10 +70,10 @@ export const getTaskDispatchDetailPage = async (params) => {
export const SaveSubmissionWorkOrderDetails = async (data: TaskDispatchVO) => { export const SaveSubmissionWorkOrderDetails = async (data: TaskDispatchVO) => {
return await request.post({ url: `/biz/task-dispatch/update-taskdispach-detail-batch`, data }) return await request.post({ url: `/biz/task-dispatch/update-taskdispach-detail-batch`, data })
} }
//==================== ②批量取消派工单明细 /biz/task-dispatch/cancel-taskdispach-detail-batch //==================== ②批量取消派工单明细
export const CancellationWorkOrderDetails = async (data: TaskDispatchVO) => { export const CancellationWorkOrderDetails = async (data: TaskDispatchVO) => {
return await request.post({ url: `/biz/task-dispatch/update-taskdispach-detail-batch`, data }) return await request.post({ url: `/biz/task-dispatch/cancel-taskdispach-detail-batch`, data })
} }
// 请求参数结构参照:{'dispatchIds':[派工单id1,派工单id2,...],'active':'1','dispatchStatus':2}

@ -1,5 +1,5 @@
<template> <template>
<Dialog v-model="dialogVisible" :title="dialogTitle" style="width:1200px"> <Dialog v-model="dialogVisible" :title="dialogTitle" style="width: 1200px">
<!-- 表格类信息 --> <!-- 表格类信息 -->
<el-card class="hl-card-info"> <el-card class="hl-card-info">
<!-- <template #header> <!-- <template #header>
@ -12,77 +12,176 @@
</el-col> </el-col>
<el-col> <el-col>
<el-card class="hl-incard"> <el-card class="hl-incard">
<el-form ref="subFormRef" :model="formData.taskDispatchDetails" :rules="subFormRules" v-loading="subFormLoading" label-width="0"> <el-form
ref="subFormRef"
:model="formData.taskDispatchDetails"
:rules="subFormRules"
v-loading="subFormLoading"
label-width="0"
>
<el-table :data="formData.taskDispatchDetails" class="hl-table"> <el-table :data="formData.taskDispatchDetails" class="hl-table">
<el-table-column fixed label="序号" align="center" type="index" width="80" /> <el-table-column fixed label="序号" align="center" type="index" width="80" />
<el-table-column fixed label="工序名称" align="center" prop="procedureId" width="140"> <el-table-column
fixed
label="工序名称"
align="center"
prop="procedureId"
width="140"
>
<template #header> <span class="hl-table_header">*</span>工序名称</template> <template #header> <span class="hl-table_header">*</span>工序名称</template>
<template #default="{ row, $index }"> <template #default="{ row, $index }">
<el-form-item :prop="`${$index}.procedureId`" :rules="subFormRules.procedureId" class="mb-0px!"> <el-form-item
<ProcedureSelect :disabled="detailDisabled || row.procedureStatus != 0" v-model="row.procedureId" @update:newValue="(val) => { handleSelectedProcedure(row, val);}" /> :prop="`${$index}.procedureId`"
:rules="subFormRules.procedureId"
class="mb-0px!"
>
<ProcedureSelect
:disabled="detailDisabled || row.procedureStatus != 0"
v-model="row.procedureId"
@update:newValue="
(val) => {
handleSelectedProcedure(row, val)
}
"
/>
</el-form-item> </el-form-item>
</template> </template>
</el-table-column> </el-table-column>
<el-table-column label="工序编号" prop="procedureCode" width="120" /> <el-table-column label="工序编号" prop="procedureCode" width="120" />
<el-table-column label="是否需要报工" prop="isReport" width="120"> <el-table-column label="是否需要报工" prop="isReport" width="120">
<template #default="scope"> <template #default="scope">
{{getDictLabel(DICT_TYPE.BIZ_COMMON_IS_OR_NOT, scope.row.isReport)}} {{ getDictLabel(DICT_TYPE.BIZ_COMMON_IS_OR_NOT, scope.row.isReport) }}
</template> </template>
</el-table-column> </el-table-column>
<el-table-column label="顺序号" align="center" prop="sort" width="140"> <el-table-column label="顺序号" align="center" prop="sort" width="140">
<template #default="{ row, $index }"> <template #default="{ row, $index }">
<el-form-item :prop="`${$index}.sort`" :rules="subFormRules.sort" class="mb-0px!"> <el-form-item
<el-input-number min="0" :precision="0" class="!w-240px" :disabled="detailDisabled || row.procedureStatus != 0" v-model="row.sort" placeholder="顺序号" /> :prop="`${$index}.sort`"
:rules="subFormRules.sort"
class="mb-0px!"
>
<el-input-number
min="0"
:precision="0"
class="!w-240px"
:disabled="detailDisabled || row.procedureStatus != 0"
v-model="row.sort"
placeholder="顺序号"
/>
</el-form-item> </el-form-item>
</template> </template>
</el-table-column> </el-table-column>
<el-table-column label="负责人" align="center" prop="owner" min-width="240"> <el-table-column label="负责人" align="center" prop="owner" min-width="240">
<template #header> <span class="hl-table_header">*</span>负责人</template> <template #header> <span class="hl-table_header">*</span>负责人</template>
<template #default="{ row, $index }"> <template #default="{ row, $index }">
<el-form-item :prop="`${$index}.owner`" :rules="subFormRules.owners" class="mb-0px!"> <el-form-item
:prop="`${$index}.owner`"
:rules="subFormRules.owners"
class="mb-0px!"
>
<!-- <UserSelect v-model="row.owner" :disabled="detailDisabled || row.procedureStatus != 0" @update:newValue="handleSelectedUser($index,$event)" /> --> <!-- <UserSelect v-model="row.owner" :disabled="detailDisabled || row.procedureStatus != 0" @update:newValue="handleSelectedUser($index,$event)" /> -->
<el-input class="!w-265px" placeholder="负责人" v-model="row.ownerNames" readonly @click.prevent="handleClick($index)"> <el-input
<template #append><el-button :icon="Search" @click="openuserDialog($index)" /></template> class="!w-265px"
placeholder="负责人"
v-model="row.ownerNames"
readonly
@click.prevent="handleClick($index)"
>
<template #append
><el-button :icon="Search" @click="openuserDialog($index)"
/></template>
</el-input> </el-input>
</el-form-item> </el-form-item>
</template> </template>
</el-table-column> </el-table-column>
<el-table-column label="生产设备" min-width="180" align="center"> <el-table-column label="生产设备" min-width="180" align="center">
<template #default="{ row, $index }"> <template #default="{ row, $index }">
<el-form-item :prop="`${$index}.deviceModel`" :rules="subFormRules.deviceModel" class="mb-0px!"> <el-form-item
<EquipmentSelect v-model="row.deviceModel" @update:newValue="handleSelectedequip($index, $event)" :anotherProp="formData.workshopId" :disabled="detailDisabled || row.procedureStatus != 0" /> :prop="`${$index}.deviceModel`"
:rules="subFormRules.deviceModel"
class="mb-0px!"
>
<EquipmentSelect
v-model="row.deviceModel"
@update:newValue="handleSelectedequip($index, $event)"
:anotherProp="formData.workshopId"
:disabled="detailDisabled || row.procedureStatus != 0"
/>
</el-form-item> </el-form-item>
</template> </template>
</el-table-column> </el-table-column>
<el-table-column label="预计开始日期" min-width="180"> <el-table-column label="预计开始日期" min-width="180">
<template #header> <span class="hl-table_header">*</span>预计开始日期</template> <template #header> <span class="hl-table_header">*</span>预计开始日期</template>
<template #default="{ row, $index }"> <template #default="{ row, $index }">
<el-form-item :prop="`${$index}.startTime`" :rules="subFormRules.startTime" class="mb-0px!"> <el-form-item
<el-date-picker :disabled="detailDisabled" v-model="row.startTime" type="date" value-format="x" placeholder="选择预计开始日期" /> :prop="`${$index}.startTime`"
:rules="subFormRules.startTime"
class="mb-0px!"
>
<el-date-picker
:disabled="detailDisabled"
v-model="row.startTime"
type="date"
value-format="x"
placeholder="选择预计开始日期"
/>
</el-form-item> </el-form-item>
</template> </template>
</el-table-column> </el-table-column>
<el-table-column label="预计结束日期" min-width="180"> <el-table-column label="预计结束日期" min-width="180">
<template #header> <span class="hl-table_header">*</span>预计结束日期</template> <template #header> <span class="hl-table_header">*</span>预计结束日期</template>
<template #default="{ row, $index }"> <template #default="{ row, $index }">
<el-form-item :prop="`${$index}.endTime`" :rules="subFormRules.endTime" class="mb-0px!"> <el-form-item
<el-date-picker :disabled="detailDisabled" v-model="row.endTime" type="date" value-format="x" placeholder="选择预计结束日期" /> :prop="`${$index}.endTime`"
:rules="subFormRules.endTime"
class="mb-0px!"
>
<el-date-picker
:disabled="detailDisabled"
v-model="row.endTime"
type="date"
value-format="x"
placeholder="选择预计结束日期"
/>
</el-form-item> </el-form-item>
</template> </template>
</el-table-column> </el-table-column>
<el-table-column label="预计工时" align="center" prop="workTime" width="180"> <el-table-column label="预计工时" align="center" prop="workTime" width="180">
<template #header> <span class="hl-table_header">*</span>预计工时</template> <template #header> <span class="hl-table_header">*</span>预计工时</template>
<template #default="{ row, $index }"> <template #default="{ row, $index }">
<el-form-item :prop="`${$index}.workTime`" :rules="subFormRules.workTime" class="mb-0px!"> <el-form-item
<el-input-number min="0" :precision="2" class="!w-240px" :disabled="detailDisabled" v-model="row.workTime" placeholder="请输入预计工时" /> :prop="`${$index}.workTime`"
:rules="subFormRules.workTime"
class="mb-0px!"
>
<el-input-number
min="0"
:precision="2"
class="!w-240px"
:disabled="detailDisabled"
v-model="row.workTime"
placeholder="请输入预计工时"
/>
</el-form-item> </el-form-item>
</template> </template>
</el-table-column> </el-table-column>
<el-table-column label="派工数量" align="center" prop="amount" width="180"> <el-table-column label="派工数量" align="center" prop="amount" width="180">
<template #header> <span class="hl-table_header">*</span>派工数量</template> <template #header> <span class="hl-table_header">*</span>派工数量</template>
<template #default="{ row, $index }"> <template #default="{ row, $index }">
<el-form-item :prop="`${$index}.amount`" :rules="subFormRules.amount" class="mb-0px!"> <el-form-item
<el-input-number min="0" :max="formData.amount" :precision="0" class="!w-240px" :disabled="detailDisabled" v-model="row.amount" placeholder="请输入派工数量" /> :prop="`${$index}.amount`"
:rules="subFormRules.amount"
class="mb-0px!"
>
<el-input-number
min="0"
:max="formData.amount"
:precision="0"
class="!w-240px"
:disabled="detailDisabled"
v-model="row.amount"
placeholder="请输入派工数量"
/>
</el-form-item> </el-form-item>
</template> </template>
</el-table-column> </el-table-column>
@ -94,13 +193,23 @@
<el-table-column label="工序要点" prop="summary" min-width="160"> <el-table-column label="工序要点" prop="summary" min-width="160">
<template #default="{ row, $index }"> <template #default="{ row, $index }">
<el-form-item :prop="`${$index}.summary`" class="mb-0px!"> <el-form-item :prop="`${$index}.summary`" class="mb-0px!">
<el-input :disabled="detailDisabled || row.procedureStatus != 0" v-model="row.summary" placeholder="请输入工序要点" /> <el-input
:disabled="detailDisabled || row.procedureStatus != 0"
v-model="row.summary"
placeholder="请输入工序要点"
/>
</el-form-item> </el-form-item>
</template> </template>
</el-table-column> </el-table-column>
<el-table-column fixed="right" label="操作" align="center" min-width="100"> <el-table-column fixed="right" label="操作" align="center" min-width="100">
<template #default="scope"> <template #default="scope">
<el-button v-if="'detail' != active && scope.row.procedureStatus == 0" link type="danger" size="small" @click.prevent="onDeleteItem(scope.$index)"> <el-button
v-if="'detail' != active && scope.row.procedureStatus == 0"
link
type="danger"
size="small"
@click.prevent="onDeleteItem(scope.$index)"
>
删除 删除
</el-button> </el-button>
</template> </template>
@ -118,7 +227,6 @@
</template> </template>
</Dialog> </Dialog>
<UserDialog ref="userDialogref" @success="handleuserClick" /> <UserDialog ref="userDialogref" @success="handleuserClick" />
</template> </template>
<script lang="ts" setup> <script lang="ts" setup>
import { getIntDictOptions, getStrDictOptions, DICT_TYPE, getDictLabel } from '@/utils/dict' import { getIntDictOptions, getStrDictOptions, DICT_TYPE, getDictLabel } from '@/utils/dict'
@ -141,13 +249,13 @@ const dialogVisible = ref(false) // 弹窗的是否展示
const dialogTitle = ref('') // const dialogTitle = ref('') //
const formLoading = ref(false) // 12 const formLoading = ref(false) // 12
const formData = ref({ const formData = ref({
dispatchIds:[], dispatchIds: [],
active:undefined, active: undefined,
dispatchStatus:1, dispatchStatus: 1,
taskDispatchDetails:[ taskDispatchDetails: [
// {'procedureId':id,'sort':1,'owner':id,'deviceModel':id,'workTime':2.5,'startTime':'2024-06-12','endTime':'2024-06-12','amount':100,'summary':'','procedure_status':0,'status':1} // {'procedureId':id,'sort':1,'owner':id,'deviceModel':id,'workTime':2.5,'startTime':'2024-06-12','endTime':'2024-06-12','amount':100,'summary':'','procedure_status':0,'status':1}
] ]
}) })
const subFormRef = ref() // Ref const subFormRef = ref() // Ref
const deptTree = ref() // const deptTree = ref() //
const subFormRules = reactive({ const subFormRules = reactive({
@ -159,13 +267,12 @@ const subFormRules = reactive({
endTime: [{ required: true, message: '预计结束日期不能为空', trigger: 'blur' }] endTime: [{ required: true, message: '预计结束日期不能为空', trigger: 'blur' }]
}) })
/** 打开弹窗 */ /** 打开弹窗 */
const open = async (id: []) => { const open = async (id: []) => {
resetForm() resetForm()
console.log(id); console.log(id)
formData.value.dispatchIds=id formData.value.dispatchIds = id
dialogVisible.value = true dialogVisible.value = true
dialogTitle.value = t('生产派工') dialogTitle.value = t('生产派工')
} }
@ -175,10 +282,10 @@ defineExpose({ open }) // 提供 open 方法,用于打开弹窗
const emit = defineEmits(['success']) // success const emit = defineEmits(['success']) // success
const submitForm = async (operate) => { const submitForm = async (operate) => {
formData.value.active = operate formData.value.active = operate
if(operate=='SAVE'){ if (operate == 'SAVE') {
formData.value.dispatchStatus=1 formData.value.dispatchStatus = 1
}else if(operate=='SUBMIT'){ } else if (operate == 'SUBMIT') {
formData.value.dispatchStatus=2 formData.value.dispatchStatus = 2
} }
// //
await subFormRef.value.validate() await subFormRef.value.validate()
@ -200,10 +307,10 @@ const submitForm = async (operate) => {
/** 重置表单 */ /** 重置表单 */
const resetForm = () => { const resetForm = () => {
formData.value = { formData.value = {
dispatchIds:[], dispatchIds: [],
active:undefined, active: undefined,
dispatchStatus:1, dispatchStatus: 1,
taskDispatchDetails:[] taskDispatchDetails: []
} }
subFormRef.value?.resetFields() subFormRef.value?.resetFields()
} }
@ -219,36 +326,31 @@ const onAddItem = () => {
amount: undefined, amount: undefined,
summary: undefined, summary: undefined,
status: 1, status: 1,
procedureStatus: 0, procedureStatus: 0
} }
formData.value.taskDispatchDetails.push(row) formData.value.taskDispatchDetails.push(row)
} }
/** 删除子项操作 */ /** 删除子项操作 */
const onDeleteItem = async (index) => { const onDeleteItem = async (index) => {
formData.value.taskDispatchDetails.splice(index, 1) formData.value.taskDispatchDetails.splice(index, 1)
} }
// //
const handleClick = (index) => { const handleClick = (index) => {
openuserDialog(index) openuserDialog(index)
} }
const userDialogref=ref() const userDialogref = ref()
const openuserDialog = (index) => { const openuserDialog = (index) => {
userDialogref.value.open(index) userDialogref.value.open(index)
} }
const ownerIds =ref([]) const ownerIds = ref([])
const ownerNames =ref([]) const ownerNames = ref([])
const handleuserClick=(val,index)=>{ const handleuserClick = (val, index) => {
val?.filter(item=>{
ownerIds.value.push(item.id)
ownerNames.value.push(item.nickname)
})
formData.value.taskDispatchDetails[index].owners=ownerIds?.value
formData.value.taskDispatchDetails[index].ownerNames=ownerNames?.value
// console.log(formData.value.taskDispatchDetails[index].owners); // reactive
// console.log(formData.value.taskDispatchDetails[index].ownerNames); formData.value.taskDispatchDetails[index].owners = val.map(item => item.id);
formData.value.taskDispatchDetails[index].ownerNames = val.map(item => item.nickname);
} }

@ -147,10 +147,10 @@
<template #header> <span class="hl-table_header">*</span>负责人</template> <template #header> <span class="hl-table_header">*</span>负责人</template>
<template #default="{ row, $index }"> <template #default="{ row, $index }">
<el-form-item :prop="`${$index}.owner`" :rules="subFormRules.owners" class="mb-0px!"> <el-form-item :prop="`${$index}.owner`" :rules="subFormRules.owners" class="mb-0px!">
<UserSelect v-model="row.owner" :disabled="detailDisabled || row.procedureStatus != 0" @update:newValue="handleSelectedUser($index,$event)" /> <!-- <UserSelect v-model="row.owner" :disabled="detailDisabled || row.procedureStatus != 0" @update:newValue="handleSelectedUser($index,$event)" /> -->
<!-- <el-input class="!w-265px" placeholder="负责人" v-model="row.ownerNames" readonly @click.prevent="handleClick($index)"> <el-input class="!w-265px" placeholder="负责人" v-model="row.ownerNames" readonly @click.prevent="handleClick($index)">
<template #append><el-button :icon="Search" @click="openuserDialog($index)" /></template> <template #append><el-button :icon="Search" @click="openuserDialog($index)" /></template>
</el-input> --> </el-input>
</el-form-item> </el-form-item>
</template> </template>
</el-table-column> </el-table-column>
@ -470,12 +470,9 @@ const openuserDialog = (index) => {
const ownerIds =ref([]) const ownerIds =ref([])
const ownerNames =ref([]) const ownerNames =ref([])
const handleuserClick=(val,index)=>{ const handleuserClick=(val,index)=>{
val?.filter(item=>{ // reactive
ownerIds.value.push(item.id) formData.value.taskDispatchDetails[index].owners = val.map(item => item.id);
ownerNames.value.push(item.nickname) formData.value.taskDispatchDetails[index].ownerNames = val.map(item => item.nickname);
})
formData.value.taskDispatchDetails[index].owners=ownerIds?.value
formData.value.taskDispatchDetails[index].ownerNames=ownerNames?.value
// console.log(formData.value.taskDispatchDetails[index].owners); // console.log(formData.value.taskDispatchDetails[index].owners);
// console.log(formData.value.taskDispatchDetails[index].ownerNames); // console.log(formData.value.taskDispatchDetails[index].ownerNames);

@ -94,14 +94,14 @@
/> />
</el-select> </el-select>
</el-form-item> </el-form-item>
<el-form-item> <el-form-item style="margin-left: 20px;">
<el-button @click="handleQuery" type="primary"> <el-button @click="handleQuery" type="primary">
<Icon icon="ep:search" class="mr-5px" /> 查询 <Icon icon="ep:search" class="mr-5px" /> 查询
</el-button> </el-button>
<el-button @click="resetQuery"> <el-button @click="resetQuery">
<Icon icon="ep:refresh" class="mr-5px" /> 重置 <Icon icon="ep:refresh" class="mr-5px" /> 重置
</el-button> </el-button>
<el-button @click="openDispatching"> </el-button> <el-button @click="openDispatching" type="primary"> 生产派工 </el-button>
<el-button @click="outDispatching"> </el-button> <el-button @click="outDispatching"> </el-button>
</el-form-item> </el-form-item>
</el-form> </el-form>
@ -137,7 +137,7 @@
prop="projectSubName" prop="projectSubName"
min-width="240" min-width="240"
/> />
<el-table-column label="规格型号" fixed align="center" prop="spec" min-width="160" /> <el-table-column label="规格型号" fixed align="center" prop="spec" min-width="140" />
<el-table-column label="数量" fixed align="center" prop="amount" min-width="90" /> <el-table-column label="数量" fixed align="center" prop="amount" min-width="90" />
<el-table-column label="单位" align="center" prop="unit" min-width="80"> <el-table-column label="单位" align="center" prop="unit" min-width="80">
<template #default="scope"> <template #default="scope">
@ -346,14 +346,12 @@ const outDispatching = () => {
formData.value.dispatchIds.push(item.id) formData.value.dispatchIds.push(item.id)
}) })
const data = formData.value as unknown as TaskDispatchApi.TaskDispatchVO const data = formData.value as unknown as TaskDispatchApi.TaskDispatchVO
console.log(data)
await TaskDispatchApi.CancellationWorkOrderDetails(data) await TaskDispatchApi.CancellationWorkOrderDetails(data)
ElMessage({ ElMessage({
type: 'success', type: 'success',
message: 'Delete completed' message: 'Delete completed'
}) })
getList()
}) })
.catch(() => { .catch(() => {
// ElMessage({ // ElMessage({

@ -125,7 +125,6 @@ const multipleTable: any = ref<InstanceType<typeof ElTable>>()
const multipleSelection: any = ref([]) const multipleSelection: any = ref([])
const handleSelectionChange = (val: []) => { const handleSelectionChange = (val: []) => {
multipleSelection.value = val multipleSelection.value = val
} }
@ -145,10 +144,10 @@ const clickRow = (row: any) => {
const emit = defineEmits(['success']) // success const emit = defineEmits(['success']) // success
const submitForm = () => { const submitForm = () => {
// if (!multipleSelection.value || multipleSelection.value.length <= 0) { if (!multipleSelection.value || multipleSelection.value.length <= 0) {
// message.warning(t('common.selectText')) message.warning(t('common.selectText'))
// return return
// } }
dialogVisible.value = false dialogVisible.value = false
// //
// console.log(dialogTypeValue.value) // console.log(dialogTypeValue.value)
@ -163,6 +162,7 @@ const userInit = ref()
const faindex =ref() const faindex =ref()
/** 打开弹窗 */ /** 打开弹窗 */
const open = async (index) => { const open = async (index) => {
multipleSelection.value=[]
faindex.value=index faindex.value=index
dialogVisible.value = true dialogVisible.value = true
queryParams.userNickName = undefined queryParams.userNickName = undefined

Loading…
Cancel
Save