¶Ô±ÈÐÂÎļþ |
| | |
| | | import type { FaultKnowVO } from './model'; |
| | | |
| | | import type { ID, IDS } from '#/api/common'; |
| | | |
| | | import { commonExport } from '#/api/helper'; |
| | | import { requestClient } from '#/api/request'; |
| | | |
| | | enum Api { |
| | | faultKnowExport = '/eims/faultKnow/export', |
| | | faultKnowList = '/eims/faultKnow/list', |
| | | root = '/eims/faultKnow' |
| | | } |
| | | |
| | | /** |
| | | * æ¥è¯¢æ
éç¥è¯å表 |
| | | * @param params |
| | | * @returns {*} |
| | | */ |
| | | |
| | | export function listFaultKnow(params?: any) { |
| | | return requestClient.get<FaultKnowVO[]>(Api.faultKnowList, { params }); |
| | | } |
| | | |
| | | /** |
| | | * æ¥è¯¢æ
éç¥è¯è¯¦ç» |
| | | * @param faultKnowId |
| | | */ |
| | | export function getFaultKnow(faultKnowId: ID) { |
| | | return requestClient.get<FaultKnowVO>(`${Api.root}/${faultKnowId}`); |
| | | } |
| | | |
| | | /** |
| | | * æ°å¢æ
éç¥è¯ |
| | | * @param data |
| | | */ |
| | | export function addFaultKnow(data: any) { |
| | | return requestClient.postWithMsg<void>(Api.root, data); |
| | | } |
| | | |
| | | /** |
| | | * ä¿®æ¹æ
éç¥è¯ |
| | | * @param data |
| | | */ |
| | | export function updateFaultKnow(data: any) { |
| | | return requestClient.putWithMsg<void>(Api.root, data); |
| | | } |
| | | |
| | | /** |
| | | * å 餿
éç¥è¯ |
| | | * @param faultKnowId |
| | | */ |
| | | export function delFaultKnow(faultKnowId: IDS) { |
| | | return requestClient.deleteWithMsg<void>(`${Api.root}/${faultKnowId}`); |
| | | } |
| | | /** |
| | | * å¯¼åº |
| | | * @param |
| | | */ |
| | | export function faultKnowExport(data: any) { |
| | | return commonExport(Api.faultKnowExport, data); |
| | | } |
¶Ô±ÈÐÂÎļþ |
| | |
| | | export interface FaultKnowVO { |
| | | /** |
| | | * |
| | | */ |
| | | id: number | string; |
| | | |
| | | /** |
| | | * 设å¤id |
| | | */ |
| | | equId: number | string; |
| | | |
| | | /** |
| | | * 设å¤ç±»å |
| | | */ |
| | | equType: number; |
| | | |
| | | /** |
| | | * 设å¤é¨ä½(åå
¸) |
| | | */ |
| | | equPart: string; |
| | | |
| | | /** |
| | | * ç¥è¯ç¼ç |
| | | */ |
| | | faultCode: string; |
| | | |
| | | /** |
| | | * æ
éç±»å«(åå
¸) |
| | | */ |
| | | faultType: string; |
| | | |
| | | /** |
| | | * æ
éåå (åå
¸) |
| | | */ |
| | | faultReason: string; |
| | | |
| | | /** |
| | | * æ¥ä¿®æè¿° |
| | | */ |
| | | reqDesc: string; |
| | | |
| | | /** |
| | | * å¤çæªæ½ |
| | | */ |
| | | resHandle: string; |
| | | |
| | | /** |
| | | * 夿³¨ |
| | | */ |
| | | remark: string; |
| | | } |
¶Ô±ÈÐÂÎļþ |
| | |
| | | import type { IDS, PageQuery, PageResult } from '#/api/common'; |
| | | import type { SpareInoutVO } from '#/api/eims/spare-inout/model'; |
| | | |
| | | import { commonExport } from '#/api/helper'; |
| | | import { requestClient } from '#/api/request'; |
| | | |
| | | enum Api { |
| | | root = '/eims/spareInout', |
| | | spareInoutExport = '/eims/spareInout/export', |
| | | spareInoutList = '/eims/spareInout/list' |
| | | } |
| | | |
| | | /** |
| | | * æ¥è¯¢ãå¤ä»¶å°è´¦ãå表 |
| | | * @param query |
| | | * @returns {*} |
| | | */ |
| | | |
| | | export function listSpareInout(params?: PageQuery) { |
| | | return requestClient.get<PageResult<SpareInoutVO>>(Api.spareInoutList, { params }); |
| | | } |
| | | |
| | | /** |
| | | * æ¥è¯¢ãå¤ä»¶å°è´¦ãè¯¦ç» |
| | | * @param spareInoutId |
| | | */ |
| | | export function getSpareInout(spareInoutId: any) { |
| | | return requestClient.get<SpareInoutVO>(`${Api.root}/${spareInoutId}`); |
| | | } |
| | | |
| | | /** |
| | | * æ°å¢ãå¤ä»¶å°è´¦ã |
| | | * @param data |
| | | */ |
| | | export function addSpareInout(data: any) { |
| | | return requestClient.postWithMsg<void>(Api.root, data); |
| | | } |
| | | |
| | | /** |
| | | * ä¿®æ¹ãå¤ä»¶å°è´¦ã |
| | | * @param data |
| | | */ |
| | | export function updateSpareInout(data: any) { |
| | | return requestClient.putWithMsg<void>(Api.root, data); |
| | | } |
| | | |
| | | /** |
| | | * å é¤ãå¤ä»¶å°è´¦ã |
| | | * @param spareInoutIds |
| | | */ |
| | | export function delSpareInout(spareInoutIds: IDS) { |
| | | return requestClient.deleteWithMsg<void>(`${Api.root}/${spareInoutIds}`); |
| | | } |
| | | |
| | | /** |
| | | * 导åºãå¤ä»¶å°è´¦ã |
| | | * @param data |
| | | */ |
| | | export function spareInoutExport(data: any) { |
| | | return commonExport(Api.spareInoutExport, data); |
| | | } |
¶Ô±ÈÐÂÎļþ |
| | |
| | | export interface SpareInoutVO { |
| | | /** |
| | | * |
| | | */ |
| | | id: number | string; |
| | | |
| | | /** |
| | | * åå· |
| | | */ |
| | | orderCode: string; |
| | | |
| | | /** |
| | | * åå·æ¥æ |
| | | */ |
| | | orderDate: string; |
| | | |
| | | /** |
| | | * ç»å人 |
| | | */ |
| | | chargeUser: number; |
| | | |
| | | /** |
| | | * å·¥åç±»åï¼1-å
¥åºå 2-åºåºåï¼ åå
¸ |
| | | */ |
| | | type: string; |
| | | |
| | | /** |
| | | * åºåºå®¢æ·åç§°æå
¥åºä¾åºå |
| | | */ |
| | | partnerName: string; |
| | | |
| | | /** |
| | | * å
³èåå·ï¼å¦-ç»´ä¿®åï¼ |
| | | */ |
| | | associatedOrder: string; |
| | | |
| | | /** |
| | | * 夿³¨ |
| | | */ |
| | | remark: string; |
| | | } |
¶Ô±ÈÐÂÎļþ |
| | |
| | | import type { SpareTypeTree, SpareTypeVO } from './model'; |
| | | |
| | | import type { ID, IDS } from '#/api/common'; |
| | | |
| | | import { commonExport } from '#/api/helper'; |
| | | import { requestClient } from '#/api/request'; |
| | | |
| | | enum Api { |
| | | root = '/eims/spareType', |
| | | spareTypeExport = '/eims/spareType/export', |
| | | spareTypeList = '/eims/spareType/list', |
| | | spareTypeTree = '/eims/spareType/tree' |
| | | } |
| | | |
| | | /** |
| | | * æ¥è¯¢å¤ä»¶ç±»åå表 |
| | | * @param query |
| | | * @returns {*} |
| | | */ |
| | | |
| | | export function listSpareType(params?: any) { |
| | | return requestClient.get<SpareTypeVO[]>(Api.spareTypeList, { params }); |
| | | } |
| | | |
| | | /** |
| | | * è·åå¤ä»¶ç±»åæ |
| | | * @returns é¨é¨æ æ°ç» |
| | | */ |
| | | export function getSpareTypeTree() { |
| | | return requestClient.get<SpareTypeTree[]>(Api.spareTypeTree); |
| | | } |
| | | |
| | | /** |
| | | * æ¥è¯¢å¤ä»¶ç±»åè¯¦ç» |
| | | * @param spareTypeId |
| | | */ |
| | | export function getSpareType(spareTypeId: ID) { |
| | | return requestClient.get<SpareTypeVO>(`${Api.root}/${spareTypeId}`); |
| | | } |
| | | |
| | | /** |
| | | * æ°å¢å¤ä»¶ç±»å |
| | | * @param data |
| | | */ |
| | | export function addSpareType(data: any) { |
| | | return requestClient.postWithMsg<void>(Api.root, data); |
| | | } |
| | | /** |
| | | * ä¿®æ¹å¤ä»¶ç±»å |
| | | * @param data |
| | | */ |
| | | export function updateSpareType(data: any) { |
| | | return requestClient.putWithMsg<void>(Api.root, data); |
| | | } |
| | | |
| | | /** |
| | | * å é¤å¤ä»¶ç±»å |
| | | * @param spareTypeId |
| | | */ |
| | | export function delSpareType(spareTypeId: IDS) { |
| | | return requestClient.deleteWithMsg<void>(`${Api.root}/${spareTypeId}`); |
| | | } |
| | | /** |
| | | * å¯¼åº |
| | | * @param |
| | | */ |
| | | export function spareTypeExport(data: any) { |
| | | return commonExport(Api.spareTypeExport, data); |
| | | } |
¶Ô±ÈÐÂÎļþ |
| | |
| | | export interface SpareTypeVO { |
| | | /** |
| | | * |
| | | */ |
| | | id: number | string; |
| | | |
| | | /** |
| | | * ç±»ååç§° |
| | | */ |
| | | typeName: string; |
| | | |
| | | /** |
| | | * ç±»åç¼ç |
| | | */ |
| | | typeCode: string; |
| | | |
| | | /** |
| | | * ç¶id |
| | | */ |
| | | parentId: number | string; |
| | | |
| | | /** |
| | | * æ¾ç¤ºé¡ºåº |
| | | */ |
| | | orderNum: number; |
| | | |
| | | /** |
| | | * èåç±»åï¼Mç®å½ Cèå Fæé®ï¼ |
| | | */ |
| | | menuType: string; |
| | | |
| | | /** |
| | | * èå徿 |
| | | */ |
| | | icon: string; |
| | | |
| | | /** |
| | | * èåç¶æï¼0æ£å¸¸ 1åç¨ï¼ |
| | | */ |
| | | status: string; |
| | | |
| | | /** |
| | | * 夿³¨ |
| | | */ |
| | | remark: string; |
| | | |
| | | /** |
| | | * å对象 |
| | | */ |
| | | children: SpareTypeVO[]; |
| | | } |
| | | |
| | | /** |
| | | * @description: å¤ä»¶ç±»åæ |
| | | */ |
| | | export interface SpareTypeTree { |
| | | id: number; |
| | | /** |
| | | * antdç»ä»¶å¿
é¡»è¦è¿ä¸ªå±æ§ å®é
æ¯æ²¡æè¿ä¸ªå±æ§ç |
| | | */ |
| | | key: string; |
| | | parentId: number; |
| | | label: string; |
| | | weight: number; |
| | | children?: SpareTypeTree[]; |
| | | } |
¶Ô±ÈÐÂÎļþ |
| | |
| | | import type { IDS, PageQuery, PageResult } from '#/api/common'; |
| | | import type { SpareVO } from '#/api/eims/spare/model'; |
| | | |
| | | import { commonExport } from '#/api/helper'; |
| | | import { requestClient } from '#/api/request'; |
| | | |
| | | enum Api { |
| | | root = '/eims/spare', |
| | | spareExport = '/eims/spare/export', |
| | | spareList = '/eims/spare/list' |
| | | } |
| | | |
| | | /** |
| | | * æ¥è¯¢ãå¤ä»¶å°è´¦ãå表 |
| | | * @param query |
| | | * @returns {*} |
| | | */ |
| | | |
| | | export function listSpare(params?: PageQuery) { |
| | | return requestClient.get<PageResult<SpareVO>>(Api.spareList, { params }); |
| | | } |
| | | |
| | | /** |
| | | * æ¥è¯¢ãå¤ä»¶å°è´¦ãè¯¦ç» |
| | | * @param spareId |
| | | */ |
| | | export function getSpare(spareId: any) { |
| | | return requestClient.get<SpareVO>(`${Api.root}/${spareId}`); |
| | | } |
| | | |
| | | /** |
| | | * æ°å¢ãå¤ä»¶å°è´¦ã |
| | | * @param data |
| | | */ |
| | | export function addSpare(data: any) { |
| | | return requestClient.postWithMsg<void>(Api.root, data); |
| | | } |
| | | |
| | | /** |
| | | * ä¿®æ¹ãå¤ä»¶å°è´¦ã |
| | | * @param data |
| | | */ |
| | | export function updateSpare(data: any) { |
| | | return requestClient.putWithMsg<void>(Api.root, data); |
| | | } |
| | | |
| | | /** |
| | | * å é¤ãå¤ä»¶å°è´¦ã |
| | | * @param spareIds |
| | | */ |
| | | export function delSpare(spareIds: IDS) { |
| | | return requestClient.deleteWithMsg<void>(`${Api.root}/${spareIds}`); |
| | | } |
| | | |
| | | /** |
| | | * 导åºãå¤ä»¶å°è´¦ã |
| | | * @param data |
| | | */ |
| | | export function spareExport(data: any) { |
| | | return commonExport(Api.spareExport, data); |
| | | } |
¶Ô±ÈÐÂÎļþ |
| | |
| | | export interface SpareVO { |
| | | /** |
| | | * |
| | | */ |
| | | id: number | string; |
| | | |
| | | /** |
| | | * ç±»å |
| | | */ |
| | | type: number; |
| | | |
| | | /** |
| | | * å¤ä»¶åç§° |
| | | */ |
| | | name: string; |
| | | |
| | | /** |
| | | * å¤ä»¶ç¼ç |
| | | */ |
| | | code: string; |
| | | |
| | | /** |
| | | * å¤ä»¶å¾ç |
| | | */ |
| | | img: number; |
| | | |
| | | /** |
| | | * å¤ä»¶å¾çUrl |
| | | */ |
| | | imgUrl: string; |
| | | /** |
| | | * åå· |
| | | */ |
| | | modelNo: string; |
| | | |
| | | /** |
| | | * å¶é å |
| | | */ |
| | | madeIn: string; |
| | | |
| | | /** |
| | | * ä¾åºå |
| | | */ |
| | | supplier: string; |
| | | |
| | | /** |
| | | * 计éåä½ï¼åå
¸ï¼ |
| | | */ |
| | | unit: string; |
| | | |
| | | /** |
| | | * åèä»·æ ¼ |
| | | */ |
| | | referPrice: number; |
| | | |
| | | /** |
| | | * åºåä¸é |
| | | */ |
| | | upperStock: number; |
| | | |
| | | /** |
| | | * åºåä¸é |
| | | */ |
| | | lowerStock: number; |
| | | |
| | | /** |
| | | * å®é
åºå |
| | | */ |
| | | actualStock: number; |
| | | |
| | | /** |
| | | * åºåéé¢ |
| | | */ |
| | | stockAmount: number; |
| | | |
| | | /** |
| | | * æ´æ¢å¨æ |
| | | */ |
| | | replaceCycle: number; |
| | | |
| | | /** |
| | | * æ´æ¢å¨æåä½ï¼åå
¸ï¼ |
| | | */ |
| | | cycleUnit: string; |
| | | |
| | | /** |
| | | * 夿³¨ |
| | | */ |
| | | remark: string; |
| | | } |
¶Ô±ÈÐÂÎļþ |
| | |
| | | import type { VxeGridProps } from '#/adapter/vxe-table'; |
| | | |
| | | import { DictEnum } from '@vben/constants'; |
| | | |
| | | import { type FormSchemaGetter } from '#/adapter/form'; |
| | | import { getDictOptions } from '#/utils/dict'; |
| | | import { renderDict } from '#/utils/render'; |
| | | |
| | | export const querySchema: FormSchemaGetter = () => [ |
| | | { |
| | | component: 'Input', |
| | | fieldName: 'faultCode', |
| | | label: 'ç¥è¯ç¼å·' |
| | | }, |
| | | { |
| | | component: 'Input', |
| | | fieldName: 'equName', |
| | | label: '设å¤åç§°' |
| | | }, |
| | | { |
| | | component: 'Input', |
| | | fieldName: 'assetNo', |
| | | label: 'èµäº§ç¼å·' |
| | | }, |
| | | { |
| | | component: 'Select', |
| | | componentProps: { |
| | | options: getDictOptions(DictEnum.EIMS_EQU_PART) |
| | | }, |
| | | fieldName: 'equPart', |
| | | label: '设å¤é¨ä½' |
| | | }, |
| | | { |
| | | component: 'Select', |
| | | componentProps: { |
| | | options: getDictOptions(DictEnum.REPAIR_FAULT_TYPE) |
| | | }, |
| | | fieldName: 'faultType', |
| | | label: 'æ
éç±»å«' |
| | | }, |
| | | { |
| | | component: 'Select', |
| | | componentProps: { |
| | | options: getDictOptions(DictEnum.EIMS_FAULT_REASON) |
| | | }, |
| | | fieldName: 'faultReason', |
| | | label: 'æ
éåå ' |
| | | }, |
| | | { |
| | | component: 'Input', |
| | | fieldName: 'reqDesc', |
| | | label: 'æ
éæè¿°' |
| | | }, |
| | | { |
| | | component: 'Input', |
| | | fieldName: 'resHandle', |
| | | label: 'å¤çæªæ½' |
| | | } |
| | | ]; |
| | | |
| | | export const columns: VxeGridProps['columns'] = [ |
| | | { type: 'checkbox', width: 60, fixed: 'left' }, |
| | | { |
| | | title: 'ç¥è¯ç¼ç ', |
| | | field: 'faultCode', |
| | | minWidth: 200 |
| | | }, |
| | | { |
| | | title: '设å¤åç§°', |
| | | field: 'equName', |
| | | minWidth: 140, |
| | | fixed: 'left', |
| | | slots: { default: 'equName' } |
| | | }, |
| | | { |
| | | title: 'èµäº§ç¼å·', |
| | | field: 'assetNo', |
| | | sortable: true, |
| | | minWidth: 140, |
| | | fixed: 'left' |
| | | }, |
| | | { |
| | | title: '设å¤ç±»å', |
| | | field: 'equTypeName', |
| | | minWidth: 140 |
| | | }, |
| | | { |
| | | title: '设å¤é¨ä½', |
| | | field: 'equPart', |
| | | sortable: true, |
| | | slots: { |
| | | default: ({ row }) => { |
| | | if (row.equPart === null || row.equPart === '') { |
| | | return ''; |
| | | } |
| | | return renderDict(row.equPart, DictEnum.EIMS_EQU_PART); |
| | | } |
| | | }, |
| | | minWidth: 120 |
| | | }, |
| | | { |
| | | title: 'æ
éç±»å«', |
| | | field: 'faultType', |
| | | sortable: true, |
| | | slots: { |
| | | default: ({ row }) => { |
| | | if (row.faultType === null || row.faultType === '') { |
| | | return ''; |
| | | } |
| | | return renderDict(row.faultType, DictEnum.REPAIR_FAULT_TYPE); |
| | | } |
| | | }, |
| | | minWidth: 120 |
| | | }, |
| | | { |
| | | title: 'æ
éåå ', |
| | | field: 'faultReason', |
| | | sortable: true, |
| | | slots: { |
| | | default: ({ row }) => { |
| | | if (row.faultReason === null || row.faultReason === '') { |
| | | return ''; |
| | | } |
| | | return renderDict(row.faultReason, DictEnum.EIMS_FAULT_REASON); |
| | | } |
| | | }, |
| | | minWidth: 120 |
| | | }, |
| | | { |
| | | title: 'æ¥ä¿®æè¿°', |
| | | field: 'reqDesc', |
| | | minWidth: 300 |
| | | }, |
| | | { |
| | | title: 'å¤çæªæ½', |
| | | field: 'resHandle', |
| | | minWidth: 300 |
| | | }, |
| | | { |
| | | field: 'action', |
| | | fixed: 'right', |
| | | slots: { default: 'action' }, |
| | | title: 'æä½', |
| | | width: 200 |
| | | } |
| | | ]; |
| | | |
| | | export const drawerSchema: FormSchemaGetter = () => [ |
| | | { |
| | | component: 'Input', |
| | | dependencies: { |
| | | show: () => false, |
| | | triggerFields: [''] |
| | | }, |
| | | fieldName: 'equId' |
| | | }, |
| | | { |
| | | component: 'Input', |
| | | fieldName: 'faultCode', |
| | | label: 'ç¥è¯ç¼ç ', |
| | | rules: 'required' |
| | | }, |
| | | { |
| | | component: 'Input', |
| | | fieldName: 'equName', |
| | | label: '设å¤åç§°', |
| | | rules: 'required' |
| | | }, |
| | | { |
| | | component: 'Select', |
| | | componentProps: { |
| | | options: getDictOptions(DictEnum.EIMS_EQU_PART) |
| | | }, |
| | | fieldName: 'equPart', |
| | | label: '设å¤é¨ä½' |
| | | }, |
| | | { |
| | | component: 'Select', |
| | | componentProps: { |
| | | options: getDictOptions(DictEnum.REPAIR_FAULT_TYPE) |
| | | }, |
| | | fieldName: 'faultType', |
| | | label: 'æ
éç±»å«' |
| | | }, |
| | | { |
| | | component: 'Select', |
| | | componentProps: { |
| | | options: getDictOptions(DictEnum.EIMS_FAULT_REASON) |
| | | }, |
| | | fieldName: 'faultReason', |
| | | label: 'æ
éåå ' |
| | | }, |
| | | { |
| | | component: 'Textarea', |
| | | formItemClass: 'items-baseline', |
| | | fieldName: 'reqDesc', |
| | | label: 'æ¥ä¿®æè¿°' |
| | | }, |
| | | { |
| | | component: 'Textarea', |
| | | formItemClass: 'items-baseline', |
| | | fieldName: 'resHandle', |
| | | label: 'å¤çæªæ½' |
| | | } |
| | | ]; |
¶Ô±ÈÐÂÎļþ |
| | |
| | | <script setup lang="ts"> |
| | | import type { DeptTree } from '#/api/system/user/model'; |
| | | |
| | | import { onMounted, type PropType, ref } from 'vue'; |
| | | |
| | | import { SyncOutlined } from '@ant-design/icons-vue'; |
| | | import { Empty, InputSearch, Skeleton, Tree } from 'ant-design-vue'; |
| | | |
| | | import { getEquTypeTree } from '#/api/eims/equ-type'; |
| | | |
| | | defineOptions({ inheritAttrs: false }); |
| | | |
| | | const emit = defineEmits<{ |
| | | /** |
| | | * ç¹å»å·æ°æé®çäºä»¶ |
| | | */ |
| | | reload: []; |
| | | /** |
| | | * ç¹å»èç¹çäºä»¶ |
| | | */ |
| | | select: []; |
| | | }>(); |
| | | |
| | | const selectDeptId = defineModel('selectDeptId', { |
| | | required: true, |
| | | type: Array as PropType<string[]>, |
| | | }); |
| | | |
| | | const searchValue = defineModel('searchValue', { |
| | | type: String, |
| | | default: '', |
| | | }); |
| | | |
| | | /** é¨é¨æ°æ®æº */ |
| | | type DeptTreeArray = DeptTree[]; |
| | | const deptTreeArray = ref<DeptTreeArray>([]); |
| | | /** 骨æ¶å±å è½½ */ |
| | | const showTreeSkeleton = ref<boolean>(true); |
| | | |
| | | async function loadTree() { |
| | | showTreeSkeleton.value = true; |
| | | searchValue.value = ''; |
| | | selectDeptId.value = []; |
| | | |
| | | const ret = await getEquTypeTree(); |
| | | |
| | | deptTreeArray.value = ret; |
| | | showTreeSkeleton.value = false; |
| | | } |
| | | |
| | | async function handleReload() { |
| | | await loadTree(); |
| | | emit('reload'); |
| | | } |
| | | |
| | | onMounted(loadTree); |
| | | </script> |
| | | |
| | | <template> |
| | | <div :class="$attrs.class"> |
| | | <Skeleton |
| | | :loading="showTreeSkeleton" |
| | | :paragraph="{ rows: 8 }" |
| | | active |
| | | class="p-[8px]" |
| | | > |
| | | <div |
| | | class="bg-background flex h-full flex-col overflow-y-auto rounded-lg" |
| | | > |
| | | <!-- åºå®å¨é¡¶é¨ å¿
é¡»å ä¸bg-backgroundèæ¯è² å¦åä¼äº§ç'ç©¿é'ææ --> |
| | | <div class="bg-background z-100 sticky left-0 top-0 p-[8px]"> |
| | | <InputSearch |
| | | v-model:value="searchValue" |
| | | :placeholder="$t('pages.common.search')" |
| | | size="small" |
| | | > |
| | | <template #enterButton> |
| | | <a-button @click="handleReload"> |
| | | <SyncOutlined class="text-primary" /> |
| | | </a-button> |
| | | </template> |
| | | </InputSearch> |
| | | </div> |
| | | <div class="h-full overflow-x-hidden px-[8px]"> |
| | | <Tree |
| | | v-bind="$attrs" |
| | | v-if="deptTreeArray.length > 0" |
| | | v-model:selected-keys="selectDeptId" |
| | | :class="$attrs.class" |
| | | :field-names="{ title: 'label', key: 'id' }" |
| | | :show-line="{ showLeafIcon: false }" |
| | | :tree-data="deptTreeArray" |
| | | :virtual="false" |
| | | default-expand-all |
| | | @select="$emit('select')" |
| | | > |
| | | <template #title="{ label }"> |
| | | <span v-if="label.indexOf(searchValue) > -1"> |
| | | {{ label.substring(0, label.indexOf(searchValue)) }} |
| | | <span style="color: #f50">{{ searchValue }}</span> |
| | | {{ |
| | | label.substring( |
| | | label.indexOf(searchValue) + searchValue.length, |
| | | ) |
| | | }} |
| | | </span> |
| | | <span v-else>{{ label }}</span> |
| | | </template> |
| | | </Tree> |
| | | <!-- ä»
æ¬äººæ°æ®æé å¯ä»¥èèç´æ¥ä¸æ¾ç¤º --> |
| | | <div v-else class="mt-5"> |
| | | <Empty |
| | | :image="Empty.PRESENTED_IMAGE_SIMPLE" |
| | | description="æ 设å¤ç±»åæ°æ®" |
| | | /> |
| | | </div> |
| | | </div> |
| | | </div> |
| | | </Skeleton> |
| | | </div> |
| | | </template> |
¶Ô±ÈÐÂÎļþ |
| | |
| | | <script setup lang="ts"> |
| | | import { computed, ref } from 'vue'; |
| | | |
| | | import { useVbenDrawer, useVbenModal } from '@vben/common-ui'; |
| | | import { $t } from '@vben/locales'; |
| | | import { cloneDeep } from '@vben/utils'; |
| | | |
| | | import { InputSearch } from 'ant-design-vue'; |
| | | |
| | | import { useVbenForm } from '#/adapter/form'; |
| | | import { addFaultKnow, getFaultKnow, updateFaultKnow } from '#/api/eims/fault-know'; |
| | | import CodeInput from '#/views/eims/components/code-input.vue'; |
| | | import equModal from '#/views/eims/components/equ-modal.vue'; |
| | | |
| | | import { drawerSchema } from './data'; |
| | | |
| | | const emit = defineEmits<{ reload: [] }>(); |
| | | |
| | | const isUpdate = ref(false); |
| | | const title = computed(() => { |
| | | return isUpdate.value ? $t('pages.common.edit') : $t('pages.common.add'); |
| | | }); |
| | | |
| | | const [BasicForm, formApi] = useVbenForm({ |
| | | commonConfig: { |
| | | formItemClass: 'col-span-2', |
| | | componentProps: { |
| | | class: 'w-full' |
| | | }, |
| | | labelWidth: 120 |
| | | }, |
| | | schema: drawerSchema(), |
| | | showDefaultActions: false, |
| | | wrapperClass: 'grid-cols-2' |
| | | }); |
| | | |
| | | const [BasicDrawer, drawerApi] = useVbenDrawer({ |
| | | onCancel: handleCancel, |
| | | onConfirm: handleConfirm, |
| | | async onOpenChange(isOpen) { |
| | | if (!isOpen) { |
| | | return null; |
| | | } |
| | | drawerApi.drawerLoading(true); |
| | | const { id } = drawerApi.getData() as { id?: number | string }; |
| | | |
| | | isUpdate.value = !!id; |
| | | |
| | | // æ´æ° && èµå¼ |
| | | if (isUpdate.value && id) { |
| | | const record = await getFaultKnow(id); |
| | | await formApi.setValues(record); |
| | | } |
| | | drawerApi.drawerLoading(false); |
| | | } |
| | | }); |
| | | |
| | | async function handleConfirm() { |
| | | try { |
| | | drawerApi.drawerLoading(true); |
| | | const { valid } = await formApi.validate(); |
| | | if (!valid) { |
| | | return; |
| | | } |
| | | const data = cloneDeep(await formApi.getValues()); |
| | | await (isUpdate.value ? updateFaultKnow(data) : addFaultKnow(data)); |
| | | emit('reload'); |
| | | await handleCancel(); |
| | | } catch (error) { |
| | | console.error(error); |
| | | } finally { |
| | | drawerApi.drawerLoading(false); |
| | | } |
| | | } |
| | | |
| | | async function handleCancel() { |
| | | drawerApi.close(); |
| | | await formApi.resetForm(); |
| | | } |
| | | |
| | | // EQU modal |
| | | const [EquModal, equModalApi] = useVbenModal({ |
| | | connectedComponent: equModal, |
| | | draggable: true, |
| | | title: 'éæ©è®¾å¤' |
| | | }); |
| | | |
| | | function handleEquModal() { |
| | | equModalApi.setData({}); |
| | | equModalApi.open(); |
| | | } |
| | | |
| | | /** |
| | | * æ´æ°éæ©çè®¾å¤ |
| | | * @param equ |
| | | */ |
| | | async function updateEqu(equ: any) { |
| | | await formApi.setValues({ 'equId': equ.equId, 'equName': equ.equName, 'equTypeId': equ.equTypeId }); |
| | | } |
| | | </script> |
| | | |
| | | <template> |
| | | <BasicDrawer :close-on-click-modal="false" :title="title" class="w-[600px]"> |
| | | <BasicForm> |
| | | <template #faultCode="slotProps"> |
| | | <CodeInput v-bind="slotProps" :disabled="isUpdate" prefix="GZZS" /> |
| | | </template> |
| | | <template #equName="slotProps"> |
| | | <InputSearch :enter-button="true" placeholder="è¯·éæ©è®¾å¤" @search="handleEquModal" v-bind="slotProps" :disabled="isUpdate" /> |
| | | </template> |
| | | </BasicForm> |
| | | <EquModal class="w-[1200px]" @update-equ="updateEqu" /> |
| | | </BasicDrawer> |
| | | </template> |
¶Ô±ÈÐÂÎļþ |
| | |
| | | <script setup lang="ts"> |
| | | import type { Recordable } from '@vben/types'; |
| | | |
| | | import { ref } from 'vue'; |
| | | import { useRouter } from 'vue-router'; |
| | | |
| | | import { Page, useVbenDrawer, type VbenFormProps } from '@vben/common-ui'; |
| | | import { $t } from '@vben/locales'; |
| | | import { getVxePopupContainer } from '@vben/utils'; |
| | | |
| | | import { Modal, Popconfirm, Space } from 'ant-design-vue'; |
| | | |
| | | import { useVbenVxeGrid, vxeCheckboxChecked, type VxeGridProps, vxeSortEvent } from '#/adapter/vxe-table'; |
| | | import { delFaultKnow, faultKnowExport, listFaultKnow } from '#/api/eims/fault-know'; |
| | | import { commonDownloadExcel } from '#/utils/file/download'; |
| | | |
| | | import { columns, querySchema } from './data'; |
| | | import EquTypeTree from './equ-type-tree.vue'; |
| | | import faultKnowDrawer from './fault-know-drawer.vue'; |
| | | |
| | | // 左边é¨é¨ç¨ |
| | | const selectDeptId = ref<string[]>([]); |
| | | |
| | | defineExpose({ |
| | | tableSelect |
| | | }); |
| | | |
| | | const formOptions: VbenFormProps = { |
| | | commonConfig: { |
| | | labelWidth: 80, |
| | | componentProps: { |
| | | allowClear: true |
| | | } |
| | | }, |
| | | schema: querySchema(), |
| | | wrapperClass: 'grid-cols-1 md:grid-cols-2 lg:grid-cols-3 xl:grid-cols-4', |
| | | handleReset: async () => { |
| | | selectDeptId.value = []; |
| | | // eslint-disable-next-line no-use-before-define |
| | | const { formApi, reload } = tableApi; |
| | | await formApi.resetForm(); |
| | | const formValues = formApi.form.values; |
| | | formApi.setLatestSubmissionValues(formValues); |
| | | await reload(formValues); |
| | | }, |
| | | // æ¥æéæ©æ ¼å¼å |
| | | fieldMappingTime: [['deployDate', ['params[beginTime]', 'params[endTime]'], ['YYYY-MM-DD 00:00:00', 'YYYY-MM-DD 23:59:59']]] |
| | | }; |
| | | |
| | | const gridOptions: VxeGridProps = { |
| | | checkboxConfig: { |
| | | // é«äº® |
| | | highlight: true, |
| | | // 翻页æ¶ä¿çéä¸ç¶æ |
| | | reserve: true |
| | | // ç¹å»è¡éä¸ |
| | | // trigger: 'row' |
| | | }, |
| | | columns, |
| | | height: 'auto', |
| | | keepSource: true, |
| | | pagerConfig: {}, |
| | | proxyConfig: { |
| | | ajax: { |
| | | query: async ({ page }, formValues = {}) => { |
| | | // é¨é¨æ éæ©å¤ç |
| | | if (selectDeptId.value.length === 1 && selectDeptId.value[0] !== '0') { |
| | | formValues.equTypeId = selectDeptId.value[0]; |
| | | } else { |
| | | Reflect.deleteProperty(formValues, 'equTypeId'); |
| | | } |
| | | return await listFaultKnow({ |
| | | pageNum: page.currentPage, |
| | | pageSize: page.pageSize, |
| | | ...formValues |
| | | }); |
| | | } |
| | | } |
| | | }, |
| | | rowConfig: { |
| | | isHover: true, |
| | | keyField: 'id' |
| | | }, |
| | | sortConfig: { |
| | | // è¿ç¨æåº |
| | | remote: true, |
| | | // æ¯æå¤å段æåº é»è®¤å
³é |
| | | multiple: true |
| | | }, |
| | | id: 'eims-fault-know-index' |
| | | }; |
| | | |
| | | const [BasicTable, tableApi] = useVbenVxeGrid({ |
| | | formOptions, |
| | | gridOptions, |
| | | gridEvents: { |
| | | sortChange: (sortParams) => vxeSortEvent(tableApi, sortParams) |
| | | } |
| | | }); |
| | | |
| | | const [FaultKnowDrawer, faultKnowDrawerApi] = useVbenDrawer({ |
| | | connectedComponent: faultKnowDrawer |
| | | }); |
| | | |
| | | function handleAdd() { |
| | | faultKnowDrawerApi.setData({}); |
| | | faultKnowDrawerApi.open(); |
| | | } |
| | | |
| | | async function handleEdit(record: Recordable<any>) { |
| | | faultKnowDrawerApi.setData({ id: record.id }); |
| | | faultKnowDrawerApi.open(); |
| | | } |
| | | |
| | | async function handleDelete(row: Recordable<any>) { |
| | | await delFaultKnow(row.id); |
| | | await tableApi.query(); |
| | | } |
| | | |
| | | function handleMultiDelete() { |
| | | const rows = tableApi.grid.getCheckboxRecords(); |
| | | const ids = rows.map((row: any) => row.id); |
| | | Modal.confirm({ |
| | | title: 'æç¤º', |
| | | okType: 'danger', |
| | | content: `确认å é¤éä¸ç${ids.length}æ¡è®°å½åï¼`, |
| | | onOk: async () => { |
| | | await delFaultKnow(ids); |
| | | await tableApi.query(); |
| | | } |
| | | }); |
| | | } |
| | | |
| | | function handleDownloadExcel() { |
| | | commonDownloadExcel(faultKnowExport, 'æ
éç¥è¯', tableApi.formApi.form.values, { |
| | | fieldMappingTime: formOptions.fieldMappingTime |
| | | }); |
| | | } |
| | | |
| | | |
| | | // é䏿°æ® |
| | | function tableSelect() { |
| | | return tableApi.grid.getCheckboxRecords(); |
| | | } |
| | | </script> |
| | | |
| | | <template> |
| | | <Page :auto-content-height="true"> |
| | | <div class="flex h-full gap-[8px]"> |
| | | <EquTypeTree v-model:select-dept-id="selectDeptId" class="w-[260px]" @reload="() => tableApi.reload()" @select="() => tableApi.reload()" /> |
| | | <BasicTable class="flex-1 overflow-hidden" table-title="设å¤å表"> |
| | | <template #toolbar-tools> |
| | | <Space> |
| | | <a-button v-access:code="['eims:faultKnow:export']" @click="handleDownloadExcel"> |
| | | {{ $t('pages.common.export') }} |
| | | </a-button> |
| | | <a-button |
| | | :disabled="!vxeCheckboxChecked(tableApi)" |
| | | danger |
| | | type="primary" |
| | | v-access:code="['eims:faultKnow:remove']" |
| | | @click="handleMultiDelete" |
| | | > |
| | | {{ $t('pages.common.delete') }} |
| | | </a-button> |
| | | <a-button type="primary" v-access:code="['eims:faultKnow:add']" @click="handleAdd"> |
| | | {{ $t('pages.common.add') }} |
| | | </a-button> |
| | | </Space> |
| | | </template> |
| | | |
| | | <template #equName="{ row }"> |
| | | <Space> |
| | | <a-button type="link"> {{ row.equName }}</a-button> |
| | | </Space> |
| | | </template> |
| | | |
| | | <template #action="{ row }"> |
| | | <Space> |
| | | <ghost-button v-access:code="['eims:faultKnow:edit']" @click.stop="handleEdit(row)"> |
| | | {{ $t('pages.common.edit') }} |
| | | </ghost-button> |
| | | <Popconfirm :get-popup-container="getVxePopupContainer" placement="left" title="确认å é¤ï¼" @confirm="handleDelete(row)"> |
| | | <ghost-button danger v-access:code="['eims:faultKnow:remove']" @click.stop=""> |
| | | {{ $t('pages.common.delete') }} |
| | | </ghost-button> |
| | | </Popconfirm> |
| | | </Space> |
| | | </template> |
| | | </BasicTable> |
| | | </div> |
| | | <FaultKnowDrawer @reload="tableApi.query()" /> |
| | | </Page> |
| | | </template> |
| | |
| | | <span>å
许导å
¥xlsx, xlsæä»¶</span> |
| | | <a-button |
| | | type="link" |
| | | @click="commonDownloadExcel(downloadImportTemplate, '设å¤å¯¼å
¥æ¨¡æ¿')" |
| | | @click="commonDownloadExcel(downloadImportTemplate, 'å·¥å
·å¯¼å
¥æ¨¡æ¿')" |
| | | > |
| | | <div class="flex items-center gap-[4px]"> |
| | | <ExcelIcon /> |
| | |
| | | import fixtureBorrowDrawer from '#/views/eims/fixture-borrow/fixture-borrow-drawer.vue'; |
| | | |
| | | import { columns, querySchema } from './data'; |
| | | import fixtureDrawer from './fixture-drawer.vue'; |
| | | import fixtureBorrowListDrawer from './fixture-borrow-list-drawer.vue'; |
| | | import fixtureDrawer from './fixture-drawer.vue'; |
| | | import fixtureImportModal from './fixture-import-modal.vue'; |
| | | import FixtureTypeTree from './fixture-type-tree.vue'; |
| | | |
| | |
| | | sortChange: (sortParams) => vxeSortEvent(tableApi, sortParams), |
| | | cellClick: (e: any) => { |
| | | const { row } = e; |
| | | handleBorroeList(row) |
| | | handleBorroeList(row); |
| | | } |
| | | } |
| | | }); |
| | |
| | | <a-button v-access:code="['eims:fixture:export']" @click="handleDownloadExcel"> |
| | | {{ $t('pages.common.export') }} |
| | | </a-button> |
| | | <a-button v-access:code="['eims:fixture:import']" @click="handleImport"> |
| | | <!-- <a-button v-access:code="['eims:fixture:import']" @click="handleImport"> |
| | | {{ $t('pages.common.import') }} |
| | | </a-button> |
| | | </a-button>--> |
| | | <a-button |
| | | :disabled="!vxeCheckboxChecked(tableApi)" |
| | | danger |
| | |
| | | getPopupContainer |
| | | }, |
| | | fieldName: 'inspFirstTime', |
| | | label: '馿¬¡ä¿å
»æ¶é´' |
| | | label: '馿¬¡ç¹æ£æ¶é´' |
| | | }, |
| | | { |
| | | component: 'DatePicker', |
| | |
| | | getPopupContainer |
| | | }, |
| | | fieldName: 'inspLastTime', |
| | | label: '䏿¬¡ä¿å
»æ¶é´' |
| | | label: '䏿¬¡ç¹æ£æ¶é´' |
| | | }, |
| | | { |
| | | component: 'DatePicker', |
| | |
| | | getPopupContainer |
| | | }, |
| | | fieldName: 'inspNextTime', |
| | | label: '䏿¬¡ä¿å
»æ¶é´', |
| | | label: '䏿¬¡ç¹æ£æ¶é´', |
| | | }, |
| | | { |
| | | component: 'Textarea', |
¶Ô±ÈÐÂÎļþ |
| | |
| | | import type { VxeGridProps } from '#/adapter/vxe-table'; |
| | | |
| | | import { DictEnum } from '@vben/constants'; |
| | | import { getPopupContainer } from '@vben/utils'; |
| | | |
| | | import { type FormSchemaGetter } from '#/adapter/form'; |
| | | import { getDictOptions } from '#/utils/dict'; |
| | | |
| | | export const querySchema: FormSchemaGetter = () => [ |
| | | { |
| | | component: 'Input', |
| | | fieldName: 'orderCode', |
| | | label: 'å
¥åºåå·' |
| | | }, |
| | | { |
| | | component: 'TreeSelect', |
| | | // å¨draweréæ´æ° è¿éä¸éè¦é»è®¤çcomponentProps |
| | | defaultValue: undefined, |
| | | fieldName: 'chargeDept', |
| | | label: 'ç»åé¨é¨' |
| | | }, |
| | | { |
| | | component: 'Select', |
| | | componentProps: { |
| | | showSearch: true, |
| | | allowClear: true, |
| | | getPopupContainer |
| | | }, |
| | | fieldName: 'chargeUser', |
| | | label: 'ç»å人' |
| | | }, |
| | | { |
| | | component: 'Input', |
| | | fieldName: 'partnerName', |
| | | label: 'ä¾åºå' |
| | | }, |
| | | { |
| | | component: 'RangePicker', |
| | | fieldName: 'orderTime', |
| | | label: '工忶é´' |
| | | } |
| | | ]; |
| | | |
| | | export const columns: VxeGridProps['columns'] = [ |
| | | { type: 'checkbox', width: 60, fixed: 'left' }, |
| | | { |
| | | title: 'å
¥åºåå·', |
| | | field: 'orderCode', |
| | | minWidth: 100, |
| | | fixed: 'left', |
| | | slots: { default: 'orderCode' } |
| | | }, |
| | | { |
| | | title: 'æ¥æ', |
| | | field: 'orderTime', |
| | | minWidth: 120 |
| | | }, |
| | | { |
| | | title: 'ä¾åºå', |
| | | field: 'partnerName', |
| | | minWidth: 100 |
| | | }, |
| | | { |
| | | title: 'ç»å人', |
| | | field: 'chargeUserName', |
| | | minWidth: 100 |
| | | }, |
| | | { |
| | | title: 'å
³èåå·', |
| | | field: 'associatedOrder', |
| | | minWidth: 120 |
| | | }, |
| | | { |
| | | title: '夿³¨', |
| | | field: 'remark', |
| | | minWidth: 140 |
| | | }, |
| | | { |
| | | field: 'action', |
| | | fixed: 'right', |
| | | slots: { default: 'action' }, |
| | | title: 'æä½', |
| | | width: 200 |
| | | } |
| | | ]; |
| | | |
| | | export const drawerSchema: FormSchemaGetter = () => [ |
| | | { |
| | | component: 'Input', |
| | | dependencies: { |
| | | show: () => false, |
| | | triggerFields: [''] |
| | | }, |
| | | fieldName: 'id' |
| | | }, |
| | | { |
| | | component: 'Select', |
| | | componentProps: { |
| | | getPopupContainer, |
| | | options: getDictOptions(DictEnum.SPARE_INOUT_TYPE) |
| | | }, |
| | | dependencies: { |
| | | show: () => true, |
| | | triggerFields: [''] |
| | | }, |
| | | fieldName: 'type', |
| | | defaultValue: '1', |
| | | label: 'ç±»å' |
| | | }, |
| | | { |
| | | component: 'Input', |
| | | fieldName: 'orderCode', |
| | | label: 'å
¥åºåå·' |
| | | }, |
| | | { |
| | | component: 'Input', |
| | | fieldName: 'partnerName', |
| | | label: 'ä¾åºå' |
| | | }, |
| | | { |
| | | component: 'TreeSelect', |
| | | // å¨draweréæ´æ° è¿éä¸éè¦é»è®¤çcomponentProps |
| | | defaultValue: undefined, |
| | | fieldName: 'chargeDept', |
| | | label: 'ç»åé¨é¨', |
| | | rules: 'selectRequired' |
| | | }, |
| | | { |
| | | component: 'Select', |
| | | componentProps: { |
| | | showSearch: true, |
| | | allowClear: true, |
| | | getPopupContainer |
| | | }, |
| | | fieldName: 'chargeUser', |
| | | label: 'ç»å人', |
| | | rules: 'required' |
| | | }, |
| | | { |
| | | component: 'DatePicker', |
| | | componentProps: { |
| | | format: 'YYYY-MM-DD HH:mm:ss', |
| | | showTime: true, |
| | | valueFormat: 'YYYY-MM-DD HH:mm:ss', |
| | | getPopupContainer |
| | | }, |
| | | fieldName: 'orderTime', |
| | | label: 'å
¥åºæ¶é´' |
| | | }, |
| | | { |
| | | component: 'Textarea', |
| | | formItemClass: 'items-baseline', |
| | | fieldName: 'remark', |
| | | label: '夿³¨' |
| | | } |
| | | ]; |
¶Ô±ÈÐÂÎļþ |
| | |
| | | <script setup lang="ts"> |
| | | import type { Recordable } from '@vben/types'; |
| | | |
| | | import { onMounted } from 'vue'; |
| | | |
| | | import { Page, useVbenDrawer, type VbenFormProps } from '@vben/common-ui'; |
| | | import { $t } from '@vben/locales'; |
| | | import { addFullName, getPopupContainer, getVxePopupContainer } from '@vben/utils'; |
| | | |
| | | import { Modal, Popconfirm, Space } from 'ant-design-vue'; |
| | | |
| | | import { useVbenVxeGrid, vxeCheckboxChecked, type VxeGridProps, vxeSortEvent } from '#/adapter/vxe-table'; |
| | | import { delSpareInout, listSpareInout, spareInoutExport } from '#/api/eims/spare-inout'; |
| | | import { getDeptTree, userList } from '#/api/system/user'; |
| | | import { commonDownloadExcel } from '#/utils/file/download'; |
| | | |
| | | import { columns, querySchema } from './data'; |
| | | import drawer from './spare-in-drawer.vue'; |
| | | |
| | | const formOptions: VbenFormProps = { |
| | | commonConfig: { |
| | | labelWidth: 80, |
| | | componentProps: { |
| | | allowClear: true |
| | | } |
| | | }, |
| | | schema: querySchema(), |
| | | collapsed: true, |
| | | wrapperClass: 'grid-cols-1 md:grid-cols-2 lg:grid-cols-3 xl:grid-cols-4', |
| | | // æ¥æéæ©æ ¼å¼å |
| | | fieldMappingTime: [['orderTime', ['params[beginOrderTime]', 'params[endOrderTime]'], ['YYYY-MM-DD 00:00:00', 'YYYY-MM-DD 23:59:59']]] |
| | | }; |
| | | |
| | | const gridOptions: VxeGridProps = { |
| | | checkboxConfig: { |
| | | // é«äº® |
| | | highlight: true, |
| | | // 翻页æ¶ä¿çéä¸ç¶æ |
| | | reserve: true |
| | | // ç¹å»è¡éä¸ |
| | | // trigger: 'row' |
| | | }, |
| | | columns, |
| | | height: 'auto', |
| | | keepSource: true, |
| | | pagerConfig: {}, |
| | | proxyConfig: { |
| | | ajax: { |
| | | query: async ({ page }, formValues = {}) => { |
| | | // 1-å
¥åºå 2-åºåºå |
| | | formValues.type = '1'; |
| | | return await listSpareInout({ |
| | | pageNum: page.currentPage, |
| | | pageSize: page.pageSize, |
| | | ...formValues |
| | | }); |
| | | } |
| | | } |
| | | }, |
| | | rowConfig: { |
| | | isHover: true, |
| | | keyField: 'id' |
| | | }, |
| | | sortConfig: { |
| | | // è¿ç¨æåº |
| | | remote: true, |
| | | // æ¯æå¤å段æåº é»è®¤å
³é |
| | | multiple: true |
| | | }, |
| | | id: 'spre-inout-index' |
| | | }; |
| | | |
| | | const [BasicTable, tableApi] = useVbenVxeGrid({ |
| | | formOptions, |
| | | gridOptions, |
| | | gridEvents: { |
| | | sortChange: (sortParams) => vxeSortEvent(tableApi, sortParams) |
| | | } |
| | | }); |
| | | |
| | | const [Drawer, drawerApi] = useVbenDrawer({ |
| | | connectedComponent: drawer |
| | | }); |
| | | |
| | | function handleAdd() { |
| | | drawerApi.setData({}); |
| | | drawerApi.open(); |
| | | } |
| | | |
| | | async function handleEdit(record: Recordable<any>) { |
| | | drawerApi.setData({ id: record.id }); |
| | | drawerApi.open(); |
| | | } |
| | | |
| | | async function handleDelete(row: Recordable<any>) { |
| | | await delSpareInout(row.id); |
| | | await tableApi.query(); |
| | | } |
| | | |
| | | function handleMultiDelete() { |
| | | const rows = tableApi.grid.getCheckboxRecords(); |
| | | const ids = rows.map((row: any) => row.id); |
| | | Modal.confirm({ |
| | | title: 'æç¤º', |
| | | okType: 'danger', |
| | | content: `确认å é¤éä¸ç${ids.length}æ¡è®°å½åï¼`, |
| | | onOk: async () => { |
| | | await delSpareInout(ids); |
| | | await tableApi.query(); |
| | | } |
| | | }); |
| | | } |
| | | |
| | | function handleDownloadExcel() { |
| | | commonDownloadExcel(spareInoutExport, 'å¤ä»¶å
¥åºåè®°å½', tableApi.formApi.form.values, { |
| | | fieldMappingTime: formOptions.fieldMappingTime |
| | | }); |
| | | } |
| | | /** |
| | | * ç¨æ·çå è½½ |
| | | */ |
| | | async function setupUserOptions(deptId: any) { |
| | | const params = { deptId }; |
| | | const userPageResult = await userList({ |
| | | pageNum: 1, |
| | | pageSize: 500, |
| | | ...params |
| | | }); |
| | | const options = userPageResult.rows.map((item) => ({ |
| | | label: item.nickName || item.userName, |
| | | value: item.userId |
| | | })); |
| | | // çé |
| | | const filterOption = (input: string, option: any) => { |
| | | return option.label.toLowerCase().includes(input.toLowerCase()); |
| | | }; |
| | | |
| | | const placeholder = options.length > 0 ? 'è¯·éæ©' : '该é¨é¨ä¸ææ ç¨æ·'; |
| | | tableApi.formApi.updateSchema([ |
| | | { |
| | | componentProps: { options, placeholder, filterOption }, |
| | | fieldName: 'chargeUser' |
| | | } |
| | | ]); |
| | | } |
| | | |
| | | /** |
| | | * åå§åé¨é¨éæ© |
| | | */ |
| | | async function setupDeptSelect() { |
| | | // updateSchema |
| | | const deptTree = await getDeptTree(); |
| | | // éä¸åæ¾ç¤ºå¨è¾å
¥æ¡çå¼ å³ç¶èç¹ / åèç¹ |
| | | addFullName(deptTree, 'label', ' / '); |
| | | tableApi.formApi.updateSchema([ |
| | | { |
| | | componentProps: (formModel) => ({ |
| | | class: 'w-full', |
| | | fieldNames: { |
| | | key: 'id', |
| | | value: 'id', |
| | | children: 'children' |
| | | }, |
| | | getPopupContainer, |
| | | async onSelect(deptId: number | string) { |
| | | /** æ ¹æ®é¨é¨IDå è½½ç¨æ· */ |
| | | await setupUserOptions(deptId); |
| | | /** åååéè¦éæ°éæ©ç¨æ· */ |
| | | formModel.chargeUser = undefined; |
| | | }, |
| | | placeholder: 'è¯·éæ©', |
| | | showSearch: true, |
| | | treeData: deptTree, |
| | | treeDefaultExpandAll: true, |
| | | treeLine: { showLeafIcon: false }, |
| | | // çéçåæ®µ |
| | | treeNodeFilterProp: 'label', |
| | | // éä¸åæ¾ç¤ºå¨è¾å
¥æ¡çå¼ |
| | | treeNodeLabelProp: 'fullName' |
| | | }), |
| | | fieldName: 'chargeDept' |
| | | } |
| | | ]); |
| | | } |
| | | |
| | | onMounted(async () => { |
| | | await setupDeptSelect(); |
| | | }); |
| | | </script> |
| | | |
| | | <template> |
| | | <Page :auto-content-height="true"> |
| | | <div class="flex h-full gap-[8px]"> |
| | | <BasicTable class="flex-1 overflow-hidden" table-title="å¤ä»¶å
¥åºåå表"> |
| | | <template #toolbar-tools> |
| | | <Space> |
| | | <a-button v-access:code="['eims:spareInout:export']" @click="handleDownloadExcel"> |
| | | {{ $t('pages.common.export') }} |
| | | </a-button> |
| | | <a-button |
| | | :disabled="!vxeCheckboxChecked(tableApi)" |
| | | danger |
| | | type="primary" |
| | | v-access:code="['eims:spareInout:remove']" |
| | | @click="handleMultiDelete" |
| | | > |
| | | {{ $t('pages.common.delete') }} |
| | | </a-button> |
| | | <a-button type="primary" v-access:code="['eims:spareInout:add']" @click="handleAdd"> |
| | | {{ $t('pages.common.add') }} |
| | | </a-button> |
| | | </Space> |
| | | </template> |
| | | |
| | | <template #orderCode="{ row }"> |
| | | <Space> |
| | | <a-button type="link"> {{ row.orderCode }}</a-button> |
| | | </Space> |
| | | </template> |
| | | |
| | | <template #action="{ row }"> |
| | | <Space> |
| | | <ghost-button v-access:code="['eims:spareInout:edit']" @click.stop="handleEdit(row)"> |
| | | {{ $t('pages.common.edit') }} |
| | | </ghost-button> |
| | | <Popconfirm :get-popup-container="getVxePopupContainer" placement="left" title="确认å é¤ï¼" @confirm="handleDelete(row)"> |
| | | <ghost-button danger v-access:code="['eims:spareInout:remove']" @click.stop=""> |
| | | {{ $t('pages.common.delete') }} |
| | | </ghost-button> |
| | | </Popconfirm> |
| | | </Space> |
| | | </template> |
| | | </BasicTable> |
| | | </div> |
| | | <Drawer @reload="tableApi.query()" /> |
| | | </Page> |
| | | </template> |
¶Ô±ÈÐÂÎļþ |
| | |
| | | <script setup lang="ts"> |
| | | import { computed, ref } from 'vue'; |
| | | |
| | | import { useVbenDrawer } from '@vben/common-ui'; |
| | | import { $t } from '@vben/locales'; |
| | | import { addFullName, cloneDeep, getPopupContainer } from '@vben/utils'; |
| | | |
| | | import { useVbenForm } from '#/adapter/form'; |
| | | import { addSpareInout, getSpareInout, updateSpareInout } from '#/api/eims/spare-inout'; |
| | | import { getDeptTree, userList } from '#/api/system/user'; |
| | | |
| | | import { drawerSchema } from './data'; |
| | | import CodeInput from '#/views/eims/components/code-input.vue'; |
| | | |
| | | const emit = defineEmits<{ reload: [] }>(); |
| | | |
| | | const isUpdate = ref(false); |
| | | const title = computed(() => { |
| | | return isUpdate.value ? $t('pages.common.edit') : $t('pages.common.add'); |
| | | }); |
| | | |
| | | const [BasicForm, formApi] = useVbenForm({ |
| | | commonConfig: { |
| | | formItemClass: 'col-span-2', |
| | | componentProps: { |
| | | class: 'w-full' |
| | | }, |
| | | labelWidth: 120 |
| | | }, |
| | | schema: drawerSchema(), |
| | | showDefaultActions: false, |
| | | wrapperClass: 'grid-cols-2' |
| | | }); |
| | | |
| | | const [BasicDrawer, drawerApi] = useVbenDrawer({ |
| | | onCancel: handleCancel, |
| | | onConfirm: handleConfirm, |
| | | async onOpenChange(isOpen) { |
| | | if (!isOpen) { |
| | | return null; |
| | | } |
| | | drawerApi.drawerLoading(true); |
| | | const { id } = drawerApi.getData() as { id?: number | string }; |
| | | isUpdate.value = !!id; |
| | | // åå§å |
| | | await setupDeptSelect(); |
| | | // æ´æ° && èµå¼ |
| | | if (isUpdate.value && id) { |
| | | const record = await getSpareInout(id); |
| | | await formApi.setValues(record); |
| | | } |
| | | |
| | | drawerApi.drawerLoading(false); |
| | | } |
| | | }); |
| | | |
| | | /** |
| | | * ç¨æ·çå è½½ |
| | | */ |
| | | async function setupUserOptions(deptId: any) { |
| | | const params = { deptId }; |
| | | const userPageResult = await userList({ |
| | | pageNum: 1, |
| | | pageSize: 500, |
| | | ...params |
| | | }); |
| | | const options = userPageResult.rows.map((item) => ({ |
| | | label: item.nickName || item.userName, |
| | | value: item.userId |
| | | })); |
| | | // çé |
| | | const filterOption = (input: string, option: any) => { |
| | | return option.label.toLowerCase().includes(input.toLowerCase()); |
| | | }; |
| | | |
| | | const placeholder = options.length > 0 ? 'è¯·éæ©' : '该é¨é¨ä¸ææ ç¨æ·'; |
| | | formApi.updateSchema([ |
| | | { |
| | | componentProps: { options, placeholder, filterOption }, |
| | | fieldName: 'chargeUser' |
| | | } |
| | | ]); |
| | | } |
| | | |
| | | /** |
| | | * åå§åé¨é¨éæ© |
| | | */ |
| | | async function setupDeptSelect() { |
| | | // updateSchema |
| | | const deptTree = await getDeptTree(); |
| | | // éä¸åæ¾ç¤ºå¨è¾å
¥æ¡çå¼ å³ç¶èç¹ / åèç¹ |
| | | addFullName(deptTree, 'label', ' / '); |
| | | formApi.updateSchema([ |
| | | { |
| | | componentProps: (formModel) => ({ |
| | | class: 'w-full', |
| | | fieldNames: { |
| | | key: 'id', |
| | | value: 'id', |
| | | children: 'children' |
| | | }, |
| | | getPopupContainer, |
| | | async onSelect(deptId: number | string) { |
| | | /** æ ¹æ®é¨é¨IDå è½½ç¨æ· */ |
| | | await setupUserOptions(deptId); |
| | | /** åååéè¦éæ°éæ©ç¨æ· */ |
| | | formModel.operatorId = undefined; |
| | | }, |
| | | placeholder: 'è¯·éæ©', |
| | | showSearch: true, |
| | | treeData: deptTree, |
| | | treeDefaultExpandAll: true, |
| | | treeLine: { showLeafIcon: false }, |
| | | // çéçåæ®µ |
| | | treeNodeFilterProp: 'label', |
| | | // éä¸åæ¾ç¤ºå¨è¾å
¥æ¡çå¼ |
| | | treeNodeLabelProp: 'fullName' |
| | | }), |
| | | fieldName: 'chargeDept' |
| | | } |
| | | ]); |
| | | } |
| | | async function handleConfirm() { |
| | | try { |
| | | drawerApi.drawerLoading(true); |
| | | const { valid } = await formApi.validate(); |
| | | if (!valid) { |
| | | return; |
| | | } |
| | | const data = cloneDeep(await formApi.getValues()); |
| | | await (isUpdate.value ? updateSpareInout(data) : addSpareInout(data)); |
| | | emit('reload'); |
| | | await handleCancel(); |
| | | } catch (error) { |
| | | console.error(error); |
| | | } finally { |
| | | drawerApi.drawerLoading(false); |
| | | } |
| | | } |
| | | |
| | | async function handleCancel() { |
| | | drawerApi.close(); |
| | | await formApi.resetForm(); |
| | | } |
| | | </script> |
| | | |
| | | <template> |
| | | <BasicDrawer :close-on-click-modal="false" :title="title" class="w-[600px]"> |
| | | <BasicForm> |
| | | <template #orderCode="slotProps"> |
| | | <CodeInput v-bind="slotProps" :disabled="isUpdate" prefix="RK" /> |
| | | </template> |
| | | </BasicForm> |
| | | </BasicDrawer> |
| | | </template> |
¶Ô±ÈÐÂÎļþ |
| | |
| | | import type { VxeGridProps } from '#/adapter/vxe-table'; |
| | | |
| | | import { DictEnum } from '@vben/constants'; |
| | | import { getPopupContainer } from '@vben/utils'; |
| | | |
| | | import { type FormSchemaGetter } from '#/adapter/form'; |
| | | import { getDictOptions } from '#/utils/dict'; |
| | | |
| | | export const querySchema: FormSchemaGetter = () => [ |
| | | { |
| | | component: 'Input', |
| | | fieldName: 'orderCode', |
| | | label: 'åºåºåå·' |
| | | }, |
| | | { |
| | | component: 'TreeSelect', |
| | | // å¨draweréæ´æ° è¿éä¸éè¦é»è®¤çcomponentProps |
| | | defaultValue: undefined, |
| | | fieldName: 'chargeDept', |
| | | label: 'ç»åé¨é¨' |
| | | }, |
| | | { |
| | | component: 'Select', |
| | | componentProps: { |
| | | showSearch: true, |
| | | allowClear: true, |
| | | getPopupContainer |
| | | }, |
| | | fieldName: 'chargeUser', |
| | | label: 'ç»å人' |
| | | }, |
| | | { |
| | | component: 'Input', |
| | | fieldName: 'partnerName', |
| | | label: '客æ·' |
| | | }, |
| | | { |
| | | component: 'RangePicker', |
| | | fieldName: 'orderTime', |
| | | label: '工忶é´' |
| | | } |
| | | ]; |
| | | |
| | | export const columns: VxeGridProps['columns'] = [ |
| | | { type: 'checkbox', width: 60, fixed: 'left' }, |
| | | { |
| | | title: 'åºåºåå·', |
| | | field: 'orderCode', |
| | | minWidth: 100, |
| | | fixed: 'left', |
| | | slots: { default: 'orderCode' } |
| | | }, |
| | | { |
| | | title: 'æ¥æ', |
| | | field: 'orderTime', |
| | | minWidth: 120 |
| | | }, |
| | | { |
| | | title: '客æ·', |
| | | field: 'partnerName', |
| | | minWidth: 100 |
| | | }, |
| | | { |
| | | title: 'ç»å人', |
| | | field: 'chargeUserName', |
| | | minWidth: 100 |
| | | }, |
| | | { |
| | | title: 'å
³èåå·', |
| | | field: 'associatedOrder', |
| | | minWidth: 120 |
| | | }, |
| | | { |
| | | title: '夿³¨', |
| | | field: 'remark', |
| | | minWidth: 140 |
| | | }, |
| | | { |
| | | field: 'action', |
| | | fixed: 'right', |
| | | slots: { default: 'action' }, |
| | | title: 'æä½', |
| | | width: 200 |
| | | } |
| | | ]; |
| | | |
| | | export const drawerSchema: FormSchemaGetter = () => [ |
| | | { |
| | | component: 'Input', |
| | | dependencies: { |
| | | show: () => false, |
| | | triggerFields: [''] |
| | | }, |
| | | fieldName: 'id' |
| | | }, |
| | | { |
| | | component: 'Select', |
| | | componentProps: { |
| | | getPopupContainer, |
| | | options: getDictOptions(DictEnum.SPARE_INOUT_TYPE) |
| | | }, |
| | | dependencies: { |
| | | show: () => true, |
| | | triggerFields: [''] |
| | | }, |
| | | fieldName: 'type', |
| | | defaultValue: '2', |
| | | label: 'ç±»å' |
| | | }, |
| | | { |
| | | component: 'Input', |
| | | fieldName: 'orderCode', |
| | | label: 'åºåºåå·' |
| | | }, |
| | | { |
| | | component: 'Input', |
| | | fieldName: 'partnerName', |
| | | label: '客æ·' |
| | | }, |
| | | { |
| | | component: 'TreeSelect', |
| | | // å¨draweréæ´æ° è¿éä¸éè¦é»è®¤çcomponentProps |
| | | defaultValue: undefined, |
| | | fieldName: 'chargeDept', |
| | | label: 'ç»åé¨é¨', |
| | | rules: 'selectRequired' |
| | | }, |
| | | { |
| | | component: 'Select', |
| | | componentProps: { |
| | | showSearch: true, |
| | | allowClear: true, |
| | | getPopupContainer |
| | | }, |
| | | fieldName: 'chargeUser', |
| | | label: 'ç»å人', |
| | | rules: 'required' |
| | | }, |
| | | { |
| | | component: 'DatePicker', |
| | | componentProps: { |
| | | format: 'YYYY-MM-DD HH:mm:ss', |
| | | showTime: true, |
| | | valueFormat: 'YYYY-MM-DD HH:mm:ss', |
| | | getPopupContainer |
| | | }, |
| | | fieldName: 'orderTime', |
| | | label: 'åºåºæ¶é´' |
| | | }, |
| | | { |
| | | component: 'Textarea', |
| | | formItemClass: 'items-baseline', |
| | | fieldName: 'remark', |
| | | label: '夿³¨' |
| | | } |
| | | ]; |
¶Ô±ÈÐÂÎļþ |
| | |
| | | <script setup lang="ts"> |
| | | import type { Recordable } from '@vben/types'; |
| | | |
| | | import { onMounted } from 'vue'; |
| | | |
| | | import { Page, useVbenDrawer, type VbenFormProps } from '@vben/common-ui'; |
| | | import { $t } from '@vben/locales'; |
| | | import { addFullName, getPopupContainer, getVxePopupContainer } from '@vben/utils'; |
| | | |
| | | import { Modal, Popconfirm, Space } from 'ant-design-vue'; |
| | | |
| | | import { useVbenVxeGrid, vxeCheckboxChecked, type VxeGridProps, vxeSortEvent } from '#/adapter/vxe-table'; |
| | | import { delSpareInout, listSpareInout, spareInoutExport } from '#/api/eims/spare-inout'; |
| | | import { getDeptTree, userList } from '#/api/system/user'; |
| | | import { commonDownloadExcel } from '#/utils/file/download'; |
| | | |
| | | import { columns, querySchema } from './data'; |
| | | import drawer from './spare-out-drawer.vue'; |
| | | |
| | | const formOptions: VbenFormProps = { |
| | | commonConfig: { |
| | | labelWidth: 80, |
| | | componentProps: { |
| | | allowClear: true |
| | | } |
| | | }, |
| | | schema: querySchema(), |
| | | collapsed: true, |
| | | wrapperClass: 'grid-cols-1 md:grid-cols-2 lg:grid-cols-3 xl:grid-cols-4', |
| | | // æ¥æéæ©æ ¼å¼å |
| | | fieldMappingTime: [['orderTime', ['params[beginOrderTime]', 'params[endOrderTime]'], ['YYYY-MM-DD 00:00:00', 'YYYY-MM-DD 23:59:59']]] |
| | | }; |
| | | |
| | | const gridOptions: VxeGridProps = { |
| | | checkboxConfig: { |
| | | // é«äº® |
| | | highlight: true, |
| | | // 翻页æ¶ä¿çéä¸ç¶æ |
| | | reserve: true |
| | | // ç¹å»è¡éä¸ |
| | | // trigger: 'row' |
| | | }, |
| | | columns, |
| | | height: 'auto', |
| | | keepSource: true, |
| | | pagerConfig: {}, |
| | | proxyConfig: { |
| | | ajax: { |
| | | query: async ({ page }, formValues = {}) => { |
| | | // 1-å
¥åºå 2-åºåºå |
| | | formValues.type = '2'; |
| | | return await listSpareInout({ |
| | | pageNum: page.currentPage, |
| | | pageSize: page.pageSize, |
| | | ...formValues |
| | | }); |
| | | } |
| | | } |
| | | }, |
| | | rowConfig: { |
| | | isHover: true, |
| | | keyField: 'id' |
| | | }, |
| | | sortConfig: { |
| | | // è¿ç¨æåº |
| | | remote: true, |
| | | // æ¯æå¤å段æåº é»è®¤å
³é |
| | | multiple: true |
| | | }, |
| | | id: 'spre-inout-index' |
| | | }; |
| | | |
| | | const [BasicTable, tableApi] = useVbenVxeGrid({ |
| | | formOptions, |
| | | gridOptions, |
| | | gridEvents: { |
| | | sortChange: (sortParams) => vxeSortEvent(tableApi, sortParams) |
| | | } |
| | | }); |
| | | |
| | | const [Drawer, drawerApi] = useVbenDrawer({ |
| | | connectedComponent: drawer |
| | | }); |
| | | |
| | | function handleAdd() { |
| | | drawerApi.setData({}); |
| | | drawerApi.open(); |
| | | } |
| | | |
| | | async function handleEdit(record: Recordable<any>) { |
| | | drawerApi.setData({ id: record.id }); |
| | | drawerApi.open(); |
| | | } |
| | | |
| | | async function handleDelete(row: Recordable<any>) { |
| | | await delSpareInout(row.id); |
| | | await tableApi.query(); |
| | | } |
| | | |
| | | function handleMultiDelete() { |
| | | const rows = tableApi.grid.getCheckboxRecords(); |
| | | const ids = rows.map((row: any) => row.id); |
| | | Modal.confirm({ |
| | | title: 'æç¤º', |
| | | okType: 'danger', |
| | | content: `确认å é¤éä¸ç${ids.length}æ¡è®°å½åï¼`, |
| | | onOk: async () => { |
| | | await delSpareInout(ids); |
| | | await tableApi.query(); |
| | | } |
| | | }); |
| | | } |
| | | |
| | | function handleDownloadExcel() { |
| | | commonDownloadExcel(spareInoutExport, 'å¤ä»¶åºåºåè®°å½', tableApi.formApi.form.values, { |
| | | fieldMappingTime: formOptions.fieldMappingTime |
| | | }); |
| | | } |
| | | /** |
| | | * ç¨æ·çå è½½ |
| | | */ |
| | | async function setupUserOptions(deptId: any) { |
| | | const params = { deptId }; |
| | | const userPageResult = await userList({ |
| | | pageNum: 1, |
| | | pageSize: 500, |
| | | ...params |
| | | }); |
| | | const options = userPageResult.rows.map((item) => ({ |
| | | label: item.nickName || item.userName, |
| | | value: item.userId |
| | | })); |
| | | // çé |
| | | const filterOption = (input: string, option: any) => { |
| | | return option.label.toLowerCase().includes(input.toLowerCase()); |
| | | }; |
| | | |
| | | const placeholder = options.length > 0 ? 'è¯·éæ©' : '该é¨é¨ä¸ææ ç¨æ·'; |
| | | tableApi.formApi.updateSchema([ |
| | | { |
| | | componentProps: { options, placeholder, filterOption }, |
| | | fieldName: 'chargeUser' |
| | | } |
| | | ]); |
| | | } |
| | | |
| | | /** |
| | | * åå§åé¨é¨éæ© |
| | | */ |
| | | async function setupDeptSelect() { |
| | | // updateSchema |
| | | const deptTree = await getDeptTree(); |
| | | // éä¸åæ¾ç¤ºå¨è¾å
¥æ¡çå¼ å³ç¶èç¹ / åèç¹ |
| | | addFullName(deptTree, 'label', ' / '); |
| | | tableApi.formApi.updateSchema([ |
| | | { |
| | | componentProps: (formModel) => ({ |
| | | class: 'w-full', |
| | | fieldNames: { |
| | | key: 'id', |
| | | value: 'id', |
| | | children: 'children' |
| | | }, |
| | | getPopupContainer, |
| | | async onSelect(deptId: number | string) { |
| | | /** æ ¹æ®é¨é¨IDå è½½ç¨æ· */ |
| | | await setupUserOptions(deptId); |
| | | /** åååéè¦éæ°éæ©ç¨æ· */ |
| | | formModel.chargeUser = undefined; |
| | | }, |
| | | placeholder: 'è¯·éæ©', |
| | | showSearch: true, |
| | | treeData: deptTree, |
| | | treeDefaultExpandAll: true, |
| | | treeLine: { showLeafIcon: false }, |
| | | // çéçåæ®µ |
| | | treeNodeFilterProp: 'label', |
| | | // éä¸åæ¾ç¤ºå¨è¾å
¥æ¡çå¼ |
| | | treeNodeLabelProp: 'fullName' |
| | | }), |
| | | fieldName: 'chargeDept' |
| | | } |
| | | ]); |
| | | } |
| | | |
| | | onMounted(async () => { |
| | | await setupDeptSelect(); |
| | | }); |
| | | </script> |
| | | |
| | | <template> |
| | | <Page :auto-content-height="true"> |
| | | <div class="flex h-full gap-[8px]"> |
| | | <BasicTable class="flex-1 overflow-hidden" table-title="å¤ä»¶åºåºåå表"> |
| | | <template #toolbar-tools> |
| | | <Space> |
| | | <a-button v-access:code="['eims:spareInout:export']" @click="handleDownloadExcel"> |
| | | {{ $t('pages.common.export') }} |
| | | </a-button> |
| | | <a-button |
| | | :disabled="!vxeCheckboxChecked(tableApi)" |
| | | danger |
| | | type="primary" |
| | | v-access:code="['eims:spareInout:remove']" |
| | | @click="handleMultiDelete" |
| | | > |
| | | {{ $t('pages.common.delete') }} |
| | | </a-button> |
| | | <a-button type="primary" v-access:code="['eims:spareInout:add']" @click="handleAdd"> |
| | | {{ $t('pages.common.add') }} |
| | | </a-button> |
| | | </Space> |
| | | </template> |
| | | |
| | | <template #orderCode="{ row }"> |
| | | <Space> |
| | | <a-button type="link"> {{ row.orderCode }}</a-button> |
| | | </Space> |
| | | </template> |
| | | |
| | | <template #action="{ row }"> |
| | | <Space> |
| | | <ghost-button v-access:code="['eims:spareInout:edit']" @click.stop="handleEdit(row)"> |
| | | {{ $t('pages.common.edit') }} |
| | | </ghost-button> |
| | | <Popconfirm :get-popup-container="getVxePopupContainer" placement="left" title="确认å é¤ï¼" @confirm="handleDelete(row)"> |
| | | <ghost-button danger v-access:code="['eims:spareInout:remove']" @click.stop=""> |
| | | {{ $t('pages.common.delete') }} |
| | | </ghost-button> |
| | | </Popconfirm> |
| | | </Space> |
| | | </template> |
| | | </BasicTable> |
| | | </div> |
| | | <Drawer @reload="tableApi.query()" /> |
| | | </Page> |
| | | </template> |
¶Ô±ÈÐÂÎļþ |
| | |
| | | <script setup lang="ts"> |
| | | import { computed, ref } from 'vue'; |
| | | |
| | | import { useVbenDrawer } from '@vben/common-ui'; |
| | | import { $t } from '@vben/locales'; |
| | | import { addFullName, cloneDeep, getPopupContainer } from '@vben/utils'; |
| | | |
| | | import { useVbenForm } from '#/adapter/form'; |
| | | import { addSpareInout, getSpareInout, updateSpareInout } from '#/api/eims/spare-inout'; |
| | | import { getDeptTree, userList } from '#/api/system/user'; |
| | | |
| | | import { drawerSchema } from './data'; |
| | | import CodeInput from '#/views/eims/components/code-input.vue'; |
| | | |
| | | const emit = defineEmits<{ reload: [] }>(); |
| | | |
| | | const isUpdate = ref(false); |
| | | const title = computed(() => { |
| | | return isUpdate.value ? $t('pages.common.edit') : $t('pages.common.add'); |
| | | }); |
| | | |
| | | const [BasicForm, formApi] = useVbenForm({ |
| | | commonConfig: { |
| | | formItemClass: 'col-span-2', |
| | | componentProps: { |
| | | class: 'w-full' |
| | | }, |
| | | labelWidth: 120 |
| | | }, |
| | | schema: drawerSchema(), |
| | | showDefaultActions: false, |
| | | wrapperClass: 'grid-cols-2' |
| | | }); |
| | | |
| | | const [BasicDrawer, drawerApi] = useVbenDrawer({ |
| | | onCancel: handleCancel, |
| | | onConfirm: handleConfirm, |
| | | async onOpenChange(isOpen) { |
| | | if (!isOpen) { |
| | | return null; |
| | | } |
| | | drawerApi.drawerLoading(true); |
| | | const { id } = drawerApi.getData() as { id?: number | string }; |
| | | isUpdate.value = !!id; |
| | | // åå§å |
| | | await setupDeptSelect(); |
| | | // æ´æ° && èµå¼ |
| | | if (isUpdate.value && id) { |
| | | const record = await getSpareInout(id); |
| | | await formApi.setValues(record); |
| | | } |
| | | |
| | | drawerApi.drawerLoading(false); |
| | | } |
| | | }); |
| | | |
| | | /** |
| | | * ç¨æ·çå è½½ |
| | | */ |
| | | async function setupUserOptions(deptId: any) { |
| | | const params = { deptId }; |
| | | const userPageResult = await userList({ |
| | | pageNum: 1, |
| | | pageSize: 500, |
| | | ...params |
| | | }); |
| | | const options = userPageResult.rows.map((item) => ({ |
| | | label: item.nickName || item.userName, |
| | | value: item.userId |
| | | })); |
| | | // çé |
| | | const filterOption = (input: string, option: any) => { |
| | | return option.label.toLowerCase().includes(input.toLowerCase()); |
| | | }; |
| | | |
| | | const placeholder = options.length > 0 ? 'è¯·éæ©' : '该é¨é¨ä¸ææ ç¨æ·'; |
| | | formApi.updateSchema([ |
| | | { |
| | | componentProps: { options, placeholder, filterOption }, |
| | | fieldName: 'chargeUser' |
| | | } |
| | | ]); |
| | | } |
| | | |
| | | /** |
| | | * åå§åé¨é¨éæ© |
| | | */ |
| | | async function setupDeptSelect() { |
| | | // updateSchema |
| | | const deptTree = await getDeptTree(); |
| | | // éä¸åæ¾ç¤ºå¨è¾å
¥æ¡çå¼ å³ç¶èç¹ / åèç¹ |
| | | addFullName(deptTree, 'label', ' / '); |
| | | formApi.updateSchema([ |
| | | { |
| | | componentProps: (formModel) => ({ |
| | | class: 'w-full', |
| | | fieldNames: { |
| | | key: 'id', |
| | | value: 'id', |
| | | children: 'children' |
| | | }, |
| | | getPopupContainer, |
| | | async onSelect(deptId: number | string) { |
| | | /** æ ¹æ®é¨é¨IDå è½½ç¨æ· */ |
| | | await setupUserOptions(deptId); |
| | | /** åååéè¦éæ°éæ©ç¨æ· */ |
| | | formModel.operatorId = undefined; |
| | | }, |
| | | placeholder: 'è¯·éæ©', |
| | | showSearch: true, |
| | | treeData: deptTree, |
| | | treeDefaultExpandAll: true, |
| | | treeLine: { showLeafIcon: false }, |
| | | // çéçåæ®µ |
| | | treeNodeFilterProp: 'label', |
| | | // éä¸åæ¾ç¤ºå¨è¾å
¥æ¡çå¼ |
| | | treeNodeLabelProp: 'fullName' |
| | | }), |
| | | fieldName: 'chargeDept' |
| | | } |
| | | ]); |
| | | } |
| | | async function handleConfirm() { |
| | | try { |
| | | drawerApi.drawerLoading(true); |
| | | const { valid } = await formApi.validate(); |
| | | if (!valid) { |
| | | return; |
| | | } |
| | | const data = cloneDeep(await formApi.getValues()); |
| | | await (isUpdate.value ? updateSpareInout(data) : addSpareInout(data)); |
| | | emit('reload'); |
| | | await handleCancel(); |
| | | } catch (error) { |
| | | console.error(error); |
| | | } finally { |
| | | drawerApi.drawerLoading(false); |
| | | } |
| | | } |
| | | |
| | | async function handleCancel() { |
| | | drawerApi.close(); |
| | | await formApi.resetForm(); |
| | | } |
| | | </script> |
| | | |
| | | <template> |
| | | <BasicDrawer :close-on-click-modal="false" :title="title" class="w-[600px]"> |
| | | <BasicForm> |
| | | <template #orderCode="slotProps"> |
| | | <CodeInput v-bind="slotProps" :disabled="isUpdate" prefix="CK" /> |
| | | </template> |
| | | </BasicForm> |
| | | </BasicDrawer> |
| | | </template> |
¶Ô±ÈÐÂÎļþ |
| | |
| | | import type { VxeGridProps } from '#/adapter/vxe-table'; |
| | | |
| | | import { h } from 'vue'; |
| | | |
| | | import { DictEnum } from '@vben/constants'; |
| | | import { FolderIcon, MenuIcon, VbenIcon } from '@vben/icons'; |
| | | import { getPopupContainer } from '@vben/utils'; |
| | | |
| | | import { type FormSchemaGetter } from '#/adapter/form'; |
| | | import { getDictOptions } from '#/utils/dict'; |
| | | import { renderDict } from '#/utils/render'; |
| | | |
| | | export const querySchema: FormSchemaGetter = () => [ |
| | | { |
| | | component: 'Input', |
| | | fieldName: 'typeName', |
| | | label: 'ç±»ååç§° ' |
| | | }, |
| | | { |
| | | component: 'Select', |
| | | componentProps: { |
| | | getPopupContainer, |
| | | options: getDictOptions(DictEnum.SYS_NORMAL_DISABLE) |
| | | }, |
| | | fieldName: 'status', |
| | | label: 'ç±»åç¶æ ' |
| | | } |
| | | ]; |
| | | |
| | | // èåç±»åï¼Mç®å½ Cèå Fæé®ï¼ |
| | | export const spareTypeOptions = [ |
| | | { label: 'å¤ä»¶ç®å½', value: 'M' }, |
| | | { label: 'å¤ä»¶ç±»å', value: 'C' } |
| | | ]; |
| | | |
| | | export const yesNoOptions = [ |
| | | { label: 'æ¯', value: '0' }, |
| | | { label: 'å¦', value: '1' } |
| | | ]; |
| | | |
| | | // ï¼Mç®å½ Cèåï¼ |
| | | const menuTypes = { |
| | | M: { icon: FolderIcon, value: 'å¤ä»¶ç®å½' }, |
| | | C: { icon: MenuIcon, value: 'å¤ä»¶ç±»å' } |
| | | }; |
| | | export const columns: VxeGridProps['columns'] = [ |
| | | { |
| | | title: 'ç±»ååç§°', |
| | | field: 'typeName', |
| | | treeNode: true, |
| | | width: 200 |
| | | }, |
| | | { |
| | | title: 'ç±»åç¼ç ', |
| | | field: 'typeCode', |
| | | width: 200 |
| | | }, |
| | | { |
| | | title: '徿 ', |
| | | field: 'icon', |
| | | width: 80, |
| | | slots: { |
| | | default: ({ row }) => { |
| | | if (row?.icon === '#') { |
| | | return ''; |
| | | } |
| | | return ( |
| | | <span class={'flex justify-center'}> |
| | | <VbenIcon icon={row.icon} /> |
| | | </span> |
| | | ); |
| | | } |
| | | } |
| | | }, |
| | | { |
| | | title: 'æåº', |
| | | field: 'orderNum', |
| | | width: 120 |
| | | }, |
| | | { |
| | | title: 'èç¹ç±»å', |
| | | field: 'menuType', |
| | | width: 150, |
| | | slots: { |
| | | default: ({ row }) => { |
| | | const current = menuTypes[row.menuType as 'C' | 'M']; |
| | | if (!current) { |
| | | return 'æªç¥'; |
| | | } |
| | | return ( |
| | | <span class="flex items-center justify-center gap-1"> |
| | | {h(current.icon, { class: 'size-[18px]' })} |
| | | <span>{current.value}</span> |
| | | </span> |
| | | ); |
| | | } |
| | | } |
| | | }, |
| | | { |
| | | title: 'ç¶æ', |
| | | field: 'status', |
| | | width: 100, |
| | | slots: { |
| | | default: ({ row }) => { |
| | | return renderDict(row.status, DictEnum.SYS_NORMAL_DISABLE); |
| | | } |
| | | } |
| | | }, |
| | | { |
| | | title: 'å建æ¶é´', |
| | | field: 'createTime' |
| | | }, |
| | | { |
| | | field: 'action', |
| | | fixed: 'right', |
| | | slots: { default: 'action' }, |
| | | title: 'æä½', |
| | | width: 200 |
| | | } |
| | | ]; |
| | | |
| | | export const drawerSchema: FormSchemaGetter = () => [ |
| | | { |
| | | component: 'Input', |
| | | dependencies: { |
| | | show: () => false, |
| | | triggerFields: [''] |
| | | }, |
| | | fieldName: 'id' |
| | | }, |
| | | { |
| | | component: 'TreeSelect', |
| | | defaultValue: 0, |
| | | fieldName: 'parentId', |
| | | label: 'ä¸çº§èå', |
| | | rules: 'selectRequired' |
| | | }, |
| | | { |
| | | component: 'RadioGroup', |
| | | componentProps: { |
| | | buttonStyle: 'solid', |
| | | options: spareTypeOptions, |
| | | optionType: 'button' |
| | | }, |
| | | defaultValue: 'M', |
| | | dependencies: { |
| | | componentProps: (_, api) => { |
| | | // åæ¢æ¶æ¸
ç©ºæ ¡éª |
| | | // ç´æ¥æçæºç æ²¡ææ¸
ç©ºæ ¡éªçæ¹æ³ |
| | | Object.keys(api.errors.value).forEach((key) => { |
| | | api.setFieldError(key, undefined); |
| | | }); |
| | | return {}; |
| | | }, |
| | | triggerFields: ['menuType'] |
| | | }, |
| | | fieldName: 'menuType', |
| | | label: 'èç¹ç±»å' |
| | | }, |
| | | { |
| | | component: 'Input', |
| | | fieldName: 'typeName', |
| | | label: 'ç±»ååç§°', |
| | | rules: 'required' |
| | | }, |
| | | { |
| | | component: 'Input', |
| | | fieldName: 'typeCode', |
| | | label: 'ç±»åç¼ç ', |
| | | rules: 'required' |
| | | }, |
| | | { |
| | | component: 'InputNumber', |
| | | fieldName: 'orderNum', |
| | | help: 'æåº, æ°åè¶å°è¶é å', |
| | | label: 'æ¾ç¤ºæåº', |
| | | rules: 'required' |
| | | }, |
| | | { |
| | | component: 'RadioGroup', |
| | | componentProps: { |
| | | buttonStyle: 'solid', |
| | | options: getDictOptions(DictEnum.SYS_NORMAL_DISABLE), |
| | | optionType: 'button' |
| | | }, |
| | | defaultValue: '0', |
| | | dependencies: { |
| | | // ç±»åä¸ä¸ºæé®æ¶æ¾ç¤º |
| | | show: (values) => values.menuType !== 'F', |
| | | triggerFields: ['menuType'] |
| | | }, |
| | | fieldName: 'status', |
| | | help: 'åç¨åä¸ä¼åºç°å¨å表', |
| | | label: 'ç±»åç¶æ' |
| | | } |
| | | ]; |
¶Ô±ÈÐÂÎļþ |
| | |
| | | <script setup lang="ts"> |
| | | import type { Recordable } from '@vben/types'; |
| | | |
| | | import { Page, useVbenDrawer, type VbenFormProps } from '@vben/common-ui'; |
| | | import { eachTree, getVxePopupContainer } from '@vben/utils'; |
| | | |
| | | import { Popconfirm, Space } from 'ant-design-vue'; |
| | | |
| | | import { useVbenVxeGrid, type VxeGridProps } from '#/adapter/vxe-table'; |
| | | import { delSpareType, spareTypeExport, listSpareType } from '#/api/eims/spare-type'; |
| | | import { $t } from '@vben/locales'; |
| | | import { commonDownloadExcel } from '#/utils/file/download'; |
| | | |
| | | import { columns, querySchema } from './data'; |
| | | import spareTypeDrawer from './spare-type-drawer.vue'; |
| | | |
| | | /** |
| | | * ä¸è¦é®ä¸ºä»ä¹æä¸¤ä¸ªæ ¹èç¹ v-if伿§å¶åªä¼æ¸²æä¸ä¸ª |
| | | */ |
| | | |
| | | const formOptions: VbenFormProps = { |
| | | commonConfig: { |
| | | labelWidth: 80, |
| | | componentProps: { |
| | | allowClear: true |
| | | } |
| | | }, |
| | | schema: querySchema(), |
| | | wrapperClass: 'grid-cols-1 md:grid-cols-2 lg:grid-cols-3 xl:grid-cols-4' |
| | | }; |
| | | |
| | | const gridOptions: VxeGridProps = { |
| | | columns, |
| | | height: 'auto', |
| | | keepSource: true, |
| | | pagerConfig: { |
| | | enabled: false |
| | | }, |
| | | proxyConfig: { |
| | | ajax: { |
| | | query: async (_, formValues = {}) => { |
| | | const resp = await listSpareType({ |
| | | ...formValues |
| | | }); |
| | | return { rows: resp }; |
| | | } |
| | | } |
| | | }, |
| | | rowConfig: { |
| | | isHover: true, |
| | | keyField: 'id' |
| | | }, |
| | | /** |
| | | * å¼å¯èææ»å¨ |
| | | * æ°æ®éå°å¯ä»¥éæ©å
³é |
| | | * 妿éå°æ ·å¼é®é¢(空ç½ãéä½ æ»å¨ç)å¯ä»¥éæ©å
³éèææ»å¨ |
| | | */ |
| | | scrollY: { |
| | | enabled: true, |
| | | gt: 0 |
| | | }, |
| | | treeConfig: { |
| | | parentField: 'parentId', |
| | | rowField: 'id', |
| | | // èªå¨è½¬æ¢ä¸ºtree ç±vxeå¤ç æ éæå¨è½¬æ¢ |
| | | transform: true |
| | | }, |
| | | id: 'spare-type-index' |
| | | }; |
| | | |
| | | const [BasicTable, tableApi] = useVbenVxeGrid({ |
| | | formOptions, |
| | | gridOptions, |
| | | gridEvents: { |
| | | cellDblclick: (e: any) => { |
| | | const { row = {} } = e; |
| | | if (!row?.children) { |
| | | return; |
| | | } |
| | | const isExpanded = row?.expand; |
| | | tableApi.grid.setTreeExpand(row, !isExpanded); |
| | | row.expand = !isExpanded; |
| | | }, |
| | | // éè¦çå¬ä½¿ç¨ç®å¤´å±å¼çæ
åµ å¦åå±å¼/æå çæ°æ®ä¸ä¸è´ |
| | | toggleTreeExpand: (e: any) => { |
| | | const { row = {}, expanded } = e; |
| | | row.expand = expanded; |
| | | } |
| | | } |
| | | }); |
| | | const [SpareTypeDrawer, drawerApi] = useVbenDrawer({ |
| | | connectedComponent: spareTypeDrawer |
| | | }); |
| | | |
| | | function handleAdd() { |
| | | drawerApi.setData({}); |
| | | drawerApi.open(); |
| | | } |
| | | |
| | | function handleSubAdd(row: Recordable<any>) { |
| | | const { id } = row; |
| | | drawerApi.setData({ id, update: false }); |
| | | drawerApi.open(); |
| | | } |
| | | |
| | | async function handleEdit(record: Recordable<any>) { |
| | | drawerApi.setData({ id: record.id, update: true }); |
| | | drawerApi.open(); |
| | | } |
| | | |
| | | async function handleDelete(row: Recordable<any>) { |
| | | await delSpareType(row.id); |
| | | await tableApi.query(); |
| | | } |
| | | |
| | | function handleDownloadExcel() { |
| | | commonDownloadExcel(spareTypeExport, 'å¤ä»¶ç±»å', tableApi.formApi.form.values, { |
| | | fieldMappingTime: formOptions.fieldMappingTime |
| | | }); |
| | | } |
| | | |
| | | /** |
| | | * å
¨é¨å±å¼/æå |
| | | * @param expand æ¯å¦å±å¼ |
| | | */ |
| | | function setExpandOrCollapse(expand: boolean) { |
| | | eachTree(tableApi.grid.getData(), (item) => (item.expand = expand)); |
| | | tableApi.grid?.setAllTreeExpand(expand); |
| | | } |
| | | </script> |
| | | |
| | | <template> |
| | | <Page :auto-content-height="true"> |
| | | <BasicTable table-title="å¤ä»¶ç±»åå表" table-title-help="åå»å±å¼/æ¶èµ·åèå"> |
| | | <template #toolbar-tools> |
| | | <Space> |
| | | <a-button @click="setExpandOrCollapse(false)"> |
| | | {{ $t('pages.common.collapse') }} |
| | | </a-button> |
| | | <a-button @click="setExpandOrCollapse(true)"> |
| | | {{ $t('pages.common.expand') }} |
| | | </a-button> |
| | | <a-button v-access:code="['eims:spareType:export']" @click="handleDownloadExcel"> |
| | | {{ $t('pages.common.export') }} |
| | | </a-button> |
| | | <a-button type="primary" v-access:code="['eims:spareType:add']" @click="handleAdd"> |
| | | {{ $t('pages.common.add') }} |
| | | </a-button> |
| | | </Space> |
| | | </template> |
| | | <template #action="{ row }"> |
| | | <Space> |
| | | <ghost-button v-access:code="['eims:spareType:edit']" @click="handleEdit(row)"> |
| | | {{ $t('pages.common.edit') }} |
| | | </ghost-button> |
| | | <!-- 'æé®ç±»å'æ æ³åæ·»å åèå --> |
| | | <ghost-button v-if="row.menuType !== 'F'" class="btn-success" v-access:code="['eims:spareType:add']" @click="handleSubAdd(row)"> |
| | | {{ $t('pages.common.add') }} |
| | | </ghost-button> |
| | | <Popconfirm :get-popup-container="getVxePopupContainer" placement="left" title="确认å é¤ï¼" @confirm="handleDelete(row)"> |
| | | <ghost-button danger v-access:code="['eims:spareType:remove']" @click.stop=""> |
| | | {{ $t('pages.common.delete') }} |
| | | </ghost-button> |
| | | </Popconfirm> |
| | | </Space> |
| | | </template> |
| | | </BasicTable> |
| | | <SpareTypeDrawer @reload="tableApi.query()" /> |
| | | </Page> |
| | | </template> |
¶Ô±ÈÐÂÎļþ |
| | |
| | | <script setup lang="ts"> |
| | | import { computed, ref } from 'vue'; |
| | | |
| | | import { useVbenDrawer } from '@vben/common-ui'; |
| | | import { $t } from '@vben/locales'; |
| | | import { addFullName, cloneDeep, getPopupContainer, listToTree } from '@vben/utils'; |
| | | |
| | | import { useVbenForm } from '#/adapter/form'; |
| | | import { addSpareType, getSpareType, listSpareType, updateSpareType } from '#/api/eims/spare-type'; |
| | | |
| | | import { drawerSchema } from './data'; |
| | | |
| | | interface ModalProps { |
| | | id?: number | string; |
| | | update: boolean; |
| | | } |
| | | |
| | | const emit = defineEmits<{ reload: [] }>(); |
| | | |
| | | const isUpdate = ref(false); |
| | | const title = computed(() => { |
| | | return isUpdate.value ? $t('pages.common.edit') : $t('pages.common.add'); |
| | | }); |
| | | |
| | | const [BasicForm, formApi] = useVbenForm({ |
| | | commonConfig: { |
| | | componentProps: { |
| | | class: 'w-full' |
| | | }, |
| | | formItemClass: 'col-span-2', |
| | | labelWidth: 90 |
| | | }, |
| | | schema: drawerSchema(), |
| | | showDefaultActions: false, |
| | | wrapperClass: 'grid-cols-2' |
| | | }); |
| | | |
| | | async function setupSpareTypeSelect() { |
| | | // menu |
| | | const menuArray = await listSpareType({ status: '0' }); |
| | | // support i18n |
| | | menuArray.forEach((item) => { |
| | | item.typeName = $t(item.typeName); |
| | | }); |
| | | // const folderArray = menuArray.filter((item) => item.menuType === 'M'); |
| | | const menuTree = listToTree(menuArray, { id: 'id', pid: 'parentId' }); |
| | | const fullMenuTree = [ |
| | | { |
| | | id: 0, |
| | | typeName: $t('menu.root'), |
| | | children: menuTree |
| | | } |
| | | ]; |
| | | addFullName(fullMenuTree, 'typeName', ' / '); |
| | | formApi.updateSchema([ |
| | | { |
| | | componentProps: { |
| | | fieldNames: { |
| | | label: 'typeName', |
| | | value: 'id' |
| | | }, |
| | | getPopupContainer, |
| | | // è®¾ç½®å¼¹çªæ»å¨é«åº¦ é»è®¤256 |
| | | listHeight: 300, |
| | | showSearch: true, |
| | | treeData: fullMenuTree, |
| | | treeDefaultExpandAll: false, |
| | | // é»è®¤å±å¼çæ èç¹ |
| | | treeDefaultExpandedKeys: [0], |
| | | treeLine: { showLeafIcon: false }, |
| | | // çéçåæ®µ |
| | | treeNodeFilterProp: 'typeName', |
| | | treeNodeLabelProp: 'fullName' |
| | | }, |
| | | fieldName: 'parentId' |
| | | } |
| | | ]); |
| | | } |
| | | |
| | | const [BasicDrawer, drawerApi] = useVbenDrawer({ |
| | | onCancel: handleCancel, |
| | | onConfirm: handleConfirm, |
| | | async onOpenChange(isOpen) { |
| | | if (!isOpen) { |
| | | return null; |
| | | } |
| | | drawerApi.drawerLoading(true); |
| | | const { id, update } = drawerApi.getData() as ModalProps; |
| | | isUpdate.value = update; |
| | | |
| | | // å 载设å¤ç±»åæ éæ© |
| | | await setupSpareTypeSelect(); |
| | | if (id) { |
| | | await formApi.setFieldValue('parentId', id); |
| | | if (update) { |
| | | const record = await getSpareType(id); |
| | | await formApi.setValues(record); |
| | | } |
| | | } |
| | | drawerApi.drawerLoading(false); |
| | | } |
| | | }); |
| | | |
| | | async function handleConfirm() { |
| | | try { |
| | | drawerApi.drawerLoading(true); |
| | | const { valid } = await formApi.validate(); |
| | | if (!valid) { |
| | | return; |
| | | } |
| | | const data = cloneDeep(await formApi.getValues()); |
| | | await (isUpdate.value ? updateSpareType(data) : addSpareType(data)); |
| | | emit('reload'); |
| | | await handleCancel(); |
| | | } catch (error) { |
| | | console.error(error); |
| | | } finally { |
| | | drawerApi.drawerLoading(false); |
| | | } |
| | | } |
| | | |
| | | async function handleCancel() { |
| | | drawerApi.close(); |
| | | await formApi.resetForm(); |
| | | } |
| | | </script> |
| | | |
| | | <template> |
| | | <BasicDrawer :close-on-click-modal="false" :title="title" class="w-[600px]"> |
| | | <BasicForm /> |
| | | </BasicDrawer> |
| | | </template> |
¶Ô±ÈÐÂÎļþ |
| | |
| | | import type { VxeGridProps } from '#/adapter/vxe-table'; |
| | | |
| | | import { DictEnum } from '@vben/constants'; |
| | | |
| | | import { type FormSchemaGetter } from '#/adapter/form'; |
| | | import { getDictOptions } from '#/utils/dict'; |
| | | import { renderDict } from '#/utils/render'; |
| | | import { getPopupContainer } from '@vben/utils'; |
| | | |
| | | export const querySchema: FormSchemaGetter = () => [ |
| | | { |
| | | component: 'Input', |
| | | fieldName: 'name', |
| | | label: 'å¤ä»¶åç§°' |
| | | }, |
| | | { |
| | | component: 'Input', |
| | | fieldName: 'code', |
| | | label: 'å¤ä»¶ç¼ç ' |
| | | }, |
| | | { |
| | | component: 'Input', |
| | | fieldName: 'modelNo', |
| | | label: 'å¤ä»¶åå·' |
| | | }, |
| | | { |
| | | component: 'Input', |
| | | fieldName: 'madeIn', |
| | | label: 'ç产产å' |
| | | }, |
| | | { |
| | | component: 'Input', |
| | | fieldName: 'supplier', |
| | | label: 'ä¾åºå' |
| | | } |
| | | ]; |
| | | |
| | | export const columns: VxeGridProps['columns'] = [ |
| | | { type: 'checkbox', width: 60, fixed: 'left' }, |
| | | { |
| | | title: 'å¤ä»¶é¢è§', |
| | | field: 'imgUrl', |
| | | showOverflow: true, |
| | | width: 100, |
| | | fixed: 'left', |
| | | align: 'center', |
| | | slots: { default: 'imgUrl' } |
| | | }, |
| | | { |
| | | title: 'å¤ä»¶åç§°', |
| | | field: 'name', |
| | | fixed: 'left', |
| | | align: 'center', |
| | | width: 200 |
| | | }, |
| | | { |
| | | title: 'å¤ä»¶ç¼ç ', |
| | | field: 'code', |
| | | width: 140 |
| | | }, |
| | | { |
| | | title: 'å¤ä»¶åå·', |
| | | field: 'modelNo', |
| | | width: 100 |
| | | }, |
| | | { |
| | | title: 'å¤ä»¶ç±»å', |
| | | field: 'typeName', |
| | | width: 100 |
| | | }, |
| | | { |
| | | title: 'ç产产å', |
| | | field: 'madeIn', |
| | | width: 140 |
| | | }, |
| | | { |
| | | title: 'ä¾åºå', |
| | | field: 'supplier', |
| | | width: 140 |
| | | }, |
| | | { |
| | | title: '计éåä½', |
| | | field: 'unit', |
| | | sortable: true, |
| | | slots: { |
| | | default: ({ row }) => { |
| | | if (row.unit === null || row.unit === '') { |
| | | return ''; |
| | | } |
| | | return renderDict(row.unit, DictEnum.EIMS_SPARE_UNIT); |
| | | } |
| | | }, |
| | | width: 100 |
| | | }, |
| | | { |
| | | title: 'åèä»·', |
| | | field: 'referPrice', |
| | | sortable: true, |
| | | width: 120 |
| | | }, |
| | | { |
| | | title: 'åºåä¸é', |
| | | field: 'upperStock', |
| | | sortable: true, |
| | | width: 120 |
| | | }, |
| | | { |
| | | title: 'åºåä¸é', |
| | | field: 'lowerStock', |
| | | width: 120 |
| | | }, |
| | | { |
| | | title: 'å®é
åºå', |
| | | field: 'actualStock', |
| | | width: 120 |
| | | }, |
| | | { |
| | | title: 'åºåéé¢', |
| | | field: 'stockAmount', |
| | | width: 120 |
| | | }, |
| | | { |
| | | title: 'æ´æ¢å¨æ', |
| | | field: 'replaceCycle', |
| | | width: 120 |
| | | }, |
| | | { |
| | | title: '夿³¨', |
| | | field: 'remark', |
| | | width: 120 |
| | | }, |
| | | { |
| | | field: 'action', |
| | | fixed: 'right', |
| | | slots: { default: 'action' }, |
| | | title: 'æä½', |
| | | width: 180 |
| | | } |
| | | ]; |
| | | |
| | | export const drawerSchema: FormSchemaGetter = () => [ |
| | | { |
| | | component: 'Input', |
| | | dependencies: { |
| | | show: () => false, |
| | | triggerFields: [''] |
| | | }, |
| | | fieldName: 'id' |
| | | }, |
| | | { |
| | | component: 'TreeSelect', |
| | | defaultValue: 0, |
| | | fieldName: 'type', |
| | | label: 'å¤ä»¶ç±»å', |
| | | rules: 'selectRequired' |
| | | }, |
| | | { |
| | | component: 'Input', |
| | | fieldName: 'name', |
| | | label: 'å¤ä»¶åç§°', |
| | | rules: 'required' |
| | | }, |
| | | { |
| | | component: 'Input', |
| | | fieldName: 'code', |
| | | label: 'å¤ä»¶ç¼ç ', |
| | | rules: 'required' |
| | | }, |
| | | { |
| | | component: 'Input', |
| | | fieldName: 'img', |
| | | dependencies: { |
| | | show: () => false, |
| | | triggerFields: ['imgUrl'] |
| | | }, |
| | | label: 'å¤ä»¶é¢è§', |
| | | }, |
| | | { |
| | | component: 'Input', |
| | | fieldName: 'imgUrl', |
| | | label: 'å¤ä»¶é¢è§' |
| | | }, |
| | | { |
| | | component: 'Input', |
| | | fieldName: 'modelNo', |
| | | label: 'åå·' |
| | | }, |
| | | { |
| | | component: 'Input', |
| | | fieldName: 'madeIn', |
| | | label: 'ç产产å' |
| | | }, |
| | | { |
| | | component: 'Input', |
| | | fieldName: 'supplier', |
| | | label: 'ä¾åºå' |
| | | }, |
| | | { |
| | | component: 'InputNumber', |
| | | fieldName: 'referPrice', |
| | | label: 'åèä»·æ ¼', |
| | | componentProps: { |
| | | min: 0, |
| | | precision: 2, |
| | | addonAfter: 'ï¿¥', |
| | | placeholder: '请è¾å
¥' |
| | | } |
| | | }, |
| | | { |
| | | component: 'InputNumber', |
| | | fieldName: 'upperStock', |
| | | label: 'åºåä¸é', |
| | | componentProps: { |
| | | min: 0 |
| | | } |
| | | }, |
| | | { |
| | | component: 'InputNumber', |
| | | fieldName: 'lowerStock', |
| | | label: 'åºåä¸é', |
| | | componentProps: { |
| | | min: 0 |
| | | } |
| | | }, |
| | | { |
| | | component: 'InputNumber', |
| | | fieldName: 'actualStock', |
| | | formItemClass: 'col-span-1', |
| | | label: 'å®é
åºå', |
| | | componentProps: { |
| | | min: 0 |
| | | } |
| | | }, |
| | | { |
| | | component: 'Select', |
| | | componentProps: { |
| | | getPopupContainer, |
| | | options: getDictOptions(DictEnum.EIMS_SPARE_UNIT) |
| | | }, |
| | | fieldName: 'unit', |
| | | formItemClass: 'col-span-1 w-[80px]', |
| | | labelWidth: 0, |
| | | label: '' |
| | | }, |
| | | { |
| | | component: 'InputNumber', |
| | | fieldName: 'stockAmount', |
| | | label: 'åºåéé¢', |
| | | componentProps: { |
| | | min: 0, |
| | | precision: 2, |
| | | addonAfter: 'ï¿¥', |
| | | placeholder: '请è¾å
¥' |
| | | } |
| | | }, |
| | | { |
| | | component: 'InputNumber', |
| | | fieldName: 'replaceCycle', |
| | | formItemClass: 'col-span-1', |
| | | label: 'æ´æ¢å¨æ', |
| | | componentProps: { |
| | | min: 0 |
| | | } |
| | | }, |
| | | { |
| | | component: 'Select', |
| | | componentProps: { |
| | | getPopupContainer, |
| | | options: getDictOptions(DictEnum.MAINT_CYCLE_UNIT) |
| | | }, |
| | | fieldName: 'cycleUnit', |
| | | formItemClass: 'col-span-1 w-[80px]', |
| | | labelWidth: 0, |
| | | label: '' |
| | | }, |
| | | { |
| | | component: 'Textarea', |
| | | formItemClass: 'items-baseline', |
| | | fieldName: 'remark', |
| | | label: '夿³¨' |
| | | } |
| | | ]; |
¶Ô±ÈÐÂÎļþ |
| | |
| | | <script setup lang="ts"> |
| | | import type { Recordable } from '@vben/types'; |
| | | |
| | | import { onMounted, ref } from 'vue'; |
| | | |
| | | import { Page, useVbenDrawer, type VbenFormProps } from '@vben/common-ui'; |
| | | import { $t } from '@vben/locales'; |
| | | import { getVxePopupContainer } from '@vben/utils'; |
| | | |
| | | import { Image, Modal, Popconfirm, Space } from 'ant-design-vue'; |
| | | |
| | | import { useVbenVxeGrid, vxeCheckboxChecked, type VxeGridProps, vxeSortEvent } from '#/adapter/vxe-table'; |
| | | import { delSpare, listSpare, spareExport } from '#/api/eims/spare'; |
| | | import { configInfoByKey } from '#/api/system/config'; |
| | | import { commonDownloadExcel } from '#/utils/file/download'; |
| | | |
| | | import { columns, querySchema } from './data'; |
| | | import spareDrawer from './spare-drawer.vue'; |
| | | import SpareTypeTree from './spare-type-tree.vue'; |
| | | |
| | | // 左边é¨é¨ç¨ |
| | | const selectTypeId = ref<any[]>([]); |
| | | |
| | | defineExpose({ |
| | | tableSelect |
| | | }); |
| | | |
| | | const formOptions: VbenFormProps = { |
| | | commonConfig: { |
| | | labelWidth: 80, |
| | | componentProps: { |
| | | allowClear: true |
| | | } |
| | | }, |
| | | collapsed: true, |
| | | schema: querySchema(), |
| | | wrapperClass: 'grid-cols-1 md:grid-cols-2 lg:grid-cols-3 xl:grid-cols-4', |
| | | handleReset: async () => { |
| | | selectTypeId.value = []; |
| | | // eslint-disable-next-line no-use-before-define |
| | | const { formApi, reload } = tableApi; |
| | | await formApi.resetForm(); |
| | | const formValues = formApi.form.values; |
| | | formApi.setLatestSubmissionValues(formValues); |
| | | await reload(formValues); |
| | | } |
| | | }; |
| | | |
| | | const gridOptions: VxeGridProps = { |
| | | checkboxConfig: { |
| | | // é«äº® |
| | | highlight: true, |
| | | // 翻页æ¶ä¿çéä¸ç¶æ |
| | | reserve: true |
| | | // ç¹å»è¡éä¸ |
| | | // trigger: 'row' |
| | | }, |
| | | columns, |
| | | height: 'auto', |
| | | keepSource: true, |
| | | pagerConfig: { |
| | | enabled: false, |
| | | }, |
| | | proxyConfig: { |
| | | enabled: true, |
| | | ajax: { |
| | | query: async ({ page }, formValues = {}) => { |
| | | // é¨é¨æ éæ©å¤ç |
| | | if (selectTypeId.value.length === 1 && selectTypeId.value[0] !== 0) { |
| | | formValues.type = selectTypeId.value[0]; |
| | | } else { |
| | | Reflect.deleteProperty(formValues, 'type'); |
| | | } |
| | | return await listSpare({ |
| | | pageNum: page.currentPage, |
| | | pageSize: page.pageSize, |
| | | ...formValues |
| | | }); |
| | | } |
| | | } |
| | | }, |
| | | rowConfig: { |
| | | isHover: true, |
| | | keyField: 'id' |
| | | }, |
| | | columnConfig: { |
| | | resizable: true, |
| | | }, |
| | | sortConfig: { |
| | | // è¿ç¨æåº |
| | | remote: true, |
| | | // æ¯æå¤å段æåº é»è®¤å
³é |
| | | multiple: true |
| | | }, |
| | | id: 'eims-spare-index' |
| | | }; |
| | | |
| | | const [BasicTable, tableApi] = useVbenVxeGrid({ |
| | | formOptions, |
| | | gridOptions, |
| | | gridEvents: { |
| | | sortChange: (sortParams) => vxeSortEvent(tableApi, sortParams) |
| | | } |
| | | }); |
| | | |
| | | const [SpareDrawer, spareDrawerApi] = useVbenDrawer({ |
| | | connectedComponent: spareDrawer |
| | | }); |
| | | |
| | | function handleAdd() { |
| | | spareDrawerApi.setData({}); |
| | | spareDrawerApi.open(); |
| | | } |
| | | |
| | | async function handleEdit(record: Recordable<any>) { |
| | | spareDrawerApi.setData({ id: record.id }); |
| | | spareDrawerApi.open(); |
| | | } |
| | | |
| | | async function handleDelete(row: Recordable<any>) { |
| | | await delSpare(row.id); |
| | | await tableApi.query(); |
| | | } |
| | | |
| | | function handleMultiDelete() { |
| | | const rows = tableApi.grid.getCheckboxRecords(); |
| | | const ids = rows.map((row: any) => row.id); |
| | | Modal.confirm({ |
| | | title: 'æç¤º', |
| | | okType: 'danger', |
| | | content: `确认å é¤éä¸ç${ids.length}æ¡è®°å½åï¼`, |
| | | onOk: async () => { |
| | | await delSpare(ids); |
| | | await tableApi.query(); |
| | | } |
| | | }); |
| | | } |
| | | |
| | | function handleDownloadExcel() { |
| | | commonDownloadExcel(spareExport, 'å¤ä»¶å°è´¦', tableApi.formApi.form.values, { |
| | | fieldMappingTime: formOptions.fieldMappingTime |
| | | }); |
| | | } |
| | | |
| | | const preview = ref(false); |
| | | onMounted(async () => { |
| | | const resp = await configInfoByKey('sys.oss.previewListResource'); |
| | | preview.value = Boolean(resp); |
| | | }); |
| | | |
| | | function isImageFile(ext: string) { |
| | | const supportList = ['jpg', 'jpeg', 'png', 'gif', 'webp']; |
| | | return supportList.some((item) => ext.toLocaleLowerCase().includes(item)); |
| | | } |
| | | |
| | | // é䏿°æ® |
| | | function tableSelect() { |
| | | return tableApi.grid.getCheckboxRecords(); |
| | | } |
| | | </script> |
| | | |
| | | <template> |
| | | <Page :auto-content-height="true"> |
| | | <div class="flex h-full gap-[8px]"> |
| | | <SpareTypeTree v-model:select-type-id="selectTypeId" class="w-[260px]" @reload="() => tableApi.reload()" @select="() => tableApi.reload()" /> |
| | | <BasicTable class="flex-1 overflow-hidden" table-title="å¤ä»¶å°è´¦"> |
| | | <template #toolbar-tools> |
| | | <Space> |
| | | <a-button v-access:code="['eims:spare:export']" @click="handleDownloadExcel"> |
| | | {{ $t('pages.common.export') }} |
| | | </a-button> |
| | | <a-button |
| | | :disabled="!vxeCheckboxChecked(tableApi)" |
| | | danger |
| | | type="primary" |
| | | v-access:code="['eims:spare:remove']" |
| | | @click="handleMultiDelete" |
| | | > |
| | | {{ $t('pages.common.delete') }} |
| | | </a-button> |
| | | <a-button type="primary" v-access:code="['eims:spare:add']" @click="handleAdd"> |
| | | {{ $t('pages.common.add') }} |
| | | </a-button> |
| | | </Space> |
| | | </template> |
| | | |
| | | <template #imgUrl="{ row }"> |
| | | <Image v-if="preview && isImageFile(row.imgUrl)" :src="row.imgUrl" height="38px" /> |
| | | <span v-else>{{ row.imgUrl }}</span> |
| | | </template> |
| | | |
| | | <template #action="{ row }"> |
| | | <Space> |
| | | <ghost-button v-access:code="['eims:spare:edit']" @click.stop="handleEdit(row)"> |
| | | {{ $t('pages.common.edit') }} |
| | | </ghost-button> |
| | | <Popconfirm :get-popup-container="getVxePopupContainer" placement="left" title="确认å é¤ï¼" @confirm="handleDelete(row)"> |
| | | <ghost-button danger v-access:code="['eims:spare:remove']" @click.stop=""> |
| | | {{ $t('pages.common.delete') }} |
| | | </ghost-button> |
| | | </Popconfirm> |
| | | </Space> |
| | | </template> |
| | | </BasicTable> |
| | | </div> |
| | | <SpareDrawer @reload="tableApi.query()" /> |
| | | </Page> |
| | | </template> |
| | | |
| | | <style> |
| | | /* ç»ä¸ææåçè¾¹æ¡åè¡é« */ |
| | | .vxe-table--body .vxe-body--row .vxe-body--column { |
| | | height: 56px !important; |
| | | box-sizing: border-box !important; |
| | | padding-top: 1px !important; /* ä¿æåæ®éåä¸è´çpadding */ |
| | | } |
| | | </style> |
¶Ô±ÈÐÂÎļþ |
| | |
| | | <script setup lang="ts"> |
| | | import { computed, ref } from 'vue'; |
| | | |
| | | import { useVbenDrawer } from '@vben/common-ui'; |
| | | import { $t } from '@vben/locales'; |
| | | import { addFullName, cloneDeep, getPopupContainer, listToTree } from '@vben/utils'; |
| | | |
| | | import { useVbenForm } from '#/adapter/form'; |
| | | import { addSpare, getSpare, updateSpare } from '#/api/eims/spare'; |
| | | import { listSpareType } from '#/api/eims/spare-type'; |
| | | import { ImageUpload } from '#/components/upload'; |
| | | |
| | | import { drawerSchema } from './data'; |
| | | |
| | | const emit = defineEmits<{ reload: [] }>(); |
| | | |
| | | const isUpdate = ref(false); |
| | | const title = computed(() => { |
| | | return isUpdate.value ? $t('pages.common.edit') : $t('pages.common.add'); |
| | | }); |
| | | |
| | | |
| | | const [BasicForm, formApi] = useVbenForm({ |
| | | commonConfig: { |
| | | formItemClass: 'col-span-2', |
| | | componentProps: { |
| | | class: 'w-full' |
| | | }, |
| | | labelWidth: 120 |
| | | }, |
| | | schema: drawerSchema(), |
| | | showDefaultActions: false, |
| | | wrapperClass: 'grid-cols-2' |
| | | }); |
| | | |
| | | const [BasicDrawer, drawerApi] = useVbenDrawer({ |
| | | onCancel: handleCancel, |
| | | onConfirm: handleConfirm, |
| | | async onOpenChange(isOpen) { |
| | | if (!isOpen) { |
| | | return null; |
| | | } |
| | | drawerApi.drawerLoading(true); |
| | | const { id } = drawerApi.getData() as { id?: number | string }; |
| | | await setupSpareTypeSelect(); |
| | | onImageChange(); |
| | | isUpdate.value = !!id; |
| | | |
| | | // æ´æ° && èµå¼ |
| | | if (isUpdate.value && id) { |
| | | const record = await getSpare(id); |
| | | await formApi.setValues(record); |
| | | } |
| | | drawerApi.drawerLoading(false); |
| | | } |
| | | }); |
| | | |
| | | async function handleConfirm() { |
| | | try { |
| | | drawerApi.drawerLoading(true); |
| | | const { valid } = await formApi.validate(); |
| | | if (!valid) { |
| | | return; |
| | | } |
| | | const data = cloneDeep(await formApi.getValues()); |
| | | await (isUpdate.value ? updateSpare(data) : addSpare(data)); |
| | | emit('reload'); |
| | | await handleCancel(); |
| | | } catch (error) { |
| | | console.error(error); |
| | | } finally { |
| | | drawerApi.drawerLoading(false); |
| | | } |
| | | } |
| | | |
| | | async function handleCancel() { |
| | | drawerApi.close(); |
| | | await formApi.resetForm(); |
| | | } |
| | | |
| | | async function setupSpareTypeSelect() { |
| | | // status-0 åªæ¥è¯¢æªåç¨ |
| | | const equArray = await listSpareType({ status: 0 }); |
| | | // support i18n |
| | | equArray.forEach((item) => { |
| | | item.typeName = $t(item.typeName); |
| | | }); |
| | | const equTree = listToTree(equArray, { id: 'id', pid: 'parentId' }); |
| | | const fullEquTree = [ |
| | | { |
| | | id: 0, |
| | | typeName: $t('menu.root'), |
| | | children: equTree |
| | | } |
| | | ]; |
| | | addFullName(fullEquTree, 'typeName', ' / '); |
| | | formApi.updateSchema([ |
| | | { |
| | | componentProps: { |
| | | fieldNames: { |
| | | label: 'typeName', |
| | | value: 'id' |
| | | }, |
| | | getPopupContainer, |
| | | // è®¾ç½®å¼¹çªæ»å¨é«åº¦ é»è®¤256 |
| | | listHeight: 300, |
| | | showSearch: true, |
| | | treeData: fullEquTree, |
| | | treeDefaultExpandAll: false, |
| | | // é»è®¤å±å¼çæ èç¹ |
| | | treeDefaultExpandedKeys: [0], |
| | | treeLine: { showLeafIcon: false }, |
| | | // çéçåæ®µ |
| | | treeNodeFilterProp: 'typeName', |
| | | treeNodeLabelProp: 'fullName' |
| | | }, |
| | | fieldName: 'type' |
| | | } |
| | | ]); |
| | | } |
| | | |
| | | const accept = ref(['jpg', 'jpeg', 'png', 'gif', 'webp']); |
| | | const maxNumber = ref(1); |
| | | |
| | | function onImageChange() { |
| | | formApi.updateSchema([ |
| | | { |
| | | componentProps: () => ({ |
| | | async onChange(value: any) { |
| | | await formApi.setValues({ 'img': value }); |
| | | } |
| | | }), |
| | | fieldName: 'imgUrl' |
| | | } |
| | | ]); |
| | | } |
| | | </script> |
| | | |
| | | <template> |
| | | <BasicDrawer :close-on-click-modal="false" :title="title" class="w-[600px]"> |
| | | <BasicForm> |
| | | <template #imgUrl="slotProps"> |
| | | <!--注æï¼ä¸ä¼ æååè¿åossid--> |
| | | <ImageUpload v-bind="slotProps" :accept="accept" :max-number="maxNumber" |
| | | result-field="ossId" /> |
| | | </template> |
| | | </BasicForm> |
| | | </BasicDrawer> |
| | | </template> |
¶Ô±ÈÐÂÎļþ |
| | |
| | | <script setup lang="ts"> |
| | | import type { SpareTypeTree } from '#/api/eims/spare-type/model.d.ts'; |
| | | |
| | | import { onMounted, type PropType, ref } from 'vue'; |
| | | |
| | | import { SyncOutlined } from '@ant-design/icons-vue'; |
| | | import { Empty, InputSearch, Skeleton, Tree } from 'ant-design-vue'; |
| | | |
| | | import { getSpareTypeTree } from '#/api/eims/spare-type'; |
| | | |
| | | defineOptions({ inheritAttrs: false }); |
| | | |
| | | const emit = defineEmits<{ |
| | | /** |
| | | * ç¹å»å·æ°æé®çäºä»¶ |
| | | */ |
| | | reload: []; |
| | | /** |
| | | * ç¹å»èç¹çäºä»¶ |
| | | */ |
| | | select: []; |
| | | }>(); |
| | | |
| | | const selectTypeId = defineModel('selectTypeId', { |
| | | required: true, |
| | | type: Array as PropType<string[]>, |
| | | }); |
| | | |
| | | const searchValue = defineModel('searchValue', { |
| | | type: String, |
| | | default: '', |
| | | }); |
| | | |
| | | /** é¨é¨æ°æ®æº */ |
| | | type TypeTreeArray = SpareTypeTree[]; |
| | | const spareTypeTreeArray = ref<TypeTreeArray>([]); |
| | | /** 骨æ¶å±å è½½ */ |
| | | const showTreeSkeleton = ref<boolean>(true); |
| | | |
| | | async function loadTree() { |
| | | showTreeSkeleton.value = true; |
| | | searchValue.value = ''; |
| | | selectTypeId.value = []; |
| | | |
| | | const ret = await getSpareTypeTree(); |
| | | |
| | | spareTypeTreeArray.value = ret; |
| | | showTreeSkeleton.value = false; |
| | | } |
| | | |
| | | async function handleReload() { |
| | | await loadTree(); |
| | | emit('reload'); |
| | | } |
| | | |
| | | onMounted(loadTree); |
| | | </script> |
| | | |
| | | <template> |
| | | <div :class="$attrs.class"> |
| | | <Skeleton |
| | | :loading="showTreeSkeleton" |
| | | :paragraph="{ rows: 8 }" |
| | | active |
| | | class="p-[8px]" |
| | | > |
| | | <div |
| | | class="bg-background flex h-full flex-col overflow-y-auto rounded-lg" |
| | | > |
| | | <!-- åºå®å¨é¡¶é¨ å¿
é¡»å ä¸bg-backgroundèæ¯è² å¦åä¼äº§ç'ç©¿é'ææ --> |
| | | <div class="bg-background z-100 sticky left-0 top-0 p-[8px]"> |
| | | <InputSearch |
| | | v-model:value="searchValue" |
| | | :placeholder="$t('pages.common.search')" |
| | | size="small" |
| | | > |
| | | <template #enterButton> |
| | | <a-button @click="handleReload"> |
| | | <SyncOutlined class="text-primary" /> |
| | | </a-button> |
| | | </template> |
| | | </InputSearch> |
| | | </div> |
| | | <div class="h-full overflow-x-hidden px-[8px]"> |
| | | <Tree |
| | | v-bind="$attrs" |
| | | v-if="spareTypeTreeArray.length > 0" |
| | | v-model:selected-keys="selectTypeId" |
| | | :class="$attrs.class" |
| | | :field-names="{ title: 'label', key: 'id' }" |
| | | :show-line="{ showLeafIcon: false }" |
| | | :tree-data="spareTypeTreeArray" |
| | | :virtual="false" |
| | | default-expand-all |
| | | @select="$emit('select')" |
| | | > |
| | | <template #title="{ label }"> |
| | | <span v-if="label.indexOf(searchValue) > -1"> |
| | | {{ label.substring(0, label.indexOf(searchValue)) }} |
| | | <span style="color: #f50">{{ searchValue }}</span> |
| | | {{ |
| | | label.substring( |
| | | label.indexOf(searchValue) + searchValue.length, |
| | | ) |
| | | }} |
| | | </span> |
| | | <span v-else>{{ label }}</span> |
| | | </template> |
| | | </Tree> |
| | | <!-- ä»
æ¬äººæ°æ®æé å¯ä»¥èèç´æ¥ä¸æ¾ç¤º --> |
| | | <div v-else class="mt-5"> |
| | | <Empty |
| | | :image="Empty.PRESENTED_IMAGE_SIMPLE" |
| | | description="æ 设å¤ç±»åæ°æ®" |
| | | /> |
| | | </div> |
| | | </div> |
| | | </div> |
| | | </Skeleton> |
| | | </div> |
| | | </template> |
| | |
| | | export enum DictEnum { |
| | | EIMS_EQU_PART = 'eims_equ_part', // 设å¤é¨ä½ |
| | | EIMS_SPARE_UNIT = 'eims_spare_unit', // å¤ä»¶è®¡éåä½ |
| | | EIMS_EQU_UNIT = 'eims_equ_unit', // 设å¤çç¹ç¶æ |
| | | EIMS_FAULT_REASON = 'eims_fault_reason', // æ
éåå |
| | | EIMS_FIXTURE_STATUS = 'eims_fixture_status', // å·¥å
·ï¼æ²»å
·ï¼ç¶æ |
| | | EIMS_INSPECT_RESULT = 'eims_inspect_result', // ç¹æ£ç»æ |
| | | EIMS_INSPECT_STATUS = 'eims_inspect_status', // ç¹æ£ç¶æ |
| | | EIMS_INSPECT_TYPE = 'eims_inspect_type', // ç¹æ£ç±»å |
| | | EIMS_INVENTORY_DETAIL_STATU = 'inventory_detail_statu', // 设å¤çç¹ç¶æ |
| | | EIMS_INVENTORY_STATU = 'inventory_statu', // 设å¤çç¹ç¶æ |
| | | EIMS_MAINT_TYPE = 'eims_maint_type', // ä¿å
»ç±»å |
| | | EIMS_INSPECT_RESULT = 'eims_inspect_result', // ç¹æ£ç»æ |
| | | EIMS_ORDITM_STATUS = 'eims_orditm_status', // ä¿å
»å·¥åæç»å®æç¶æ |
| | | EQU_IMPORT_STATU = 'equ_import_status', // 设å¤å¯¼å
¥ç¶æ |
| | | FIXTURE_BORROW_RECORD_STATUS = 'fixture_borrow_record_status', // å·¥å
·ï¼æ²»å
·ï¼åç¨è®°å½ç¶æ |
| | |
| | | MAINT_CYCLE_UNIT = 'maint_cycle_unit', // ä¿å
»å¨æåä½ |
| | | MAINT_ORDER_ST_STATUS = 'maint_order_st_status', // ä¿å
»å·¥åæ±æ»ç¨½æ¥ç¶æ |
| | | MAINT_ORDER_STATUS = 'maint_order_status', // ä¿å
»å·¥åç¶æ |
| | | EIMS_INSPECT_STATUS = 'eims_inspect_status', // ç¹æ£ç¶æ |
| | | MAINT_TIME_RULE = 'maint_time_rule', // ä¿å
»è§å |
| | | REPAIR_FAULT_TYPE = 'repair_fault_type', // æ¥ä¿®ç¶æ |
| | | REPAIR_FAULT_TYPE = 'repair_fault_type', // æ
éç±»å« |
| | | REPAIR_RECORD_HANDLE = 'repair_record_handle', // ç»´ä¿®è®°å½æä½ |
| | | REPAIR_REQ_STATUS = 'repair_req_status', // æ¥ä¿®ç¶æ |
| | | SPARE_INOUT_TYPE = 'spare_inout_type', // å¤ä»¶åºå
¥åºç±»å 1-å
¥åºå 2-åºåºå |
| | | REPAIR_REQ_TYPE = 'repair_req_type', // æ¥ä¿®ç±»å |
| | | REPAIR_RES_STATUS = 'repair_res_status', // ç»´ä¿®ç¶æ |
| | | REPAIR_URGENCY_LEVEL = 'repair_urgency_level', // æ¥ä¿®ç´§æ¥ç¨åº¦ |
| | |
| | | String Y = "1"; // 已宿 |
| | | } |
| | | |
| | | /** |
| | | *ç¹æ£è®°å½ç¶æ |
| | | */ |
| | | String EIMS_INSPECT_STATUS = "eims_inspect_status"; |
| | | interface EIMS_INSPECT_STATUS_DETAIL { |
| | | String N = "0";// æªç¹æ£ |
| | | String Y = "1"; // å·²ç¹æ£ |
| | | } |
| | | |
| | | |
| | | } |
¶Ô±ÈÐÂÎļþ |
| | |
| | | package org.dromara.common.core.service; |
| | | |
| | | public interface SpareTypeService { |
| | | /** |
| | | * éè¿å¤ä»¶ç±»åIDæ¥è¯¢å¤ä»¶ç±»ååç§° |
| | | * |
| | | * @param spareTypeIds å¤ä»¶ç±»åID串éå·åé |
| | | * @return å¤ä»¶ç±»åå称串éå·åé |
| | | */ |
| | | String selectSpareTypeNameByIds(String spareTypeIds); |
| | | } |
| | |
| | | } |
| | | |
| | | /** |
| | | * å¼å¯äºçæ¬æ§å¶ï¼minioä¸ä¿çåæä»¶å |
| | | * @param data |
| | | * @param suffix |
| | | * @param fileName |
| | | * @return |
| | | */ |
| | | public UploadResult uploadSuffix(byte[] data, String suffix,String fileName) { |
| | | return upload(new ByteArrayInputStream(data), getDatePath(fileName), Long.valueOf(data.length), FileUtils.getMimeType(suffix)); |
| | | } |
| | | |
| | | /** |
| | | * ä¸ä¼ InputStream å° Amazon S3ï¼ä½¿ç¨æå®çåç¼æé 对象é®ã |
| | | * |
| | | * @param inputStream è¦ä¸ä¼ çè¾å
¥æµ |
| | |
| | | return path + suffix; |
| | | } |
| | | |
| | | public String getDatePath(String fileName) { |
| | | // çææ¥æè·¯å¾ |
| | | String datePath = DateUtils.datePath(); |
| | | String timestamp = DateUtils.dateTimeNow(); |
| | | String suffix = StringUtils.substring(fileName, fileName.lastIndexOf("."), fileName.length()); |
| | | String file = StringUtils.substring(fileName,0, fileName.lastIndexOf(".")); |
| | | return datePath + StringUtils.SLASH + file + "_" + timestamp + suffix; |
| | | } |
| | | |
| | | /** |
| | | * ç§»é¤è·¯å¾ä¸çåºç¡URLé¨åï¼å¾å°ç¸å¯¹è·¯å¾ |
| | | * |
| | |
| | | /** |
| | | * 设å¤ç±»ååç§°id转åç§° |
| | | */ |
| | | String EQU_YPE_ID_TO_NAME = "equ_type_id_to_name"; |
| | | String EQU_TYPE_ID_TO_NAME = "equ_type_id_to_name"; |
| | | /** |
| | | * 设å¤åç§°id转åç§° |
| | | */ |
| | |
| | | */ |
| | | String MAINT_ORDER_ID_TO_CODE = "maint_order_id_to_code"; |
| | | |
| | | |
| | | /** |
| | | * å¤ä»¶ç±»åid转name |
| | | */ |
| | | String SPARE_TYPE_ID_TO_NAME = "spare_type_id_to_name"; |
| | | |
| | | } |
| | |
| | | package org.dromara.common.translation.core.impl; |
| | | |
| | | import lombok.AllArgsConstructor; |
| | | import org.dromara.common.core.service.DeptService; |
| | | import org.dromara.common.core.service.EquTypeService; |
| | | import org.dromara.common.translation.annotation.TranslationType; |
| | | import org.dromara.common.translation.constant.TransConstant; |
| | |
| | | * @author zhuguifei |
| | | */ |
| | | @AllArgsConstructor |
| | | @TranslationType(type = TransConstant.EQU_YPE_ID_TO_NAME) |
| | | @TranslationType(type = TransConstant.EQU_TYPE_ID_TO_NAME) |
| | | public class EquTypeNameTranslationImpl implements TranslationInterface<String> { |
| | | |
| | | private final EquTypeService equTypeService; |
¶Ô±ÈÐÂÎļþ |
| | |
| | | package org.dromara.common.translation.core.impl; |
| | | |
| | | import lombok.AllArgsConstructor; |
| | | import org.dromara.common.core.service.EquTypeService; |
| | | import org.dromara.common.core.service.SpareTypeService; |
| | | import org.dromara.common.translation.annotation.TranslationType; |
| | | import org.dromara.common.translation.constant.TransConstant; |
| | | import org.dromara.common.translation.core.TranslationInterface; |
| | | |
| | | /** |
| | | * å¤ä»¶ç±»åç¿»è¯å®ç° |
| | | * |
| | | * @author zhuguifei |
| | | */ |
| | | @AllArgsConstructor |
| | | @TranslationType(type = TransConstant.SPARE_TYPE_ID_TO_NAME) |
| | | public class SpareTypeNameTranslationImpl implements TranslationInterface<String> { |
| | | |
| | | private final SpareTypeService spareTypeService; |
| | | |
| | | @Override |
| | | public String translation(Object key, String other) { |
| | | if (key instanceof String ids) { |
| | | return spareTypeService.selectSpareTypeNameByIds(ids); |
| | | } else if (key instanceof Long id) { |
| | | return spareTypeService.selectSpareTypeNameByIds(id.toString()); |
| | | } |
| | | return null; |
| | | } |
| | | } |
| | |
| | | org.dromara.common.translation.core.impl.RepairReqCodeTranslationImpl |
| | | org.dromara.common.translation.core.impl.RepairResCodeTranslationImpl |
| | | org.dromara.common.translation.core.impl.MaintOrderCodeTranslationImpl |
| | | org.dromara.common.translation.core.impl.SpareTypeNameTranslationImpl |
¶Ô±ÈÐÂÎļþ |
| | |
| | | package org.dromara.eims.controller; |
| | | |
| | | import java.util.List; |
| | | |
| | | import lombok.RequiredArgsConstructor; |
| | | import jakarta.servlet.http.HttpServletResponse; |
| | | import jakarta.validation.constraints.*; |
| | | import cn.dev33.satoken.annotation.SaCheckPermission; |
| | | import org.springframework.web.bind.annotation.*; |
| | | import org.springframework.validation.annotation.Validated; |
| | | import org.dromara.common.idempotent.annotation.RepeatSubmit; |
| | | import org.dromara.common.log.annotation.Log; |
| | | import org.dromara.common.web.core.BaseController; |
| | | import org.dromara.common.mybatis.core.page.PageQuery; |
| | | import org.dromara.common.core.domain.R; |
| | | import org.dromara.common.core.validate.AddGroup; |
| | | import org.dromara.common.core.validate.EditGroup; |
| | | import org.dromara.common.log.enums.BusinessType; |
| | | import org.dromara.common.excel.utils.ExcelUtil; |
| | | import org.dromara.eims.domain.vo.EimsFaultKnowVo; |
| | | import org.dromara.eims.domain.bo.EimsFaultKnowBo; |
| | | import org.dromara.eims.service.IEimsFaultKnowService; |
| | | import org.dromara.common.mybatis.core.page.TableDataInfo; |
| | | |
| | | /** |
| | | * æ
éç¥è¯ |
| | | * |
| | | * @author zhuguifei |
| | | * @date 2025-03-18 |
| | | */ |
| | | @Validated |
| | | @RequiredArgsConstructor |
| | | @RestController |
| | | @RequestMapping("/eims/faultKnow") |
| | | public class EimsFaultKnowController extends BaseController { |
| | | |
| | | private final IEimsFaultKnowService eimsFaultKnowService; |
| | | |
| | | /** |
| | | * æ¥è¯¢æ
éç¥è¯å表 |
| | | */ |
| | | @SaCheckPermission("eims:faultKnow:list") |
| | | @GetMapping("/list") |
| | | public TableDataInfo<EimsFaultKnowVo> list(EimsFaultKnowBo bo, PageQuery pageQuery) { |
| | | return eimsFaultKnowService.queryPageList(bo, pageQuery); |
| | | } |
| | | |
| | | /** |
| | | * å¯¼åºæ
éç¥è¯å表 |
| | | */ |
| | | @SaCheckPermission("eims:faultKnow:export") |
| | | @Log(title = "æ
éç¥è¯", businessType = BusinessType.EXPORT) |
| | | @PostMapping("/export") |
| | | public void export(EimsFaultKnowBo bo, HttpServletResponse response) { |
| | | List<EimsFaultKnowVo> list = eimsFaultKnowService.queryList(bo); |
| | | ExcelUtil.exportExcel(list, "æ
éç¥è¯", EimsFaultKnowVo.class, response); |
| | | } |
| | | |
| | | /** |
| | | * è·åæ
éç¥è¯è¯¦ç»ä¿¡æ¯ |
| | | * |
| | | * @param id ä¸»é® |
| | | */ |
| | | @SaCheckPermission("eims:faultKnow:query") |
| | | @GetMapping("/{id}") |
| | | public R<EimsFaultKnowVo> getInfo(@NotNull(message = "主é®ä¸è½ä¸ºç©º") |
| | | @PathVariable Long id) { |
| | | return R.ok(eimsFaultKnowService.queryById(id)); |
| | | } |
| | | |
| | | /** |
| | | * æ°å¢æ
éç¥è¯ |
| | | */ |
| | | @SaCheckPermission("eims:faultKnow:add") |
| | | @Log(title = "æ
éç¥è¯", businessType = BusinessType.INSERT) |
| | | @RepeatSubmit() |
| | | @PostMapping() |
| | | public R<Void> add(@Validated(AddGroup.class) @RequestBody EimsFaultKnowBo bo) { |
| | | return toAjax(eimsFaultKnowService.insertByBo(bo)); |
| | | } |
| | | |
| | | /** |
| | | * ä¿®æ¹æ
éç¥è¯ |
| | | */ |
| | | @SaCheckPermission("eims:faultKnow:edit") |
| | | @Log(title = "æ
éç¥è¯", businessType = BusinessType.UPDATE) |
| | | @RepeatSubmit() |
| | | @PutMapping() |
| | | public R<Void> edit(@Validated(EditGroup.class) @RequestBody EimsFaultKnowBo bo) { |
| | | return toAjax(eimsFaultKnowService.updateByBo(bo)); |
| | | } |
| | | |
| | | /** |
| | | * å 餿
éç¥è¯ |
| | | * |
| | | * @param ids 主é®ä¸² |
| | | */ |
| | | @SaCheckPermission("eims:faultKnow:remove") |
| | | @Log(title = "æ
éç¥è¯", businessType = BusinessType.DELETE) |
| | | @DeleteMapping("/{ids}") |
| | | public R<Void> remove(@NotEmpty(message = "主é®ä¸è½ä¸ºç©º") |
| | | @PathVariable Long[] ids) { |
| | | return toAjax(eimsFaultKnowService.deleteWithValidByIds(List.of(ids), true)); |
| | | } |
| | | } |
¶Ô±ÈÐÂÎļþ |
| | |
| | | package org.dromara.eims.controller; |
| | | |
| | | import java.util.List; |
| | | |
| | | import lombok.RequiredArgsConstructor; |
| | | import jakarta.servlet.http.HttpServletResponse; |
| | | import jakarta.validation.constraints.*; |
| | | import cn.dev33.satoken.annotation.SaCheckPermission; |
| | | import org.springframework.web.bind.annotation.*; |
| | | import org.springframework.validation.annotation.Validated; |
| | | import org.dromara.common.idempotent.annotation.RepeatSubmit; |
| | | import org.dromara.common.log.annotation.Log; |
| | | import org.dromara.common.web.core.BaseController; |
| | | import org.dromara.common.mybatis.core.page.PageQuery; |
| | | import org.dromara.common.core.domain.R; |
| | | import org.dromara.common.core.validate.AddGroup; |
| | | import org.dromara.common.core.validate.EditGroup; |
| | | import org.dromara.common.log.enums.BusinessType; |
| | | import org.dromara.common.excel.utils.ExcelUtil; |
| | | import org.dromara.eims.domain.vo.EimsSpareVo; |
| | | import org.dromara.eims.domain.bo.EimsSpareBo; |
| | | import org.dromara.eims.service.IEimsSpareService; |
| | | import org.dromara.common.mybatis.core.page.TableDataInfo; |
| | | |
| | | /** |
| | | * å¤ä»¶å°è´¦ |
| | | * |
| | | * @author zhuguifei |
| | | * @date 2025-03-20 |
| | | */ |
| | | @Validated |
| | | @RequiredArgsConstructor |
| | | @RestController |
| | | @RequestMapping("/eims/spare") |
| | | public class EimsSpareController extends BaseController { |
| | | |
| | | private final IEimsSpareService eimsSpareService; |
| | | |
| | | /** |
| | | * æ¥è¯¢å¤ä»¶å°è´¦å表 |
| | | */ |
| | | @SaCheckPermission("eims:spare:list") |
| | | @GetMapping("/list") |
| | | public TableDataInfo<EimsSpareVo> list(EimsSpareBo bo, PageQuery pageQuery) { |
| | | return eimsSpareService.queryPageList(bo, pageQuery); |
| | | } |
| | | |
| | | /** |
| | | * 导åºå¤ä»¶å°è´¦å表 |
| | | */ |
| | | @SaCheckPermission("eims:spare:export") |
| | | @Log(title = "å¤ä»¶å°è´¦", businessType = BusinessType.EXPORT) |
| | | @PostMapping("/export") |
| | | public void export(EimsSpareBo bo, HttpServletResponse response) { |
| | | List<EimsSpareVo> list = eimsSpareService.queryList(bo); |
| | | ExcelUtil.exportExcel(list, "å¤ä»¶å°è´¦", EimsSpareVo.class, response); |
| | | } |
| | | |
| | | /** |
| | | * è·åå¤ä»¶å°è´¦è¯¦ç»ä¿¡æ¯ |
| | | * |
| | | * @param id ä¸»é® |
| | | */ |
| | | @SaCheckPermission("eims:spare:query") |
| | | @GetMapping("/{id}") |
| | | public R<EimsSpareVo> getInfo(@NotNull(message = "主é®ä¸è½ä¸ºç©º") |
| | | @PathVariable Long id) { |
| | | return R.ok(eimsSpareService.queryById(id)); |
| | | } |
| | | |
| | | /** |
| | | * æ°å¢å¤ä»¶å°è´¦ |
| | | */ |
| | | @SaCheckPermission("eims:spare:add") |
| | | @Log(title = "å¤ä»¶å°è´¦", businessType = BusinessType.INSERT) |
| | | @RepeatSubmit() |
| | | @PostMapping() |
| | | public R<Void> add(@Validated(AddGroup.class) @RequestBody EimsSpareBo bo) { |
| | | return toAjax(eimsSpareService.insertByBo(bo)); |
| | | } |
| | | |
| | | /** |
| | | * ä¿®æ¹å¤ä»¶å°è´¦ |
| | | */ |
| | | @SaCheckPermission("eims:spare:edit") |
| | | @Log(title = "å¤ä»¶å°è´¦", businessType = BusinessType.UPDATE) |
| | | @RepeatSubmit() |
| | | @PutMapping() |
| | | public R<Void> edit(@Validated(EditGroup.class) @RequestBody EimsSpareBo bo) { |
| | | return toAjax(eimsSpareService.updateByBo(bo)); |
| | | } |
| | | |
| | | /** |
| | | * å é¤å¤ä»¶å°è´¦ |
| | | * |
| | | * @param ids 主é®ä¸² |
| | | */ |
| | | @SaCheckPermission("eims:spare:remove") |
| | | @Log(title = "å¤ä»¶å°è´¦", businessType = BusinessType.DELETE) |
| | | @DeleteMapping("/{ids}") |
| | | public R<Void> remove(@NotEmpty(message = "主é®ä¸è½ä¸ºç©º") |
| | | @PathVariable Long[] ids) { |
| | | return toAjax(eimsSpareService.deleteWithValidByIds(List.of(ids), true)); |
| | | } |
| | | } |
¶Ô±ÈÐÂÎļþ |
| | |
| | | package org.dromara.eims.controller; |
| | | |
| | | import java.util.List; |
| | | |
| | | import lombok.RequiredArgsConstructor; |
| | | import jakarta.servlet.http.HttpServletResponse; |
| | | import jakarta.validation.constraints.*; |
| | | import cn.dev33.satoken.annotation.SaCheckPermission; |
| | | import org.springframework.web.bind.annotation.*; |
| | | import org.springframework.validation.annotation.Validated; |
| | | import org.dromara.common.idempotent.annotation.RepeatSubmit; |
| | | import org.dromara.common.log.annotation.Log; |
| | | import org.dromara.common.web.core.BaseController; |
| | | import org.dromara.common.mybatis.core.page.PageQuery; |
| | | import org.dromara.common.core.domain.R; |
| | | import org.dromara.common.core.validate.AddGroup; |
| | | import org.dromara.common.core.validate.EditGroup; |
| | | import org.dromara.common.log.enums.BusinessType; |
| | | import org.dromara.common.excel.utils.ExcelUtil; |
| | | import org.dromara.eims.domain.vo.EimsSpareInoutVo; |
| | | import org.dromara.eims.domain.bo.EimsSpareInoutBo; |
| | | import org.dromara.eims.service.IEimsSpareInoutService; |
| | | import org.dromara.common.mybatis.core.page.TableDataInfo; |
| | | |
| | | /** |
| | | * å¤ä»¶åºå
¥åº |
| | | * |
| | | * @author zhuguifei |
| | | * @date 2025-03-26 |
| | | */ |
| | | @Validated |
| | | @RequiredArgsConstructor |
| | | @RestController |
| | | @RequestMapping("/eims/spareInout") |
| | | public class EimsSpareInoutController extends BaseController { |
| | | |
| | | private final IEimsSpareInoutService eimsSpareInoutService; |
| | | |
| | | /** |
| | | * æ¥è¯¢å¤ä»¶åºå
¥åºå表 |
| | | */ |
| | | @SaCheckPermission("eims:spareInout:list") |
| | | @GetMapping("/list") |
| | | public TableDataInfo<EimsSpareInoutVo> list(EimsSpareInoutBo bo, PageQuery pageQuery) { |
| | | return eimsSpareInoutService.queryPageList(bo, pageQuery); |
| | | } |
| | | |
| | | /** |
| | | * 导åºå¤ä»¶åºå
¥åºå表 |
| | | */ |
| | | @SaCheckPermission("eims:spareInout:export") |
| | | @Log(title = "å¤ä»¶åºå
¥åº", businessType = BusinessType.EXPORT) |
| | | @PostMapping("/export") |
| | | public void export(EimsSpareInoutBo bo, HttpServletResponse response) { |
| | | List<EimsSpareInoutVo> list = eimsSpareInoutService.queryList(bo); |
| | | ExcelUtil.exportExcel(list, "å¤ä»¶åºå
¥åº", EimsSpareInoutVo.class, response); |
| | | } |
| | | |
| | | /** |
| | | * è·åå¤ä»¶åºå
¥åºè¯¦ç»ä¿¡æ¯ |
| | | * |
| | | * @param id ä¸»é® |
| | | */ |
| | | @SaCheckPermission("eims:spareInout:query") |
| | | @GetMapping("/{id}") |
| | | public R<EimsSpareInoutVo> getInfo(@NotNull(message = "主é®ä¸è½ä¸ºç©º") |
| | | @PathVariable Long id) { |
| | | return R.ok(eimsSpareInoutService.queryById(id)); |
| | | } |
| | | |
| | | /** |
| | | * æ°å¢å¤ä»¶åºå
¥åº |
| | | */ |
| | | @SaCheckPermission("eims:spareInout:add") |
| | | @Log(title = "å¤ä»¶åºå
¥åº", businessType = BusinessType.INSERT) |
| | | @RepeatSubmit() |
| | | @PostMapping() |
| | | public R<Void> add(@Validated(AddGroup.class) @RequestBody EimsSpareInoutBo bo) { |
| | | return toAjax(eimsSpareInoutService.insertByBo(bo)); |
| | | } |
| | | |
| | | /** |
| | | * ä¿®æ¹å¤ä»¶åºå
¥åº |
| | | */ |
| | | @SaCheckPermission("eims:spareInout:edit") |
| | | @Log(title = "å¤ä»¶åºå
¥åº", businessType = BusinessType.UPDATE) |
| | | @RepeatSubmit() |
| | | @PutMapping() |
| | | public R<Void> edit(@Validated(EditGroup.class) @RequestBody EimsSpareInoutBo bo) { |
| | | return toAjax(eimsSpareInoutService.updateByBo(bo)); |
| | | } |
| | | |
| | | /** |
| | | * å é¤å¤ä»¶åºå
¥åº |
| | | * |
| | | * @param ids 主é®ä¸² |
| | | */ |
| | | @SaCheckPermission("eims:spareInout:remove") |
| | | @Log(title = "å¤ä»¶åºå
¥åº", businessType = BusinessType.DELETE) |
| | | @DeleteMapping("/{ids}") |
| | | public R<Void> remove(@NotEmpty(message = "主é®ä¸è½ä¸ºç©º") |
| | | @PathVariable Long[] ids) { |
| | | return toAjax(eimsSpareInoutService.deleteWithValidByIds(List.of(ids), true)); |
| | | } |
| | | } |
¶Ô±ÈÐÂÎļþ |
| | |
| | | package org.dromara.eims.controller; |
| | | |
| | | import java.util.List; |
| | | |
| | | import cn.hutool.core.lang.tree.Tree; |
| | | import lombok.RequiredArgsConstructor; |
| | | import jakarta.servlet.http.HttpServletResponse; |
| | | import jakarta.validation.constraints.*; |
| | | import cn.dev33.satoken.annotation.SaCheckPermission; |
| | | import org.dromara.eims.domain.bo.EimsEquTypeBo; |
| | | import org.springframework.web.bind.annotation.*; |
| | | import org.springframework.validation.annotation.Validated; |
| | | import org.dromara.common.idempotent.annotation.RepeatSubmit; |
| | | import org.dromara.common.log.annotation.Log; |
| | | import org.dromara.common.web.core.BaseController; |
| | | import org.dromara.common.mybatis.core.page.PageQuery; |
| | | import org.dromara.common.core.domain.R; |
| | | import org.dromara.common.core.validate.AddGroup; |
| | | import org.dromara.common.core.validate.EditGroup; |
| | | import org.dromara.common.log.enums.BusinessType; |
| | | import org.dromara.common.excel.utils.ExcelUtil; |
| | | import org.dromara.eims.domain.vo.EimsSpareTypeVo; |
| | | import org.dromara.eims.domain.bo.EimsSpareTypeBo; |
| | | import org.dromara.eims.service.IEimsSpareTypeService; |
| | | |
| | | /** |
| | | * å¤ä»¶ç±»å |
| | | * |
| | | * @author zhuguifei |
| | | * @date 2025-03-20 |
| | | */ |
| | | @Validated |
| | | @RequiredArgsConstructor |
| | | @RestController |
| | | @RequestMapping("/eims/spareType") |
| | | public class EimsSpareTypeController extends BaseController { |
| | | |
| | | private final IEimsSpareTypeService eimsSpareTypeService; |
| | | |
| | | /** |
| | | * æ¥è¯¢å¤ä»¶ç±»åå表 |
| | | */ |
| | | @SaCheckPermission("eims:spareType:list") |
| | | @GetMapping("/list") |
| | | public R<List<EimsSpareTypeVo>> list(EimsSpareTypeBo bo) { |
| | | List<EimsSpareTypeVo> list = eimsSpareTypeService.queryList(bo); |
| | | return R.ok(list); |
| | | } |
| | | |
| | | /** |
| | | * è·å设å¤ç±»åæ å表 |
| | | */ |
| | | @SaCheckPermission("eims:spareType:list") |
| | | @GetMapping("/tree") |
| | | public R<List<Tree<Long>>> spareTypeTree(EimsSpareTypeBo bo) { |
| | | return R.ok(eimsSpareTypeService.selectSpareTypeTreeList(bo)); |
| | | } |
| | | |
| | | /** |
| | | * 导åºå¤ä»¶ç±»åå表 |
| | | */ |
| | | @SaCheckPermission("eims:spareType:export") |
| | | @Log(title = "å¤ä»¶ç±»å", businessType = BusinessType.EXPORT) |
| | | @PostMapping("/export") |
| | | public void export(EimsSpareTypeBo bo, HttpServletResponse response) { |
| | | List<EimsSpareTypeVo> list = eimsSpareTypeService.queryList(bo); |
| | | ExcelUtil.exportExcel(list, "å¤ä»¶ç±»å", EimsSpareTypeVo.class, response); |
| | | } |
| | | |
| | | /** |
| | | * è·åå¤ä»¶ç±»å详ç»ä¿¡æ¯ |
| | | * |
| | | * @param id ä¸»é® |
| | | */ |
| | | @SaCheckPermission("eims:spareType:query") |
| | | @GetMapping("/{id}") |
| | | public R<EimsSpareTypeVo> getInfo(@NotNull(message = "主é®ä¸è½ä¸ºç©º") |
| | | @PathVariable Long id) { |
| | | return R.ok(eimsSpareTypeService.queryById(id)); |
| | | } |
| | | |
| | | /** |
| | | * æ°å¢å¤ä»¶ç±»å |
| | | */ |
| | | @SaCheckPermission("eims:spareType:add") |
| | | @Log(title = "å¤ä»¶ç±»å", businessType = BusinessType.INSERT) |
| | | @RepeatSubmit() |
| | | @PostMapping() |
| | | public R<Void> add(@Validated(AddGroup.class) @RequestBody EimsSpareTypeBo bo) { |
| | | return toAjax(eimsSpareTypeService.insertByBo(bo)); |
| | | } |
| | | |
| | | /** |
| | | * ä¿®æ¹å¤ä»¶ç±»å |
| | | */ |
| | | @SaCheckPermission("eims:spareType:edit") |
| | | @Log(title = "å¤ä»¶ç±»å", businessType = BusinessType.UPDATE) |
| | | @RepeatSubmit() |
| | | @PutMapping() |
| | | public R<Void> edit(@Validated(EditGroup.class) @RequestBody EimsSpareTypeBo bo) { |
| | | return toAjax(eimsSpareTypeService.updateByBo(bo)); |
| | | } |
| | | |
| | | /** |
| | | * å é¤å¤ä»¶ç±»å |
| | | * |
| | | * @param ids 主é®ä¸² |
| | | */ |
| | | @SaCheckPermission("eims:spareType:remove") |
| | | @Log(title = "å¤ä»¶ç±»å", businessType = BusinessType.DELETE) |
| | | @DeleteMapping("/{ids}") |
| | | public R<Void> remove(@NotEmpty(message = "主é®ä¸è½ä¸ºç©º") |
| | | @PathVariable Long[] ids) { |
| | | |
| | | if (ids == null || ids.length == 0) { |
| | | return R.warn("è¯·éæ©éè¦å é¤çæ°æ®"); |
| | | } |
| | | for (int i = 0; i < ids.length; i++) { |
| | | if (eimsSpareTypeService.hasChildBySpareTypeId(ids[i])) { |
| | | return R.warn("åå¨åèå,ä¸å
许å é¤"); |
| | | } |
| | | } |
| | | |
| | | return toAjax(eimsSpareTypeService.deleteWithValidByIds(List.of(ids), true)); |
| | | } |
| | | } |
¶Ô±ÈÐÂÎļþ |
| | |
| | | package org.dromara.eims.domain; |
| | | |
| | | import org.dromara.common.mybatis.core.domain.BaseEntity; |
| | | import com.baomidou.mybatisplus.annotation.*; |
| | | import lombok.Data; |
| | | import lombok.EqualsAndHashCode; |
| | | |
| | | import java.io.Serial; |
| | | |
| | | /** |
| | | * æ
éç¥è¯å¯¹è±¡ eims_fault_know |
| | | * |
| | | * @author zhuguifei |
| | | * @date 2025-03-18 |
| | | */ |
| | | @Data |
| | | @EqualsAndHashCode(callSuper = true) |
| | | @TableName("eims_fault_know") |
| | | public class EimsFaultKnow extends BaseEntity { |
| | | |
| | | @Serial |
| | | private static final long serialVersionUID = 1L; |
| | | |
| | | /** |
| | | * |
| | | */ |
| | | @TableId(value = "id") |
| | | private Long id; |
| | | |
| | | /** |
| | | * 设å¤id |
| | | */ |
| | | private Long equId; |
| | | |
| | | /** |
| | | * 设å¤ç±»å |
| | | */ |
| | | private Long equType; |
| | | |
| | | /** |
| | | * 设å¤é¨ä½(åå
¸) |
| | | */ |
| | | private String equPart; |
| | | |
| | | /** |
| | | * ç¥è¯ç¼ç |
| | | */ |
| | | private String faultCode; |
| | | |
| | | /** |
| | | * æ
éç±»å«(åå
¸) |
| | | */ |
| | | private String faultType; |
| | | |
| | | /** |
| | | * æ
éåå (åå
¸) |
| | | */ |
| | | private String faultReason; |
| | | |
| | | /** |
| | | * æ¥ä¿®æè¿° |
| | | */ |
| | | private String reqDesc; |
| | | |
| | | /** |
| | | * å¤çæªæ½ |
| | | */ |
| | | private String resHandle; |
| | | |
| | | /** |
| | | * 夿³¨ |
| | | */ |
| | | private String remark; |
| | | |
| | | |
| | | } |
¶Ô±ÈÐÂÎļþ |
| | |
| | | package org.dromara.eims.domain; |
| | | |
| | | import org.dromara.common.mybatis.core.domain.BaseEntity; |
| | | import com.baomidou.mybatisplus.annotation.*; |
| | | import lombok.Data; |
| | | import lombok.EqualsAndHashCode; |
| | | import org.dromara.common.translation.annotation.Translation; |
| | | import org.dromara.common.translation.constant.TransConstant; |
| | | |
| | | import java.io.Serial; |
| | | import java.math.BigDecimal; |
| | | |
| | | /** |
| | | * å¤ä»¶å°è´¦å¯¹è±¡ eims_spare |
| | | * |
| | | * @author zhuguifei |
| | | * @date 2025-03-20 |
| | | */ |
| | | @Data |
| | | @EqualsAndHashCode(callSuper = true) |
| | | @TableName("eims_spare") |
| | | public class EimsSpare extends BaseEntity { |
| | | |
| | | @Serial |
| | | private static final long serialVersionUID = 1L; |
| | | |
| | | /** |
| | | * |
| | | */ |
| | | @TableId(value = "id") |
| | | private Long id; |
| | | |
| | | /** |
| | | * ç±»å |
| | | */ |
| | | private Long type; |
| | | |
| | | /** |
| | | * å¤ä»¶åç§° |
| | | */ |
| | | private String name; |
| | | |
| | | /** |
| | | * å¤ä»¶ç¼ç |
| | | */ |
| | | private String code; |
| | | |
| | | /** |
| | | * å¤ä»¶å¾ç |
| | | */ |
| | | private Long img; |
| | | |
| | | /** |
| | | * åå· |
| | | */ |
| | | private String modelNo; |
| | | |
| | | /** |
| | | * å¶é å |
| | | */ |
| | | private String madeIn; |
| | | |
| | | /** |
| | | * ä¾åºå |
| | | */ |
| | | private String supplier; |
| | | |
| | | /** |
| | | * 计éåä½ï¼åå
¸ï¼ |
| | | */ |
| | | private String unit; |
| | | |
| | | /** |
| | | * åèä»·æ ¼ |
| | | */ |
| | | private BigDecimal referPrice; |
| | | |
| | | /** |
| | | * åºåä¸é |
| | | */ |
| | | private Long upperStock; |
| | | |
| | | /** |
| | | * åºåä¸é |
| | | */ |
| | | private Long lowerStock; |
| | | |
| | | /** |
| | | * å®é
åºå |
| | | */ |
| | | private Long actualStock; |
| | | |
| | | /** |
| | | * åºåéé¢ |
| | | */ |
| | | private BigDecimal stockAmount; |
| | | |
| | | /** |
| | | * æ´æ¢å¨æ |
| | | */ |
| | | private Long replaceCycle; |
| | | |
| | | /** |
| | | * æ´æ¢å¨æåä½ï¼åå
¸ï¼ |
| | | */ |
| | | private String cycleUnit; |
| | | |
| | | /** |
| | | * 夿³¨ |
| | | */ |
| | | private String remark; |
| | | |
| | | |
| | | } |
¶Ô±ÈÐÂÎļþ |
| | |
| | | package org.dromara.eims.domain; |
| | | |
| | | import org.dromara.common.mybatis.core.domain.BaseEntity; |
| | | import com.baomidou.mybatisplus.annotation.*; |
| | | import lombok.Data; |
| | | import lombok.EqualsAndHashCode; |
| | | import java.util.Date; |
| | | import com.fasterxml.jackson.annotation.JsonFormat; |
| | | |
| | | import java.io.Serial; |
| | | |
| | | /** |
| | | * å¤ä»¶åºå
¥åºå¯¹è±¡ eims_spare_inout |
| | | * |
| | | * @author zhuguifei |
| | | * @date 2025-03-26 |
| | | */ |
| | | @Data |
| | | @EqualsAndHashCode(callSuper = true) |
| | | @TableName("eims_spare_inout") |
| | | public class EimsSpareInout extends BaseEntity { |
| | | |
| | | @Serial |
| | | private static final long serialVersionUID = 1L; |
| | | |
| | | /** |
| | | * |
| | | */ |
| | | @TableId(value = "id") |
| | | private Long id; |
| | | |
| | | /** |
| | | * åå· |
| | | */ |
| | | private String orderCode; |
| | | |
| | | /** |
| | | * åå·æ¥æ |
| | | */ |
| | | private Date orderTime; |
| | | |
| | | /** |
| | | * ç»å人 |
| | | */ |
| | | private Long chargeUser; |
| | | private Long chargeDept; |
| | | |
| | | |
| | | /** |
| | | * å·¥åç±»åï¼1-å
¥åºå 2-åºåºåï¼ åå
¸ |
| | | */ |
| | | private String type; |
| | | |
| | | /** |
| | | * åºåºå®¢æ·åç§°æå
¥åºä¾åºå |
| | | */ |
| | | private String partnerName; |
| | | |
| | | /** |
| | | * å
³èåå·ï¼å¦-ç»´ä¿®åï¼ |
| | | */ |
| | | private String associatedOrder; |
| | | |
| | | /** |
| | | * 夿³¨ |
| | | */ |
| | | private String remark; |
| | | |
| | | |
| | | } |
¶Ô±ÈÐÂÎļþ |
| | |
| | | package org.dromara.eims.domain; |
| | | |
| | | import org.dromara.common.mybatis.core.domain.BaseEntity; |
| | | import com.baomidou.mybatisplus.annotation.*; |
| | | import lombok.Data; |
| | | import lombok.EqualsAndHashCode; |
| | | |
| | | import java.io.Serial; |
| | | |
| | | /** |
| | | * å¤ä»¶ç±»å对象 eims_spare_type |
| | | * |
| | | * @author zhuguifei |
| | | * @date 2025-03-20 |
| | | */ |
| | | @Data |
| | | @EqualsAndHashCode(callSuper = true) |
| | | @TableName("eims_spare_type") |
| | | public class EimsSpareType extends BaseEntity { |
| | | |
| | | @Serial |
| | | private static final long serialVersionUID = 1L; |
| | | |
| | | /** |
| | | * |
| | | */ |
| | | @TableId(value = "id") |
| | | private Long id; |
| | | |
| | | /** |
| | | * ç±»ååç§° |
| | | */ |
| | | private String typeName; |
| | | |
| | | /** |
| | | * ç±»åç¼ç |
| | | */ |
| | | private String typeCode; |
| | | |
| | | /** |
| | | * ç¶id |
| | | */ |
| | | private Long parentId; |
| | | |
| | | /** |
| | | * æ¾ç¤ºé¡ºåº |
| | | */ |
| | | private Long orderNum; |
| | | |
| | | /** |
| | | * èåç±»åï¼Mç®å½ Cèå Fæé®ï¼ |
| | | */ |
| | | private String menuType; |
| | | |
| | | /** |
| | | * èå徿 |
| | | */ |
| | | private String icon; |
| | | |
| | | /** |
| | | * èåç¶æï¼0æ£å¸¸ 1åç¨ï¼ |
| | | */ |
| | | private String status; |
| | | |
| | | /** |
| | | * 夿³¨ |
| | | */ |
| | | private String remark; |
| | | |
| | | |
| | | } |
¶Ô±ÈÐÂÎļþ |
| | |
| | | package org.dromara.eims.domain.bo; |
| | | |
| | | import org.dromara.eims.domain.EimsFaultKnow; |
| | | import org.dromara.common.mybatis.core.domain.BaseEntity; |
| | | import org.dromara.common.core.validate.AddGroup; |
| | | import org.dromara.common.core.validate.EditGroup; |
| | | import io.github.linpeilie.annotations.AutoMapper; |
| | | import lombok.Data; |
| | | import lombok.EqualsAndHashCode; |
| | | import jakarta.validation.constraints.*; |
| | | |
| | | /** |
| | | * æ
éç¥è¯ä¸å¡å¯¹è±¡ eims_fault_know |
| | | * |
| | | * @author zhuguifei |
| | | * @date 2025-03-18 |
| | | */ |
| | | @Data |
| | | @EqualsAndHashCode(callSuper = true) |
| | | @AutoMapper(target = EimsFaultKnow.class, reverseConvertGenerate = false) |
| | | public class EimsFaultKnowBo extends BaseEntity { |
| | | |
| | | /** |
| | | * |
| | | */ |
| | | @NotNull(message = "ä¸è½ä¸ºç©º", groups = { EditGroup.class }) |
| | | private Long id; |
| | | |
| | | /** |
| | | * 设å¤id |
| | | */ |
| | | @NotNull(message = "设å¤idä¸è½ä¸ºç©º", groups = { AddGroup.class, EditGroup.class }) |
| | | private Long equId; |
| | | |
| | | /** |
| | | * 设å¤ç±»å |
| | | */ |
| | | private Long equType; |
| | | |
| | | /** |
| | | * 设å¤é¨ä½(åå
¸) |
| | | */ |
| | | private String equPart; |
| | | |
| | | /** |
| | | * ç¥è¯ç¼ç |
| | | */ |
| | | @NotBlank(message = "ç¥è¯ç¼ç ä¸è½ä¸ºç©º", groups = { AddGroup.class, EditGroup.class }) |
| | | private String faultCode; |
| | | |
| | | /** |
| | | * æ
éç±»å«(åå
¸) |
| | | */ |
| | | private String faultType; |
| | | |
| | | /** |
| | | * æ
éåå (åå
¸) |
| | | */ |
| | | private String faultReason; |
| | | |
| | | /** |
| | | * æ¥ä¿®æè¿° |
| | | */ |
| | | private String reqDesc; |
| | | |
| | | /** |
| | | * å¤çæªæ½ |
| | | */ |
| | | private String resHandle; |
| | | |
| | | /** |
| | | * 夿³¨ |
| | | */ |
| | | private String remark; |
| | | |
| | | |
| | | //å
³èè¡¨åæ®µ |
| | | /** |
| | | * 设å¤åç§° |
| | | */ |
| | | private String equName; |
| | | |
| | | /** |
| | | * 设å¤èµäº§ç¼å· |
| | | */ |
| | | private String assetNo; |
| | | |
| | | /** |
| | | * 设å¤ç±»åid |
| | | */ |
| | | private Long equTypeId; |
| | | |
| | | |
| | | } |
¶Ô±ÈÐÂÎļþ |
| | |
| | | package org.dromara.eims.domain.bo; |
| | | |
| | | import org.dromara.eims.domain.EimsSpare; |
| | | import org.dromara.common.mybatis.core.domain.BaseEntity; |
| | | import org.dromara.common.core.validate.AddGroup; |
| | | import org.dromara.common.core.validate.EditGroup; |
| | | import io.github.linpeilie.annotations.AutoMapper; |
| | | import lombok.Data; |
| | | import lombok.EqualsAndHashCode; |
| | | import jakarta.validation.constraints.*; |
| | | import org.dromara.common.translation.annotation.Translation; |
| | | import org.dromara.common.translation.constant.TransConstant; |
| | | |
| | | import java.math.BigDecimal; |
| | | |
| | | /** |
| | | * å¤ä»¶å°è´¦ä¸å¡å¯¹è±¡ eims_spare |
| | | * |
| | | * @author zhuguifei |
| | | * @date 2025-03-20 |
| | | */ |
| | | @Data |
| | | @EqualsAndHashCode(callSuper = true) |
| | | @AutoMapper(target = EimsSpare.class, reverseConvertGenerate = false) |
| | | public class EimsSpareBo extends BaseEntity { |
| | | |
| | | /** |
| | | * |
| | | */ |
| | | @NotNull(message = "ä¸è½ä¸ºç©º", groups = { EditGroup.class }) |
| | | private Long id; |
| | | |
| | | /** |
| | | * ç±»å |
| | | */ |
| | | @NotNull(message = "ç±»åä¸è½ä¸ºç©º", groups = { AddGroup.class, EditGroup.class }) |
| | | private Long type; |
| | | |
| | | /** |
| | | * å¤ä»¶åç§° |
| | | */ |
| | | @NotBlank(message = "å¤ä»¶åç§°ä¸è½ä¸ºç©º", groups = { AddGroup.class, EditGroup.class }) |
| | | private String name; |
| | | |
| | | /** |
| | | * å¤ä»¶ç¼ç |
| | | */ |
| | | @NotBlank(message = "å¤ä»¶ç¼ç ä¸è½ä¸ºç©º", groups = { AddGroup.class, EditGroup.class }) |
| | | private String code; |
| | | |
| | | /** |
| | | * å¤ä»¶å¾ç |
| | | */ |
| | | private Long img; |
| | | |
| | | /** |
| | | * åå· |
| | | */ |
| | | private String modelNo; |
| | | |
| | | /** |
| | | * å¶é å |
| | | */ |
| | | private String madeIn; |
| | | |
| | | /** |
| | | * ä¾åºå |
| | | */ |
| | | private String supplier; |
| | | |
| | | /** |
| | | * 计éåä½ï¼åå
¸ï¼ |
| | | */ |
| | | private String unit; |
| | | |
| | | /** |
| | | * åèä»·æ ¼ |
| | | */ |
| | | private BigDecimal referPrice; |
| | | |
| | | /** |
| | | * åºåä¸é |
| | | */ |
| | | private Long upperStock; |
| | | |
| | | /** |
| | | * åºåä¸é |
| | | */ |
| | | private Long lowerStock; |
| | | |
| | | /** |
| | | * å®é
åºå |
| | | */ |
| | | private Long actualStock; |
| | | |
| | | /** |
| | | * åºåéé¢ |
| | | */ |
| | | private BigDecimal stockAmount; |
| | | |
| | | /** |
| | | * æ´æ¢å¨æ |
| | | */ |
| | | private Long replaceCycle; |
| | | |
| | | /** |
| | | * æ´æ¢å¨æåä½ï¼åå
¸ï¼ |
| | | */ |
| | | private String cycleUnit; |
| | | |
| | | /** |
| | | * 夿³¨ |
| | | */ |
| | | private String remark; |
| | | |
| | | |
| | | } |
¶Ô±ÈÐÂÎļþ |
| | |
| | | package org.dromara.eims.domain.bo; |
| | | |
| | | import org.dromara.eims.domain.EimsSpareInout; |
| | | import org.dromara.common.mybatis.core.domain.BaseEntity; |
| | | import org.dromara.common.core.validate.AddGroup; |
| | | import org.dromara.common.core.validate.EditGroup; |
| | | import io.github.linpeilie.annotations.AutoMapper; |
| | | import lombok.Data; |
| | | import lombok.EqualsAndHashCode; |
| | | import jakarta.validation.constraints.*; |
| | | import java.util.Date; |
| | | import com.fasterxml.jackson.annotation.JsonFormat; |
| | | |
| | | /** |
| | | * å¤ä»¶åºå
¥åºä¸å¡å¯¹è±¡ eims_spare_inout |
| | | * |
| | | * @author zhuguifei |
| | | * @date 2025-03-26 |
| | | */ |
| | | @Data |
| | | @EqualsAndHashCode(callSuper = true) |
| | | @AutoMapper(target = EimsSpareInout.class, reverseConvertGenerate = false) |
| | | public class EimsSpareInoutBo extends BaseEntity { |
| | | |
| | | /** |
| | | * |
| | | */ |
| | | @NotNull(message = "ä¸è½ä¸ºç©º", groups = { EditGroup.class }) |
| | | private Long id; |
| | | |
| | | /** |
| | | * åå· |
| | | */ |
| | | @NotBlank(message = "åå·ä¸è½ä¸ºç©º", groups = { AddGroup.class, EditGroup.class }) |
| | | private String orderCode; |
| | | |
| | | /** |
| | | * åå·æ¥æ |
| | | */ |
| | | @NotNull(message = "åå·æ¥æä¸è½ä¸ºç©º", groups = { AddGroup.class, EditGroup.class }) |
| | | private Date orderTime; |
| | | |
| | | /** |
| | | * ç»å人 |
| | | */ |
| | | @NotNull(message = "ç»å人ä¸è½ä¸ºç©º", groups = { AddGroup.class, EditGroup.class }) |
| | | private Long chargeUser; |
| | | private Long chargeDept; |
| | | |
| | | /** |
| | | * å·¥åç±»åï¼1-å
¥åºå 2-åºåºåï¼ åå
¸ |
| | | */ |
| | | @NotBlank(message = "å·¥åç±»åï¼1-å
¥åºå 2-åºåºåï¼ åå
¸ä¸è½ä¸ºç©º", groups = { AddGroup.class, EditGroup.class }) |
| | | private String type; |
| | | |
| | | /** |
| | | * åºåºå®¢æ·åç§°æå
¥åºä¾åºå |
| | | */ |
| | | @NotBlank(message = "åºåºå®¢æ·åç§°æå
¥åºä¾åºåä¸è½ä¸ºç©º", groups = { AddGroup.class, EditGroup.class }) |
| | | private String partnerName; |
| | | |
| | | /** |
| | | * å
³èåå·ï¼å¦-ç»´ä¿®åï¼ |
| | | */ |
| | | private String associatedOrder; |
| | | |
| | | /** |
| | | * 夿³¨ |
| | | */ |
| | | private String remark; |
| | | |
| | | |
| | | } |
¶Ô±ÈÐÂÎļþ |
| | |
| | | package org.dromara.eims.domain.bo; |
| | | |
| | | import org.dromara.eims.domain.EimsSpareType; |
| | | import org.dromara.common.mybatis.core.domain.BaseEntity; |
| | | import org.dromara.common.core.validate.AddGroup; |
| | | import org.dromara.common.core.validate.EditGroup; |
| | | import io.github.linpeilie.annotations.AutoMapper; |
| | | import lombok.Data; |
| | | import lombok.EqualsAndHashCode; |
| | | import jakarta.validation.constraints.*; |
| | | |
| | | /** |
| | | * å¤ä»¶ç±»åä¸å¡å¯¹è±¡ eims_spare_type |
| | | * |
| | | * @author zhuguifei |
| | | * @date 2025-03-20 |
| | | */ |
| | | @Data |
| | | @EqualsAndHashCode(callSuper = true) |
| | | @AutoMapper(target = EimsSpareType.class, reverseConvertGenerate = false) |
| | | public class EimsSpareTypeBo extends BaseEntity { |
| | | |
| | | /** |
| | | * |
| | | */ |
| | | @NotNull(message = "ä¸è½ä¸ºç©º", groups = { EditGroup.class }) |
| | | private Long id; |
| | | |
| | | /** |
| | | * ç±»ååç§° |
| | | */ |
| | | @NotBlank(message = "ç±»ååç§°ä¸è½ä¸ºç©º", groups = { AddGroup.class, EditGroup.class }) |
| | | private String typeName; |
| | | |
| | | /** |
| | | * ç±»åç¼ç |
| | | */ |
| | | @NotBlank(message = "ç±»åç¼ç ä¸è½ä¸ºç©º", groups = { AddGroup.class, EditGroup.class }) |
| | | private String typeCode; |
| | | |
| | | /** |
| | | * ç¶id |
| | | */ |
| | | private Long parentId; |
| | | |
| | | /** |
| | | * æ¾ç¤ºé¡ºåº |
| | | */ |
| | | private Long orderNum; |
| | | |
| | | /** |
| | | * èåç±»åï¼Mç®å½ Cèå Fæé®ï¼ |
| | | */ |
| | | @NotBlank(message = "èåç±»åï¼Mç®å½ Cèå Fæé®ï¼ä¸è½ä¸ºç©º", groups = { AddGroup.class, EditGroup.class }) |
| | | private String menuType; |
| | | |
| | | /** |
| | | * èå徿 |
| | | */ |
| | | private String icon; |
| | | |
| | | /** |
| | | * èåç¶æï¼0æ£å¸¸ 1åç¨ï¼ |
| | | */ |
| | | @NotBlank(message = "èåç¶æï¼0æ£å¸¸ 1åç¨ï¼ä¸è½ä¸ºç©º", groups = { AddGroup.class, EditGroup.class }) |
| | | private String status; |
| | | |
| | | /** |
| | | * 夿³¨ |
| | | */ |
| | | private String remark; |
| | | |
| | | |
| | | } |
| | |
| | | * 设å¤ç±»ååç§° |
| | | */ |
| | | //@ExcelProperty(value = "设å¤ç±»å") |
| | | @Translation(type = TransConstant.EQU_YPE_ID_TO_NAME, mapper = "equTypeId") |
| | | @Translation(type = TransConstant.EQU_TYPE_ID_TO_NAME, mapper = "equTypeId") |
| | | private String equTypeName; |
| | | |
| | | |
¶Ô±ÈÐÂÎļþ |
| | |
| | | package org.dromara.eims.domain.vo; |
| | | |
| | | import org.dromara.common.translation.annotation.Translation; |
| | | import org.dromara.common.translation.constant.TransConstant; |
| | | import org.dromara.eims.domain.EimsFaultKnow; |
| | | import com.alibaba.excel.annotation.ExcelIgnoreUnannotated; |
| | | import com.alibaba.excel.annotation.ExcelProperty; |
| | | import org.dromara.common.excel.annotation.ExcelDictFormat; |
| | | import org.dromara.common.excel.convert.ExcelDictConvert; |
| | | import io.github.linpeilie.annotations.AutoMapper; |
| | | import lombok.Data; |
| | | |
| | | import java.io.Serial; |
| | | import java.io.Serializable; |
| | | import java.util.Date; |
| | | |
| | | |
| | | |
| | | /** |
| | | * æ
éç¥è¯è§å¾å¯¹è±¡ eims_fault_know |
| | | * |
| | | * @author zhuguifei |
| | | * @date 2025-03-18 |
| | | */ |
| | | @Data |
| | | @ExcelIgnoreUnannotated |
| | | @AutoMapper(target = EimsFaultKnow.class) |
| | | public class EimsFaultKnowVo implements Serializable { |
| | | |
| | | @Serial |
| | | private static final long serialVersionUID = 1L; |
| | | |
| | | /** |
| | | * |
| | | */ |
| | | @ExcelProperty(value = "") |
| | | private Long id; |
| | | |
| | | /** |
| | | * 设å¤id |
| | | */ |
| | | @ExcelProperty(value = "设å¤id") |
| | | private Long equId; |
| | | @Translation(type = TransConstant.EQU_ID_TO_NAME, mapper = "equId") |
| | | private String equName; |
| | | private String assetNo; |
| | | |
| | | /** |
| | | * 设å¤ç±»å |
| | | */ |
| | | @ExcelProperty(value = "设å¤ç±»å", converter = ExcelDictConvert.class) |
| | | private Long equType; |
| | | |
| | | private String equTypeName; |
| | | |
| | | /** |
| | | * 设å¤é¨ä½(åå
¸) |
| | | */ |
| | | @ExcelProperty(value = "设å¤é¨ä½(åå
¸)") |
| | | private String equPart; |
| | | |
| | | /** |
| | | * ç¥è¯ç¼ç |
| | | */ |
| | | @ExcelProperty(value = "ç¥è¯ç¼ç ") |
| | | private String faultCode; |
| | | |
| | | /** |
| | | * æ
éç±»å«(åå
¸) |
| | | */ |
| | | @ExcelProperty(value = "æ
éç±»å«(åå
¸)", converter = ExcelDictConvert.class) |
| | | @ExcelDictFormat(dictType = "repair_fault_type") |
| | | private String faultType; |
| | | |
| | | /** |
| | | * æ
éåå (åå
¸) |
| | | */ |
| | | @ExcelProperty(value = "æ
éåå (åå
¸)") |
| | | private String faultReason; |
| | | |
| | | /** |
| | | * æ¥ä¿®æè¿° |
| | | */ |
| | | @ExcelProperty(value = "æ¥ä¿®æè¿°") |
| | | private String reqDesc; |
| | | |
| | | /** |
| | | * å¤çæªæ½ |
| | | */ |
| | | @ExcelProperty(value = "å¤çæªæ½") |
| | | private String resHandle; |
| | | |
| | | /** |
| | | * 夿³¨ |
| | | */ |
| | | @ExcelProperty(value = "夿³¨") |
| | | private String remark; |
| | | |
| | | |
| | | } |
¶Ô±ÈÐÂÎļþ |
| | |
| | | package org.dromara.eims.domain.vo; |
| | | |
| | | import java.util.Date; |
| | | import com.fasterxml.jackson.annotation.JsonFormat; |
| | | import org.dromara.common.translation.annotation.Translation; |
| | | import org.dromara.common.translation.constant.TransConstant; |
| | | import org.dromara.eims.domain.EimsSpareInout; |
| | | import com.alibaba.excel.annotation.ExcelIgnoreUnannotated; |
| | | import com.alibaba.excel.annotation.ExcelProperty; |
| | | import org.dromara.common.excel.annotation.ExcelDictFormat; |
| | | import org.dromara.common.excel.convert.ExcelDictConvert; |
| | | import io.github.linpeilie.annotations.AutoMapper; |
| | | import lombok.Data; |
| | | |
| | | import java.io.Serial; |
| | | import java.io.Serializable; |
| | | import java.util.Date; |
| | | |
| | | |
| | | |
| | | /** |
| | | * å¤ä»¶åºå
¥åºè§å¾å¯¹è±¡ eims_spare_inout |
| | | * |
| | | * @author zhuguifei |
| | | * @date 2025-03-26 |
| | | */ |
| | | @Data |
| | | @ExcelIgnoreUnannotated |
| | | @AutoMapper(target = EimsSpareInout.class) |
| | | public class EimsSpareInoutVo implements Serializable { |
| | | |
| | | @Serial |
| | | private static final long serialVersionUID = 1L; |
| | | |
| | | /** |
| | | * |
| | | */ |
| | | @ExcelProperty(value = "") |
| | | private Long id; |
| | | |
| | | /** |
| | | * åå· |
| | | */ |
| | | @ExcelProperty(value = "åå·") |
| | | private String orderCode; |
| | | |
| | | /** |
| | | * åå·æ¥æ |
| | | */ |
| | | @ExcelProperty(value = "åå·æ¥æ") |
| | | private Date orderTime; |
| | | |
| | | /** |
| | | * ç»å人 |
| | | */ |
| | | @ExcelProperty(value = "ç»å人") |
| | | private Long chargeUser; |
| | | private Long chargeDept; |
| | | @Translation(type = TransConstant.USER_ID_TO_NICKNAME, mapper = "chargeUser") |
| | | private String chargeUserName; |
| | | @Translation(type = TransConstant.DEPT_ID_TO_NAME, mapper = "chargeDept") |
| | | private String chargeDeptName; |
| | | |
| | | /** |
| | | * å·¥åç±»åï¼1-å
¥åºå 2-åºåºåï¼ åå
¸ |
| | | */ |
| | | @ExcelProperty(value = "å·¥åç±»å", converter = ExcelDictConvert.class) |
| | | @ExcelDictFormat(dictType = "spare_inout_type") |
| | | private String type; |
| | | |
| | | /** |
| | | * åºåºå®¢æ·åç§°æå
¥åºä¾åºå |
| | | */ |
| | | @ExcelProperty(value = "åºåºå®¢æ·åç§°æå
¥åºä¾åºå") |
| | | private String partnerName; |
| | | |
| | | /** |
| | | * å
³èåå·ï¼å¦-ç»´ä¿®åï¼ |
| | | */ |
| | | @ExcelProperty(value = "å
³èåå·", converter = ExcelDictConvert.class) |
| | | @ExcelDictFormat(readConverterExp = "å¦=-ç»´ä¿®å") |
| | | private String associatedOrder; |
| | | |
| | | /** |
| | | * 夿³¨ |
| | | */ |
| | | @ExcelProperty(value = "夿³¨") |
| | | private String remark; |
| | | |
| | | |
| | | } |
¶Ô±ÈÐÂÎļþ |
| | |
| | | package org.dromara.eims.domain.vo; |
| | | |
| | | import org.dromara.eims.domain.EimsSpareType; |
| | | import com.alibaba.excel.annotation.ExcelIgnoreUnannotated; |
| | | import com.alibaba.excel.annotation.ExcelProperty; |
| | | import org.dromara.common.excel.annotation.ExcelDictFormat; |
| | | import org.dromara.common.excel.convert.ExcelDictConvert; |
| | | import io.github.linpeilie.annotations.AutoMapper; |
| | | import lombok.Data; |
| | | |
| | | import java.io.Serial; |
| | | import java.io.Serializable; |
| | | import java.util.Date; |
| | | |
| | | |
| | | |
| | | /** |
| | | * å¤ä»¶ç±»åè§å¾å¯¹è±¡ eims_spare_type |
| | | * |
| | | * @author zhuguifei |
| | | * @date 2025-03-20 |
| | | */ |
| | | @Data |
| | | @ExcelIgnoreUnannotated |
| | | @AutoMapper(target = EimsSpareType.class) |
| | | public class EimsSpareTypeVo implements Serializable { |
| | | |
| | | @Serial |
| | | private static final long serialVersionUID = 1L; |
| | | |
| | | /** |
| | | * |
| | | */ |
| | | @ExcelProperty(value = "") |
| | | private Long id; |
| | | |
| | | /** |
| | | * ç±»ååç§° |
| | | */ |
| | | @ExcelProperty(value = "ç±»ååç§°") |
| | | private String typeName; |
| | | |
| | | /** |
| | | * ç±»åç¼ç |
| | | */ |
| | | @ExcelProperty(value = "ç±»åç¼ç ") |
| | | private String typeCode; |
| | | |
| | | /** |
| | | * ç¶id |
| | | */ |
| | | @ExcelProperty(value = "ç¶id") |
| | | private Long parentId; |
| | | |
| | | /** |
| | | * æ¾ç¤ºé¡ºåº |
| | | */ |
| | | @ExcelProperty(value = "æ¾ç¤ºé¡ºåº") |
| | | private Long orderNum; |
| | | |
| | | /** |
| | | * èåç±»åï¼Mç®å½ Cèå Fæé®ï¼ |
| | | */ |
| | | @ExcelProperty(value = "èåç±»å", converter = ExcelDictConvert.class) |
| | | @ExcelDictFormat(readConverterExp = "M=ç®å½,C=èå,F=æé®") |
| | | private String menuType; |
| | | |
| | | /** |
| | | * èå徿 |
| | | */ |
| | | @ExcelProperty(value = "èå徿 ") |
| | | private String icon; |
| | | |
| | | /** |
| | | * èåç¶æï¼0æ£å¸¸ 1åç¨ï¼ |
| | | */ |
| | | @ExcelProperty(value = "èåç¶æ", converter = ExcelDictConvert.class) |
| | | @ExcelDictFormat(readConverterExp = "0=æ£å¸¸,1=åç¨") |
| | | private String status; |
| | | |
| | | /** |
| | | * 夿³¨ |
| | | */ |
| | | @ExcelProperty(value = "夿³¨") |
| | | private String remark; |
| | | |
| | | |
| | | } |
¶Ô±ÈÐÂÎļþ |
| | |
| | | package org.dromara.eims.domain.vo; |
| | | |
| | | import org.dromara.common.translation.annotation.Translation; |
| | | import org.dromara.common.translation.constant.TransConstant; |
| | | import org.dromara.eims.domain.EimsSpare; |
| | | import com.alibaba.excel.annotation.ExcelIgnoreUnannotated; |
| | | import com.alibaba.excel.annotation.ExcelProperty; |
| | | import org.dromara.common.excel.annotation.ExcelDictFormat; |
| | | import org.dromara.common.excel.convert.ExcelDictConvert; |
| | | import io.github.linpeilie.annotations.AutoMapper; |
| | | import lombok.Data; |
| | | |
| | | import java.io.Serial; |
| | | import java.io.Serializable; |
| | | import java.math.BigDecimal; |
| | | import java.util.Date; |
| | | |
| | | |
| | | |
| | | /** |
| | | * å¤ä»¶å°è´¦è§å¾å¯¹è±¡ eims_spare |
| | | * |
| | | * @author zhuguifei |
| | | * @date 2025-03-20 |
| | | */ |
| | | @Data |
| | | @ExcelIgnoreUnannotated |
| | | @AutoMapper(target = EimsSpare.class) |
| | | public class EimsSpareVo implements Serializable { |
| | | |
| | | @Serial |
| | | private static final long serialVersionUID = 1L; |
| | | |
| | | /** |
| | | * |
| | | */ |
| | | @ExcelProperty(value = "") |
| | | private Long id; |
| | | |
| | | /** |
| | | * ç±»å |
| | | */ |
| | | @ExcelProperty(value = "ç±»å") |
| | | private Long type; |
| | | |
| | | @Translation(type = TransConstant.SPARE_TYPE_ID_TO_NAME, mapper = "type") |
| | | private String typeName; |
| | | |
| | | /** |
| | | * å¤ä»¶åç§° |
| | | */ |
| | | @ExcelProperty(value = "å¤ä»¶åç§°") |
| | | private String name; |
| | | |
| | | /** |
| | | * å¤ä»¶ç¼ç |
| | | */ |
| | | @ExcelProperty(value = "å¤ä»¶ç¼ç ") |
| | | private String code; |
| | | |
| | | /** |
| | | * å¤ä»¶å¾ç |
| | | */ |
| | | @ExcelProperty(value = "å¤ä»¶å¾ç") |
| | | private Long img; |
| | | |
| | | /** |
| | | * å¤ä»¶å¾çUrl |
| | | */ |
| | | @Translation(type = TransConstant.OSS_ID_TO_URL, mapper = "img") |
| | | private String imgUrl; |
| | | /** |
| | | * åå· |
| | | */ |
| | | @ExcelProperty(value = "åå·") |
| | | private String modelNo; |
| | | |
| | | /** |
| | | * å¶é å |
| | | */ |
| | | @ExcelProperty(value = "å¶é å") |
| | | private String madeIn; |
| | | |
| | | /** |
| | | * ä¾åºå |
| | | */ |
| | | @ExcelProperty(value = "ä¾åºå") |
| | | private String supplier; |
| | | |
| | | /** |
| | | * 计éåä½ï¼åå
¸ï¼ |
| | | */ |
| | | @ExcelProperty(value = "计éåä½", converter = ExcelDictConvert.class) |
| | | @ExcelDictFormat(dictType = "eims_spare_unit") |
| | | private String unit; |
| | | |
| | | /** |
| | | * åèä»·æ ¼ |
| | | */ |
| | | @ExcelProperty(value = "åèä»·æ ¼") |
| | | private BigDecimal referPrice; |
| | | |
| | | /** |
| | | * åºåä¸é |
| | | */ |
| | | @ExcelProperty(value = "åºåä¸é") |
| | | private Long upperStock; |
| | | |
| | | /** |
| | | * åºåä¸é |
| | | */ |
| | | @ExcelProperty(value = "åºåä¸é") |
| | | private Long lowerStock; |
| | | |
| | | /** |
| | | * å®é
åºå |
| | | */ |
| | | @ExcelProperty(value = "å®é
åºå") |
| | | private Long actualStock; |
| | | |
| | | /** |
| | | * åºåéé¢ |
| | | */ |
| | | @ExcelProperty(value = "åºåéé¢") |
| | | private BigDecimal stockAmount; |
| | | |
| | | /** |
| | | * æ´æ¢å¨æ |
| | | */ |
| | | @ExcelProperty(value = "æ´æ¢å¨æ") |
| | | private Long replaceCycle; |
| | | |
| | | /** |
| | | * æ´æ¢å¨æåä½ï¼åå
¸ï¼ |
| | | */ |
| | | @ExcelProperty(value = "æ´æ¢å¨æåä½", converter = ExcelDictConvert.class) |
| | | @ExcelDictFormat(dictType = "maint_cycle_unit") |
| | | private String cycleUnit; |
| | | |
| | | /** |
| | | * 夿³¨ |
| | | */ |
| | | @ExcelProperty(value = "夿³¨") |
| | | private String remark; |
| | | |
| | | |
| | | } |
¶Ô±ÈÐÂÎļþ |
| | |
| | | package org.dromara.eims.job; |
| | | |
| | | import com.aizuda.snailjob.client.job.core.annotation.JobExecutor; |
| | | import com.aizuda.snailjob.client.job.core.dto.JobArgs; |
| | | import com.aizuda.snailjob.client.model.ExecuteResult; |
| | | import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; |
| | | import com.baomidou.mybatisplus.core.toolkit.Wrappers; |
| | | import lombok.RequiredArgsConstructor; |
| | | import lombok.SneakyThrows; |
| | | import org.dromara.common.core.constant.DictConstants; |
| | | import org.dromara.common.core.utils.DateUtils; |
| | | import org.dromara.common.core.utils.MapstructUtils; |
| | | import org.dromara.eims.domain.EimsInspectPlan; |
| | | import org.dromara.eims.domain.EimsInspectRecord; |
| | | import org.dromara.eims.domain.EimsMaintOrder; |
| | | import org.dromara.eims.domain.EimsMaintPlan; |
| | | import org.dromara.eims.domain.vo.EimsInspectPlanVo; |
| | | import org.dromara.eims.domain.vo.EimsMaintPlanVo; |
| | | import org.dromara.eims.mapper.EimsInspectPlanMapper; |
| | | import org.dromara.eims.mapper.EimsInspectRecordMapper; |
| | | import org.dromara.eims.mapper.EimsMaintOrderMapper; |
| | | import org.dromara.eims.mapper.EimsMaintPlanMapper; |
| | | import org.dromara.eims.service.IGenerateCodeService; |
| | | import org.springframework.beans.BeanUtils; |
| | | import org.springframework.stereotype.Component; |
| | | import org.springframework.transaction.annotation.Transactional; |
| | | |
| | | import java.util.Date; |
| | | import java.util.List; |
| | | |
| | | @Component |
| | | @RequiredArgsConstructor |
| | | @JobExecutor(name = "inspectPlanToRecordJob") |
| | | public class InspectPlanToRecordJob { |
| | | private final EimsInspectRecordMapper recordMapper; |
| | | |
| | | |
| | | private final EimsInspectPlanMapper planMapper; |
| | | |
| | | private final IGenerateCodeService codeService; |
| | | |
| | | |
| | | @SneakyThrows |
| | | @Transactional(rollbackFor = Exception.class) |
| | | public ExecuteResult jobExecute(JobArgs jobArgs) { |
| | | // è·åä»å¤©æ¥æ |
| | | |
| | | Date today = new Date(); |
| | | LambdaQueryWrapper<EimsInspectPlan> planBoQueryWrapper = Wrappers.lambdaQuery(); |
| | | // æ¥è¯¢å¯ç¨çç¹æ£è®¡å |
| | | planBoQueryWrapper.eq(EimsInspectPlan::getStatus, DictConstants.SYS_NORMAL_DISABLE_DETAIL.NORMAL); |
| | | // è¿æ»¤æ²¡æä¸æ¬¡è¿è¡æ¶é´ |
| | | planBoQueryWrapper.isNotNull(EimsInspectPlan::getInspNextTime); |
| | | // è¿æ»¤æ²¡æç¹æ£å¨æçæ°æ® |
| | | planBoQueryWrapper.isNotNull(EimsInspectPlan::getInspCycle); |
| | | planBoQueryWrapper.isNotNull(EimsInspectPlan::getInspCycleUnit); |
| | | |
| | | List<EimsInspectPlanVo> planVoList = planMapper.selectVoList(planBoQueryWrapper); |
| | | for (int i = 0; i < planVoList.size(); i++) { |
| | | EimsInspectPlanVo planVo = planVoList.get(i); |
| | | // ç¹æ£è®¡åaddçæ¶åä¼èªå¨çæä¸æ¬¡è¿è¡æ¶é´ |
| | | Date oldNext = planVo.getInspNextTime(); |
| | | int day = DateUtils.differentDays(today, oldNext); |
| | | // å¦æè®¡åçæç¹æ£æ¥æå¤§äºä»å¤©åä¸çæç¹æ£è®°å½ |
| | | if (day >= 1) { |
| | | continue; |
| | | } |
| | | |
| | | // 计ç®çæç¹æ£è®°å½æ¶é´ |
| | | Long inspCycle = planVo.getInspCycle(); |
| | | Date newNext = null; |
| | | String inspCycleUnit = planVo.getInspCycleUnit(); |
| | | switch (inspCycleUnit) { |
| | | case DictConstants.MAINT_CYCLE_UNIT_DETAIL.DAY: |
| | | newNext = DateUtils.addDays(oldNext, inspCycle.intValue()); |
| | | break; |
| | | case DictConstants.MAINT_CYCLE_UNIT_DETAIL.WEEK: |
| | | |
| | | newNext = DateUtils.addWeeks(oldNext, inspCycle.intValue()); |
| | | |
| | | break; |
| | | case DictConstants.MAINT_CYCLE_UNIT_DETAIL.MONTH: |
| | | |
| | | newNext = DateUtils.addMonths(oldNext, inspCycle.intValue()); |
| | | |
| | | break; |
| | | case DictConstants.MAINT_CYCLE_UNIT_DETAIL.SEASON: |
| | | newNext = DateUtils.addMonths(oldNext, inspCycle.intValue() * 3); |
| | | |
| | | break; |
| | | case DictConstants.MAINT_CYCLE_UNIT_DETAIL.YEAR: |
| | | |
| | | newNext = DateUtils.addYears(oldNext, inspCycle.intValue()); |
| | | |
| | | break; |
| | | } |
| | | |
| | | EimsInspectRecord record = new EimsInspectRecord(); |
| | | record.setEquId(planVo.getEquId()); |
| | | record.setInspDesc(planVo.getInspDesc()); |
| | | record.setInspType(planVo.getInspType()); |
| | | record.setInspUser(planVo.getInspUser()); |
| | | record.setInspDept(planVo.getInspDept()); |
| | | record.setStatus(DictConstants.EIMS_INSPECT_STATUS_DETAIL.N); |
| | | record.setPlanTime(oldNext); |
| | | record.setPlanId(planVo.getId()); |
| | | //ç¹æ£é¡¹åç§° |
| | | record.setInspName(planVo.getInspName()); |
| | | record.setInspCode(codeService.generateCode("DJZD")); |
| | | EimsInspectPlan plan = MapstructUtils.convert(planVo, EimsInspectPlan.class); |
| | | assert plan != null; |
| | | plan.setInspLastTime(oldNext); |
| | | plan.setInspNextTime(newNext); |
| | | if(plan.getInspFirstTime()==null)plan.setInspFirstTime(oldNext); |
| | | boolean flag = recordMapper.insert(record) > 0; |
| | | //TODO çæå¤±è´¥ï¼æ·»å å¼å¸¸è®°å½ |
| | | if (!flag) continue; |
| | | planMapper.updateById(plan); |
| | | |
| | | |
| | | } |
| | | return ExecuteResult.success("ç¹æ£è®¡åçæç¹æ£è®°å½æå"); |
| | | } |
| | | } |
¶Ô±ÈÐÂÎļþ |
| | |
| | | package org.dromara.eims.mapper; |
| | | |
| | | import com.baomidou.mybatisplus.core.conditions.Wrapper; |
| | | import com.baomidou.mybatisplus.core.toolkit.Constants; |
| | | import com.baomidou.mybatisplus.extension.plugins.pagination.Page; |
| | | import org.apache.ibatis.annotations.Param; |
| | | import org.dromara.eims.domain.EimsFaultKnow; |
| | | import org.dromara.eims.domain.EimsInspectSt; |
| | | import org.dromara.eims.domain.vo.EimsFaultKnowVo; |
| | | import org.dromara.common.mybatis.core.mapper.BaseMapperPlus; |
| | | import org.dromara.eims.domain.vo.EimsInspectStVo; |
| | | |
| | | /** |
| | | * æ
éç¥è¯Mapperæ¥å£ |
| | | * |
| | | * @author zhuguifei |
| | | * @date 2025-03-18 |
| | | */ |
| | | public interface EimsFaultKnowMapper extends BaseMapperPlus<EimsFaultKnow, EimsFaultKnowVo> { |
| | | |
| | | Page<EimsFaultKnowVo> selectFaultKnowList(@Param("page") Page<EimsFaultKnowVo> page, @Param(Constants.WRAPPER) Wrapper<EimsFaultKnow> queryWrapper); |
| | | |
| | | } |
¶Ô±ÈÐÂÎļþ |
| | |
| | | package org.dromara.eims.mapper; |
| | | |
| | | import org.dromara.eims.domain.EimsSpareInout; |
| | | import org.dromara.eims.domain.vo.EimsSpareInoutVo; |
| | | import org.dromara.common.mybatis.core.mapper.BaseMapperPlus; |
| | | |
| | | /** |
| | | * å¤ä»¶åºå
¥åºMapperæ¥å£ |
| | | * |
| | | * @author zhuguifei |
| | | * @date 2025-03-26 |
| | | */ |
| | | public interface EimsSpareInoutMapper extends BaseMapperPlus<EimsSpareInout, EimsSpareInoutVo> { |
| | | |
| | | } |
¶Ô±ÈÐÂÎļþ |
| | |
| | | package org.dromara.eims.mapper; |
| | | |
| | | import org.dromara.eims.domain.EimsSpare; |
| | | import org.dromara.eims.domain.vo.EimsSpareVo; |
| | | import org.dromara.common.mybatis.core.mapper.BaseMapperPlus; |
| | | |
| | | /** |
| | | * å¤ä»¶å°è´¦Mapperæ¥å£ |
| | | * |
| | | * @author zhuguifei |
| | | * @date 2025-03-20 |
| | | */ |
| | | public interface EimsSpareMapper extends BaseMapperPlus<EimsSpare, EimsSpareVo> { |
| | | |
| | | } |
¶Ô±ÈÐÂÎļþ |
| | |
| | | package org.dromara.eims.mapper; |
| | | |
| | | import org.dromara.eims.domain.EimsSpareType; |
| | | import org.dromara.eims.domain.vo.EimsSpareTypeVo; |
| | | import org.dromara.common.mybatis.core.mapper.BaseMapperPlus; |
| | | |
| | | /** |
| | | * å¤ä»¶ç±»åMapperæ¥å£ |
| | | * |
| | | * @author zhuguifei |
| | | * @date 2025-03-20 |
| | | */ |
| | | public interface EimsSpareTypeMapper extends BaseMapperPlus<EimsSpareType, EimsSpareTypeVo> { |
| | | |
| | | } |
¶Ô±ÈÐÂÎļþ |
| | |
| | | package org.dromara.eims.service; |
| | | |
| | | import org.dromara.eims.domain.vo.EimsFaultKnowVo; |
| | | import org.dromara.eims.domain.bo.EimsFaultKnowBo; |
| | | import org.dromara.common.mybatis.core.page.TableDataInfo; |
| | | import org.dromara.common.mybatis.core.page.PageQuery; |
| | | |
| | | import java.util.Collection; |
| | | import java.util.List; |
| | | |
| | | /** |
| | | * æ
éç¥è¯Serviceæ¥å£ |
| | | * |
| | | * @author zhuguifei |
| | | * @date 2025-03-18 |
| | | */ |
| | | public interface IEimsFaultKnowService { |
| | | |
| | | /** |
| | | * æ¥è¯¢æ
éç¥è¯ |
| | | * |
| | | * @param id ä¸»é® |
| | | * @return æ
éç¥è¯ |
| | | */ |
| | | EimsFaultKnowVo queryById(Long id); |
| | | |
| | | /** |
| | | * å页æ¥è¯¢æ
éç¥è¯å表 |
| | | * |
| | | * @param bo æ¥è¯¢æ¡ä»¶ |
| | | * @param pageQuery å页忰 |
| | | * @return æ
éç¥è¯å页å表 |
| | | */ |
| | | TableDataInfo<EimsFaultKnowVo> queryPageList(EimsFaultKnowBo bo, PageQuery pageQuery); |
| | | |
| | | /** |
| | | * æ¥è¯¢ç¬¦åæ¡ä»¶çæ
éç¥è¯å表 |
| | | * |
| | | * @param bo æ¥è¯¢æ¡ä»¶ |
| | | * @return æ
éç¥è¯å表 |
| | | */ |
| | | List<EimsFaultKnowVo> queryList(EimsFaultKnowBo bo); |
| | | |
| | | /** |
| | | * æ°å¢æ
éç¥è¯ |
| | | * |
| | | * @param bo æ
éç¥è¯ |
| | | * @return æ¯å¦æ°å¢æå |
| | | */ |
| | | Boolean insertByBo(EimsFaultKnowBo bo); |
| | | |
| | | /** |
| | | * ä¿®æ¹æ
éç¥è¯ |
| | | * |
| | | * @param bo æ
éç¥è¯ |
| | | * @return æ¯å¦ä¿®æ¹æå |
| | | */ |
| | | Boolean updateByBo(EimsFaultKnowBo bo); |
| | | |
| | | /** |
| | | * æ ¡éªå¹¶æ¹éå 餿
éç¥è¯ä¿¡æ¯ |
| | | * |
| | | * @param ids å¾
å é¤ç主é®éå |
| | | * @param isValid æ¯å¦è¿è¡æææ§æ ¡éª |
| | | * @return æ¯å¦å 餿å |
| | | */ |
| | | Boolean deleteWithValidByIds(Collection<Long> ids, Boolean isValid); |
| | | } |
¶Ô±ÈÐÂÎļþ |
| | |
| | | package org.dromara.eims.service; |
| | | |
| | | import org.dromara.eims.domain.vo.EimsSpareInoutVo; |
| | | import org.dromara.eims.domain.bo.EimsSpareInoutBo; |
| | | import org.dromara.common.mybatis.core.page.TableDataInfo; |
| | | import org.dromara.common.mybatis.core.page.PageQuery; |
| | | |
| | | import java.util.Collection; |
| | | import java.util.List; |
| | | |
| | | /** |
| | | * å¤ä»¶åºå
¥åºServiceæ¥å£ |
| | | * |
| | | * @author zhuguifei |
| | | * @date 2025-03-26 |
| | | */ |
| | | public interface IEimsSpareInoutService { |
| | | |
| | | /** |
| | | * æ¥è¯¢å¤ä»¶åºå
¥åº |
| | | * |
| | | * @param id ä¸»é® |
| | | * @return å¤ä»¶åºå
¥åº |
| | | */ |
| | | EimsSpareInoutVo queryById(Long id); |
| | | |
| | | /** |
| | | * å页æ¥è¯¢å¤ä»¶åºå
¥åºå表 |
| | | * |
| | | * @param bo æ¥è¯¢æ¡ä»¶ |
| | | * @param pageQuery å页忰 |
| | | * @return å¤ä»¶åºå
¥åºå页å表 |
| | | */ |
| | | TableDataInfo<EimsSpareInoutVo> queryPageList(EimsSpareInoutBo bo, PageQuery pageQuery); |
| | | |
| | | /** |
| | | * æ¥è¯¢ç¬¦åæ¡ä»¶çå¤ä»¶åºå
¥åºå表 |
| | | * |
| | | * @param bo æ¥è¯¢æ¡ä»¶ |
| | | * @return å¤ä»¶åºå
¥åºå表 |
| | | */ |
| | | List<EimsSpareInoutVo> queryList(EimsSpareInoutBo bo); |
| | | |
| | | /** |
| | | * æ°å¢å¤ä»¶åºå
¥åº |
| | | * |
| | | * @param bo å¤ä»¶åºå
¥åº |
| | | * @return æ¯å¦æ°å¢æå |
| | | */ |
| | | Boolean insertByBo(EimsSpareInoutBo bo); |
| | | |
| | | /** |
| | | * ä¿®æ¹å¤ä»¶åºå
¥åº |
| | | * |
| | | * @param bo å¤ä»¶åºå
¥åº |
| | | * @return æ¯å¦ä¿®æ¹æå |
| | | */ |
| | | Boolean updateByBo(EimsSpareInoutBo bo); |
| | | |
| | | /** |
| | | * æ ¡éªå¹¶æ¹éå é¤å¤ä»¶åºå
¥åºä¿¡æ¯ |
| | | * |
| | | * @param ids å¾
å é¤ç主é®éå |
| | | * @param isValid æ¯å¦è¿è¡æææ§æ ¡éª |
| | | * @return æ¯å¦å 餿å |
| | | */ |
| | | Boolean deleteWithValidByIds(Collection<Long> ids, Boolean isValid); |
| | | } |
¶Ô±ÈÐÂÎļþ |
| | |
| | | package org.dromara.eims.service; |
| | | |
| | | import org.dromara.eims.domain.vo.EimsSpareVo; |
| | | import org.dromara.eims.domain.bo.EimsSpareBo; |
| | | import org.dromara.common.mybatis.core.page.TableDataInfo; |
| | | import org.dromara.common.mybatis.core.page.PageQuery; |
| | | |
| | | import java.util.Collection; |
| | | import java.util.List; |
| | | |
| | | /** |
| | | * å¤ä»¶å°è´¦Serviceæ¥å£ |
| | | * |
| | | * @author zhuguifei |
| | | * @date 2025-03-20 |
| | | */ |
| | | public interface IEimsSpareService { |
| | | |
| | | /** |
| | | * æ¥è¯¢å¤ä»¶å°è´¦ |
| | | * |
| | | * @param id ä¸»é® |
| | | * @return å¤ä»¶å°è´¦ |
| | | */ |
| | | EimsSpareVo queryById(Long id); |
| | | |
| | | /** |
| | | * å页æ¥è¯¢å¤ä»¶å°è´¦å表 |
| | | * |
| | | * @param bo æ¥è¯¢æ¡ä»¶ |
| | | * @param pageQuery å页忰 |
| | | * @return å¤ä»¶å°è´¦å页å表 |
| | | */ |
| | | TableDataInfo<EimsSpareVo> queryPageList(EimsSpareBo bo, PageQuery pageQuery); |
| | | |
| | | /** |
| | | * æ¥è¯¢ç¬¦åæ¡ä»¶çå¤ä»¶å°è´¦å表 |
| | | * |
| | | * @param bo æ¥è¯¢æ¡ä»¶ |
| | | * @return å¤ä»¶å°è´¦å表 |
| | | */ |
| | | List<EimsSpareVo> queryList(EimsSpareBo bo); |
| | | |
| | | /** |
| | | * æ°å¢å¤ä»¶å°è´¦ |
| | | * |
| | | * @param bo å¤ä»¶å°è´¦ |
| | | * @return æ¯å¦æ°å¢æå |
| | | */ |
| | | Boolean insertByBo(EimsSpareBo bo); |
| | | |
| | | /** |
| | | * ä¿®æ¹å¤ä»¶å°è´¦ |
| | | * |
| | | * @param bo å¤ä»¶å°è´¦ |
| | | * @return æ¯å¦ä¿®æ¹æå |
| | | */ |
| | | Boolean updateByBo(EimsSpareBo bo); |
| | | |
| | | /** |
| | | * æ ¡éªå¹¶æ¹éå é¤å¤ä»¶å°è´¦ä¿¡æ¯ |
| | | * |
| | | * @param ids å¾
å é¤ç主é®éå |
| | | * @param isValid æ¯å¦è¿è¡æææ§æ ¡éª |
| | | * @return æ¯å¦å 餿å |
| | | */ |
| | | Boolean deleteWithValidByIds(Collection<Long> ids, Boolean isValid); |
| | | } |
¶Ô±ÈÐÂÎļþ |
| | |
| | | package org.dromara.eims.service; |
| | | |
| | | import cn.hutool.core.lang.tree.Tree; |
| | | import jakarta.validation.constraints.NotEmpty; |
| | | import org.dromara.eims.domain.vo.EimsSpareTypeVo; |
| | | import org.dromara.eims.domain.bo.EimsSpareTypeBo; |
| | | |
| | | import java.util.Collection; |
| | | import java.util.List; |
| | | |
| | | /** |
| | | * å¤ä»¶ç±»åServiceæ¥å£ |
| | | * |
| | | * @author zhuguifei |
| | | * @date 2025-03-20 |
| | | */ |
| | | public interface IEimsSpareTypeService { |
| | | |
| | | /** |
| | | * æ¥è¯¢å¤ä»¶ç±»å |
| | | * |
| | | * @param id ä¸»é® |
| | | * @return å¤ä»¶ç±»å |
| | | */ |
| | | EimsSpareTypeVo queryById(Long id); |
| | | |
| | | |
| | | /** |
| | | * æ¥è¯¢ç¬¦åæ¡ä»¶çå¤ä»¶ç±»åå表 |
| | | * |
| | | * @param bo æ¥è¯¢æ¡ä»¶ |
| | | * @return å¤ä»¶ç±»åå表 |
| | | */ |
| | | List<EimsSpareTypeVo> queryList(EimsSpareTypeBo bo); |
| | | |
| | | /** |
| | | * æ°å¢å¤ä»¶ç±»å |
| | | * |
| | | * @param bo å¤ä»¶ç±»å |
| | | * @return æ¯å¦æ°å¢æå |
| | | */ |
| | | Boolean insertByBo(EimsSpareTypeBo bo); |
| | | |
| | | /** |
| | | * ä¿®æ¹å¤ä»¶ç±»å |
| | | * |
| | | * @param bo å¤ä»¶ç±»å |
| | | * @return æ¯å¦ä¿®æ¹æå |
| | | */ |
| | | Boolean updateByBo(EimsSpareTypeBo bo); |
| | | |
| | | /** |
| | | * æ ¡éªå¹¶æ¹éå é¤å¤ä»¶ç±»åä¿¡æ¯ |
| | | * |
| | | * @param ids å¾
å é¤ç主é®éå |
| | | * @param isValid æ¯å¦è¿è¡æææ§æ ¡éª |
| | | * @return æ¯å¦å 餿å |
| | | */ |
| | | Boolean deleteWithValidByIds(Collection<Long> ids, Boolean isValid); |
| | | |
| | | /** |
| | | * æ£æ¥æ¯å¦åå¨å项 |
| | | * @param id |
| | | * @return |
| | | */ |
| | | boolean hasChildBySpareTypeId(@NotEmpty(message = "主é®ä¸è½ä¸ºç©º") Long id); |
| | | |
| | | |
| | | /** |
| | | * è·åå¤ä»¶ç±»åæ å表 |
| | | * |
| | | * @param bo |
| | | * @return æ å表 |
| | | */ |
| | | List<Tree<Long>> selectSpareTypeTreeList(EimsSpareTypeBo bo); |
| | | } |
¶Ô±ÈÐÂÎļþ |
| | |
| | | package org.dromara.eims.service.impl; |
| | | |
| | | import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; |
| | | import org.dromara.common.core.utils.MapstructUtils; |
| | | import org.dromara.common.core.utils.StringUtils; |
| | | import org.dromara.common.mybatis.core.page.TableDataInfo; |
| | | import org.dromara.common.mybatis.core.page.PageQuery; |
| | | import com.baomidou.mybatisplus.extension.plugins.pagination.Page; |
| | | import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; |
| | | import com.baomidou.mybatisplus.core.toolkit.Wrappers; |
| | | import lombok.RequiredArgsConstructor; |
| | | import org.dromara.eims.domain.EimsEquType; |
| | | import org.dromara.eims.domain.vo.EimsEquTypeVo; |
| | | import org.dromara.eims.mapper.EimsEquTypeMapper; |
| | | import org.springframework.stereotype.Service; |
| | | import org.dromara.eims.domain.bo.EimsFaultKnowBo; |
| | | import org.dromara.eims.domain.vo.EimsFaultKnowVo; |
| | | import org.dromara.eims.domain.EimsFaultKnow; |
| | | import org.dromara.eims.mapper.EimsFaultKnowMapper; |
| | | import org.dromara.eims.service.IEimsFaultKnowService; |
| | | |
| | | import java.util.ArrayList; |
| | | import java.util.List; |
| | | import java.util.Map; |
| | | import java.util.Collection; |
| | | |
| | | /** |
| | | * æ
éç¥è¯Serviceä¸å¡å±å¤ç |
| | | * |
| | | * @author zhuguifei |
| | | * @date 2025-03-18 |
| | | */ |
| | | @RequiredArgsConstructor |
| | | @Service |
| | | public class EimsFaultKnowServiceImpl implements IEimsFaultKnowService { |
| | | |
| | | private final EimsFaultKnowMapper baseMapper; |
| | | private final EimsEquTypeMapper equTypeMapper; |
| | | |
| | | /** |
| | | * æ¥è¯¢æ
éç¥è¯ |
| | | * |
| | | * @param id ä¸»é® |
| | | * @return æ
éç¥è¯ |
| | | */ |
| | | @Override |
| | | public EimsFaultKnowVo queryById(Long id){ |
| | | return baseMapper.selectVoById(id); |
| | | } |
| | | |
| | | /** |
| | | * å页æ¥è¯¢æ
éç¥è¯å表 |
| | | * |
| | | * @param bo æ¥è¯¢æ¡ä»¶ |
| | | * @param pageQuery å页忰 |
| | | * @return æ
éç¥è¯å页å表 |
| | | */ |
| | | @Override |
| | | public TableDataInfo<EimsFaultKnowVo> queryPageList(EimsFaultKnowBo bo, PageQuery pageQuery) { |
| | | QueryWrapper<EimsFaultKnow> qw = buildWrapper(bo); |
| | | Page<EimsFaultKnowVo> result = baseMapper.selectFaultKnowList(pageQuery.build(), qw); |
| | | return TableDataInfo.build(result); |
| | | } |
| | | |
| | | /** |
| | | * æ¥è¯¢ç¬¦åæ¡ä»¶çæ
éç¥è¯å表 |
| | | * |
| | | * @param bo æ¥è¯¢æ¡ä»¶ |
| | | * @return æ
éç¥è¯å表 |
| | | */ |
| | | @Override |
| | | public List<EimsFaultKnowVo> queryList(EimsFaultKnowBo bo) { |
| | | LambdaQueryWrapper<EimsFaultKnow> lqw = buildQueryWrapper(bo); |
| | | return baseMapper.selectVoList(lqw); |
| | | } |
| | | |
| | | private LambdaQueryWrapper<EimsFaultKnow> buildQueryWrapper(EimsFaultKnowBo bo) { |
| | | Map<String, Object> params = bo.getParams(); |
| | | LambdaQueryWrapper<EimsFaultKnow> lqw = Wrappers.lambdaQuery(); |
| | | lqw.eq(bo.getEquId() != null, EimsFaultKnow::getEquId, bo.getEquId()); |
| | | lqw.eq(bo.getEquType() != null, EimsFaultKnow::getEquType, bo.getEquType()); |
| | | lqw.eq(StringUtils.isNotBlank(bo.getEquPart()), EimsFaultKnow::getEquPart, bo.getEquPart()); |
| | | lqw.eq(StringUtils.isNotBlank(bo.getFaultCode()), EimsFaultKnow::getFaultCode, bo.getFaultCode()); |
| | | lqw.eq(StringUtils.isNotBlank(bo.getFaultType()), EimsFaultKnow::getFaultType, bo.getFaultType()); |
| | | lqw.eq(StringUtils.isNotBlank(bo.getFaultReason()), EimsFaultKnow::getFaultReason, bo.getFaultReason()); |
| | | lqw.eq(StringUtils.isNotBlank(bo.getReqDesc()), EimsFaultKnow::getReqDesc, bo.getReqDesc()); |
| | | lqw.eq(StringUtils.isNotBlank(bo.getResHandle()), EimsFaultKnow::getResHandle, bo.getResHandle()); |
| | | return lqw; |
| | | } |
| | | private QueryWrapper<EimsFaultKnow> buildWrapper(EimsFaultKnowBo bo) { |
| | | Map<String, Object> params = bo.getParams(); |
| | | QueryWrapper<EimsFaultKnow> qw = Wrappers.query(); |
| | | qw.eq(bo.getEquId() != null, "fk.equ_id", bo.getEquId()); |
| | | qw.eq(bo.getEquType() != null,"fk.equ_type", bo.getEquType()); |
| | | qw.like(bo.getEquName() != null,"eu.equ_name", bo.getEquName()); |
| | | qw.like(bo.getAssetNo() != null,"eu.asset_no", bo.getAssetNo()); |
| | | qw.eq(StringUtils.isNotBlank(bo.getEquPart()), "fk.equ_part", bo.getEquPart()); |
| | | qw.like(StringUtils.isNotBlank(bo.getFaultCode()), "fk.fault_code", bo.getFaultCode()); |
| | | qw.eq(StringUtils.isNotBlank(bo.getFaultType()), "fk.fault_type", bo.getFaultType()); |
| | | qw.eq(StringUtils.isNotBlank(bo.getFaultReason()), "fk.fault_reason", bo.getFaultReason()); |
| | | qw.like(StringUtils.isNotBlank(bo.getReqDesc()),"fk.req_desc", bo.getReqDesc()); |
| | | qw.like(StringUtils.isNotBlank(bo.getResHandle()), "fk.res_handle", bo.getResHandle()); |
| | | |
| | | if (bo.getEquTypeId() != null && bo.getEquTypeId() > 0) { |
| | | List<Long> allDescendantIds = getAllDescendantIds(bo.getEquTypeId()); |
| | | qw.in("et.equ_type_id", allDescendantIds); |
| | | } |
| | | |
| | | |
| | | return qw; |
| | | } |
| | | |
| | | /** |
| | | * æ ¹æ®idï¼è·åææå代id |
| | | * |
| | | * @param rootId |
| | | * @return |
| | | */ |
| | | public List<Long> getAllDescendantIds(Long rootId) { |
| | | List<Long> result = new ArrayList<>(); |
| | | result.add(rootId); |
| | | collectDescendants(rootId, result); |
| | | return result; |
| | | } |
| | | |
| | | private void collectDescendants(Long currentId, List<Long> collector) { |
| | | QueryWrapper<EimsEquType> equTypeWrapper = new QueryWrapper<>(); |
| | | equTypeWrapper.lambda().eq(EimsEquType::getParentId, currentId); |
| | | |
| | | List<EimsEquTypeVo> children = equTypeMapper.selectVoList(equTypeWrapper); |
| | | if (children != null && !children.isEmpty()) { |
| | | for (EimsEquTypeVo child : children) { |
| | | Long childId = child.getEquTypeId(); |
| | | collector.add(childId); |
| | | collectDescendants(childId, collector); |
| | | } |
| | | } |
| | | } |
| | | |
| | | /** |
| | | * æ°å¢æ
éç¥è¯ |
| | | * |
| | | * @param bo æ
éç¥è¯ |
| | | * @return æ¯å¦æ°å¢æå |
| | | */ |
| | | @Override |
| | | public Boolean insertByBo(EimsFaultKnowBo bo) { |
| | | EimsFaultKnow add = MapstructUtils.convert(bo, EimsFaultKnow.class); |
| | | validEntityBeforeSave(add); |
| | | boolean flag = baseMapper.insert(add) > 0; |
| | | if (flag) { |
| | | bo.setId(add.getId()); |
| | | } |
| | | return flag; |
| | | } |
| | | |
| | | /** |
| | | * ä¿®æ¹æ
éç¥è¯ |
| | | * |
| | | * @param bo æ
éç¥è¯ |
| | | * @return æ¯å¦ä¿®æ¹æå |
| | | */ |
| | | @Override |
| | | public Boolean updateByBo(EimsFaultKnowBo bo) { |
| | | EimsFaultKnow update = MapstructUtils.convert(bo, EimsFaultKnow.class); |
| | | validEntityBeforeSave(update); |
| | | return baseMapper.updateById(update) > 0; |
| | | } |
| | | |
| | | /** |
| | | * ä¿ååçæ°æ®æ ¡éª |
| | | */ |
| | | private void validEntityBeforeSave(EimsFaultKnow entity){ |
| | | //TODO åä¸äºæ°æ®æ ¡éª,å¦å¯ä¸çº¦æ |
| | | } |
| | | |
| | | /** |
| | | * æ ¡éªå¹¶æ¹éå 餿
éç¥è¯ä¿¡æ¯ |
| | | * |
| | | * @param ids å¾
å é¤ç主é®éå |
| | | * @param isValid æ¯å¦è¿è¡æææ§æ ¡éª |
| | | * @return æ¯å¦å 餿å |
| | | */ |
| | | @Override |
| | | public Boolean deleteWithValidByIds(Collection<Long> ids, Boolean isValid) { |
| | | if(isValid){ |
| | | //TODO åä¸äºä¸å¡ä¸çæ ¡éª,夿æ¯å¦éè¦æ ¡éª |
| | | } |
| | | return baseMapper.deleteByIds(ids) > 0; |
| | | } |
| | | } |
¶Ô±ÈÐÂÎļþ |
| | |
| | | package org.dromara.eims.service.impl; |
| | | |
| | | import org.dromara.common.core.utils.MapstructUtils; |
| | | import org.dromara.common.core.utils.StringUtils; |
| | | import org.dromara.common.mybatis.core.page.TableDataInfo; |
| | | import org.dromara.common.mybatis.core.page.PageQuery; |
| | | import com.baomidou.mybatisplus.extension.plugins.pagination.Page; |
| | | import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; |
| | | import com.baomidou.mybatisplus.core.toolkit.Wrappers; |
| | | import lombok.RequiredArgsConstructor; |
| | | import org.springframework.stereotype.Service; |
| | | import org.dromara.eims.domain.bo.EimsSpareInoutBo; |
| | | import org.dromara.eims.domain.vo.EimsSpareInoutVo; |
| | | import org.dromara.eims.domain.EimsSpareInout; |
| | | import org.dromara.eims.mapper.EimsSpareInoutMapper; |
| | | import org.dromara.eims.service.IEimsSpareInoutService; |
| | | |
| | | import java.util.List; |
| | | import java.util.Map; |
| | | import java.util.Collection; |
| | | |
| | | /** |
| | | * å¤ä»¶åºå
¥åºServiceä¸å¡å±å¤ç |
| | | * |
| | | * @author zhuguifei |
| | | * @date 2025-03-26 |
| | | */ |
| | | @RequiredArgsConstructor |
| | | @Service |
| | | public class EimsSpareInoutServiceImpl implements IEimsSpareInoutService { |
| | | |
| | | private final EimsSpareInoutMapper baseMapper; |
| | | |
| | | /** |
| | | * æ¥è¯¢å¤ä»¶åºå
¥åº |
| | | * |
| | | * @param id ä¸»é® |
| | | * @return å¤ä»¶åºå
¥åº |
| | | */ |
| | | @Override |
| | | public EimsSpareInoutVo queryById(Long id){ |
| | | return baseMapper.selectVoById(id); |
| | | } |
| | | |
| | | /** |
| | | * å页æ¥è¯¢å¤ä»¶åºå
¥åºå表 |
| | | * |
| | | * @param bo æ¥è¯¢æ¡ä»¶ |
| | | * @param pageQuery å页忰 |
| | | * @return å¤ä»¶åºå
¥åºå页å表 |
| | | */ |
| | | @Override |
| | | public TableDataInfo<EimsSpareInoutVo> queryPageList(EimsSpareInoutBo bo, PageQuery pageQuery) { |
| | | LambdaQueryWrapper<EimsSpareInout> lqw = buildQueryWrapper(bo); |
| | | Page<EimsSpareInoutVo> result = baseMapper.selectVoPage(pageQuery.build(), lqw); |
| | | return TableDataInfo.build(result); |
| | | } |
| | | |
| | | /** |
| | | * æ¥è¯¢ç¬¦åæ¡ä»¶çå¤ä»¶åºå
¥åºå表 |
| | | * |
| | | * @param bo æ¥è¯¢æ¡ä»¶ |
| | | * @return å¤ä»¶åºå
¥åºå表 |
| | | */ |
| | | @Override |
| | | public List<EimsSpareInoutVo> queryList(EimsSpareInoutBo bo) { |
| | | LambdaQueryWrapper<EimsSpareInout> lqw = buildQueryWrapper(bo); |
| | | return baseMapper.selectVoList(lqw); |
| | | } |
| | | |
| | | private LambdaQueryWrapper<EimsSpareInout> buildQueryWrapper(EimsSpareInoutBo bo) { |
| | | Map<String, Object> params = bo.getParams(); |
| | | LambdaQueryWrapper<EimsSpareInout> lqw = Wrappers.lambdaQuery(); |
| | | lqw.like(StringUtils.isNotBlank(bo.getOrderCode()), EimsSpareInout::getOrderCode, bo.getOrderCode()); |
| | | lqw.between(params.get("beginOrderTime") != null && params.get("endOrderTime") != null, |
| | | EimsSpareInout::getOrderTime ,params.get("beginOrderTime"), params.get("endOrderTime")); |
| | | lqw.eq(bo.getChargeUser() != null, EimsSpareInout::getChargeUser, bo.getChargeUser()); |
| | | lqw.eq(StringUtils.isNotBlank(bo.getType()), EimsSpareInout::getType, bo.getType()); |
| | | lqw.like(StringUtils.isNotBlank(bo.getPartnerName()), EimsSpareInout::getPartnerName, bo.getPartnerName()); |
| | | lqw.eq(StringUtils.isNotBlank(bo.getAssociatedOrder()), EimsSpareInout::getAssociatedOrder, bo.getAssociatedOrder()); |
| | | return lqw; |
| | | } |
| | | |
| | | /** |
| | | * æ°å¢å¤ä»¶åºå
¥åº |
| | | * |
| | | * @param bo å¤ä»¶åºå
¥åº |
| | | * @return æ¯å¦æ°å¢æå |
| | | */ |
| | | @Override |
| | | public Boolean insertByBo(EimsSpareInoutBo bo) { |
| | | EimsSpareInout add = MapstructUtils.convert(bo, EimsSpareInout.class); |
| | | validEntityBeforeSave(add); |
| | | boolean flag = baseMapper.insert(add) > 0; |
| | | if (flag) { |
| | | bo.setId(add.getId()); |
| | | } |
| | | return flag; |
| | | } |
| | | |
| | | /** |
| | | * ä¿®æ¹å¤ä»¶åºå
¥åº |
| | | * |
| | | * @param bo å¤ä»¶åºå
¥åº |
| | | * @return æ¯å¦ä¿®æ¹æå |
| | | */ |
| | | @Override |
| | | public Boolean updateByBo(EimsSpareInoutBo bo) { |
| | | EimsSpareInout update = MapstructUtils.convert(bo, EimsSpareInout.class); |
| | | validEntityBeforeSave(update); |
| | | return baseMapper.updateById(update) > 0; |
| | | } |
| | | |
| | | /** |
| | | * ä¿ååçæ°æ®æ ¡éª |
| | | */ |
| | | private void validEntityBeforeSave(EimsSpareInout entity){ |
| | | //TODO åä¸äºæ°æ®æ ¡éª,å¦å¯ä¸çº¦æ |
| | | } |
| | | |
| | | /** |
| | | * æ ¡éªå¹¶æ¹éå é¤å¤ä»¶åºå
¥åºä¿¡æ¯ |
| | | * |
| | | * @param ids å¾
å é¤ç主é®éå |
| | | * @param isValid æ¯å¦è¿è¡æææ§æ ¡éª |
| | | * @return æ¯å¦å 餿å |
| | | */ |
| | | @Override |
| | | public Boolean deleteWithValidByIds(Collection<Long> ids, Boolean isValid) { |
| | | if(isValid){ |
| | | //TODO åä¸äºä¸å¡ä¸çæ ¡éª,夿æ¯å¦éè¦æ ¡éª |
| | | } |
| | | return baseMapper.deleteByIds(ids) > 0; |
| | | } |
| | | } |
¶Ô±ÈÐÂÎļþ |
| | |
| | | package org.dromara.eims.service.impl; |
| | | |
| | | import org.dromara.common.core.utils.MapstructUtils; |
| | | import org.dromara.common.core.utils.StringUtils; |
| | | import org.dromara.common.mybatis.core.page.TableDataInfo; |
| | | import org.dromara.common.mybatis.core.page.PageQuery; |
| | | import com.baomidou.mybatisplus.extension.plugins.pagination.Page; |
| | | import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; |
| | | import com.baomidou.mybatisplus.core.toolkit.Wrappers; |
| | | import lombok.RequiredArgsConstructor; |
| | | import org.springframework.stereotype.Service; |
| | | import org.dromara.eims.domain.bo.EimsSpareBo; |
| | | import org.dromara.eims.domain.vo.EimsSpareVo; |
| | | import org.dromara.eims.domain.EimsSpare; |
| | | import org.dromara.eims.mapper.EimsSpareMapper; |
| | | import org.dromara.eims.service.IEimsSpareService; |
| | | |
| | | import java.util.List; |
| | | import java.util.Map; |
| | | import java.util.Collection; |
| | | |
| | | /** |
| | | * å¤ä»¶å°è´¦Serviceä¸å¡å±å¤ç |
| | | * |
| | | * @author zhuguifei |
| | | * @date 2025-03-20 |
| | | */ |
| | | @RequiredArgsConstructor |
| | | @Service |
| | | public class EimsSpareServiceImpl implements IEimsSpareService { |
| | | |
| | | private final EimsSpareMapper baseMapper; |
| | | |
| | | /** |
| | | * æ¥è¯¢å¤ä»¶å°è´¦ |
| | | * |
| | | * @param id ä¸»é® |
| | | * @return å¤ä»¶å°è´¦ |
| | | */ |
| | | @Override |
| | | public EimsSpareVo queryById(Long id){ |
| | | return baseMapper.selectVoById(id); |
| | | } |
| | | |
| | | /** |
| | | * å页æ¥è¯¢å¤ä»¶å°è´¦å表 |
| | | * |
| | | * @param bo æ¥è¯¢æ¡ä»¶ |
| | | * @param pageQuery å页忰 |
| | | * @return å¤ä»¶å°è´¦å页å表 |
| | | */ |
| | | @Override |
| | | public TableDataInfo<EimsSpareVo> queryPageList(EimsSpareBo bo, PageQuery pageQuery) { |
| | | LambdaQueryWrapper<EimsSpare> lqw = buildQueryWrapper(bo); |
| | | Page<EimsSpareVo> result = baseMapper.selectVoPage(pageQuery.build(), lqw); |
| | | return TableDataInfo.build(result); |
| | | } |
| | | |
| | | /** |
| | | * æ¥è¯¢ç¬¦åæ¡ä»¶çå¤ä»¶å°è´¦å表 |
| | | * |
| | | * @param bo æ¥è¯¢æ¡ä»¶ |
| | | * @return å¤ä»¶å°è´¦å表 |
| | | */ |
| | | @Override |
| | | public List<EimsSpareVo> queryList(EimsSpareBo bo) { |
| | | LambdaQueryWrapper<EimsSpare> lqw = buildQueryWrapper(bo); |
| | | return baseMapper.selectVoList(lqw); |
| | | } |
| | | |
| | | private LambdaQueryWrapper<EimsSpare> buildQueryWrapper(EimsSpareBo bo) { |
| | | Map<String, Object> params = bo.getParams(); |
| | | LambdaQueryWrapper<EimsSpare> lqw = Wrappers.lambdaQuery(); |
| | | lqw.eq(bo.getType() != null, EimsSpare::getType, bo.getType()); |
| | | lqw.like(StringUtils.isNotBlank(bo.getName()), EimsSpare::getName, bo.getName()); |
| | | lqw.like(StringUtils.isNotBlank(bo.getCode()), EimsSpare::getCode, bo.getCode()); |
| | | lqw.like(StringUtils.isNotBlank(bo.getModelNo()), EimsSpare::getModelNo, bo.getModelNo()); |
| | | lqw.like(StringUtils.isNotBlank(bo.getMadeIn()), EimsSpare::getMadeIn, bo.getMadeIn()); |
| | | lqw.like(StringUtils.isNotBlank(bo.getSupplier()), EimsSpare::getSupplier, bo.getSupplier()); |
| | | lqw.eq(StringUtils.isNotBlank(bo.getUnit()), EimsSpare::getUnit, bo.getUnit()); |
| | | return lqw; |
| | | } |
| | | |
| | | /** |
| | | * æ°å¢å¤ä»¶å°è´¦ |
| | | * |
| | | * @param bo å¤ä»¶å°è´¦ |
| | | * @return æ¯å¦æ°å¢æå |
| | | */ |
| | | @Override |
| | | public Boolean insertByBo(EimsSpareBo bo) { |
| | | EimsSpare add = MapstructUtils.convert(bo, EimsSpare.class); |
| | | validEntityBeforeSave(add); |
| | | boolean flag = baseMapper.insert(add) > 0; |
| | | if (flag) { |
| | | bo.setId(add.getId()); |
| | | } |
| | | return flag; |
| | | } |
| | | |
| | | /** |
| | | * ä¿®æ¹å¤ä»¶å°è´¦ |
| | | * |
| | | * @param bo å¤ä»¶å°è´¦ |
| | | * @return æ¯å¦ä¿®æ¹æå |
| | | */ |
| | | @Override |
| | | public Boolean updateByBo(EimsSpareBo bo) { |
| | | EimsSpare update = MapstructUtils.convert(bo, EimsSpare.class); |
| | | validEntityBeforeSave(update); |
| | | return baseMapper.updateById(update) > 0; |
| | | } |
| | | |
| | | /** |
| | | * ä¿ååçæ°æ®æ ¡éª |
| | | */ |
| | | private void validEntityBeforeSave(EimsSpare entity){ |
| | | //TODO åä¸äºæ°æ®æ ¡éª,å¦å¯ä¸çº¦æ |
| | | } |
| | | |
| | | /** |
| | | * æ ¡éªå¹¶æ¹éå é¤å¤ä»¶å°è´¦ä¿¡æ¯ |
| | | * |
| | | * @param ids å¾
å é¤ç主é®éå |
| | | * @param isValid æ¯å¦è¿è¡æææ§æ ¡éª |
| | | * @return æ¯å¦å 餿å |
| | | */ |
| | | @Override |
| | | public Boolean deleteWithValidByIds(Collection<Long> ids, Boolean isValid) { |
| | | if(isValid){ |
| | | //TODO åä¸äºä¸å¡ä¸çæ ¡éª,夿æ¯å¦éè¦æ ¡éª |
| | | } |
| | | return baseMapper.deleteByIds(ids) > 0; |
| | | } |
| | | } |
¶Ô±ÈÐÂÎļþ |
| | |
| | | package org.dromara.eims.service.impl; |
| | | |
| | | import cn.hutool.core.collection.CollUtil; |
| | | import cn.hutool.core.convert.Convert; |
| | | import cn.hutool.core.lang.tree.Tree; |
| | | import cn.hutool.core.util.ObjectUtil; |
| | | import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; |
| | | import com.baomidou.mybatisplus.core.toolkit.Wrappers; |
| | | import lombok.RequiredArgsConstructor; |
| | | import org.dromara.common.core.constant.UserConstants; |
| | | import org.dromara.common.core.service.SpareTypeService; |
| | | import org.dromara.common.core.utils.MapstructUtils; |
| | | import org.dromara.common.core.utils.SpringUtils; |
| | | import org.dromara.common.core.utils.StringUtils; |
| | | import org.dromara.common.core.utils.TreeBuildUtils; |
| | | import org.dromara.eims.domain.EimsEquType; |
| | | import org.dromara.eims.domain.EimsSpareType; |
| | | import org.dromara.eims.domain.bo.EimsSpareTypeBo; |
| | | import org.dromara.eims.domain.vo.EimsEquTypeVo; |
| | | import org.dromara.eims.domain.vo.EimsSpareTypeVo; |
| | | import org.dromara.eims.mapper.EimsSpareTypeMapper; |
| | | import org.dromara.eims.service.IEimsSpareTypeService; |
| | | import org.springframework.stereotype.Service; |
| | | |
| | | import java.util.ArrayList; |
| | | import java.util.Collection; |
| | | import java.util.List; |
| | | import java.util.Map; |
| | | |
| | | /** |
| | | * å¤ä»¶ç±»åServiceä¸å¡å±å¤ç |
| | | * |
| | | * @author zhuguifei |
| | | * @date 2025-03-20 |
| | | */ |
| | | @RequiredArgsConstructor |
| | | @Service |
| | | public class EimsSpareTypeServiceImpl implements IEimsSpareTypeService, SpareTypeService { |
| | | |
| | | private final EimsSpareTypeMapper baseMapper; |
| | | |
| | | /** |
| | | * æ¥è¯¢å¤ä»¶ç±»å |
| | | * |
| | | * @param id ä¸»é® |
| | | * @return å¤ä»¶ç±»å |
| | | */ |
| | | @Override |
| | | public EimsSpareTypeVo queryById(Long id){ |
| | | return baseMapper.selectVoById(id); |
| | | } |
| | | |
| | | |
| | | /** |
| | | * æ¥è¯¢ç¬¦åæ¡ä»¶çå¤ä»¶ç±»åå表 |
| | | * |
| | | * @param bo æ¥è¯¢æ¡ä»¶ |
| | | * @return å¤ä»¶ç±»åå表 |
| | | */ |
| | | @Override |
| | | public List<EimsSpareTypeVo> queryList(EimsSpareTypeBo bo) { |
| | | LambdaQueryWrapper<EimsSpareType> lqw = buildQueryWrapper(bo); |
| | | return baseMapper.selectVoList(lqw); |
| | | } |
| | | |
| | | private LambdaQueryWrapper<EimsSpareType> buildQueryWrapper(EimsSpareTypeBo bo) { |
| | | Map<String, Object> params = bo.getParams(); |
| | | LambdaQueryWrapper<EimsSpareType> lqw = Wrappers.lambdaQuery(); |
| | | lqw.like(StringUtils.isNotBlank(bo.getTypeName()), EimsSpareType::getTypeName, bo.getTypeName()); |
| | | lqw.eq(StringUtils.isNotBlank(bo.getTypeCode()), EimsSpareType::getTypeCode, bo.getTypeCode()); |
| | | lqw.eq(StringUtils.isNotBlank(bo.getMenuType()), EimsSpareType::getMenuType, bo.getMenuType()); |
| | | lqw.eq(StringUtils.isNotBlank(bo.getStatus()), EimsSpareType::getStatus, bo.getStatus()); |
| | | return lqw; |
| | | } |
| | | |
| | | /** |
| | | * æ°å¢å¤ä»¶ç±»å |
| | | * |
| | | * @param bo å¤ä»¶ç±»å |
| | | * @return æ¯å¦æ°å¢æå |
| | | */ |
| | | @Override |
| | | public Boolean insertByBo(EimsSpareTypeBo bo) { |
| | | EimsSpareType add = MapstructUtils.convert(bo, EimsSpareType.class); |
| | | validEntityBeforeSave(add); |
| | | boolean flag = baseMapper.insert(add) > 0; |
| | | if (flag) { |
| | | bo.setId(add.getId()); |
| | | } |
| | | return flag; |
| | | } |
| | | |
| | | /** |
| | | * ä¿®æ¹å¤ä»¶ç±»å |
| | | * |
| | | * @param bo å¤ä»¶ç±»å |
| | | * @return æ¯å¦ä¿®æ¹æå |
| | | */ |
| | | @Override |
| | | public Boolean updateByBo(EimsSpareTypeBo bo) { |
| | | EimsSpareType update = MapstructUtils.convert(bo, EimsSpareType.class); |
| | | validEntityBeforeSave(update); |
| | | return baseMapper.updateById(update) > 0; |
| | | } |
| | | |
| | | /** |
| | | * ä¿ååçæ°æ®æ ¡éª |
| | | */ |
| | | private void validEntityBeforeSave(EimsSpareType entity){ |
| | | //TODO åä¸äºæ°æ®æ ¡éª,å¦å¯ä¸çº¦æ |
| | | } |
| | | |
| | | /** |
| | | * æ ¡éªå¹¶æ¹éå é¤å¤ä»¶ç±»åä¿¡æ¯ |
| | | * |
| | | * @param ids å¾
å é¤ç主é®éå |
| | | * @param isValid æ¯å¦è¿è¡æææ§æ ¡éª |
| | | * @return æ¯å¦å 餿å |
| | | */ |
| | | @Override |
| | | public Boolean deleteWithValidByIds(Collection<Long> ids, Boolean isValid) { |
| | | if(isValid){ |
| | | //TODO åä¸äºä¸å¡ä¸çæ ¡éª,夿æ¯å¦éè¦æ ¡éª |
| | | } |
| | | return baseMapper.deleteByIds(ids) > 0; |
| | | } |
| | | @Override |
| | | public boolean hasChildBySpareTypeId(Long id) { |
| | | return baseMapper.exists(new LambdaQueryWrapper<EimsSpareType>().eq(EimsSpareType::getParentId, id)); |
| | | } |
| | | |
| | | @Override |
| | | public List<Tree<Long>> selectSpareTypeTreeList(EimsSpareTypeBo bo) { |
| | | // åªæ¥è¯¢æªç¦ç¨ç±»å |
| | | bo.setStatus(UserConstants.DEPT_NORMAL); |
| | | LambdaQueryWrapper<EimsSpareType> lqw = buildQueryWrapper(bo); |
| | | List<EimsSpareTypeVo> typeVoList = baseMapper.selectVoList(lqw); |
| | | |
| | | for (int i = 0; i < typeVoList.size(); i++) { |
| | | EimsSpareTypeVo typeVo = typeVoList.get(i); |
| | | if(typeVo.getParentId() == null){ |
| | | typeVoList.get(i).setParentId(0L); |
| | | } |
| | | } |
| | | //å æ ¹ç®å½ |
| | | EimsSpareTypeVo root = new EimsSpareTypeVo(); |
| | | root.setId(0L); |
| | | root.setMenuType("M"); |
| | | root.setTypeName("ææå¤ä»¶"); |
| | | root.setStatus("0"); |
| | | root.setTypeCode("0"); |
| | | root.setOrderNum(0L); |
| | | root.setIcon("#"); |
| | | typeVoList.add(root); |
| | | typeVoList.sort((o1, o2) -> o1.getId().compareTo(o2.getId())); |
| | | |
| | | |
| | | return buildEquTypeTreeSelect(typeVoList); |
| | | } |
| | | /** |
| | | * æå»ºå端æéè¦ä¸ææ ç»æ |
| | | * |
| | | * @param typeVoList ç±»åå表 |
| | | * @return 䏿æ ç»æå表 |
| | | */ |
| | | public List<Tree<Long>> buildEquTypeTreeSelect(List<EimsSpareTypeVo> typeVoList) { |
| | | if (CollUtil.isEmpty(typeVoList)) { |
| | | return CollUtil.newArrayList(); |
| | | } |
| | | return TreeBuildUtils.build(typeVoList, (dept, tree) -> |
| | | tree.setId(dept.getId()) |
| | | .setParentId(dept.getParentId()) |
| | | .setName(dept.getTypeName()) |
| | | .setWeight(dept.getOrderNum())); |
| | | } |
| | | |
| | | @Override |
| | | public String selectSpareTypeNameByIds(String spareTypeIds) { |
| | | List<String> list = new ArrayList<>(); |
| | | for (Long id : StringUtils.splitTo(spareTypeIds, Convert::toLong)) { |
| | | EimsSpareTypeVo vo = SpringUtils.getAopProxy(this).queryById(id); |
| | | if (ObjectUtil.isNotNull(vo)) { |
| | | list.add(vo.getTypeName()); |
| | | } |
| | | } |
| | | return String.join(StringUtils.SEPARATOR, list); |
| | | } |
| | | } |
¶Ô±ÈÐÂÎļþ |
| | |
| | | <?xml version="1.0" encoding="UTF-8" ?> |
| | | <!DOCTYPE mapper |
| | | PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" |
| | | "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> |
| | | <mapper namespace="org.dromara.eims.mapper.EimsFaultKnowMapper"> |
| | | <resultMap type="org.dromara.eims.domain.vo.EimsFaultKnowVo" id="EimsFaultKnowVoResult"> |
| | | </resultMap> |
| | | <select id="selectFaultKnowList" resultMap="EimsFaultKnowVoResult"> |
| | | SELECT fk.*, eu.equ_name equName, eu.asset_no assetNo, et.type_name equTypeName |
| | | FROM eims_fault_know fk |
| | | LEFT JOIN eims_equ eu ON fk.equ_id = eu.equ_id |
| | | LEFT JOIN eims_equ_type et ON eu.equ_type_id = et.equ_type_id |
| | | ${ew.getCustomSqlSegment} |
| | | </select> |
| | | </mapper> |
¶Ô±ÈÐÂÎļþ |
| | |
| | | <?xml version="1.0" encoding="UTF-8" ?> |
| | | <!DOCTYPE mapper |
| | | PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" |
| | | "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> |
| | | <mapper namespace="org.dromara.eims.mapper.EimsSpareInoutMapper"> |
| | | |
| | | </mapper> |
¶Ô±ÈÐÂÎļþ |
| | |
| | | <?xml version="1.0" encoding="UTF-8" ?> |
| | | <!DOCTYPE mapper |
| | | PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" |
| | | "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> |
| | | <mapper namespace="org.dromara.eims.mapper.EimsSpareMapper"> |
| | | |
| | | </mapper> |
¶Ô±ÈÐÂÎļþ |
| | |
| | | <?xml version="1.0" encoding="UTF-8" ?> |
| | | <!DOCTYPE mapper |
| | | PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" |
| | | "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> |
| | | <mapper namespace="org.dromara.eims.mapper.EimsSpareTypeMapper"> |
| | | |
| | | </mapper> |
| | |
| | | OssClient storage = OssFactory.instance(); |
| | | UploadResult uploadResult; |
| | | try { |
| | | uploadResult = storage.uploadSuffix(file.getBytes(), suffix); |
| | | uploadResult = storage.uploadSuffix(file.getBytes(), suffix,originalfileName); |
| | | } catch (IOException e) { |
| | | throw new ServiceException(e.getMessage()); |
| | | } |