数量相等自动生产完成 app及pc 功能

dev
qiuhongwu 4 months ago
parent 275f7f86f1
commit bed048e3cc

@ -54,7 +54,7 @@ export const gettaskreport = async (params) => {
return await request.get({ url: `/biz/task-report/page`, params })
}
// 获得派工工序报工分页接口
// 新增派工工序报工分页接口
export const createtaskreport = async (data) => {
return await request.post({ url: `/biz/task-report/create-batch`, data })
}

@ -1,5 +1,5 @@
<template>
<Dialog :title="dialogTitle" v-model="dialogVisible" width="1000px">
<Dialog :title="dialogTitle" v-model="dialogVisible" width="900px">
<el-form
ref="formRef"
:model="formData"
@ -45,9 +45,9 @@
label-width="0"
>
<el-table :data="list" class="hl-table">
<el-table-column fixed label="序号" align="center" type="index" width="70" />
<el-table-column fixed label="序号" align="center" type="index" min-width="70" />
<el-table-column label="开始生产时间" align="center" min-width="170">
<el-table-column label="开始生产时间" align="center" width="160">
<template #header> <span style="color: red">*</span>开始生产时间 </template>
<template #default="{ row }">
@ -63,7 +63,7 @@
</el-form-item>
</template>
</el-table-column>
<el-table-column label="结束生产时间" align="center" min-width="165">
<el-table-column label="结束生产时间" align="center" width="160">
<template #header> <span style="color: red">*</span>结束生产时间 </template>
<template #default="{ row }">
@ -79,7 +79,7 @@
</el-form-item>
</template>
</el-table-column>
<el-table-column label="本次报工工时" align="center" prop="workTime" width="160">
<el-table-column label="本次报工工时" align="center" prop="workTime" width="210">
<template #header> <span style="color: red">*</span>本次报工工时 </template>
<template #default="{ row, $index }">
<el-form-item
@ -98,7 +98,7 @@
</el-form-item>
</template>
</el-table-column>
<el-table-column label="本次报工数量" align="center" prop="amount" width="180">
<el-table-column label="本次报工数量" align="center" prop="amount" width="210">
<template #header> <span style="color: red">*</span>本次报工数量 </template>
<template #default="{ row, $index }">
<el-form-item
@ -119,7 +119,7 @@
</template>
</el-table-column>
<el-table-column fixed="right" label="操作" align="center" min-width="220">
<!-- <el-table-column fixed="right" label="操作" align="center" min-width="220">
<template #default="scope">
<el-button
:disabled="scope.row.startTime !== undefined"
@ -140,7 +140,7 @@
结束生产
</el-button>
</template>
</el-table-column>
</el-table-column> -->
</el-table>
</el-form>
</el-card>
@ -150,12 +150,8 @@
<template #footer>
<el-button @click="dialogVisible = false"> </el-button>
<el-button @click="submitForm(1)" type="primary" :disabled="formLoading"
> </el-button
>
<el-button @click="submitForm(2)" type="primary" :disabled="formLoading"
>生产完成</el-button
>
<el-button @click="submitForm(1)" type="primary" :disabled="formLoading"> </el-button>
<el-button @click="submitForms(2)" type="primary" :disabled="formLoading">生产完成</el-button>
</template>
</Dialog>
</template>
@ -166,6 +162,7 @@ import { DICT_TYPE, getIntDictOptions } from '@/utils/dict'
import { getWorkshopPage } from '@/api/biz/workshop'
import { any } from 'vue-types'
import { get } from '@vueuse/core'
const { t } = useI18n() //
const message = useMessage() //
const list = ref([{}]) //
@ -179,7 +176,8 @@ const formData = ref({
totalReportAmount: undefined,
totalWorkTime: undefined,
amount: undefined,
workTime: undefined
workTime: undefined,
overTask: undefined
})
const subFormRules = reactive({
startTime: [{ required: true, message: '开始生产时间不能为空', trigger: 'blur' }],
@ -194,29 +192,55 @@ const queryParams = reactive({
pageSize: 99,
dispatchDetailId: undefined
})
const queryParamsd = reactive({
pageNo: 1,
pageSize: 10,
dispatchCode: undefined,
projectCode: undefined,
materialNameOrCode: undefined,
spec: undefined,
workshopId: undefined,
procedureName: undefined,
ownerName: undefined
})
/** 打开弹窗 */
const open = async (id?: number, val?: any) => {
resetForm()
queryParams.dispatchDetailId = id
// console.log(id, val)
formData.value = val
// formData.value=val
queryParamsd.dispatchCode = val.dispatchCode
queryParamsd.procedureName = val.procedureName
queryParamsd.ownerName = val.ownerName
dialogVisible.value = true
dialogTitle.value = '新增报工'
//
formLoading.value = true
try {
if (id) {
const data = await TaskReportApi.gettaskreport(queryParams)
// console.log(data);
list.value = data.list
total.value = data.total
getDatalist()
}
} finally {
formLoading.value = false
}
}
defineExpose({ open }) // open
const getDatalist = async () => {
//
const datas = await TaskReportApi.gettaskreport(queryParams)
list.value = datas.list
total.value = datas.total
//
const data = await TaskReportApi.getTaskDispatchProcedureDetailPages(queryParamsd)
formData.value = data.list[0]
//
if (formData.value.overTask == 0 && formData.value.amount == formData.value.totalReportAmount) {
submitForms(2)
}
}
/** 提交表单 */
const emit = defineEmits(['success']) // success
@ -224,79 +248,77 @@ const submitForm = async (val) => {
//
await subFormRef.value.validate()
//
if(list.value.length==0){
if (list.value.length == 0) {
message.warning(t('至少有一条报工'))
return
}
const totalAmount = ref(0);
if(list.value.length > 0&&formData.value.overTask==0){
list.value.forEach((item) => {
totalAmount.value += item.amount;
})
totalAmount.value> formData.value.totalReportAmount
message.warning(t('该车间不允许超额报工!'))
return
}
formLoading.value = true
try {
list.value.forEach(item => {
item.procedureStatus=val
item.reportTime=Date.now()
list.value.forEach((item) => {
item.procedureStatus = val
item.reportTime = Date.now()
})
// console.log(list.value);
const data = list.value
await TaskReportApi.createtaskreport(data)
getDatalist()
message.success(t('操作成功'))
} finally {
formLoading.value = false
}
}
const submitForms = async (val) => {
//
await subFormRef.value.validate()
//
if (list.value.length == 0) {
message.warning(t('至少有一条报工'))
return
}
formLoading.value = true
try {
list.value.forEach((item) => {
item.procedureStatus = val
item.reportTime = Date.now()
})
const data = list.value
await TaskReportApi.createtaskreport(data)
message.success(t('生产完成'))
dialogVisible.value = false
//
emit('success')
} finally {
formLoading.value = false
}
}
//
const onAddItem = ref(() => {
const row = {
id:0,
id: 0,
dispatchDetailId: undefined,
procedureStatus: undefined,
startTime: undefined,
endTime: undefined,
startTime: Date.now(),
endTime: Date.now(),
amount: undefined,
workTime: undefined,
owner:undefined,
hasReport:1,
status:1,
reportTime:undefined,
type:'PRODUCTION',
owner: undefined,
hasReport: 1,
status: 1,
reportTime: undefined,
type: 'PRODUCTION'
}
row.dispatchDetailId = formData.value.id
row.owner = formData.value.owner
list.value.push(row)
})
const setStartTime = (index: number) => {
if (index >= 0 && index < list.value.length) {
// yyyy-MM-dd HH:mm
const currentTime = Date.now() // "YYYY-MM-DD HH:mm"
//
list.value[index].startTime = currentTime
}
}
const setEndTime = (index: number) => {
if (index >= 0 && index < list.value.length) {
// yyyy-MM-dd HH:mm
const currentTime = Date.now() // "YYYY-MM-DD HH:mm"
//
list.value[index].endTime = currentTime
}
//
if (list.value[index].startTime) {
//
const timeDiff = list.value[index].endTime - list.value[index].startTime
//
const workHours = timeDiff / (1000 * 60 * 60) //
//
list.value[index].workTime = workHours.toFixed(2) //
} else {
console.warn('startTimeStr 未定义,请确保开始生产时间已设置')
}
}
/** 重置表单 */
const resetForm = () => {
formData.value = {
@ -304,7 +326,8 @@ const resetForm = () => {
totalReportAmount: undefined,
totalWorkTime: undefined,
amount: undefined,
workTime: undefined
workTime: undefined,
overTask: undefined
}
subFormRef.value?.resetFields()
}

@ -62,7 +62,7 @@ const getData = async () => {
formObj.value = data.list[0]
const time = formObj.value.endTime - formObj.value.startTime //
const leave1 = time % (24 * 3600 * 1000) //
workTime.value = Math.floor(leave1 / (3600 * 1000))
// workTime.value = Math.floor(leave1 / (3600 * 1000))
}
historyList.value = data.list
isLoading.value = false
@ -128,6 +128,15 @@ const handleOk = async (active) => {
if (isLoading.value) {
return
}
if (amount.value == '' || workTime.value == '') {
// console.log('');
uni.showToast({
title: '请输入数量和工时',
icon: 'error',
duration: 2000
})
return
}
isLoading.value = true
const params = {
@ -139,7 +148,7 @@ const handleOk = async (active) => {
try {
const data = await postOperateAPI(params)
const datadetail:any =await getTaskDetailAPI(params)
const datadetail: any = await getTaskDetailAPI(params)
isLoading.value = false
// console.log(datadetail.overTask, datadetail.amount,datadetail.totalReportAmount)
if (datadetail.overTask == 0 && datadetail.amount == datadetail.totalReportAmount) {
@ -174,34 +183,42 @@ const handleStart = async () => {
return
}
isLoading.value = true
const params = {
id: detailInfo.value.id,
active: 'START'
}
const data = await postOperateAPI(params)
isLoading.value = false
const url = `/pages/productionReport/productionReport-detail?id=${detailInfo.value.id}`
uni.redirectTo({
url
})
// isLoading.value = false
// const url = `/pages/productionReport/productionReport-detail?id=${detailInfo.value.id}`
// uni.redirectTo({
// url
// })
}
//
//
const handleStop = async () => {
if (isLoading.value) {
return
}
isLoading.value = true
const params = {
id: detailInfo.value?.id,
active: 'END'
if (isShowStart.value) {
const STARTparams = {
id: detailInfo.value.id,
active: 'START'
}
const data = await postOperateAPI(STARTparams)
}
const data = await postOperateAPI(params)
isLoading.value = false
const url = `/pages/productionReport/productionReport-detail?id=${detailInfo.value.id}`
uni.redirectTo({
url
})
popup.value?.open()
// handleStart()
//
setTimeout(async () => {
// isLoading.value = true
const params = {
id: detailInfo.value?.id,
active: 'END'
}
const data = await postOperateAPI(params)
// isLoading.value = false
const url = `/pages/productionReport/productionReport-detail?id=${detailInfo.value.id}`
uni.redirectTo({
url
})
}, 1000)
// popup.value?.open()
}
</script>
<template>
@ -277,8 +294,8 @@ const handleStop = async () => {
</view>
</view>
<view class="action" v-if="detailInfo.procedureStatus !== 2">
<view class="action-item start" v-if="isShowStart" @click="handleStart"></view>
<view class="action-item stop" v-if="isShowEnd" @click="handleStop"></view>
<!-- <view class="action-item start" v-if="isShowStart" @click="handleStart"></view> -->
<view class="action-item stop" @click="handleStop"></view>
</view>
</template>
<view class="loading-text" v-else>..</view>

Loading…
Cancel
Save