diff --git a/src/api/dms/baseDeviceCategory/index.ts b/src/api/dms/baseDeviceCategory/index.ts index 362a6a4..1701bef 100644 --- a/src/api/dms/baseDeviceCategory/index.ts +++ b/src/api/dms/baseDeviceCategory/index.ts @@ -1,77 +1,77 @@ -// import request from '@/utils/request'; -// import { AxiosPromise } from 'axios'; -// import { BaseDeviceCategoryVO, BaseDeviceCategoryForm, BaseDeviceCategoryQuery } from '@/api/dms/baseDeviceCategory/types'; -// -// /** -// * 查询设备大类信息列表 -// * @param query -// * @returns {*} -// */ -// -// export const listBaseDeviceCategoryInDMS = (query?: BaseDeviceCategoryQuery): AxiosPromise => { -// return request({ -// url: '/dms/baseDeviceCategory/list', -// method: 'get', -// params: query -// }); -// }; -// -// /** -// * 查询设备大类信息详细 -// * @param deviceCategoryId -// */ -// export const getBaseDeviceCategoryInDMS = (deviceCategoryId: string | number): AxiosPromise => { -// return request({ -// url: '/dms/baseDeviceCategory/' + deviceCategoryId, -// method: 'get' -// }); -// }; -// -// /** -// * 新增设备大类信息 -// * @param data -// */ -// export const addBaseDeviceCategoryInDMS = (data: BaseDeviceCategoryForm) => { -// return request({ -// url: '/dms/baseDeviceCategory', -// method: 'post', -// data: data -// }); -// }; -// -// /** -// * 修改设备大类信息 -// * @param data -// */ -// export const updateBaseDeviceCategoryInDMS = (data: BaseDeviceCategoryForm) => { -// return request({ -// url: '/dms/baseDeviceCategory', -// method: 'put', -// data: data -// }); -// }; -// -// /** -// * 删除设备大类信息 -// * @param deviceCategoryId -// */ -// export const delBaseDeviceCategoryInDMS = (deviceCategoryId: string | number | Array) => { -// return request({ -// url: '/dms/baseDeviceCategory/' + deviceCategoryId, -// method: 'delete' -// }); -// }; -// -// -// /** -// * 下拉框查询设备大类信息列表 -// * @param query -// * @returns {*} -// */ -// export function getBaseDeviceCategoryListInDMS (query) { -// return request({ -// url: '/dms/baseDeviceCategory/getBaseDeviceCategoryList', -// method: 'get', -// params: query -// }); -// }; +import request from '@/utils/request'; +import { AxiosPromise } from 'axios'; +import { BaseDeviceCategoryVO, BaseDeviceCategoryForm, BaseDeviceCategoryQuery } from '@/api/dms/baseDeviceCategory/types'; + +/** + * 查询设备大类信息列表 + * @param query + * @returns {*} + */ + +export const listBaseDeviceCategory = (query?: BaseDeviceCategoryQuery): AxiosPromise => { + return request({ + url: '/dms/baseDeviceCategory/list', + method: 'get', + params: query + }); +}; + +/** + * 查询设备大类信息详细 + * @param deviceCategoryId + */ +export const getBaseDeviceCategory = (deviceCategoryId: string | number): AxiosPromise => { + return request({ + url: '/dms/baseDeviceCategory/' + deviceCategoryId, + method: 'get' + }); +}; + +/** + * 新增设备大类信息 + * @param data + */ +export const addBaseDeviceCategory = (data: BaseDeviceCategoryForm) => { + return request({ + url: '/dms/baseDeviceCategory', + method: 'post', + data: data + }); +}; + +/** + * 修改设备大类信息 + * @param data + */ +export const updateBaseDeviceCategory = (data: BaseDeviceCategoryForm) => { + return request({ + url: '/dms/baseDeviceCategory', + method: 'put', + data: data + }); +}; + +/** + * 删除设备大类信息 + * @param deviceCategoryId + */ +export const delBaseDeviceCategory = (deviceCategoryId: string | number | Array) => { + return request({ + url: '/dms/baseDeviceCategory/' + deviceCategoryId, + method: 'delete' + }); +}; + + +/** + * 下拉框查询设备大类信息列表 + * @param query + * @returns {*} + */ +export function getBaseDeviceCategoryList (query) { + return request({ + url: '/dms/baseDeviceCategory/getBaseDeviceCategoryList', + method: 'get', + params: query + }); +}; diff --git a/src/api/dms/baseDeviceType/index.ts b/src/api/dms/baseDeviceType/index.ts index 039383e..e8ff345 100644 --- a/src/api/dms/baseDeviceType/index.ts +++ b/src/api/dms/baseDeviceType/index.ts @@ -1,87 +1,87 @@ -// import request from '@/utils/request'; -// import { AxiosPromise } from 'axios'; -// import { BaseDeviceTypeVO, BaseDeviceTypeForm, BaseDeviceTypeQuery } from '@/api/dms/baseDeviceType/types'; -// -// /** -// * 查询设备类型信息列表 -// * @param query -// * @returns {*} -// */ -// -// export const listBaseDeviceTypeInDMS = (query?: BaseDeviceTypeQuery): AxiosPromise => { -// return request({ -// url: '/dms/baseDeviceType/list', -// method: 'get', -// params: query -// }); -// }; -// -// /** -// * 查询设备类型信息详细 -// * @param deviceTypeId -// */ -// export const getBaseDeviceTypeInDMS = (deviceTypeId: string | number): AxiosPromise => { -// return request({ -// url: '/dms/baseDeviceType/' + deviceTypeId, -// method: 'get' -// }); -// }; -// -// /** -// * 新增设备类型信息 -// * @param data -// */ -// export const addBaseDeviceTypeInDMS = (data: BaseDeviceTypeForm) => { -// return request({ -// url: '/dms/baseDeviceType', -// method: 'post', -// data: data -// }); -// }; -// -// /** -// * 修改设备类型信息 -// * @param data -// */ -// export const updateBaseDeviceTypeInDMS = (data: BaseDeviceTypeForm) => { -// return request({ -// url: '/dms/baseDeviceType', -// method: 'put', -// data: data -// }); -// }; -// -// /** -// * 删除设备类型信息 -// * @param deviceTypeId -// */ -// export const delBaseDeviceTypeInDMS = (deviceTypeId: string | number | Array) => { -// return request({ -// url: '/dms/baseDeviceType/' + deviceTypeId, -// method: 'delete' -// }); -// }; -// -// -// /** -// * 下拉框查询设备类型信息列表 -// * @param query -// * @returns {*} -// */ -// export function getBaseDeviceTypeListInDMS (query) { -// return request({ -// url: '/dms/baseDeviceType/getBaseDeviceTypeList', -// method: 'get', -// params: query -// }); -// }; -// -// -// //根据设备id查询设备类型信息 -// export function selectDevicetypeByDeviceId(query) { -// return request({ -// url: '/dms/baseDeviceType/selectDevicetypeByDeviceId', -// method: 'get', -// params: query -// }) -// }; +import request from '@/utils/request'; +import { AxiosPromise } from 'axios'; +import { BaseDeviceTypeVO, BaseDeviceTypeForm, BaseDeviceTypeQuery } from '@/api/dms/baseDeviceType/types'; + +/** + * 查询设备类型信息列表 + * @param query + * @returns {*} + */ + +export const listBaseDeviceType = (query?: BaseDeviceTypeQuery): AxiosPromise => { + return request({ + url: '/dms/baseDeviceType/list', + method: 'get', + params: query + }); +}; + +/** + * 查询设备类型信息详细 + * @param deviceTypeId + */ +export const getBaseDeviceType = (deviceTypeId: string | number): AxiosPromise => { + return request({ + url: '/dms/baseDeviceType/' + deviceTypeId, + method: 'get' + }); +}; + +/** + * 新增设备类型信息 + * @param data + */ +export const addBaseDeviceType = (data: BaseDeviceTypeForm) => { + return request({ + url: '/dms/baseDeviceType', + method: 'post', + data: data + }); +}; + +/** + * 修改设备类型信息 + * @param data + */ +export const updateBaseDeviceType = (data: BaseDeviceTypeForm) => { + return request({ + url: '/dms/baseDeviceType', + method: 'put', + data: data + }); +}; + +/** + * 删除设备类型信息 + * @param deviceTypeId + */ +export const delBaseDeviceType = (deviceTypeId: string | number | Array) => { + return request({ + url: '/dms/baseDeviceType/' + deviceTypeId, + method: 'delete' + }); +}; + + +/** + * 下拉框查询设备类型信息列表 + * @param query + * @returns {*} + */ +export function getBaseDeviceTypeList (query) { + return request({ + url: '/dms/baseDeviceType/getBaseDeviceTypeList', + method: 'get', + params: query + }); +}; + + +//根据设备id查询设备类型信息 +export function selectDevicetypeByDeviceId(query) { + return request({ + url: '/dms/baseDeviceType/selectDevicetypeByDeviceId', + method: 'get', + params: query + }) +}; diff --git a/src/api/mes/baseRoute/types.ts b/src/api/mes/baseRoute/types.ts index d89841d..a7433b2 100644 --- a/src/api/mes/baseRoute/types.ts +++ b/src/api/mes/baseRoute/types.ts @@ -1,9 +1,63 @@ // 定义工艺路线步骤的接口 export interface ProdBaseRouteProcess { + /** 工艺路线步骤ID */ + routeProcessId?: number; + /** 工艺路线ID */ + routeId?: number; /** 工序ID */ processId: string | number; + /** 工序名称 */ + processName?: string; + /** 工序类型 */ + processType?: string; /** 工序顺序 */ processOrder: string | number; + /** 委外标识 */ + outsourcingFlag?: string; + /** 工序类型 */ + operationType?: string; + /** 是否需要上料 */ + needFeeding?: string; + /** 设备点检 */ + needEquipmentCheck?: string; + /** 实际产出率 */ + actualYieldRate?: number; + /** 领料方式 */ + materialIssuance?: string; + /** 委外提前期 */ + outsourcingLeadTime?: number; + /** 准备时间 */ + setupTime?: number; + /** 加工时间 */ + processingTime?: number; + /** 拆卸时间 */ + teardownTime?: number; + /** 生产节拍 */ + productionTakt?: number; + /** 质检方式 */ + inspectionMethod?: string; + /** 质量检验规则ID */ + qualityRuleId?: string; + /** 关键工序 */ + isKeyOperation?: string; + /** 下工序要求 */ + nextStepRequirement?: string; + /** 最后工序 */ + isFinalStep?: string; + /** 生成流转卡任务 */ + generatePrepareTask?: string; + /** 瓶颈工序 */ + bottleneckFlag?: string; + /** 瓶颈设置 */ + bottleneckSetting?: string; + /** 接续关系 */ + successorRelation?: string; + /** 偏置时间 */ + offsetTime?: number; + /** 技术附件 */ + techAttachments?: string; + /** 质检员 */ + inspectors?: string; /** 备注 */ remark?: string; /** 创建人 */ diff --git a/src/api/mes/baseShiftInfo/types.ts b/src/api/mes/baseShiftInfo/types.ts index d6defdc..be19338 100644 --- a/src/api/mes/baseShiftInfo/types.ts +++ b/src/api/mes/baseShiftInfo/types.ts @@ -4,11 +4,6 @@ export interface BaseShiftInfoVO { */ shiftId: string | number; - /** - * 租户编号 - */ - tenantId: string | number; - /** * 班次编号 */ @@ -50,29 +45,9 @@ export interface BaseShiftInfoVO { activeFlag: string; /** - * 创建部门 + * 班制类型(2两班 3三班) */ - createDept: number; - - /** - * 创建人 - */ - createBy: number; - - /** - * 创建时间 - */ - createTime: string; - - /** - * 更新人 - */ - updateBy: number; - - /** - * 更新时间 - */ - updateTime: string; + classType: string; } @@ -82,11 +57,6 @@ export interface BaseShiftInfoForm extends BaseEntity { */ shiftId?: string | number; - /** - * 租户编号 - */ - tenantId?: string | number; - /** * 班次编号 */ @@ -128,35 +98,9 @@ export interface BaseShiftInfoForm extends BaseEntity { activeFlag?: string; /** - * 创建部门 + * 班制类型(2两班 3三班) */ - createDept?: number; - - /** - * 创建人 - */ - createBy?: number; - - /** - * 创建时间 - */ - createTime?: string; - - /** - * 更新人 - */ - updateBy?: number; - - /** - * 更新时间 - */ - updateTime?: string; - - - productionTimeDays?: number; - productionTimeHours?: number; - productionTimeMinutes?: number; - + classType?: string; } @@ -167,11 +111,6 @@ export interface BaseShiftInfoQuery extends PageQuery { */ shiftId?: string | number; - /** - * 租户编号 - */ - tenantId?: string | number; - /** * 班次编号 */ @@ -213,34 +152,14 @@ export interface BaseShiftInfoQuery extends PageQuery { activeFlag?: string; /** - * 创建部门 + * 班制类型(2两班 3三班) */ - createDept?: number; + classType?: string; /** - * 创建人 + * 日期范围参数 */ - createBy?: number; - - /** - * 创建时间 - */ - createTime?: string; - - /** - * 更新人 - */ - updateBy?: number; - - /** - * 更新时间 - */ - updateTime?: string; - - /** - * 日期范围参数 - */ - params?: any; + params?: any; } diff --git a/src/api/mes/baseToolingInfo/types.ts b/src/api/mes/baseToolingInfo/types.ts index 38c2e4b..eea65f5 100644 --- a/src/api/mes/baseToolingInfo/types.ts +++ b/src/api/mes/baseToolingInfo/types.ts @@ -132,6 +132,7 @@ export interface BaseToolingInfoForm extends BaseEntity { */ weight?: number; + /** * 备注 */ @@ -142,6 +143,7 @@ export interface BaseToolingInfoForm extends BaseEntity { */ activeFlag?: string; + toolingTypeId?: number; } export interface BaseToolingInfoQuery extends PageQuery { diff --git a/src/api/mes/planInfo/types.ts b/src/api/mes/planInfo/types.ts index 20ccaf0..03e851f 100644 --- a/src/api/mes/planInfo/types.ts +++ b/src/api/mes/planInfo/types.ts @@ -335,15 +335,6 @@ export interface PlanInfoForm extends BaseEntity { materialBoMName?: string | number; - materialIdL?: string | number; - materialNameL?: string | number; - materialIdR?: string | number; - materialNameR?: string | number; - materialBoMIdL?: string | number; - materialBoMNameL?: string | number; - materialBoMIdR?: string | number; - materialBoMNameR?: string | number; - /** * 班次id */ @@ -356,6 +347,24 @@ export interface PlanInfoForm extends BaseEntity { materialName?: string; + // 业务临时字段补充,便于 index.vue 类型推断 + planAmount1?: number; + planAmount2?: number; + planAmount3?: number; + planAmount4?: number; + planAmount5?: number; + planAmount6?: number; + materialIdL?: string | number; + materialNameL?: string; + materialIdR?: string | number; + materialNameR?: string; + materialBomVersion?: string; + materialBomVersionL?: string; + materialBomVersionR?: string; + materialBoMNameL?: string; + materialBoMNameR?: string; + materialBoMIdL?: string | number; + materialBoMIdR?: string | number; } export interface PlanInfoQuery extends PageQuery { @@ -520,6 +529,7 @@ export interface PlanInfoQuery extends PageQuery { */ params?: any; + planRangeTime?: [string, string]; /** * 班次名称 diff --git a/src/api/mes/prodBaseMachineInfo/types.ts b/src/api/mes/prodBaseMachineInfo/types.ts index ebcfdb2..c87c6e2 100644 --- a/src/api/mes/prodBaseMachineInfo/types.ts +++ b/src/api/mes/prodBaseMachineInfo/types.ts @@ -4,11 +4,6 @@ export interface ProdBaseMachineInfoVO { */ machineId: string | number; - /** - * 租户编号 - */ - tenantId: string | number; - /** * 机台编号 */ @@ -55,29 +50,64 @@ export interface ProdBaseMachineInfoVO { remark: string; /** - * 创建部门 + * 车间ID */ - createDept: number; + workshopId: string | number; /** - * 创建人 + * 设备模型,关联设备模型dms_device_mode */ - createBy: number; + deviceModeId: string | number; /** - * 创建时间 + * 设备IP地址 */ - createTime: string; + machineIp: string; /** - * 更新人 + * 设备端口 */ - updateBy: number; + machinePort: number; /** - * 更新时间 + * 设备协议 */ - updateTime: string; + accessProtocol: string; + + /** + * 寄存器地址 + */ + registerAddress: string; + + /** + * 数据类型(1、bool,2、short,3int,4long,5float,6byte,7ushort,8uint,9ulong,10double,11字符串) + */ + dataType: string; + + /** + * 数据长度 + */ + dataLength: number; + + /** + * 数据编码格式(1ASCII,2Unicode,3Unicode-big,4UTF-8,5UTF-32,6、ANSI,7、GB2312) + */ + dataEncoding: string; + + /** + * 请求间隔(单位:毫秒) + */ + requestInterval: number; + + /** + * 入库类型(1直接入库 2扫描入库) + */ + instockType: string; + + /** + * 班制类型(2两班 3三班) + */ + classType: string; } @@ -132,7 +162,65 @@ export interface ProdBaseMachineInfoForm extends BaseEntity { */ remark?: string; - baseMachineProcessList?: []; + /** + * 车间ID + */ + workshopId?: string | number; + + /** + * 设备模型,关联设备模型dms_device_mode + */ + deviceModeId?: string | number; + + /** + * 设备IP地址 + */ + machineIp?: string; + + /** + * 设备端口 + */ + machinePort?: number; + + /** + * 设备协议 + */ + accessProtocol?: string; + + /** + * 寄存器地址 + */ + registerAddress?: string; + + /** + * 数据类型(1、bool,2、short,3int,4long,5float,6byte,7ushort,8uint,9ulong,10double,11字符串) + */ + dataType?: string; + + /** + * 数据长度 + */ + dataLength?: number; + + /** + * 数据编码格式(1ASCII,2Unicode,3Unicode-big,4UTF-8,5UTF-32,6、ANSI,7、GB2312) + */ + dataEncoding?: string; + + /** + * 请求间隔(单位:毫秒) + */ + requestInterval?: number; + + /** + * 入库类型(1直接入库 2扫描入库) + */ + instockType?: string; + + /** + * 班制类型(2两班 3三班) + */ + classType?: string; } @@ -183,10 +271,70 @@ export interface ProdBaseMachineInfoQuery extends PageQuery { */ machineStatus?: string; - /** - * 日期范围参数 - */ - params?: any; + /** + * 车间ID + */ + workshopId?: string | number; + + /** + * 设备模型,关联设备模型dms_device_mode + */ + deviceModeId?: string | number; + + /** + * 设备IP地址 + */ + machineIp?: string; + + /** + * 设备端口 + */ + machinePort?: number; + + /** + * 设备协议 + */ + accessProtocol?: string; + + /** + * 寄存器地址 + */ + registerAddress?: string; + + /** + * 数据类型(1、bool,2、short,3int,4long,5float,6byte,7ushort,8uint,9ulong,10double,11字符串) + */ + dataType?: string; + + /** + * 数据长度 + */ + dataLength?: number; + + /** + * 数据编码格式(1ASCII,2Unicode,3Unicode-big,4UTF-8,5UTF-32,6、ANSI,7、GB2312) + */ + dataEncoding?: string; + + /** + * 请求间隔(单位:毫秒) + */ + requestInterval?: number; + + /** + * 入库类型(1直接入库 2扫描入库) + */ + instockType?: string; + + /** + * 班制类型(2两班 3三班) + */ + classType?: string; + + /** + * 日期范围参数 + */ + params?: any; } diff --git a/src/api/mes/toolingType/index.ts b/src/api/mes/toolingType/index.ts new file mode 100644 index 0000000..69e45d6 --- /dev/null +++ b/src/api/mes/toolingType/index.ts @@ -0,0 +1,77 @@ +import request from '@/utils/request'; +import { AxiosPromise } from 'axios'; +import { ToolingTypeVO, ToolingTypeForm, ToolingTypeQuery } from '@/api/mes/toolingType/types'; + +/** + * 查询载具工装类型列表 + * @param query + * @returns {*} + */ + +export const listToolingType = (query?: ToolingTypeQuery): AxiosPromise => { + return request({ + url: '/mes/toolingType/list', + method: 'get', + params: query + }); +}; + +/** + * 查询载具工装类型详细 + * @param toolingTypeId + */ +export const getToolingType = (toolingTypeId: string | number): AxiosPromise => { + return request({ + url: '/mes/toolingType/' + toolingTypeId, + method: 'get' + }); +}; + +/** + * 新增载具工装类型 + * @param data + */ +export const addToolingType = (data: ToolingTypeForm) => { + return request({ + url: '/mes/toolingType', + method: 'post', + data: data + }); +}; + +/** + * 修改载具工装类型 + * @param data + */ +export const updateToolingType = (data: ToolingTypeForm) => { + return request({ + url: '/mes/toolingType', + method: 'put', + data: data + }); +}; + +/** + * 删除载具工装类型 + * @param toolingTypeId + */ +export const delToolingType = (toolingTypeId: string | number | Array) => { + return request({ + url: '/mes/toolingType/' + toolingTypeId, + method: 'delete' + }); +}; + + +/** + * 下拉框查询载具工装类型列表 + * @param query + * @returns {*} + */ +export function getBaseToolingTypeList (query) { + return request({ + url: '/mes/toolingType/getBaseToolingTypeList', + method: 'get', + params: query + }); +}; diff --git a/src/api/mes/toolingType/types.ts b/src/api/mes/toolingType/types.ts new file mode 100644 index 0000000..537bed8 --- /dev/null +++ b/src/api/mes/toolingType/types.ts @@ -0,0 +1,129 @@ +export interface ToolingTypeVO { + /** + * 主键标识 + */ + toolingTypeId: string | number; + + /** + * 工装类型编号 + */ + toolingTypeCode: string; + + /** + * 工装类型名称 + */ + toolingTypeName: string; + + /** + * 工装类型规格 + */ + toolingSpecCode: string; + + /** + * 标准使用次数/秒 + */ + standardLife: number; + + /** + * 标准重量(kg) + */ + standardWeight: number; + + /** + * 备注 + */ + remark: string; + + /** + * 关联物料信息 + */ + typeRelationList?: any[]; +} + +export interface ToolingTypeForm extends BaseEntity { + /** + * 主键标识 + */ + toolingTypeId?: string | number; + + /** + * 工装类型编号 + */ + toolingTypeCode?: string; + + /** + * 工装类型名称 + */ + toolingTypeName?: string; + + /** + * 工装类型规格 + */ + toolingSpecCode?: string; + + /** + * 标准使用次数/秒 + */ + standardLife?: number; + + /** + * 标准重量(kg) + */ + standardWeight?: number; + + /** + * 备注 + */ + remark?: string; + + /** + * 关联物料信息 + */ + typeRelationList?: any[]; + + /** + * 关联工序信息 + */ + processList?: any[]; +} + +export interface ToolingTypeQuery extends PageQuery { + + /** + * 主键标识 + */ + toolingTypeId?: string | number; + + /** + * 工装类型编号 + */ + toolingTypeCode?: string; + + /** + * 工装类型名称 + */ + toolingTypeName?: string; + + /** + * 工装类型规格 + */ + toolingSpecCode?: string; + + /** + * 标准使用次数/秒 + */ + standardLife?: number; + + /** + * 标准重量(kg) + */ + standardWeight?: number; + + /** + * 日期范围参数 + */ + params?: any; +} + + + diff --git a/src/api/mes/toolingTypeRelation/index.ts b/src/api/mes/toolingTypeRelation/index.ts new file mode 100644 index 0000000..d970084 --- /dev/null +++ b/src/api/mes/toolingTypeRelation/index.ts @@ -0,0 +1,77 @@ +import request from '@/utils/request'; +import { AxiosPromise } from 'axios'; +import { ToolingTypeRelationVO, ToolingTypeRelationForm, ToolingTypeRelationQuery } from '@/api/mes/toolingTypeRelation/types'; + +/** + * 查询载具工装类型关联信息列表 + * @param query + * @returns {*} + */ + +export const listToolingTypeRelation = (query?: ToolingTypeRelationQuery): AxiosPromise => { + return request({ + url: '/mes/toolingTypeRelation/list', + method: 'get', + params: query + }); +}; + +/** + * 查询载具工装类型关联信息详细 + * @param relationId + */ +export const getToolingTypeRelation = (relationId: string | number): AxiosPromise => { + return request({ + url: '/mes/toolingTypeRelation/' + relationId, + method: 'get' + }); +}; + +/** + * 新增载具工装类型关联信息 + * @param data + */ +export const addToolingTypeRelation = (data: ToolingTypeRelationForm) => { + return request({ + url: '/mes/toolingTypeRelation', + method: 'post', + data: data + }); +}; + +/** + * 修改载具工装类型关联信息 + * @param data + */ +export const updateToolingTypeRelation = (data: ToolingTypeRelationForm) => { + return request({ + url: '/mes/toolingTypeRelation', + method: 'put', + data: data + }); +}; + +/** + * 删除载具工装类型关联信息 + * @param relationId + */ +export const delToolingTypeRelation = (relationId: string | number | Array) => { + return request({ + url: '/mes/toolingTypeRelation/' + relationId, + method: 'delete' + }); +}; + + +/** + * 下拉框查询载具工装类型关联信息列表 + * @param query + * @returns {*} + */ +export function getBaseToolingTypeRelationList (query) { + return request({ + url: '/mes/toolingTypeRelation/getBaseToolingTypeRelationList', + method: 'get', + params: query + }); +}; diff --git a/src/api/mes/toolingTypeRelation/types.ts b/src/api/mes/toolingTypeRelation/types.ts new file mode 100644 index 0000000..6fda0d3 --- /dev/null +++ b/src/api/mes/toolingTypeRelation/types.ts @@ -0,0 +1,76 @@ +export interface ToolingTypeRelationVO { + /** + * 主键标识 + */ + relationId: string | number; + + /** + * 工装类型ID + */ + toolingTypeId: string | number; + + /** + * 关联信息类型(1物料 2工序) + */ + relationInfoType: string; + + /** + * 关联信息ID + */ + relationInfoId: string | number; + +} + +export interface ToolingTypeRelationForm extends BaseEntity { + /** + * 主键标识 + */ + relationId?: string | number; + + /** + * 工装类型ID + */ + toolingTypeId?: string | number; + + /** + * 关联信息类型(1物料 2工序) + */ + relationInfoType?: string; + + /** + * 关联信息ID + */ + relationInfoId?: string | number; + +} + +export interface ToolingTypeRelationQuery extends PageQuery { + + /** + * 主键标识 + */ + relationId?: string | number; + + /** + * 工装类型ID + */ + toolingTypeId?: string | number; + + /** + * 关联信息类型(1物料 2工序) + */ + relationInfoType?: string; + + /** + * 关联信息ID + */ + relationInfoId?: string | number; + + /** + * 日期范围参数 + */ + params?: any; +} + + + diff --git a/src/views/dms/baseDeviceCategory/index.vue b/src/views/dms/baseDeviceCategory/index.vue index 7f32d05..81d5ad0 100644 --- a/src/views/dms/baseDeviceCategory/index.vue +++ b/src/views/dms/baseDeviceCategory/index.vue @@ -1,283 +1,284 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + - - - +--> +onMounted(() => { + getList(); +}); + diff --git a/src/views/dms/baseDeviceType/index.vue b/src/views/dms/baseDeviceType/index.vue index 951fe4d..8ea9802 100644 --- a/src/views/dms/baseDeviceType/index.vue +++ b/src/views/dms/baseDeviceType/index.vue @@ -1,377 +1,377 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + - - - - - - - - - - - +--> +onMounted(() => { + getCategorySelect(); + getList(); +}); + diff --git a/src/views/dms/dmsFaultInstanceActivity/approvalRecord.vue b/src/views/dms/dmsFaultInstanceActivity/approvalRecord.vue new file mode 100644 index 0000000..84fbfb1 --- /dev/null +++ b/src/views/dms/dmsFaultInstanceActivity/approvalRecord.vue @@ -0,0 +1,280 @@ + + + diff --git a/src/views/dms/dmsFaultInstanceActivity/backup.vue b/src/views/dms/dmsFaultInstanceActivity/backup.vue new file mode 100644 index 0000000..db10a06 --- /dev/null +++ b/src/views/dms/dmsFaultInstanceActivity/backup.vue @@ -0,0 +1,775 @@ + + + + + diff --git a/src/views/dms/dmsFaultInstanceActivity/index.vue b/src/views/dms/dmsFaultInstanceActivity/index.vue index 60c4499..959a886 100644 --- a/src/views/dms/dmsFaultInstanceActivity/index.vue +++ b/src/views/dms/dmsFaultInstanceActivity/index.vue @@ -4,37 +4,37 @@
- 暂存 - 提交 - {{ currentStepName }} - 主管确认 - 流程进度 @@ -52,7 +52,7 @@ - + @@ -62,24 +62,24 @@ - + - + - + - + @@ -89,66 +89,66 @@

