fix some thing

main
chenshuichuan 2 years ago
parent b5a4c4677b
commit 7d72b51689

@ -1,57 +1,61 @@
import request from '@/config/axios'
// 投料记录 VO
export interface FeedingRecordVO {
id: number // id
feedingRecordCode: string // 单号
productId: number // 产品id
planId: number // 计划id
itemId: number // 原料id
feedingPipeline: string // 制浆线
feedingType: string // 投料类型
weight: number // 重量
feedingTime: Date // 投料时间
userId: number // 记录人
remark: string // 备注
recordStatus: string // 状态
}
// 投料记录 API
export const FeedingRecordApi = {
// 查询投料记录分页
getFeedingRecordPage: async (params: any) => {
return await request.get({ url: `/mes/feeding-record/page`, params })
},
// 查询投料记录详情
getFeedingRecord: async (id: number) => {
return await request.get({ url: `/mes/feeding-record/get?id=` + id })
},
// 新增投料记录
createFeedingRecord: async (data: FeedingRecordVO) => {
return await request.post({ url: `/mes/feeding-record/create`, data })
},
// 修改投料记录
updateFeedingRecord: async (data: FeedingRecordVO) => {
return await request.put({ url: `/mes/feeding-record/update`, data })
},
// 删除投料记录
deleteFeedingRecord: async (id: number) => {
return await request.delete({ url: `/mes/feeding-record/delete?id=` + id })
},
// 导出投料记录 Excel
exportFeedingRecord: async (params) => {
return await request.download({ url: `/mes/feeding-record/export-excel`, params })
},
// ==================== 子表(投料记录明细) ====================
// 获得投料记录明细列表
getFeedingRecordDetailListByRecordId: async (recordId) => {
return await request.get({ url: `/mes/feeding-record/feeding-record-detail/list-by-record-id?recordId=` + recordId })
},
}
import request from '@/config/axios'
// 投料记录 VO
export interface FeedingRecordVO {
id: number // id
feedingRecordCode: string // 单号
productId: number // 产品id
planId: number // 计划id
itemId: number // 原料id
feedingPipeline: string // 制浆线
feedingType: string // 投料类型
weight: number // 重量
feedingTime: Date // 投料时间
userId: number // 记录人
remark: string // 备注
recordStatus: string // 状态
}
// 投料记录 API
export const FeedingRecordApi = {
// 查询投料记录分页
getFeedingRecordPage: async (params: any) => {
return await request.get({ url: `/mes/feeding-record/page`, params })
},
// 查询投料记录详情
getFeedingRecord: async (id: number) => {
return await request.get({ url: `/mes/feeding-record/get?id=` + id })
},
// 新增投料记录
createFeedingRecord: async (data: FeedingRecordVO) => {
return await request.post({ url: `/mes/feeding-record/create`, data })
},
// 修改投料记录
updateFeedingRecord: async (data: FeedingRecordVO) => {
return await request.put({ url: `/mes/feeding-record/update`, data })
},
// 删除投料记录
deleteFeedingRecord: async (id: number) => {
return await request.delete({ url: `/mes/feeding-record/delete?id=` + id })
},
// 导出投料记录 Excel
exportFeedingRecord: async (params) => {
return await request.download({ url: `/mes/feeding-record/export-excel`, params })
},
// ==================== 子表(投料记录明细) ====================
// 获得投料记录明细列表
getFeedingRecordDetailListByRecordId: async (recordId) => {
return await request.get({ url: `/mes/feeding-record/feeding-record-detail/list-by-record-id?recordId=` + recordId })
},
// 提交投料记录
updateFeedingRecordStatus: async (id:number, status:string) => {
return await request.put({ url: `/mes/feeding-record/update-status?id=` + id+`&status=`+status })
},
}

@ -21,6 +21,7 @@ export interface PlanVO {
productionManager: number // 生产主管
remark: string // 备注
isEnable: boolean // 是否启用
feedingPipeline: string //制浆线
}
// 生产计划 API

