|
|
@ -1,5 +1,5 @@
|
|
|
|
<template>
|
|
|
|
<template>
|
|
|
|
<Dialog :title="dialogTitle" v-model="dialogVisible" width="1000px">
|
|
|
|
<Dialog :title="dialogTitle" v-model="dialogVisible" width="900px">
|
|
|
|
<el-form
|
|
|
|
<el-form
|
|
|
|
ref="formRef"
|
|
|
|
ref="formRef"
|
|
|
|
:model="formData"
|
|
|
|
:model="formData"
|
|
|
@ -45,9 +45,9 @@
|
|
|
|
label-width="0"
|
|
|
|
label-width="0"
|
|
|
|
>
|
|
|
|
>
|
|
|
|
<el-table :data="list" class="hl-table">
|
|
|
|
<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 #header> <span style="color: red">*</span>开始生产时间 </template>
|
|
|
|
|
|
|
|
|
|
|
|
<template #default="{ row }">
|
|
|
|
<template #default="{ row }">
|
|
|
@ -63,7 +63,7 @@
|
|
|
|
</el-form-item>
|
|
|
|
</el-form-item>
|
|
|
|
</template>
|
|
|
|
</template>
|
|
|
|
</el-table-column>
|
|
|
|
</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 #header> <span style="color: red">*</span>结束生产时间 </template>
|
|
|
|
|
|
|
|
|
|
|
|
<template #default="{ row }">
|
|
|
|
<template #default="{ row }">
|
|
|
@ -79,7 +79,7 @@
|
|
|
|
</el-form-item>
|
|
|
|
</el-form-item>
|
|
|
|
</template>
|
|
|
|
</template>
|
|
|
|
</el-table-column>
|
|
|
|
</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 #header> <span style="color: red">*</span>本次报工工时 </template>
|
|
|
|
<template #default="{ row, $index }">
|
|
|
|
<template #default="{ row, $index }">
|
|
|
|
<el-form-item
|
|
|
|
<el-form-item
|
|
|
@ -98,7 +98,7 @@
|
|
|
|
</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="210">
|
|
|
|
<template #header> <span style="color: red">*</span>本次报工数量 </template>
|
|
|
|
<template #header> <span style="color: red">*</span>本次报工数量 </template>
|
|
|
|
<template #default="{ row, $index }">
|
|
|
|
<template #default="{ row, $index }">
|
|
|
|
<el-form-item
|
|
|
|
<el-form-item
|
|
|
@ -119,7 +119,7 @@
|
|
|
|
</template>
|
|
|
|
</template>
|
|
|
|
</el-table-column>
|
|
|
|
</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">
|
|
|
|
<template #default="scope">
|
|
|
|
<el-button
|
|
|
|
<el-button
|
|
|
|
:disabled="scope.row.startTime !== undefined"
|
|
|
|
:disabled="scope.row.startTime !== undefined"
|
|
|
@ -140,7 +140,7 @@
|
|
|
|
结束生产
|
|
|
|
结束生产
|
|
|
|
</el-button>
|
|
|
|
</el-button>
|
|
|
|
</template>
|
|
|
|
</template>
|
|
|
|
</el-table-column>
|
|
|
|
</el-table-column> -->
|
|
|
|
</el-table>
|
|
|
|
</el-table>
|
|
|
|
</el-form>
|
|
|
|
</el-form>
|
|
|
|
</el-card>
|
|
|
|
</el-card>
|
|
|
@ -150,12 +150,8 @@
|
|
|
|
|
|
|
|
|
|
|
|
<template #footer>
|
|
|
|
<template #footer>
|
|
|
|
<el-button @click="dialogVisible = false">取 消</el-button>
|
|
|
|
<el-button @click="dialogVisible = false">取 消</el-button>
|
|
|
|
<el-button @click="submitForm(1)" type="primary" :disabled="formLoading"
|
|
|
|
<el-button @click="submitForm(1)" type="primary" :disabled="formLoading">保 存</el-button>
|
|
|
|
>保 存</el-button
|
|
|
|
<el-button @click="submitForms(2)" type="primary" :disabled="formLoading">生产完成</el-button>
|
|
|
|
>
|
|
|
|
|
|
|
|
<el-button @click="submitForm(2)" type="primary" :disabled="formLoading"
|
|
|
|
|
|
|
|
>生产完成</el-button
|
|
|
|
|
|
|
|
>
|
|
|
|
|
|
|
|
</template>
|
|
|
|
</template>
|
|
|
|
</Dialog>
|
|
|
|
</Dialog>
|
|
|
|
</template>
|
|
|
|
</template>
|
|
|
@ -166,6 +162,7 @@ import { DICT_TYPE, getIntDictOptions } from '@/utils/dict'
|
|
|
|
import { getWorkshopPage } from '@/api/biz/workshop'
|
|
|
|
import { getWorkshopPage } from '@/api/biz/workshop'
|
|
|
|
|
|
|
|
|
|
|
|
import { any } from 'vue-types'
|
|
|
|
import { any } from 'vue-types'
|
|
|
|
|
|
|
|
import { get } from '@vueuse/core'
|
|
|
|
const { t } = useI18n() // 国际化
|
|
|
|
const { t } = useI18n() // 国际化
|
|
|
|
const message = useMessage() // 消息弹窗
|
|
|
|
const message = useMessage() // 消息弹窗
|
|
|
|
const list = ref([{}]) // 列表的数据
|
|
|
|
const list = ref([{}]) // 列表的数据
|
|
|
@ -179,7 +176,8 @@ const formData = ref({
|
|
|
|
totalReportAmount: undefined,
|
|
|
|
totalReportAmount: undefined,
|
|
|
|
totalWorkTime: undefined,
|
|
|
|
totalWorkTime: undefined,
|
|
|
|
amount: undefined,
|
|
|
|
amount: undefined,
|
|
|
|
workTime: undefined
|
|
|
|
workTime: undefined,
|
|
|
|
|
|
|
|
overTask: undefined
|
|
|
|
})
|
|
|
|
})
|
|
|
|
const subFormRules = reactive({
|
|
|
|
const subFormRules = reactive({
|
|
|
|
startTime: [{ required: true, message: '开始生产时间不能为空', trigger: 'blur' }],
|
|
|
|
startTime: [{ required: true, message: '开始生产时间不能为空', trigger: 'blur' }],
|
|
|
@ -194,29 +192,55 @@ const queryParams = reactive({
|
|
|
|
pageSize: 99,
|
|
|
|
pageSize: 99,
|
|
|
|
dispatchDetailId: undefined
|
|
|
|
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) => {
|
|
|
|
const open = async (id?: number, val?: any) => {
|
|
|
|
resetForm()
|
|
|
|
resetForm()
|
|
|
|
queryParams.dispatchDetailId = id
|
|
|
|
queryParams.dispatchDetailId = id
|
|
|
|
// console.log(id, val)
|
|
|
|
// 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
|
|
|
|
dialogVisible.value = true
|
|
|
|
dialogTitle.value = '新增报工'
|
|
|
|
dialogTitle.value = '新增报工'
|
|
|
|
// 修改时,设置数据
|
|
|
|
// 修改时,设置数据
|
|
|
|
formLoading.value = true
|
|
|
|
formLoading.value = true
|
|
|
|
try {
|
|
|
|
try {
|
|
|
|
if (id) {
|
|
|
|
if (id) {
|
|
|
|
const data = await TaskReportApi.gettaskreport(queryParams)
|
|
|
|
getDatalist()
|
|
|
|
// console.log(data);
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
list.value = data.list
|
|
|
|
|
|
|
|
total.value = data.total
|
|
|
|
|
|
|
|
}
|
|
|
|
}
|
|
|
|
} finally {
|
|
|
|
} finally {
|
|
|
|
formLoading.value = false
|
|
|
|
formLoading.value = false
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
defineExpose({ open }) // 提供 open 方法,用于打开弹窗
|
|
|
|
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 事件,用于操作成功后的回调
|
|
|
|
const emit = defineEmits(['success']) // 定义 success 事件,用于操作成功后的回调
|
|
|
@ -228,75 +252,73 @@ const submitForm = async (val) => {
|
|
|
|
message.warning(t('至少有一条报工'))
|
|
|
|
message.warning(t('至少有一条报工'))
|
|
|
|
return
|
|
|
|
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
|
|
|
|
formLoading.value = true
|
|
|
|
try {
|
|
|
|
try {
|
|
|
|
list.value.forEach(item => {
|
|
|
|
list.value.forEach((item) => {
|
|
|
|
item.procedureStatus = val
|
|
|
|
item.procedureStatus = val
|
|
|
|
item.reportTime = Date.now()
|
|
|
|
item.reportTime = Date.now()
|
|
|
|
})
|
|
|
|
})
|
|
|
|
// console.log(list.value);
|
|
|
|
|
|
|
|
const data = list.value
|
|
|
|
const data = list.value
|
|
|
|
await TaskReportApi.createtaskreport(data)
|
|
|
|
await TaskReportApi.createtaskreport(data)
|
|
|
|
|
|
|
|
getDatalist()
|
|
|
|
message.success(t('操作成功'))
|
|
|
|
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
|
|
|
|
dialogVisible.value = false
|
|
|
|
// 发送操作成功的事件
|
|
|
|
|
|
|
|
emit('success')
|
|
|
|
emit('success')
|
|
|
|
} finally {
|
|
|
|
} finally {
|
|
|
|
formLoading.value = false
|
|
|
|
formLoading.value = false
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
//新增
|
|
|
|
const onAddItem = ref(() => {
|
|
|
|
const onAddItem = ref(() => {
|
|
|
|
const row = {
|
|
|
|
const row = {
|
|
|
|
id: 0,
|
|
|
|
id: 0,
|
|
|
|
dispatchDetailId: undefined,
|
|
|
|
dispatchDetailId: undefined,
|
|
|
|
procedureStatus: undefined,
|
|
|
|
procedureStatus: undefined,
|
|
|
|
startTime: undefined,
|
|
|
|
startTime: Date.now(),
|
|
|
|
endTime: undefined,
|
|
|
|
endTime: Date.now(),
|
|
|
|
amount: undefined,
|
|
|
|
amount: undefined,
|
|
|
|
workTime: undefined,
|
|
|
|
workTime: undefined,
|
|
|
|
owner: undefined,
|
|
|
|
owner: undefined,
|
|
|
|
hasReport: 1,
|
|
|
|
hasReport: 1,
|
|
|
|
status: 1,
|
|
|
|
status: 1,
|
|
|
|
reportTime: undefined,
|
|
|
|
reportTime: undefined,
|
|
|
|
type:'PRODUCTION',
|
|
|
|
type: 'PRODUCTION'
|
|
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
}
|
|
|
|
row.dispatchDetailId = formData.value.id
|
|
|
|
row.dispatchDetailId = formData.value.id
|
|
|
|
row.owner = formData.value.owner
|
|
|
|
row.owner = formData.value.owner
|
|
|
|
list.value.push(row)
|
|
|
|
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 = () => {
|
|
|
|
const resetForm = () => {
|
|
|
|
formData.value = {
|
|
|
|
formData.value = {
|
|
|
@ -304,7 +326,8 @@ const resetForm = () => {
|
|
|
|
totalReportAmount: undefined,
|
|
|
|
totalReportAmount: undefined,
|
|
|
|
totalWorkTime: undefined,
|
|
|
|
totalWorkTime: undefined,
|
|
|
|
amount: undefined,
|
|
|
|
amount: undefined,
|
|
|
|
workTime: undefined
|
|
|
|
workTime: undefined,
|
|
|
|
|
|
|
|
overTask: undefined
|
|
|
|
}
|
|
|
|
}
|
|
|
|
subFormRef.value?.resetFields()
|
|
|
|
subFormRef.value?.resetFields()
|
|
|
|
}
|
|
|
|
}
|
|
|
|