{{ currentStepTitle }}

- - + @@ -157,42 +157,42 @@ - + - + - - - + + + - - - @@ -206,21 +206,21 @@ - - - + + - - + + - - + + @@ -233,8 +233,8 @@ - - + + @@ -264,11 +264,11 @@
- - + @@ -284,7 +284,7 @@ import { addDmsFaultInstanceActivity } from '@/api/dms/dmsFaultInstanceActivity' import { pageByTaskWait } from '@/api/workflow/task'; import { getCurrentDateTime } from '@/utils/dateUtils'; import { getDmsBaseOutsourcingInfoList } from '@/api/dms/dmsBaseOutsourcingInfo'; -import SubmitVerify from '@/components/Process/submitVerify.vue'; +import SubmitVerify from '@/views/dms/dmsFaultInstanceActivity/submitVerify.vue'; import ApprovalRecord from '@/components/Process/approvalRecord.vue'; const { proxy } = getCurrentInstance() as ComponentInternalInstance; @@ -333,9 +333,9 @@ const form = reactive({ ...initFormData }); // 表单验证规则 const rules = reactive({ - faultType: [{ required: true, message: '故障类型不能为空', trigger: 'change' }], - faultDescription: [{ required: true, message: '故障描述不能为空', trigger: 'blur' }], - repairType: [{ required: true, message: '维修类型不能为空', trigger: 'change' }], + faultType: [{ required: false, message: '故障类型不能为空', trigger: 'change' }], + faultDescription: [{ required: false, message: '故障描述不能为空', trigger: 'blur' }], + repairType: [{ required: false, message: '维修类型不能为空', trigger: 'change' }], outsourcingId: [{ required: false, message: '外协单位不能为空', trigger: 'change' }], repairer: [{ required: false, message: '维修人不能为空', trigger: 'blur' }], checkedFault: [{ required: false, message: '检查后的故障判断不能为空', trigger: 'blur' }], @@ -352,7 +352,7 @@ const needProcessResolution = computed(() => currentStepOrder.value > 1); const currentStepName = computed(() => { const stepNames = { 1: '故障报修', - 2: '维修处理', + 2: '维修处理', 3: '维修确认' }; return stepNames[currentStepOrder.value] || '处理工单'; @@ -377,14 +377,14 @@ const confirmButtonShow = computed(() => { // 2. 或者工单状态为维修完成(2)且确认状态为待确认(0) // 3. 且审批状态为审批成功(2) - 只有审批通过的工单才能进行确认 return routeParams.value.type === 'confirm' || - (workOrder.value.billsStatus === '2' && - workOrder.value.repairConfirm === '0' && - workOrder.value.approveStatus === '2'); + (workOrder.value?.billsStatus === '2' && + workOrder.value?.repairConfirm === '0' && + workOrder.value?.approveStatus === '2'); }); // 是否为审批阶段 const isApprovalStage = computed(() => { - return routeParams.value.type === 'approval' && workOrder.value.approveStatus === '1'; + return routeParams.value.type === 'approval' && workOrder.value?.approveStatus === '1'; }); // 提交按钮显示控制逻辑 @@ -392,7 +392,7 @@ const submitButtonShow = computed(() => { return ( routeParams.value.type === 'add' || (routeParams.value.type === 'update' && - workOrder.value.billsStatus && + workOrder.value?.billsStatus && (workOrder.value.billsStatus === 'draft' || workOrder.value.billsStatus === 'cancel' || workOrder.value.billsStatus === 'back')) ); }); @@ -414,16 +414,11 @@ onMounted(async () => { await loadCurrentTask(); } - // 初始化表单数据 - initializeFormData(); + // 初始化表单数据 + initializeFormData(); - // 设置审批阶段的表单验证规则 - if (routeParams.value.type === 'approval' && workOrder.value.approveStatus === '1') { - rules.approveStatus = [{ required: true, message: '审批状态不能为空', trigger: 'change' }]; - } - - // 设置外协单位验证规则 - updateOutsourcingValidation(); + // 动态设置表单验证规则 + setDynamicValidationRules(); } catch (error) { console.error('初始化失败:', error); @@ -446,17 +441,17 @@ watch(() => form.repairType, (newValue) => { const loadWorkOrderInfo = async () => { // 从query参数获取businessId const businessId = routeParams.value.id; - + if (!businessId) { proxy?.$modal.msgError('缺少工单ID参数'); return; } - + const res = await getDmsBillsFaultInstance(businessId); - workOrder.value = res.data; - - // 设置状态显示文本 - workOrderStatusText.value = getStatusText(workOrder.value.billsStatus); + workOrder.value = res.data || {}; // 确保不为null + + // 设置状态显示文本 - 添加安全检查 + workOrderStatusText.value = getStatusText(workOrder.value.billsStatus || ''); }; // 加载当前任务信息 @@ -464,21 +459,21 @@ const loadCurrentTask = async () => { // 从query参数获取businessId和taskId const businessId = routeParams.value.id; const taskId = routeParams.value.taskId; - + // 通过taskId或businessId获取当前任务 const taskRes = await pageByTaskWait({ pageNum: 1, pageSize: 10, flowCode: 'Fault01' // 故障维修流程代码 }); - - const tasks = taskRes.rows.filter(task => + + const tasks = taskRes.rows.filter(task => task.businessId === businessId || task.id === taskId ); - + if (tasks.length > 0) { currentTask.value = tasks[0]; - + // 根据节点名称确定当前步骤 const nodeName = currentTask.value.nodeName; if (nodeName === '故障报修') { @@ -488,7 +483,7 @@ const loadCurrentTask = async () => { } else if (nodeName === '维修确认') { currentStepOrder.value = 3; } - + // 动态设置处理意见校验规则 if (needProcessResolution.value) { rules.processHandleResolution = [ @@ -501,41 +496,37 @@ const loadCurrentTask = async () => { // 初始化表单数据 const initializeFormData = () => { // 基础信息从工单获取 - form.repairInstanceId = workOrder.value.repairInstanceId; + form.repairInstanceId = workOrder.value?.repairInstanceId; form.processStepOrder = currentStepOrder.value; + + // 处理所有字段,确保没有undefined值 + form.faultType = workOrder.value?.faultType || ''; + form.faultDescription = workOrder.value?.faultDescription || ''; + form.designOperations = workOrder.value?.designOperations || ''; + form.repairType = workOrder.value?.repairType || ''; + form.outsourcingId = workOrder.value?.outsourcingId || ''; + form.checkedFault = workOrder.value?.checkedFault || ''; + form.repairContent = workOrder.value?.repairContent || ''; + form.protectedMethod = workOrder.value?.protectedMethod || ''; + form.repairer = workOrder.value?.repairer || ''; + form.repairConfirm = workOrder.value?.repairConfirm || ''; + form.componentsPartsId = workOrder.value?.componentsPartsId || ''; - if (currentStepOrder.value === 1) { - // 第一步:故障报修,表单为空等待用户填写 - form.faultType = workOrder.value.faultType; - form.faultDescription = workOrder.value.faultDescription; - form.designOperations = workOrder.value.designOperations; - form.repairType = workOrder.value.repairType; - form.outsourcingId = workOrder.value.outsourcingId; - } else { - // 第二步、第三步:从工单基础信息预填充 - form.faultType = workOrder.value.faultType; - form.faultDescription = workOrder.value.faultDescription; - form.designOperations = workOrder.value.designOperations; - form.repairType = workOrder.value.repairType; - form.outsourcingId = workOrder.value.outsourcingId; - form.checkedFault = workOrder.value.checkedFault; - form.repairContent = workOrder.value.repairContent; - form.protectedMethod = workOrder.value.protectedMethod; - form.repairer = workOrder.value.repairer; - form.repairConfirm = workOrder.value.repairConfirm; - form.componentsPartsId = workOrder.value.componentsPartsId; + // 如果是审批阶段,设置默认审批状态 + if (routeParams.value.type === 'approval' && !form.approveStatus) { + form.approveStatus = undefined; // 保持未选择状态,让用户必须选择 } }; // 提交表单方法 const submitForm = async (status: string) => { if (!processFormRef.value) return; - + try { const valid = await processFormRef.value.validate(); if (valid) { buttonLoading.value = true; - + if (status === 'draft') { // 暂存逻辑 await addDmsFaultInstanceActivity({ @@ -555,7 +546,7 @@ const submitForm = async (status: string) => { processStepOrder: form.processStepOrder, handleTime: getCurrentDateTime() }); - + proxy?.$modal.msgSuccess('暂存成功'); goBack(); } else { @@ -579,7 +570,7 @@ const submitForm = async (status: string) => { processStepOrder: form.processStepOrder } }; - + // 启动工作流或继续处理 if (routeParams.value.taskId) { submitVerifyRef.value?.openDialog(routeParams.value.taskId); @@ -601,108 +592,73 @@ const submitForm = async (status: string) => { // 审批处理 const approvalVerifyOpen = async () => { if (!processFormRef.value) return; - + try { const valid = await processFormRef.value.validate(); if (valid) { - // 检查审批状态 - if (routeParams.value.type === 'approval' && !form.approveStatus) { - proxy?.$modal.msgError('请选择审批状态'); - return; - } + await proxy?.$modal.confirm('是否确认提交审批?'); - // 准备工作流变量 - 确保变量结构符合SubmitVerify和Warm-Flow要求 - taskVariables.value = { - // 业务实体数据 - entity: { - repairInstanceId: form.repairInstanceId, - faultType: form.faultType, - faultDescription: form.faultDescription, - designOperations: form.designOperations, - repairType: form.repairType, - outsourcingId: form.outsourcingId, - checkedFault: form.checkedFault || '', - repairContent: form.repairContent || '', - protectedMethod: form.protectedMethod || '', - repairer: form.repairer || '', - repairConfirm: form.repairConfirm, - componentsPartsId: form.componentsPartsId, - processHandleResolution: form.processHandleResolution || '', - processStepOrder: form.processStepOrder - } - }; + buttonLoading.value = true; - // 如果是审批阶段,设置跳转条件变量 - if (routeParams.value.type === 'approval' && form.approveStatus) { - // 直接在taskVariables根级别设置approveStatus - 这是SubmitVerify期望的格式 - taskVariables.value.approveStatus = form.approveStatus; - console.log('设置审批状态变量:', form.approveStatus); - } + // 直接调用后端审批接口,后端会在同一事务中处理业务状态更新和工作流推进 + const approveStatus = form.approveStatus; + const message = form.processHandleResolution || ''; + + await approveWorkOrder(form.repairInstanceId, approveStatus, message); - // 如果是确认阶段,设置确认结果变量 - if (routeParams.value.type === 'confirm' && form.repairConfirm) { - // 确认通过传0,确认不通过传1 - const repairConfirmValue = form.repairConfirm === '1' ? '0' : '1'; - taskVariables.value.repairConfirm = repairConfirmValue; - console.log('设置确认结果变量:', repairConfirmValue); - } + const statusText = approveStatus === '2' ? '通过' : '拒绝'; + proxy?.$modal.msgSuccess(`审批${statusText}成功`); - console.log('完整的工作流变量:', taskVariables.value); - - // 直接使用传入的taskId进行审批 - submitVerifyRef.value?.openDialog(routeParams.value.taskId); + // 关闭页面返回 + goBack(); } - } catch (error) { - proxy?.$modal.msgError('表单验证失败,请检查输入项'); + } catch (error: any) { + if (error !== 'cancel' && error !== 'close') { + console.error('审批失败:', error); + proxy?.$modal.msgError('审批失败:' + (error.message || '未知错误')); + } + } finally { + buttonLoading.value = false; } }; // 提交回调 const submitCallback = async (approvalResult?: any) => { try { - // 如果是审批类型,调用审批接口 - if (routeParams.value.type === 'approval') { - // 使用用户选择的审批状态 - const approveStatus = form.approveStatus; // 直接使用表单中选择的审批状态 - const message = approvalResult?.message || form.processHandleResolution || ''; - - await approveWorkOrder(form.repairInstanceId, approveStatus, message); - const statusText = approveStatus === '2' ? '通过' : '拒绝'; - proxy?.$modal.msgSuccess(`审批${statusText}成功`); - } else if (routeParams.value.type === 'confirm') { + if (routeParams.value.type === 'confirm') { // 主管确认逻辑 const confirmResult = form.repairConfirm || '1'; // 默认确认通过 await confirmRepairResult(form.repairInstanceId, confirmResult); proxy?.$modal.msgSuccess('确认完成'); } else { - // 保存工单实例活动记录 - await addDmsFaultInstanceActivity({ - repairInstanceId: form.repairInstanceId, - faultType: form.faultType, - faultDescription: form.faultDescription, - designOperations: form.designOperations, - repairType: form.repairType, - outsourcingId: form.outsourcingId, - checkedFault: form.checkedFault || '', - repairContent: form.repairContent || '', - protectedMethod: form.protectedMethod || '', - repairer: form.repairer || '', - repairConfirm: form.repairConfirm, - componentsPartsId: form.componentsPartsId, - processHandleResolution: form.processHandleResolution || '', - processStepOrder: form.processStepOrder, - handleTime: getCurrentDateTime() - }); - - proxy?.$modal.msgSuccess(`${currentStepName.value}完成`); + // 保存工单实例活动记录 + await addDmsFaultInstanceActivity({ + repairInstanceId: form.repairInstanceId, + faultType: form.faultType, + faultDescription: form.faultDescription, + designOperations: form.designOperations, + repairType: form.repairType, + outsourcingId: form.outsourcingId, + checkedFault: form.checkedFault || '', + repairContent: form.repairContent || '', + protectedMethod: form.protectedMethod || '', + repairer: form.repairer || '', + repairConfirm: form.repairConfirm, + componentsPartsId: form.componentsPartsId, + processHandleResolution: form.processHandleResolution || '', + processStepOrder: form.processStepOrder, + handleTime: getCurrentDateTime() + }); + + proxy?.$modal.msgSuccess(`${currentStepName.value}完成`); } - + // 关闭页面返回 goBack(); - } catch (error: any) { - console.error('操作失败:', error); - proxy?.$modal.msgError('操作失败:' + (error.message || '未知错误')); - } + } catch (error: any) { + console.error('操作失败:', error); + proxy?.$modal.msgError('操作失败:' + (error.message || '未知错误')); + } }; // 主管确认处理 @@ -710,7 +666,7 @@ const handleConfirm = async () => { try { // 设置确认结果 form.repairConfirm = '1'; // 1表示确认通过 - + // 调用审批处理方法(实际上是工作流处理) await approvalVerifyOpen(); } catch (error: any) { @@ -744,15 +700,61 @@ const getOutsourceList = async () => { // 更新外协单位验证规则 const updateOutsourcingValidation = () => { - if (form.repairType === '2') { - // 维修类型为外协时,外协单位为必填 + // 只有在非审批阶段且维修类型为外协时才设置为必填 + if (routeParams.value.type !== 'approval' && form.repairType === '2') { rules.outsourcingId = [{ required: true, message: '外协单位不能为空', trigger: 'change' }]; } else { - // 其他情况下,外协单位不是必填 rules.outsourcingId = [{ required: false, message: '外协单位不能为空', trigger: 'change' }]; } }; +// 动态设置表单验证规则 +const setDynamicValidationRules = () => { + // 重置所有规则为非必填 + Object.keys(rules).forEach(key => { + rules[key] = [{ required: false, message: rules[key][0].message, trigger: rules[key][0].trigger }]; + }); + + // 根据页面类型和步骤设置验证规则 + if (routeParams.value.type === 'approval') { + // 审批阶段只需要审批状态和处理意见 + rules.approveStatus = [{ required: true, message: '审批状态不能为空', trigger: 'change' }]; + if (needProcessResolution.value) { + rules.processHandleResolution = [{ required: true, message: '处理意见不能为空', trigger: 'blur' }]; + } + } else if (routeParams.value.type === 'confirm') { + // 确认阶段只需要确认结果和处理意见 + rules.repairConfirm = [{ required: true, message: '维修结果不能为空', trigger: 'change' }]; + rules.processHandleResolution = [{ required: true, message: '处理意见不能为空', trigger: 'blur' }]; + } else { + // 新增或编辑模式,根据当前步骤设置验证规则 + if (currentStepOrder.value === 1) { + // 第一步:故障报修 + rules.faultType = [{ required: true, message: '故障类型不能为空', trigger: 'change' }]; + rules.faultDescription = [{ required: true, message: '故障描述不能为空', trigger: 'blur' }]; + rules.repairType = [{ required: true, message: '维修类型不能为空', trigger: 'change' }]; + } else if (currentStepOrder.value === 2) { + // 第二步:维修处理 + rules.repairer = [{ required: true, message: '维修人不能为空', trigger: 'blur' }]; + rules.checkedFault = [{ required: true, message: '检查后的故障判断不能为空', trigger: 'blur' }]; + rules.protectedMethod = [{ required: true, message: '维修措施不能为空', trigger: 'blur' }]; + rules.repairContent = [{ required: true, message: '维修内容不能为空', trigger: 'blur' }]; + if (needProcessResolution.value) { + rules.processHandleResolution = [{ required: true, message: '处理意见不能为空', trigger: 'blur' }]; + } + } else if (currentStepOrder.value === 3) { + // 第三步:维修确认 + rules.repairConfirm = [{ required: true, message: '维修结果不能为空', trigger: 'change' }]; + if (needProcessResolution.value) { + rules.processHandleResolution = [{ required: true, message: '处理意见不能为空', trigger: 'blur' }]; + } + } + } + + // 更新外协单位验证规则 + updateOutsourcingValidation(); +}; + // 工具函数 const getStatusText = (status: string) => { const statusMap = { @@ -772,4 +774,4 @@ const getStatusText = (status: string) => { color: #303133; font-weight: 600; } - \ No newline at end of file + diff --git a/src/views/dms/dmsFaultInstanceActivity/submitVerify.vue b/src/views/dms/dmsFaultInstanceActivity/submitVerify.vue new file mode 100644 index 0000000..f6d41ad --- /dev/null +++ b/src/views/dms/dmsFaultInstanceActivity/submitVerify.vue @@ -0,0 +1,557 @@ + + + + \ No newline at end of file diff --git a/src/views/mes/baseClassTeamInfo/index.vue b/src/views/mes/baseClassTeamInfo/index.vue index 0ff022e..d973633 100644 --- a/src/views/mes/baseClassTeamInfo/index.vue +++ b/src/views/mes/baseClassTeamInfo/index.vue @@ -134,7 +134,7 @@ - + @@ -292,10 +292,10 @@ const columns = ref([ { key: 0, label: `班组编号`, visible: true }, { key: 1, label: `班组名称`, visible: true }, { key: 2, label: `班组负责人`, visible: true }, - { key: 3, label: `班次`, visible: true }, - { key: 4, label: `工序`, visible: true }, - { key: 5, label: `工位`, visible: true }, - { key: 6, label: `设备`, visible: true }, + { key: 3, label: `班次`, visible: false }, + { key: 4, label: `工序`, visible: false }, + { key: 5, label: `工位`, visible: false }, + { key: 6, label: `设备`, visible: false }, { key: 7, label: `激活标识`, visible: true }, /* { key: 10, label: `创建部门`, visible: true }, { key: 11, label: `创建人`, visible: true }, diff --git a/src/views/mes/baseRoute/index.vue b/src/views/mes/baseRoute/index.vue index d54420d..8b08b81 100644 --- a/src/views/mes/baseRoute/index.vue +++ b/src/views/mes/baseRoute/index.vue @@ -13,11 +13,11 @@ - - - - - + + + + + 搜索 重置 @@ -110,23 +110,14 @@ @@ -176,20 +176,20 @@ > - - - - - - - - - - - - - - + + + + + + + + + + + + + + - - - - - - - - - - + + + + + + + + + + @@ -233,64 +233,7 @@ - - - - - - - - 工艺路线组成信息 - - - 添加 - - - 删除 - - - - - - - - - - - - - - - - - - - + @@ -338,7 +281,7 @@ @@ -353,20 +296,344 @@ + + + + + + + 工艺路线关联工艺步骤信息 + + + 添加工艺步骤 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + {{dict.label}} + + + + + + + + + + {{dict.label}} + + + + + {{dict.label}} + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + {{dict.label}} + + + + + {{dict.label}} + + + + + {{dict.label}} + + + + + {{dict.label}} + + + + + {{dict.label}} + + + + + {{dict.label}} + + + + + {{dict.label}} + + + + + + + + + + + + + + + + + +
diff --git a/src/views/mes/baseShiftInfo/index.vue b/src/views/mes/baseShiftInfo/index.vue index 8164aee..cc6a8f3 100644 --- a/src/views/mes/baseShiftInfo/index.vue +++ b/src/views/mes/baseShiftInfo/index.vue @@ -13,6 +13,11 @@ + + + + + + + + + +