@ -20,17 +20,17 @@
class="!w-240px"
/>
</el-form-item>
<el-form-item label="分类" prop="categoryId">
<el-tree-select
v-model="queryParams.categoryId"
:data="categoryList"
:props="defaultProps"
check-strictly
default-expand-all
placeholder="请输入分类"
class="!w-240px"
/>
</el-form-item>
<!-- <el-form-item label="分类" prop="categoryId">-->
<!-- <el-tree-select-->
<!-- v-model="queryParams.categoryId"-->
<!-- :data="categoryList"-->
<!-- :props="defaultProps"-->
<!-- check-strictly-->
<!-- default-expand-all-->
<!-- placeholder="请输入分类"-->
<!-- class="!w-240px"-->
<!-- />-->
<!-- </el-form-item>-->
<el-form-item>
<el-button @click="handleQuery"><Icon icon="ep:search" class="mr-5px" /> 搜索</el-button>
<el-button @click="resetQuery"><Icon icon="ep:refresh" class="mr-5px" /> 重置</el-button>
@ -57,6 +57,15 @@
<!-- 列表 -->
<ContentWrap>
<el-tabs v-model="activeName" @tab-click="handleTabClick">
<el-tab-pane label="产品" name="2" />
<el-tab-pane label="原料" name="1" />
<el-tab-pane label="关键件" name="5" />
<el-tab-pane label="工具" name="3" />
<el-tab-pane label="耗材" name="4" />
<el-tab-pane label="其他" name="0" />
</el-tabs>
<el-table v-loading="loading" :data="list" :stripe="true" :show-overflow-tooltip="true">
<el-table-column label="条码" align="center" prop="barCode" />
<el-table-column label="名称" align="center" prop="name" />
@ -221,4 +230,10 @@ onMounted(async () => {
const categoryData = await ProductCategoryApi.getProductCategorySimpleList()
categoryList.value = handleTree(categoryData, 'id', 'parentId')
})
/** tab 切换 */
const handleTabClick = (tab: TabsPaneContext) => {
queryParams.categoryId = tab.paneName
handleQuery()
}
</script>

@ -105,7 +105,7 @@
<el-input-number
v-model="row.productPrice"
controls-position="right"
:min="0.01"
:min="0.00"
:precision="2"
class="!w-100%"
/>

@ -224,7 +224,7 @@ const open = async (type: string, id?: number, itemList?: ItemRequisitionAndStoc
//
if(itemList){
itemFormRef.value.handleItemListAdd(itemList)
await itemFormRef.value.handleItemListAdd(itemList)
}
}
defineExpose({ open }) // open

