diff --git a/src/api/mes/paigongrecord/index.ts b/src/api/mes/paigongrecord/index.ts
new file mode 100644
index 00000000..8387336d
--- /dev/null
+++ b/src/api/mes/paigongrecord/index.ts
@@ -0,0 +1,51 @@
+import request from '@/config/axios'
+
+// 计划派工记录 VO
+export interface PaigongRecordVO {
+ id: number // id
+ planId: number // 关联计划id
+ pipeline: number // 生产线
+ paigongNum: number // 派工数量
+ isPreProduction: number // 是否试生产
+ paigongTime: Date // 派工时间
+}
+
+// 计划派工记录 API
+export const PaigongRecordApi = {
+ // 查询计划派工记录分页
+ getPaigongRecordPage: async (params: any) => {
+ return await request.get({ url: `/mes/paigong-record/page`, params })
+ },
+
+ // 查询计划派工记录详情
+ getPaigongRecord: async (id: number) => {
+ return await request.get({ url: `/mes/paigong-record/get?id=` + id })
+ },
+
+ // 新增计划派工记录
+ createPaigongRecord: async (data: PaigongRecordVO) => {
+ return await request.post({ url: `/mes/paigong-record/create`, data })
+ },
+
+ // 修改计划派工记录
+ updatePaigongRecord: async (data: PaigongRecordVO) => {
+ return await request.put({ url: `/mes/paigong-record/update`, data })
+ },
+
+ // 删除计划派工记录
+ deletePaigongRecord: async (id: number) => {
+ return await request.delete({ url: `/mes/paigong-record/delete?id=` + id })
+ },
+
+ // 导出计划派工记录 Excel
+ exportPaigongRecord: async (params) => {
+ return await request.download({ url: `/mes/paigong-record/export-excel`, params })
+ },
+
+ // ==================== 子表(领料明细) ====================
+
+ // 获得领料明细列表
+ getPaigongRecordListByPlanId: async (planId) => {
+ return await request.get({ url: `/mes/paigong-record/list-by-item-plan-id?planId=` + planId })
+ }
+}
diff --git a/src/api/mes/plan/index.ts b/src/api/mes/plan/index.ts
index 2af6a4ee..7ddf759a 100644
--- a/src/api/mes/plan/index.ts
+++ b/src/api/mes/plan/index.ts
@@ -64,6 +64,10 @@ export const PlanApi = {
arrangePlan: async (data: ItemRequisitionVO) => {
return await request.put({ url: `/mes/plan/paigong`, data })
},
+ // 派工生产计划
+ arrangePlanNum: async (data: ItemRequisitionVO) => {
+ return await request.put({ url: `/mes/plan/typePaigong`, data })
+ },
// 更新状态生产计划
updatePlanStatus: async (data: PlanVO) => {
return await request.put({ url: `/mes/plan/updateStatus`, data })
diff --git a/src/layout/components/Footer/src/Footer.vue b/src/layout/components/Footer/src/Footer.vue
index 3d6186c5..dc6cb124 100644
--- a/src/layout/components/Footer/src/Footer.vue
+++ b/src/layout/components/Footer/src/Footer.vue
@@ -20,7 +20,7 @@ const title = computed(() => appStore.getTitle)
:class="prefixCls"
class="h-[var(--app-footer-height)] bg-[var(--app-content-bg-color)] text-center leading-[var(--app-footer-height)] text-[var(--el-text-color-placeholder)] dark:bg-[var(--el-bg-color)] overflow-hidden"
>
- Copyright ©2024-BESURE-{{ title }}
+ Copyright ©2026-BESURE-{{ title }}
操作手册
diff --git a/src/utils/dict.ts b/src/utils/dict.ts
index 5c954f6e..124e0578 100644
--- a/src/utils/dict.ts
+++ b/src/utils/dict.ts
@@ -253,6 +253,8 @@ export enum DICT_TYPE {
MES_MOLD_RECORD_TYPE = "mes_mold_record_type",
MES_PASS_OR_NOPASS = "mes_pass_or_nopass",
MES_MANTAIN_LEVEL = "mes_mantain_level",
+ MOLD_GET_STATUS = "mold_get_status",
+ MES_PRE_PRODUCTION = "mes_pre_production",
//====iot
IOT_SIEMENS_TYPE = "iot_siemens_type",
IOT_MODBUS_TYPE = "iot_modbus_type",
diff --git a/src/views/erp/mold/MoldBrandForm.vue b/src/views/erp/mold/MoldBrandForm.vue
index f9170cd5..2bd5f252 100644
--- a/src/views/erp/mold/MoldBrandForm.vue
+++ b/src/views/erp/mold/MoldBrandForm.vue
@@ -35,16 +35,15 @@
-
-
+
+
-
+
-
-
- {{ dict.label }}
-
-
+
-
+
+
+
+ 投料类型
+
+
+
+
+
([]) // 产品列表
@@ -98,7 +109,6 @@ const formData = ref({
feedingRecordCode: undefined,
productId: undefined,
planId: undefined,
- productId: undefined,
itemId: undefined,
feedingPipeline: undefined,
feedingType: undefined,
@@ -109,7 +119,8 @@ const formData = ref({
recordStatus: undefined,
})
const formRules = reactive({
- feedingType: [{ required: true, message: '投料类型不能为空', trigger: 'blur' }]
+ feedingType: [{ required: true, message: '投料类型不能为空', trigger: 'blur' }],
+ feedingPipeline: [{ required: true, message: '制浆线不能为空', trigger: 'blur' }]
})
const formRef = ref() // 表单 Ref
@@ -122,10 +133,8 @@ const open = async (type: string, id?: number) => {
dialogVisible.value = true
dialogTitle.value = t('action.' + type)
formType.value = type
-
resetForm()
formData.value.feedingType = 'org'
- formData.value.feedingPipeline = 'zhijiang2'
// 修改时,设置数据
if (id) {
formLoading.value = true
@@ -137,6 +146,8 @@ const open = async (type: string, id?: number) => {
}
// 加载产品、
productList.value = await ProductApi.getMesProductSimpleList()
+ // 加载组织
+ await getOrganizationTree()
}
defineExpose({ open }) // 提供 open 方法,用于打开弹窗
@@ -195,4 +206,14 @@ const resetForm = () => {
}
formRef.value?.resetFields()
}
+
+/** 获得产线工位树 */
+const getOrganizationTree = async () => {
+ organizationTree.value = []
+ const req = {orgClass:'pipeline'}
+ const data = await OrganizationApi.getOrganizationList(req)
+ const root: Tree = { id: 0, name: '顶级产线工位', children: [] }
+ root.children = handleTree(data, 'id', 'parentId')
+ organizationTree.value.push(root)
+}
diff --git a/src/views/mes/feedingrecord/components/FeedingRecordDetailList.vue b/src/views/mes/feedingrecord/components/FeedingRecordDetailList.vue
index d4d8ab8f..0339206d 100644
--- a/src/views/mes/feedingrecord/components/FeedingRecordDetailList.vue
+++ b/src/views/mes/feedingrecord/components/FeedingRecordDetailList.vue
@@ -6,7 +6,7 @@
-
+
diff --git a/src/views/mes/feedingrecord/index.vue b/src/views/mes/feedingrecord/index.vue
index 173556ff..bf608ac6 100644
--- a/src/views/mes/feedingrecord/index.vue
+++ b/src/views/mes/feedingrecord/index.vue
@@ -17,24 +17,17 @@
class="!w-240px"
/>
-
-
-
-
+
-
-
-
-
-
-
+
-
+
@@ -135,7 +124,7 @@
width="180px"
/>
-
+
- 提交
+ 投料
@@ -187,13 +176,14 @@ import download from '@/utils/download'
import { FeedingRecordApi, FeedingRecordVO } from '@/api/mes/feedingrecord'
import FeedingRecordForm from './FeedingRecordForm.vue'
import FeedingRecordDetailList from './components/FeedingRecordDetailList.vue'
-
+import { OrganizationApi, OrganizationVO } from '@/api/mes/organization'
+import { defaultProps, handleTree } from '@/utils/tree'
/** 投料记录 列表 */
defineOptions({ name: 'FeedingRecord' })
const message = useMessage() // 消息弹窗
const { t } = useI18n() // 国际化
-
+const organizationTree = ref() // 树形结构
const loading = ref(true) // 列表的加载中
const list = ref([]) // 列表的数据
const total = ref(0) // 列表的总页数
@@ -276,6 +266,8 @@ const handleExport = async () => {
/** 初始化 **/
onMounted(() => {
+ // 加载组织
+ getOrganizationTree()
getList()
})
/** 提交记录操作 */
@@ -283,7 +275,6 @@ const handleUpdateStatus = async (id: number, status:string) => {
try {
// 二次确认
await message.confirm("确认提交投料记录?", "一旦提交成功无法撤回!")
- // 发起删除
await FeedingRecordApi.updateFeedingRecordStatus(id,status)
message.success("提交成功!")
// 刷新列表
@@ -297,4 +288,14 @@ const handleTabClick = (tab: TabsPaneContext) => {
queryParams.feedingType = tab.paneName
handleQuery()
}
+
+/** 获得产线工位树 */
+const getOrganizationTree = async () => {
+ organizationTree.value = []
+ const req = {orgClass:'pipeline'}
+ const data = await OrganizationApi.getOrganizationList(req)
+ const root: Tree = { id: 0, name: '顶级产线工位', children: [] }
+ root.children = handleTree(data, 'id', 'parentId')
+ organizationTree.value.push(root)
+}
diff --git a/src/views/mes/itemrequisition/components/ItemRequisitionDetailList.vue b/src/views/mes/itemrequisition/components/ItemRequisitionDetailList.vue
index 82e3a499..7ddd99cc 100644
--- a/src/views/mes/itemrequisition/components/ItemRequisitionDetailList.vue
+++ b/src/views/mes/itemrequisition/components/ItemRequisitionDetailList.vue
@@ -2,7 +2,7 @@
-
+
@@ -11,7 +11,7 @@
-
+
@@ -39,11 +39,6 @@ const getList = async () => {
}
}
-/** 搜索按钮操作 */
-const handleQuery = () => {
- queryParams.pageNo = 1
- getList()
-}
/** 初始化 **/
onMounted(() => {
diff --git a/src/views/mes/itemrequisition/index.vue b/src/views/mes/itemrequisition/index.vue
index 7d881490..d593abdd 100644
--- a/src/views/mes/itemrequisition/index.vue
+++ b/src/views/mes/itemrequisition/index.vue
@@ -96,11 +96,7 @@
-
-
-
-
-
+
-
+ /> -->
-
+
diff --git a/src/views/mes/moldget/index.vue b/src/views/mes/moldget/index.vue
index 973a9b18..20f5c80a 100644
--- a/src/views/mes/moldget/index.vue
+++ b/src/views/mes/moldget/index.vue
@@ -36,13 +36,19 @@
/>
-
+ >
+
+
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
\ No newline at end of file
diff --git a/src/views/mes/paigongrecord/components/PaigongRecordList.vue b/src/views/mes/paigongrecord/components/PaigongRecordList.vue
new file mode 100644
index 00000000..e8789fee
--- /dev/null
+++ b/src/views/mes/paigongrecord/components/PaigongRecordList.vue
@@ -0,0 +1,81 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/src/views/mes/paigongrecord/index.vue b/src/views/mes/paigongrecord/index.vue
new file mode 100644
index 00000000..153aabaf
--- /dev/null
+++ b/src/views/mes/paigongrecord/index.vue
@@ -0,0 +1,239 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 搜索
+ 重置
+
+ 新增
+
+
+ 导出
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 编辑
+
+
+ 删除
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/src/views/mes/plan/components/Paigong.vue b/src/views/mes/plan/components/Paigong.vue
index 8db50af0..49b36d3e 100644
--- a/src/views/mes/plan/components/Paigong.vue
+++ b/src/views/mes/plan/components/Paigong.vue
@@ -7,9 +7,7 @@
label-width="100px"
v-loading="formLoading"
>
-
-
-
+
@@ -48,34 +46,6 @@
-
-
-
-
-
-
-
-
-
-
-
- {{ dict.label }}
-
-
-
-
-
@@ -85,12 +55,11 @@
diff --git a/src/views/mes/plan/index.vue b/src/views/mes/plan/index.vue
index 7416831a..39ede324 100644
--- a/src/views/mes/plan/index.vue
+++ b/src/views/mes/plan/index.vue
@@ -120,14 +120,21 @@
-
-
+
+
+
+
+
+
+
+
+
@@ -155,7 +162,7 @@
-
+
- 派工
+ 下料派工
+
+
+ 工序派工
+
+
+