Merge branch 'master' of http://bore.pub:10439/r/ERP_override
9个文件已添加
32个文件已修改
1个文件已删除
1 文件已重命名
| | |
| | | {field: 'buildingNumber',width:120, title: t('order.buildingNumber'),editRender: { name: 'input'},filters:[{ data: '' }],slots: { filter: 'num1_filter'}, sortable: true,filterMethod:filterChanged}, |
| | | {field: 'productId',width:140, title: t('order.productId'),filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true,filterMethod:filterChanged}, |
| | | {field: 'productName',width:300, title: t('order.product'),filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true,filterMethod:filterChanged}, |
| | | {field: 'otherColumns.S01',width:140, title: 'ç¼å·',editRender: { name: 'input'},filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true,filterMethod:filterChanged}, |
| | | {field: 'otherColumns.S01',width:140, title: t('reportingWorks.glassNumber'),editRender: { name: 'input'},filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true,filterMethod:filterChanged}, |
| | | //{field: 'grossAmount',width:160, title: t('order.grossAmount'),filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true,filterMethod:filterChanged}, |
| | | {field: 'width',width:120, title: t('order.width') ,editRender: { name: 'input'},filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true,filterMethod:filterChanged}, |
| | | {field: 'height',width:140, title: t('order.height'),editRender: { name: 'input'},filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true,filterMethod:filterChanged}, |
| | |
| | | noProductDataInTheTable:'There is no product data in the table', |
| | | tableDataExceedsMaximumLimit:'The table data exceeds the maximum limit', |
| | | range9999Dec: "Please enter a four digit integer", |
| | | quantityError: "æ°éé误ï¼è¯·å·æ°åä¿å", |
| | | dataDoesNotExist: "æ°æ®ä¸åå¨", |
| | | quantityError: "Quantity Error", |
| | | dataDoesNotExist: "Data Does Not Exist", |
| | | } |
| | | }, |
| | | product:{ |
| | |
| | | calculationAreaPrompt5:'Do you want to continue creating duplicate orders', |
| | | |
| | | pleaseCancelTheFilteringFirst:'Please cancel the selection first.', |
| | | grossAreaIsNot0:'åå¨å®é
æ»é¢ç§¯çäº0', |
| | | grossAreaIsNot0:'There is an actual total area equal to0', |
| | | } |
| | | |
| | | }, |
| | |
| | | workOrder:{ |
| | | page:{ |
| | | selectWorkOrder:'Work order', |
| | | addWorkOrder:'转ç产订å' |
| | | addWorkOrder:'Forward production order' |
| | | }, |
| | | productionId:'Production Order Number', |
| | | convert:'Convert', |
| | |
| | | productionScheduling:'Production Scheduling', |
| | | selectPrintProject:'Engineering Printing', |
| | | selectPrintFlowCard:"print", |
| | | splittingDetails:"åæ¶æ¥è¯¢", |
| | | addProcessCard:"åæ¶æ°å¢", |
| | | printFlowCard:"æµç¨å¡æå°", |
| | | selectDetailProcessCard:"æµç¨å¡æç»æ¥è¯¢" |
| | | splittingDetails:"Frame query", |
| | | addProcessCard:"Split-frame addition", |
| | | printFlowCard:"Process card printing", |
| | | selectDetailProcessCard:"Process card details query" |
| | | }, |
| | | processId:'Process Card Number', |
| | | founder:'Divider', |
| | |
| | | weight:'Weight', |
| | | selectedQuantity:'Select Quantity', |
| | | establishProcessCards:'Add', |
| | | createBySequenceNumber:'By Sequence Number', |
| | | return:'Return', |
| | | ProductionSchedulingOk:'Scheduled Production', |
| | | ProductionSchedulingNo:'Unscheduled Production', |
| | |
| | | landingSequence:'Landing sequence', |
| | | |
| | | labelStyle:'Label Style', |
| | | detailPrinting:'Detail Printing', |
| | | detailsPrintedSeparately:'Details Printed Separately', |
| | | customLabelPrinting:'Custom label printing', |
| | | labelPrinting:'Lable Printing', |
| | | sortingSuccessful:'Sorting successful', |
| | |
| | | mergePrinting:'Merge printing', |
| | | printStatus:'Print times', |
| | | labelPrinting2:'Label printing 2', |
| | | finishedProductPrinting2:'Finished Product Printing2', |
| | | editablePrinting:'Editable Printing', |
| | | invertSelection:'Invert Selection', |
| | | sortSummary:'Sort Summary', |
| | | addAutomatically:'Auto fill', |
| | | selectFill:'Selected fill', |
| | | engineeringPrinting:'Engineering Printing', |
| | | pleaseSelectProject:'Please Select Project', |
| | | |
| | | mergeState:'åå¹¶ç¶æ', |
| | | |
| | | mergeState:'Merge State', |
| | | merge:'Merge', |
| | | printQuantity:'Print Quantity', |
| | | printWarn1:'The print quantity cannot be greater than the order quantity' |
| | | }, |
| | | reportingWorks:{ |
| | | page:{ |
| | |
| | | thisCompletedQuantity:'This Completed Quantity', |
| | | thisWornQuantity:'This Worn Quantity', |
| | | passAudit:'Pass The Audit', |
| | | |
| | | patchCondition:'Patch Condition', |
| | | |
| | | selectResponsibleTeam:'Please select a responsible team', |
| | | selectWorkReportingTeam:'Please select a responsible team', |
| | |
| | | pleaseNumber7:'The quantity cannot be greater than the quantity of the previous process', |
| | | pleaseNumber8:'Please enter serial number', |
| | | pleaseNumber9:'Correct number of completions or breakdowns', |
| | | pleaseNumber10:'The number of completions cannot be greater than the number of process cards', |
| | | |
| | | }, |
| | | productStock:{ |
| | | page:{ |
| | | productStockList:"Stock Inquiry", |
| | | createProductStock:"Finished product Into Stock", |
| | | storageRecord:"åºå
¥åºè®°å½", |
| | | storageRecord:"Entry and exit records", |
| | | orderAllocation:'Order Allocation', |
| | | finishedProductOut:'Finished Product Out Of Stock', |
| | | finishedGoodsIssue:'Finished Goods Delivery', |
| | |
| | | typeClaim:'Take out type', |
| | | pleaseEnterTheBoxNumber:'Please enter the box number', |
| | | |
| | | boxNumber:'ç®±å·', |
| | | msg1:'åè´§åå·²åºåºè¯·å·æ°çé¢', |
| | | msg2:'åè´§ååºåæ°ä¸åå¨', |
| | | msg3:'å
¥åºæ°éä¸è½è¶
è¿è®¢åæ»æ°' |
| | | boxNumber:'Case number', |
| | | msg1:'The invoice is out of the warehouse. Please refresh the interface', |
| | | msg2:'Invoice inventory number does not exist', |
| | | msg3:'The quantity of incoming orders shall not exceed the total number of orders' |
| | | }, |
| | | customer:{ |
| | | page:{ |
| | |
| | | freightPrice:'Freight Price', |
| | | freightQuantity:'Freight Quantity', |
| | | freight:'Freight Money', |
| | | pleaseMsg1:'订ååå¨å
¶ä»éé¢å价没æå¡«å', |
| | | pleaseMsg1:'There are other amounts in the order and the unit price is not filled in', |
| | | |
| | | }, |
| | | replenish:{ |
| | |
| | | reworkProcess:'Rework Process', |
| | | reworkType:'Rework Type', |
| | | reworkArea:'Rework Area', |
| | | responsibilityInformation:'responsibility Information', |
| | | PleaseSelectAReworkTeam:'Please select a rework team', |
| | | TheReworkQuantityCannotBeGreaterThanTheSecondBreakQuantity:'The rework quantity cannot be greater than the second break quantity', |
| | | reworkQuantityCannotBeEmptyOr0:'Rework quantity cannot be empty or 0', |
| | |
| | | roleList:'Role Home', |
| | | }, |
| | | id:'ID', |
| | | characterHomepage:'è§è²é¦é¡µ', |
| | | characterHomepage:'Role Home', |
| | | role:'Character', |
| | | roleAdd:'Role addition', |
| | | menu:'Menu', |
| | |
| | | ConfirmPasswordCannotBeEmpty:'Confirm that the password cannot be empty', |
| | | TheTwoPasswordsAreNotTheSame:'Two different passwords', |
| | | OldPasswordError:'Old password error', |
| | | roleSelection:'Role Selection', |
| | | |
| | | userName:'User name', |
| | | changeUserName:'Modifying a user name', |
| | |
| | | }, |
| | | machine:{ |
| | | page:{ |
| | | selectMachine:'设å¤ç®¡ç', |
| | | selectMachine:'Equipment management', |
| | | addMachine:"Device addition", |
| | | maintenanceAndRepair:"Maintenance and repair", |
| | | addMaintenanceAndRepair:"Maintenance and repair added" |
| | |
| | | films :'Coating Type', |
| | | pleaseEnterData :'Please enter data', |
| | | pleaseEnter :'Please enter', |
| | | msg1 :'åºåå·²å卿¤ç©æä¸è½å é¤', |
| | | unit :'åä½', |
| | | msg1 :'This material is already in stock and cannot be deleted', |
| | | unit :'unit', |
| | | }, |
| | | ingredientsStock:{ |
| | | page:{ |
| | | selectIngredientsStock:"Material inventory", |
| | | materialOutbound:"Material delivery", |
| | | returnToStorage:"Return to the warehouse", |
| | | selectSurplusMaterials:"ä½æç®¡ç", |
| | | createOutbound:'ç©æåºåºæ°å¢', |
| | | selectSurplusMaterials:"Waste material management", |
| | | createOutbound:'New material delivery', |
| | | returnToStorageCreate:'Returned warehouse addition' |
| | | }, |
| | | materialName :'Material name', |
| | |
| | | materialReturnType :'Material return type', |
| | | createTime :'Returned warehouse date', |
| | | |
| | | surplusMaterialManagement :'ä½æç®¡ç', |
| | | additionOfSurplusMaterials :'使æ°å¢', |
| | | excessMaterialOutflow :'使åºåº', |
| | | pleaseSelectTheTypeOfReturnToStock:'è¯·éæ©è¿åºç±»å' |
| | | surplusMaterialManagement :'Waste material management', |
| | | additionOfSurplusMaterials :'Surplus addition', |
| | | excessMaterialOutflow :'Residual materials out of storage', |
| | | pleaseSelectTheTypeOfReturnToStock:'Please select a return type' |
| | | }, |
| | | warehouseBasicData:{ |
| | | page:{ |
| | |
| | | stockReport:{ |
| | | page:{ |
| | | warehouseReport:"Warehouse Basic Data", |
| | | finishedProductReport:"æåæ¥è¡¨", |
| | | materialReport:"ç©ææ¥è¡¨", |
| | | finishedProductReport:"Finished product report", |
| | | materialReport:"Material statement", |
| | | |
| | | }, |
| | | finishedProductInventoryReport:"æåå
¥åºæ¥è¡¨", |
| | | finishedProductOutboundReport:"æååºåºæ¥è¡¨", |
| | | finishedProductTransferReport:"æåè°æ¨æ¥è¡¨", |
| | | finishedProductDeliveryReport:"æåé¢åºæ¥è¡¨", |
| | | materialAdditionReport:"ç©ææ°å¢æ¥è¡¨", |
| | | materialOutboundReport:"ç©æåºåºæ¥è¡¨", |
| | | materialReturnReport:"ç©æè¿åºæ¥è¡¨", |
| | | finishedProductInventoryReport:"Finished product receipt report", |
| | | finishedProductOutboundReport:"Finished product delivery report", |
| | | finishedProductTransferReport:"Finished product transfer report", |
| | | finishedProductDeliveryReport:"Finished product take-out report", |
| | | materialAdditionReport:"Material addition report", |
| | | materialOutboundReport:"Material delivery report", |
| | | materialReturnReport:"Material return report", |
| | | }, |
| | | components:{ |
| | | addNewSignature :'Add label name', |
| | |
| | | glassPrice:'Glass Price' |
| | | }, |
| | | glassPrice:{ |
| | | glassPriceComputed:'ç»çæ¥ä»·', |
| | | priceSet:'ä»·æ ¼è®¾ç½®', |
| | | priceList:'ä»·æ ¼å表', |
| | | glassPriceComputed:'Glass quotation', |
| | | priceSet:'Price setting', |
| | | priceList:'Price list', |
| | | msg:{ |
| | | error1:'è¯·éæ©å
¨é¨åæ°', |
| | | error2:'æ¤è系已ç»åå¨ï¼è¯·éæ°éæ©', |
| | | success:'æ°æ®ä¿åæå', |
| | | addProduce:'请å
æ·»å 产å' |
| | | error1:'Please select all parameters', |
| | | error2:'This membrane system already exists, please re-select', |
| | | success:'Data saved successfully', |
| | | addProduce:'Please add the product first' |
| | | }, |
| | | glass:'ç»ç', |
| | | interlayer:'夹è¶', |
| | | hollow:'ä¸ç©º', |
| | | process:'å·¥èº', |
| | | addProduce:'éæ©äº§å', |
| | | reorder:'转订å' |
| | | glass:'glass', |
| | | interlayer:'gum', |
| | | hollow:'hollow', |
| | | process:'process', |
| | | addProduce:'Select product', |
| | | reorder:'reorder' |
| | | } |
| | | |
| | | |
| | |
| | | weight:'ÐеÑ', |
| | | selectedQuantity:'ÐÑбеÑиÑе колиÑеÑÑво', |
| | | establishProcessCards:'ÐаÑÑа пÑоÑеÑÑа ÑозданиÑ', |
| | | createBySequenceNumber:'æåºå·å建', |
| | | return:'ÐозвÑаÑение', |
| | | ProductionSchedulingOk:'ÐÑганизовано пÑоизводÑÑво', |
| | | ProductionSchedulingNo:'ÐеоÑганизованное пÑоизводÑÑво', |
| | |
| | | landingSequence:'Landing sequence', |
| | | |
| | | labelStyle:'СÑÐ¸Ð»Ñ Ð¼ÐµÑки', |
| | | detailPrinting:'æç»æå°', |
| | | detailsPrintedSeparately:'æç»åæ¶æå°', |
| | | customLabelPrinting:'ÐаÑÑÑойка пеÑаÑи вкладок', |
| | | labelPrinting:'æ ç¾æå°', |
| | | sortingSuccessful:'СоÑÑиÑоваÑÑ ÑÑпеÑно', |
| | |
| | | mergePrinting:'СлиÑние пеÑаÑи', |
| | | printStatus:'æå°æ¬¡æ°', |
| | | labelPrinting2:'æ ç¾æå°2', |
| | | finishedProductPrinting2:'æåæå°2', |
| | | editablePrinting:'å¯ç¼è¾æå°', |
| | | invertSelection:'åé', |
| | | sortSummary:'æåºæ±æ»', |
| | | addAutomatically:'èªå¨å¡«å
', |
| | | selectFill:'èªå¨å¡«å
', |
| | | engineeringPrinting:'ÐнженеÑÐ½Ð°Ñ Ð¿ÐµÑаÑÑ', |
| | | |
| | | pleaseSelectProject:'è¯·éæ©å·¥ç¨', |
| | | mergeState:'åå¹¶ç¶æ', |
| | | merge:'åå¹¶', |
| | | printQuantity:'æå°æ°', |
| | | printWarn1:'æå°æ°éä¸è½å¤§äºè®¢åæ°é' |
| | | }, |
| | | reportingWorks:{ |
| | | page:{ |
| | |
| | | thisCompletedQuantity:'ÐÑо пÑоÑеÑÑ Ð·Ð°Ð²ÐµÑÑена.', |
| | | thisWornQuantity:'ÐÑо пÑоÑеÑÑ Ð¿Ð¾Ð²Ñеждение ', |
| | | passAudit:'ÐÑовеÑка пÑоÑла', |
| | | |
| | | patchCondition:'è¡¥çç¶æ', |
| | | |
| | | selectResponsibleTeam:'ÐожалÑйÑÑа, вÑбеÑиÑе гÑÑÐ¿Ð¿Ñ Ð¾ÑвеÑÑÑвенноÑÑи.', |
| | | selectWorkReportingTeam:'ÐожалÑйÑÑа, вÑбеÑиÑе гÑÑÐ¿Ð¿Ñ Ð¾ÑвеÑÑÑвенноÑÑи.', |
| | |
| | | pleaseNumber7:'*колиÑеÑÑво не Ð¼Ð¾Ð¶ÐµÑ Ð¿ÑевÑÑаÑÑ ÐºÐ¾Ð»Ð¸ÑеÑÑво пÑоÑеÑÑов.', |
| | | pleaseNumber8:'ÐведиÑе ÑеÑийнÑй номеÑ.', |
| | | pleaseNumber9:'ÐÑавилÑное завеÑÑение и колиÑеÑÑво повÑежденнÑÑ
', |
| | | pleaseNumber10:'å®å·¥æ°ä¸è½å¤§äºæµç¨å¡æ°é', |
| | | }, |
| | | productStock:{ |
| | | page:{ |
| | |
| | | reworkProcess:'ÐеÑеÑабоÑка', |
| | | reworkType:'Тип пеÑеÑабоÑки', |
| | | reworkArea:'ÐлоÑÐ°Ð´Ñ Ð¿ÐµÑеÑабоÑки', |
| | | responsibilityInformation:'责任信æ¯', |
| | | PleaseSelectAReworkTeam:'ÐожалÑйÑÑа, вÑбеÑиÑе ÑабоÑÑÑ Ð³ÑÑппÑ.', |
| | | TheReworkQuantityCannotBeGreaterThanTheSecondBreakQuantity:'ÐеÑеÑабоÑка не должна пÑевÑÑаÑÑ ÐºÐ¾Ð»Ð¸ÑеÑÑво повÑеждений.', |
| | | reworkQuantityCannotBeEmptyOr0:'ÐеÑеÑабоÑка не Ð¼Ð¾Ð¶ÐµÑ Ð±ÑÑÑ Ð¿ÑÑÑой или нÑлевой.', |
| | |
| | | roleList:'ÐеÑÑонажи ÐаÑалÑÐ½Ð°Ñ ÑÑÑаниÑа', |
| | | }, |
| | | id:'ID', |
| | | characterHomepage:'è§è²é¦é¡µ', |
| | | role:'РолÑ', |
| | | roleAdd:'УвелиÑение Ñоли', |
| | | menu:'ÐенÑ', |
| | |
| | | ConfirmPasswordCannotBeEmpty:'ÐаÑÐ¾Ð»Ñ Ð¿Ð¾Ð´ÑвеÑÐ¶Ð´ÐµÐ½Ð¸Ñ Ð½Ðµ Ð¼Ð¾Ð¶ÐµÑ Ð±ÑÑÑ Ð¿ÑÑÑÑм', |
| | | TheTwoPasswordsAreNotTheSame:'Ðва ÑазнÑÑ
паÑолÑ.', |
| | | OldPasswordError:'СÑаÑÐ°Ñ Ð¾Ñибка паÑолÑ', |
| | | roleSelection:'è§è²éæ©', |
| | | |
| | | userName:'ç¨æ·åç§°', |
| | | changeUserName:'ä¿®æ¹ç¨æ·åç§°', |
| | |
| | | weight:'éé', |
| | | selectedQuantity:'é䏿°é', |
| | | establishProcessCards:'å»ºç«æµç¨å¡', |
| | | createBySequenceNumber:'æåºå·å建', |
| | | return:'è¿å', |
| | | ProductionSchedulingOk:'å·²æäº§', |
| | | ProductionSchedulingNo:'æªæäº§', |
| | |
| | | landingSequence:'è½æ¶é¡ºåº', |
| | | |
| | | labelStyle:'æ ç¾æ ·å¼', |
| | | detailPrinting:'æç»æå°', |
| | | detailsPrintedSeparately:'æç»åæ¶æå°', |
| | | customLabelPrinting:'èªå®ä¹æ ç¾æå°', |
| | | labelPrinting:'æ ç¾æå°', |
| | | sortingSuccessful:'æåºæå', |
| | |
| | | mergePrinting:'åå¹¶æå°', |
| | | printStatus:'æå°æ¬¡æ°', |
| | | labelPrinting2:'æ ç¾æå°2', |
| | | finishedProductPrinting2:'æåæå°2', |
| | | editablePrinting:'å¯ç¼è¾æå°', |
| | | invertSelection:'åé', |
| | | sortSummary:'æåºæ±æ»', |
| | | addAutomatically:'èªå¨å¡«å
', |
| | | selectFill:'éä¸å¡«å
', |
| | | engineeringPrinting:'å·¥ç¨æå°', |
| | | |
| | | pleaseSelectProject:'è¯·éæ©å·¥ç¨', |
| | | mergeState:'åå¹¶ç¶æ', |
| | | merge:'åå¹¶', |
| | | printQuantity:'æå°æ°', |
| | | printWarn1:'æå°æ°éä¸è½å¤§äºè®¢åæ°é' |
| | | |
| | | }, |
| | | reportingWorks:{ |
| | | page:{ |
| | |
| | | thisCompletedQuantity:'æ¬å·¥åºå®å·¥', |
| | | thisWornQuantity:'æ¬å·¥åºæ¬¡ç ´', |
| | | passAudit:'å®¡æ ¸éè¿', |
| | | patchCondition:'è¡¥çç¶æ', |
| | | |
| | | |
| | | selectResponsibleTeam:'è¯·éæ©è´£ä»»çç»', |
| | |
| | | pleaseNumber7:'çæ°éä¸è½å¤§äºä¸å·¥åºæ°é', |
| | | pleaseNumber8:'请è¾å
¥åºå·', |
| | | pleaseNumber9:'æ£ç¡®çå®å·¥ææ¬¡ç ´æ°é', |
| | | pleaseNumber10:'å®å·¥æ°ä¸è½å¤§äºæµç¨å¡æ°é', |
| | | }, |
| | | productStock:{ |
| | | page:{ |
| | |
| | | reworkProcess:'è¿å·¥å·¥åº', |
| | | reworkType:'è¿å·¥ç±»å', |
| | | reworkArea:'è¿å·¥é¢ç§¯', |
| | | responsibilityInformation:'责任信æ¯', |
| | | PleaseSelectAReworkTeam:'è¯·éæ©è¿å·¥çç»', |
| | | TheReworkQuantityCannotBeGreaterThanTheSecondBreakQuantity:'è¿å·¥æ°éä¸è½å¤§äºæ¬¡ç ´æ°é', |
| | | reworkQuantityCannotBeEmptyOr0:'è¿å·¥æ°éä¸è½ä¸ºç©ºæè
æ¯0', |
| | |
| | | ConfirmPasswordCannotBeEmpty:'确认å¯ç ä¸è½ä¸ºç©º', |
| | | TheTwoPasswordsAreNotTheSame:'两次å¯ç ä¸ç¸å', |
| | | OldPasswordError:'æ§å¯ç é误', |
| | | roleSelection:'è§è²éæ©', |
| | | |
| | | userName:'ç¨æ·åç§°', |
| | | changeUserName:'ä¿®æ¹ç¨æ·åç§°', |
| File was renamed from north-glass-erp/northglass-erp/src/stores/sd/companySet/½ð»ªÀÖ¶¯.js |
| | |
| | | export default defineStore('companyInfo', { |
| | | |
| | | state: () => ({ |
| | | companyName: 'éåå¸ä¹å¨æºè½ç§ææéå
¬å¸', |
| | | companyName: 'éåç¦å天æç»çæéå
¬å¸', |
| | | address:'æµæ±çéåå¸éä¸åºæ¹å®
éå·¥ä¸åè½åºé¹¤å²©è¡28å·2å·', |
| | | telephone:'189 3119 1362 èµåé¿', |
| | | fax:'', |
| | |
| | | </span> |
| | | <template #dropdown> |
| | | <el-dropdown-menu> |
| | | <el-dropdown-item command="/main/stockReport/finishedProductInventoryReport" >{{$t('æåå
¥åºæ¥è¡¨')}}</el-dropdown-item> |
| | | <el-dropdown-item command="/main/stockReport/finishedProductOutboundReport" >{{ $t('æååºåºæ¥è¡¨') }}</el-dropdown-item> |
| | | <el-dropdown-item command="/main/stockReport/finishedProductTransferReport" >{{ $t('æåè°æ¨æ¥è¡¨') }}</el-dropdown-item> |
| | | <el-dropdown-item command="/main/stockReport/finishedProductDeliveryReport" >{{ $t('æåé¢åºæ¥è¡¨') }}</el-dropdown-item> |
| | | <el-dropdown-item command="/main/stockReport/finishedProductInventoryReport" >{{$t('stockReport.finishedProductInventoryReport')}}</el-dropdown-item> |
| | | <el-dropdown-item command="/main/stockReport/finishedProductOutboundReport" >{{ $t('stockReport.finishedProductOutboundReport') }}</el-dropdown-item> |
| | | <el-dropdown-item command="/main/stockReport/finishedProductTransferReport" >{{ $t('stockReport.finishedProductTransferReport') }}</el-dropdown-item> |
| | | <el-dropdown-item command="/main/stockReport/finishedProductDeliveryReport" >{{ $t('stockReport.finishedProductDeliveryReport') }}</el-dropdown-item> |
| | | </el-dropdown-menu> |
| | | </template> |
| | | </el-dropdown> |
| | |
| | | </span> |
| | | <template #dropdown> |
| | | <el-dropdown-menu> |
| | | <el-dropdown-item command="/main/stockReport/materialAdditionReport" >{{$t('ç©ææ°å¢æ¥è¡¨')}}</el-dropdown-item> |
| | | <el-dropdown-item command="/main/stockReport/materialOutboundReport" >{{ $t('ç©æåºåºæ¥è¡¨') }}</el-dropdown-item> |
| | | <el-dropdown-item command="/main/stockReport/materialReturnReport" >{{ $t('ç©æè¿åºæ¥è¡¨') }}</el-dropdown-item> |
| | | <el-dropdown-item command="/main/stockReport/materialAdditionReport" >{{$t('stockReport.materialAdditionReport')}}</el-dropdown-item> |
| | | <el-dropdown-item command="/main/stockReport/materialOutboundReport" >{{ $t('stockReport.materialOutboundReport') }}</el-dropdown-item> |
| | | <el-dropdown-item command="/main/stockReport/materialReturnReport" >{{ $t('stockReport.materialReturnReport') }}</el-dropdown-item> |
| | | </el-dropdown-menu> |
| | | </template> |
| | | </el-dropdown> |
| New file |
| | |
| | | <script setup> |
| | | import ComputeCard from "@/views/pp/glassOptimize/page/ComputeCard.vue"; |
| | | import ComputeDetail from "@/views/pp/glassOptimize/page/ComputeDetail.vue"; |
| | | import Compute from "@/views/pp/glassOptimize/page/Compute.vue"; |
| | | |
| | | </script> |
| | | |
| | | <template> |
| | | <div style="width: 100%; height: 100%;"> |
| | | |
| | | <div id="compute"> |
| | | <compute/> |
| | | </div> |
| | | |
| | | <div id="computeCard"> |
| | | <compute-card/> |
| | | </div> |
| | | |
| | | <div id="computeDetail"> |
| | | <compute-detail/> |
| | | </div> |
| | | |
| | | </div> |
| | | </template> |
| | | |
| | | <style scoped> |
| | | #compute{ |
| | | float: left; |
| | | margin-top: -30px; |
| | | margin-bottom: 2%; |
| | | width: 100%; |
| | | height: 40%; |
| | | } |
| | | #computeCard{ |
| | | margin-top: 90px; |
| | | width: 64%; |
| | | height: 40%; |
| | | float: left; |
| | | } |
| | | #computeDetail{ |
| | | margin-top: 90px; |
| | | margin-left: 1%; |
| | | float: left; |
| | | width: 35%; |
| | | height: 40%; |
| | | } |
| | | </style> |
| | |
| | | <script setup> |
| | | import GlassInventory from "@/views/pp/glassOptimize/page/GlassInventory.vue" |
| | | import ProjectDetail from "@/views/pp/glassOptimize/page/ProjectDetail.vue" |
| | | import ProjectCreate from "@/views/pp/glassOptimize/page/ProjectCreate.vue"; |
| | | import ProjectCreate from "@/views/pp/glassOptimize/ProjectCreate.vue" |
| | | import GlassComputed from "@/views/pp/glassOptimize/GlassComputed.vue"; |
| | | import ProjectMange from "@/views/pp/glassOptimize/ProjectMange.vue"; |
| | | |
| | | import {ref} from "vue"; |
| | | let dialogVisible = ref(false) |
| | | let detailPage = ref(0) |
| | | const changeDialog = (value) => { |
| | | switch (value) { |
| | | case 1: |
| | | dialogVisible.value = true |
| | | break |
| | | case 2: |
| | | //dialogVisible.value = false |
| | | break |
| | | } |
| | | dialogVisible.value = true |
| | | detailPage.value = value |
| | | } |
| | | </script> |
| | | |
| | |
| | | |
| | | <el-dialog |
| | | v-model="dialogVisible" |
| | | title="å·¥ç¨å建" |
| | | :title="detailPage ===1? 'å建工ç¨' : detailPage ===2? 'å·¥ç¨ç®¡ç' : detailPage ===3? '模æè®¡ç®':''" |
| | | destroy-on-close |
| | | style="width: 90%;height:90%;margin-top: 3vh" |
| | | > |
| | | <project-create/> |
| | | <project-create v-if="detailPage===1" /> |
| | | <project-mange v-if="detailPage===2" /> |
| | | <glass-computed v-if="detailPage===3" /> |
| | | </el-dialog> |
| | | |
| | | </div> |
| New file |
| | |
| | | <script setup> |
| | | import ProcessCard from "@/views/pp/glassOptimize/page/ProcessCard.vue"; |
| | | import ProcessCardDetail from "@/views/pp/glassOptimize/page/ProcessCardDetail.vue"; |
| | | import ProjectList from "@/views/pp/glassOptimize/page/ProjectList.vue"; |
| | | |
| | | import {ref} from "vue"; |
| | | import {useI18n} from "vue-i18n"; |
| | | |
| | | |
| | | |
| | | </script> |
| | | |
| | | <template> |
| | | <div style="width: 100%; height: 100%;"> |
| | | |
| | | <div id="processCard"> |
| | | <process-card/> |
| | | </div> |
| | | |
| | | <div id="processCard-detail"> |
| | | <process-card-detail/> |
| | | </div> |
| | | |
| | | <div id="project-list"> |
| | | <project-list/> |
| | | </div> |
| | | |
| | | </div> |
| | | </template> |
| | | |
| | | |
| | | <style scoped> |
| | | #processCard{ |
| | | width: 64%; |
| | | height: 55%; |
| | | float: left; |
| | | } |
| | | #processCard-detail{ |
| | | margin-left: 1%; |
| | | float: left; |
| | | width: 35%; |
| | | height: 55%; |
| | | } |
| | | #project-list{ |
| | | float: left; |
| | | margin-top: 2%; |
| | | width: 100%; |
| | | height: 30%; |
| | | } |
| | | </style> |
| New file |
| | |
| | | <script setup> |
| | | import {reactive, ref} from "vue"; |
| | | import {useI18n} from "vue-i18n"; |
| | | import {Search} from "@element-plus/icons-vue"; |
| | | import {ElDatePicker} from "element-plus"; |
| | | import useOrderInfoStore from "@/stores/sd/order/orderInfo"; |
| | | |
| | | const { t } = useI18n() |
| | | |
| | | const xGrid = ref() |
| | | const gridOptions = reactive({ |
| | | height:'100%', |
| | | loading: false, |
| | | border: "full",//è¡¨æ ¼å è¾¹æ¡ |
| | | keepSource: true,//ä¿ææºæ°æ® |
| | | align: 'center',//æåå±
ä¸ |
| | | stripe:true,//æé©¬çº¹ |
| | | rowConfig: {isCurrent: true, isHover: true,height: 30, useKey: true},//é¼ æ ç§»å¨æéæ©é«äº® |
| | | id: 'ProjectMange', |
| | | scrollX:{enabled: true}, |
| | | scrollY:{ enabled: true ,gt:0},//å¼å¯èææ»å¨ |
| | | showOverflow:true, |
| | | columnConfig: { |
| | | resizable: true, |
| | | useKey: true |
| | | }, |
| | | filterConfig: { //çéé
置项 |
| | | remote: true |
| | | }, |
| | | customConfig: { |
| | | storage: true |
| | | }, |
| | | editConfig: { |
| | | trigger: 'click', |
| | | mode: 'row', |
| | | showStatus: true |
| | | }, |
| | | /*formConfig: { |
| | | data: { |
| | | width: '', |
| | | height: '', |
| | | quantity: '' |
| | | }, |
| | | items: [ |
| | | { field: 'width', title: t('order.width')+':', itemRender: { name: 'VxeInput' } }, |
| | | { field: 'height', title: t('order.height')+':', itemRender: { name: 'VxeInput' } }, |
| | | { field: 'quantity', title: t('order.quantity')+':', itemRender: { name: 'VxeInput' } }, |
| | | { |
| | | itemRender: { |
| | | name: 'VxeButtonGroup', |
| | | options: [ |
| | | { type: 'submit', content: t('craft.sure'), status: 'primary' }, |
| | | { type: 'reset', content: t('product.msg.reset') } |
| | | ] |
| | | } |
| | | } |
| | | ] |
| | | },*/ |
| | | columns:[ |
| | | {type:'expand',fixed:"left",slots: { content:'content' },width: 50}, |
| | | {field: 'id', width: 100,title: 'å·¥ç¨å·',}, |
| | | {field: '',width: 50,title: 'åç§°',}, |
| | | {field: 'id', width: 50,title: 'èç³»',}, |
| | | {field: 'id', width: 50,title: 'å度',}, |
| | | {field: 'id', width: 50,title: 'ç±»å',}, |
| | | {field: 'id', width: 50,title: 'ç¶æ',}, |
| | | {field: 'id', width: 50,title: 'æ°é',}, |
| | | {field: 'id', width: 50,title: 'é¢ç§¯',}, |
| | | {field: 'id', width: 100,title: 'æµç¨å¡æ°é',}, |
| | | {field: 'id', width: 100,title: 'åçä½¿ç¨æ°',}, |
| | | {field: 'id', width: 70,title: 'æµç¨å¡',}, |
| | | {field: 'id', width: 100,title: 'é¢åè£
è½½ç',}, |
| | | {field: '',width: 100,title: 'é¢åçæ°',}, |
| | | {field: '',width: 100,title: 'å¹³ååè£ç',}, |
| | | {field: '',width: 100,title: 'ææåè£ç',}, |
| | | {field: '',width: 100,title: 'å°¾çåè£ç',}, |
| | | {field: '',width: 100,title: 'åæä½¿ç¨æ°',}, |
| | | {field: '',width: 100,title: 'å¹³ååè£ç',}, |
| | | {field: '',width: 50,title: '夿³¨',}, |
| | | {field: '',width: 100,title: 'å建人',}, |
| | | {field: '',width: 100,title: 'å建æ¶é´',}, |
| | | {field: '',width: 100,title: 'ä¿®æ¹æ¶é´',}, |
| | | ],//è¡¨å¤´åæ° |
| | | data:null,//è¡¨æ ¼æ°æ® |
| | | toolbarConfig: { |
| | | buttons: [], |
| | | slots:{ |
| | | buttons: "toolbar_buttons" |
| | | }, |
| | | }, |
| | | |
| | | }) |
| | | const oderInfo = useOrderInfoStore() |
| | | |
| | | //å®ä¹å·¥ç¨ç¶æ |
| | | const optionVal = ref('0') |
| | | const options = [ |
| | | { |
| | | value: '0', |
| | | label: 'å
¨é¨', |
| | | }, |
| | | { |
| | | value: '1', |
| | | label: '1', |
| | | }, |
| | | { |
| | | value: '2', |
| | | label: '2', |
| | | }, |
| | | { |
| | | value: '3', |
| | | label: '10', |
| | | }, |
| | | { |
| | | value: '4', |
| | | label: '20', |
| | | }, |
| | | { |
| | | value: '5', |
| | | label: '100', |
| | | }, |
| | | { |
| | | value: '6', |
| | | label: '200', |
| | | }, |
| | | ] |
| | | |
| | | |
| | | </script> |
| | | |
| | | <template> |
| | | <div id="mange"> |
| | | <div id="select"> |
| | | <span>ä¼åæ¥æ</span> |
| | | <el-date-picker |
| | | style="margin-left:10px; margin-top: -5px; " |
| | | v-model="oderInfo.mangeDate" |
| | | type="daterange" |
| | | format="YYYY/MM/DD" |
| | | value-format="YYYY-MM-DD" |
| | | :start-placeholder="$t('basicData.startDate')" |
| | | :end-placeholder="$t('basicData.endDate')" |
| | | :default-time="defaultTime" |
| | | |
| | | /> |
| | | <el-select |
| | | style="margin-left:10px; margin-top: -5px; " |
| | | :default-first-option="true" |
| | | ref="getSelect" |
| | | v-model="optionVal" |
| | | class="m-2" |
| | | @change="getWorkOrder" |
| | | > |
| | | |
| | | <el-option |
| | | v-for="item in options" |
| | | :key="item.value" |
| | | :label="item.label" |
| | | :value="item.value" |
| | | /> |
| | | </el-select> |
| | | |
| | | <el-button |
| | | style="margin-left:10px;margin-top: -5px" |
| | | @click="searchByDateRange" |
| | | type="primary" :icon="Search"> |
| | | æ¥è¯¢ |
| | | </el-button> |
| | | </div> |
| | | |
| | | <vxe-grid |
| | | @filter-change="filterChanged" |
| | | height="100%" |
| | | class="mytable-scrollbar" |
| | | ref="xGrid" |
| | | v-bind="gridOptions" |
| | | v-on="gridEvents" |
| | | > |
| | | <template #num2_filter="{ column, $panel }"> |
| | | <div> |
| | | <div v-for="(option, index) in column.filters" :key="index"> |
| | | <vxe-select v-model="option.data" :placeholder="$t('processCard.pleaseSelect')" @change="changeFilterEvent($event, option, $panel)"> |
| | | <vxe-option value="0" :label="$t('basicData.unchecked')"></vxe-option> |
| | | <vxe-option value="1" :label="$t('basicData.selected')"></vxe-option> |
| | | </vxe-select> |
| | | </div> |
| | | </div> |
| | | </template> |
| | | |
| | | <template #num1_filter="{ column, $panel }"> |
| | | <div> |
| | | <div v-for="(option, index) in column.filters" :key="index"> |
| | | <input |
| | | type="type" |
| | | v-model="option.data" |
| | | @keyup.enter.native="$panel.confirmFilter()" |
| | | @input="changeFilterEvent($event, option, $panel)"/> |
| | | </div> |
| | | </div> |
| | | </template> |
| | | </vxe-grid> |
| | | <div id="last"> |
| | | <span> |
| | | å°çæ°<vxe-input size="small" class="input"></vxe-input> |
| | | å°çé¢<vxe-input size="small" class="input"></vxe-input> |
| | | åçæ°<vxe-input size="small" class="input"></vxe-input> |
| | | åçé¢<vxe-input size="small" class="input"></vxe-input> |
| | | </span> |
| | | <span style="float: right"> |
| | | <el-button type="primary" class="input">é¢åçå¾</el-button> |
| | | <el-button type="primary" class="input">模æè®¡ç®</el-button> |
| | | <el-button type="primary" class="input">ä¼åçå¾</el-button> |
| | | <el-button type="primary" class="input">ä¼åæç</el-button> |
| | | <el-button type="primary" class="input">æ°æ®å¯¼åº</el-button> |
| | | </span> |
| | | </div> |
| | | </div> |
| | | </template> |
| | | |
| | | <style scoped> |
| | | #mange{ |
| | | width: 100%; |
| | | height: 85%; |
| | | } |
| | | #last { |
| | | margin-top: 10px; |
| | | } |
| | | .input{ |
| | | width: 80px; |
| | | margin-left: 15px; |
| | | } |
| | | </style> |
| New file |
| | |
| | | <script setup> |
| | | import {reactive, ref} from "vue"; |
| | | import {useI18n} from "vue-i18n"; |
| | | import {Minus, Plus, Search} from "@element-plus/icons-vue"; |
| | | |
| | | const {t} = useI18n() |
| | | |
| | | const xGrid = ref() |
| | | |
| | | const gridOptions = reactive({ |
| | | height: '100%', |
| | | loading: false, |
| | | border: "full",//è¡¨æ ¼å è¾¹æ¡ |
| | | keepSource: true,//ä¿ææºæ°æ® |
| | | align: 'center',//æåå±
ä¸ |
| | | stripe: true,//æé©¬çº¹ |
| | | rowConfig: {isCurrent: true, isHover: true, height: 30, useKey: true},//é¼ æ ç§»å¨æéæ©é«äº® |
| | | id: 'Compute', |
| | | scrollX: {enabled: true}, |
| | | scrollY: {enabled: true, gt: 0},//å¼å¯èææ»å¨ |
| | | showOverflow: true, |
| | | columnConfig: { |
| | | resizable: true, |
| | | useKey: true |
| | | }, |
| | | filterConfig: { //çéé
置项 |
| | | remote: true |
| | | }, |
| | | customConfig: { |
| | | storage: true |
| | | }, |
| | | editConfig: { |
| | | trigger: 'click', |
| | | mode: 'row', |
| | | showStatus: true |
| | | }, |
| | | /*formConfig: { |
| | | data: { |
| | | width: '', |
| | | height: '', |
| | | quantity: '' |
| | | }, |
| | | items: [ |
| | | { field: 'width', title: t('order.width')+':', itemRender: { name: 'VxeInput' } }, |
| | | { field: 'height', title: t('order.height')+':', itemRender: { name: 'VxeInput' } }, |
| | | { field: 'quantity', title: t('order.quantity')+':', itemRender: { name: 'VxeInput' } }, |
| | | { |
| | | itemRender: { |
| | | name: 'VxeButtonGroup', |
| | | options: [ |
| | | { type: 'submit', content: t('craft.sure'), status: 'primary' }, |
| | | { type: 'reset', content: t('product.msg.reset') } |
| | | ] |
| | | } |
| | | } |
| | | ] |
| | | },*/ |
| | | columns: [ |
| | | {field: 'id', width: 70, title: 'åºå·', filters: [{data: ''}], slots: {default: 'state', filter: 'num2_filter'}}, |
| | | {field: '', width: 100, title: 'ç徿°'}, |
| | | {field: '', width: 100, title: 'è£
è½½ç'}, |
| | | {field: '', width: 100, title: 'æµç¨å¡æ°'}, |
| | | {field: '', width: 100, title: '模æçæ°'}, |
| | | { |
| | | field: 'processId', |
| | | width: 150, |
| | | title: t('processCard.processId'), |
| | | filters: [{data: ''}], |
| | | slots: {filter: 'num1_filter'}, |
| | | sortable: true |
| | | }, |
| | | ],//è¡¨å¤´åæ° |
| | | data: null,//è¡¨æ ¼æ°æ® |
| | | toolbarConfig: { |
| | | buttons: [], |
| | | slots: { |
| | | buttons: "toolbar_buttons" |
| | | }, |
| | | }, |
| | | |
| | | }) |
| | | let emit = defineEmits([ |
| | | 'changeDialog' |
| | | ]) |
| | | let ProjectName = ref('') |
| | | const changeOrderType = async () => { |
| | | await emit('changeDialog', ProjectName.value) |
| | | ProjectName.value = null |
| | | } |
| | | // è¿åº¦æ¡é¢è²åæé®å å |
| | | const percentage1 = ref(80) |
| | | const percentage2 = ref(50) |
| | | const customColors = [ |
| | | {color: '#f56c6c', percentage: 20}, |
| | | {color: '#e6a23c', percentage: 40}, |
| | | {color: '#5cb87a', percentage: 60}, |
| | | {color: '#1989fa', percentage: 80}, |
| | | {color: '#162ce5', percentage: 100}, |
| | | ] |
| | | const handleButtonClick = (progressIndex, isIncrease) => { |
| | | let percentageRef; |
| | | if (progressIndex === 1) { |
| | | percentageRef = percentage1; |
| | | } else if (progressIndex === 2) { |
| | | percentageRef = percentage2; |
| | | } |
| | | if (isIncrease && percentageRef.value < 100) { |
| | | percentageRef.value += 10; |
| | | } else if (!isIncrease && percentageRef.value > 0) { |
| | | percentageRef.value -= 10; |
| | | } |
| | | }; |
| | | |
| | | </script> |
| | | |
| | | <template> |
| | | <div style="width: 100%;height: 100%"> |
| | | <!--模æè®¡ç®è¡¨å¤´--> |
| | | <div id="title" style="margin-top: -10px"> |
| | | <span> |
| | | å·¥ç¨ç¼å· |
| | | <vxe-select size="small" style="margin-left: 20px"></vxe-select> |
| | | <el-button type="primary" :icon="Search" style="margin-left: 20px">æ¥è¯¢</el-button> |
| | | </span> |
| | | <span style="float: right ; margin-right: 120px"> |
| | | å·¥ç¨æ··æç级 |
| | | <vxe-select size="small" style="margin-left: 20px"> |
| | | <vxe-option value="null" >䏿··æ</vxe-option> |
| | | <vxe-option value="null" >轻度混æ</vxe-option> |
| | | <vxe-option value="null" >ä¸åº¦æ··æ</vxe-option> |
| | | <vxe-option value="null" >é«åº¦æ··æ</vxe-option> |
| | | </vxe-select> |
| | | <el-button type="primary" style="margin-left: 20px">模æè®¡ç®</el-button> |
| | | <el-button type="primary" style="margin-left: 50px">ä¿å</el-button> |
| | | </span><br> |
| | | <div class="demo-progress" style="margin-top: 5px"> |
| | | <div style="display: flex; align-items: center"> |
| | | <span>é¢åæå¤§è£
è½½</span> |
| | | <!--è¿åº¦æ¡è®¾ç½®--> |
| | | <el-progress style="max-width: 300px; flex: 1; margin-left: 10px" :percentage="percentage1" |
| | | :color="customColors"/> |
| | | <el-button-group style="margin-left: 10px;"> |
| | | <el-button :icon="Minus" @click="handleButtonClick(1,false)"/> |
| | | <el-button :icon="Plus" @click="handleButtonClick(1,true)"/> |
| | | </el-button-group> |
| | | <span style="float: right ; margin-left: 250px;"> |
| | | å·¥ç¨ç»çç<vxe-input size="small" class="input" ></vxe-input> |
| | | 宽轴é´é<vxe-input size="small" class="input"></vxe-input> |
| | | ç宽(mm)<vxe-input size="small" class="input"></vxe-input> |
| | | </span> |
| | | </div> |
| | | </div> |
| | | <br> |
| | | <div class="demo-progress" style="margin-top: -10px"> |
| | | <div style="display: flex; align-items: center"> |
| | | <span>çç笼空é²åº¦</span> |
| | | <!--è¿åº¦æ¡è®¾ç½®--> |
| | | <el-progress style="max-width: 300px; flex: 1; margin-left: 10px" :percentage="percentage2" |
| | | :color="customColors"/> |
| | | <el-button-group style="margin-left: 10px;"> |
| | | <el-button :icon="Minus" @click="handleButtonClick(2,false)"/> |
| | | <el-button :icon="Plus" @click="handleButtonClick(2,true)"/> |
| | | </el-button-group> |
| | | <span style="float: right ; margin-left: 242px;"> |
| | | å çæ¶é´(ç§)<vxe-input size="small" class="input"></vxe-input> |
| | | é¿è½´é´é<vxe-input size="small" class="input"></vxe-input> |
| | | çé¿(mm)<vxe-input size="small" class="input"></vxe-input> |
| | | </span> |
| | | </div> |
| | | </div> |
| | | </div> |
| | | |
| | | <vxe-grid |
| | | size="small" |
| | | @filter-change="filterChanged" |
| | | height="100%" |
| | | class="mytable-scrollbar" |
| | | ref="xGrid" |
| | | v-bind="gridOptions" |
| | | v-on="gridEvents" |
| | | > |
| | | <template #num2_filter="{ column, $panel }"> |
| | | <div> |
| | | <div v-for="(option, index) in column.filters" :key="index"> |
| | | <vxe-select v-model="option.data" :placeholder="$t('processCard.pleaseSelect')" |
| | | @change="changeFilterEvent($event, option, $panel)"> |
| | | <vxe-option value="0" :label="$t('basicData.unchecked')"></vxe-option> |
| | | <vxe-option value="1" :label="$t('basicData.selected')"></vxe-option> |
| | | </vxe-select> |
| | | </div> |
| | | </div> |
| | | </template> |
| | | |
| | | <template #num1_filter="{ column, $panel }"> |
| | | <div> |
| | | <div v-for="(option, index) in column.filters" :key="index"> |
| | | <input |
| | | type="type" |
| | | v-model="option.data" |
| | | @keyup.enter.native="$panel.confirmFilter()" |
| | | @input="changeFilterEvent($event, option, $panel)"/> |
| | | </div> |
| | | </div> |
| | | </template> |
| | | </vxe-grid> |
| | | </div> |
| | | </template> |
| | | |
| | | <style scoped> |
| | | |
| | | .input{ |
| | | width: 80px; |
| | | margin-left: 10px; |
| | | } |
| | | |
| | | </style> |
| New file |
| | |
| | | <script setup> |
| | | import {reactive, ref} from "vue"; |
| | | import {useI18n} from "vue-i18n"; |
| | | const { t } = useI18n() |
| | | |
| | | const xGrid = ref() |
| | | |
| | | const gridOptions = reactive({ |
| | | |
| | | height:'100%', |
| | | loading: false, |
| | | border: "full",//è¡¨æ ¼å è¾¹æ¡ |
| | | keepSource: true,//ä¿ææºæ°æ® |
| | | align: 'center',//æåå±
ä¸ |
| | | stripe:true,//æé©¬çº¹ |
| | | rowConfig: {isCurrent: true, isHover: true,height: 30, useKey: true},//é¼ æ ç§»å¨æéæ©é«äº® |
| | | id: 'ComputeCard', |
| | | scrollX:{enabled: true}, |
| | | scrollY:{ enabled: true ,gt:0},//å¼å¯èææ»å¨ |
| | | showOverflow:true, |
| | | columnConfig: { |
| | | resizable: true, |
| | | useKey: true |
| | | }, |
| | | filterConfig: { //çéé
置项 |
| | | remote: true |
| | | }, |
| | | customConfig: { |
| | | storage: true |
| | | }, |
| | | editConfig: { |
| | | trigger: 'click', |
| | | mode: 'row', |
| | | showStatus: true |
| | | }, |
| | | /*formConfig: { |
| | | data: { |
| | | width: '', |
| | | height: '', |
| | | quantity: '' |
| | | }, |
| | | items: [ |
| | | { field: 'width', title: t('order.width')+':', itemRender: { name: 'VxeInput' } }, |
| | | { field: 'height', title: t('order.height')+':', itemRender: { name: 'VxeInput' } }, |
| | | { field: 'quantity', title: t('order.quantity')+':', itemRender: { name: 'VxeInput' } }, |
| | | { |
| | | itemRender: { |
| | | name: 'VxeButtonGroup', |
| | | options: [ |
| | | { type: 'submit', content: t('craft.sure'), status: 'primary' }, |
| | | { type: 'reset', content: t('product.msg.reset') } |
| | | ] |
| | | } |
| | | } |
| | | ] |
| | | },*/ |
| | | columns:[ |
| | | {type:'expand',fixed:"left",slots: { content:'content' },width: 50}, |
| | | {field: 'checkbox', title: 'å
许横æ', width: 100}, |
| | | {field: 'checkbox', title: 'é¢å', width: 70}, |
| | | {field: 'processId',width: 150, title: t('processCard.processId'),filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true}, |
| | | {field: 'id',width: 70, title: 'å±',filters:[{ data: '' }], slots: { default: 'state',filter: 'num2_filter' }}, |
| | | {field: 'id',width: 150, title: 'æ»å±æ°',filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true}, |
| | | {field: 'id',width: 100, title: 'è§æ ¼',filters:[{ data: '' }], slots: { default: 'state',filter: 'num2_filter' }}, |
| | | {field: 'quantity',width: 150, title: t('order.quantity'),filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true}, |
| | | {field: 'orderDetail.productName',width: 150, title: t('order.product'),filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true}, |
| | | {field: 'orderDetail.computeGrossArea',width: 150, title: t('order.area'),filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true}, |
| | | {field: '',width: 70, title: 'merge'} |
| | | |
| | | ],//è¡¨å¤´åæ° |
| | | data:null,//è¡¨æ ¼æ°æ® |
| | | |
| | | toolbarConfig: { |
| | | buttons: [], |
| | | slots:{ |
| | | buttons: "toolbar_buttons" |
| | | }, |
| | | }, |
| | | |
| | | }) |
| | | let emit = defineEmits([ |
| | | 'changeDialog' |
| | | ]) |
| | | let Membrane = ref('éæ©èç³»') |
| | | |
| | | const changeOrderType = async ()=>{ |
| | | await emit('changeDialog',Membrane.value) |
| | | Membrane.value = null |
| | | } |
| | | |
| | | </script> |
| | | |
| | | <template> |
| | | <div style="width: 100%;height: 100%"> |
| | | <span>æµç¨å¡</span> |
| | | <vxe-grid |
| | | size="small" |
| | | @filter-change="filterChanged" |
| | | height="100%" |
| | | class="mytable-scrollbar" |
| | | ref="xGrid" |
| | | v-bind="gridOptions" |
| | | v-on="gridEvents" |
| | | > |
| | | <template #num2_filter="{ column, $panel }"> |
| | | <div> |
| | | <div v-for="(option, index) in column.filters" :key="index"> |
| | | <vxe-select v-model="option.data" :placeholder="$t('processCard.pleaseSelect')" @change="changeFilterEvent($event, option, $panel)"> |
| | | <vxe-option value="0" :label="$t('basicData.unchecked')"></vxe-option> |
| | | <vxe-option value="1" :label="$t('basicData.selected')"></vxe-option> |
| | | </vxe-select> |
| | | </div> |
| | | </div> |
| | | </template> |
| | | |
| | | <template #num1_filter="{ column, $panel }"> |
| | | <div> |
| | | <div v-for="(option, index) in column.filters" :key="index"> |
| | | <input |
| | | |
| | | type="type" |
| | | v-model="option.data" |
| | | @keyup.enter.native="$panel.confirmFilter()" |
| | | @input="changeFilterEvent($event, option, $panel)"/> |
| | | </div> |
| | | </div> |
| | | </template> |
| | | </vxe-grid> |
| | | </div> |
| | | </template> |
| | | |
| | | <style scoped> |
| | | |
| | | </style> |
| New file |
| | |
| | | <script setup> |
| | | import {reactive, ref} from "vue"; |
| | | import {useI18n} from "vue-i18n"; |
| | | const { t } = useI18n() |
| | | |
| | | const xGrid = ref() |
| | | |
| | | const gridOptions = reactive({ |
| | | height:'100%', |
| | | loading: false, |
| | | border: "full",//è¡¨æ ¼å è¾¹æ¡ |
| | | keepSource: true,//ä¿ææºæ°æ® |
| | | align: 'center',//æåå±
ä¸ |
| | | stripe:true,//æé©¬çº¹ |
| | | rowConfig: {isCurrent: true, isHover: true,height: 30, useKey: true},//é¼ æ ç§»å¨æéæ©é«äº® |
| | | id: 'ComputeDetail', |
| | | scrollX:{enabled: true}, |
| | | scrollY:{ enabled: true ,gt:0},//å¼å¯èææ»å¨ |
| | | showOverflow:true, |
| | | columnConfig: { |
| | | resizable: true, |
| | | useKey: true |
| | | }, |
| | | filterConfig: { //çéé
置项 |
| | | remote: true |
| | | }, |
| | | customConfig: { |
| | | storage: true |
| | | }, |
| | | editConfig: { |
| | | trigger: 'click', |
| | | mode: 'row', |
| | | showStatus: true |
| | | }, |
| | | /*formConfig: { |
| | | data: { |
| | | width: '', |
| | | height: '', |
| | | quantity: '' |
| | | }, |
| | | items: [ |
| | | { field: 'width', title: t('order.width')+':', itemRender: { name: 'VxeInput' } }, |
| | | { field: 'height', title: t('order.height')+':', itemRender: { name: 'VxeInput' } }, |
| | | { field: 'quantity', title: t('order.quantity')+':', itemRender: { name: 'VxeInput' } }, |
| | | { |
| | | itemRender: { |
| | | name: 'VxeButtonGroup', |
| | | options: [ |
| | | { type: 'submit', content: t('craft.sure'), status: 'primary' }, |
| | | { type: 'reset', content: t('product.msg.reset') } |
| | | ] |
| | | } |
| | | } |
| | | ] |
| | | },*/ |
| | | columns:[ |
| | | {field: 'id',width: 70, title: 'åºå·',filters:[{ data: '' }], slots: { default: 'state',filter: 'num2_filter' }}, |
| | | {field:'state',width: 150,title: t('order.width'),filters:[{ data: '' }], slots: { default: 'state',filter: 'num2_filter' }}, |
| | | {type: 'seq',width: 150,title: t('order.height')}, |
| | | {field: 'id',width: 150, title: t('order.quantity'),filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true}, |
| | | {field: 'id',width: 150, title: t('order.buildingNumber'),filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true}, |
| | | {field: 'id',width: 150, title: t('order.shape'),filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true}, |
| | | {field: 'id',width: 150, title: t('order.grossArea'),filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true}, |
| | | {field: 'id',width: 150, title: t('craft.TrademarkAttribute'),filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true}, |
| | | |
| | | ],//è¡¨å¤´åæ° |
| | | data:null,//è¡¨æ ¼æ°æ® |
| | | toolbarConfig: { |
| | | buttons: [], |
| | | slots:{ |
| | | buttons: "toolbar_buttons" |
| | | }, |
| | | }, |
| | | |
| | | }) |
| | | let emit = defineEmits([ |
| | | 'changeDialog' |
| | | ]) |
| | | let ProjectName = ref('') |
| | | const changeOrderType = async ()=>{ |
| | | await emit('changeDialog',ProjectName.value) |
| | | ProjectName.value = null |
| | | } |
| | | </script> |
| | | |
| | | <template> |
| | | <div style="width: 100%;height: 100%"> |
| | | <span>æµç¨å¡è¯¦æ
</span> |
| | | <vxe-grid |
| | | size="small" |
| | | @filter-change="filterChanged" |
| | | height="100%" |
| | | class="mytable-scrollbar" |
| | | ref="xGrid" |
| | | v-bind="gridOptions" |
| | | v-on="gridEvents" |
| | | > |
| | | <template #num2_filter="{ column, $panel }"> |
| | | <div> |
| | | <div v-for="(option, index) in column.filters" :key="index"> |
| | | <vxe-select v-model="option.data" :placeholder="$t('processCard.pleaseSelect')" @change="changeFilterEvent($event, option, $panel)"> |
| | | <vxe-option value="0" :label="$t('basicData.unchecked')"></vxe-option> |
| | | <vxe-option value="1" :label="$t('basicData.selected')"></vxe-option> |
| | | </vxe-select> |
| | | </div> |
| | | </div> |
| | | </template> |
| | | |
| | | <template #num1_filter="{ column, $panel }"> |
| | | <div> |
| | | <div v-for="(option, index) in column.filters" :key="index"> |
| | | <input |
| | | type="type" |
| | | v-model="option.data" |
| | | @keyup.enter.native="$panel.confirmFilter()" |
| | | @input="changeFilterEvent($event, option, $panel)"/> |
| | | </div> |
| | | </div> |
| | | </template> |
| | | </vxe-grid> |
| | | </div> |
| | | </template> |
| | | |
| | | <style scoped> |
| | | |
| | | </style> |
| | |
| | | align: 'center',//æåå±
ä¸ |
| | | stripe:true,//æé©¬çº¹ |
| | | rowConfig: {isCurrent: true, isHover: true,height: 30, useKey: true},//é¼ æ ç§»å¨æéæ©é«äº® |
| | | id: 'SelectProduct1', |
| | | id: 'GlassInventory', |
| | | scrollX:{enabled: true}, |
| | | scrollY:{ enabled: true ,gt:0},//å¼å¯èææ»å¨ |
| | | showOverflow:true, |
| New file |
| | |
| | | <script setup> |
| | | import {reactive, ref} from "vue"; |
| | | import {useI18n} from "vue-i18n"; |
| | | import {Search} from "@element-plus/icons-vue"; |
| | | const { t } = useI18n() |
| | | |
| | | const xGrid = ref() |
| | | |
| | | const gridOptions = reactive({ |
| | | |
| | | height:'100%', |
| | | loading: false, |
| | | border: "full",//è¡¨æ ¼å è¾¹æ¡ |
| | | keepSource: true,//ä¿ææºæ°æ® |
| | | align: 'center',//æåå±
ä¸ |
| | | stripe:true,//æé©¬çº¹ |
| | | rowConfig: {isCurrent: true, isHover: true,height: 30, useKey: true},//é¼ æ ç§»å¨æéæ©é«äº® |
| | | id: 'ProcessCard', |
| | | scrollX:{enabled: true}, |
| | | scrollY:{ enabled: true ,gt:0},//å¼å¯èææ»å¨ |
| | | showOverflow:true, |
| | | columnConfig: { |
| | | resizable: true, |
| | | useKey: true |
| | | }, |
| | | filterConfig: { //çéé
置项 |
| | | remote: true |
| | | }, |
| | | customConfig: { |
| | | storage: true |
| | | }, |
| | | editConfig: { |
| | | trigger: 'click', |
| | | mode: 'row', |
| | | showStatus: true |
| | | }, |
| | | /*formConfig: { |
| | | data: { |
| | | width: '', |
| | | height: '', |
| | | quantity: '' |
| | | }, |
| | | items: [ |
| | | { field: 'width', title: t('order.width')+':', itemRender: { name: 'VxeInput' } }, |
| | | { field: 'height', title: t('order.height')+':', itemRender: { name: 'VxeInput' } }, |
| | | { field: 'quantity', title: t('order.quantity')+':', itemRender: { name: 'VxeInput' } }, |
| | | { |
| | | itemRender: { |
| | | name: 'VxeButtonGroup', |
| | | options: [ |
| | | { type: 'submit', content: t('craft.sure'), status: 'primary' }, |
| | | { type: 'reset', content: t('product.msg.reset') } |
| | | ] |
| | | } |
| | | } |
| | | ] |
| | | },*/ |
| | | columns:[ |
| | | {type:'expand',fixed:"left",slots: { content:'content' },width: 50}, |
| | | {type: 'checkbox', fixed: "left", title: t('basicData.check'), width: 80}, |
| | | {field: 'processId',width: 150, title: t('processCard.processId'),filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true}, |
| | | {field: 'id',width: 70, title: 'å±',filters:[{ data: '' }], slots: { default: 'state',filter: 'num2_filter' }}, |
| | | {field: 'id',width: 150, title: 'æ»å±æ°',filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true}, |
| | | {field: 'id',width: 100, title: 'è§æ ¼',filters:[{ data: '' }], slots: { default: 'state',filter: 'num2_filter' }}, |
| | | {field: 'quantity',width: 150, title: t('order.quantity'),filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true}, |
| | | {field: 'id',width: 150, title: t('order.shape'),filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true}, |
| | | {field: 'orderDetail.productName',width: 150, title: t('order.product'),filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true}, |
| | | {field: 'order.project', width:150, title: t('order.project'), showOverflow: "ellipsis"}, |
| | | {field: 'orderDetail.computeGrossArea',width: 150, title: t('order.area'),filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true}, |
| | | |
| | | |
| | | ],//è¡¨å¤´åæ° |
| | | data:null,//è¡¨æ ¼æ°æ® |
| | | |
| | | toolbarConfig: { |
| | | buttons: [], |
| | | slots:{ |
| | | buttons: "toolbar_buttons" |
| | | }, |
| | | }, |
| | | |
| | | }) |
| | | let emit = defineEmits([ |
| | | 'changeDialog' |
| | | ]) |
| | | let Membrane = ref('éæ©èç³»') |
| | | |
| | | const changeOrderType = async ()=>{ |
| | | await emit('changeDialog',Membrane.value) |
| | | Membrane.value = null |
| | | } |
| | | |
| | | </script> |
| | | |
| | | <template> |
| | | <div style="width: 100%;height: 100%"> |
| | | <h1>æµç¨å¡å表</h1> |
| | | <vxe-grid |
| | | size="small" |
| | | @filter-change="filterChanged" |
| | | height="100%" |
| | | class="mytable-scrollbar" |
| | | ref="xGrid" |
| | | v-bind="gridOptions" |
| | | v-on="gridEvents" |
| | | > |
| | | <template #num2_filter="{ column, $panel }"> |
| | | <div> |
| | | <div v-for="(option, index) in column.filters" :key="index"> |
| | | <vxe-select v-model="option.data" :placeholder="$t('processCard.pleaseSelect')" @change="changeFilterEvent($event, option, $panel)"> |
| | | <vxe-option value="0" :label="$t('basicData.unchecked')"></vxe-option> |
| | | <vxe-option value="1" :label="$t('basicData.selected')"></vxe-option> |
| | | </vxe-select> |
| | | </div> |
| | | </div> |
| | | </template> |
| | | |
| | | <template #num1_filter="{ column, $panel }"> |
| | | <div> |
| | | <div v-for="(option, index) in column.filters" :key="index"> |
| | | <input |
| | | |
| | | type="type" |
| | | v-model="option.data" |
| | | @keyup.enter.native="$panel.confirmFilter()" |
| | | @input="changeFilterEvent($event, option, $panel)"/> |
| | | </div> |
| | | </div> |
| | | </template> |
| | | |
| | | <template #toolbar_buttons> |
| | | <h1>èç³»çéï¼</h1> |
| | | <vxe-select @change="changeOrderType" v-model="Membrane"> |
| | | <vxe-option value="2" :label="$t('searchOrder.regularOrders')"></vxe-option> |
| | | <vxe-option value="-2" :label="$t('searchOrder.cancelledOrders')"></vxe-option> |
| | | <vxe-option value="0" :label="$t('searchOrder.allOrders')"></vxe-option> |
| | | </vxe-select> |
| | | <el-button type="primary" :icon="Search" style="margin-left: 20px">æ¥è¯¢</el-button> |
| | | <vxe-select style="margin-left: 40px"></vxe-select> |
| | | <vxe-select style="margin-left: 20px"></vxe-select> |
| | | <el-button type="primary" style="margin-left: 10px">çé</el-button> |
| | | </template> |
| | | </vxe-grid> |
| | | </div> |
| | | </template> |
| | | |
| | | <style scoped> |
| | | |
| | | </style> |
| New file |
| | |
| | | <script setup> |
| | | import {reactive, ref} from "vue"; |
| | | import {useI18n} from "vue-i18n"; |
| | | const { t } = useI18n() |
| | | |
| | | const xGrid = ref() |
| | | |
| | | const gridOptions = reactive({ |
| | | height:'100%', |
| | | loading: false, |
| | | border: "full",//è¡¨æ ¼å è¾¹æ¡ |
| | | keepSource: true,//ä¿ææºæ°æ® |
| | | align: 'center',//æåå±
ä¸ |
| | | stripe:true,//æé©¬çº¹ |
| | | rowConfig: {isCurrent: true, isHover: true,height: 30, useKey: true},//é¼ æ ç§»å¨æéæ©é«äº® |
| | | id: 'ProcessCardDetail', |
| | | scrollX:{enabled: true}, |
| | | scrollY:{ enabled: true ,gt:0},//å¼å¯èææ»å¨ |
| | | showOverflow:true, |
| | | columnConfig: { |
| | | resizable: true, |
| | | useKey: true |
| | | }, |
| | | filterConfig: { //çéé
置项 |
| | | remote: true |
| | | }, |
| | | customConfig: { |
| | | storage: true |
| | | }, |
| | | editConfig: { |
| | | trigger: 'click', |
| | | mode: 'row', |
| | | showStatus: true |
| | | }, |
| | | /*formConfig: { |
| | | data: { |
| | | width: '', |
| | | height: '', |
| | | quantity: '' |
| | | }, |
| | | items: [ |
| | | { field: 'width', title: t('order.width')+':', itemRender: { name: 'VxeInput' } }, |
| | | { field: 'height', title: t('order.height')+':', itemRender: { name: 'VxeInput' } }, |
| | | { field: 'quantity', title: t('order.quantity')+':', itemRender: { name: 'VxeInput' } }, |
| | | { |
| | | itemRender: { |
| | | name: 'VxeButtonGroup', |
| | | options: [ |
| | | { type: 'submit', content: t('craft.sure'), status: 'primary' }, |
| | | { type: 'reset', content: t('product.msg.reset') } |
| | | ] |
| | | } |
| | | } |
| | | ] |
| | | },*/ |
| | | columns:[ |
| | | {field: 'id',width: 70, title: 'åºå·',filters:[{ data: '' }], slots: { default: 'state',filter: 'num2_filter' }}, |
| | | {field:'state',width: 150,title: t('order.width'),filters:[{ data: '' }], slots: { default: 'state',filter: 'num2_filter' }}, |
| | | {type: 'seq',width: 150,title: t('order.height')}, |
| | | {field: 'id',width: 150, title: t('order.quantity'),filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true}, |
| | | {field: 'id',width: 150, title: t('order.buildingNumber'),filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true}, |
| | | {field: 'id',width: 150, title: t('order.shape'),filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true}, |
| | | {field: 'id',width: 150, title: t('order.grossArea'),filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true}, |
| | | {field: 'id',width: 150, title: t('craft.TrademarkAttribute'),filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true}, |
| | | |
| | | ],//è¡¨å¤´åæ° |
| | | data:null,//è¡¨æ ¼æ°æ® |
| | | toolbarConfig: { |
| | | buttons: [], |
| | | slots:{ |
| | | buttons: "toolbar_buttons" |
| | | }, |
| | | }, |
| | | |
| | | }) |
| | | let emit = defineEmits([ |
| | | 'changeDialog' |
| | | ]) |
| | | let ProjectName = ref('å·¥ç¨åç§°') |
| | | const changeOrderType = async ()=>{ |
| | | await emit('changeDialog',ProjectName.value) |
| | | ProjectName.value = null |
| | | } |
| | | |
| | | </script> |
| | | |
| | | <template> |
| | | <div style="width: 100%;height: 100%"> |
| | | <h1>æµç¨å¡è¯¦æ
</h1> |
| | | <vxe-grid |
| | | size="small" |
| | | @filter-change="filterChanged" |
| | | height="100%" |
| | | class="mytable-scrollbar" |
| | | ref="xGrid" |
| | | v-bind="gridOptions" |
| | | v-on="gridEvents" |
| | | > |
| | | <template #num2_filter="{ column, $panel }"> |
| | | <div> |
| | | <div v-for="(option, index) in column.filters" :key="index"> |
| | | <vxe-select v-model="option.data" :placeholder="$t('processCard.pleaseSelect')" @change="changeFilterEvent($event, option, $panel)"> |
| | | <vxe-option value="0" :label="$t('basicData.unchecked')"></vxe-option> |
| | | <vxe-option value="1" :label="$t('basicData.selected')"></vxe-option> |
| | | </vxe-select> |
| | | </div> |
| | | </div> |
| | | </template> |
| | | |
| | | <template #num1_filter="{ column, $panel }"> |
| | | <div> |
| | | <div v-for="(option, index) in column.filters" :key="index"> |
| | | <input |
| | | type="type" |
| | | v-model="option.data" |
| | | @keyup.enter.native="$panel.confirmFilter()" |
| | | @input="changeFilterEvent($event, option, $panel)"/> |
| | | </div> |
| | | </div> |
| | | </template> |
| | | |
| | | <template #toolbar_buttons> |
| | | <vxe-input @change="changeOrderType" v-model="ProjectName"></vxe-input> |
| | | <el-button type="primary" style="margin-left: 20px">å建</el-button> |
| | | </template> |
| | | |
| | | </vxe-grid> |
| | | </div> |
| | | </template> |
| | | |
| | | <style scoped> |
| | | |
| | | </style> |
| | |
| | | <script setup> |
| | | import {reactive, ref} from "vue"; |
| | | import {useI18n} from "vue-i18n"; |
| | | const { t } = useI18n() |
| | | import { |
| | | Folder, |
| | | Plus, |
| | | Setting, |
| | | Operation, |
| | | Tickets, |
| | | DocumentCopy, |
| | | Grid, |
| | | Edit, |
| | | Printer, |
| | | DocumentAdd, Minus, Menu, Checked, Upload, Suitcase, Refresh, CircleCloseFilled, Sort, Link , |
| | | } from "@element-plus/icons-vue"; |
| | | |
| | | const {t} = useI18n() |
| | | |
| | | const xGrid = ref() |
| | | const gridOptions = reactive({ |
| | | height:'100%', |
| | | height: '100%', |
| | | loading: false, |
| | | border: "full",//è¡¨æ ¼å è¾¹æ¡ |
| | | border: "full",//è¡¨æ ¼å è¾¹æ¡ |
| | | keepSource: true,//ä¿ææºæ°æ® |
| | | align: 'center',//æåå±
ä¸ |
| | | stripe:true,//æé©¬çº¹ |
| | | rowConfig: {isCurrent: true, isHover: true,height: 30, useKey: true},//é¼ æ ç§»å¨æéæ©é«äº® |
| | | id: 'SelectProduct1', |
| | | scrollX:{enabled: true}, |
| | | scrollY:{ enabled: true ,gt:0},//å¼å¯èææ»å¨ |
| | | showOverflow:true, |
| | | stripe: true,//æé©¬çº¹ |
| | | rowConfig: {isCurrent: true, isHover: true, height: 30, useKey: true},//é¼ æ ç§»å¨æéæ©é«äº® |
| | | id: 'ProjectDetail', |
| | | scrollX: {enabled: true}, |
| | | scrollY: {enabled: true, gt: 0},//å¼å¯èææ»å¨ |
| | | showOverflow: true, |
| | | columnConfig: { |
| | | resizable: true, |
| | | useKey: true |
| | |
| | | } |
| | | ] |
| | | },*/ |
| | | columns:[ |
| | | columns: [ |
| | | {title: '订åº', width: 70}, |
| | | {field:'state',width: 150,title: t('order.width'),filters:[{ data: '' }], slots: { default: 'state',filter: 'num2_filter' }}, |
| | | {type: 'seq',width: 150,title: t('order.height')}, |
| | | {field: 'id',width: 150, title: t('order.quantity'),filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true}, |
| | | {field: 'id',width: 150, title: 'é¿ç£¨1',filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true}, |
| | | {field: 'id',width: 150, title: 'é¿ç£¨2',filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true}, |
| | | {field: 'id',width: 150, title: 'ç磨1',filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true}, |
| | | {field: 'id',width: 150, title: 'ç磨1',filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true}, |
| | | {field: 'id',width: 150, title: t('order.shape'),filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true}, |
| | | {field: 'id',width: 150, title: 'æµç¨å¡å·',filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true}, |
| | | {field: 'id',width: 150, title: t('order.product'),filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true}, |
| | | {field: 'id',width: 150, title: t('order.buildingNumber'),filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true}, |
| | | {field: 'id',width: 150, title: t('basicData.remarks'),filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true}, |
| | | {field: 'id',width: 150, title: t('order.perimeter'),filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true}, |
| | | {field: 'id',width: 150, title: t('order.grossArea'),filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true}, |
| | | {field: 'state', width: 150, title: t('order.width'), filters: [{data: ''}], slots: {filter: 'num2_filter'}}, |
| | | {type: 'seq', width: 150, title: t('order.height')}, |
| | | { |
| | | field: 'id', |
| | | width: 150, |
| | | title: t('order.quantity'), |
| | | filters: [{data: ''}], |
| | | slots: {filter: 'num1_filter'}, |
| | | sortable: true |
| | | }, |
| | | {field: 'id', width: 150, title: 'é¿ç£¨1', filters: [{data: ''}], slots: {filter: 'num1_filter'}, sortable: true}, |
| | | {field: 'id', width: 150, title: 'é¿ç£¨2', filters: [{data: ''}], slots: {filter: 'num1_filter'}, sortable: true}, |
| | | {field: 'id', width: 150, title: 'ç磨1', filters: [{data: ''}], slots: {filter: 'num1_filter'}, sortable: true}, |
| | | {field: 'id', width: 150, title: 'ç磨1', filters: [{data: ''}], slots: {filter: 'num1_filter'}, sortable: true}, |
| | | { |
| | | field: 'id', |
| | | width: 150, |
| | | title: t('order.shape'), |
| | | filters: [{data: ''}], |
| | | slots: {filter: 'num1_filter'}, |
| | | sortable: true |
| | | }, |
| | | {field: 'id', width: 150, title: 'æµç¨å¡å·', filters: [{data: ''}], slots: {filter: 'num1_filter'}, sortable: true}, |
| | | { |
| | | field: 'id', |
| | | width: 150, |
| | | title: t('order.product'), |
| | | filters: [{data: ''}], |
| | | slots: {filter: 'num1_filter'}, |
| | | sortable: true |
| | | }, |
| | | { |
| | | field: 'id', |
| | | width: 150, |
| | | title: t('order.buildingNumber'), |
| | | filters: [{data: ''}], |
| | | slots: {filter: 'num1_filter'}, |
| | | sortable: true |
| | | }, |
| | | { |
| | | field: 'id', |
| | | width: 150, |
| | | title: t('basicData.remarks'), |
| | | filters: [{data: ''}], |
| | | slots: {filter: 'num1_filter'}, |
| | | sortable: true |
| | | }, |
| | | { |
| | | field: 'id', |
| | | width: 150, |
| | | title: t('order.perimeter'), |
| | | filters: [{data: ''}], |
| | | slots: {filter: 'num1_filter'}, |
| | | sortable: true |
| | | }, |
| | | { |
| | | field: 'id', |
| | | width: 150, |
| | | title: t('order.grossArea'), |
| | | filters: [{data: ''}], |
| | | slots: {filter: 'num1_filter'}, |
| | | sortable: true |
| | | }, |
| | | |
| | | {field: 'id',width: 150, title: t('craft.glassChild'),filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true}, |
| | | {field: 'id',width: 150, title: t('craft.glassAddress'),filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true}, |
| | | {field: 'id',width: 150, title: t('craft.TrademarkAttribute'),filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true}, |
| | | { |
| | | field: 'id', |
| | | width: 150, |
| | | title: t('craft.glassChild'), |
| | | filters: [{data: ''}], |
| | | slots: {filter: 'num1_filter'}, |
| | | sortable: true |
| | | }, |
| | | { |
| | | field: 'id', |
| | | width: 150, |
| | | title: t('craft.glassAddress'), |
| | | filters: [{data: ''}], |
| | | slots: {filter: 'num1_filter'}, |
| | | sortable: true |
| | | }, |
| | | { |
| | | field: 'id', |
| | | width: 150, |
| | | title: t('craft.TrademarkAttribute'), |
| | | filters: [{data: ''}], |
| | | slots: {filter: 'num1_filter'}, |
| | | sortable: true |
| | | }, |
| | | ],//è¡¨å¤´åæ° |
| | | data:null,//è¡¨æ ¼æ°æ® |
| | | data: null,//è¡¨æ ¼æ°æ® |
| | | toolbarConfig: { |
| | | buttons: [], |
| | | slots:{ |
| | | buttons: "toolbar_buttons" |
| | | slots: { |
| | | buttons: "toolbar" |
| | | }, |
| | | }, |
| | | |
| | |
| | | let emit = defineEmits([ |
| | | 'changeDialog' |
| | | ]) |
| | | let DialogValue = ref(null) |
| | | const changeOrderType = async ()=>{ |
| | | await emit('changeDialog',DialogValue.value) |
| | | DialogValue.value = null |
| | | const handleCommand = async (command) => { |
| | | await emit('changeDialog', command) |
| | | } |
| | | |
| | | </script> |
| | | |
| | | <template> |
| | |
| | | v-on="gridEvents" |
| | | > |
| | | |
| | | |
| | | <template #num2_filter="{ column, $panel }"> |
| | | <div> |
| | | <div v-for="(option, index) in column.filters" :key="index"> |
| | | <vxe-select v-model="option.data" :placeholder="$t('processCard.pleaseSelect')" @change="changeFilterEvent($event, option, $panel)"> |
| | | <vxe-select v-model="option.data" :placeholder="$t('processCard.pleaseSelect')" |
| | | @change="changeFilterEvent($event, option, $panel)"> |
| | | <vxe-option value="0" :label="$t('basicData.unchecked')"></vxe-option> |
| | | <vxe-option value="1" :label="$t('basicData.selected')"></vxe-option> |
| | | </vxe-select> |
| | |
| | | </div> |
| | | </template> |
| | | |
| | | <template #toolbar_buttons> |
| | | <vxe-select @change="changeOrderType" v-model="DialogValue" > |
| | | <vxe-option :value="1" :label="'å建工ç¨'"></vxe-option> |
| | | <vxe-option :value="2" :label="'å·¥ç¨ç®¡ç'"></vxe-option> |
| | | </vxe-select> |
| | | <template #toolbar> |
| | | <div id="title"> |
| | | <el-button id="checkinventory" type="primary">æ¥è¯¢åºå</el-button> |
| | | <el-button id="checkremnant" type="primary">æ¥è¯¢ä½æ</el-button> |
| | | <el-button id="selectml" type="primary">设置磨é</el-button> |
| | | <el-button id="selectxb" type="primary">设置修边</el-button> |
| | | <el-button id="safe" type="primary">ä¿å</el-button> |
| | | <el-button id="optimize" type="primary">ä¼å</el-button> |
| | | </div> |
| | | <!--å·¥ç¨æä»¶èå--> |
| | | <el-dropdown @command="handleCommand"> |
| | | <el-button type="primary" :icon="Folder"> |
| | | å·¥ç¨æä»¶ |
| | | </el-button> |
| | | <template #dropdown> |
| | | <el-dropdown-menu> |
| | | <el-dropdown-item :command="1" :icon="Plus">å建工ç¨</el-dropdown-item> |
| | | <el-dropdown-item :command="2" :icon="Setting">å·¥ç¨ç®¡ç</el-dropdown-item> |
| | | <el-dropdown-item :command="3" :icon="Operation">模æè®¡ç®</el-dropdown-item> |
| | | <!-- <el-dropdown-item command="4">æä»¶å¯¼åº</el-dropdown-item> |
| | | <el-dropdown-item command="5">æä»¶å¯¼å
¥</el-dropdown-item>--> |
| | | </el-dropdown-menu> |
| | | </template> |
| | | </el-dropdown> |
| | | <!--æå°èå--> |
| | | <el-dropdown @command="handleCommand"> |
| | | <el-button class="buttons" type="primary" :icon="Printer"> |
| | | æå° |
| | | </el-button> |
| | | <template #dropdown> |
| | | <el-dropdown-menu> |
| | | <el-dropdown-item :command="null" :icon="Printer">æå°ä¼åçå¾</el-dropdown-item> |
| | | <el-dropdown-item :command="null" :icon="Tickets">æå°ä¼åæ¥å</el-dropdown-item> |
| | | <el-dropdown-item :command="null" :icon="DocumentCopy">åå¹¶æå°</el-dropdown-item> |
| | | <el-dropdown-item :command="null" :icon="Grid">缩ç¥å¾</el-dropdown-item> |
| | | </el-dropdown-menu> |
| | | </template> |
| | | </el-dropdown> |
| | | <!--è°æ´--> |
| | | <el-dropdown @command="handleCommand"> |
| | | <el-button class="buttons" type="primary" :icon="Operation"> |
| | | è°æ´ |
| | | </el-button> |
| | | <template #dropdown> |
| | | <el-dropdown-menu> |
| | | <el-dropdown-item :command="null" :icon="Edit">å
¨é¨éæ</el-dropdown-item> |
| | | <el-dropdown-item :command="null" :icon="DocumentAdd">æ°å¢çé¢</el-dropdown-item> |
| | | <el-dropdown-item :command="null" :icon="Plus">å¢å å 工次æ°</el-dropdown-item> |
| | | <el-dropdown-item :command="null" :icon="Minus">å é¤çé¢</el-dropdown-item> |
| | | <el-dropdown-item :command="null" :icon="Menu">éåå½åçé¢</el-dropdown-item> |
| | | <el-dropdown-item :command="null" :icon="Grid">éåæä»¥çé¢</el-dropdown-item> |
| | | <el-dropdown-item :command="null" :icon="Checked">ä¿åä¿®æ¹</el-dropdown-item> |
| | | <el-dropdown-item :command="null" :icon="Upload">导åºå©ä½å°ç</el-dropdown-item> |
| | | </el-dropdown-menu> |
| | | </template> |
| | | </el-dropdown> |
| | | <!--æ°æ§--> |
| | | <el-dropdown @command="handleCommand"> |
| | | <el-button class="buttons" type="primary" :icon="Suitcase"> |
| | | æ°æ§ |
| | | </el-button> |
| | | <template #dropdown> |
| | | <el-dropdown-menu> |
| | | <el-dropdown-item :command="null" :icon="Refresh">å·æ°åè·¯</el-dropdown-item> |
| | | <el-dropdown-item :command="null" :icon="Link">æªæè¿ç»çº¿</el-dropdown-item> |
| | | <el-dropdown-item :command="null" :icon="CircleCloseFilled">å é¤åè·¯</el-dropdown-item> |
| | | <el-dropdown-item :command="null" :icon="Sort">å½ååè·¯åå</el-dropdown-item> |
| | | </el-dropdown-menu> |
| | | </template> |
| | | </el-dropdown> |
| | | <!--设置--> |
| | | <el-button class="buttons" type="primary" :icon="Setting"> |
| | | 设置 |
| | | </el-button> |
| | | <!--æ¥å--> |
| | | <el-button class="buttons" type="primary" :icon="Tickets"> |
| | | æ¥å |
| | | </el-button> |
| | | </template> |
| | | |
| | | </vxe-grid> |
| | | </div> |
| | | </template> |
| | | |
| | | <style scoped> |
| | | |
| | | #title { |
| | | position: absolute; |
| | | right: 10px; |
| | | } |
| | | |
| | | .buttons { |
| | | margin-left: 10px; |
| | | } |
| | | |
| | | </style> |
| New file |
| | |
| | | <script setup> |
| | | import {reactive, ref} from "vue"; |
| | | import {useI18n} from "vue-i18n"; |
| | | const { t } = useI18n() |
| | | |
| | | const xGrid = ref() |
| | | |
| | | const gridOptions = reactive({ |
| | | height:'100%', |
| | | loading: false, |
| | | border: "full",//è¡¨æ ¼å è¾¹æ¡ |
| | | keepSource: true,//ä¿ææºæ°æ® |
| | | align: 'center',//æåå±
ä¸ |
| | | stripe:true,//æé©¬çº¹ |
| | | rowConfig: {isCurrent: true, isHover: true,height: 30, useKey: true},//é¼ æ ç§»å¨æéæ©é«äº® |
| | | id: 'ProjectList', |
| | | scrollX:{enabled: true}, |
| | | scrollY:{ enabled: true ,gt:0},//å¼å¯èææ»å¨ |
| | | showOverflow:true, |
| | | columnConfig: { |
| | | resizable: true, |
| | | useKey: true |
| | | }, |
| | | filterConfig: { //çéé
置项 |
| | | remote: true |
| | | }, |
| | | customConfig: { |
| | | storage: true |
| | | }, |
| | | editConfig: { |
| | | trigger: 'click', |
| | | mode: 'row', |
| | | showStatus: true |
| | | }, |
| | | /*formConfig: { |
| | | data: { |
| | | width: '', |
| | | height: '', |
| | | quantity: '' |
| | | }, |
| | | items: [ |
| | | { field: 'width', title: t('order.width')+':', itemRender: { name: 'VxeInput' } }, |
| | | { field: 'height', title: t('order.height')+':', itemRender: { name: 'VxeInput' } }, |
| | | { field: 'quantity', title: t('order.quantity')+':', itemRender: { name: 'VxeInput' } }, |
| | | { |
| | | itemRender: { |
| | | name: 'VxeButtonGroup', |
| | | options: [ |
| | | { type: 'submit', content: t('craft.sure'), status: 'primary' }, |
| | | { type: 'reset', content: t('product.msg.reset') } |
| | | ] |
| | | } |
| | | } |
| | | ] |
| | | },*/ |
| | | columns:[ |
| | | {type:'expand',fixed:"left",slots: { content:'content' },width: 50}, |
| | | {field: 'id',width: 70, title: 'ID',filters:[{ data: '' }], slots: { default: 'state',filter: 'num2_filter' }}, |
| | | {field: 'id',width: 100, title:'å·¥ç¨å·',filters:[{ data: '' }], slots: { default: 'state',filter: 'num2_filter' }}, |
| | | {field: 'id',width: 150, title: 'åç§°',filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true}, |
| | | {field: 'id',width: 150, title: 'èç³»',filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true}, |
| | | {field: 'id',width: 150, title: 'å度',filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true}, |
| | | {field: 'id',width: 150, title: 'ç±»å',filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true}, |
| | | {field: 'id',width: 150, title: 'ç¶æ',filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true}, |
| | | {field: 'id',width: 150, title: t('order.quantity'),filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true}, |
| | | {field: 'id',width: 150, title: t('order.grossArea'),filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true}, |
| | | {field: 'id',width: 150, title: 'æµç¨æ°é',filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true}, |
| | | {field: 'id',width: 150, title: 'æµç¨å¡å·',filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true}, |
| | | |
| | | ],//è¡¨å¤´åæ° |
| | | data:null,//è¡¨æ ¼æ°æ® |
| | | toolbarConfig: { |
| | | buttons: [], |
| | | slots:{ |
| | | buttons: "toolbar_buttons" |
| | | }, |
| | | }, |
| | | |
| | | }) |
| | | </script> |
| | | |
| | | <template> |
| | | <div style="width: 100%;height: 100%"> |
| | | <h1>å·¥ç¨å表</h1> |
| | | <vxe-grid |
| | | size="small" |
| | | @filter-change="filterChanged" |
| | | height="100%" |
| | | class="mytable-scrollbar" |
| | | ref="xGrid" |
| | | v-bind="gridOptions" |
| | | v-on="gridEvents" |
| | | > |
| | | |
| | | <template #num2_filter="{ column, $panel }"> |
| | | <div> |
| | | <div v-for="(option, index) in column.filters" :key="index"> |
| | | <vxe-select v-model="option.data" :placeholder="$t('processCard.pleaseSelect')" @change="changeFilterEvent($event, option, $panel)"> |
| | | <vxe-option value="0" :label="$t('basicData.unchecked')"></vxe-option> |
| | | <vxe-option value="1" :label="$t('basicData.selected')"></vxe-option> |
| | | </vxe-select> |
| | | </div> |
| | | </div> |
| | | </template> |
| | | |
| | | <template #num1_filter="{ column, $panel }"> |
| | | <div> |
| | | <div v-for="(option, index) in column.filters" :key="index"> |
| | | <input |
| | | |
| | | type="type" |
| | | v-model="option.data" |
| | | @keyup.enter.native="$panel.confirmFilter()" |
| | | @input="changeFilterEvent($event, option, $panel)"/> |
| | | </div> |
| | | </div> |
| | | </template> |
| | | </vxe-grid> |
| | | </div> |
| | | </template> |
| | | |
| | | <style scoped> |
| | | |
| | | </style> |
| | |
| | | <el-button type="primary" @click="createProcessCard">{{ $t('processCard.establishProcessCards') }} |
| | | </el-button> |
| | | <br><br><br><br><br> |
| | | <el-button type="primary" @click="createProcessCardNo">æåºå·å建 |
| | | <el-button type="primary" @click="createProcessCardNo">{{ $t('processCard.createBySequenceNumber') }} |
| | | </el-button> |
| | | </el-main> |
| | | </div> |
| | |
| | | {code: 'customLabel', name: t('processCard.customLabelPrinting'), status: 'primary'}, |
| | | {code: 'printLabel', name: t('processCard.labelPrinting'), status: 'primary'}, |
| | | {code: 'printLabel2', name: t('processCard.labelPrinting2'), status: 'primary'}, |
| | | {code: 'sortTable', name: "æåºæ±æ»", status: 'primary'}, |
| | | {code: 'sortTable', name: t('processCard.sortSummary'), status: 'primary'}, |
| | | // {code: 'printTest', name: "æµè¯æå°", status: 'primary'}, |
| | | // {code: 'printLike', name: "åé
ç½®æå°", status: 'primary'}, |
| | | ], |
| | |
| | | <el-dialog |
| | | id="sizeCheck" |
| | | v-model="dialogSortTable" |
| | | title="æåºæ±æ»" |
| | | :title="$t('processCard.sortSummary')" |
| | | destroy-on-close |
| | | style="width: 80%;height:75% "> |
| | | <select-sort-table id="child" :orderId="tableRow.orderId"/> |
| | |
| | | filterMethod: filterChanged, width: 100 |
| | | }, |
| | | {field: 'quantity', title: t('order.quantity'), width: 90}, |
| | | {field: 'printQuantity', title: t('processCard.printQuantity'), width: 90, |
| | | editRender: {name: 'input', attrs: {placeholder: ''}}, |
| | | }, |
| | | {field: 'total_area', title: t('order.area'), width: 90}, |
| | | { |
| | | field: 'product_name', title: t('order.product'), width: 120, |
| | |
| | | filterMethod: filterChanged, width: 120 |
| | | }, |
| | | ],//表头æé® |
| | | |
| | | //表åéªè¯ |
| | | editRules: { |
| | | printQuantity: [ |
| | | { |
| | | validator ({ row }) { |
| | | const regex = /^[0-9]\d*$/ |
| | | const printQuantity = |
| | | (row.printQuantity === undefined || row.printQuantity===null || row.printQuantity==='') ? 0 : row.printQuantity |
| | | if(!regex.test(printQuantity)){ |
| | | return new Error(t('reportingWorks.enterIntegerGreaterThanEqualTo')) |
| | | } |
| | | else if(row.quantity<printQuantity){ |
| | | return new Error(t('processCard.printWarn1')) |
| | | } |
| | | } |
| | | } |
| | | ] |
| | | }, |
| | | toolbarConfig: { |
| | | buttons: [ |
| | | {code: 'print', name: t('processCard.print'), status: 'primary'}, |
| | | {code: 'customLabel', name: t('processCard.customLabelPrinting'), status: 'primary'}, |
| | | {code: 'printLabel', name: t('processCard.labelPrinting'), status: 'primary'}, |
| | | {code: 'printLabel2', name: t('processCard.labelPrinting2'), status: 'primary'}, |
| | | {code: 'printLabel3', name: 'æåæå°2', status: 'primary'}, |
| | | {code: 'printTest', name: "å¯ç¼è¾æå°", status: 'primary'}, |
| | | {code: 'invertSelection', name: "åé", status: 'primary'}, |
| | | {code: 'printLabel3', name: t('processCard.finishedProductPrinting2'), status: 'primary'}, |
| | | {code: 'printTest', name: t('processCard.editablePrinting'), status: 'primary'}, |
| | | {code: 'invertSelection', name: t('processCard.invertSelection'), status: 'primary'}, |
| | | // {code: 'printLike', name: "åé
ç½®æå°", status: 'primary'}, |
| | | ], |
| | | // import: false, |
| | |
| | | }) |
| | | |
| | | const gridEvents = { |
| | | toolbarButtonClick({code}) { |
| | | async toolbarButtonClick({code}) { |
| | | const $grid = xGrid.value |
| | | selectRecords = $grid.getCheckboxRecords() |
| | | // selectRecords.forEach(obj => { |
| | |
| | | break |
| | | } |
| | | case 'printTest': { |
| | | const errMap = await $grid.validate(true) |
| | | if (errMap) { |
| | | ElMessage.error(t('basicData.msg.checkoutLose')) |
| | | return |
| | | } |
| | | if (selectRecords === null || selectRecords === '' || selectRecords.length === 0) { |
| | | ElMessage.warning(t('searchOrder.msgList.checkOrder')) |
| | | return |
| | |
| | | toolbarConfig: { |
| | | buttons: [ |
| | | |
| | | {code: 'printLabel3', name: 'æåæå°2', status: 'primary'}, |
| | | {code: 'printLabel3', name: t('processCard.finishedProductPrinting2'), status: 'primary'}, |
| | | // {code: 'printLike', name: "åé
ç½®æå°", status: 'primary'}, |
| | | ], |
| | | // import: false, |
| | |
| | | if ($table) { |
| | | const selectRecords = $table.getCheckboxRecords() |
| | | if (selectRecords.length == 0) { |
| | | ElMessage.warning("请å¾éæäº§æ°æ®") |
| | | ElMessage.warning(t('processCard.checkProductionScheduling')) |
| | | return; |
| | | } |
| | | for (let i = 0; i < selectRecords.length; i++) { |
| | |
| | | let number = selectRecords[i].schedulingQuantity |
| | | //计åå¼å§ãç»ææ¶é´ï¼æäº§æ°éä¸è½ä¸ºç©º |
| | | if (start == null || end == null || number == null) { |
| | | ElMessage.warning("请填å
¥å¯¹åºçå¼åè¿è¡ä¿å") |
| | | ElMessage.warning(t('processCard.saveCorrespondingValues')) |
| | | return; |
| | | } |
| | | } |
| | | let selectProcesses = processVal.value |
| | | if (selectProcesses == null || selectProcesses == "") { |
| | | ElMessage.warning("è¯·éæ©æäº§å·¥åº") |
| | | ElMessage.warning(t('processCard.selectProductionSchedulingProcess')) |
| | | return; |
| | | } |
| | | |
| | |
| | | //ä¿åæäº§æ°æ® |
| | | request.post("/productionScheduling/addScheduling", schedulingData.value).then((res) => { |
| | | if (res.code == 200) { |
| | | ElMessage.success("ä¿åæå") |
| | | ElMessage.success(t('basicData.msg.saveSuccess')) |
| | | // å¯ç¨ä¿å |
| | | gridOptions.toolbarConfig.buttons[2].disabled = false |
| | | router.push({ |
| | |
| | | const selectRecords = $table.getCheckboxRecords() |
| | | if ($table) { |
| | | if (selectRecords.length == 0) { |
| | | ElMessage.warning("请å¾éæäº§æ°æ®") |
| | | ElMessage.warning(t('processCard.checkProductionScheduling')) |
| | | return; |
| | | } |
| | | |
| | | const type = await VXETable.modal.confirm('æ¨ç¡®å®è¦å é¤è¯¥æ°æ®?') |
| | | const type = await VXETable.modal.confirm(t('processCard.deleteThisData')) |
| | | if (type === 'confirm') { |
| | | let schedulingData = ref({ |
| | | scheduling: selectRecords, |
| | |
| | | |
| | | request.post("/productionScheduling/deleteScheduling", schedulingData.value).then((res) => { |
| | | if (res.code == 200) { |
| | | ElMessage.success("å 餿å") |
| | | ElMessage.success(t('basicData.msg.deleteSuccess')) |
| | | location.reload(); |
| | | } else { |
| | | ElMessage.warning(res.msg) |
| | |
| | | let inputVal = form.orderId |
| | | if ($table) { |
| | | if (selectRecords.length == 0) { |
| | | ElMessage.warning("请å¾éæäº§æ°æ®") |
| | | ElMessage.warning(t('processCard.checkProductionScheduling')) |
| | | return; |
| | | } |
| | | let schedulingData = ref({ |
| | |
| | | }) |
| | | request.post("/productionScheduling/examineScheduling", schedulingData.value).then((res) => { |
| | | if (res.code == 200) { |
| | | ElMessage.success("å®¡æ ¸æå") |
| | | ElMessage.success(t('basicData.msg.ReviewSuccess')) |
| | | router.push({ |
| | | path: '/main/processCard/ProductionScheduling', |
| | | query: {random: Math.random()} |
| | |
| | | const selectRecords = $table.getCheckboxRecords() |
| | | if ($table) { |
| | | if (selectRecords.length == 0) { |
| | | ElMessage.warning("请å¾éæäº§æ°æ®") |
| | | ElMessage.warning(t('processCard.checkProductionScheduling')) |
| | | return; |
| | | } |
| | | let schedulingData = ref({ |
| | |
| | | }) |
| | | request.post("/productionScheduling/cancelReviewScheduling", schedulingData.value).then((res) => { |
| | | if (res.code == 200) { |
| | | ElMessage.success("å审æå") |
| | | ElMessage.success(t('basicData.msg.cancelReviewSuccess')) |
| | | location.reload(); |
| | | } else { |
| | | ElMessage.warning(res.msg) |
| | |
| | | let selectState = stateValue.value |
| | | selectRecords.forEach((selectRecords) => { |
| | | if (selectRecords.schedulingQuantity > selectRecords.pendingProductionQuantity) { |
| | | ElMessage.warning("æäº§æ°éä¸è½å¤§äºå¾
æäº§æ°é") |
| | | ElMessage.warning(ElMessage.warning(t('processCard.schedulingQuantityNoQuantityScheduled'))) |
| | | //ç¦ç¨ä¿åæé® |
| | | //gridOptions.toolbarConfig.buttons[2].disabled = true |
| | | } |
| | |
| | | <el-date-picker |
| | | v-model="orderInfo.workOrderDate" |
| | | :default-time="defaultTime" |
| | | end-placeholder="ç»ææ¶é´" |
| | | :start-placeholder="$t('basicData.startDate')" |
| | | :end-placeholder="$t('basicData.endDate')" |
| | | format="YYYY/MM/DD" |
| | | start-placeholder="å¼å§æ¶é´" |
| | | type="daterange" |
| | | value-format="YYYY-MM-DD" |
| | | |
| | |
| | | /> |
| | | </el-select> |
| | | |
| | | <el-select v-model="stateValue" class="m-2" placeholder="æ¯å¦æäº§" style="width: 120px"> |
| | | <el-select v-model="stateValue" class="m-2" :placeholder="$t('processCard.whetherToScheduleProduction')" style="width: 120px"> |
| | | <el-option |
| | | v-for="item in stateOptions" |
| | | :key="item.value" |
| | |
| | | |
| | | toolbarConfig: { |
| | | buttons: [ |
| | | {'code': 'add', 'name': "åå¹¶",status: 'primary'} |
| | | {'code': 'add', 'name': t('processCard.merge'),status: 'primary'} |
| | | ], |
| | | import: false, |
| | | // export: true, |
| | |
| | | buttons: [ |
| | | {code: 'editCheckbox', name: t('basicData.edit'), status: 'primary'}, |
| | | {'code': 'titleStyle', 'name': t('processCard.labelStyle'),status: 'primary'}, |
| | | {code: 'detailsPrint', name: 'æç»æå°', status: 'primary'}, |
| | | {code: 'detailsProcessPrint', name: 'æç»åæ¶æå°', status: 'primary'}, |
| | | {code: 'detailsPrint', name: t('processCard.detailPrinting'), status: 'primary'}, |
| | | {code: 'detailsProcessPrint', name: t('processCard.detailsPrintedSeparately'), status: 'primary'}, |
| | | |
| | | ], |
| | | |
| | |
| | | :icon="Search" |
| | | type="primary" @click="getWorkOrder">{{ $t('basicData.search') }} |
| | | </el-button> |
| | | <vxe-checkbox style="margin-top:6px;margin-left:10px " v-if="!(checkedValue.value === 2 && inquiryMode === 2)" v-model="checkedValue.value" content="åå¹¶" :checked-value="1" :unchecked-value="3" ></vxe-checkbox> |
| | | <vxe-checkbox style="margin-top:6px;margin-left:10px " v-if="!(checkedValue.value === 2 && inquiryMode === 2)" v-model="checkedValue.value" :content="$t('processCard.merge')" :checked-value="1" :unchecked-value="3" ></vxe-checkbox> |
| | | </el-row> |
| | | </div> |
| | | <vxe-grid |
| | |
| | | remove(gridOptions.toolbarConfig.slots) |
| | | const button = {'code': 'printLabel', |
| | | status: 'primary', |
| | | 'name': "æåæå°2"} |
| | | 'name': t('processCard.finishedProductPrinting2')} |
| | | gridOptions.toolbarConfig.buttons.push(button) |
| | | |
| | | const button2 = {'code': 'detailPrinting', |
| | | status: 'primary', |
| | | 'name': "æç»æå°"} |
| | | 'name': t('processCard.detailPrinting')} |
| | | gridOptions.toolbarConfig.buttons.push(button2) |
| | | |
| | | } |
| | |
| | | } |
| | | case 'printLabel': { |
| | | if(rowClickIndex.value===null){ |
| | | ElMessage.warning(t('è¯·éæ©å·¥ç¨')) |
| | | ElMessage.warning(t('processCard.pleaseSelectProject')) |
| | | return |
| | | } |
| | | labelRow.value.type = 'æé«' |
| | |
| | | } |
| | | case 'detailPrinting': { |
| | | if(rowClickIndex.value===null){ |
| | | ElMessage.warning(t('è¯·éæ©å·¥ç¨')) |
| | | ElMessage.warning(t('processCard.pleaseSelectProject')) |
| | | return |
| | | } |
| | | router.push({path: '/main/processCard/PrintProjectDetails', query: {projectNo: rowClickIndex.value.project_no}}) |
| | |
| | | return[ |
| | | columns.map((column, columnIndex) => { |
| | | if (columnIndex === 0) { |
| | | return 'å计:' |
| | | return t('basicData.total') |
| | | } |
| | | if (footList.includes(column.field)) { |
| | | return sumNum(data, column.field) |
| | |
| | | const childrenData = ref({ |
| | | columns:[ |
| | | {type:'expand',fixed:"left",width: 80}, |
| | | {type: 'seq',fixed:"left", title: 'èªåº', width: 80 }, |
| | | {type: 'seq',fixed:"left", title: t('basicData.Number'), width: 80 }, |
| | | {field: 'reportingWorkTime', width: 120, title: t('reportingWorks.reportingWorkTime'), sortable: true, }, |
| | | {field: 'processId', width: 160,title: t('processCard.processId') ,filters:[{ data: '' }],slots: { filter: 'num1_filter' }}, |
| | | {field: 'code', width: 160,title: t('reportingWorks.glassNumber') ,filters:[{ data: '' }],slots: { filter: 'num1_filter' }}, |
| | |
| | | |
| | | <el-input v-model="form.project" clearable :placeholder="$t('order.project')" style="width: 130px"></el-input> |
| | | |
| | | <el-select v-model="value" clearable default-value="default_city" style="width: 120px"> |
| | | <el-select v-model="value" clearable :placeholder="$t('reportingWorks.selectProcess')" default-value="default_city" style="width: 120px"> |
| | | <el-option |
| | | v-for="item in titleSelectJson['processType']" |
| | | :key="item.id" |
| | |
| | | <div class="main-div-customer" > |
| | | <div id="selectForm"> |
| | | <el-row :gutter="0"> |
| | | <!-- <el-input--> |
| | | <!-- v-model="form.orderId"--> |
| | | <!-- clearable--> |
| | | <!-- :disabled="props.orderId"--> |
| | | <!-- :placeholder="$t('order.orderId')"--> |
| | | <!-- style="width: 130px"></el-input>--> |
| | | <el-input |
| | | v-model="form.orderId" |
| | | clearable |
| | | :disabled="props.orderId" |
| | | :placeholder="$t('order.orderId')" |
| | | style="width: 130px"></el-input> |
| | | <el-date-picker |
| | | v-model="time.date1" |
| | | :start-placeholder="$t('basicData.startDate')" |
| | |
| | | }) |
| | | |
| | | //å·¥åº |
| | | const value = ref(t('machine.edgeGrinding')) |
| | | const value = ref() |
| | | |
| | | //æ ¹æ®ä»¥ä¸åæ®µæ±æ»æ¥è¯¢ |
| | | const stateValue = ref('') |
| | |
| | | total.dataTotal = res.data.total.total * 1 |
| | | total.pageTotal = res.data.total.pageTotal |
| | | pageTotal.value = res.data.total |
| | | xGrid.value.loadData(res.data.data) |
| | | xGrid.value.reloadData(res.data.data) |
| | | gridOptions.loading = false |
| | | } else { |
| | | ElMessage.warning(res.msg) |
| | |
| | | } |
| | | |
| | | function filterChanged(column){ |
| | | //gridOptions.loading=true |
| | | gridOptions.loading = true |
| | | //ç鿡件åçå忡件åçåå |
| | | let value = column.datas[0]!=undefined?column.datas[0]:'' |
| | | let value = column.datas[0] != undefined ? column.datas[0] : '' |
| | | value = value.trim() |
| | | //夿æ¯å¦åå¨å¤é® |
| | | if (column.property.indexOf('.')>-1){ |
| | | const columnArr = column.property.split('.') |
| | | if (column.property.indexOf('.') > -1) { |
| | | const columnArr = column.property.split('.') |
| | | filterData.value[columnArr[0]] = { |
| | | [columnArr[1]]:value |
| | | [columnArr[1]]: value |
| | | } |
| | | }else{ |
| | | } else { |
| | | filterData.value[column.property] = value |
| | | } |
| | | gridOptions.loading = true |
| | | |
| | | let startTime = form.date1[0] |
| | | let endTime = form.date1[1] |
| | | let optionVal=stateValue.value |
| | | if (optionVal == '') { |
| | | optionVal = null |
| | | } |
| | | request.post(`/report/workInProgress/1/${total.pageSize}/${inputVal}/${inputProject}/${selectProcesses}/${optionVal}`, filterData.value).then((res) => { |
| | | |
| | | if (res.code == 200) { |
| | | total.dataTotal = res.data.total.total*1 |
| | | total.pageTotal=parseInt(res.data.total) |
| | | pageNum.value=1 |
| | | produceList = deepClone(res.data.data) |
| | | xGrid.value.reloadData(produceList) |
| | | gridOptions.loading=false |
| | | } else { |
| | | ElMessage.warning(res.msg) |
| | | } |
| | | //handleUpdateData(produceList) |
| | | }) |
| | | getWorkOrder() |
| | | // let selectProcesses = value.value |
| | | // let optionVal=stateValue.value |
| | | // if (optionVal == '') { |
| | | // optionVal = null |
| | | // } |
| | | // request.post(`/report/workInProgress/1/${total.pageSize}/${inputVal}/${inputProject}/${selectProcesses}/${optionVal}`, filterData.value).then((res) => { |
| | | // |
| | | // if (res.code == 200) { |
| | | // total.dataTotal = res.data.total.total*1 |
| | | // total.pageTotal=parseInt(res.data.total) |
| | | // pageNum.value=1 |
| | | // produceList = deepClone(res.data.data) |
| | | // console.log(res.data.data) |
| | | // xGrid.value.reloadData(produceList) |
| | | // gridOptions.loading=false |
| | | // } else { |
| | | // ElMessage.warning(res.msg) |
| | | // } |
| | | // //handleUpdateData(produceList) |
| | | // }) |
| | | |
| | | } |
| | | |
| | |
| | | /> |
| | | </el-select> |
| | | |
| | | <el-select v-model="value" clearable default-value="default_city" style="width: 120px"> |
| | | <el-select v-model="value" clearable :placeholder="$t('reportingWorks.selectProcess')" default-value="default_city" style="width: 120px"> |
| | | <el-option |
| | | v-for="item in titleSelectJson['processType']" |
| | | :key="item.id" |
| | |
| | | layer= res.data.layer |
| | | |
| | | //æ·»å è¡¥çç¶æå |
| | | let column = {field: 'patchStatusOther', width: 90,title: res.data.title} |
| | | let column = {field: 'patchStatusOther', width: 90,title: t('reportingWorks.patchCondition')} |
| | | gridOptions.columns.push(column) |
| | | |
| | | const s01Values = []; |
| | |
| | | }else if((row.completedQuantity*1+brokenNum*1)>row.quantity*1){ |
| | | return new Error((`${row.completedQuantity}+${brokenNum}>${row.quantity}`)) |
| | | }else if(row.quantity_card<row.completedQuantity){ |
| | | return new Error("å®å·¥æ°ä¸è½å¤§äºæµç¨å¡æ°é") |
| | | return new Error(t('reportingWorks.pleaseNumber10')) |
| | | } |
| | | const completedNum = |
| | | (row.completedQuantity === undefined || row.completedQuantity===null || row.completedQuantity==='') ? 0 : row.completedQuantity |
| | |
| | | {field: 'deviceName', width: 100,title: t('reportingWorks.deviceType'),filters:[{ data: '' }],slots: { filter: 'num1_filter' } }, |
| | | {field: 'teamsGroupsName',width: 120, title: t('reportingWorks.teamsType'),filters:[{ data: '' }],slots: { filter: 'num1_filter' } }, |
| | | {field: 'reviewedState',width: 120, title: t('processCard.reviewedState'), }, |
| | | {field: 'reviewed',width: 120, title: 'å®¡æ ¸äºº', }, |
| | | {field: 'reviewed',width: 120, title: t('processCard.reviewed'), }, |
| | | {field: 'notes',width: 120, title: t('basicData.remarks'), }, |
| | | |
| | | ],//表头æé® |
| | |
| | | {field: 'rework_area', title: t('order.area'),width:70}, |
| | | {field: 'rework_team', title: t('reportingWorks.responsibleTeam'),width:90}, |
| | | {field: 'responsible_equipment', title: t('reportingWorks.responsibleEquipment'),width:120}, |
| | | {field: 'responsible_personnel', title: '责任信æ¯',width:100}, |
| | | {field: 'responsible_personnel', title: t('rework.responsibilityInformation'),width:100}, |
| | | {field: 'rework_type', title: t('reportingWorks.breakageType'),width:80}, |
| | | {field: 'rework_reason', title: t('reportingWorks.breakageReason'),width:90}, |
| | | {field: 'rework_processes', title: t('reportingWorks.responsibleProcess'),width:80}, |
| | |
| | | {field: 'order.batch',width:120, title: t('order.batch'),filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true}, |
| | | {field: 'productId',width:120, title: t('order.productId'),filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true}, |
| | | {field: 'productName',width:120, title: t('order.product'),filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true}, |
| | | {field: 'orderNumber',width:120, title: '订ååºå·',filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true}, |
| | | {field: 'orderNumber',width:120, title: t('order.OrderNum'),filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true}, |
| | | // {field: 'buildingNumber',width:120, title: '楼å·',filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true}, |
| | | {field: 'width',width:120, title: t('order.width'),filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true}, |
| | | {field: 'height',width:120, title: t('order.height'),filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true}, |
| | |
| | | {type: 'seq',fixed:"left", title: t('basicData.Number'), width: 80 }, |
| | | {field: 'id', title: t('basicData.number'),filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true}, |
| | | {field: 'productName', title: t('product.productName'),filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: false}, |
| | | {field: 'productAbbreviation', title: '产åç®ç§°',filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: false}, |
| | | {field: 'productAbbreviation', title:t('product.msg.productAbbreviation'),filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: false}, |
| | | {field: 'basicGlassType.typeName', title: t('product.typeName'),filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: false}, |
| | | {field: 'query', title: t('product.query'),filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: false}, |
| | | {field: 'remarks', title: t('basicData.remarks'),filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: false}, |
| | |
| | | :options="options" |
| | | @change="selectChange" |
| | | clearable |
| | | :placeholder="$t('processCard.pleaseSelect')" |
| | | /> |
| | | </template> |
| | | <template #save_buttons> |
| | |
| | | |
| | | <el-dialog |
| | | v-model="dialogVisible" |
| | | title="è§è²éæ©" |
| | | :title="$t('user.roleSelection')" |
| | | width="30%" |
| | | :before-close="handleClose" |
| | | > |
| | |
| | | private LocalDate updateTime; |
| | | |
| | | //æ¥è¯¢ç¨ |
| | | //æ ç¾æå°æ°é |
| | | @TableField(select = false,exist = false) |
| | | private Integer printQuantity; |
| | | //æ¥å·¥ç¼å· |
| | | @TableField(select = false,exist = false) |
| | | private String reportingWorkId; |
| | |
| | | |
| | | List<Map<String, String>> selectPrintDetailsMp1(String orderId); |
| | | |
| | | List<Map<String, Object>> getPrintCustomDataDetails(String processId, Integer orderNumber); |
| | | List<Map<String, Object>> getPrintCustomDataDetails(String processId, Integer orderNumber, Integer printQuantity); |
| | | |
| | | List<Map<String, Object>> getPrintCustomDataProjectNo(String projectNo); |
| | | |
| | |
| | | continue; |
| | | } |
| | | Map<String, Object> itemmap = new HashMap<>(); |
| | | itemmap.put("data", flowCardMapper.getPrintCustomDataDetails(flowCard.getProcessId(),flowCard.getOrderNumber())); |
| | | itemmap.put("data", flowCardMapper.getPrintCustomDataDetails(flowCard.getProcessId(),flowCard.getOrderNumber(),flowCard.getPrintQuantity())); |
| | | list.add(itemmap); |
| | | |
| | | // å°è¯¥ processId å å
¥å·²å¤çéå |
| | |
| | | /*ogd.technology_number,*/ |
| | | ogd.glass_address, |
| | | (fc.quantity) as quantity, |
| | | (fc.quantity) as printQuantity, |
| | | round((ogd.child_width * ogd.child_height * fc.quantity / 1000000), 2) as total_area, |
| | | od.product_name, |
| | | ogd.glass_child, |
| | |
| | | ogd.technology_number, |
| | | ogd.glass_address, |
| | | (fc.quantity) as quantity, |
| | | (fc.quantity) as printQuantity, |
| | | round((ogd.child_width * ogd.child_height * fc.quantity / 1000000), 2) as total_area, |
| | | od.product_name, |
| | | ogd.glass_child, |
| | |
| | | od.processing_note as processingNote, |
| | | width, |
| | | height, |
| | | fc.quantity, |
| | | #{printQuantity} as quantity, |
| | | od.order_number as orderNumber, |
| | | fc.technology_number as technologyNumber, |
| | | od.building_number as buildingNumber, |