@ -126,7 +126,9 @@
</el-table-column>
<el-table-column align="center" fixed="right" label="操作" width="60">
<template #default="{ $index }">
<el-button @click="handleDelete($index)" link></el-button>
<el-button @click="handleDelete($index)" link type="danger">
<Icon icon="ep:delete" />
</el-button>
</template>
</el-table-column>
</el-table>
@ -266,7 +268,7 @@ const validate = () => {
/** 物料申购会调用 */
const handleItemListAdd = async (itemList: ItemRequisitionAndStockVO[]) => {
//formData.value = []
for (let i = 0; i < itemList.length; i++) {
const row = {
id: undefined,

@ -176,6 +176,15 @@
>
删除
</el-button>
<el-button
link
type="primary"
@click="handleUpdateStatus( scope.row.id, '2')"
v-hasPermi="['mes:feeding-record:update']"
v-if="scope.row.recordStatus=='1'"
>
提交
</el-button>
</template>
</el-table-column>
</el-table>
@ -290,4 +299,17 @@ const handleExport = async () => {
onMounted(() => {
getList()
})
/** 提交记录操作 */
const handleUpdateStatus = async (id: number, status:string) => {
try {
//
await message.confirm("确认提交投料记录?", "一旦提交成功无法撤回!")
//
await FeedingRecordApi.updateFeedingRecordStatus(id,status)
message.success("提交成功!")
//
await getList()
} catch {}
}
</script>

@ -5,7 +5,7 @@
<el-table-column label="原料" align="center" prop="productName" />
<el-table-column label="单位" align="center" prop="unitName" />
<el-table-column label="需求数量" align="center" prop="number" />
<el-table-column label="已下料" align="center" prop="number" />
<el-table-column label="已下料" align="center" prop="finishNumber" />
<el-table-column label="备注" align="center" prop="remark" />
</el-table>
</ContentWrap>

@ -11,6 +11,17 @@
<el-form-item v-show="false" label="计划" prop="planId">
<el-input v-model="formData.planId" placeholder="请输入计划ID" />
</el-form-item>
<el-form-item label="制浆线:" prop="feedingPipeline">
<el-radio-group v-model="formData.feedingPipeline">
<el-radio
v-for="dict in getStrDictOptions(DICT_TYPE.MES_FEEDING_PIPELINE)"
:key="dict.value"
:label="dict.value"
>
{{ dict.label }}
</el-radio>
</el-radio-group>
</el-form-item>
<el-form-item label="领料人" prop="planId">
<el-input v-model="formData.workerId" placeholder="请输入领料人" />
</el-form-item>
@ -46,6 +57,7 @@
<script setup lang="ts">
import { ItemRequisitionApi, ItemRequisitionVO } from '@/api/mes/itemrequisition'
import {PlanApi} from "@/api/mes/plan";
import {DICT_TYPE, getStrDictOptions} from "@/utils/dict";
/** 生产领料 表单 */
@ -64,10 +76,12 @@ const formData = ref({
deliveryDate: undefined,
planId: undefined,
workerId: undefined,
remark: undefined
remark: undefined,
feedingPipeline: undefined
})
const formRules = reactive({
planId: [{ required: true, message: '计划不能为空', trigger: 'blur' }],
feedingPipeline: [{ required: true, message: '制浆线不能为空', trigger: 'blur' }],
workerId: [{ required: true, message: '下料工人不能为空', trigger: 'blur' }]
})
const formRef = ref() // Ref
@ -113,6 +127,7 @@ const resetForm = () => {
requisitionDate: undefined,
deliveryDate: undefined,
workerId: undefined,
feedingPipeline: undefined,
planId: undefined,
remark: undefined
}

@ -52,21 +52,21 @@
</el-select>
</el-form-item>
<el-form-item label="状态" prop="status">
<el-select
v-model="queryParams.status"
placeholder="请选择状态"
clearable
class="!w-240px"
>
<el-option
v-for="dict in getIntDictOptions(DICT_TYPE.MES_PLAN_STATUS)"
:key="dict.value"
:label="dict.label"
:value="dict.value"
/>
</el-select>
</el-form-item>
<!-- <el-form-item label="状态" prop="status">-->
<!-- <el-select-->
<!-- v-model="queryParams.status"-->
<!-- placeholder="请选择状态"-->
<!-- clearable-->
<!-- class="!w-240px"-->
<!-- >-->
<!-- <el-option-->
<!-- v-for="dict in getIntDictOptions(DICT_TYPE.MES_PLAN_STATUS)"-->
<!-- :key="dict.value"-->
<!-- :label="dict.label"-->
<!-- :value="dict.value"-->
<!-- />-->
<!-- </el-select>-->
<!-- </el-form-item>-->
<el-form-item label="计划开始" prop="planStartTime">
<el-date-picker
v-model="queryParams.planStartTime"
@ -135,33 +135,32 @@
<!-- 列表 -->
<ContentWrap>
<el-tabs v-model="activeName" @tab-click="handleTabClick">
<el-tab-pane label="计划" name="0" />
<el-tab-pane label="派工" name="1" />
<el-tab-pane label="开工" name="2" />
<el-tab-pane label="暂停" name="3" />
<el-tab-pane label="完工" name="4" />
<el-tab-pane label="入库" name="5" />
</el-tabs>
<el-table v-loading="loading" :data="list" :stripe="true" :show-overflow-tooltip="true">
<el-table-column label="计划编码" align="center" prop="code" />
<el-table-column label="计划编码" align="center" prop="code" min-width="150px" />
<el-table-column label="产品" align="center" prop="productName" min-width="150px"/>
<el-table-column label="任务单" align="center" prop="taskCode" />
<el-table-column label="任务单" align="center" prop="taskCode" min-width="150px" />
<el-table-column label="数量" align="center" prop="planNumber" />
<el-table-column label="成品数量" align="center" prop="finishNumber" />
<el-table-column label="状态" align="center" prop="status">
<el-table-column label="状态" align="center" prop="status" sortable>
<template #default="scope">
<dict-tag :type="DICT_TYPE.MES_PLAN_STATUS" :value="scope.row.status" />
</template>
</el-table-column>
<el-table-column
label="计划开始时间"
align="center"
prop="planStartTime"
:formatter="dateFormatter"
width="180px"
/>
<el-table-column
label="计划结束时间"
align="center"
prop="planEndTime"
:formatter="dateFormatter"
width="180px"
/>
<el-table-column label="计划开始时间" align="center" sortable prop="planStartTime" :formatter="dateFormatter2" width="150px"/>
<el-table-column label="计划结束时间" align="center" sortable prop="planEndTime" :formatter="dateFormatter2" width="150px"/>
<el-table-column label="备注" align="center" prop="remark" />
<el-table-column label="制浆线" align="center" prop="feedingPipeline">
<template #default="scope">
<dict-tag :type="DICT_TYPE.MES_FEEDING_PIPELINE" :value="scope.row.feedingPipeline" />
</template>
</el-table-column>
<el-table-column label="操作" align="center" fixed="right" width="250">
<template #default="scope">
<el-button
@ -249,7 +248,7 @@
<script setup lang="ts">
import { getIntDictOptions, getBoolDictOptions, DICT_TYPE } from '@/utils/dict'
import { dateFormatter } from '@/utils/formatTime'
import {dateFormatter, dateFormatter2} from '@/utils/formatTime'
import download from '@/utils/download'
import { PlanApi, PlanVO } from '@/api/mes/plan'
import PlanForm from './PlanForm.vue'
@ -286,6 +285,7 @@ const queryParams = reactive({
productionManagerId: undefined,
remark: undefined,
isEnable: undefined,
feedingPipeline: undefined,
createTime: []
})
const queryFormRef = ref() //
@ -393,4 +393,10 @@ const handleStatus = async (planCode:string, id: number,
await getList()
} catch {}
}
/** tab 切换 */
const handleTabClick = (tab: TabsPaneContext) => {
queryParams.status = tab.paneName
handleQuery()
}
</script>

@ -98,7 +98,9 @@
</el-table-column>
<el-table-column align="center" fixed="right" label="操作" width="60">
<template #default="{ $index }">
<el-button @click="handleDelete($index)" link></el-button>
<el-button @click="handleDelete($index)" link type="danger">
<Icon icon="ep:delete" />
</el-button>
</template>
</el-table-column>
</el-table>

@ -70,7 +70,7 @@
<el-table-column label="备注" min-width="150">
<template #default="{ row, $index }">
<el-form-item :prop="`${$index}.remark`" :rules="formRules.remark" class="mb-0px!">
<el-input v-model="row.remark" placeholder="请输入备注" />
<el-input v-model="row.remark" placeholder="" />
</el-form-item>
</template>
</el-table-column>
@ -180,8 +180,27 @@ const setData = (data) => {
formData.value = data
}
defineExpose({ validate, getData , setData})
/** 删除按钮操作 */
/** 复制按钮操作 */
const handleCopy = (row) => {
formData.value.push(row)
const newRow = {
id: undefined,
code: undefined,
productId: undefined,
productName: undefined,
planNumber: undefined,
planStartTime: undefined,
planEndTime: undefined,
remark: undefined,
isEnable: undefined,
}
newRow.code = row.code + (Math.floor(Math.random() * 10) + 1)
newRow.productId = row.productId
newRow.remark = row.remark
newRow.isEnable = row.isEnable
newRow.planStartTime = row.planStartTime
newRow.planEndTime = row.planEndTime
newRow.planNumber= row.planNumber
newRow.productName = row.productName
formData.value.push(newRow)
}
</script>

Loading…
Cancel
Save