diff --git a/src/api/eam/equipmentRepairJobDetail/index.ts b/src/api/eam/equipmentRepairJobDetail/index.ts new file mode 100644 index 000000000..efe6bdaa8 --- /dev/null +++ b/src/api/eam/equipmentRepairJobDetail/index.ts @@ -0,0 +1,59 @@ +import request from '@/config/axios' + +export interface EquipmentRepairJobDetailVO { + id: number + number: string + masterId: number + describing: string + faultCause: string + workOut: string + maintenances: string + departmentCode: string + remark: string + siteId: string + available: string + deletionTime: Date + deleterId: byte[] + concurrencyStamp: number +} + +// 查询维修工单子列表 +export const getEquipmentRepairJobDetailPage = async (params) => { + if (params.isSearch) { + delete params.isSearch + const data = {...params} + return await request.post({ url: '/eam/equipment-repair-job-detail/senior', data }) + } else { + return await request.get({ url: `/eam/equipment-repair-job-detail/page`, params }) + } +} + +// 查询维修工单子详情 +export const getEquipmentRepairJobDetail = async (id: number) => { + return await request.get({ url: `/eam/equipment-repair-job-detail/get?id=` + id }) +} + +// 新增维修工单子 +export const createEquipmentRepairJobDetail = async (data: EquipmentRepairJobDetailVO) => { + return await request.post({ url: `/eam/equipment-repair-job-detail/create`, data }) +} + +// 修改维修工单子 +export const updateEquipmentRepairJobDetail = async (data: EquipmentRepairJobDetailVO) => { + return await request.put({ url: `/eam/equipment-repair-job-detail/update`, data }) +} + +// 删除维修工单子 +export const deleteEquipmentRepairJobDetail = async (id: number) => { + return await request.delete({ url: `/eam/equipment-repair-job-detail/delete?id=` + id }) +} + +// 导出维修工单子 Excel +export const exportEquipmentRepairJobDetail = async (params) => { + return await request.download({ url: `/eam/equipment-repair-job-detail/export-excel`, params }) +} + +// 下载用户导入模板 +export const importTemplate = () => { + return request.download({ url: '/eam/equipment-repair-job-detail/get-import-template' }) +} \ No newline at end of file diff --git a/src/api/eam/equipmentRepairJobMain/index.ts b/src/api/eam/equipmentRepairJobMain/index.ts new file mode 100644 index 000000000..471f98905 --- /dev/null +++ b/src/api/eam/equipmentRepairJobMain/index.ts @@ -0,0 +1,93 @@ +import request from '@/config/axios' +import {EquipmentReportRepairRequestVO} from "@/api/eam/equipmentReportRepairRequest"; + +export interface EquipmentRepairJobMainVO { + id: number + number: string + type: string + repairNumber: string + sources: string + maintenanceDesc: string + urgency: string + level: string + equipmentCode: string + shutDown: boolean + startTime: Date + endTime: Date + totalMinutes: number + verifyer: number + verifyContent: string + verifyTime: Date + maintenancer: number + maintenancePhone: string + completeResult: string + completionTime: Date + maintenanceTime: Date + repairTime: Date + repairer: number + faultType: string + status: string + autoOrder: string + autoPerform: string + autoVerify: string + directCreateRecord: string + classType: string + factoryAreaCode: string + workshopCode: string + lineCode: string + processCode: string + workstationCode: string + departmentCode: string + remark: string + siteId: string + available: string + deletionTime: Date + deleterId: byte[] + concurrencyStamp: number +} + +// 查询维修工单主列表 +export const getEquipmentRepairJobMainPage = async (params) => { + if (params.isSearch) { + delete params.isSearch + const data = {...params} + return await request.post({ url: '/eam/equipment-repair-job-main/senior', data }) + } else { + return await request.get({ url: `/eam/equipment-repair-job-main/page`, params }) + } +} + +// 查询维修工单主详情 +export const getEquipmentRepairJobMain = async (id: number) => { + return await request.get({ url: `/eam/equipment-repair-job-main/get?id=` + id }) +} + +// 新增维修工单主 +export const createEquipmentRepairJobMain = async (data: EquipmentRepairJobMainVO) => { + return await request.post({ url: `/eam/equipment-repair-job-main/create`, data }) +} + +// 修改维修工单主 +export const updateEquipmentRepairJobMain = async (data: EquipmentRepairJobMainVO) => { + return await request.put({ url: `/eam/equipment-repair-job-main/update`, data }) +} + +// 删除维修工单主 +export const deleteEquipmentRepairJobMain = async (id: number) => { + return await request.delete({ url: `/eam/equipment-repair-job-main/delete?id=` + id }) +} + +// 导出维修工单主 Excel +export const exportEquipmentRepairJobMain = async (params) => { + return await request.download({ url: `/eam/equipment-repair-job-main/export-excel`, params }) +} + +// 下载用户导入模板 +export const importTemplate = () => { + return request.download({ url: '/eam/equipment-repair-job-main/get-import-template' }) +} + +// 修改维修工单状态 +export const updateEquipmentRepairOrder = async (data: EquipmentRepairJobMainVO) => { + return await request.post({ url: `/eam/equipment-repair-job-main/updateOrder`, data }) +} diff --git a/src/api/eam/equipmentReportRepairRequest/index.ts b/src/api/eam/equipmentReportRepairRequest/index.ts index f09c4d563..1eeec7e86 100644 --- a/src/api/eam/equipmentReportRepairRequest/index.ts +++ b/src/api/eam/equipmentReportRepairRequest/index.ts @@ -70,4 +70,14 @@ export const exportEquipmentReportRepairRequest = async (params) => { // 下载用户导入模板 export const importTemplate = () => { return request.download({ url: '/eam/equipment-report-repair-request/get-import-template' }) -} \ No newline at end of file +} + +// 修改报修工单状态 +export const updateEquipmentReportRepairOrder = async (data: EquipmentReportRepairRequestVO) => { + return await request.post({ url: `/eam/equipment-report-repair-request/updateOrder`, data }) +} + +// 完成并创建维修工单 +export const createEquipmentWeixiuOrder = async (data: EquipmentReportRepairRequestVO) => { + return await request.post({ url: `/eam/equipment-report-repair-request/updateCreateOrder`, data }) +} diff --git a/src/api/home/index.ts b/src/api/home/index.ts index aa8cb1388..dee170023 100644 --- a/src/api/home/index.ts +++ b/src/api/home/index.ts @@ -20,3 +20,40 @@ export const getProductData = async () => { return await request.get({ url: `/wms/index/indexProduct` }) } +// 超期库存预警 +export const getOverdueBalance = async (params) => { + return await request.get({ url: `/wms/index/pageOverdueBalance`,params }) +} + +// 呆滞库存预警 +export const getStagnantBalance = async (params) => { + return await request.get({ url: `/wms/index/pageStagnantBalance` ,params}) +} +// 高低储预警 +export const getWarningBalance = async (params) => { + return await request.get({ url: `/wms/index/pageWarningBalance` ,params}) +} + +// 本月退货明细 +export const getPurchasereturnRecordMonth = async (params) => { + return await request.get({ url: `/wms/index/pagePurchasereturnRecordMonth`,params }) +} + +// 本月索赔明细 +export const getPurchaseclaimRecordMonth = async (params) => { + return await request.get({ url: `/wms/index/pagePurchaseclaimRecordMonth`,params }) +} + +// 今日生产计划 +export const getProductionToday = async (params) => { + return await request.get({ url: `/wms/index/pageProductionToday`,params }) +} + +// 线边安全库存 +export const getSafeLocation = async (params) => { + return await request.get({ url: `/wms/index/pageSafeLocation`,params }) +} +// 待上架成品库存 +export const getProductputawayJobDetail = async (params) => { + return await request.get({ url: `/wms/index/pageProductputawayJobDetail`,params }) +} \ No newline at end of file diff --git a/src/api/wms/inventoryinitRecordDetail/index.ts b/src/api/wms/inventoryinitRecordDetail/index.ts index c789ca497..fe2d27f22 100644 --- a/src/api/wms/inventoryinitRecordDetail/index.ts +++ b/src/api/wms/inventoryinitRecordDetail/index.ts @@ -72,4 +72,9 @@ export const exportInventoryinitRecordDetail = async (params) => { // 下载用户导入模板 export const importTemplate = () => { return request.download({ url: '/wms/inventoryinit-record-detail/get-import-template' }) +} + +// 批量打印 +export const printLabelBatchByIdSelection = async (data: any) => { + return await request.post({ url: `/wms/inventoryinit-record-main/printLabelBatchById` ,data}) } \ No newline at end of file diff --git a/src/api/wms/productreceiptRequestMain/index.ts b/src/api/wms/productreceiptRequestMain/index.ts index 0d337b177..d809c5efa 100644 --- a/src/api/wms/productreceiptRequestMain/index.ts +++ b/src/api/wms/productreceiptRequestMain/index.ts @@ -137,4 +137,10 @@ export const agree = (id) => { // 处理 export const handle = (id) => { return request.put({ url: '/wms/productreceipt-request-main/handle?id=' + id }) +} + + +// 创建标签 +export const productCreateLabel = async (data: ProductreceiptRequestMainVO) => { + return await request.post({ url: `/wms/productreceipt-request-main/productCreateLabel`, data }) } \ No newline at end of file diff --git a/src/api/wms/qadproductionplan/index.ts b/src/api/wms/qadproductionplan/index.ts index c25893833..5eda9dfeb 100644 --- a/src/api/wms/qadproductionplan/index.ts +++ b/src/api/wms/qadproductionplan/index.ts @@ -26,6 +26,17 @@ export const getQadProductionPlanMainPage = async (params) => { return await request.get({ url: `/wms/qad-production-plan-main/page`, params }) } } +export const getQadProductionPlanDetailPage = async (params) => { + if (params.isSearch) { + delete params.isSearch + const data = {...params} + return await request.post({ url: '/wms/qad-production-plan-detail/senior', data }) + } else { + return await request.get({ url: `/wms/qad-production-plan-detail/page`, params }) + } +} + + // 查询QAD生产计划主详情 export const getQadProductionPlanMain = async (id: number) => { diff --git a/src/api/wms/unplannedissueRecordDetail/index.ts b/src/api/wms/unplannedissueRecordDetail/index.ts index b72dd7835..9e508c4ae 100644 --- a/src/api/wms/unplannedissueRecordDetail/index.ts +++ b/src/api/wms/unplannedissueRecordDetail/index.ts @@ -38,6 +38,9 @@ export const getUnplannedissueRecordDetailPage = async (params) => { 'action':'==', 'value':'1' } + if(!data.filters){ + data.filters = [] + } data.filters.push(dataTypeCondition) return await request.post({ url: '/wms/unplannedissue-record-detail/senior', data }) } else { diff --git a/src/api/wms/unplannedissueRequestDetail/index.ts b/src/api/wms/unplannedissueRequestDetail/index.ts index be5249f00..99adb86f7 100644 --- a/src/api/wms/unplannedissueRequestDetail/index.ts +++ b/src/api/wms/unplannedissueRequestDetail/index.ts @@ -33,6 +33,9 @@ export const getUnplannedissueRequestDetailPage = async (params) => { 'action':'==', 'value':'1' } + if(!data.filters){ + data.filters = []; + } data.filters.push(dataTypeCondition) return await request.post({ url: '/wms/unplannedissue-request-detail/senior', data }) } else { diff --git a/src/components/BasicForm/src/BasicForm.vue b/src/components/BasicForm/src/BasicForm.vue index 716e2006a..c34237694 100644 --- a/src/components/BasicForm/src/BasicForm.vue +++ b/src/components/BasicForm/src/BasicForm.vue @@ -130,6 +130,7 @@ import ButtonBase from '@/components/XButton/src/ButtonBase.vue' import TableForm from '@/components/TableForm/src/TableForm.vue' import TableFormCountPlan from '@/components/TableFormCountPlan/src/TableFormCountPlan.vue' import { DICT_TYPE, getStrDictOptions } from '@/utils/dict' +import { debounce } from 'lodash-es' const props = defineProps({ // 显示窗口宽度设置 @@ -565,7 +566,9 @@ const buttonBaseClick = (val) => { } // 保存 else if (val == 'save') { - submitForm() + debounce(() => { + submitForm() + }, 2000)() } // 关闭 else if (val == 'close') { diff --git a/src/components/SearchTable/src/SearchTable.vue b/src/components/SearchTable/src/SearchTable.vue index 084a68806..c7f7cd534 100644 --- a/src/components/SearchTable/src/SearchTable.vue +++ b/src/components/SearchTable/src/SearchTable.vue @@ -10,6 +10,7 @@ :HeadButttondata="HeadButttondata" :routeName="routeName" @searchFormClick="searchFormClick" + @buttonBaseClick="buttonBaseClick" :allSchemas="allSchemasRef" /> @@ -26,6 +27,7 @@ v-model:sort="tableObjectRef.sort" :searchTableSelectionsList="searchTableSelectionsList" :selection="true" + :selectionTotal="multipleBol" :reserveSelection="true" row-key="id" /> @@ -53,10 +55,18 @@ routeName.value = route.name const searchDialogVisible = ref(false) // 弹窗的是否展示 const dialogTitle = ref('') // 弹窗的标题 const formLoading = ref(false) // 表单的加载中:1)修改时的数据加载;2)提交的按钮禁用 +const multipleBol = ref(false) + // 列表头部按钮 -const HeadButttondata = ref([ +const HeadButttondata = ref(multipleBol.value? +[ + defaultButtons.defaultWhenPageBtn(null), // 选择当页 + defaultButtons.defaultUnselectPageBtn(null), // 反选当页 + // defaultButtons.defaultDeselectAllBtn(null), // 取消全选 defaultButtons.defaultFilterBtn(null), // 筛选 +]:[ + defaultButtons.defaultFilterBtn(null) // 筛选 ]) /** 打开弹窗 */ @@ -71,28 +81,39 @@ const searchFieldRef = ref() const typeRef = ref() const rowRef = ref() const allSchemasRef = ref() -const multipleBol = ref(false) const searchConditionRef = ref() const searchTableSelectionsList = ref()//表格弹窗回显的列表 const openData = (titleName: any, tableObject:any ,allSchemas: any,multiple: any) => { dialogWidth.value = '80%' - HeadButttondata.value = [ + multipleBol.value = multiple + HeadButttondata.value = multiple?[ + defaultButtons.defaultWhenPageBtn(null), // 选择当页 + defaultButtons.defaultUnselectPageBtn(null), // 反选当页 + // defaultButtons.defaultDeselectAllBtn(null), // 取消全选 + defaultButtons.defaultFilterBtn(null), // 筛选 + ]:[ defaultButtons.defaultFilterBtn(null), // 筛选 ] dialogTitle.value = t(`ts.${titleName}`).replace('ts.','') tableObjectRef.value = tableObject searchDialogVisible.value = true - multipleBol.value = multiple allSchemasRef.value = allSchemas searchSchema.value = allSchemas.searchSchema tableColumns.value = allSchemas.tableColumns } const open = (titleName: any, allSchemas: any,getApiPage: any, formField: any, searchField: any,multiple: any, type: any, row: any, searchCondition:any , isCountRequestRe:any,isConcatDetailSchemas=false,detailSchemas: any, searchTableSelections:any) => { dialogWidth.value = '80%' - HeadButttondata.value = [ + multipleBol.value = multiple + HeadButttondata.value = multiple?[ + defaultButtons.defaultWhenPageBtn(null), // 选择当页 + defaultButtons.defaultUnselectPageBtn(null), // 反选当页 + // defaultButtons.defaultDeselectAllBtn(null), // 取消全选 defaultButtons.defaultFilterBtn(null), // 筛选 - ] + ]: + [ + defaultButtons.defaultFilterBtn(null), // 筛选 + ] searchDialogVisible.value = true formFieldRef.value = formField searchFieldRef.value = searchField @@ -108,7 +129,6 @@ const open = (titleName: any, allSchemas: any,getApiPage: any, formField: any, s getPage.value = getApiPage typeRef.value = type rowRef.value = row - multipleBol.value = multiple // dialogTitle.value = t('action.' + type) dialogTitle.value = t(`ts.${titleName}`).replace('ts.','') searchTableSelectionsList.value = searchTableSelections @@ -175,6 +195,20 @@ const searchFormClick = (searchData) => { } getListRef.value() // 刷新当前列表 } +const buttonBaseClick = (val, item) => { + // 设置按钮 + if (val == 'DeselectAll') { + // 取消全选 + searchTableRef.value.clearSelection() + } else if (val == 'UnselectPage') { + // 反选当页 + searchTableRef.value.togglePageSelection() + } else if (val == 'WhenPage') { + // 选择当页 + searchTableRef.value.toggleAllSelection(true) + } +} + defineExpose({ open,openData,hiddenFilterButton ,changeDialogWidth}) // 提供 open 方法,用于打开弹窗 diff --git a/src/components/Table/src/Table.vue b/src/components/Table/src/Table.vue index 811321e7d..493c9f35e 100644 --- a/src/components/Table/src/Table.vue +++ b/src/components/Table/src/Table.vue @@ -21,6 +21,8 @@ export default defineComponent({ currentPage: propTypes.number.def(1), // 是否多选 selection: propTypes.bool.def(false), + // 是否显示多选数量 + selectionTotal: propTypes.bool.def(false), // 是否所有的超出隐藏,优先级低于schema中的showOverflowTooltip, showOverflowTooltip: propTypes.bool.def(true), // 表头 @@ -115,12 +117,36 @@ export default defineComponent({ const selections = ref([]) const sortRef = ref() + // 选中某行 const selectRow = ()=>{ emit('getSelectionRows', currentPageRef.value,elTableRef.value?.getSelectionRows()) } - const selectAll = (val)=>{ + //全选回调 + const selectAll = ()=>{ emit('getSelectionRows', currentPageRef.value,elTableRef.value?.getSelectionRows()) } + //反选 + const togglePageSelection = ()=>{ + unref(getProps).data.forEach(row=>{ + elTableRef.value!.toggleRowSelection(row) + }) + } + // 切换全选/不全选 + const toggleAllSelection = (isAll)=>{ + if(isAll){ + //全选 + if(elTableRef.value?.getSelectionRows().length{ + console.log('clearSelection') + elTableRef.value!.clearSelection() + } + const selectionChange = (selection: Recordable[]) => { selections.value = selection } @@ -134,7 +160,11 @@ export default defineComponent({ setProps, setColumn, selections, - toggleRowSelection + toggleRowSelection, + selectAll, + toggleAllSelection, + togglePageSelection, + clearSelection }) const pagination = computed(() => { @@ -358,13 +388,15 @@ export default defineComponent({ append: () => getSlot(slots, 'append') }} - + {unref(getProps).selectionTotal ? ( +
已选{selections.value.length}条数据
+ ):undefined} {unref(getProps).pagination ? ( // update by 芋艿:保持和 Pagination 组件一致 ) : undefined} diff --git a/src/config/axios/config.ts b/src/config/axios/config.ts index 811650873..9bf0a928a 100644 --- a/src/config/axios/config.ts +++ b/src/config/axios/config.ts @@ -16,7 +16,7 @@ const config: { /** * 接口请求超时时间 */ - request_timeout: 30000, + request_timeout: 300000, /** * 默认接口请求类型 diff --git a/src/layout/components/Menu/src/components/useRenderMenuTitle.tsx b/src/layout/components/Menu/src/components/useRenderMenuTitle.tsx index 87bcecb8e..cdeb35d32 100644 --- a/src/layout/components/Menu/src/components/useRenderMenuTitle.tsx +++ b/src/layout/components/Menu/src/components/useRenderMenuTitle.tsx @@ -9,7 +9,8 @@ export const useRenderMenuTitle = () => { return icon ? ( <> - {t(`ts.${title}` as string).replace('ts.','')} + {/* ellipsis */} + {t(`ts.${title}` as string).replace('ts.','')} ) : ( {t(`ts.${title}` as string).replace('ts.','')} diff --git a/src/locales/en-US.ts b/src/locales/en-US.ts index 49b7ca904..3c66794e2 100644 --- a/src/locales/en-US.ts +++ b/src/locales/en-US.ts @@ -864,6 +864,9 @@ export default { 导出:'Export', 刷新:'Refresh', 筛选:'Filter', + 选择当页:'As Page', + 反选当页:'Unselect Page', + 取消全选:'Deselect All', 设置:'Settings', 确定:'Confirm', '确 定':'Confirm', @@ -1119,6 +1122,11 @@ export default { 忘记密码:'Forget Password', 用户名:'User Name', 邮箱:'Mail', + 今日:'Today', + 请输入驳回原因:'Please enter the reason for rejection', + '驳回原因不能为空,且不超过60字':'The reason for rejection cannot be empty and cannot exceed 60 words', + 批量发布:'Batch release' + }, diff --git a/src/locales/zh-CN.ts b/src/locales/zh-CN.ts index b7cf05325..d31022a59 100644 --- a/src/locales/zh-CN.ts +++ b/src/locales/zh-CN.ts @@ -864,6 +864,9 @@ export default { 导出:'导出', 刷新:'刷新', 筛选:'筛选', + 选择当页:'选择当页', + 反选当页:'反选当页', + 取消全选:'取消全选', 设置:'设置', 确定:'确定', '确 定':'确 定', @@ -1119,7 +1122,10 @@ export default { 忘记密码:'忘记密码', 用户名:'用户名', 邮箱:'邮箱', - + 今日:'今日', + 请输入驳回原因:'请输入驳回原因', + '驳回原因不能为空,且不超过60字':'驳回原因不能为空,且不超过60字', + 批量发布:'批量发布' }, diff --git a/src/utils/dict.ts b/src/utils/dict.ts index d3f2f9de3..67b6c1bc0 100644 --- a/src/utils/dict.ts +++ b/src/utils/dict.ts @@ -354,7 +354,12 @@ export enum DICT_TYPE { REPAIR_LEVEL = 'repair_level', //维修级别 IS_COMPLETED = 'is_completed', //是否完成 MAINTENANCE_CYCLE ='maintenance_cycle', // 保养周期 - EAM_ORDER_STATUS = 'eam_order_status', - EAM_PLAN_STATUS = 'eam_plan_status', + EAM_ORDER_STATUS = 'eam_order_status',// 保养工单状态 + EAM_PLAN_STATUS = 'eam_plan_status', // 保养计划状态 + EAM_REPAIR_REPORT_STATUS = 'eam_repair_report_status', // 报修状态 + EAM_MAINTENANCE_SOURCES = 'eam_maintenance_sources', // 维保数据来源 + EAM_MAINTENANCE_URGENCY = 'eam_maintenance_urgency', // 维保紧急程度 + EAM_MAINTENANCE_LEVEL = 'eam_maintenance_level', // 维保维修级别 + EAM_REPAIR_STATUS = 'eam_repair_status', // 维修状态 OFF_BACK_STATUS = 'off_back_status' } diff --git a/src/utils/disposition/defaultButtons.ts b/src/utils/disposition/defaultButtons.ts index 77d1d6bb5..25cb20558 100644 --- a/src/utils/disposition/defaultButtons.ts +++ b/src/utils/disposition/defaultButtons.ts @@ -159,7 +159,45 @@ export function defaultSearchResetBtn(option:any) { hasPermi: '' }) } - +// 选择当页 +export function defaultWhenPageBtn(option:any) { + return __defaultBtnOption(option,{ + label: t(`ts.选择当页`).replace('ts.', ''), + name: 'WhenPage', + hide: false, + type: 'primary', + color: '', + float:'right', + link: false, // 文本展现按钮 + hasPermi: '' + }) +} +// 反选当页 +export function defaultUnselectPageBtn(option:any) { + return __defaultBtnOption(option,{ + label: t(`ts.反选当页`).replace('ts.', ''), + name: 'UnselectPage', + hide: false, + type: 'primary', + color: '', + float:'right', + link: false, // 文本展现按钮 + hasPermi: '' + }) +} +// 取消全选 +export function defaultDeselectAllBtn(option:any) { + return __defaultBtnOption(option,{ + label: t(`ts.取消全选`).replace('ts.', ''), + name: 'DeselectAll', + hide: false, + type: 'primary', + color: '', + float:'right', + link: false, // 文本展现按钮 + hasPermi: '' + }) +} // form表单-保存按钮 export function formSaveBtn(option:any) { return __defaultBtnOption(option,{ @@ -390,6 +428,32 @@ export function mainListAuditingBtn(option:any) { }) } +// 主列表-审核完成按钮 +export function mainListAuditedBtn(option:any) { + return __defaultBtnOption(option,{ + label: t(`ts.审核完成`).replace('ts.', ''), + name: 'audited', + hide: false, + type: 'primary', + color: '', + link: true, // 文本展现按钮 + hasPermi: '' + }) +} + +// 主列表-撤回按钮 +export function mainListRevokeBtn(option:any) { + return __defaultBtnOption(option,{ + label: t(`ts.撤回`).replace('ts.', ''), + name: 'revoke', + hide: false, + type: 'primary', + color: '', + link: true, // 文本展现按钮 + hasPermi: '' + }) +} + // 主列表-绑定 export function mainListBindBtn(option:any) { return __defaultBtnOption(option,{ @@ -492,7 +556,19 @@ export function mainListOrderPubBtn(option:any) { hasPermi: '' }) } - +// 主列表-订单流程-批量发布按钮 +export function mainListSelectionOrderPubBtn(option:any) { + return __defaultBtnOption(option,{ + label: t(`ts.批量发布`).replace('ts.', ''), + name: 'mainOrderSelectionPub', + hide: false, + type: 'primary', + color: '', + float:'left', + link: false, // 文本展现按钮 + hasPermi: '' + }) +} // 主列表-订单流程-关闭按钮 export function mainListOrderCloBtn(option:any) { return __defaultBtnOption(option,{ diff --git a/src/views/eam/basicFaultCause/basicFaultCause.data.ts b/src/views/eam/basicFaultCause/basicFaultCause.data.ts index 3dc367434..b2861cce7 100644 --- a/src/views/eam/basicFaultCause/basicFaultCause.data.ts +++ b/src/views/eam/basicFaultCause/basicFaultCause.data.ts @@ -31,7 +31,7 @@ export const BasicFaultCause = useCrudSchemas(reactive([ }, }, { - label: '设备编码', + label: '编码', field: 'code', sort: 'custom', isSearch: true, diff --git a/src/views/eam/basicFaultType/basicFaultType.data.ts b/src/views/eam/basicFaultType/basicFaultType.data.ts index 8fe42a032..dd36093d0 100644 --- a/src/views/eam/basicFaultType/basicFaultType.data.ts +++ b/src/views/eam/basicFaultType/basicFaultType.data.ts @@ -18,7 +18,7 @@ export const BasicFaultType = useCrudSchemas(reactive([ isDetail:false, }, { - label: '设备编码', + label: '编码', field: 'code', sort: 'custom', isSearch: true, diff --git a/src/views/eam/equipmentMaintenanceMain/equipmentMaintenanceMain.data.ts b/src/views/eam/equipmentMaintenanceMain/equipmentMaintenanceMain.data.ts index cd1c845de..6f9553762 100644 --- a/src/views/eam/equipmentMaintenanceMain/equipmentMaintenanceMain.data.ts +++ b/src/views/eam/equipmentMaintenanceMain/equipmentMaintenanceMain.data.ts @@ -89,6 +89,8 @@ export const EquipmentMaintenanceMain = useCrudSchemas(reactive([ label: '故障类型枚举', field: 'faultType', sort: 'custom', + dictType: DICT_TYPE.FAILURE_REASON, + dictClass: 'string', isSearch: true, isSearch: false, }, diff --git a/src/views/eam/equipmentMaintenanceMain/index.vue b/src/views/eam/equipmentMaintenanceMain/index.vue index 4db1801b9..e4219bc6d 100644 --- a/src/views/eam/equipmentMaintenanceMain/index.vue +++ b/src/views/eam/equipmentMaintenanceMain/index.vue @@ -353,39 +353,6 @@ const handleFinish = async (row) => { //打开提交表单 finishForm2Ref.value.open('update', row); - - //let res = await EquipmentMaintenanceMainApi.getMaintenanceOrderConfig(); - //系统配置需要验证 - // if(res.remark === 'TRUE'){ - // try { - // - // - // // // 二次确认 - // // await message.delConfirm('是否完成所选中工单?'); - // // const params = ref({ - // // id: '', - // // status:'', - // // }) - // // params.value.id = row.id - // // params.value.status = '5' - // // // 发起 - // // await EquipmentMaintenanceMainApi.executeMaintenanceOrder(params.value) - // // message.success(t('工单已完成')) - // // // 刷新列表 - // // await getList() - // } catch {} - // } - // //系统配置不需要验证 - // if(res.remark === 'FALSE'){ - // try { - // // 二次确认 - // await message.delConfirm('是否完成所选中工单?'); - // - // //打开提交表单 - // finishForm2Ref.value.open('update', row); - // - // } catch {} - // } } /** 验证按钮操作 */ @@ -406,8 +373,6 @@ const handleValidate = async (row) => { await getList() }) - - } /** 启用 */ diff --git a/src/views/eam/equipmentMaintenanceRecordMain/equipmentMaintenanceRecordMain.data.ts b/src/views/eam/equipmentMaintenanceRecordMain/equipmentMaintenanceRecordMain.data.ts index 199b71234..3541eeece 100644 --- a/src/views/eam/equipmentMaintenanceRecordMain/equipmentMaintenanceRecordMain.data.ts +++ b/src/views/eam/equipmentMaintenanceRecordMain/equipmentMaintenanceRecordMain.data.ts @@ -4,138 +4,229 @@ import { dateFormatter } from '@/utils/formatTime' // 表单校验 export const EquipmentMaintenanceRecordMainRules = reactive({ number: [required], + sources: [required], equipmentCode: [required], - planNumber: [required], - status: [required], - factoryAreaCode: [required], - concurrencyStamp: [required] + type: [required], + planStartTime: [required], + planEndTime: [required], + startTime: [required], + endTime: [required], }) export const EquipmentMaintenanceRecordMain = useCrudSchemas(reactive([ { - label: '保养编号', - field: 'number', + label: 'id', + field: 'id', + sort: 'custom', + isForm: false, + }, + { + label: '记录编号', + field: 'recordNo', sort: 'custom', - isSearch: true + isSearch: true, }, { label: '描述', field: 'describing', sort: 'custom', - isSearch: true + isSearch: true, + isSearch: false, + }, + { + label: '保养工单', + field: 'number', + sort: 'custom', + isSearch: true, + }, + { + label: '来源字典', + field: 'sources', + sort: 'custom', + isSearch: true, + isSearch: false, }, { label: '设备编号', field: 'equipmentCode', sort: 'custom', - isSearch: true + isSearch: true, }, { - label: '设备类别', - field: 'category', + label: '故障类型枚举', + field: 'faultType', sort: 'custom', - dictType: DICT_TYPE.DEVICE_TYPE, - dictClass: 'string', // 默认都是字符串类型其他暂不考虑 isSearch: true, - form: { - component: 'SelectV2' - } + isSearch: false, + }, { - label: '班次枚举', - field: 'classes', + label: '工装或设备字典', + field: 'type', sort: 'custom', - // dictType: DICT_TYPE.SHIFT_TYPE, - // dictClass: 'string', // 默认都是字符串类型其他暂不考虑 isSearch: true, + dictType: DICT_TYPE.DEVICE_TYPE, + dictClass: 'string', }, { - label: '保养计划工单', + label: '保养计划工单号', field: 'planNumber', sort: 'custom', - isSearch: true + isSearch: true, }, { - label: '故障类型枚举', - field: 'faultType', + label: '计划开始时间', + field: 'planStartTime', sort: 'custom', - dictType: DICT_TYPE.FAILURE_REASON, - dictClass: 'string', // 默认都是字符串类型其他暂不考虑 - isSearch: true, + formatter: dateFormatter, + isSearch: false, + search: { + component: 'DatePicker', + componentProps: { + valueFormat: 'YYYY-MM-DD HH:mm:ss', + type: 'daterange', + defaultTime: [new Date('1 00:00:00'), new Date('1 23:59:59')] + } + }, form: { - component: 'SelectV2' - } + component: 'DatePicker', + componentProps: { + type: 'datetime', + valueFormat: 'x' + } + }, }, { - label: '保养周期', - field: 'cycle', + label: '计划结束时间', + field: 'planEndTime', sort: 'custom', - dictType: DICT_TYPE.MAINTENANCE_CYCLE, - dictClass: 'string', // 默认都是字符串类型其他暂不考虑 - isSearch: true + formatter: dateFormatter, + isSearch: false, + search: { + component: 'DatePicker', + componentProps: { + valueFormat: 'YYYY-MM-DD HH:mm:ss', + type: 'daterange', + defaultTime: [new Date('1 00:00:00'), new Date('1 23:59:59')] + } + }, + form: { + component: 'DatePicker', + componentProps: { + type: 'datetime', + valueFormat: 'x' + } + }, }, { - label: '保养次数', - field: 'times', + label: '保养开始时间', + field: 'startTime', sort: 'custom', - isSearch: true + formatter: dateFormatter, + isSearch: false, + search: { + component: 'DatePicker', + componentProps: { + valueFormat: 'YYYY-MM-DD HH:mm:ss', + type: 'daterange', + defaultTime: [new Date('1 00:00:00'), new Date('1 23:59:59')] + } + }, + form: { + component: 'DatePicker', + componentProps: { + type: 'datetime', + valueFormat: 'x' + } + }, }, { - label: '验证人', - field: 'verifyer2', + label: '保养结束时间', + field: 'endTime', sort: 'custom', - isSearch: true, + formatter: dateFormatter, + isSearch: false, + search: { + component: 'DatePicker', + componentProps: { + valueFormat: 'YYYY-MM-DD HH:mm:ss', + type: 'daterange', + defaultTime: [new Date('1 00:00:00'), new Date('1 23:59:59')] + } + }, form: { - component: 'InputNumber', - value: 0 - } + component: 'DatePicker', + componentProps: { + type: 'datetime', + valueFormat: 'x' + } + }, }, { - label: '验证内容', - field: 'verifyContent2', + label: '保养班组', + field: 'classType', sort: 'custom', - isSearch: true + isSearch: false, }, { - label: '验证时间', - field: 'verifyTime2', + label: '验证人', + field: 'verifyer', sort: 'custom', - isSearch: true + isSearch: false, }, { - label: '保养人', - field: 'maintenancer', + label: '验证内容', + field: 'verifyContent', sort: 'custom', - isSearch: true, + isSearch: false, form: { - component: 'InputNumber', - value: 0 - } + component: 'Editor', + componentProps: { + valueHtml: '', + height: 200 + } + }, }, { - label: '保养人联系电话', - field: 'maintenancePhone', + label: '验证时间', + field: 'verifyTime', sort: 'custom', - isSearch: true + formatter: dateFormatter, + isSearch: false, + search: { + component: 'DatePicker', + componentProps: { + valueFormat: 'YYYY-MM-DD HH:mm:ss', + type: 'daterange', + defaultTime: [new Date('1 00:00:00'), new Date('1 23:59:59')] + } + }, + form: { + component: 'DatePicker', + componentProps: { + type: 'datetime', + valueFormat: 'x' + } + }, }, { - label: '结果枚举', - field: 'completeResult', + label: '保养人id', + field: 'maintenancer', sort: 'custom', - isSearch: true + isSearch: false, }, { - label: '完成时间', - field: 'completionTime2', + label: '保养人联系电话', + field: 'maintenancePhone', sort: 'custom', - isSearch: true + isSearch: false, }, { - label: '保养时间', - field: 'maintenanceTime', + label: '完成时间', + field: 'completionTime', sort: 'custom', formatter: dateFormatter, - isSearch: true, + isSearch: false, search: { component: 'DatePicker', componentProps: { @@ -150,58 +241,172 @@ export const EquipmentMaintenanceRecordMain = useCrudSchemas(reactive - - + @size-change="getOverdueBalance" + @current-change="getOverdueBalance" + />
@@ -172,7 +176,7 @@
{{ t('home.high_and_low_storage_warning') }}
- + @size-change="getWarningBalance" + @current-change="getWarningBalance" + />
@@ -262,6 +267,7 @@ const getMaterialData = () => { getJobCharts() }) } + const formatter = (type, dict) => { let str = getStrDictOptions(dict).filter((item) => type == item.value)[0]?.label return str @@ -285,32 +291,58 @@ const getJobCharts = async () => { lineIndex.value++ } onMounted(() => { - // getMaterialData() + getMaterialData() + //呆滞库存预警 超期库存预警 + Promise.all([ getStagnantBalance(),getOverdueBalance(),getWarningBalance()]) }) // 呆滞库存预警 const currentPage_stagnantBalance = ref(1) const pageSize_stagnantBalance = ref(10) const total_stagnantBalance= ref(100) -const handleCurrentChange_stagnantBalance = (val)=>{ - console.log('呆滞库存预警',val) +const stagnantBalanceList = ref([]) +const getStagnantBalance = ()=>{ + IndexApi.getStagnantBalance({ + pageNo: currentPage_stagnantBalance.value, + pageSize: pageSize_stagnantBalance.value + }).then((res) => { + console.log('getStagnantBalance',res) + stagnantBalanceList.value = res.list + total_stagnantBalance.value = res.total + }) } - // 超期库存预警 const currentPage_overdueBalance = ref(1) const pageSize_overdueBalance = ref(10) const total_overdueBalance= ref(100) -const handleCurrentChange_overdueBalance = (val)=>{ - console.log('超期库存预警',val) +const overdueBalanceList = ref([]) +const getOverdueBalance = ()=>{ + IndexApi.getOverdueBalance({ + pageNo: currentPage_overdueBalance.value, + pageSize: pageSize_overdueBalance.value + }).then((res) => { + console.log('getOverdueBalance',res) + overdueBalanceList.value = res.list + total_overdueBalance.value = res.total + }) } // 高低储预警 const currentPage_warningBalance = ref(1) const pageSize_warningBalance = ref(10) const total_warningBalance= ref(100) -const handleCurrentChange_warningBalance = (val)=>{ - console.log('高低储预警',val) +const warningBalanceList = ref([]) +const getWarningBalance = ()=>{ + IndexApi.getWarningBalance({ + pageNo: currentPage_warningBalance.value, + pageSize: pageSize_warningBalance.value + }).then((res) => { + console.log('getWarningBalance',res) + warningBalanceList.value = res.list + total_warningBalance.value = res.total + }) } + diff --git a/src/views/home/index.vue b/src/views/home/index.vue index 57e140dcb..39f28f658 100644 --- a/src/views/home/index.vue +++ b/src/views/home/index.vue @@ -5,10 +5,10 @@ --> - + - +
diff --git a/src/views/wms/productionManage/processproduction/processproductionRequest/processproductionRequestMain.data.ts b/src/views/wms/productionManage/processproduction/processproductionRequest/processproductionRequestMain.data.ts index c0088a6f3..7c4a2c5c5 100644 --- a/src/views/wms/productionManage/processproduction/processproductionRequest/processproductionRequestMain.data.ts +++ b/src/views/wms/productionManage/processproduction/processproductionRequest/processproductionRequestMain.data.ts @@ -1,5 +1,5 @@ import type { CrudSchema } from '@/hooks/web/useCrudSchemas' -import { dateFormatter } from '@/utils/formatTime' +import {dateFormatter, dateFormatter2} from '@/utils/formatTime' import * as ItembasicApi from '@/api/wms/itembasic' import { Itembasic } from '@/views/wms/basicDataManage/itemManage/itembasic/itembasic.data' import * as ProductionlineitemApi from '@/api/wms/productionlineitem' @@ -289,7 +289,7 @@ export const ProcessproductionRequestDetail = useCrudSchemas(reactive { } const { tableObject, tableMethods } = useTable({ - getListApi: QadProductionPlanMainApi.getQadProductionPlanMainPage // 分页接口 + getListApi: QadProductionPlanMainApi.getQadProductionPlanDetailPage // 分页接口 }) // 获得表格的各种操作 diff --git a/src/views/wms/productionManage/productionplan/qadproductionplan/qadProductionPlanMain.data.ts b/src/views/wms/productionManage/productionplan/qadproductionplan/qadProductionPlanMain.data.ts index 01a9d1b4a..93884b7a8 100644 --- a/src/views/wms/productionManage/productionplan/qadproductionplan/qadProductionPlanMain.data.ts +++ b/src/views/wms/productionManage/productionplan/qadproductionplan/qadProductionPlanMain.data.ts @@ -1,5 +1,5 @@ import type { CrudSchema } from '@/hooks/web/useCrudSchemas' -import { dateFormatter } from '@/utils/formatTime' +import { dateFormatter2 } from '@/utils/formatTime' // 表单校验 export const QadProductionPlanMainRules = reactive({ @@ -9,35 +9,31 @@ export const QadProductionPlanMainRules = reactive({ }) export const QadProductionPlanMain = useCrudSchemas(reactive([ - { - label: '顺序', - field: 'displayOrder', - sort: 'custom', - form: { - component: 'InputNumber', - value: 0 - }, - }, { label: '单据号', field: 'number', sort: 'custom', + table: { + width: 350, + } }, { - label: '车间', - field: 'workshop', + label: '物料代码', + field: 'itemCode', sort: 'custom', isSearch: true, + table: { + width: 150, + } }, { - label: '生产线', - field: 'productionLine', + label: '计划数量', + field: 'planQty', sort: 'custom', - isSearch: true, }, { - label: '班次', - field: 'shift', + label: '生产线', + field: 'productionLine', sort: 'custom', isSearch: true, }, @@ -50,7 +46,7 @@ export const QadProductionPlanMain = useCrudSchemas(reactive([ label: '计划日期', field: 'planDate', sort: 'custom', - formatter: dateFormatter, + formatter: dateFormatter2, form: { component: 'DatePicker', componentProps: { @@ -59,11 +55,6 @@ export const QadProductionPlanMain = useCrudSchemas(reactive([ } }, }, - { - label: '明细列表', - field: 'details', - sort: 'custom', - }, { label: '计划类型', field: 'planType', @@ -80,33 +71,33 @@ export const QadProductionPlanMain = useCrudSchemas(reactive([ component: 'SelectV2' }, }, - { - label: '备注', - field: 'remark', - sort: 'custom', - }, - { - label: '是否可用', - field: 'available', - sort: 'custom', - isForm: false, - }, - { - label: '状态', - field: 'status', - sort: 'custom', - isForm: false, - }, - { - label: '订单号', - field: 'woNumber', - sort: 'custom', - }, - { - label: '订单行', - field: 'woLine', - sort: 'custom', - }, + // { + // label: '备注', + // field: 'remark', + // sort: 'custom', + // }, + // { + // label: '是否可用', + // field: 'available', + // sort: 'custom', + // isForm: false, + // }, + // { + // label: '状态', + // field: 'status', + // sort: 'custom', + // isForm: false, + // }, + // { + // label: '订单号', + // field: 'woNumber', + // sort: 'custom', + // }, + // { + // label: '订单行', + // field: 'woLine', + // sort: 'custom', + // }, // { // label: '操作', // field: 'action', diff --git a/src/views/wms/productionManage/productputaway/productputawayRequestMain/index.vue b/src/views/wms/productionManage/productputaway/productputawayRequestMain/index.vue index 36f19ee82..b2a0b323e 100644 --- a/src/views/wms/productionManage/productputaway/productputawayRequestMain/index.vue +++ b/src/views/wms/productionManage/productputaway/productputawayRequestMain/index.vue @@ -77,8 +77,8 @@ /> - +