diff --git a/src/api/mes/md/item/index.ts b/src/api/mes/md/item/index.ts
index b64bd75b3..a0be1ac2e 100644
--- a/src/api/mes/md/item/index.ts
+++ b/src/api/mes/md/item/index.ts
@@ -6,7 +6,8 @@ export interface MdItemVO {
code: string // 物料编码
name: string // 物料名称
specification: string // 规格型号
- unitOfMeasure: string // 单位编码
+ unitMeasureId: number // 计量单位编号
+ unitMeasureName?: string // 计量单位名称
itemTypeId: number // 物料分类编号
itemTypeName?: string // 物料分类名称
itemOrProduct?: string // 物料/产品标识
@@ -54,5 +55,10 @@ export const MdItemApi = {
// 导出物料产品 Excel
exportItem: async (params: any) => {
return await request.download({ url: `/mes/md/item/export-excel`, params })
+ },
+
+ // 下载物料导入模板
+ importTemplate: async () => {
+ return await request.download({ url: `/mes/md/item/get-import-template` })
}
}
diff --git a/src/api/mes/md/unitmeasure/index.ts b/src/api/mes/md/unitmeasure/index.ts
new file mode 100644
index 000000000..a2e697d34
--- /dev/null
+++ b/src/api/mes/md/unitmeasure/index.ts
@@ -0,0 +1,51 @@
+import request from '@/config/axios'
+
+// MES 计量单位 VO
+export interface MdUnitMeasureVO {
+ id: number // 单位编号
+ code: string // 单位编码
+ name: string // 单位名称
+ primaryFlag: boolean // 是否主单位
+ primaryId: number // 主单位编号
+ changeRate: number // 与主单位换算比例
+ status: number // 状态
+ remark: string // 备注
+}
+
+// MES 计量单位 API
+export const MdUnitMeasureApi = {
+ // 查询计量单位分页
+ getUnitMeasurePage: async (params: any) => {
+ return await request.get({ url: `/mes/md/unit-measure/page`, params })
+ },
+
+ // 查询计量单位精简列表
+ getUnitMeasureSimpleList: async () => {
+ return await request.get({ url: `/mes/md/unit-measure/simple-list` })
+ },
+
+ // 查询计量单位详情
+ getUnitMeasure: async (id: number) => {
+ return await request.get({ url: `/mes/md/unit-measure/get?id=` + id })
+ },
+
+ // 新增计量单位
+ createUnitMeasure: async (data: MdUnitMeasureVO) => {
+ return await request.post({ url: `/mes/md/unit-measure/create`, data })
+ },
+
+ // 修改计量单位
+ updateUnitMeasure: async (data: MdUnitMeasureVO) => {
+ return await request.put({ url: `/mes/md/unit-measure/update`, data })
+ },
+
+ // 删除计量单位
+ deleteUnitMeasure: async (id: number) => {
+ return await request.delete({ url: `/mes/md/unit-measure/delete?id=` + id })
+ },
+
+ // 导出计量单位 Excel
+ exportUnitMeasure: async (params: any) => {
+ return await request.download({ url: `/mes/md/unit-measure/export-excel`, params })
+ }
+}
diff --git a/src/utils/dict.ts b/src/utils/dict.ts
index ec54b408b..a9b203eef 100644
--- a/src/utils/dict.ts
+++ b/src/utils/dict.ts
@@ -250,5 +250,8 @@ export enum DICT_TYPE {
IOT_OTA_TASK_STATUS = 'iot_ota_task_status', // IoT OTA 任务状态
IOT_OTA_TASK_RECORD_STATUS = 'iot_ota_task_record_status', // IoT OTA 记录状态
IOT_MODBUS_MODE = 'iot_modbus_mode', // IoT Modbus 工作模式
- IOT_MODBUS_FRAME_FORMAT = 'iot_modbus_frame_format' // IoT Modbus 帧格式
+ IOT_MODBUS_FRAME_FORMAT = 'iot_modbus_frame_format', // IoT Modbus 帧格式
+
+ // ========== MES - 制造执行系统模块 ==========
+ MES_CLIENT_TYPE = 'mes_client_type' // MES 客户类型
}
diff --git a/src/views/mes/md/item/MdItemForm.vue b/src/views/mes/md/item/MdItemForm.vue
index 20974d975..41a2f38e9 100644
--- a/src/views/mes/md/item/MdItemForm.vue
+++ b/src/views/mes/md/item/MdItemForm.vue
@@ -31,8 +31,15 @@
-
-
+
+
+
+
@@ -138,6 +145,7 @@ import { getIntDictOptions, DICT_TYPE } from '@/utils/dict'
import { generateRandomStr } from '@/utils'
import { MdItemApi, MdItemVO } from '@/api/mes/md/item'
import { MdItemTypeApi, MdItemTypeVO } from '@/api/mes/md/item/type'
+import { MdUnitMeasureApi, MdUnitMeasureVO } from '@/api/mes/md/unitmeasure'
import { CommonStatusEnum } from '@/utils/constants'
import { defaultProps, handleTree } from '@/utils/tree'
@@ -157,7 +165,7 @@ const formData = ref({
code: undefined,
name: undefined,
specification: undefined,
- unitOfMeasure: undefined,
+ unitMeasureId: undefined,
itemTypeId: undefined,
status: CommonStatusEnum.ENABLE,
safeStockFlag: false,
@@ -170,12 +178,13 @@ const formData = ref({
const formRules = reactive({
code: [{ required: true, message: '物料编码不能为空', trigger: 'blur' }],
name: [{ required: true, message: '物料名称不能为空', trigger: 'blur' }],
- unitOfMeasure: [{ required: true, message: '单位编码不能为空', trigger: 'blur' }],
+ unitMeasureId: [{ required: true, message: '计量单位不能为空', trigger: 'change' }],
itemTypeId: [{ required: true, message: '物料分类不能为空', trigger: 'blur' }],
status: [{ required: true, message: '状态不能为空', trigger: 'blur' }]
})
const formRef = ref() // 表单 Ref
const itemTypeList = ref([]) // 物料分类列表
+const unitMeasureList = ref([]) // 计量单位列表
/** 生成物料编码 */
const generateCode = () => {
@@ -202,6 +211,8 @@ const open = async (type: string, id?: number) => {
// 物料分类
const categoryData = await MdItemTypeApi.getItemTypeSimpleList()
itemTypeList.value = handleTree(categoryData, 'id', 'parentId')
+ // 计量单位
+ unitMeasureList.value = await MdUnitMeasureApi.getUnitMeasureSimpleList()
}
defineExpose({ open }) // 提供 open 方法,用于打开弹窗
@@ -236,7 +247,7 @@ const resetForm = () => {
code: undefined,
name: undefined,
specification: undefined,
- unitOfMeasure: undefined,
+ unitMeasureId: undefined,
itemTypeId: undefined,
status: CommonStatusEnum.ENABLE,
safeStockFlag: false,
diff --git a/src/views/mes/md/item/index.vue b/src/views/mes/md/item/index.vue
index 28cd31ef4..07b5e8b65 100644
--- a/src/views/mes/md/item/index.vue
+++ b/src/views/mes/md/item/index.vue
@@ -65,6 +65,14 @@
>
新增
+
+ 导入
+
-
+
@@ -142,6 +150,8 @@
+
+
diff --git a/src/views/mes/md/unitmeasure/index.vue b/src/views/mes/md/unitmeasure/index.vue
new file mode 100644
index 000000000..84e2713da
--- /dev/null
+++ b/src/views/mes/md/unitmeasure/index.vue
@@ -0,0 +1,209 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 搜索
+ 重置
+
+ 新增
+
+
+ 导出
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 编辑
+
+
+ 删除
+
+
+
+
+
+
+
+
+
+
+
+
+