| | |
| | | updateAmountSuccessfully:'Updated amount successfully', |
| | | updateOrderState:'Order status update succeeded', |
| | | } |
| | | |
| | | }, |
| | | searchOrder:{ |
| | | createOrder:'Create', |
| | |
| | | reset:'Reset', |
| | | sure:'Sure', |
| | | }, |
| | | |
| | | workOrder:{ |
| | | workOrder:'Work Order Management', |
| | | productionId:'Production Order Number', |
| | |
| | | technologyNumber:'Chip Sequence', |
| | | otherRemarks:'Original Film Requirement', |
| | | }, |
| | | |
| | | reportingWorks:{ |
| | | glassAddress:'Glass Address', |
| | | WorkReportingManagement:'Work Reporting Management ', |
| | |
| | | thisCompletedQuantity:'This Completed Quantity', |
| | | thisWornQuantity:'This Worn Quantity', |
| | | passAudit:'Pass The Audit', |
| | | |
| | | |
| | | }, |
| | | |
| | | |
| | | |
| | | |
| | | productStock:{ |
| | | inventoryQuery:'Stock Inquiry', |
| | |
| | | quantityToBeStockedIn:'Quantity To Be Stocked In', |
| | | return:'Return', |
| | | reverseReviewList:'Reverse Review List', |
| | | |
| | | receivedSuccessfully:'Successfully entered the warehouse', |
| | | deliverySuccessful:"Successfully transferred out of warehouse ", |
| | | successfullyRetrieved:'Successfully claimed', |
| | |
| | | reviewSuccessful:'Successfully review ', |
| | | invalidSuccessfully:'Successfully cancel', |
| | | reverseReviewSuccessful:'Successfully re-audit', |
| | | |
| | | confirmWithdrawal:'Take Out Confirmation', |
| | | pickingOutRecords:'Take Out Records', |
| | | confirmTransfer:'Mutual Exchange Confirmation', |
| | |
| | | reworkRecords:'Rework Records', |
| | | warehousingRecords:'Warehousing Records', |
| | | outboundRecords:'Outbound Records', |
| | | |
| | | |
| | | pleaseSelectTheTypeOfWithdrawal:'Please select the type of withdrawal', |
| | | pleaseSelectTheTypeOfRework:'Please select the type of rework', |
| | | receivedQuantity:'Received Quantity', |
| | |
| | | receivedReworkedQuantity:'Received/Reworked Quantity', |
| | | inventoryQuantity:'Inventory Quantity', |
| | | availableQuantity:'Available Quantity', |
| | | |
| | | newOrderNumber:'New Order Number', |
| | | newOrderId:'New Order Id', |
| | | transferOrderNumber:'Mutual Exchange Order Number', |
| | | operationOrderNumber:'Operation Order Number', |
| | | inventoryArea:'Inventory Location', |
| | | |
| | | |
| | | dataVerificationFailed:'Fail data check', |
| | | unselectedData:'No data selected', |
| | | pleaseEnterAPositiveInteger:'Please enter a positive integer', |
| | |
| | | claimedQuantityCannotBeEmptyOr0:'The claimed quantity cannot be empty or 0', |
| | | theReworkQuantityCannotBeGreaterThanTheOrderQuantity:'The quantity of rework cannot be greater than the number of orders', |
| | | reworkQuantityCannotBeEmptyOr0:'Rework quantity cannot be empty or 0', |
| | | |
| | | storageTime:'Warehouse Entry Time', |
| | | outboundTime:'Time Of Leaving The Warehouse', |
| | | modificationTime:'modification Time', |
| | |
| | | reviewed:'Audit Staff', |
| | | documentStatus:'Document Status', |
| | | status:'Status', |
| | | |
| | | totalNumberOfOrders :'Total Number Of Orders', |
| | | quantityAlreadyInStock:'Quantity Already In Stock', |
| | | totalArea:'Total Area', |
| | |
| | | customerHomePage:'Customer Homepage', |
| | | increaseCustomers:'Increase Customers', |
| | | resetting:'Revoke', |
| | | |
| | | }, |
| | | delivery:{ |
| | | delivery:'Delivery', |
| | |
| | | deliveryNoteId:'Delivery Note Id', |
| | | deliveryNoteNumber:'Delivery Note Number', |
| | | deliveryDate:"Delivery Date ", |
| | | |
| | | }, |
| | | replenish:{ |
| | | patchManagement:'Patch Management', |
| | | addPatches:"Add Patches ", |
| | | printPatches:'Print Patches', |
| | | patchNumber:'Patch Number', |
| | | |
| | | mark:'Mark', |
| | | sliceMarking:'Slice Marking', |
| | | |
| | | |
| | | |
| | | }, |
| | | rework:{ |
| | | reworkManagement:'Rework Management', |
| | |
| | | reworkProcess:'Rework Process', |
| | | reworkType:'Rework Type', |
| | | reworkArea:'Rework Area', |
| | | |
| | | 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', |
| | |
| | | sizeReview:'尺寸审核', |
| | | reportForms:'报表', |
| | | print:'打印', |
| | | export:'导出', |
| | | msg:{ |
| | | max255:"最多输入255个字符", |
| | | range99999Dec2: |
| | |
| | | saveFail:'保存失败', |
| | | cancelReviewSuccess:'反审成功', |
| | | ReviewSuccess:'审核成功', |
| | | |
| | | ServerConnectionError:'服务器连接错误', |
| | | deleteSuccess:'删除成功', |
| | | deleteFail:'删除失败', |
| | | cancelReviewFail:'反审失败', |
| | | reviewFail:'审核失败', |
| | | noProductDataInTheTable:'表格中无产品数据', |
| | | tableDataExceedsMaximumLimit:'表格数据超过最大限制', |
| | | |
| | | |
| | | } |
| | | }, |
| | | product:{ |
| | |
| | | cancelReview:'反审', |
| | | theProductHasBeenReviewedAndCannotBeDeleted:'产品已审核,无法删除', |
| | | } |
| | | |
| | | |
| | | }, |
| | | |
| | | order:{ |
| | | orderHomePage:'订单首页', |
| | | orderReport:'订单明细报表', |
| | |
| | | importMaxCheckFailLast:'条,请分订单导入', |
| | | updateAmountSuccessfully:'更新金额成功', |
| | | updateOrderState:'更新订单状态成功', |
| | | |
| | | calculationAreaPrompt1:'存在', |
| | | calculationAreaPrompt2:'条结算单片面积小于', |
| | | calculationAreaPrompt3:'是否按照', |
| | | calculationAreaPrompt4:'计算', |
| | | warning:'提示', |
| | | } |
| | | |
| | | }, |
| | |
| | | msgList:{ |
| | | checkOrder:'未查询到订单信息,请先单击订单' |
| | | } |
| | | |
| | | }, |
| | | craft:{ |
| | | glassAddress:'标记', |
| | |
| | | deleteNoProcedure:'删除失败,检查下工序是否已报工', |
| | | pleaseCheckTheRequiredData:'请勾选需要的数据', |
| | | }, |
| | | |
| | | reportingWorks:{ |
| | | glassAddress:'片标记', |
| | | WorkReportingManagement:'报工管理', |
| | |
| | | thisWornQuantity:'本工序次破', |
| | | passAudit:'审核通过', |
| | | |
| | | ThanEqualTo1:'请输入大于等于', |
| | | ThanEqualTo2:'的数字', |
| | | |
| | | selectResponsibleTeam:'请选择责任班组', |
| | | selectWorkReportingTeam:'请选择责任班组', |
| | | successfulModificationOfWorkApplication:'报工修改成功', |
| | |
| | | qualityInsTime:'质检时间', |
| | | completedArea:'完工面积', |
| | | wornArea:'次破面积', |
| | | |
| | | pleaseGreaterThanOrEqual1:'请输入大于等于', |
| | | pleaseGreaterThanOrEqual2:'的数字', |
| | | lossCount1:'损耗数', |
| | | lossCount2:'不能大于', |
| | | pleaseCheckTheOrderNumber1:'请检查订单序号', |
| | | pleaseCheckTheOrderNumber2:'报工数量是否相同', |
| | | pleaseNumber1:'序号', |
| | | pleaseNumber2:'小片顺序', |
| | | pleaseNumber3:'实际可报工数量', |
| | | pleaseNumber4:'报工数量', |
| | | pleaseNumber5:'请刷新界面重新报工', |
| | | pleaseNumber6:'序号', |
| | | pleaseNumber7:'的数量不能大于上工序数量', |
| | | pleaseNumber8:'请输入序号', |
| | | pleaseNumber9:'正确的完工或次破数量', |
| | | |
| | | }, |
| | | |
| | | |
| | | |
| | | |
| | | productStock:{ |
| | | inventoryQuery:'库存查询', |
| | |
| | | quantityToBeStockedIn:'待入库数量', |
| | | return:'返回', |
| | | reverseReviewList:'反审列表', |
| | | |
| | | |
| | | |
| | | receivedSuccessfully:'入库成功', |
| | | deliverySuccessful:"出库成功 ", |
| | | successfullyRetrieved:'领出成功', |
| | |
| | | reviewSuccessful:'审核成功', |
| | | invalidSuccessfully:'返库成功', |
| | | reverseReviewSuccessful:'反审成功', |
| | | |
| | | confirmWithdrawal:'确认领出', |
| | | pickingOutRecords:'领出记录', |
| | | confirmTransfer:'确认调拨', |
| | |
| | | reworkRecords:'返工记录', |
| | | warehousingRecords:'入库记录', |
| | | outboundRecords:'出库记录', |
| | | |
| | | |
| | | pleaseSelectTheTypeOfWithdrawal:'请选择领出类型', |
| | | pleaseSelectTheTypeOfRework:'请选择返工类型', |
| | | receivedQuantity:'领出数量', |
| | |
| | | receivedReworkedQuantity:'领出/返工数量', |
| | | inventoryQuantity:'库存数量', |
| | | availableQuantity:'可用数量', |
| | | |
| | | newOrderNumber:'新订单序号', |
| | | newOrderId:'新订单号', |
| | | transferOrderNumber:'调拨单号', |
| | | operationOrderNumber:'操作单号', |
| | | inventoryArea:'库存区域', |
| | | |
| | | |
| | | dataVerificationFailed:'数据校验失败', |
| | | unselectedData:'未选中数据', |
| | | pleaseEnterAPositiveInteger:'请输入正整数', |
| | |
| | | claimedQuantityCannotBeEmptyOr0:'领出数量不能为空或者是0', |
| | | theReworkQuantityCannotBeGreaterThanTheOrderQuantity:'返工数量不能大于订单数', |
| | | reworkQuantityCannotBeEmptyOr0:'返工数量不能为空或者是0', |
| | | |
| | | storageTime:'入库时间', |
| | | outboundTime:'出库时间', |
| | | modificationTime:'修改时间', |
| | |
| | | reviewed:'审核人', |
| | | documentStatus:'单据状态', |
| | | status:'状态', |
| | | |
| | | totalNumberOfOrders :'订单总数', |
| | | quantityAlreadyInStock:'已入数量', |
| | | totalArea:'总面积', |
| | | singlePieceArea:'单片面积', |
| | | perimeter:'周长', |
| | | returnToWarehouse:'撤销', |
| | | |
| | | entryFailure:'入库失败', |
| | | entry:'入库', |
| | | failedToRetrieve:'领出失败', |
| | | deliveryFailed:'发货失败', |
| | | reworkFailed:'返工失败', |
| | | transferFailed:'调拨失败', |
| | | approved:'已审核', |
| | | notPassed:'未通过', |
| | | cancellationFailed:'反作废失败', |
| | | voidFailed:'作废失败', |
| | | staterOperationOrderNumber:'调拨销售单号', |
| | | endOperationOrderNumber:'调拨序号', |
| | | typeClaim:'领出类型', |
| | | |
| | | |
| | | }, |
| | |
| | | unpaidQuantity:"未发数量 ", |
| | | availableStock:'可用库存', |
| | | deliveryQuantity:'发货数量', |
| | | |
| | | pleaseEnterTheAmountOfFunds:'请输入项目名称', |
| | | pleaseSelectPaymentTerms:"请选择付款条件 ", |
| | | pleaseEnterThePaymentMethod:"请输入收款方式 ", |
| | |
| | | pleaseEnterANumericalValueGreaterThanOrEqualTo0:'请输入大于等于0的数值', |
| | | theShipmentQuantityCannotBeGreaterThanTheInventoryQuantity:"发货数量不能大于库存数 ", |
| | | theShipmentQuantityCannotBeEmptyOr0:"发货数量不能为空或者是0 ", |
| | | |
| | | paymentTerms:'付款条件', |
| | | paymentDate:"收款日期 ", |
| | | selectDate:'选择日期', |
| | |
| | | addPatches:"补片新增 ", |
| | | printPatches:'补片打印', |
| | | patchNumber:'补片单号', |
| | | |
| | | mark:'标记', |
| | | sliceMarking:'片标记', |
| | | |
| | |
| | | reworkProcess:'返工工序', |
| | | reworkType:'返工类型', |
| | | reworkArea:'返工面积', |
| | | |
| | | PleaseSelectAReworkTeam:'请选择返工班组', |
| | | TheReworkQuantityCannotBeGreaterThanTheSecondBreakQuantity:'返工数量不能大于次破数量', |
| | | reworkQuantityCannotBeEmptyOr0:'返工数量不能为空或者是0', |
| | | |
| | | }, |
| | | |
| | | |
| | | role:{ |
| | | id:'ID', |
| | |
| | | permission:'权限', |
| | | rolePermissions:'角色权限', |
| | | permissionSelection:"权限选择 ", |
| | | |
| | | |
| | | ConfirmModifyingRolePermissions:'确认修改角色权限?', |
| | | PleaseEnterANewRole:'请输入新角色', |
| | | AddANewRole:'新增角色', |
| | | CannotBeEmptyAndTheLengthCannotExceed255:'不能为空且长度不能超过255', |
| | | |
| | | }, |
| | | |
| | | user:{ |
| | | userId:'用户ID', |
| | | userHomepage:'用户首页', |
| | |
| | | OldPassword:'旧密码', |
| | | TheNewPassword:'新密码', |
| | | ConfirmPassword:'确认密码', |
| | | |
| | | OldPasswordCannotBeEmpty:'旧密码不能为空', |
| | | TheNewPasswordCannotBeEmpty:'新密码不能为空', |
| | | ThePasswordLengthCannotBeLessThan6OrMoreThan16:'密码长度不能低于6或超过16', |
| | | ConfirmPasswordCannotBeEmpty:'确认密码不能为空', |
| | | TheTwoPasswordsAreNotTheSame:'两次密码不相同', |
| | | OldPasswordError:'旧密码错误', |
| | | |
| | | |
| | | }, |
| | | |
| | | orderBasicData:{ |
| | | order:'订单', |
| | | orderType:'订单类型', |
| | |
| | | paymentTerms:'付款条件', |
| | | payMethod:'收款方式', |
| | | delivery:'送货', |
| | | |
| | | basicType:'基础类型', |
| | | name:'名称', |
| | | glassCategory:'玻璃类别', |
| | | level:'类别等级', |
| | | firstLevel:'一级类别', |
| | | towLevel:'二级类别', |
| | | |
| | | }, |
| | | |
| | | machine:{ |
| | | basicId:'设备编号', |
| | | basicName:'设备名称', |
| | |
| | | process:'所在工序', |
| | | personnel:'维修/保养人员', |
| | | cost:'费用', |
| | | |
| | | equipmentSituation:'设备情况', |
| | | equipmentAddition:'设备新增', |
| | | maintenanceAndRepair:'保养与维修', |
| | |
| | | maintenanceAndRepairEdit:'保养与维修编辑', |
| | | service:'维修', |
| | | maintain:'保养', |
| | | |
| | | faultCount:'维修次数', |
| | | maintenanceCount:'保养次数', |
| | | faultLastTime:'最后维修时间', |
| | | maintenanceLastTime:'最后保养时间', |
| | | faultCost:'维修费用', |
| | | maintenanceCost:'保养费用', |
| | | |
| | | |
| | | deviceEditing:'设备编辑', |
| | | standardName:'标准名称', |
| | | purchaseTime:'购买时间', |
| | | installationTime:'安装时间', |
| | | maintenanceCycle:'保养周期', |
| | | cutting:'切割', |
| | | edgeGrinding:'磨边', |
| | | tempering:'钢化', |
| | | }, |
| | | report:{ |
| | | productionReport:'生产报表', |
| | | workInProgressReport:'在制品报表', |
| | | processToBeCompleted:'工序待完成报表', |
| | | productionAndShippingProgress:'生产发货进度报表', |
| | | processCardProgress:'流程卡进度报表', |
| | | orderPlanDecomposition:'订单计划分解报表', |
| | | secondaryBrokenReport:'次破报表', |
| | | crossProcessBreakdown:'跨工序次破报表', |
| | | teamOutput:'班组产量报表', |
| | | splittingDetails:'分架明细报表', |
| | | TaskCompletionStatus:'任务完成情况报表', |
| | | rawMaterialRequisition:'原片领料报表', |
| | | qualityReport:'品质报表', |
| | | yieldReport:'成品率报表', |
| | | workingProcedure:'工序', |
| | | inventoryArea:'库存面积', |
| | | pleaseSelectADateFirst:'请先选择日期', |
| | | pleaseSelectAProcessFirst:'请先选择工序', |
| | | theFilteringTimeForExportCannotExceed180Days:'导出的筛选时间不能超过180天', |
| | | orderTime :'下单时间', |
| | | deliveryDate:'交货日期', |
| | | completedQuantity:'已完成数量', |
| | | completedArea:'已完成面积', |
| | | unfinishedQuantity :'未完成数量', |
| | | unfinishedArea:'未完成面积', |
| | | inventoryNum:'入库数量', |
| | | shippedQuantity :'发货数量', |
| | | area:'发货面积', |
| | | noDataFoundForThisOrder:'未查询到此订单数据', |
| | | startTime:'切割开始时间', |
| | | daysDifference :'生产天数', |
| | | accomplish:'是否清单', |
| | | receivedNo:'未入库数量', |
| | | projectNo :'工程编号', |
| | | quantityClaimed :'已领数量', |
| | | areaClaimed :'已领面积', |
| | | dateClaimed :'领出日期', |
| | | quantityMax :'投入数量', |
| | | patchNum :'补片数量', |
| | | finished :'成品率', |
| | | finishedProductReport :'成品报表', |
| | | }, |
| | | productionBasicData:{ |
| | | basicDataQuery :'基础数据查询', |
| | | newTypeOfSecondaryDamageAdded :'次破类型新增', |
| | | reasonForSecondaryFailureAdded :'次破原因新增', |
| | | teamAdditionAndAddition :'班组新增新增', |
| | | id:'id', |
| | | basicName:'类别', |
| | | basicDataEdit:'基础数据修改', |
| | | teamName:'班组名称', |
| | | processInvolved:'所在工序', |
| | | }, |
| | | mainIngredient:{ |
| | | materialInformation :'物料资料', |
| | | materialAddition :'物料新增', |
| | | originalFilm :'原片', |
| | | accessories :'辅料', |
| | | materialCode :'物料编码', |
| | | pleaseSelectACategory :'请选择类别', |
| | | films :'膜系', |
| | | pleaseEnterData :'请输入数据', |
| | | pleaseEnter :'请输入', |
| | | }, |
| | | mainIngredientStock:{ |
| | | materialName :'物料名称', |
| | | producer :'产地', |
| | | dateOfManufacture :'生产日期', |
| | | selectIngredientsStock :'物料库存', |
| | | materialOutbound :'物料出库', |
| | | returnToStorage :'返库', |
| | | inventory :'库存', |
| | | engineering :'工程', |
| | | inventoryOrganization :'库存组织', |
| | | id :'库存编号', |
| | | projectNo :'工程号', |
| | | planQuantity :'计划数量', |
| | | qualityGuaranteePeriod :'保质期', |
| | | pleaseSelectInventoryOrganization :'请选择库存组织', |
| | | pleaseEnterTheQuantity :'请输入数量', |
| | | pleaseDateOfManufacture :'请选择生产日期', |
| | | materialOutboundId :'出库单号', |
| | | materialRequisitionPersonnel :'领料员', |
| | | materialRequisitionTeam :'领料班组', |
| | | outboundType :'出库类型', |
| | | warehouseManager :'仓管员', |
| | | materialRequisitionDate :'领料日期', |
| | | reviewed :'审核员', |
| | | reviewedTime :'审核时间', |
| | | outboundQuantity :'出库数量', |
| | | materialOutboundType :'材料出库类型', |
| | | pleaseOutboundType :'请选择出库类型', |
| | | pleaseMaterialRequisitionPersonnel :'请输入领料员', |
| | | pleaseMaterialRequisitionTeam :'请输入领料班组', |
| | | pleaseOrderId :'请输入销售单号', |
| | | theOutboundQuantityCannotBeGreaterThanTheAvailableQuantity :'出库数量不能大于可用数量', |
| | | theOutboundQuantityCannotBeEmptyOrEqualTo0 :'出库数量不能为空或者是等于0', |
| | | theReturnQuantityCannotBeEmptyOrEqualTo0 :'返库数量不能为空或者是等于0', |
| | | returningId :'返库单号', |
| | | returningType :'返库类型', |
| | | returningAdd :'返库新增', |
| | | returnQuantity :'返库数量', |
| | | materialReturnType :'材料返库类型', |
| | | createTime :'返库日期', |
| | | }, |
| | | mainBasicData:{ |
| | | BasicData :'基础数据', |
| | | operateTypeName :'名称', |
| | | operateType :'别称', |
| | | type :'类型', |
| | | takeOut :'领出', |
| | | } |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | } |
| | |
| | | <div id="main-div"> |
| | | <div id="div-title"> |
| | | <el-breadcrumb :separator-icon="ArrowRight"> |
| | | <el-breadcrumb-item @click="changeRouter(1)" :class="indexFlag===1?'indexTag':''" :to="{ path: '/main/warehouseBasicData/warehouseSearchBasicData' }">基础数据</el-breadcrumb-item> |
| | | <el-breadcrumb-item @click="changeRouter(1)" :class="indexFlag===1?'indexTag':''" :to="{ path: '/main/warehouseBasicData/warehouseSearchBasicData' }">{{$t('mainBasicData.BasicData')}}</el-breadcrumb-item> |
| | | <el-breadcrumb-item v-show="false" :to="{ path: '/main/order/orderReport' }">{{$t('productStock.reportForms')}}</el-breadcrumb-item> |
| | | </el-breadcrumb> |
| | | </div> |
| | |
| | | input:'' |
| | | }) |
| | | let options=ref([ |
| | | { label: "库存组织", |
| | | { label: t('mainIngredientStock.inventoryOrganization'), |
| | | value: "inventoryOrganization", |
| | | }, |
| | | { label: "领出", |
| | | { label: t('mainBasicData.takeOut'), |
| | | value: "takeOut", |
| | | }, |
| | | { label: "材料出库类型", |
| | | { label: t('mainIngredientStock.materialOutboundType'), |
| | | value: "outboundType", |
| | | }, |
| | | { label: "材料返库类型", |
| | | { label: t('mainIngredientStock.materialReturnType'), |
| | | value: "returningType", |
| | | }, |
| | | ]) |
| | |
| | | const emit = defineEmits(['gaveParent']) |
| | | const saveBasicData = () =>{ |
| | | if (basic.value.operateType[0]==='inventoryOrganization'){ |
| | | basic.value.type='库存组织' |
| | | basic.value.type=t('mainIngredientStock.inventoryOrganization') |
| | | } |
| | | else if(basic.value.operateType[0]==='takeOut'){ |
| | | basic.value.type='领出' |
| | | basic.value.type=t('mainBasicData.takeOut') |
| | | } |
| | | else if(basic.value.operateType[0]==='outboundType'){ |
| | | basic.value.type='材料出库类型' |
| | | basic.value.type=t('mainIngredientStock.materialOutboundType') |
| | | } |
| | | else if(basic.value.operateType[0]==='returningType'){ |
| | | basic.value.type='材料返库类型' |
| | | basic.value.type=t('mainIngredientStock.materialReturnType') |
| | | } |
| | | if(basic.value.operateType[0]==='' || basic.value.input===''){ |
| | | return |
| | | } |
| | | request.post(`/BasicWarehouse/addBasicWarehouse`, basic.value).then(res => { |
| | | if (res.data) { |
| | | ElMessage.success('保存成功') |
| | | ElMessage.success(t('basicData.msg.saveSuccess')) |
| | | emit('gaveParent', true) |
| | | } |
| | | }).catch((err)=>{ |
| | | ElMessage.error('系统错误') |
| | | ElMessage.error(t('basicData.msg.ServerConnectionError')) |
| | | router.push("/login") |
| | | }) |
| | | } |
| | |
| | | submitArr.type = basic.value.type |
| | | submitArr.operateTypeName = basic.value.input |
| | | if(basic.value.input===''){ |
| | | ElMessage.warning('请输入数据') |
| | | ElMessage.warning(t('mainIngredient.pleaseEnterData')) |
| | | }else{ |
| | | request.post(`/BasicWarehouse/updateBasicWarehouse`, submitArr).then(res => { |
| | | if (res.data) { |
| | | ElMessage.success('修改成功') |
| | | ElMessage.success(t('basicData.msg.saveSuccess')) |
| | | emit('gaveParent', true) |
| | | } |
| | | }).catch((err)=>{ |
| | | ElMessage.error('系统错误') |
| | | ElMessage.error(t('basicData.msg.ServerConnectionError')) |
| | | router.push("/login") |
| | | }) |
| | | } |
| | |
| | | <template> |
| | | <div> |
| | | <el-row> |
| | | <el-col :span="4">基础类型:</el-col> |
| | | <el-col :span="4">{{$t('orderBasicData.basicType')}}:</el-col> |
| | | <el-col :span="12"> |
| | | <el-cascader |
| | | v-model="basic.operateType" |
| | |
| | | </el-col> |
| | | </el-row> |
| | | <el-row> |
| | | <el-col :span="4">名称:</el-col> |
| | | <el-col :span="4">{{$t('orderBasicData.name')}}:</el-col> |
| | | <el-col :span="12"> |
| | | <el-input v-model="basic.input"/> |
| | | </el-col> |
| | |
| | | <el-row> |
| | | <el-col :span="4"></el-col> |
| | | <el-col :span="12"> |
| | | <el-button v-show="!props.rowIndex" @click="saveBasicData" type="primary">新增</el-button> |
| | | <el-button v-show="props.rowIndex" @click="updateBasicData" type="primary">修改</el-button> |
| | | <el-button v-show="!props.rowIndex" @click="saveBasicData" type="primary">{{$t('basicData.insert')}}</el-button> |
| | | <el-button v-show="props.rowIndex" @click="updateBasicData" type="primary">{{$t('basicData.update')}}</el-button> |
| | | |
| | | </el-col> |
| | | </el-row> |
| | |
| | | //表头参数 |
| | | columns:[ |
| | | {title: t('basicData.operate'), width: 110, slots: { default: 'button_slot' },fixed:"left",}, |
| | | {type: 'seq', title: '序号', width: 80 ,fixed:"left",}, |
| | | {field:'operateTypeName',title: '名称'}, |
| | | {field:'operateType',title: '别称'}, |
| | | {field:'type',title: '类型'}, |
| | | {field:'createTime',title: '创建日期'}, |
| | | {type: 'seq', title: t('basicData.Number'), width: 80 ,fixed:"left",}, |
| | | {field:'operateTypeName',title: t('mainBasicData.operateTypeName')}, |
| | | {field:'operateType',title: t('mainBasicData.operateType')}, |
| | | {field:'type',title: t('mainBasicData.type')}, |
| | | {field:'createTime',title: t('basicData.creationTime')}, |
| | | |
| | | |
| | | ], |
| | |
| | | //表头按钮 |
| | | toolbarConfig: { |
| | | buttons: [ |
| | | {'code': 'add', 'name': '新增',status: 'primary'}, |
| | | {'code': 'add', 'name': t('basicData.insert'),status: 'primary'}, |
| | | ], |
| | | |
| | | // import: false, |
| | |
| | | ElMessage.warning(t('searchOrder.msgDeleteFail')) |
| | | } |
| | | }).catch((err)=>{ |
| | | ElMessage.error('系统错误') |
| | | ElMessage.error(t('basicData.msg.ServerConnectionError')) |
| | | router.push("/login") |
| | | }) |
| | | break |
| | |
| | | <el-button @click="getTableRow(row,'edit')" |
| | | v-if="userStore.user.permissions.indexOf('warehouseSearchBasicData.edit') > -1" |
| | | link type="primary" size="small">{{ $t('basicData.edit') }}</el-button> |
| | | <el-popconfirm @confirm="getTableRow(row,'delete')" title="确定删除数据?"> |
| | | <el-popconfirm @confirm="getTableRow(row,'delete')" :title="$t('searchOrder.deleteConfirm')"> |
| | | <template #reference> |
| | | <el-button link type="primary" size="small">{{ $t('basicData.delete') }}</el-button> |
| | | </template> |
| | |
| | | import useUserInfo from "@/stores/userInfo" |
| | | import GlassType from "@/components/sd/product/GlassType.vue" |
| | | import useProductGlassTypeStore from "@/stores/sd/product/productGlassType" |
| | | import {useI18n} from "vue-i18n"; |
| | | |
| | | |
| | | const { t } = useI18n() |
| | | const router = useRouter() |
| | | const route = useRoute() |
| | | const value = ref('') |
| | | const options = [ |
| | | { |
| | | value: '原片', |
| | | label: '原片' |
| | | value: t('mainIngredient.originalFilm'), |
| | | label: t('mainIngredient.originalFilm') |
| | | }, |
| | | { |
| | | value: '辅料', |
| | | label: '辅料', |
| | | value: t('mainIngredient.accessories'), |
| | | label: t('mainIngredient.accessories'), |
| | | } |
| | | ] |
| | | |
| | |
| | | filterData[item.OperateType]=item.Type |
| | | const customerName = item.Type |
| | | if(customerName === null || customerName === undefined || customerName === ''){ |
| | | ElMessage.error('请输入'+item.OperateTypeName) |
| | | ElMessage.error(t('mainIngredient.pleaseEnter')+item.OperateTypeName) |
| | | isBool=false |
| | | return |
| | | } |
| | |
| | | |
| | | let materialStore |
| | | |
| | | if(value.value==='原片'){ |
| | | if(value.value===t('mainIngredient.originalFilm')){ |
| | | materialStore={ |
| | | id:ruleForm.value.id, |
| | | type:value.value, |
| | |
| | | width:BasicData.value[0].Type, |
| | | height:BasicData.value[1].Type |
| | | } |
| | | }else if(value.value==='辅料'){ |
| | | }else if(value.value===t('mainIngredient.accessories')){ |
| | | materialStore={ |
| | | id:ruleForm.value.id, |
| | | type:value.value, |
| | |
| | | request.post("/MaterialStore/saveMaterialStore", materialStore).then((res) => { |
| | | if(res.code==200 && res.data===true){ |
| | | resetForm() |
| | | ElMessage.success('保存成功') |
| | | ElMessage.success(t('basicData.msg.saveSuccess')) |
| | | }else{ |
| | | ElMessage.warning("保存失败") |
| | | ElMessage.warning(t('basicData.msg.saveFail')) |
| | | } |
| | | }).catch((err)=>{ |
| | | ElMessage.error('系统错误') |
| | | ElMessage.error(t('basicData.msg.ServerConnectionError')) |
| | | router.push("/login") |
| | | }) |
| | | } |
| | |
| | | <div> |
| | | <el-row> |
| | | <el-col :span="4"> |
| | | <el-select v-model="value" placeholder="请选择类别" @change="getWork"> |
| | | <el-select v-model="value" :placeholder="$t('mainIngredient.pleaseSelectACategory')" @change="getWork"> |
| | | <el-option |
| | | v-for="item in options" |
| | | :key="item.value" |
| | |
| | | v-for="item in BasicData" > |
| | | <el-col :span="4.5" > |
| | | {{item.OperateTypeName}}: |
| | | <el-select filterable v-if="item.OperateTypeName=='膜系'" v-model="item.Type" placeholder="请输入数据" style="width: 150px; height: 30px;" > |
| | | <el-select filterable v-if="item.OperateTypeName==$t('mainIngredient.films')" v-model="item.Type" :placeholder="$t('mainIngredient.pleaseEnterData')" style="width: 150px; height: 30px;" > |
| | | <el-option |
| | | v-for="item in titleSelectJson" |
| | | :key="item.id" |
| | |
| | | :value="item.basicName" |
| | | /> |
| | | </el-select> |
| | | <el-input v-else v-model="item.Type" placeholder="请输入数据" style="width: 150px; height: 30px;" /> |
| | | <el-input v-else v-model="item.Type" :placeholder="$t('mainIngredient.pleaseEnterData')" style="width: 150px; height: 30px;" /> |
| | | |
| | | </el-col> |
| | | |
| | |
| | | <div id="main"> |
| | | <div id="div-title"> |
| | | <el-breadcrumb :separator-icon="ArrowRight"> |
| | | <el-breadcrumb-item @click="changeRouter(1)" :class="indexFlag===1?'indexTag':''" :to="{ path: '/main/ingredients/SelectIngredients' }">物料资料</el-breadcrumb-item> |
| | | <el-breadcrumb-item @click="changeRouter(2)" :class="indexFlag===2?'indexTag':''" :to="{ path: '/main/ingredients/CreateIngredients' }">物料新增</el-breadcrumb-item> |
| | | <el-breadcrumb-item v-show="false" :to="{ path: '/main/order/orderReport' }">报表</el-breadcrumb-item> |
| | | <el-breadcrumb-item @click="changeRouter(1)" :class="indexFlag===1?'indexTag':''" :to="{ path: '/main/ingredients/SelectIngredients' }">{{$t('mainIngredient.materialInformation')}}</el-breadcrumb-item> |
| | | <el-breadcrumb-item @click="changeRouter(2)" :class="indexFlag===2?'indexTag':''" :to="{ path: '/main/ingredients/CreateIngredients' }">{{$t('mainIngredient.materialAddition')}}</el-breadcrumb-item> |
| | | <el-breadcrumb-item v-show="false" :to="{ path: '/main/order/orderReport' }">{{$t('mainIngredient.materialAddition')}}</el-breadcrumb-item> |
| | | </el-breadcrumb> |
| | | |
| | | </div> |
| | |
| | | }) |
| | | request.post("/MaterialStore/deleteMaterialStore",flowData.value).then((res) => { |
| | | if(res.code==200 && res.data===true){ |
| | | ElMessage.success("删除成功") |
| | | ElMessage.success(t('basicData.msg.deleteSuccess')) |
| | | router.push({path:'/main/ingredients/SelectIngredients',query:{random:Math.random()}}) |
| | | }else{ |
| | | ElMessage.warning("删除失败") |
| | | ElMessage.warning(t('basicData.msg.deleteFail')) |
| | | router.push("/login") |
| | | } |
| | | }).catch((err)=>{ |
| | | ElMessage.error('系统错误') |
| | | ElMessage.error(t('basicData.msg.ServerConnectionError')) |
| | | router.push("/login") |
| | | }) |
| | | return |
| | |
| | | const value = ref('') |
| | | const options = [ |
| | | { |
| | | value: '原片', |
| | | label: '原片' |
| | | value: t('mainIngredient.originalFilm'), |
| | | label: t('mainIngredient.originalFilm') |
| | | }, |
| | | { |
| | | value: '辅料', |
| | | label: '辅料', |
| | | value: t('mainIngredient.accessories'), |
| | | label: t('mainIngredient.accessories'), |
| | | } |
| | | ] |
| | | |
| | |
| | | |
| | | let arr = [ |
| | | {type:'expand',fixed:'left',slots: { content:'content' },width: '60'}, |
| | | {title: '操作', width: '110', slots: { default: 'button_slot' },fixed:'left'}, |
| | | { type: 'seq',fixed:'left', title: '自序', width: '80' }, |
| | | {field: 'id', width: '150',title: '物料编码', sortable: true,showOverflow:'ellipsis' ,filters:[{ data: '' }],slots: { filter: 'num1_filter' },filterMethod:filterChanged} |
| | | {title: t('basicData.operate'), width: '110', slots: { default: 'button_slot' },fixed:'left'}, |
| | | { type: 'seq',fixed:'left', title: t('basicData.Number'), width: '80' }, |
| | | {field: 'id', width: '150',title: t('mainIngredient.materialCode'), sortable: true,showOverflow:'ellipsis' ,filters:[{ data: '' }],slots: { filter: 'num1_filter' },filterMethod:filterChanged} |
| | | ] |
| | | |
| | | //第一次加载默认 |
| | | value.value='原片' |
| | | filterData.value.type='原片' |
| | | value.value=t('mainIngredient.originalFilm') |
| | | filterData.value.type=t('mainIngredient.originalFilm') |
| | | request.get(`/BasicWarehouse/BasicWarehouseType/${value.value}`).then((res) => { |
| | | if(res.code==200){ |
| | | gridOptions.columns.splice(0,gridOptions.columns.length) |
| | |
| | | return[ |
| | | columns.map((column, columnIndex) => { |
| | | if (columnIndex === 0) { |
| | | return '合计:' |
| | | return t('basicData.total') |
| | | } |
| | | |
| | | return '' |
| | |
| | | <div> |
| | | <el-row> |
| | | <el-col :span="4"> |
| | | <el-select v-model="value" placeholder="请选择类别" @change="getWork"> |
| | | <el-select v-model="value" :placeholder="$t('mainIngredient.pleaseSelectACategory')" @change="getWork"> |
| | | <el-option |
| | | v-for="item in options" |
| | | :key="item.value" |
| | |
| | | <template #button_slot="{ row }"> |
| | | <el-button @click="getTableRow(row,'edit')" |
| | | v-if="userStore.user.permissions.indexOf('SelectIngredients.edit') > -1" |
| | | link type="primary" size="small">编辑</el-button> |
| | | <el-popconfirm @confirm="getTableRow(row,'delete')" title="确定删除?"> |
| | | link type="primary" size="small">{{ $t('basicData.edit') }}</el-button> |
| | | <el-popconfirm @confirm="getTableRow(row,'delete')" :title="$t('searchOrder.deleteConfirm')"> |
| | | <template #reference> |
| | | <el-button link type="primary" size="small">{{ $t('basicData.delete') }}</el-button> |
| | | </template> |
| | |
| | | |
| | | let arr = [ |
| | | {type:'expand',fixed:"left",slots: { content:'content' },width: '60'}, |
| | | {field: 'select',type: 'checkbox',fixed:"left", title: '选择', width: '80' }, |
| | | { type: 'seq',fixed:"left", title: '自序', width: '80' }, |
| | | {field: 'inventoryOrganization', width:'150', title: '库存组织', sortable: true,filters:[{ data: '' }],slots: { filter: 'num1_filter' },filterMethod:filterChanged }, |
| | | {field: 'materialCode', width: '150',title: '物料编码', sortable: true,showOverflow:"ellipsis" ,filters:[{ data: '' }],slots: { filter: 'num1_filter' },filterMethod:filterChanged}, |
| | | {field: 'producer', width: '100',title: '产地', sortable: true,filters:[{ data: '' }],slots: { filter: 'num1_filter' },filterMethod:filterChanged}, |
| | | {field: 'projectNo', width: '100',title: '工程号', sortable: true,filters:[{ data: '' }],slots: { filter: 'num1_filter' },filterMethod:filterChanged}, |
| | | {field: 'inventoryQuantity',width: '100', title: '库存数量', sortable: true,filters:[{ data: '' }],slots: { filter: 'num1_filter' },filterMethod:filterChanged}, |
| | | {field: 'availableQuantity', width: '100',title: '可用库存', sortable: true,filters:[{ data: '' }],slots: { filter: 'num1_filter' },filterMethod:filterChanged}, |
| | | {field: 'outboundQuantity', width:'150', title: '出库数量', sortable: true,editRender: { name: 'input', attrs: { placeholder: '' } }}, |
| | | {field: 'singlePieceArea', width: '100',title: '单片面积', sortable: true,filters:[{ data: '' }],slots: { filter: 'num1_filter' },filterMethod:filterChanged}, |
| | | {field: 'dateOfManufacture',width: '100', title: '生产日期', sortable: true}, |
| | | {field: 'inventoryArea',width: '100', title: '库存区域', sortable: true,filters:[{ data: '' }],slots: { filter: 'num1_filter' },filterMethod:filterChanged}, |
| | | {field: 'remarks',width: '80', title: '备注', sortable: true,editRender: { name: 'input', attrs: { placeholder: '' } }}, |
| | | {field: 'select',type: 'checkbox',fixed:"left", title: t('basicData.check'), width: '80' }, |
| | | { type: 'seq',fixed:"left", title: t('basicData.Number'), width: '80' }, |
| | | {field: 'inventoryOrganization', width:'150', title: t('mainIngredientStock.inventoryOrganization'), sortable: true,filters:[{ data: '' }],slots: { filter: 'num1_filter' },filterMethod:filterChanged }, |
| | | {field: 'materialCode', width: '150',title: t('mainIngredient.materialCode'), sortable: true,showOverflow:"ellipsis" ,filters:[{ data: '' }],slots: { filter: 'num1_filter' },filterMethod:filterChanged}, |
| | | {field: 'producer', width: '100',title: t('mainIngredientStock.producer'), sortable: true,filters:[{ data: '' }],slots: { filter: 'num1_filter' },filterMethod:filterChanged}, |
| | | {field: 'projectNo', width: '100',title: t('mainIngredientStock.projectNo'), sortable: true,filters:[{ data: '' }],slots: { filter: 'num1_filter' },filterMethod:filterChanged}, |
| | | {field: 'inventoryQuantity',width: '100', title: t('productStock.inventoryQuantity'), sortable: true,filters:[{ data: '' }],slots: { filter: 'num1_filter' },filterMethod:filterChanged}, |
| | | {field: 'availableQuantity', width: '100',title: t('productStock.availableQuantity'), sortable: true,filters:[{ data: '' }],slots: { filter: 'num1_filter' },filterMethod:filterChanged}, |
| | | {field: 'outboundQuantity', width:'150', title: t('mainIngredientStock.outboundQuantity'), sortable: true,editRender: { name: 'input', attrs: { placeholder: '' } }}, |
| | | {field: 'singlePieceArea', width: '100',title: t('productStock.singlePieceArea'), sortable: true,filters:[{ data: '' }],slots: { filter: 'num1_filter' },filterMethod:filterChanged}, |
| | | {field: 'dateOfManufacture',width: '100', title: t('mainIngredientStock.dateOfManufacture'), sortable: true}, |
| | | {field: 'inventoryArea',width: '100', title: t('productStock.inventoryArea'), sortable: true,filters:[{ data: '' }],slots: { filter: 'num1_filter' },filterMethod:filterChanged}, |
| | | {field: 'remarks',width: '80', title: t('basicData.remarks'), sortable: true,editRender: { name: 'input', attrs: { placeholder: '' } }}, |
| | | ] |
| | | |
| | | |
| | | //页面第一次加载 |
| | | request.get(`/BasicWarehouse/BasicWarehouseTypes/材料出库类型`).then((res) => { |
| | | request.get(`/BasicWarehouse/BasicWarehouseTypes/`+t('mainIngredientStock.materialOutboundType')).then((res) => { |
| | | |
| | | if(res.code==200){ |
| | | |
| | |
| | | |
| | | //列查询 |
| | | const getWork = () => { |
| | | request.get(`/BasicWarehouse/BasicWarehouseType/原片|辅料`).then((res) => { |
| | | request.get(`/BasicWarehouse/BasicWarehouseType/`+t('mainIngredient.originalFilm')+'|'+t('mainIngredient.accessories')).then((res) => { |
| | | if(res.code==200){ |
| | | gridOptions.columns=[] |
| | | BasicData.value = res.data |
| | |
| | | const type = route.query.type |
| | | if (typeof id !== 'undefined' && id !== null && id !== '' && id !== '\n' && id !== '\r'){ |
| | | |
| | | if(type==='库存'){ |
| | | if(type===t('mainIngredientStock.inventory')){ |
| | | filterData.value.stockId=id |
| | | number.value=id |
| | | request.post("/MaterialInventory/getSelectMaterialInventory/1/100",filterData.value).then((res) => { |
| | |
| | | //表头数据校验 |
| | | const outboundType = titleUploadData.value.outboundType |
| | | if(outboundType === null || outboundType === undefined || outboundType === ''){ |
| | | ElMessage.error("请选择出库类型") |
| | | ElMessage.error(t('mainIngredientStock.pleaseOutboundType')) |
| | | return |
| | | } |
| | | const materialRequisitionPersonnel = titleUploadData.value.materialRequisitionPersonnel |
| | | if(materialRequisitionPersonnel === null || materialRequisitionPersonnel === undefined || materialRequisitionPersonnel === ''){ |
| | | ElMessage.error("请输入领料员") |
| | | ElMessage.error(t('mainIngredientStock.pleaseMaterialRequisitionPersonnel')) |
| | | return |
| | | } |
| | | const materialRequisitionTeam = titleUploadData.value.materialRequisitionTeam |
| | | if(materialRequisitionTeam === null || materialRequisitionTeam === undefined || materialRequisitionTeam === ''){ |
| | | ElMessage.error("请输入领料班组") |
| | | ElMessage.error(t('mainIngredientStock.pleaseMaterialRequisitionTeam')) |
| | | return |
| | | } |
| | | const orderId = titleUploadData.value.orderId |
| | | if(orderId === null || orderId === undefined || orderId === ''){ |
| | | ElMessage.error("请输入销售单号") |
| | | ElMessage.error(t('mainIngredientStock.pleaseOrderId')) |
| | | return |
| | | } |
| | | |
| | |
| | | }) |
| | | request.post("/MaterialInventory/saveMaterialOutbound", flowData.value).then((res) => { |
| | | if(res.code==200){ |
| | | ElMessage.success('保存成功') |
| | | ElMessage.success(t('basicData.msg.saveSuccess')) |
| | | router.push({path: '/main/ingredientsStock/MaterialOutbound', query:{random:Math.random()}}) |
| | | }else{ |
| | | ElMessage.warning(res.msg) |
| | |
| | | ElMessage.success(t('basicData.msg.ReviewSuccess')) |
| | | router.push({path: '/main/ingredientsStock/MaterialOutbound', query:{random:Math.random()}}) |
| | | } else { |
| | | ElMessage.warning("审核失败") |
| | | ElMessage.warning(t('basicData.msg.reviewFail')) |
| | | router.push("/login") |
| | | } |
| | | }).catch((err)=>{ |
| | | ElMessage.error('系统错误') |
| | | ElMessage.error(t('basicData.msg.ServerConnectionError')) |
| | | router.push("/login") |
| | | }) |
| | | break |
| | |
| | | ElMessage.success(t('basicData.msg.cancelReviewSuccess')) |
| | | router.push({path: '/main/ingredientsStock/MaterialOutbound', query:{random:Math.random()}}) |
| | | } else { |
| | | ElMessage.warning("反审失败") |
| | | ElMessage.warning(t('basicData.msg.cancelReviewFail')) |
| | | router.push("/login") |
| | | } |
| | | }).catch((err)=>{ |
| | | ElMessage.error('系统错误') |
| | | ElMessage.error(t('basicData.msg.ServerConnectionError')) |
| | | router.push("/login") |
| | | }) |
| | | break |
| | |
| | | outboundQuantity: [{ |
| | | validator (e) { |
| | | if (e.row.outboundQuantity > e.row.availableQuantity) { |
| | | return new Error("出库数量不能大于可用数量") |
| | | return new Error(t('mainIngredientStock.theOutboundQuantityCannotBeGreaterThanTheAvailableQuantity')) |
| | | }else if (e.row.outboundQuantity ==="") { |
| | | return new Error("出库数量不能为空或者是等于0") |
| | | return new Error(t('mainIngredientStock.theOutboundQuantityCannotBeEmptyOrEqualTo0')) |
| | | } |
| | | const regex = /^[1-9]\d*$/g |
| | | if ( !regex.test(e.row.outboundQuantity) ) { |
| | |
| | | <div class="main-div"> |
| | | <div class="order-primary" style="background-color: white"> |
| | | <el-row> |
| | | <el-col :span="2"><el-text>领料日期:</el-text></el-col> |
| | | <el-col :span="2"><el-text>{{$t('mainIngredientStock.materialRequisitionDate')}}:</el-text></el-col> |
| | | <el-col :span="3"><el-input v-model="titleUploadData.materialRequisitionDate" :readonly="true" ></el-input></el-col> |
| | | <el-col :span="2"><el-text>领料员:</el-text></el-col> |
| | | <el-col :span="2"><el-text>{{$t('mainIngredientStock.materialRequisitionPersonnel')}}:</el-text></el-col> |
| | | <el-col :span="3"><el-input v-model="titleUploadData.materialRequisitionPersonnel" /></el-col> |
| | | <el-col :span="2"><el-text>领料班组:</el-text></el-col> |
| | | <el-col :span="2"><el-text>{{$t('mainIngredientStock.materialRequisitionTeam')}}:</el-text></el-col> |
| | | <el-col :span="3"><el-input v-model="titleUploadData.materialRequisitionTeam" /></el-col> |
| | | |
| | | </el-row> |
| | | <el-row> |
| | | <el-col :span="2"><el-text>出库类型:</el-text></el-col> |
| | | <el-col :span="2"><el-text>{{$t('mainIngredientStock.outboundType')}}:</el-text></el-col> |
| | | <el-col :span="3"> |
| | | <el-select v-model="titleUploadData.outboundType" clearable placeholder="" > |
| | | <el-option |
| | |
| | | /> |
| | | </el-select> |
| | | </el-col> |
| | | <el-col :span="2"><el-text>销售单号:</el-text></el-col> |
| | | <el-col :span="2"><el-text>{{$t('order.orderId')}}:</el-text></el-col> |
| | | <el-col :span="3"><el-input v-model="titleUploadData.orderId" /></el-col> |
| | | <el-col :span="2"><el-text>仓管员:</el-text></el-col> |
| | | <el-col :span="2"><el-text>{{$t('mainIngredientStock.warehouseManager')}}:</el-text></el-col> |
| | | <el-col :span="3"><el-input v-model="titleUploadData.warehouseManager" :readonly="true" /></el-col> |
| | | |
| | | </el-row> |
| | |
| | | |
| | | <!--左边固定显示的插槽--> |
| | | <template #button_slot="{ row }"> |
| | | <el-button @click="getTableRow(row,'edit')" link type="primary" size="small">编辑</el-button> |
| | | <el-button @click="getTableRow(row,'delete')" link type="primary" size="small">删除</el-button> |
| | | <el-button @click="getTableRow(row,'edit')" link type="primary" size="small">{{$t('basicData.edit')}}</el-button> |
| | | <el-button @click="getTableRow(row,'delete')" link type="primary" size="small">{{$t('basicData.delete')}}</el-button> |
| | | </template> |
| | | |
| | | <template #num1_filter="{ column, $panel }"> |
| | |
| | | <div id="main"> |
| | | <div id="div-title"> |
| | | <el-breadcrumb :separator-icon="ArrowRight"> |
| | | <el-breadcrumb-item @click="changeRouter(1)" :class="indexFlag===1?'indexTag':''" :to="{ path: '/main/ingredientsStock/SelectIngredientsStock' }">物料库存</el-breadcrumb-item> |
| | | <el-breadcrumb-item @click="changeRouter(2)" :class="indexFlag===2?'indexTag':''" :to="{ path: '/main/ingredientsStock/MaterialOutbound' }">物料出库</el-breadcrumb-item> |
| | | <el-breadcrumb-item @click="changeRouter(1)" :class="indexFlag===1?'indexTag':''" :to="{ path: '/main/ingredientsStock/SelectIngredientsStock' }">{{$t('mainIngredientStock.selectIngredientsStock')}}</el-breadcrumb-item> |
| | | <el-breadcrumb-item @click="changeRouter(2)" :class="indexFlag===2?'indexTag':''" :to="{ path: '/main/ingredientsStock/MaterialOutbound' }">{{$t('mainIngredientStock.materialOutbound')}}</el-breadcrumb-item> |
| | | <!-- <el-breadcrumb-item @click="changeRouter(3)" :class="indexFlag===3?'indexTag':''" :to="{ path: '/main/ingredientsStock/OriginalMonthlySettlement' }">原片月结</el-breadcrumb-item> |
| | | <el-breadcrumb-item @click="changeRouter(4)" :class="indexFlag===4?'indexTag':''" :to="{ path: '/main/ingredientsStock/AccessoriesMonthlySettlement' }">辅料月结</el-breadcrumb-item>--> |
| | | <el-breadcrumb-item @click="changeRouter(5)" :class="indexFlag===5?'indexTag':''" :to="{ path: '/main/ingredientsStock/ReturnToStorage' }">返库</el-breadcrumb-item> |
| | | <el-breadcrumb-item v-show="false" :to="{ path: '/main/order/orderReport' }">报表</el-breadcrumb-item> |
| | | <el-breadcrumb-item @click="changeRouter(5)" :class="indexFlag===5?'indexTag':''" :to="{ path: '/main/ingredientsStock/ReturnToStorage' }">{{$t('mainIngredientStock.returnToStorage')}}</el-breadcrumb-item> |
| | | <el-breadcrumb-item v-show="false" :to="{ path: '/main/order/orderReport' }">{{$t('mainIngredientStock.returnToStorage')}}</el-breadcrumb-item> |
| | | </el-breadcrumb> |
| | | |
| | | </div> |
| | |
| | | ElMessage.success(t('searchOrder.msgDeleteSuccess')) |
| | | router.push({path:'/main/ingredientsStock/MaterialOutbound', query:{random:Math.random()}}) |
| | | }else{ |
| | | ElMessage.warning("删除失败") |
| | | ElMessage.warning(t('basicData.msg.deleteSuccess')) |
| | | router.push("/login") |
| | | } |
| | | }).catch((err)=>{ |
| | | ElMessage.error('系统错误') |
| | | ElMessage.error(t('basicData.msg.ServerConnectionError')) |
| | | router.push("/login") |
| | | }) |
| | | |
| | |
| | | },//表头参数 |
| | | columns:[ |
| | | {type:'expand',fixed:"left",slots: { content:'content' },width: '60'}, |
| | | {title: '操作', width: '110', slots: { default: 'button_slot' },fixed:"left"}, |
| | | { type: 'seq',fixed:"left", title: '自序', width: '80' }, |
| | | {field: 'reviewedState',title: '审核', width: 50, slots: { default: 'state' },}, |
| | | {field: 'materialOutboundId', width:'150', title: '出库单号', sortable: true,filters:[{ data: '' }],slots: { filter: 'num1_filter' }}, |
| | | {field: 'materialRequisitionPersonnel', width: '150',title: '领料员', sortable: true,showOverflow:"ellipsis" ,filters:[{ data: '' }],slots: { filter: 'num1_filter' }}, |
| | | {field: 'materialRequisitionTeam', width: '120',title: '领料班组', sortable: true,filters:[{ data: '' }],slots: { filter: 'num1_filter' }}, |
| | | {field: 'orderId', width:'150', title: '销售单号', sortable: true,filters:[{ data: '' }],slots: { filter: 'num1_filter' }}, |
| | | {field: 'outboundType', width: '100',title: '出库类型', sortable: true,filters:[{ data: '' }],slots: { filter: 'num1_filter' }}, |
| | | {field: 'warehouseManager',width: '100', title: '仓管员', sortable: true,showOverflow:"ellipsis",filters:[{ data: '' }],slots: { filter: 'num1_filter' }}, |
| | | {field: 'materialRequisitionDate', width: '80',title: '领料日期', sortable: true}, |
| | | {field: 'reviewed',width: '100', title: '审核员', sortable: true,filters:[{ data: '' }],slots: { filter: 'num1_filter' }}, |
| | | {field: 'reviewedTime', width: '100',title: '审核时间', sortable: true}, |
| | | {field: 'createTime',width: '100', title: '创建时间', sortable: true}, |
| | | {title: t('basicData.operate'), width: '110', slots: { default: 'button_slot' },fixed:"left"}, |
| | | { type: 'seq',fixed:"left", title: t('basicData.Number'), width: '80' }, |
| | | {field: 'reviewedState',title: t('basicData.review'), width: 50, slots: { default: 'state' },}, |
| | | {field: 'materialOutboundId', width:'150', title: t('mainIngredientStock.materialOutboundId'), sortable: true,filters:[{ data: '' }],slots: { filter: 'num1_filter' }}, |
| | | {field: 'materialRequisitionPersonnel', width: '150',title: t('mainIngredientStock.materialRequisitionPersonnel'), sortable: true,showOverflow:"ellipsis" ,filters:[{ data: '' }],slots: { filter: 'num1_filter' }}, |
| | | {field: 'materialRequisitionTeam', width: '120',title: t('mainIngredientStock.materialRequisitionTeam'), sortable: true,filters:[{ data: '' }],slots: { filter: 'num1_filter' }}, |
| | | {field: 'orderId', width:'150', title: t('order.orderId'), sortable: true,filters:[{ data: '' }],slots: { filter: 'num1_filter' }}, |
| | | {field: 'outboundType', width: '100',title: t('mainIngredientStock.outboundType'), sortable: true,filters:[{ data: '' }],slots: { filter: 'num1_filter' }}, |
| | | {field: 'warehouseManager',width: '100', title: t('mainIngredientStock.warehouseManager'), sortable: true,showOverflow:"ellipsis",filters:[{ data: '' }],slots: { filter: 'num1_filter' }}, |
| | | {field: 'materialRequisitionDate', width: '80',title: t('mainIngredientStock.materialRequisitionDate'), sortable: true}, |
| | | {field: 'reviewed',width: '100', title: t('mainIngredientStock.reviewed'), sortable: true,filters:[{ data: '' }],slots: { filter: 'num1_filter' }}, |
| | | {field: 'reviewedTime', width: '100',title: t('mainIngredientStock.reviewedTime'), sortable: true}, |
| | | {field: 'createTime',width: '100', title: t('basicData.creationTime'), sortable: true}, |
| | | ],//表头按钮 |
| | | toolbarConfig: { |
| | | |
| | |
| | | return[ |
| | | columns.map((column, columnIndex) => { |
| | | if (columnIndex === 0) { |
| | | return '合计:' |
| | | return t('basicData.total') |
| | | } |
| | | // if (props.tableProp.footList.includes(column.field)) { |
| | | // return sumNum(data, column.field) |
| | |
| | | <el-date-picker |
| | | v-model="selectDate" |
| | | type="daterange" |
| | | start-placeholder="开始时间" |
| | | end-placeholder="结束时间" |
| | | :start-placeholder="$t('basicData.startDate')" |
| | | :end-placeholder="$t('basicData.endDate')" |
| | | format="YYYY-MM-DD" |
| | | value-format="YYYY-MM-DD" |
| | | |
| | | /> |
| | | <el-button @click="changeDate" style="margin-top: -5px" id="searchButton" type="primary" :icon="Search">查询</el-button> |
| | | <el-button @click="changeDate" style="margin-top: -5px" id="searchButton" type="primary" :icon="Search">{{$t('basicData.search')}}</el-button> |
| | | |
| | | <vxe-grid |
| | | max-height="100%" |
| | |
| | | <template #button_slot="{ row }"> |
| | | <el-button @click="getTableRow(row,'edit')" |
| | | v-if="userStore.user.permissions.indexOf('MaterialOutbound.edit') > -1" |
| | | link type="primary" size="small">编辑</el-button> |
| | | link type="primary" size="small">{{$t('basicData.edit')}}</el-button> |
| | | <!-- <el-button @click="getTableRow(row,'delete')" link type="primary" size="small">删除</el-button>--> |
| | | </template> |
| | | |
| | |
| | | columns:[ |
| | | {type:'expand',fixed:"left",slots: { content:'content' },width: '60'}, |
| | | {title: '操作', width: '110', slots: { default: 'button_slot' },fixed:"left"}, |
| | | { type: 'seq',fixed:"left", title: '自序', width: '80' }, |
| | | {field: 'reviewedState',title: '审核', width: 50, slots: { default: 'state' },}, |
| | | {field: 'returningId', width:'150', title: '返库单号', sortable: true,filters:[{ data: '' }],slots: { filter: 'num1_filter' }}, |
| | | {field: 'materialRequisitionPersonnel', width: '150',title: '领料员/供应商', sortable: true,showOverflow:"ellipsis" ,filters:[{ data: '' }],slots: { filter: 'num1_filter' }}, |
| | | {field: 'materialRequisitionTeam', width: '120',title: '领料班组/供应商', sortable: true,filters:[{ data: '' }],slots: { filter: 'num1_filter' }}, |
| | | {field: 'orderId', width:'150', title: '销售单号', sortable: true,filters:[{ data: '' }],slots: { filter: 'num1_filter' }}, |
| | | {field: 'project', width:'150', title: '项目名称', sortable: true,filters:[{ data: '' }],slots: { filter: 'num1_filter' }}, |
| | | {field: 'batch', width:'150', title: '批次', sortable: true,filters:[{ data: '' }],slots: { filter: 'num1_filter' }}, |
| | | {field: 'returningType', width: '100',title: '返库类型', sortable: true,filters:[{ data: '' }],slots: { filter: 'num1_filter' }}, |
| | | {field: 'warehouseManager',width: '100', title: '仓管员', sortable: true,showOverflow:"ellipsis",filters:[{ data: '' }],slots: { filter: 'num1_filter' }}, |
| | | {field: 'reviewed',width: '100', title: '审核员', sortable: true,filters:[{ data: '' }],slots: { filter: 'num1_filter' }}, |
| | | {field: 'reviewedTime', width: '100',title: '审核时间', sortable: true}, |
| | | {field: 'createTime',width: '100', title: '制单日期', sortable: true}, |
| | | { type: 'seq',fixed:"left", title: t('basicData.Number'), width: '80' }, |
| | | {field: 'reviewedState',title: t('basicData.review'), width: 50, slots: { default: 'state' },}, |
| | | {field: 'returningId', width:'150', title: t('mainIngredientStock.returningId'), sortable: true,filters:[{ data: '' }],slots: { filter: 'num1_filter' }}, |
| | | {field: 'materialRequisitionPersonnel', width: '150',title: t('mainIngredientStock.materialRequisitionPersonnel'), sortable: true,showOverflow:"ellipsis" ,filters:[{ data: '' }],slots: { filter: 'num1_filter' }}, |
| | | {field: 'materialRequisitionTeam', width: '120',title: t('mainIngredientStock.materialRequisitionTeam'), sortable: true,filters:[{ data: '' }],slots: { filter: 'num1_filter' }}, |
| | | {field: 'orderId', width:'150', title: t('order.orderId'), sortable: true,filters:[{ data: '' }],slots: { filter: 'num1_filter' }}, |
| | | {field: 'project', width:'150', title: t('order.project'), sortable: true,filters:[{ data: '' }],slots: { filter: 'num1_filter' }}, |
| | | {field: 'batch', width:'150', title: t('order.batch'), sortable: true,filters:[{ data: '' }],slots: { filter: 'num1_filter' }}, |
| | | {field: 'returningType', width: '100',title: t('mainIngredientStock.returningType'), sortable: true,filters:[{ data: '' }],slots: { filter: 'num1_filter' }}, |
| | | {field: 'warehouseManager',width: '100', title: t('mainIngredientStock.warehouseManager'), sortable: true,showOverflow:"ellipsis",filters:[{ data: '' }],slots: { filter: 'num1_filter' }}, |
| | | {field: 'reviewed',width: '100', title:t('mainIngredientStock.reviewed'), sortable: true,filters:[{ data: '' }],slots: { filter: 'num1_filter' }}, |
| | | {field: 'reviewedTime', width: '100',title: t('mainIngredientStock.reviewedTime'), sortable: true}, |
| | | {field: 'createTime',width: '100', title: t('basicData.creationTime'), sortable: true}, |
| | | ],//表头按钮 |
| | | toolbarConfig: { |
| | | buttons: [ |
| | | {'code': 'add', 'name': '返库新增',status: 'primary'}, |
| | | {'code': 'add', 'name': t('mainIngredientStock.returningAdd'),status: 'primary'}, |
| | | ], |
| | | /*import: false, |
| | | export: true, |
| | |
| | | return[ |
| | | columns.map((column, columnIndex) => { |
| | | if (columnIndex === 0) { |
| | | return '合计:' |
| | | return t('basicData.total') |
| | | } |
| | | // if (props.tableProp.footList.includes(column.field)) { |
| | | // return sumNum(data, column.field) |
| | |
| | | <el-date-picker |
| | | v-model="selectDate" |
| | | type="daterange" |
| | | start-placeholder="开始时间" |
| | | end-placeholder="结束时间" |
| | | :start-placeholder="$t('basicData.startDate')" |
| | | :end-placeholder="$t('basicData.endDate')" |
| | | format="YYYY-MM-DD" |
| | | value-format="YYYY-MM-DD" |
| | | |
| | | /> |
| | | <el-button @click="changeDate" style="margin-top: -5px" id="searchButton" type="primary" :icon="Search">查询</el-button> |
| | | <el-button @click="changeDate" style="margin-top: -5px" id="searchButton" type="primary" :icon="Search">{{$t('basicData.search')}}</el-button> |
| | | |
| | | <vxe-grid |
| | | max-height="100%" |
| | |
| | | <template #button_slot="{ row }"> |
| | | <el-button @click="getTableRow(row,'edit')" |
| | | v-if="userStore.user.permissions.indexOf('ReturnToStorage.edit') > -1" |
| | | link type="primary" size="small">编辑</el-button> |
| | | link type="primary" size="small">{{$t('basicData.edit')}}</el-button> |
| | | <!-- <el-button @click="getTableRow(row,'delete')" link type="primary" size="small">删除</el-button>--> |
| | | </template> |
| | | |
| | |
| | | const value = ref('') |
| | | const options = [ |
| | | { |
| | | value: '原片', |
| | | label: '原片' |
| | | value: t('mainIngredient.originalFilm'), |
| | | label: t('mainIngredient.originalFilm') |
| | | }, |
| | | { |
| | | value: '辅料', |
| | | label: '辅料', |
| | | value: t('mainIngredient.accessories'), |
| | | label: t('mainIngredient.accessories'), |
| | | } |
| | | ] |
| | | |
| | | let arr = [ |
| | | {field: 'select',type: 'checkbox',fixed:"left", title: '选择', width: '80' }, |
| | | { type: 'seq',fixed:"left", title: '自序', width: '80' }, |
| | | {field: 'returnQuantity', width:'150', title: '返库数量', sortable: true,editRender: { name: 'input', attrs: { placeholder: '' } }}, |
| | | {field: 'dateOfManufacture', width:'150', title: '生产日期', sortable: true,editRender: {name: 'input', attrs: {placeholder: '', type: 'date'}},}, |
| | | {field: 'select',type: 'checkbox',fixed:"left", title: t('basicData.check'), width: '80' }, |
| | | { type: 'seq',fixed:"left", title: t('basicData.Number'), width: '80' }, |
| | | {field: 'returnQuantity', width:'150', title: t('mainIngredientStock.returnQuantity'), sortable: true,editRender: { name: 'input', attrs: { placeholder: '' } }}, |
| | | {field: 'dateOfManufacture', width:'150', title: t('mainIngredientStock.dateOfManufacture'), sortable: true,editRender: {name: 'input', attrs: {placeholder: '', type: 'date'}},}, |
| | | |
| | | {field: 'inventoryOrganization', width:'150', title: '库存组织', sortable: true,folding: true,slots: { edit: 'inventoryOrganization'},editRender: { name: '$select', attrs: { placeholder: '' } }}, |
| | | {field: 'producer', width:'150', title: '产地', sortable: true,editRender: { name: 'input', attrs: { placeholder: '' } }}, |
| | | {field: 'qualityGuaranteePeriod', width:'150', title: '保质期', sortable: true,editRender: { name: 'input', attrs: { placeholder: '' } }}, |
| | | {field: 'inventoryArea', width:'150', title: '库存区域',sortable: true,editRender: { name: 'input', attrs: { placeholder: '' } }}, |
| | | {field: 'inventoryOrganization', width:'150', title: t('mainIngredientStock.inventoryOrganization'), sortable: true,folding: true,slots: { edit: 'inventoryOrganization'},editRender: { name: '$select', attrs: { placeholder: '' } }}, |
| | | {field: 'producer', width:'150', title: t('mainIngredientStock.producer'), sortable: true,editRender: { name: 'input', attrs: { placeholder: '' } }}, |
| | | {field: 'qualityGuaranteePeriod', width:'150', title: t('mainIngredientStock.qualityGuaranteePeriod'), sortable: true,editRender: { name: 'input', attrs: { placeholder: '' } }}, |
| | | {field: 'inventoryArea', width:'150', title: t('productStock.inventoryArea'),sortable: true,editRender: { name: 'input', attrs: { placeholder: '' } }}, |
| | | |
| | | {field: 'remarks',width: '80', title: '备注', sortable: true,editRender: { name: 'input', attrs: { placeholder: '' } }}, |
| | | {field: 'id', width: '150',title: '物料编码', sortable: true,showOverflow:'ellipsis' ,filters:[{ data: '' }],slots: { filter: 'num1_filter' },filterMethod:filterChanged} |
| | | {field: 'remarks',width: '80', title: t('basicData.remarks'), sortable: true,editRender: { name: 'input', attrs: { placeholder: '' } }}, |
| | | {field: 'id', width: '150',title: t('mainIngredient.materialCode'), sortable: true,showOverflow:'ellipsis' ,filters:[{ data: '' }],slots: { filter: 'num1_filter' },filterMethod:filterChanged} |
| | | ] |
| | | |
| | | |
| | | |
| | | |
| | | //页面第一次加载 |
| | | request.get(`/BasicWarehouse/BasicWarehouseTypes/库存组织|材料返库类型`).then((res) => { |
| | | request.get(`/BasicWarehouse/BasicWarehouseTypes/`+t('mainIngredientStock.inventoryOrganization')+'|'+t('mainIngredientStock.materialReturnType')).then((res) => { |
| | | |
| | | if(res.code==200){ |
| | | titleSelectJson.value=deepClone(res.data) |
| | |
| | | if(res.code==200){ |
| | | titleUploadData.value=deepClone(res.data.returningWarehouse) |
| | | //根据审核状态显示审核按钮或者是反审按钮 |
| | | value.value='原片|辅料' |
| | | value.value=t('mainIngredient.originalFilm')+'|'+t('mainIngredient.accessories') |
| | | getStoreWork() |
| | | if(titleUploadData.value.reviewedState!==0){ |
| | | gridOptions.toolbarConfig.buttons[1].disabled = true |
| | |
| | | //显示复选框 |
| | | xGrid.value.showColumn("select") |
| | | |
| | | value.value='原片' |
| | | value.value=t('mainIngredient.originalFilm') |
| | | getStoreWork() |
| | | |
| | | getStoreWorks() |
| | |
| | | //库存组织 |
| | | const getInventoryOrganization=()=>{ |
| | | //页面第一次加载 |
| | | request.get(`/BasicWarehouse/BasicWarehouseTypes/库存组织|材料返库类型`).then((res) => { |
| | | request.get(`/BasicWarehouse/BasicWarehouseTypes//`+t('mainIngredientStock.inventoryOrganization')+'|'+t('mainIngredientStock.materialReturnType')).then((res) => { |
| | | |
| | | if(res.code==200){ |
| | | titleSelectJson.value=deepClone(res.data) |
| | |
| | | materialStore.value[i].json=(JSON.parse(res.data.data[i].json)) |
| | | |
| | | } |
| | | if(value.value==='原片'){ |
| | | if(value.value===t('mainIngredient.originalFilm')){ |
| | | materialStore.value.forEach(item => { |
| | | item['inventoryOrganization'] = titleSelectJson.value["inventoryOrganization"][0].operateTypeName |
| | | }) |
| | | }else if(value.value==='辅料'){ |
| | | }else if(value.value===t('mainIngredient.accessories')){ |
| | | materialStore.value.forEach(item => { |
| | | item['inventoryOrganization'] = titleSelectJson.value["inventoryOrganization"][1].operateTypeName |
| | | }) |
| | |
| | | } |
| | | const materialRequisitionPersonnel = titleUploadData.value.materialRequisitionPersonnel |
| | | if(materialRequisitionPersonnel === null || materialRequisitionPersonnel === undefined || materialRequisitionPersonnel === ''){ |
| | | ElMessage.error("请输入领料员") |
| | | ElMessage.error(t('mainIngredientStock.materialRequisitionPersonnel')) |
| | | return |
| | | } |
| | | const materialRequisitionTeam = titleUploadData.value.materialRequisitionTeam |
| | | if(materialRequisitionTeam === null || materialRequisitionTeam === undefined || materialRequisitionTeam === ''){ |
| | | ElMessage.error("请输入领料班组") |
| | | ElMessage.error(t('mainIngredientStock.materialRequisitionTeam')) |
| | | return |
| | | } |
| | | const orderId = titleUploadData.value.orderId |
| | | if(orderId === null || orderId === undefined || orderId === ''){ |
| | | ElMessage.error("请输入销售单号") |
| | | ElMessage.error(t('order.orderId')) |
| | | return |
| | | } |
| | | const project = titleUploadData.value.project |
| | | if(project === null || project === undefined || project === ''){ |
| | | ElMessage.error("请输入项目名称") |
| | | ElMessage.error(t('order.project')) |
| | | return |
| | | } |
| | | const batch = titleUploadData.value.batch |
| | | if(batch === null || batch === undefined || batch === ''){ |
| | | ElMessage.error("请输入批次") |
| | | ElMessage.error(t('order.batch')) |
| | | return |
| | | } |
| | | |
| | |
| | | }) |
| | | request.post("/MaterialInventory/saveReturningWarehouse", flowData.value).then((res) => { |
| | | if(res.code==200 && res.data===true){ |
| | | ElMessage.success('保存成功') |
| | | ElMessage.success(t('basicData.msg.saveSuccess')) |
| | | router.push({path: '/main/ingredientsStock/ReturnToStorage', query:{random:Math.random()}}) |
| | | }else{ |
| | | ElMessage.warning("保存失败") |
| | | ElMessage.warning(t('basicData.msg.saveFail')) |
| | | router.push("/login") |
| | | } |
| | | }).catch((err)=>{ |
| | | ElMessage.error('系统错误') |
| | | ElMessage.error(t('basicData.msg.ServerConnectionError')) |
| | | router.push("/login") |
| | | }) |
| | | break |
| | |
| | | ElMessage.success(t('basicData.msg.ReviewSuccess')) |
| | | router.push({path: '/main/ingredientsStock/ReturnToStorage', query:{random:Math.random()}}) |
| | | } else { |
| | | ElMessage.warning("审核失败") |
| | | ElMessage.warning(t('basicData.msg.reviewFail')) |
| | | router.push("/login") |
| | | } |
| | | }).catch((err)=>{ |
| | | ElMessage.error('系统错误') |
| | | ElMessage.error(t('basicData.msg.ServerConnectionError')) |
| | | router.push("/login") |
| | | }) |
| | | break |
| | |
| | | ElMessage.success(t('basicData.msg.cancelReviewSuccess')) |
| | | router.push({path: '/main/ingredientsStock/ReturnToStorage', query:{random:Math.random()}}) |
| | | } else { |
| | | ElMessage.warning("反审失败") |
| | | ElMessage.warning(t('basicData.msg.cancelReviewFail')) |
| | | router.push("/login") |
| | | } |
| | | }).catch((err)=>{ |
| | | ElMessage.error('系统错误') |
| | | ElMessage.error(t('basicData.msg.ServerConnectionError')) |
| | | router.push("/login") |
| | | }) |
| | | break |
| | |
| | | return[ |
| | | columns.map((column, columnIndex) => { |
| | | if (columnIndex === 0) { |
| | | return '合计:' |
| | | return t('basicData.total') |
| | | } |
| | | // if (props.tableProp.footList.includes(column.field)) { |
| | | // return sumNum(data, column.field) |
| | |
| | | returnQuantity: [{ |
| | | validator (e) { |
| | | if (e.row.returnQuantity ==="") { |
| | | return new Error("返库数量不能为空或者是等于0") |
| | | return new Error(t('mainIngredientStock.theReturnQuantityCannotBeEmptyOrEqualTo0')) |
| | | } |
| | | const regex = /^[1-9]\d*$/g |
| | | if ( !regex.test(e.row.returnQuantity) ) { |
| | |
| | | |
| | | <div class="order-primary" style="background-color: white"> |
| | | <el-row> |
| | | <el-col :span="2"><el-text>返库日期:</el-text></el-col> |
| | | <el-col :span="2"><el-text>{{$t('mainIngredientStock.createTime')}}:</el-text></el-col> |
| | | <el-col :span="3"><el-input v-model="titleUploadData.createTime" :readonly="true" ></el-input></el-col> |
| | | <el-col :span="2"><el-text>领料员/供应商:</el-text></el-col> |
| | | <el-col :span="2"><el-text>{{$t('mainIngredientStock.materialRequisitionPersonnel')}}:</el-text></el-col> |
| | | <el-col :span="3"><el-input v-model="titleUploadData.materialRequisitionPersonnel" /></el-col> |
| | | <el-col :span="2"><el-text>领料班组/供应商:</el-text></el-col> |
| | | <el-col :span="2"><el-text>{{$t('mainIngredientStock.materialRequisitionTeam')}}:</el-text></el-col> |
| | | <el-col :span="3"><el-input v-model="titleUploadData.materialRequisitionTeam" /></el-col> |
| | | <el-col :span="2"><el-text>仓管员:</el-text></el-col> |
| | | <el-col :span="2"><el-text>{{$t('mainIngredientStock.warehouseManager')}}:</el-text></el-col> |
| | | <el-col :span="3"><el-input v-model="titleUploadData.warehouseManager" :readonly="true" /></el-col> |
| | | </el-row> |
| | | <el-row> |
| | | <el-col :span="2"><el-text>返库类型:</el-text></el-col> |
| | | <el-col :span="2"><el-text>{{$t('mainIngredientStock.returningType')}}:</el-text></el-col> |
| | | <el-col :span="3"> |
| | | <el-select v-model="titleUploadData.returningType" clearable placeholder="" > |
| | | <el-option |
| | |
| | | /> |
| | | </el-select> |
| | | </el-col> |
| | | <el-col :span="2"><el-text>销售单号:</el-text></el-col> |
| | | <el-col :span="2"><el-text>{{$t('order.orderId')}}:</el-text></el-col> |
| | | <el-col :span="3"><el-input v-model="titleUploadData.orderId" /></el-col> |
| | | <el-col :span="2"><el-text>项目名称:</el-text></el-col> |
| | | <el-col :span="2"><el-text>{{$t('order.project')}}:</el-text></el-col> |
| | | <el-col :span="3"><el-input v-model="titleUploadData.project" /></el-col> |
| | | <el-col :span="2"><el-text>批次:</el-text></el-col> |
| | | <el-col :span="2"><el-text>{{$t('order.batch')}}:</el-text></el-col> |
| | | <el-col :span="3"><el-input v-model="titleUploadData.batch" /></el-col> |
| | | |
| | | |
| | |
| | | |
| | | |
| | | <el-row> |
| | | <el-select v-model="value" placeholder="请选择类别" @change="getWork" style="margin-top: 10px;border: #181818 1px solid;"> |
| | | <el-select v-model="value" :placeholder="$t('mainIngredient.pleaseSelectACategory')" @change="getWork" style="margin-top: 10px;border: #181818 1px solid;"> |
| | | <el-option |
| | | v-for="item in options" |
| | | :key="item.value" |
| | |
| | | const values = ref('') |
| | | const selectOptions = [ |
| | | { |
| | | value: '库存', |
| | | label: '库存' |
| | | value: t('mainIngredientStock.inventory'), |
| | | label: t('mainIngredientStock.inventory') |
| | | }, |
| | | { |
| | | value: '工程', |
| | | label: '工程', |
| | | value: t('mainIngredientStock.engineering'), |
| | | label: t('mainIngredientStock.engineering'), |
| | | } |
| | | ] |
| | | |
| | |
| | | |
| | | let arr = [ |
| | | |
| | | { type: 'checkbox',fixed:"left", title: '选择', width: '80' }, |
| | | { type: 'seq',fixed:"left", title: '自序', width: '80' }, |
| | | {field: 'inventoryOrganization', width:'150', title: '库存组织', sortable: true,filters:[{ data: '' }],slots: { filter: 'num1_filter' },filterMethod:filterChanged }, |
| | | {field: 'materialCode', width: '150',title: '物料编码', sortable: true,showOverflow:"ellipsis" ,filters:[{ data: '' }],slots: { filter: 'num1_filter' },filterMethod:filterChanged}, |
| | | {field: 'producer', width: '100',title: '产地', sortable: true,filters:[{ data: '' }],slots: { filter: 'num1_filter' },filterMethod:filterChanged}, |
| | | {field: 'id',width: '100', title: '库存编号', sortable: true,showOverflow:"ellipsis",filters:[{ data: '' }],slots: { filter: 'num1_filter' },filterMethod:filterChanged}, |
| | | {field: 'projectNo',width: '100', title: '工程号', sortable: true,showOverflow:"ellipsis",filters:[{ data: '' }],slots: { filter: 'num1_filter' },filterMethod:filterChanged}, |
| | | { type: 'checkbox',fixed:"left", title: t('basicData.check'), width: '80' }, |
| | | { type: 'seq',fixed:"left", title: t('basicData.Number'), width: '80' }, |
| | | {field: 'inventoryOrganization', width:'150', title: t('mainIngredientStock.inventoryOrganization'), sortable: true,filters:[{ data: '' }],slots: { filter: 'num1_filter' },filterMethod:filterChanged }, |
| | | {field: 'materialCode', width: '150',title: t('mainIngredient.materialCode'), sortable: true,showOverflow:"ellipsis" ,filters:[{ data: '' }],slots: { filter: 'num1_filter' },filterMethod:filterChanged}, |
| | | {field: 'producer', width: '100',title: t('mainIngredientStock.producer'), sortable: true,filters:[{ data: '' }],slots: { filter: 'num1_filter' },filterMethod:filterChanged}, |
| | | {field: 'id',width: '100', title: t('mainIngredientStock.id'), sortable: true,showOverflow:"ellipsis",filters:[{ data: '' }],slots: { filter: 'num1_filter' },filterMethod:filterChanged}, |
| | | {field: 'projectNo',width: '100', title: t('mainIngredientStock.projectNo'), sortable: true,showOverflow:"ellipsis",filters:[{ data: '' }],slots: { filter: 'num1_filter' },filterMethod:filterChanged}, |
| | | //{field: 'safetyStock', width: '100',title: '安全库存', sortable: true,filters:[{ data: '' }],slots: { filter: 'num1_filter' },filterMethod:filterChanged}, |
| | | {field: 'inventoryQuantity',width: '100', title: '库存数量', sortable: true,filters:[{ data: '' }],slots: { filter: 'num1_filter' },filterMethod:filterChanged}, |
| | | {field: 'availableQuantity', width: '100',title: '可用库存', sortable: true,filters:[{ data: '' }],slots: { filter: 'num1_filter' },filterMethod:filterChanged}, |
| | | {field: 'planQuantity', width: '100',title: '计划数量', sortable: true,filters:[{ data: '' }],slots: { filter: 'num1_filter' },filterMethod:filterChanged}, |
| | | {field: 'totalArea',width: '100', title: '总面积', sortable: true,filters:[{ data: '' }],slots: { filter: 'num1_filter' },filterMethod:filterChanged}, |
| | | {field: 'dateOfManufacture',width: '100', title: '生产日期', sortable: true}, |
| | | {field: 'qualityGuaranteePeriod',width: '100', title: '保质期', sortable: true,filters:[{ data: '' }],slots: { filter: 'num1_filter' },filterMethod:filterChanged}, |
| | | {field: 'inventoryArea',width: '100', title: '库存区域', sortable: true,filters:[{ data: '' }],slots: { filter: 'num1_filter' },filterMethod:filterChanged}, |
| | | {field: 'inventoryQuantity',width: '100', title: t('productStock.inventoryQuantity'), sortable: true,filters:[{ data: '' }],slots: { filter: 'num1_filter' },filterMethod:filterChanged}, |
| | | {field: 'availableQuantity', width: '100',title: t('productStock.availableQuantity'), sortable: true,filters:[{ data: '' }],slots: { filter: 'num1_filter' },filterMethod:filterChanged}, |
| | | {field: 'planQuantity', width: '100',title: t('mainIngredientStock.planQuantity'), sortable: true,filters:[{ data: '' }],slots: { filter: 'num1_filter' },filterMethod:filterChanged}, |
| | | {field: 'totalArea',width: '100', title: t('order.grossArea'), sortable: true,filters:[{ data: '' }],slots: { filter: 'num1_filter' },filterMethod:filterChanged}, |
| | | {field: 'dateOfManufacture',width: '100', title: t('mainIngredientStock.dateOfManufacture'), sortable: true}, |
| | | {field: 'qualityGuaranteePeriod',width: '100', title: t('mainIngredientStock.qualityGuaranteePeriod'), sortable: true,filters:[{ data: '' }],slots: { filter: 'num1_filter' },filterMethod:filterChanged}, |
| | | {field: 'inventoryArea',width: '100', title: t('productStock.inventoryArea'), sortable: true,filters:[{ data: '' }],slots: { filter: 'num1_filter' },filterMethod:filterChanged}, |
| | | //{field: 'deadStock',width: '100', title: '积压库存', sortable: true,filters:[{ data: '' }],slots: { filter: 'num1_filter' },filterMethod:filterChanged}, |
| | | {field: 'createTime',width: '100', title: '入库时间', sortable: true}, |
| | | {field: 'remarks',width: '80', title: '备注', sortable: true,filters:[{ data: '' }],slots: { filter: 'num1_filter' },filterMethod:filterChanged}, |
| | | {field: 'createTime',width: '100', title: t('productStock.storageTime'), sortable: true}, |
| | | {field: 'remarks',width: '80', title: t('basicData.remarks'), sortable: true,filters:[{ data: '' }],slots: { filter: 'num1_filter' },filterMethod:filterChanged}, |
| | | ] |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | request.get(`/BasicWarehouse/BasicWarehouseType/原片|辅料`).then((res) => { |
| | | request.get(`/BasicWarehouse/BasicWarehouseType/`+t('mainIngredient.originalFilm')+'|'+t('mainIngredient.accessories')).then((res) => { |
| | | if(res.code==200){ |
| | | gridOptions.columns.splice(0,gridOptions.columns.length) |
| | | BasicData.value = res.data |
| | |
| | | gridOptions.columns.push(aa) |
| | | |
| | | } |
| | | values.value='库存' |
| | | values.value=t('mainIngredientStock.inventory') |
| | | getInventoryWorks() |
| | | |
| | | }else{ |
| | |
| | | } |
| | | |
| | | const selectInventoryWork = () => { |
| | | if(values.value==='库存'){ |
| | | if(values.value===t('mainIngredientStock.inventory')){ |
| | | getInventoryWorks() |
| | | }else{ |
| | | getInventoryEngineeringWork() |
| | |
| | | |
| | | |
| | | const selectOrderList = ()=>{ |
| | | request.get(`/BasicWarehouse/BasicWarehouseType/原片|辅料`).then((res) => { |
| | | request.get(`/BasicWarehouse/BasicWarehouseType/`+t('mainIngredient.originalFilm')+'|'+t('mainIngredient.accessories')).then((res) => { |
| | | if(res.code==200){ |
| | | gridOptions.columns.splice(0,gridOptions.columns.length) |
| | | BasicData.value = res.data |
| | |
| | | gridOptions.columns.push(aa) |
| | | |
| | | } |
| | | if(values.value==='库存'){ |
| | | if(values.value===t('mainIngredientStock.inventory')){ |
| | | getInventoryWorkPaging() |
| | | }else{ |
| | | getInventoryEngineeringWork() |
| | |
| | | ],//表头按钮 |
| | | toolbarConfig: { |
| | | buttons: [ |
| | | {'code': 'out', 'name': '物料出库',status: 'primary'}, |
| | | {'code': 'add', 'name': '物料新增',status: 'primary'}, |
| | | {'code': 'out', 'name': t('mainIngredientStock.materialOutbound'),status: 'primary'}, |
| | | {'code': 'add', 'name': t('mainIngredient.materialAddition'),status: 'primary'}, |
| | | ], |
| | | /*import: false, |
| | | export: true, |
| | |
| | | return[ |
| | | columns.map((column, columnIndex) => { |
| | | if (columnIndex === 0) { |
| | | return '合计:' |
| | | return t('basicData.total') |
| | | } |
| | | // if (props.tableProp.footList.includes(column.field)) { |
| | | // return sumNum(data, column.field) |
| | |
| | | } |
| | | let id = "" |
| | | const array = []; |
| | | if (values.value==='库存'){ |
| | | if (values.value===t('mainIngredientStock.inventory')){ |
| | | for (let i = 0; i < selectRecords.length; i++) { |
| | | array.push(selectRecords[i].id) |
| | | if (i + 1 === selectRecords.length) { |
| | |
| | | dialogTableVisible.value=true |
| | | select() |
| | | //第一次加载默认 |
| | | value.value='原片' |
| | | filterData.value.type='原片' |
| | | value.value=t('mainIngredient.originalFilm') |
| | | filterData.value.type=t('mainIngredient.originalFilm') |
| | | request.get(`/BasicWarehouse/BasicWarehouseType/${value.value}`).then((res) => { |
| | | if(res.code==200){ |
| | | gridOption.columns.splice(0,gridOption.columns.length) |
| | |
| | | |
| | | |
| | | let arrs = [ |
| | | { type: 'radio',fixed:"left", title: '选择', width: '80' }, |
| | | { type: 'seq',fixed:'left', title: '自序', width: '80' }, |
| | | {field: 'id', width: '150',title: '物料编码', sortable: true,showOverflow:'ellipsis' ,filters:[{ data: '' }],slots: { filter: 'num1_filter' },filterMethod:filterChanged} |
| | | { type: 'radio',fixed:"left", title: t('basicData.check'), width: '80' }, |
| | | { type: 'seq',fixed:'left', title: t('basicData.Number'), width: '80' }, |
| | | {field: 'id', width: '150',title: t('mainIngredient.materialCode'), sortable: true,showOverflow:'ellipsis' ,filters:[{ data: '' }],slots: { filter: 'num1_filter' },filterMethod:filterChanged} |
| | | ] |
| | | |
| | | const value = ref('') |
| | | const options = [ |
| | | { |
| | | value: '原片', |
| | | label: '原片' |
| | | value: t('mainIngredient.originalFilm'), |
| | | label: t('mainIngredient.originalFilm') |
| | | }, |
| | | { |
| | | value: '辅料', |
| | | label: '辅料', |
| | | value: t('mainIngredient.accessories'), |
| | | label: t('mainIngredient.accessories'), |
| | | } |
| | | ] |
| | | |
| | |
| | | }) |
| | | |
| | | const select=() =>{ |
| | | request.get(`/BasicWarehouse/BasicWarehouseTypes/库存组织`).then((res) => { |
| | | request.get(`/BasicWarehouse/BasicWarehouseTypes/`+t('mainIngredientStock.inventoryOrganization')).then((res) => { |
| | | |
| | | if(res.code==200){ |
| | | titleSelectJson.value=deepClone(res.data) |
| | |
| | | //表头数据校验 |
| | | const outboundType = titleUploadData.value.inventoryOrganization |
| | | if(outboundType === null || outboundType === undefined || outboundType === ''){ |
| | | ElMessage.error("请选择库存组织") |
| | | ElMessage.error(t('mainIngredientStock.pleaseSelectInventoryOrganization')) |
| | | return |
| | | } |
| | | const materialRequisitionPersonnel = titleUploadData.value.inventoryQuantity |
| | | if(materialRequisitionPersonnel === null || materialRequisitionPersonnel === undefined || materialRequisitionPersonnel === ''){ |
| | | ElMessage.error("请输入数量") |
| | | ElMessage.error(t('mainIngredientStock.pleaseEnterTheQuantity')) |
| | | return |
| | | } |
| | | const dateOfManufacture= titleUploadData.value.dateOfManufacture |
| | |
| | | |
| | | request.post("/MaterialInventory/saveMaterialInventory", flowData.value).then((res) => { |
| | | if(res.code==200){ |
| | | ElMessage.success('保存成功') |
| | | ElMessage.success(t('basicData.msg.saveSuccess')) |
| | | router.push({path: '/main/ingredientsStock/SelectIngredientsStock', query:{random:Math.random()}}) |
| | | }else{ |
| | | ElMessage.warning(res.msg) |
| | |
| | | <el-date-picker |
| | | v-model="selectDate" |
| | | type="daterange" |
| | | start-placeholder="开始时间" |
| | | end-placeholder="结束时间" |
| | | :start-placeholder="$t('basicData.startDate')" |
| | | :end-placeholder="$t('basicData.endDate')" |
| | | format="YYYY-MM-DD" |
| | | value-format="YYYY-MM-DD" |
| | | |
| | | /> |
| | | <el-button @click="changeDate" style="margin-top: -5px" id="searchButton" type="primary" :icon="Search">查询</el-button> |
| | | <el-button @click="changeDate" style="margin-top: -5px" id="searchButton" type="primary" :icon="Search">{{$t('basicData.search')}}</el-button> |
| | | <div> |
| | | <el-row> |
| | | <el-select v-model="values" placeholder="请选择类别" @change="selectInventoryWork"> |
| | | <el-select v-model="values" :placeholder="$t('mainIngredient.pleaseSelectACategory')" @change="selectInventoryWork"> |
| | | <el-option |
| | | v-for="item in selectOptions" |
| | | :key="item.value" |
| | |
| | | <!--左边固定显示的插槽--> |
| | | <template #button_slot="{ row }"> |
| | | <el-button @click="getTableRow(row,'edit')" |
| | | link type="primary" size="small">编辑</el-button> |
| | | <el-button @click="getTableRow(row,'delete')" link type="primary" size="small">删除</el-button> |
| | | link type="primary" size="small">{{$t('basicData.edit')}}</el-button> |
| | | <el-button @click="getTableRow(row,'delete')" link type="primary" size="small">{{$t('basicData.delete')}}</el-button> |
| | | </template> |
| | | |
| | | <template #num1_filter="{ column, $panel }"> |
| | |
| | | |
| | | </vxe-grid> |
| | | |
| | | <el-dialog v-model="dialogTableVisible" title="物料新增" style="width: 70%;height:75% "> |
| | | <el-dialog v-model="dialogTableVisible" :title="$t('mainIngredient.materialAddition')" style="width: 70%;height:75% "> |
| | | <div class="order-primary" > |
| | | <el-row> |
| | | <el-col :span="2"><el-text>生产日期:</el-text></el-col> |
| | | <el-col :span="2"><el-text>{{$t('mainIngredientStock.dateOfManufacture')}}:</el-text></el-col> |
| | | <el-col :span="4"> |
| | | <el-date-picker |
| | | v-model="titleUploadData.dateOfManufacture" |
| | | type="date" |
| | | format="YYYY-MM-DD" |
| | | value-format="YYYY-MM-DD" |
| | | placeholder="请选择生产日期"/> |
| | | :placeholder="$t('mainIngredientStock.pleaseDateOfManufacture')"/> |
| | | </el-col> |
| | | |
| | | <el-col :span="2"><el-text>保质期:</el-text></el-col> |
| | | <el-col :span="2"><el-text>{{$t('mainIngredientStock.qualityGuaranteePeriod')}}:</el-text></el-col> |
| | | <el-col :span="3"><el-input v-model="titleUploadData.qualityGuaranteePeriod" /></el-col> |
| | | <el-col :span="1"><el-text>产地:</el-text></el-col> |
| | | <el-col :span="1"><el-text>{{$t('mainIngredientStock.producer')}}:</el-text></el-col> |
| | | <el-col :span="3"><el-input v-model="titleUploadData.producer" /></el-col> |
| | | |
| | | </el-row> |
| | | <el-row> |
| | | <el-col :span="2"><el-text>库存组织:</el-text></el-col> |
| | | <el-col :span="2"><el-text>{{$t('mainIngredientStock.inventoryOrganization')}}:</el-text></el-col> |
| | | <el-col :span="4"> |
| | | <el-select v-model="titleUploadData.inventoryOrganization" clearable placeholder="" > |
| | | <el-option |
| | |
| | | /> |
| | | </el-select> |
| | | </el-col> |
| | | <el-col :span="2"><el-text>库存区域:</el-text></el-col> |
| | | <el-col :span="2"><el-text>{{$t('productStock.inventoryArea')}}:</el-text></el-col> |
| | | <el-col :span="3"><el-input v-model="titleUploadData.inventoryArea" /></el-col> |
| | | <el-col :span="1"><el-text>数量:</el-text></el-col> |
| | | <el-col :span="1"><el-text>{{$t('order.quantity')}}:</el-text></el-col> |
| | | <el-col :span="3"><el-input v-model="titleUploadData.inventoryQuantity" /></el-col> |
| | | <el-col :span="1"><el-text>备注:</el-text></el-col> |
| | | <el-col :span="1"><el-text>{{$t('basicData.remarks')}}:</el-text></el-col> |
| | | <el-col :span="3"><el-input v-model="titleUploadData.remarks" /></el-col> |
| | | |
| | | </el-row> |
| | | </div> |
| | | <div> |
| | | <el-row> |
| | | <el-select v-model="value" placeholder="请选择类别" @change="getStoreWork"> |
| | | <el-select v-model="value" :placeholder="$t('mainIngredientStock.pleaseSelectACategory')" @change="getStoreWork"> |
| | | <el-option |
| | | v-for="item in options" |
| | | :key="item.value" |
| | |
| | | ElMessage.success(t('productStock.receivedSuccessfully')) |
| | | router.push({path:'/main/productStock/CreateProductStock',query:{random:Math.random()}}) |
| | | }else{ |
| | | ElMessage.warning("入库失败") |
| | | ElMessage.warning(t('productStock.entryFailure')) |
| | | router.push("/login") |
| | | } |
| | | }) |
| | |
| | | |
| | | } |
| | | case 'jump': { |
| | | router.push({path: '/main/productStock/storageRecord', query: { storageType: '入库' }}) |
| | | router.push({path: '/main/productStock/storageRecord', query: { storageType: t('productStock.entry') }}) |
| | | return; |
| | | |
| | | } |
| | |
| | | ElMessage.success(t('productStock.successfullyRetrieved')) |
| | | router.push({path:'/main/productStock/FinishedGoodsIssue',query:{random:Math.random()}}) |
| | | }else{ |
| | | ElMessage.warning("领出失败") |
| | | ElMessage.warning(t('productStock.failedToRetrieve')) |
| | | router.push("/login") |
| | | } |
| | | }).catch((err)=>{ |
| | | ElMessage.error('系统错误') |
| | | ElMessage.error(t('basicData.msg.ServerConnectionError')) |
| | | router.push("/login") |
| | | }) |
| | | |
| | |
| | | ElMessage.success(t('productStock.deliverySuccessful')) |
| | | router.push({path: '/main/productStock/FinishedProductOut', query: {random: Math.random()}}) |
| | | } else { |
| | | ElMessage.warning("发货失败") |
| | | ElMessage.warning(t('productStock.deliveryFailed')) |
| | | router.push("/login") |
| | | } |
| | | }).catch((err)=>{ |
| | | ElMessage.error('系统错误') |
| | | ElMessage.error(t('basicData.msg.ServerConnectionError')) |
| | | router.push("/login") |
| | | }) |
| | | |
| | |
| | | |
| | | } |
| | | case 'jump': { |
| | | router.push({path: '/main/productStock/storageRecord', query: {storageType: '出库'}}) |
| | | router.push({path: '/main/productStock/storageRecord', query: {storageType: t('productStock.outbound')}}) |
| | | return; |
| | | |
| | | } |
| | |
| | | ElMessage.success(t('productStock.reworkSuccessful')) |
| | | router.push({path:'/main/productStock/FinishedProductRework',query:{random:Math.random()}}) |
| | | } else { |
| | | ElMessage.warning("返工失败") |
| | | ElMessage.warning(t('productStock.reworkFailed')) |
| | | router.push("/login") |
| | | } |
| | | }).catch((err)=>{ |
| | | ElMessage.error('系统错误') |
| | | ElMessage.error(t('basicData.msg.ServerConnectionError')) |
| | | router.push("/login") |
| | | }) |
| | | |
| | |
| | | ElMessage.success(t('productStock.transferSuccessful')) |
| | | router.push({path:'/main/productStock/OrderAllocation',query:{random:Math.random()}}) |
| | | } else { |
| | | ElMessage.warning("调拨失败") |
| | | ElMessage.warning(t('productStock.transferFailed')) |
| | | router.push("/login") |
| | | } |
| | | }).catch((err)=>{ |
| | | ElMessage.error('系统错误') |
| | | ElMessage.error(t('basicData.msg.ServerConnectionError')) |
| | | router.push("/login") |
| | | }) |
| | | |
| | |
| | | router.push({path:'/main/productStock/ReworkRecord',query:{random:Math.random()}}) |
| | | |
| | | }else{ |
| | | ElMessage.warning("反审失败") |
| | | ElMessage.warning(t('basicData.msg.cancelReviewFail')) |
| | | router.push("/login") |
| | | } |
| | | }).catch((err)=>{ |
| | | ElMessage.error('系统错误') |
| | | ElMessage.error(t('basicData.msg.ServerConnectionError')) |
| | | router.push("/login") |
| | | }) |
| | | } |
| | |
| | | |
| | | const checkBoxConfig = { |
| | | checkMethod: ({ row }) => { |
| | | if (row['status']==='已审核'||row['status']==='未通过'){ |
| | | if (row['status']===t('productStock.approved')||row['status']===t('productStock.notPassed')){ |
| | | return !row.disable |
| | | }else{ |
| | | return row.disable |
| | |
| | | <el-date-picker |
| | | v-model="selectDate" |
| | | type="daterange" |
| | | start-placeholder="开始时间" |
| | | end-placeholder="结束时间" |
| | | :start-placeholder="$t('basicData.startDate')" |
| | | :end-placeholder="$t('basicData.endDate')" |
| | | format="YYYY-MM-DD" |
| | | value-format="YYYY-MM-DD" |
| | | |
| | |
| | | router.push({path:'/main/productStock/storageRecord',query:{random:Math.random(),storageType: type.value}}) |
| | | |
| | | }else{ |
| | | ElMessage.warning("反作废失败") |
| | | ElMessage.warning(t('productStock.cancellationFailed')) |
| | | router.push("/login") |
| | | } |
| | | }).catch((err)=>{ |
| | | ElMessage.error('系统错误') |
| | | ElMessage.error(t('basicData.msg.ServerConnectionError')) |
| | | router.push("/login") |
| | | }) |
| | | } |
| | |
| | | |
| | | const checkBoxConfig = { |
| | | checkMethod: ({ row }) => { |
| | | if (row['status']==='已审核'||row['status']==='未通过'){ |
| | | if (row['status']===t('productStock.approved')||row['status']===t('productStock.notPassed')){ |
| | | return row.disable |
| | | }else{ |
| | | return !row.disable |
| | |
| | | <el-date-picker |
| | | v-model="selectDate" |
| | | type="daterange" |
| | | start-placeholder="开始时间" |
| | | end-placeholder="结束时间" |
| | | :start-placeholder="$t('basicData.startDate')" |
| | | :end-placeholder="$t('basicData.endDate')" |
| | | format="YYYY-MM-DD" |
| | | value-format="YYYY-MM-DD" |
| | | |
| | |
| | | router.push({path:'/main/productStock/TakeOutRecord',query:{random:Math.random()}}) |
| | | |
| | | }else{ |
| | | ElMessage.warning("审核失败") |
| | | ElMessage.warning(t('basicData.msg.reviewFail')) |
| | | router.push("/login") |
| | | } |
| | | }).catch((err)=>{ |
| | | ElMessage.error('系统错误') |
| | | ElMessage.error(t('basicData.msg.ServerConnectionError')) |
| | | router.push("/login") |
| | | }) |
| | | } |
| | |
| | | router.push({path:'/main/productStock/TakeOutRecord',query:{random:Math.random()}}) |
| | | |
| | | }else{ |
| | | ElMessage.warning("作废失败") |
| | | ElMessage.warning(t('productStock.voidFailed')) |
| | | router.push("/login") |
| | | } |
| | | }).catch((err)=>{ |
| | | ElMessage.error('系统错误') |
| | | ElMessage.error(t('basicData.msg.ServerConnectionError')) |
| | | router.push("/login") |
| | | }) |
| | | } |
| | |
| | | |
| | | const checkBoxConfig = { |
| | | checkMethod: ({ row }) => { |
| | | if (row['status']==='已审核'||row['status']==='未通过'){ |
| | | if (row['status']===t('productStock.approved')||row['status']===t('productStock.notPassed')){ |
| | | return row.disable |
| | | }else{ |
| | | return !row.disable |
| | |
| | | <el-date-picker |
| | | v-model="selectDate" |
| | | type="daterange" |
| | | start-placeholder="开始时间" |
| | | end-placeholder="结束时间" |
| | | :start-placeholder="$t('basicData.startDate')" |
| | | :end-placeholder="$t('basicData.endDate')" |
| | | format="YYYY-MM-DD" |
| | | value-format="YYYY-MM-DD" |
| | | |
| | |
| | | router.push({path:'/main/productStock/TransferRecord',query:{random:Math.random()}}) |
| | | |
| | | }else{ |
| | | ElMessage.warning("反审失败") |
| | | ElMessage.warning(t('basicData.msg.cancelReviewFail')) |
| | | router.push("/login") |
| | | } |
| | | }).catch((err)=>{ |
| | | ElMessage.error('系统错误') |
| | | ElMessage.error(t('basicData.msg.ServerConnectionError')) |
| | | router.push("/login") |
| | | }) |
| | | } |
| | |
| | | <el-date-picker |
| | | v-model="selectDate" |
| | | type="daterange" |
| | | start-placeholder="开始时间" |
| | | end-placeholder="结束时间" |
| | | :start-placeholder="$t('basicData.startDate')" |
| | | :end-placeholder="$t('basicData.endDate')" |
| | | format="YYYY-MM-DD" |
| | | value-format="YYYY-MM-DD" |
| | | |
| | |
| | | :to="{path:'/main/stockReport/WarehouseReport'}">原材料报表 |
| | | </el-breadcrumb-item>--> |
| | | <el-breadcrumb-item @click="changeRouter(2)" :class="indexFlag===2?'indexTag':''" |
| | | :to="{path:'/main/stockReport/StockWarehouseReport'}">成品报表 |
| | | :to="{path:'/main/stockReport/StockWarehouseReport'}">{{$t('report.finishedProductReport')}} |
| | | </el-breadcrumb-item> |
| | | <!-- <el-breadcrumb-item @click="changeRouter(3)" :class="indexFlag===3?'indexTag':''" |
| | | :to="{path:'/main/stockReport/StockMonthReport'}">原片月结报表 |
| | |
| | | {field: 'orderDetail.productName',width: '140', title: t('order.product'),filters:[{ data: '' }],slots: { filter: 'num1_filter' }}, |
| | | {field: 'orderDetail.width', width: '100',title: t('order.width'),filters:[{ data: '' }],slots: { filter: 'num1_filter' }}, |
| | | {field: 'orderDetail.height',width: '100', title: t('order.height'),filters:[{ data: '' }],slots: { filter: 'num1_filter' }}, |
| | | {field: 'staterOperationOrderNumber', width: '150',title: '调拨销售单号',filters:[{ data: '' }],slots: { filter: 'num1_filter' }}, |
| | | {field: 'endOperationOrderNumber', width: '100',title: '调拨序号',filters:[{ data: '' }],slots: { filter: 'num1_filter' }}, |
| | | {field: 'staterOperationOrderNumber', width: '150',title: t('productStock.staterOperationOrderNumber'),filters:[{ data: '' }],slots: { filter: 'num1_filter' }}, |
| | | {field: 'endOperationOrderNumber', width: '100',title: t('productStock.endOperationOrderNumber'),filters:[{ data: '' }],slots: { filter: 'num1_filter' }}, |
| | | {field: 'operator', width: '100',title: t('productStock.creator'),filters:[{ data: '' }],slots: { filter: 'num1_filter' }}, |
| | | {field: 'operateTime', width:'140', title: t('productStock.productionDate'),filters:[{ data: '' }],slots: { filter: 'num1_filter' }}, |
| | | {field: 'processId', width:'140', title: '流程卡号',filters:[{ data: '' }],slots: { filter: 'num1_filter' }}, |
| | | {field: 'type', width:'140', title: '领出类型',filters:[{ data: '' }],slots: { filter: 'num1_filter' }}, |
| | | {field: 'processId', width:'140', title: t('processCard.processId'),filters:[{ data: '' }],slots: { filter: 'num1_filter' }}, |
| | | {field: 'type', width:'140', title: t('productStock.领出类型'),filters:[{ data: '' }],slots: { filter: 'num1_filter' }}, |
| | | {field: 'reviewed', width: '100',title: t('productStock.reviewed'),filters:[{ data: '' }],slots: { filter: 'num1_filter' }}, |
| | | {field: 'reviewedTime', width: '140',title: t('productStock.approvedDate'),filters:[{ data: '' }],slots: { filter: 'num1_filter' }}, |
| | | {field: 'remarks', width: '140',title: t('productStock.remarks'),filters:[{ data: '' }],slots: { filter: 'num1_filter' }}, |
| | |
| | | data:[],//表格数据 |
| | | url :'/FinishedGoodsInventory/getSelectFinishedOperateLogReport', |
| | | exportUrl :'/FinishedGoodsInventory/exportFinishedOperateLogReport', |
| | | exportName:'成品报表', |
| | | exportName:t('report.finishedProductReport'), |
| | | footList:['quantity'] |
| | | }) |
| | | |
| | |
| | | |
| | | </vxe-grid> |
| | | |
| | | <el-dialog v-model="dialogFormVisible" title="设备编辑"> |
| | | <el-dialog v-model="dialogFormVisible" :title="$t('machine.deviceEditing')"> |
| | | <el-form :model="form"> |
| | | <el-form-item label="标准名称" :label-width="formLabelWidth"> |
| | | <el-form-item :label="$t('machine.standardName')" :label-width="formLabelWidth"> |
| | | <el-input v-model="form.name" autocomplete="off" style="width: 220px"/> |
| | | </el-form-item> |
| | | <el-form-item label="设备名称" :label-width="formLabelWidth"> |
| | | <el-form-item :label="$t('machine.basicName')" :label-width="formLabelWidth"> |
| | | <el-input v-model="form.name" autocomplete="off" style="width: 220px"/> |
| | | </el-form-item> |
| | | <el-form-item label="购买时间" :label-width="formLabelWidth"> |
| | | <el-form-item :label="$t('machine.purchaseTime')" :label-width="formLabelWidth"> |
| | | <el-date-picker |
| | | v-model="value1" |
| | | type="date" |
| | |
| | | :size="size" |
| | | /> |
| | | </el-form-item> |
| | | <el-form-item label="安装时间" :label-width="formLabelWidth"> |
| | | <el-form-item :label="$t('machine.installationTime')" :label-width="formLabelWidth"> |
| | | <el-date-picker |
| | | v-model="value1" |
| | | type="date" |
| | |
| | | :size="size" |
| | | /> |
| | | </el-form-item> |
| | | <el-form-item label="保养周期" :label-width="formLabelWidth"> |
| | | <el-form-item :label="$t('machine.maintenanceCycle')" :label-width="formLabelWidth"> |
| | | <el-input v-model="form.name" autocomplete="off" style="width: 220px"/> |
| | | </el-form-item> |
| | | <el-form-item label="所在工艺" :label-width="formLabelWidth"> |
| | | <el-select v-model="form.region" placeholder="钢化" style="width: 220px"> |
| | | <el-option label="切割" value="shanghai" /> |
| | | <el-option label="磨边" value="mobian" /> |
| | | <el-option label="钢化" value="ganghua" /> |
| | | <el-form-item :label="$t('machine.standardName')" :label-width="formLabelWidth"> |
| | | <el-select v-model="form.region" :placeholder="$t('machine.tempering')" style="width: 220px"> |
| | | <el-option :label="$t('machine.cutting')" value="shanghai" /> |
| | | <el-option :label="$t('machine.edgeGrinding')" value="mobian" /> |
| | | <el-option :label="$t('machine.tempering')" value="ganghua" /> |
| | | </el-select> |
| | | </el-form-item> |
| | | </el-form> |
| | | <template #footer> |
| | | <span class="dialog-footer"> |
| | | <el-button @click="dialogFormVisible = false">取消</el-button> |
| | | <el-button @click="dialogFormVisible = false">{{$t('basicData.cancelButtonText')}}</el-button> |
| | | <el-button type="primary" @click="dialogFormVisible = false"> |
| | | 确认 |
| | | {{$t('basicData.confirmButtonText')}} |
| | | </el-button> |
| | | </span> |
| | | </template> |
| | |
| | | } |
| | | |
| | | #printFlowCard { |
| | | margin-top: -40px; |
| | | text-align: center; |
| | | //font-weight: bolder; height: 600px; |
| | | } |
| | |
| | | showStatus: true |
| | | },//表头参数 |
| | | columns:[ |
| | | { type: 'seq',fixed:"left", title: '自序', width: 50 }, |
| | | { type: 'seq',fixed:"left", title: t('basicData.Number'), width: 50 }, |
| | | { |
| | | field: 'basicName', |
| | | title: '次破原因', |
| | | title: t('reportingWorks.breakageReason'), |
| | | width: 1000, |
| | | editRender: {name: 'input', attrs: {placeholder: ''}}, |
| | | |
| | |
| | | buttons: [ |
| | | {code: 'removeRow', name: t('basicData.delete'), status: 'primary', icon: 'vxe-icon-delete'}, |
| | | {code: 'addRow', name: t('reportingWorks.increase'), status: 'primary', icon: 'vxe-icon-square-plus'}, |
| | | {code: 'save', name: '保存', status: 'primary', icon: 'vxe-icon-save'}, |
| | | {code: 'save', name: t('basicData.save'), status: 'primary', icon: 'vxe-icon-save'}, |
| | | ], |
| | | // import: false, |
| | | // export: true, |
| | |
| | | return[ |
| | | columns.map((column, columnIndex) => { |
| | | if (columnIndex === 0) { |
| | | return '合计:' |
| | | return t('basicData.total') |
| | | } |
| | | if (footList.includes(column.field)) { |
| | | return sumNum(data, column.field) |
| | |
| | | }) |
| | | request.post("/basicDataProduce/saveBreakageReason", breakageTypeData.value).then((res) => { |
| | | if (res.code == 200) { |
| | | ElMessage.success("保存成功") |
| | | ElMessage.success(t('basicData.msg.saveSuccess')) |
| | | router.push({ |
| | | path: '/main/productionBasicData/AddBreakageReason', |
| | | query: {random: Math.random()} |
| | |
| | | showStatus: true |
| | | },//表头参数 |
| | | columns:[ |
| | | { type: 'seq',fixed:"left", title: '自序', width: 50 }, |
| | | { type: 'seq',fixed:"left", title: t('basicData.Number'), width: 50 }, |
| | | |
| | | { |
| | | field: 'basicName', |
| | | title: '次破类型', |
| | | title: t('reportingWorks.breakageType'), |
| | | width: 1000, |
| | | editRender: {name: 'input', attrs: {placeholder: ''}}, |
| | | |
| | |
| | | buttons: [ |
| | | {code: 'removeRow', name: t('basicData.delete'), status: 'primary', icon: 'vxe-icon-delete'}, |
| | | {code: 'addRow', name: t('reportingWorks.increase'), status: 'primary', icon: 'vxe-icon-square-plus'}, |
| | | {code: 'save', name: '保存', status: 'primary', icon: 'vxe-icon-save'}, |
| | | {code: 'save', name: t('basicData.save'), status: 'primary', icon: 'vxe-icon-save'}, |
| | | ], |
| | | // import: false, |
| | | // export: true, |
| | |
| | | return[ |
| | | columns.map((column, columnIndex) => { |
| | | if (columnIndex === 0) { |
| | | return '合计:' |
| | | return t('basicData.total') |
| | | } |
| | | if (footList.includes(column.field)) { |
| | | return sumNum(data, column.field) |
| | |
| | | }) |
| | | request.post("/basicDataProduce/saveBreakageType", breakageTypeData.value).then((res) => { |
| | | if (res.code == 200) { |
| | | ElMessage.success("保存成功") |
| | | ElMessage.success(t('basicData.msg.saveSuccess')) |
| | | router.push({ |
| | | path: '/main/productionBasicData/AddBreakageType', |
| | | query: {random: Math.random()} |
| | |
| | | showStatus: true |
| | | },//表头参数 |
| | | columns: [ |
| | | {type: 'seq', fixed: "left", title: '自序', width: 50}, |
| | | {type: 'seq', fixed: "left", title: t('basicData.Number'), width: 50}, |
| | | { |
| | | field: 'basicName', |
| | | title: '班组名称', |
| | | title: t('productionBasicData.teamName'), |
| | | width: 600, |
| | | editRender: {name: 'input', attrs: {placeholder: ''}}, |
| | | |
| | | }, |
| | | { |
| | | field: 'basicCategory', |
| | | title: '所在工序', |
| | | title: t('productionBasicData.processInvolved'), |
| | | editRender: {}, |
| | | slots: {default: 'basicCategory_default', edit: 'basicCategory'} |
| | | }, |
| | |
| | | buttons: [ |
| | | {code: 'removeRow', name: t('basicData.delete'), status: 'primary', icon: 'vxe-icon-delete'}, |
| | | {code: 'addRow', name: t('reportingWorks.increase'), status: 'primary', icon: 'vxe-icon-square-plus'}, |
| | | {code: 'save', name: '保存', status: 'primary', icon: 'vxe-icon-save'}, |
| | | {code: 'save', name: t('basicData.save'), status: 'primary', icon: 'vxe-icon-save'}, |
| | | ], |
| | | // import: false, |
| | | // export: true, |
| | |
| | | return [ |
| | | columns.map((column, columnIndex) => { |
| | | if (columnIndex === 0) { |
| | | return '合计:' |
| | | return t('basicData.total') |
| | | } |
| | | if (footList.includes(column.field)) { |
| | | return sumNum(data, column.field) |
| | |
| | | }) |
| | | request.post("/basicDataProduce/saveTeamGroup", teamGroupData.value).then((res) => { |
| | | if (res.code == 200) { |
| | | ElMessage.success("保存成功") |
| | | ElMessage.success(t('basicData.msg.saveSuccess')) |
| | | //router.push('/main/processCard/SplittingDetails?orderId=${orderId}') |
| | | router.push({ |
| | | path: '/main/productionBasicData/AddTeamGroup', |
| | |
| | | <div id="main"> |
| | | <div id="div-title"> |
| | | <el-breadcrumb :separator-icon="ArrowRight"> |
| | | <el-breadcrumb-item @click="changeRouter(1)" :class="indexFlag===1?'indexTag':''" :to="{ path: '/main/productionBasicData/SelectProductionBasicData' }">基础数据查询</el-breadcrumb-item> |
| | | <el-breadcrumb-item @click="changeRouter(2)" :class="indexFlag===2?'indexTag':''" :to="{ path: '/main/productionBasicData/AddBreakageType' }">次破类型新增</el-breadcrumb-item> |
| | | <el-breadcrumb-item @click="changeRouter(3)" :class="indexFlag===3?'indexTag':''" :to="{ path: '/main/productionBasicData/AddBreakageReason' }">次破原因新增</el-breadcrumb-item> |
| | | <el-breadcrumb-item @click="changeRouter(4)" :class="indexFlag===4?'indexTag':''" :to="{ path: '/main/productionBasicData/AddTeamGroup' }">班组新增新增</el-breadcrumb-item> |
| | | <el-breadcrumb-item @click="changeRouter(1)" :class="indexFlag===1?'indexTag':''" :to="{ path: '/main/productionBasicData/SelectProductionBasicData' }">{{$t('productionBasicData.basicDataQuery')}}</el-breadcrumb-item> |
| | | <el-breadcrumb-item @click="changeRouter(2)" :class="indexFlag===2?'indexTag':''" :to="{ path: '/main/productionBasicData/AddBreakageType' }">{{$t('productionBasicData.newTypeOfSecondaryDamageAdded')}}</el-breadcrumb-item> |
| | | <el-breadcrumb-item @click="changeRouter(3)" :class="indexFlag===3?'indexTag':''" :to="{ path: '/main/productionBasicData/AddBreakageReason' }">{{$t('productionBasicData.reasonForSecondaryFailureAdded')}}</el-breadcrumb-item> |
| | | <el-breadcrumb-item @click="changeRouter(4)" :class="indexFlag===4?'indexTag':''" :to="{ path: '/main/productionBasicData/AddTeamGroup' }">{{$t('productionBasicData.teamAdditionAndAddition')}}</el-breadcrumb-item> |
| | | <!-- <el-breadcrumb-item @click="changeRouter(4)" :class="indexFlag===4?'indexTag':''" :to="{ path: '/main/productionBasicData/AddMaintenanceAndRepair' }">班组人员新增新增</el-breadcrumb-item>--> |
| | | <el-breadcrumb-item :to="{ path: '/main/processCard/SelectPrintFlowCard' }" style="display: none">打印</el-breadcrumb-item> |
| | | <el-breadcrumb-item :to="{ path: '/main/processCard/SelectPrintFlowCard' }" style="display: none">{{$t('basicData.print')}}</el-breadcrumb-item> |
| | | </el-breadcrumb> |
| | | </div> |
| | | |
| | |
| | | },//表头参数 |
| | | columns:[ |
| | | {type:'expand',fixed:"left",slots: { content:'content' },width: 50}, |
| | | {title: '操作', width: 140, slots: { default: 'button_slot' },fixed:"left"}, |
| | | {field: 'id', width: 60, title: 'id',filters:[{ data: '' }],slots: { filter: 'num1_filter' },filterMethod: filterChanged,}, |
| | | {field: 'basic_type',width: 370, title: '类型', showOverflow:"ellipsis" ,filters:[{ data: '' }],slots: { filter: 'num1_filter' },filterMethod: filterChanged}, |
| | | {field: 'basic_name', width: 330,title: '名称', filters:[{ data: '' }],slots: { filter: 'num1_filter' },filterMethod: filterChanged}, |
| | | {field: 'd_basic_name',width: 330, title: '类别'}, |
| | | {title: t('basicData.operate'), width: 140, slots: { default: 'button_slot' },fixed:"left"}, |
| | | {field: 'id', width: 60, title: t('productionBasicData.id'),filters:[{ data: '' }],slots: { filter: 'num1_filter' },filterMethod: filterChanged,}, |
| | | {field: 'basic_type',width: 370, title: t('machine.type'), showOverflow:"ellipsis" ,filters:[{ data: '' }],slots: { filter: 'num1_filter' },filterMethod: filterChanged}, |
| | | {field: 'basic_name', width: 330,title: t('orderBasicData.name'), filters:[{ data: '' }],slots: { filter: 'num1_filter' },filterMethod: filterChanged}, |
| | | {field: 'd_basic_name',width: 330, title: t('productionBasicData.basicName')}, |
| | | ], |
| | | //表头按钮 |
| | | toolbarConfig: { |
| | |
| | | |
| | | </vxe-grid> |
| | | |
| | | <el-dialog v-model="dialogTableVisible" title="基础数据修改"> |
| | | <el-dialog v-model="dialogTableVisible" :title="$t('productionBasicData.basicDataEdit')"> |
| | | <el-row> |
| | | <el-col :span="2"> |
| | | <el-text>id:</el-text> |
| | | <el-text>{{$t('productionBasicData.id')}}:</el-text> |
| | | </el-col> |
| | | <el-col :span="3"> |
| | | <el-input v-model="getBasicData.id" readonly autocomplete="off" style="width: 220px"/> |
| | |
| | | </el-row> |
| | | <el-row> |
| | | <el-col :span="2"> |
| | | <el-text>类型:</el-text> |
| | | <el-text>{{$t('machine.type')}}:</el-text> |
| | | </el-col> |
| | | <el-col :span="3"> |
| | | <el-input v-model="getBasicData.basic_type" readonly autocomplete="off" style="width: 220px"/> |
| | |
| | | </el-row> |
| | | <el-row> |
| | | <el-col :span="2"> |
| | | <el-text>名称:</el-text> |
| | | <el-text>{{$t('orderBasicData.name')}}:</el-text> |
| | | </el-col> |
| | | <el-col :span="3"> |
| | | <el-input v-model="getBasicData.basic_name" autocomplete="off" style="width: 220px"/> |
| | |
| | | </el-row> |
| | | <el-row> |
| | | <el-col :span="2"> |
| | | <el-text>类别:</el-text> |
| | | <el-text>{{$t('productionBasicData.basicName')}}:</el-text> |
| | | </el-col> |
| | | <el-col :span="3"> |
| | | <!-- <el-input v-model="getBasicData.d_basic_name" autocomplete="off" style="width: 220px"/>--> |
| | |
| | | |
| | | <template #footer> |
| | | <span class="dialog-footer"> |
| | | <el-button @click="dialogTableVisible = false">取消</el-button> |
| | | <el-button @click="dialogTableVisible = false">{{$t('basicData.cancelButtonText')}}</el-button> |
| | | <el-button type="primary" @click="updateBasic"> |
| | | 修改 |
| | | {{$t('basicData.update')}} |
| | | </el-button> |
| | | </span> |
| | | </template> |
| | |
| | | import BasicTable from "@/components/BasicTable.vue" |
| | | import request from "@/utils/request" |
| | | import { ref} from "vue" |
| | | |
| | | import {useI18n} from "vue-i18n"; |
| | | const {t} = useI18n() |
| | | const childrenData = ref({ |
| | | columns:[ |
| | | {type:'expand',fixed:"left",width: 80}, |
| | | {type: 'seq',fixed:"left", title: '自序', width: 80 }, |
| | | {field: 'reportingWork.reportingWorkTime', width: 120, title: '报工时间',filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true, }, |
| | | {field: 'reportingWork.thisProcess',width: 120, title: '报工工序', sortable: true,showOverflow:"ellipsis" ,filters:[{ data: '' }],slots: { filter: 'num1_filter' }}, |
| | | {field: 'responsibleProcess',width: 120, title: '责任工序', sortable: true,showOverflow:"ellipsis" ,filters:[{ data: '' }],slots: { filter: 'num1_filter' }}, |
| | | {field: 'responsibleTeam', width: 130,title: '责任班组', sortable: true,filters:[{ data: '' }],slots: { filter: 'num1_filter' }}, |
| | | {field: 'breakageType', width: 100,title: '次破类型', sortable: true,showOverflow:"ellipsis"}, |
| | | {field: 'breakageReason', width: 100,title: '次破原因', sortable: true,showOverflow:"ellipsis"}, |
| | | {field: 'breakageQuantity', width: 100,title: '次破数量', sortable: true}, |
| | | {field: 'area',width: 100, title: '次破面积', sortable: true}, |
| | | {field: 'order.project', width: 120,title: '项目名称', sortable: true}, |
| | | {field: 'order.orderId',width: 120, title: '销售单号', sortable: true}, |
| | | {field: 'orderGlassDetail.glassChild',width: 120, title: '单片名称', sortable: true}, |
| | | {field: 'reportingWork.reportingWorkTime', width: 120, title: t('reportingWorks.reportingWorkTime'),filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true, }, |
| | | {field: 'reportingWork.thisProcess',width: 120, title: t('reportingWorks.reportingProcess'), sortable: true,showOverflow:"ellipsis" ,filters:[{ data: '' }],slots: { filter: 'num1_filter' }}, |
| | | {field: 'responsibleProcess',width: 120, title: t('reportingWorks.responsibleProcess'), sortable: true,showOverflow:"ellipsis" ,filters:[{ data: '' }],slots: { filter: 'num1_filter' }}, |
| | | {field: 'responsibleTeam', width: 130,title: t('reportingWorks.responsibleTeam'), sortable: true,filters:[{ data: '' }],slots: { filter: 'num1_filter' }}, |
| | | {field: 'breakageType', width: 100,title: t('reportingWorks.breakageType'), sortable: true,showOverflow:"ellipsis"}, |
| | | {field: 'breakageReason', width: 100,title: t('reportingWorks.breakageReason'), sortable: true,showOverflow:"ellipsis"}, |
| | | {field: 'breakageQuantity', width: 100,title: t('reportingWorks.quantityBroken'), sortable: true}, |
| | | {field: 'area',width: 100, title: t('reportingWorks.wornArea'), sortable: true}, |
| | | {field: 'order.project', width: 120,title: t('order.project'), sortable: true}, |
| | | {field: 'order.orderId',width: 120, title: t('order.orderId'), sortable: true}, |
| | | {field: 'orderGlassDetail.glassChild',width: 120, title: t('reportingWorks.glassChild'), sortable: true}, |
| | | ],//表格表头字段 |
| | | data:[],//表格数据 |
| | | url :'/report/crossProcessBreaking', |
| | | exportUrl :'/report/exportCrossProcessBreaking', |
| | | exportName:'跨工序次破报表', |
| | | exportName:t('report.crossProcessBreakdown'), |
| | | footList:['breakageQuantity','area'] |
| | | }) |
| | | |
| | |
| | | }) |
| | | |
| | | //工序 |
| | | const value = ref('磨边') |
| | | const value = ref(t('machine.edgeGrinding')) |
| | | |
| | | //表尾求和 |
| | | const sumNum = (list, field) => { |
| | |
| | | },//表头参数 |
| | | columns: [ |
| | | {type: 'expand', fixed: "left", slots: {content: 'content'}, width: 50}, |
| | | {type: 'seq', fixed: "left", title: '自序', width: 50}, |
| | | {type: 'seq', fixed: "left", title: t('basicData.Number'), width: 50}, |
| | | { |
| | | field: 'orderId', width: 120, title: '销售单号',filters:[{ data: '' }],slots: { filter: 'num1_filter' } |
| | | field: 'orderId', width: 120, title: t('order.orderId'),filters:[{ data: '' }],slots: { filter: 'num1_filter' } |
| | | }, |
| | | { |
| | | field: 'project', |
| | | width: 120, |
| | | title: '项目名称', |
| | | title: t('order.project'), |
| | | showOverflow: "ellipsis", |
| | | filters:[{ data: '' }],slots: { filter: 'num1_filter' } |
| | | }, |
| | | { |
| | | field: 'processId', width: 130, title: '流程卡号', filters:[{ data: '' }],slots: { filter: 'num1_filter' } |
| | | field: 'processId', width: 130, title: t('processCard.processId'), filters:[{ data: '' }],slots: { filter: 'num1_filter' } |
| | | }, |
| | | { |
| | | field: 'orderNumber', width: 120, title: '订单序号',filters:[{ data: '' }],slots: { filter: 'num1_filter' } |
| | | field: 'orderNumber', width: 120, title: t('order.OrderNum'),filters:[{ data: '' }],slots: { filter: 'num1_filter' } |
| | | }, |
| | | { |
| | | field: 'technologyNumber', width: 100, title: '小片顺序', filters:[{ data: '' }],slots: { filter: 'num1_filter' } |
| | | field: 'technologyNumber', width: 100, title: t('processCard.technologyNumber'), filters:[{ data: '' }],slots: { filter: 'num1_filter' } |
| | | }, |
| | | { |
| | | field: 'reportingWorkTime', |
| | | width: 100, |
| | | title: '报工时间', |
| | | title: t('reportingWorks.reportingWorkTime'), |
| | | type: 'date', |
| | | attrs: {placeholder: '', type: 'date'}, |
| | | }, |
| | | {field: 'responsibleProcess', width: 120, title: '责任工序',filters:[{ data: '' }],slots: { filter: 'num1_filter' }, showOverflow: "ellipsis"}, |
| | | {field: 'responsibleTeam', width: 100, title: '责任班组',filters:[{ data: '' }],slots: { filter: 'num1_filter' }}, |
| | | {field: 'responsibleEquipment', width: 120, title: '责任设备',filters:[{ data: '' }],slots: { filter: 'num1_filter' }}, |
| | | {field: 'breakageType', width: 120, title: '次破类型',filters:[{ data: '' }],slots: { filter: 'num1_filter' }}, |
| | | {field: 'breakageReason', width: 120, title: '次破原因',filters:[{ data: '' }],slots: { filter: 'num1_filter' }}, |
| | | {field: 'breakageQuantity', width: 120, title: '次破数量'}, |
| | | {field: 'area', width: 120, title: '次破面积'}, |
| | | {field: 'personnel', width: 120, title: '责任人员'}, |
| | | {field: 'glassChild', width: 120, title: '单片名称'}, |
| | | {field: 'responsibleProcess', width: 120, title: t('reportingWorks.responsibleProcess'),filters:[{ data: '' }],slots: { filter: 'num1_filter' }, showOverflow: "ellipsis"}, |
| | | {field: 'responsibleTeam', width: 100, title: t('reportingWorks.responsibleTeam'),filters:[{ data: '' }],slots: { filter: 'num1_filter' }}, |
| | | {field: 'responsibleEquipment', width: 120, title: t('reportingWorks.responsibleEquipment'),filters:[{ data: '' }],slots: { filter: 'num1_filter' }}, |
| | | {field: 'breakageType', width: 120, title: t('reportingWorks.breakageType'),filters:[{ data: '' }],slots: { filter: 'num1_filter' }}, |
| | | {field: 'breakageReason', width: 120, title: t('reportingWorks.breakageReason'),filters:[{ data: '' }],slots: { filter: 'num1_filter' }}, |
| | | {field: 'breakageQuantity', width: 120, title: t('reportingWorks.quantityBroken')}, |
| | | {field: 'area', width: 120, title: t('reportingWorks.wornArea')}, |
| | | {field: 'personnel', width: 120, title: t('reportingWorks.responsiblePersonnel')}, |
| | | {field: 'glassChild', width: 120, title: t('reportingWorks.glassChild')}, |
| | | ],//表头按钮 |
| | | |
| | | toolbarConfig: { |
| | |
| | | <el-row :gutter="0"> |
| | | <el-date-picker |
| | | v-model="form.date1" |
| | | end-placeholder="结束时间" |
| | | :start-placeholder="$t('basicData.startDate')" |
| | | :end-placeholder="$t('basicData.endDate')" |
| | | format="YYYY/MM/DD" |
| | | start-placeholder="开始时间" |
| | | style="width: 100px" |
| | | type="daterange" |
| | | value-format="YYYY-MM-DD" |
| | | /> |
| | | |
| | | <el-button type="primary" @click="getWorkOrder">查询</el-button> |
| | | <el-button type="primary" @click="getWorkOrder">{{$t('basicData.search')}}</el-button> |
| | | </el-row> |
| | | |
| | | </div> |
| | |
| | | <template #toolbar_buttons> |
| | | <vxe-button style="margin-right: 0.5rem" |
| | | @click="exportExcel('/report/exportDamageReport', |
| | | '次破明细报表', |
| | | t('report.secondaryBrokenReport'), |
| | | form.date1)"> |
| | | 导出</vxe-button> |
| | | {{t('basicData.export')}}</vxe-button> |
| | | </template> |
| | | |
| | | <template #num1_filter="{ column, $panel }"> |
| | |
| | | }) |
| | | |
| | | //工序 |
| | | const value = ref('磨边') |
| | | const value = ref(t('machine.edgeGrinding')) |
| | | |
| | | //表尾求和 |
| | | const sumNum = (list, field) => { |
| | |
| | | },//表头参数 |
| | | columns: [ |
| | | {type: 'expand', fixed: "left", slots: {content: 'content'}, width: 50}, |
| | | {type: 'seq', fixed: "left", title: '自序', width: 50}, |
| | | {type: 'seq', fixed: "left", title: t('basicData.Number'), width: 50}, |
| | | { |
| | | field: 'order_id', width: 120, title: '销售单号', filters: [{data: ''}], |
| | | field: 'order_id', width: 120, title: t('order.orderId'), filters: [{data: ''}], |
| | | slots: {filter: 'num1_filter'}, |
| | | filterMethod: filterChanged |
| | | }, |
| | | { |
| | | field: 'customer_name', |
| | | width: 120, |
| | | title: '客户名称', |
| | | title: t('customer.customerName'), |
| | | showOverflow: "ellipsis", |
| | | filters: [{data: ''}], |
| | | slots: {filter: 'num1_filter'}, |
| | |
| | | { |
| | | field: 'project', |
| | | width: 120, |
| | | title: '项目名称', |
| | | title: t('order.project'), |
| | | showOverflow: "ellipsis", |
| | | filters: [{data: ''}], |
| | | slots: {filter: 'num1_filter'}, |
| | | filterMethod: filterChanged |
| | | }, |
| | | { |
| | | field: 'batch', width: 130, title: '批次', filters: [{data: ''}], |
| | | field: 'batch', width: 130, title: t('order.batch'), filters: [{data: ''}], |
| | | slots: {filter: 'num1_filter'}, |
| | | filterMethod: filterChanged |
| | | }, |
| | | { |
| | | field: 'quantity', width: 120, title: '订单数量', filters: [{data: ''}], |
| | | field: 'quantity', width: 120, title: t('order.quantity'), filters: [{data: ''}], |
| | | slots: {filter: 'num1_filter'}, |
| | | filterMethod: filterChanged |
| | | }, |
| | | { |
| | | field: 'area', width: 100, title: '订单面积', filters: [{data: ''}], |
| | | field: 'area', width: 100, title: t('order.area'), filters: [{data: ''}], |
| | | slots: {filter: 'num1_filter'}, |
| | | filterMethod: filterChanged |
| | | }, |
| | | { |
| | | field: 'create_time', |
| | | width: 100, |
| | | title: '分架时间', |
| | | title: t('processCard.splitFrameTime'), |
| | | type: 'date', |
| | | attrs: {placeholder: '', type: 'date'}, |
| | | }, |
| | | {field: 'startTime', width: 120, title: '切割开始时间', showOverflow: "ellipsis"}, |
| | | {field: 'completionsNum', width: 100, title: '完工数量'}, |
| | | {field: 'received_quantity', width: 120, title: '入库数量'}, |
| | | {field: 'receivedNo', width: 120, title: '未入库数量'}, |
| | | {field: 'accomplish', width: 120, title: '是否清单'}, |
| | | {field: 'daysDifference', width: 120, title: '生产天数'}, |
| | | {field: 'startTime', width: 120, title: t('report.startTime'), showOverflow: "ellipsis"}, |
| | | {field: 'completionsNum', width: 100, title: t('reportingWorks.completedQuantity')}, |
| | | {field: 'received_quantity', width: 120, title: t('report.inventoryNum')}, |
| | | {field: 'receivedNo', width: 120, title: t('report.receivedNo')}, |
| | | {field: 'accomplish', width: 120, title: t('report.accomplish')}, |
| | | {field: 'daysDifference', width: 120, title: t('report.daysDifference')}, |
| | | ],//表头按钮 |
| | | |
| | | toolbarConfig: { |
| | |
| | | <el-row :gutter="0"> |
| | | <el-date-picker |
| | | v-model="form.date1" |
| | | end-placeholder="结束时间" |
| | | :start-placeholder="$t('basicData.startDate')" |
| | | :end-placeholder="$t('basicData.endDate')" |
| | | format="YYYY/MM/DD" |
| | | start-placeholder="开始时间" |
| | | style="width: 100px" |
| | | type="daterange" |
| | | value-format="YYYY-MM-DD" |
| | | /> |
| | | |
| | | <el-button type="primary" @click="getWorkOrder">查询</el-button> |
| | | <el-button type="primary" @click="getWorkOrder">{{$t('basicData.search')}}</el-button> |
| | | </el-row> |
| | | |
| | | </div> |
| | |
| | | </template> |
| | | <template #toolbar_buttons> |
| | | <vxe-button style="margin-right: 0.5rem" |
| | | @click="exportExcel('/report/exportOrderPlanDecomposition', |
| | | '订单计划分解报表', |
| | | @click="exportExcel('/report/orderPlanDecomposition', |
| | | t('report.orderPlanDecomposition'), |
| | | form.date1)"> |
| | | 导出</vxe-button> |
| | | {{t('basicData.export')}}</vxe-button> |
| | | </template> |
| | | |
| | | <template #num1_filter="{ column, $panel }"> |
| | |
| | | }) |
| | | const columns = [ |
| | | // {type:'expand',fixed:"left",slots: { content:'content' },width: 50}, |
| | | {field: 'product_name', width: 150, title: '产品名称',filters:[{ data: '' }],slots: { filter: 'num1_filter' },filterMethod: filterChanged}, |
| | | {field: 'glass_child',width: 130, title: '单片名称' ,filters:[{ data: '' }],slots: { filter: 'num1_filter' },filterMethod: filterChanged}, |
| | | {field: 'order_type', width: 120,title: '订单类型',filters:[{ data: '' }],slots: { filter: 'num1_filter' },filterMethod: filterChanged}, |
| | | {field: 'process_id',width: 110, title: '流程卡号',filters:[{ data: '' }],slots: { filter: 'num1_filter' },filterMethod: filterChanged}, |
| | | {field: 'order_number', width: 90,title: '订单序号',showOverflow:"ellipsis"}, |
| | | {field: 'technology_number', width: 90,title: '小片顺序',showOverflow:"ellipsis"}, |
| | | {field: 'quantity', width: 90,title: '数量'}, |
| | | {field: 'broken_num',width: 90, title: '次破数量'}, |
| | | {field: 'shippedQuantity',width: 120, title: '发货数量'}, |
| | | {field: 'inventory',width: 120, title: '入库数量'}, |
| | | {field: 'inventoryArea',width: 120, title: '入库面积'}, |
| | | {field: 'product_name', width: 150, title: t('order.product'),filters:[{ data: '' }],slots: { filter: 'num1_filter' },filterMethod: filterChanged}, |
| | | {field: 'glass_child',width: 130, title: t('reportingWorks.glassChild') ,filters:[{ data: '' }],slots: { filter: 'num1_filter' },filterMethod: filterChanged}, |
| | | {field: 'order_type', width: 120,title: t('order.orderType'),filters:[{ data: '' }],slots: { filter: 'num1_filter' },filterMethod: filterChanged}, |
| | | {field: 'process_id',width: 110, title: t('processCard.processId'),filters:[{ data: '' }],slots: { filter: 'num1_filter' },filterMethod: filterChanged}, |
| | | {field: 'order_number', width: 90,title: t('order.OrderNum'),showOverflow:"ellipsis"}, |
| | | {field: 'technology_number', width: 90,title: t('processCard.technologyNumber'),showOverflow:"ellipsis"}, |
| | | {field: 'quantity', width: 90,title: t('order.quantity')}, |
| | | {field: 'broken_num',width: 90, title: t('reportingWorks.quantityBroken')}, |
| | | {field: 'shippedQuantity',width: 120, title: t('report.shippedQuantity')}, |
| | | {field: 'inventory',width: 120, title: t('report.inventoryNum')}, |
| | | {field: 'inventoryArea',width: 120, title: t('report.inventoryArea')}, |
| | | ] |
| | | //需要合并的列 |
| | | let column = [1,3,8] |
| | |
| | | request.post(`/report/processCardProgress/${form.orderId}`,column).then((res) => { |
| | | if (res.code == 200) { |
| | | if(res.data.data.length===0){ |
| | | ElMessage.warning('未查询到此订单流程卡数据') |
| | | ElMessage.warning(t('report.noDataFoundForThisOrder')) |
| | | return |
| | | } |
| | | gridOptions.columns = JSON.parse(JSON.stringify(columns)) |
| | |
| | | }) |
| | | |
| | | //工序 |
| | | const value = ref('磨边') |
| | | const value = ref(t('machine.edgeGrinding')) |
| | | |
| | | //表尾求和 |
| | | const sumNum = (list, field) => { |
| | |
| | | },//表头参数 |
| | | columns: [ |
| | | {type: 'expand', fixed: "left", slots: {content: 'content'}, width: 50}, |
| | | {type: 'seq', fixed: "left", title: '自序', width: 50}, |
| | | {field: 'create_time', width: 120, title: '下单时间'}, |
| | | {field: 'delivery_date', width: 120, title: '交货日期'}, |
| | | {type: 'seq', fixed: "left", title: t('basicData.Number'), width: 50}, |
| | | {field: 'create_time', width: 120, title: t('report.orderTime')}, |
| | | {field: 'delivery_date', width: 120, title: t('report.deliveryDate')}, |
| | | { |
| | | field: 'order_id', width: 120, title: '销售单号', filters: [{data: ''}], |
| | | field: 'order_id', width: 120, title: t('order.orderId'), filters: [{data: ''}], |
| | | slots: {filter: 'num1_filter'}, |
| | | filterMethod: filterChanged |
| | | }, |
| | | { |
| | | field: 'process_id', |
| | | width: 120, |
| | | title: '流程卡号', |
| | | title: t('processCard.processId'), |
| | | showOverflow: "ellipsis", |
| | | filters: [{data: ''}], |
| | | slots: {filter: 'num1_filter'}, |
| | | filterMethod: filterChanged |
| | | }, |
| | | { |
| | | field: 'customer_name', width: 130, title: '客户名称', filters: [{data: ''}], |
| | | field: 'customer_name', width: 130, title: t('customer.customerName'), filters: [{data: ''}], |
| | | slots: {filter: 'num1_filter'}, |
| | | filterMethod: filterChanged |
| | | }, |
| | | { |
| | | field: 'project', width: 120, title: '项目名称', filters: [{data: ''}], |
| | | field: 'project', width: 120, title: t('order.project'), filters: [{data: ''}], |
| | | slots: {filter: 'num1_filter'}, |
| | | filterMethod: filterChanged |
| | | }, |
| | | { |
| | | field: 'batch', width: 100, title: '批次', filters: [{data: ''}], |
| | | field: 'batch', width: 100, title: t('order.batch'), filters: [{data: ''}], |
| | | slots: {filter: 'num1_filter'}, |
| | | filterMethod: filterChanged |
| | | }, |
| | | {field: 'order_number', width: 100, title: '序号'}, |
| | | {field: 'technology_number', width: 120, title: '小片顺序', showOverflow: "ellipsis"}, |
| | | {field: 'glass_child', width: 100, title: '单片名称'}, |
| | | {field: 'child_width', width: 120, title: '宽'}, |
| | | {field: 'child_height', width: 120, title: '高'}, |
| | | {field: 'quantity', width: 120, title: '订单数量'}, |
| | | {field: 'childArea', width: 120, title: '单片面积'}, |
| | | {field: 'actualArea', width: 120, title: '实际面积'}, |
| | | {field: 'completeNum', width: 120, title: '已完成数量'}, |
| | | {field: 'completeArea', width: 120, title: '已完成面积'}, |
| | | {field: 'incompleteNum', width: 120, title: '未完成数量'}, |
| | | {field: 'incompleteArea', width: 120, title: '未完成面积'}, |
| | | {field: 'product_name', width: 120, title: '成品名称'}, |
| | | {field: 'order_number', width: 100, title: t('order.OrderNum')}, |
| | | {field: 'technology_number', width: 120, title: t('processCard.technologyNumber'), showOverflow: "ellipsis"}, |
| | | {field: 'glass_child', width: 100, title: t('reportingWorks.glassChild')}, |
| | | {field: 'child_width', width: 120, title: t('order.width')}, |
| | | {field: 'child_height', width: 120, title: t('order.height')}, |
| | | {field: 'quantity', width: 120, title: t('order.quantity')}, |
| | | {field: 'childArea', width: 120, title: t('order.trueArea')}, |
| | | {field: 'actualArea', width: 120, title: t('order.trueGrossArea')}, |
| | | {field: 'completeNum', width: 120, title: t('report.completedQuantity')}, |
| | | {field: 'completeArea', width: 120, title: t('report.completedArea')}, |
| | | {field: 'incompleteNum', width: 120, title: t('report.unfinishedQuantity')}, |
| | | {field: 'incompleteArea', width: 120, title: t('report.unfinishedArea')}, |
| | | {field: 'product_name', width: 120, title: t('order.product')}, |
| | | ],//表头按钮 |
| | | |
| | | toolbarConfig: { |
| | |
| | | inputProject = null |
| | | } |
| | | if(date===null){ |
| | | ElMessage.warning("请先选择日期") |
| | | ElMessage.warning(t('report.pleaseSelectADateFirst')) |
| | | return |
| | | } |
| | | |
| | | if(processes===null){ |
| | | ElMessage.warning("请先选择工序") |
| | | ElMessage.warning(t('report.pleaseSelectAProcessFirst')) |
| | | return |
| | | } |
| | | |
| | |
| | | const timeDiff = Math.abs(date2.getTime() - date1.getTime()); |
| | | const daysDiff = timeDiff / (1000 * 3600 * 24); |
| | | if(Math.floor(daysDiff)>180){ |
| | | ElMessage.warning("导出的筛选时间不能超过180天") |
| | | ElMessage.warning(t('report.theFilteringTimeForExportCannotExceed180Days')) |
| | | return |
| | | } |
| | | let dataMp = ref({ |
| | |
| | | |
| | | <el-date-picker |
| | | v-model="form.date1" |
| | | end-placeholder="结束时间" |
| | | :start-placeholder="$t('basicData.startDate')" |
| | | :end-placeholder="$t('basicData.endDate')" |
| | | format="YYYY/MM/DD" |
| | | start-placeholder="开始时间" |
| | | style="width: 100px" |
| | | type="daterange" |
| | | value-format="YYYY-MM-DD" |
| | |
| | | |
| | | <el-input v-model="form.orderId" :placeholder="$t('order.orderId')" clearable style="width: 130px"></el-input> |
| | | |
| | | <el-input v-model="form.project" clearable placeholder="项目名称" style="width: 130px"></el-input> |
| | | <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-option |
| | |
| | | :value="item.basic_name" |
| | | /> |
| | | </el-select> |
| | | <el-button type="primary" @click="getWorkOrder">查询</el-button> |
| | | <el-button type="primary" @click="getWorkOrder">{{$t('basicData.search')}}</el-button> |
| | | </el-row> |
| | | |
| | | </div> |
| | |
| | | |
| | | <!--左边固定显示的插槽--> |
| | | <template #button_slot="{ row }"> |
| | | <el-button link size="small" type="primary" @click="getTableRow(row,'edit')">编辑</el-button> |
| | | <el-button link size="small" type="primary" @click="getTableRow(row,'setType')">反审</el-button> |
| | | <el-button link size="small" type="primary" @click="getTableRow(row,'delete')">删除</el-button> |
| | | <el-button link size="small" type="primary" @click="getTableRow(row,'edit')">{{$t('basicData.edit')}}</el-button> |
| | | <el-button link size="small" type="primary" @click="getTableRow(row,'setType')">{{$t('basicData.cancelReview')}}</el-button> |
| | | <el-button link size="small" type="primary" @click="getTableRow(row,'delete')">{{$t('basicData.delete')}}</el-button> |
| | | </template> |
| | | |
| | | <template #toolbar_buttons> |
| | | <vxe-button style="margin-right: 0.5rem" |
| | | @click="exportExcel('/report/exportProcessToBeCompleted', |
| | | '工序待完成报表', |
| | | t('report.processToBeCompleted'), |
| | | form.date1)"> |
| | | 导出</vxe-button> |
| | | {{t('basicData.export')}}</vxe-button> |
| | | </template> |
| | | |
| | | <template #num1_filter="{ column, $panel }"> |
| | |
| | | }) |
| | | const columns = [ |
| | | {type:'expand',fixed:"left",slots: { content:'content' },width: 50}, |
| | | {field: 'order_number', width: 150, title: '订单序号',filters:[{ data: '' }],slots: { filter: 'num1_filter' },filterMethod: filterChanged}, |
| | | {field: 'shape',width: 130, title: '形状' ,filters:[{ data: '' }],slots: { filter: 'num1_filter' },filterMethod: filterChanged}, |
| | | {field: 'product_name', width: 120,title: '产品名称',filters:[{ data: '' }],slots: { filter: 'num1_filter' },filterMethod: filterChanged}, |
| | | {field: 'child_width',width: 110, title: '宽',filters:[{ data: '' }],slots: { filter: 'num1_filter' },filterMethod: filterChanged}, |
| | | {field: 'child_height', width: 90,title: '高',showOverflow:"ellipsis"}, |
| | | {field: 'quantity', width: 90,title: '数量'}, |
| | | {field: 'technology_number',width: 90, title: '小片顺序'}, |
| | | {field: 'glass_child',width: 120, title: '单片名称'}, |
| | | {field: 'inventoryNum',width: 120, title: '入库数量'}, |
| | | {field: 'inventoryArea',width: 120, title: '入库面积'}, |
| | | {field: 'shippedQuantity',width: 120, title: '发货数量'}, |
| | | {field: 'area',width: 120, title: '发货面积'}, |
| | | {field: 'order_number', width: 150, title: t('order.OrderNum'),filters:[{ data: '' }],slots: { filter: 'num1_filter' },filterMethod: filterChanged}, |
| | | {field: 'shape',width: 130, title: t('order.shape') ,filters:[{ data: '' }],slots: { filter: 'num1_filter' },filterMethod: filterChanged}, |
| | | {field: 'product_name', width: 120,title: t('order.product'),filters:[{ data: '' }],slots: { filter: 'num1_filter' },filterMethod: filterChanged}, |
| | | {field: 'child_width',width: 110, title: t('order.width'),filters:[{ data: '' }],slots: { filter: 'num1_filter' },filterMethod: filterChanged}, |
| | | {field: 'child_height', width: 90,title: t('order.height'),showOverflow:"ellipsis"}, |
| | | {field: 'quantity', width: 90,title: t('order.quantity')}, |
| | | {field: 'technology_number',width: 90, title: t('processCard.technologyNumber')}, |
| | | {field: 'glass_child',width: 120, title: t('reportingWorks.glassChild')}, |
| | | {field: 'inventoryNum',width: 120, title: t('report.inventoryNum')}, |
| | | {field: 'inventoryArea',width: 120, title: t('report.inventoryArea')}, |
| | | {field: 'shippedQuantity',width: 120, title: t('report.shippedQuantity')}, |
| | | {field: 'area',width: 120, title: t('report.area')}, |
| | | ] |
| | | //需要合并的列 |
| | | let column = [1,2,3] |
| | |
| | | request.post(`/report/productionSchedule/${form.orderId}`,column).then((res) => { |
| | | if (res.code == 200) { |
| | | if(res.data.data.length===0){ |
| | | ElMessage.warning('未查询到此订单数据') |
| | | ElMessage.warning(t('report.noDataFoundForThisOrder')) |
| | | return |
| | | } |
| | | gridOptions.columns = JSON.parse(JSON.stringify(columns)) |
| | |
| | | }) |
| | | |
| | | //工序 |
| | | const value = ref('磨边') |
| | | const value = ref(t('machine.edgeGrinding')) |
| | | |
| | | //表尾求和 |
| | | const sumNum = (list, field) => { |
| | |
| | | },//表头参数 |
| | | columns: [ |
| | | {type: 'expand', fixed: "left", slots: {content: 'content'}, width: 50}, |
| | | {type: 'seq', fixed: "left", title: '自序', width: 50}, |
| | | {type: 'seq', fixed: "left", title: t('basicData.Number'), width: 50}, |
| | | { |
| | | field: 'order_id', width: 120, title: '销售单号', filters: [{data: ''}], |
| | | field: 'order_id', width: 120, title: t('order.orderId'), filters: [{data: ''}], |
| | | slots: {filter: 'num1_filter'}, |
| | | filterMethod: filterChanged |
| | | }, |
| | | { |
| | | field: 'customer_name', |
| | | width: 120, |
| | | title: '客户名称', |
| | | title: t('customer.customerName'), |
| | | showOverflow: "ellipsis", |
| | | filters: [{data: ''}], |
| | | slots: {filter: 'num1_filter'}, |
| | |
| | | { |
| | | field: 'project', |
| | | width: 120, |
| | | title: '项目名称', |
| | | title: t('order.project'), |
| | | showOverflow: "ellipsis", |
| | | filters: [{data: ''}], |
| | | slots: {filter: 'num1_filter'}, |
| | | filterMethod: filterChanged |
| | | }, |
| | | { |
| | | field: 'order_number', width: 130, title: '订单序号', filters: [{data: ''}], |
| | | field: 'order_number', width: 130, title: t('order.OrderNum'), filters: [{data: ''}], |
| | | slots: {filter: 'num1_filter'}, |
| | | filterMethod: filterChanged |
| | | }, |
| | | { |
| | | field: 'technology_number', width: 120, title: '小片顺序', filters: [{data: ''}], |
| | | field: 'technology_number', width: 120, title: t('processCard.technologyNumber'), filters: [{data: ''}], |
| | | slots: {filter: 'num1_filter'}, |
| | | filterMethod: filterChanged |
| | | }, |
| | | { |
| | | field: 'product_name', width: 100, title: '产品名称', filters: [{data: ''}], |
| | | field: 'product_name', width: 100, title: t('order.product'), filters: [{data: ''}], |
| | | slots: {filter: 'num1_filter'}, |
| | | filterMethod: filterChanged |
| | | }, |
| | | { |
| | | field: 'quantity', |
| | | width: 100, |
| | | title: '订单数量', |
| | | title: t('order.quantity'), |
| | | type: 'date', |
| | | attrs: {placeholder: '', type: 'date'}, |
| | | }, |
| | | {field: 'quantityMax', width: 120, title: '投入数量', showOverflow: "ellipsis"}, |
| | | {field: 'breakage_quantity', width: 100, title: '次破数量'}, |
| | | {field: 'patch_num', width: 120, title: '补片数量'}, |
| | | {field: 'received_quantity', width: 120, title: '入库数量'}, |
| | | {field: 'finished', width: 120, title: '成品率'}, |
| | | {field: 'quantityMax', width: 120, title: t('report.quantityMax'), showOverflow: "ellipsis"}, |
| | | {field: 'breakage_quantity', width: 100, title: t('reportingWorks.quantityBroken')}, |
| | | {field: 'patch_num', width: 120, title: t('reportingWorks.quantityBroken')}, |
| | | {field: 'received_quantity', width: 120, title: t('report.patchNum')}, |
| | | {field: 'finished', width: 120, title: t('report.finished')}, |
| | | ],//表头按钮 |
| | | |
| | | toolbarConfig: { |
| | |
| | | <el-row :gutter="0"> |
| | | <el-date-picker |
| | | v-model="form.date1" |
| | | end-placeholder="结束时间" |
| | | :start-placeholder="$t('basicData.startDate')" |
| | | :end-placeholder="$t('basicData.endDate')" |
| | | format="YYYY/MM/DD" |
| | | start-placeholder="开始时间" |
| | | style="width: 100px" |
| | | type="daterange" |
| | | value-format="YYYY-MM-DD" |
| | | /> |
| | | |
| | | <el-button type="primary" @click="getWorkOrder">查询</el-button> |
| | | <el-button type="primary" @click="getWorkOrder">{{$t('basicData.search')}}</el-button> |
| | | </el-row> |
| | | |
| | | </div> |
| | |
| | | <template #toolbar_buttons> |
| | | <vxe-button style="margin-right: 0.5rem" |
| | | @click="exportExcel('/report/exportQualityReport', |
| | | '品质报表', |
| | | t('report.qualityReport'), |
| | | form.date1)"> |
| | | 导出</vxe-button> |
| | | {{t('basicData.export')}}</vxe-button> |
| | | </template> |
| | | |
| | | <template #num1_filter="{ column, $panel }"> |
| | |
| | | }) |
| | | |
| | | //工序 |
| | | const value = ref('磨边') |
| | | const value = ref(t('machine.edgeGrinding')) |
| | | |
| | | //表尾求和 |
| | | const sumNum = (list, field) => { |
| | |
| | | },//表头参数 |
| | | columns: [ |
| | | {type: 'expand', fixed: "left", slots: {content: 'content'}, width: 50}, |
| | | {type: 'seq', fixed: "left", title: '自序', width: 50}, |
| | | {type: 'seq', fixed: "left", title: t('basicData.Number'), width: 50}, |
| | | |
| | | { |
| | | field: 'project_no', |
| | | width: 120, |
| | | title: '工程编号', |
| | | title: t('report.projectNo'), |
| | | showOverflow: "ellipsis", |
| | | filters: [{data: ''}], |
| | | slots: {filter: 'num1_filter'}, |
| | | filterMethod: filterChanged |
| | | }, |
| | | { |
| | | field: 'material_name', width: 120, title: '物料名称', filters: [{data: ''}], |
| | | field: 'material_name', width: 120, title: t('mainIngredient.materialName'), filters: [{data: ''}], |
| | | slots: {filter: 'num1_filter'}, |
| | | filterMethod: filterChanged |
| | | }, |
| | | { |
| | | field: 'producer',title: '原片产地', filters: [{data: ''}], |
| | | field: 'producer',title: t('mainIngredient.producer'), filters: [{data: ''}], |
| | | slots: {filter: 'num1_filter'}, |
| | | filterMethod: filterChanged |
| | | }, |
| | | { |
| | | field: 'width', |
| | | title: '宽', |
| | | title: t('order.width'), |
| | | type: 'date', |
| | | attrs: {placeholder: '', type: 'date'}, |
| | | }, |
| | | {field: 'height', title: '高', showOverflow: "ellipsis"}, |
| | | {field: 'quantity', title: '已领数量'}, |
| | | {field: 'area', title: '已领面积'}, |
| | | {field: 'date_of_manufacture', title: '原片生产日期'}, |
| | | {field: 'date', title: '领出日期'}, |
| | | {field: 'height', title: t('order.height'), showOverflow: "ellipsis"}, |
| | | {field: 'quantity', title: t('report.quantityClaimed')}, |
| | | {field: 'area', title: t('report.areaClaimed')}, |
| | | {field: 'date_of_manufacture', title: t('mainIngredient.dateOfManufacture')}, |
| | | {field: 'date', title: t('report.dateClaimed')}, |
| | | ],//表头按钮 |
| | | |
| | | toolbarConfig: { |
| | |
| | | <el-row :gutter="0"> |
| | | <el-date-picker |
| | | v-model="form.date1" |
| | | end-placeholder="结束时间" |
| | | :start-placeholder="$t('basicData.startDate')" |
| | | :end-placeholder="$t('basicData.endDate')" |
| | | format="YYYY/MM/DD" |
| | | start-placeholder="开始时间" |
| | | style="width: 100px" |
| | | type="daterange" |
| | | value-format="YYYY-MM-DD" |
| | | /> |
| | | |
| | | <el-button type="primary" @click="getWorkOrder">查询</el-button> |
| | | <el-button type="primary" @click="getWorkOrder">{{$t('basicData.search')}}</el-button> |
| | | </el-row> |
| | | |
| | | </div> |
| | |
| | | <template #toolbar_buttons> |
| | | <vxe-button style="margin-right: 0.5rem" |
| | | @click="exportExcel('/report/exportRawMaterialRequisition', |
| | | '原片领料报表', |
| | | t('report.rawMaterialRequisition'), |
| | | form.date1)"> |
| | | 导出</vxe-button> |
| | | {{t('basicData.export')}}</vxe-button> |
| | | </template> |
| | | |
| | | </vxe-grid> |
| | |
| | | > |
| | | |
| | | <el-sub-menu index="1" > |
| | | <template #title >生产报表</template> |
| | | <el-menu-item index="/main/report/WorkInProgress">在制品报表</el-menu-item> |
| | | <el-menu-item index="/main/report/ProcessToBeCompleted">工序待完成</el-menu-item> |
| | | <el-menu-item index="/main/report/ProductionSchedule">生产发货进度</el-menu-item> |
| | | <el-menu-item index="/main/report/ProcessCardProgress">流程卡进度</el-menu-item> |
| | | <el-menu-item index="/main/report/OrderPlanDecomposition">订单计划分解</el-menu-item> |
| | | <template #title >{{$t('report.productionReport')}}</template> |
| | | <el-menu-item index="/main/report/WorkInProgress">{{$t('report.workInProgressReport')}}</el-menu-item> |
| | | <el-menu-item index="/main/report/ProcessToBeCompleted">{{$t('report.processToBeCompleted')}}</el-menu-item> |
| | | <el-menu-item index="/main/report/ProductionSchedule">{{$t('report.productionAndShippingProgress')}}</el-menu-item> |
| | | <el-menu-item index="/main/report/ProcessCardProgress">{{$t('report.processCardProgress')}}</el-menu-item> |
| | | <el-menu-item index="/main/report/OrderPlanDecomposition">{{$t('report.orderPlanDecomposition')}}</el-menu-item> |
| | | </el-sub-menu> |
| | | <!-- <el-sub-menu index="2" popper-class="test">--> |
| | | <!-- <template #title>产量报表</template>--> |
| | |
| | | <!-- <el-menu-item index="/main/report/EquipmentOutput">设备产量</el-menu-item>--> |
| | | <!-- </el-sub-menu>--> |
| | | <el-sub-menu index="3" popper-class="test"> |
| | | <template #title>次破报表</template> |
| | | <el-menu-item index="/main/report/DamageReport">次破报表</el-menu-item> |
| | | <el-menu-item index="/main/report/CrossProcessBreaking">跨工序次破</el-menu-item> |
| | | <template #title>{{$t('report.secondaryBrokenReport')}}</template> |
| | | <el-menu-item index="/main/report/DamageReport">{{$t('report.secondaryBrokenReport')}}</el-menu-item> |
| | | <el-menu-item index="/main/report/CrossProcessBreaking">{{$t('report.crossProcessBreakdown')}}</el-menu-item> |
| | | </el-sub-menu> |
| | | <el-menu-item index="/main/report/TeamOutput">班组产量</el-menu-item> |
| | | <el-menu-item index="/main/report/SplittingDetailsOutside">分架明细</el-menu-item> |
| | | <el-menu-item index="/main/report/TaskCompletionStatus">任务完成情况</el-menu-item> |
| | | <el-menu-item index="/main/report/RawMaterialRequisition">原片领料</el-menu-item> |
| | | <el-menu-item index="/main/report/QualityReport">品质报表</el-menu-item> |
| | | <el-menu-item index="/main/report/Yield">成品率报表</el-menu-item> |
| | | <el-menu-item index="/main/report/TeamOutput">{{$t('report.teamOutput')}}</el-menu-item> |
| | | <el-menu-item index="/main/report/SplittingDetailsOutside">{{$t('report.splittingDetails')}}</el-menu-item> |
| | | <el-menu-item index="/main/report/TaskCompletionStatus">{{$t('report.TaskCompletionStatus')}}</el-menu-item> |
| | | <el-menu-item index="/main/report/RawMaterialRequisition">{{$t('report.rawMaterialRequisition')}}</el-menu-item> |
| | | <el-menu-item index="/main/report/QualityReport">{{$t('report.qualityReport')}}</el-menu-item> |
| | | <el-menu-item index="/main/report/Yield">{{$t('report.yieldReport')}}</el-menu-item> |
| | | <!-- <el-menu-item index="/main/report/OrderBOMOutside">BOM报表</el-menu-item>--> |
| | | </el-menu> |
| | | </div> |
| | |
| | | },//表头参数 |
| | | columns: [ |
| | | {type: 'expand', fixed: "left", slots: {content: 'content'}, width: 50}, |
| | | {type: 'seq', fixed: "left", title: '自序', width: 50}, |
| | | {type: 'seq', fixed: "left", title: t('basicData.Number'), width: 50}, |
| | | { |
| | | field: 'processId', width: 120, title: '流程卡号', filters: [{data: ''}], |
| | | field: 'processId', width: 120, title: t('processCard.processId'), filters: [{data: ''}], |
| | | slots: {filter: 'num1_filter'}, |
| | | filterMethod: filterChanged |
| | | }, |
| | | { |
| | | field: 'orderNumber', |
| | | width: 120, |
| | | title: '订单序号', |
| | | title: t('order.OrderNum'), |
| | | showOverflow: "ellipsis", |
| | | filters: [{data: ''}], |
| | | slots: {filter: 'num1_filter'}, |
| | | filterMethod: filterChanged |
| | | }, |
| | | { |
| | | field: 'technologyNumber', width: 130, title: '小片顺序', filters: [{data: ''}], |
| | | field: 'technologyNumber', width: 130, title: t('processCard.technologyNumber'), filters: [{data: ''}], |
| | | slots: {filter: 'num1_filter'}, |
| | | filterMethod: filterChanged |
| | | }, |
| | | { |
| | | field: 'project', width: 120, title: '项目名称', filters: [{data: ''}], |
| | | field: 'project', width: 120, title: t('order.project'), filters: [{data: ''}], |
| | | slots: {filter: 'num1_filter'}, |
| | | filterMethod: filterChanged |
| | | }, |
| | | { |
| | | field: 'batch', width: 100, title: '批次', filters: [{data: ''}], |
| | | field: 'batch', width: 100, title: t('order.batch'), filters: [{data: ''}], |
| | | slots: {filter: 'num1_filter'}, |
| | | filterMethod: filterChanged |
| | | }, |
| | | {field: 'childWidth', width: 120, title: '宽'}, |
| | | {field: 'childHeight', width: 120, title: '高'}, |
| | | {field: 'quantity', width: 120, title: '订单数'}, |
| | | {field: 'childWidth', width: 120, title: t('order.width')}, |
| | | {field: 'childHeight', width: 120, title: t('order.height')}, |
| | | {field: 'quantity', width: 120, title: t('order.quantity')}, |
| | | |
| | | {field: 'area', width: 100, title: '面积'}, |
| | | {field: 'shape', width: 120, title: '形状',}, |
| | | {field: 'remarks', width: 100, title: '备注'}, |
| | | {field: 'area', width: 100, title: t('order.area')}, |
| | | {field: 'shape', width: 120, title: t('order.shape'),}, |
| | | {field: 'remarks', width: 100, title: t('basicData.remarks')}, |
| | | ],//表头按钮 |
| | | |
| | | toolbarConfig: { |
| | |
| | | <el-input v-model="form.orderId" :placeholder="$t('order.orderId')" clearable style="width: 130px"></el-input> |
| | | |
| | | |
| | | <el-button type="primary" @click="getWorkOrder">查询</el-button> |
| | | <el-button type="primary" @click="getWorkOrder">{{$t('basicData.search')}}</el-button> |
| | | </el-row> |
| | | |
| | | </div> |
| | |
| | | }) |
| | | const columns = [ |
| | | {type:'expand',fixed:"left",slots: { content:'content' },width: 50}, |
| | | {field: 'customerName', width: 150, title: '客户名称',filters:[{ data: '' }],slots: { filter: 'num1_filter' },filterMethod: filterChanged}, |
| | | {field: 'project',width: 130, title: '项目名称' ,filters:[{ data: '' }],slots: { filter: 'num1_filter' },filterMethod: filterChanged}, |
| | | {field: 'batch', width: 120,title: '批次',filters:[{ data: '' }],slots: { filter: 'num1_filter' },filterMethod: filterChanged}, |
| | | {field: 'orderId',width: 110, title: '销售单号',filters:[{ data: '' }],slots: { filter: 'num1_filter' },filterMethod: filterChanged}, |
| | | {field: 'quantity', width: 90,title: '订单数量',showOverflow:"ellipsis"}, |
| | | {field: 'area', width: 90,title: '订单面积'}, |
| | | {field: 'shippedQuantity',width: 90, title: '发货数量'}, |
| | | {field: 'shippedArea',width: 120, title: '发货面积'}, |
| | | {field: 'customerName', width: 150, title: t('customer.customerName'),filters:[{ data: '' }],slots: { filter: 'num1_filter' },filterMethod: filterChanged}, |
| | | {field: 'project',width: 130, title: t('order.project') ,filters:[{ data: '' }],slots: { filter: 'num1_filter' },filterMethod: filterChanged}, |
| | | {field: 'batch', width: 120,title: t('order.batch'),filters:[{ data: '' }],slots: { filter: 'num1_filter' },filterMethod: filterChanged}, |
| | | {field: 'orderId',width: 110, title: t('order.orderId'),filters:[{ data: '' }],slots: { filter: 'num1_filter' },filterMethod: filterChanged}, |
| | | {field: 'quantity', width: 90,title: t('order.quantity'),showOverflow:"ellipsis"}, |
| | | {field: 'area', width: 90,title: t('order.area')}, |
| | | {field: 'shippedQuantity',width: 90, title: t('delivery.deliveryQuantity')}, |
| | | {field: 'shippedArea',width: 120, title: t('report.area')}, |
| | | ] |
| | | //需要合并的列 |
| | | let column = [1,2,3] |
| | |
| | | request.post(`/report/taskCompletionStatus/${startTime}/${endTime}`,column).then((res) => { |
| | | if (res.code == 200) { |
| | | if(res.data.data.length===0){ |
| | | ElMessage.warning('未查询到此订单数据') |
| | | ElMessage.warning(t('report.noDataFoundForThisOrder')) |
| | | return |
| | | } |
| | | gridOptions.columns = JSON.parse(JSON.stringify(columns)) |
| | |
| | | <!-- style="width: 130px"></el-input>--> |
| | | <el-date-picker |
| | | v-model="time.date1" |
| | | end-placeholder="结束时间" |
| | | :start-placeholder="$t('basicData.startDate')" |
| | | :end-placeholder="$t('basicData.endDate')" |
| | | format="YYYY/MM/DD" |
| | | start-placeholder="开始时间" |
| | | style="width: 100px" |
| | | type="daterange" |
| | | value-format="YYYY-MM-DD" |
| | |
| | | <template #toolbar_buttons> |
| | | <vxe-button style="margin-right: 0.5rem" |
| | | @click="exportExcel('/report/exportTaskCompletionStatus', |
| | | '任务完成情况报表', |
| | | t('report.TaskCompletionStatus'), |
| | | time.date1)"> |
| | | 导出</vxe-button> |
| | | {{t('basicData.export')}}</vxe-button> |
| | | </template> |
| | | |
| | | </vxe-grid> |
| | |
| | | }) |
| | | |
| | | //工序 |
| | | const value = ref('切割') |
| | | const value = ref(t('machine.edgeGrinding')) |
| | | |
| | | //表尾求和 |
| | | const sumNum = (list, field) => { |
| | |
| | | },//表头参数 |
| | | columns: [ |
| | | {type: 'expand', fixed: "left", slots: {content: 'content'}, width: 50}, |
| | | {type: 'seq', fixed: "left", title: '自序', width: 40}, |
| | | {type: 'seq', fixed: "left", title: t('basicData.Number'), width: 40}, |
| | | { |
| | | field: 'reportingWorkTime', width: 160, title: '报工时间', |
| | | field: 'reportingWorkTime', width: 160, title: t('reportingWorks.reportingWorkTime'), |
| | | }, |
| | | { |
| | | field: 'thisProcess', |
| | | width: 100, |
| | | title: '报工工序', |
| | | title: t('reportingWorks.reportingProcess'), |
| | | showOverflow: "ellipsis", |
| | | filters:[{ data: '' }],slots: { filter: 'num1_filter' } |
| | | }, |
| | | { |
| | | field: 'teamsGroupsName', width: 100, title: '报工班组',filters:[{ data: '' }],slots: { filter: 'num1_filter' } |
| | | field: 'teamsGroupsName', width: 100, title: t('reportingWorks.teamsType'),filters:[{ data: '' }],slots: { filter: 'num1_filter' } |
| | | }, |
| | | { |
| | | field: 'project', width: 120, title: '项目名称',filters:[{ data: '' }],slots: { filter: 'num1_filter' } |
| | | field: 'project', width: 120, title: t('order.project'),filters:[{ data: '' }],slots: { filter: 'num1_filter' } |
| | | }, |
| | | { |
| | | field: 'processId', width: 140, title: '流程卡号',filters:[{ data: '' }],slots: { filter: 'num1_filter' } |
| | | field: 'processId', width: 140, title: t('processCard.processId'),filters:[{ data: '' }],slots: { filter: 'num1_filter' } |
| | | }, |
| | | {field: 'orderNumber', width: 60, title: '序号'}, |
| | | {field: 'width', width: 100, title: '宽'}, |
| | | {field: 'height', width: 100, title: '高'}, |
| | | {field: 'shape', width: 90, title: '形状'}, |
| | | {field: 'thickness', width: 90, title: '厚度',filters:[{ data: '' }],slots: { filter: 'num1_filter' }}, |
| | | {field: 'edgingType', width: 110, title: '磨边类型',filters:[{ data: '' }],slots: { filter: 'num1_filter' }}, |
| | | {field: 'completedQuantity', width: 90, title: '完工数量'}, |
| | | {field: 'area', width: 100, title: '完工面积'}, |
| | | {field: 'productName', width: 150, title: '产品名称'}, |
| | | {field: 'orderNumber', width: 60, title: t('order.OrderNum')}, |
| | | {field: 'width', width: 100, title: t('order.width')}, |
| | | {field: 'height', width: 100, title: t('order.height')}, |
| | | {field: 'shape', width: 90, title: t('order.shape')}, |
| | | {field: 'thickness', width: 90, title: t('order.totalThickness'),filters:[{ data: '' }],slots: { filter: 'num1_filter' }}, |
| | | {field: 'edgingType', width: 110, title: t('order.edgingType'),filters:[{ data: '' }],slots: { filter: 'num1_filter' }}, |
| | | {field: 'completedQuantity', width: 90, title: t('reportingWorks.completedQuantity')}, |
| | | {field: 'area', width: 100, title: t('reportingWorks.completedArea')}, |
| | | {field: 'productName', width: 150, title: t('order.product')}, |
| | | ],//表头按钮 |
| | | |
| | | toolbarConfig: { |
| | |
| | | function exportExcel(url, fileName,date) { |
| | | let processes = value.value |
| | | if(date===null){ |
| | | ElMessage.warning("请先选择日期") |
| | | ElMessage.warning(t('report.pleaseSelectADateFirst')) |
| | | return |
| | | } |
| | | |
| | | if(processes===null){ |
| | | ElMessage.warning("请先选择工序") |
| | | ElMessage.warning(t('report.pleaseSelectAProcessFirst')) |
| | | return |
| | | } |
| | | |
| | |
| | | const timeDiff = Math.abs(date2.getTime() - date1.getTime()); |
| | | const daysDiff = timeDiff / (1000 * 3600 * 24); |
| | | if(Math.floor(daysDiff)>180){ |
| | | ElMessage.warning("导出的筛选时间不能超过180天") |
| | | ElMessage.warning(t('report.theFilteringTimeForExportCannotExceed180Days')) |
| | | return |
| | | } |
| | | let dataMp = ref({ |
| | |
| | | |
| | | <el-date-picker |
| | | v-model="form.date1" |
| | | end-placeholder="结束时间" |
| | | :start-placeholder="$t('basicData.startDate')" |
| | | :end-placeholder="$t('basicData.endDate')" |
| | | format="YYYY/MM/DD" |
| | | start-placeholder="开始时间" |
| | | style="width: 100px" |
| | | type="daterange" |
| | | value-format="YYYY-MM-DD" |
| | |
| | | :value="item.basic_name" |
| | | /> |
| | | </el-select> |
| | | <el-button type="primary" @click="getWorkOrder">查询</el-button> |
| | | <el-button type="primary" @click="getWorkOrder">{{$t('basicData.search')}}</el-button> |
| | | </el-row> |
| | | |
| | | </div> |
| | |
| | | <template #toolbar_buttons> |
| | | <vxe-button style="margin-right: 0.5rem" |
| | | @click="exportExcel('/report/exportTeamOutput', |
| | | '班组产量明细', |
| | | t('report.teamOutput'), |
| | | form.date1)"> |
| | | 导出</vxe-button> |
| | | {{t('basicData.export')}}</vxe-button> |
| | | </template> |
| | | |
| | | </vxe-grid> |
| | |
| | | }) |
| | | |
| | | //工序 |
| | | const value = ref('磨边') |
| | | const value = ref(t('machine.edgeGrinding')) |
| | | |
| | | //表尾求和 |
| | | const sumNum = (list, field) => { |
| | |
| | | },//表头参数 |
| | | columns: [ |
| | | {type: 'expand', fixed: "left", slots: {content: 'content'}, width: 50}, |
| | | {type: 'seq', fixed: "left", title: '自序', width: 50}, |
| | | {type: 'seq', fixed: "left", title: t('basicData.Number'), width: 50}, |
| | | { |
| | | field: 'thisProcess', width: 120, title: '工序', filters: [{data: ''}], |
| | | field: 'thisProcess', width: 120, title: t('report.workingProcedure'), filters: [{data: ''}], |
| | | slots: {filter: 'num1_filter'}, |
| | | filterMethod: filterChanged |
| | | }, |
| | | { |
| | | field: 'process_id', |
| | | width: 120, |
| | | title: '流程卡号', |
| | | title: t('processCard.processId'), |
| | | showOverflow: "ellipsis", |
| | | filters: [{data: ''}], |
| | | slots: {filter: 'num1_filter'}, |
| | | filterMethod: filterChanged |
| | | }, |
| | | { |
| | | field: 'customer_name', width: 130, title: '客户名称', filters: [{data: ''}], |
| | | field: 'customer_name', width: 130, title: t('customer.customerName'), filters: [{data: ''}], |
| | | slots: {filter: 'num1_filter'}, |
| | | filterMethod: filterChanged |
| | | }, |
| | | { |
| | | field: 'project', width: 120, title: '项目名称', filters: [{data: ''}], |
| | | field: 'project', width: 120, title: t('order.project'), filters: [{data: ''}], |
| | | slots: {filter: 'num1_filter'}, |
| | | filterMethod: filterChanged |
| | | }, |
| | | { |
| | | field: 'batch', width: 100, title: '批次', filters: [{data: ''}], |
| | | field: 'batch', width: 100, title: t('order.batch'), filters: [{data: ''}], |
| | | slots: {filter: 'num1_filter'}, |
| | | filterMethod: filterChanged |
| | | }, |
| | | {field: 'order_number', width: 100, title: '序号'}, |
| | | {field: 'technology_number', width: 120, title: '小片顺序', showOverflow: "ellipsis"}, |
| | | {field: 'shape', width: 100, title: '形状'}, |
| | | {field: 'process', width: 120, title: '工艺流程'}, |
| | | {field: 'quantity', width: 120, title: '订单数'}, |
| | | {field: 'child_width', width: 120, title: '宽'}, |
| | | {field: 'child_height', width: 120, title: '高'}, |
| | | {field: 'stockNum', width: 120, title: '库存数'}, |
| | | {field: 'stockArea', width: 120, title: '库存面积'}, |
| | | {field: 'product_name', width: 120, title: '成品名称'}, |
| | | {field: 'bend_radius', width: 120, title: '弯钢半径'}, |
| | | {field: 'order_number', width: 100, title: t('order.OrderNum')}, |
| | | {field: 'technology_number', width: 120, title: t('processCard.technologyNumber'), showOverflow: "ellipsis"}, |
| | | {field: 'shape', width: 100, title: t('order.shape')}, |
| | | {field: 'process', width: 120, title: t('craft.process')}, |
| | | {field: 'quantity', width: 120, title: t('order.quantity')}, |
| | | {field: 'child_width', width: 120, title: t('order.width')}, |
| | | {field: 'child_height', width: 120, title: t('order.height')}, |
| | | {field: 'stockNum', width: 120, title: t('productStock.inventoryQuantity')}, |
| | | {field: 'stockArea', width: 120, title: t('report.inventoryArea')}, |
| | | {field: 'product_name', width: 120, title: t('order.product')}, |
| | | {field: 'bend_radius', width: 120, title: t('order.bendRadius')}, |
| | | ],//表头按钮 |
| | | |
| | | toolbarConfig: { |
| | |
| | | inputProject = null |
| | | } |
| | | if(date===null){ |
| | | ElMessage.warning("请先选择日期") |
| | | ElMessage.warning(t('report.pleaseSelectADateFirst')) |
| | | return |
| | | } |
| | | |
| | | if(processes===null){ |
| | | ElMessage.warning("请先选择工序") |
| | | ElMessage.warning(t('report.pleaseSelectAProcessFirst')) |
| | | return |
| | | } |
| | | |
| | |
| | | const timeDiff = Math.abs(date2.getTime() - date1.getTime()); |
| | | const daysDiff = timeDiff / (1000 * 3600 * 24); |
| | | if(Math.floor(daysDiff)>180){ |
| | | ElMessage.warning("导出的筛选时间不能超过180天") |
| | | ElMessage.warning(t('report.theFilteringTimeForExportCannotExceed180Days')) |
| | | return |
| | | } |
| | | let dataMp = ref({ |
| | |
| | | |
| | | <el-date-picker |
| | | v-model="form.date1" |
| | | end-placeholder="结束时间" |
| | | :start-placeholder="$t('basicData.startDate')" |
| | | :end-placeholder="$t('basicData.endDate')" |
| | | format="YYYY/MM/DD" |
| | | start-placeholder="开始时间" |
| | | style="width: 100px" |
| | | type="daterange" |
| | | value-format="YYYY-MM-DD" |
| | |
| | | |
| | | <el-input v-model="form.orderId" :placeholder="$t('order.orderId')" clearable style="width: 130px"></el-input> |
| | | |
| | | <el-input v-model="form.project" clearable placeholder="项目名称" style="width: 130px"></el-input> |
| | | <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-option |
| | |
| | | :value="item.basic_name" |
| | | /> |
| | | </el-select> |
| | | <el-button type="primary" @click="getWorkOrder">查询</el-button> |
| | | <el-button type="primary" @click="getWorkOrder">{{$t('basicData.search')}}</el-button> |
| | | </el-row> |
| | | |
| | | </div> |
| | |
| | | |
| | | <!--左边固定显示的插槽--> |
| | | <template #button_slot="{ row }"> |
| | | <el-button link size="small" type="primary" @click="getTableRow(row,'edit')">编辑</el-button> |
| | | <el-button link size="small" type="primary" @click="getTableRow(row,'setType')">反审</el-button> |
| | | <el-button link size="small" type="primary" @click="getTableRow(row,'delete')">删除</el-button> |
| | | <el-button link size="small" type="primary" @click="getTableRow(row,'edit')">{{$t('basicData.edit')}}</el-button> |
| | | <el-button link size="small" type="primary" @click="getTableRow(row,'setType')">{{$t('basicData.cancelReview')}}</el-button> |
| | | <el-button link size="small" type="primary" @click="getTableRow(row,'delete')">{{$t('basicData.delete')}}</el-button> |
| | | </template> |
| | | |
| | | <template #num1_filter="{ column, $panel }"> |
| | |
| | | <template #toolbar_buttons> |
| | | <vxe-button style="margin-right: 0.5rem" |
| | | @click="exportExcel('/report/exportWorkInProgress', |
| | | '在制品报表', |
| | | t('report.workInProgressReport'), |
| | | form.date1)"> |
| | | 导出</vxe-button> |
| | | {{t('basicData.export')}}</vxe-button> |
| | | </template> |
| | | |
| | | </vxe-grid> |
| | |
| | | },//表头参数 |
| | | columns: [ |
| | | {type: 'expand', fixed: "left", slots: {content: 'content'}, width: 50}, |
| | | {type: 'seq', fixed: "left", title: '自序', width: 50}, |
| | | {type: 'seq', fixed: "left", title: t('basicData.Number'), width: 50}, |
| | | { |
| | | field: 'process', width: 120, title: '工序', filters: [{data: ''}], |
| | | field: 'process', width: 120, title: t('report.workingProcedure'), filters: [{data: ''}], |
| | | slots: {filter: 'num1_filter'}, |
| | | filterMethod: filterChanged |
| | | }, |
| | | { |
| | | field: 'order_id', |
| | | width: 120, |
| | | title: '销售单号', |
| | | title: t('order.orderId'), |
| | | showOverflow: "ellipsis", |
| | | filters: [{data: ''}], |
| | | slots: {filter: 'num1_filter'}, |
| | | filterMethod: filterChanged |
| | | }, |
| | | { |
| | | field: 'customer_name', title: '客户名称', filters: [{data: ''}], |
| | | field: 'customer_name', title: t('customer.customerName'), filters: [{data: ''}], |
| | | slots: {filter: 'num1_filter'}, |
| | | filterMethod: filterChanged |
| | | }, |
| | | { |
| | | field: 'project', |
| | | title: '项目名称', |
| | | title: t('order.project'), |
| | | showOverflow: "ellipsis", |
| | | filters: [{data: ''}], |
| | | slots: {filter: 'num1_filter'}, |
| | |
| | | }, |
| | | |
| | | { |
| | | field: 'product_name', title: '产品名称', filters: [{data: ''}], |
| | | field: 'product_name', title: t('order.product'), filters: [{data: ''}], |
| | | slots: {filter: 'num1_filter'}, |
| | | filterMethod: filterChanged |
| | | }, |
| | | { |
| | | field: 'finishedArea', title: '完工面积', filters: [{data: ''}], |
| | | field: 'finishedArea', title: t('reportingWorks.completedArea'), filters: [{data: ''}], |
| | | slots: {filter: 'num1_filter'}, |
| | | filterMethod: filterChanged |
| | | }, |
| | | { |
| | | field: 'brokenArea', |
| | | title: '次破面积', |
| | | title: t('reportingWorks.wornArea'), |
| | | type: 'date', |
| | | attrs: {placeholder: '', type: 'date'}, |
| | | }, |
| | | {field: 'area', width: 120, title: '总面积', showOverflow: "ellipsis"}, |
| | | {field: 'finished', width: 100, title: '成品率'}, |
| | | {field: 'area', width: 120, title: t('productStock.totalArea'), showOverflow: "ellipsis"}, |
| | | {field: 'finished', width: 100, title: t('report.finished')}, |
| | | ],//表头按钮 |
| | | |
| | | toolbarConfig: { |
| | |
| | | let processes = value.value |
| | | |
| | | if(date===null){ |
| | | ElMessage.warning("请先选择日期") |
| | | ElMessage.warning(t('report.pleaseSelectADateFirst')) |
| | | return |
| | | } |
| | | |
| | | if(processes===null){ |
| | | ElMessage.warning("请先选择工序") |
| | | ElMessage.warning(t('report.pleaseSelectAProcessFirst')) |
| | | return |
| | | } |
| | | |
| | |
| | | const timeDiff = Math.abs(date2.getTime() - date1.getTime()); |
| | | const daysDiff = timeDiff / (1000 * 3600 * 24); |
| | | if(Math.floor(daysDiff)>180){ |
| | | ElMessage.warning("导出的筛选时间不能超过180天") |
| | | ElMessage.warning(t('report.theFilteringTimeForExportCannotExceed180Days')) |
| | | return |
| | | } |
| | | let dataMp = ref({ |
| | |
| | | <el-row :gutter="0"> |
| | | <el-date-picker |
| | | v-model="form.date1" |
| | | end-placeholder="结束时间" |
| | | :start-placeholder="$t('basicData.startDate')" |
| | | :end-placeholder="$t('basicData.endDate')" |
| | | format="YYYY/MM/DD" |
| | | start-placeholder="开始时间" |
| | | style="width: 100px" |
| | | type="daterange" |
| | | value-format="YYYY-MM-DD" |
| | |
| | | :value="item.basic_name" |
| | | /> |
| | | </el-select> |
| | | <el-button type="primary" @click="getWorkOrder">查询</el-button> |
| | | <el-button type="primary" @click="getWorkOrder">{{$t('basicData.search')}}</el-button> |
| | | </el-row> |
| | | |
| | | </div> |
| | |
| | | <template #toolbar_buttons> |
| | | <vxe-button style="margin-right: 0.5rem" |
| | | @click="exportExcel('/report/exportYield', |
| | | '成品率报表', |
| | | t('report.yieldReport'), |
| | | form.date1)"> |
| | | 导出</vxe-button> |
| | | {{t('basicData.export')}}</vxe-button> |
| | | </template> |
| | | |
| | | <template #num1_filter="{ column, $panel }"> |
| | |
| | | return new Error((`${row.completedQuantity}+${brokenNum}>${row.quantity}`)) |
| | | } |
| | | if(titleUploadData.value.reportingWorkId!=null && row.completedQuantity<row.minQuantity){ |
| | | return new Error(`请输入大于等于${row.minQuantity}的数字`) |
| | | return new Error(`${t('reportingWorks.pleaseGreaterThanOrEqual1')} |
| | | ${row.minQuantity} |
| | | ${t('reportingWorks.pleaseGreaterThanOrEqual2')}`) |
| | | } |
| | | |
| | | } |
| | |
| | | |
| | | let reportingWorkNum = isNaN(brokenRow.value.completedQuantity*1)?0:brokenRow.value.completedQuantity*1 |
| | | if((breakageQuantityCount>brokenRow.value.quantity*1) ){ |
| | | ElMessage.warning(`损耗数:'${breakageQuantityCount}' |
| | | 不能大于${brokenRow.value.quantity*1}`) |
| | | ElMessage.warning(`${t('reportingWorks.lossCount1')}':'${breakageQuantityCount} |
| | | ${t('reportingWorks.lossCount2')}${brokenRow.value.quantity*1}`) |
| | | return false |
| | | } |
| | | brokenRow.value.completedQuantity = brokenRow.value.quantity-breakageQuantityCount |
| | |
| | | |
| | | for(let item of uniqueByOrderNum){ |
| | | if(!checkSameNumForId(notFinishList,item.order_number)){ |
| | | ElMessage.error(`请检查订单序号: ${item.order_number} 报工数量是否相同!`) |
| | | ElMessage.error(`${t('reportingWorks.pleaseCheckTheOrderNumber1')}':' |
| | | ${item.order_number} |
| | | ${t('reportingWorks.pleaseCheckTheOrderNumber1')}`) |
| | | return false |
| | | } |
| | | } |
| | |
| | | router.push({path:'/main/reportingWorks/AddReportingWork',query:{processId:titleUploadData.value.processId,random:Math.random()}}) |
| | | }else{ |
| | | const errorObj = JSON.parse(res.msg) |
| | | const msg = "序号:"+errorObj.orderNumber+'\n' |
| | | +'小片顺序:'+errorObj.technologyNumber+'\n' |
| | | +"实际可报工数量:"+errorObj.processNum+'<'+ |
| | | "报工数量:"+errorObj.sumNum+'\n' |
| | | +"请刷新界面重新报工" |
| | | const msg = t('reportingWorks.pleaseNumber1')+":"+errorObj.orderNumber+'\n' |
| | | +t('reportingWorks.pleaseNumber2')+':'+errorObj.technologyNumber+'\n' |
| | | +t('reportingWorks.pleaseNumber3')+':'+errorObj.processNum+'<'+ |
| | | +t('reportingWorks.pleaseNumber4')+':'+errorObj.sumNum+'\n' |
| | | +t('reportingWorks.pleaseNumber5') |
| | | |
| | | ElMessage.error(msg) |
| | | } |
| | |
| | | return |
| | | } |
| | | |
| | | if (titleSelectJson.value.thisProcessType.indexOf(process) == -1 && process != "切割" && titleSelectJson.value.thisProcessType != "") { |
| | | if (titleSelectJson.value.thisProcessType.indexOf(process) === -1 && process !== t('machine.cutting') && titleSelectJson.value.thisProcessType !== "") { |
| | | ElMessage.warning(t('reportingWorks.thisProcessNotProcessCard')) |
| | | return |
| | | } |
| | |
| | | } |
| | | |
| | | if (item.quantity < item.completedQuantity) { |
| | | ElMessage.success("序号" + item.order_number + "的数量不能大于上工序数量") |
| | | ElMessage.success(t('reportingWorks.pleaseNumber6') + item.order_number + t('reportingWorks.pleaseNumber7')) |
| | | |
| | | |
| | | } else if (item.breakageQuantity * 1 + item.completedQuantity * 1 > item.quantity * 1) { |
| | | ElMessage.success("请输入序号" + item.order_number + "正确的完工或次破数量") |
| | | ElMessage.success(t('reportingWorks.pleaseNumber8') + item.order_number + t('reportingWorks.pleaseNumber9')) |
| | | } |
| | | |
| | | sum = item.completedQuantity * 1 + sum * 1 |
| | |
| | | return |
| | | } |
| | | form.value.deliveryId = props.deliveryId*/ |
| | | |
| | | /*form.value.orderId='NG24060501' |
| | | request.post(`/Delivery/getSelectOrderPrinting`,form.value).then((res) => { |
| | | if(res.code==200){ |
| | | produceList.value = deepClone(res.data.data) |
| | | delivery.value=deepClone(res.data.delivery) |
| | | money.value=deepClone(res.data.money) |
| | | console.log(res.data.data) |
| | | |
| | | }else{ |
| | | ElMessage.warning(res.msg) |
| | | router.push("/login") |
| | | } |
| | | })*/ |
| | | |
| | | |
| | | if(route.query.deliveryID===null || route.query.deliveryID===undefined || route.query.deliveryID===''){ |
| | | return |
| | | } |
| | |
| | | router.push("/login") |
| | | } |
| | | }) |
| | | |
| | | |
| | | |
| | | }) |
| | | |
| | |
| | | |
| | | </div> |
| | | </div> |
| | | |
| | | <!-- <div> |
| | | <el-button @click="Printing" style="margin-top: -5px" id="searchButton" type="primary" >打印</el-button> |
| | | |
| | | <div id="pis" style="width: 100%;height: 100%"> |
| | | <div style="font-size: 30px;text-align: center;font-weight: bold;">常州市吉利玻璃有限公司</div> |
| | | <el-row :gutter="20"> |
| | | <el-col :span="7"><div></div></el-col> |
| | | <el-col :span="10"><div style="font-size: 25px;text-align: center;font-weight: bold;">销售发货单</div></el-col> |
| | | <el-col :span="7"> |
| | | <div style="display: flex;margin-top: 10px;"> |
| | | <div style="font-weight: bold;font-size: 15px">发货单号:</div> |
| | | <div style="font-weight: bold;font-size: 15px">{{delivery.deliveryId}}</div> |
| | | </div> |
| | | </el-col> |
| | | </el-row> |
| | | <div style="border: 1px solid #d3dce6;border-collapse: collapse;width: 100%;height: 100%;"> |
| | | <table id="table1" style="border: 1px solid #d3dce6;border-collapse: collapse;width: 100%;height: 100%;"> |
| | | <tr> |
| | | <th style="text-align: left;border:none;" colspan="3">客户名称:<span>{{delivery.customerName}}</span></th> |
| | | <th style="text-align: left;border:none;" colspan="3">项目名称:<span>{{delivery.project}}</span></th> |
| | | <th style="text-align: left;border:none;" colspan="2">联系人:<span>{{delivery.contacts}}</span></th> |
| | | |
| | | </tr> |
| | | <tr> |
| | | <th style="text-align: left;border:none;" colspan="6">送货地址:<span>{{delivery.deliveryAddress}}</span></th> |
| | | <th style="text-align: left;border:none;" colspan="2">联系电话:<span>{{delivery.contactNumber}}</span></th> |
| | | |
| | | </tr> |
| | | <tr> |
| | | <th style="width: 6%;">序号</th> |
| | | <th style="width: 20%;">楼层编号</th> |
| | | <th style="width: 20%;">宽(弧度)*高</th> |
| | | <th style="width: 10%;">数量</th> |
| | | <th style="width: 10%;">面积</th> |
| | | <th style="width: 10%;">单价</th> |
| | | <th style="width: 12%;">金额</th> |
| | | <th style="width: 12%;">加工要求</th> |
| | | </tr> |
| | | |
| | | <template v-for="(item, index) in produceList" :key="index" > |
| | | <tr> |
| | | <td style="font-size: 15px;font-weight: bold;" colspan="3">产品名称:<span>{{item.DeliveryDetail.productName}}</span></td> |
| | | <td style="font-size: 15px;font-weight: bold;" colspan="3">对方单号:</td> |
| | | <td style="font-size: 15px;font-weight: bold;" colspan="2">订单编号:<span>{{item.DeliveryDetail.orderId}}</span></td> |
| | | </tr> |
| | | |
| | | <tr class="day-in" v-for="(items, index1) in item.DeliveryDetailList" :key="index1"> |
| | | <td>{{items.order_number}}</td> |
| | | <td>{{items.buildingNumber}}</td> |
| | | <td style="font-size: 15px;font-weight: bold;">{{items.width}}x{{items.height}}</td> |
| | | <td>{{items.quantity}}</td> |
| | | <td>{{items.area}}</td> |
| | | <td>{{items.price}}</td> |
| | | <td>{{items.money}}</td> |
| | | <td>{{items.processingNote}}</td> |
| | | </tr> |
| | | <tr class="day-in" > |
| | | <td style="font-size: 15px;font-weight: bold;" colspan="3">小计:</td> |
| | | <td>{{item.DeliveryDetail.quantity}}</td> |
| | | <td>{{item.DeliveryDetail.area}}</td> |
| | | <td></td> |
| | | <td>{{item.DeliveryDetail.money}}</td> |
| | | <td></td> |
| | | </tr> |
| | | |
| | | </template> |
| | | <tr class="day-in"> |
| | | <td style="font-size: 15px;font-weight: bold;" colspan="3">合计:</td> |
| | | <td>{{delivery.quantity}}</td> |
| | | <td>{{delivery.area}}</td> |
| | | <td></td> |
| | | <td>{{delivery.money}}</td> |
| | | <td></td> |
| | | </tr> |
| | | <tr class="day-in"> |
| | | <td style="text-align: left;border-width: 0 1px 0 0; border-style: solid; border-color: #d3dce6" colspan="3"> |
| | | <div style="display: flex;font-size: 10px;"> |
| | | <div>加工费用</div> |
| | | <div style="margin-left: 20%">单价</div> |
| | | <div style="margin-left: 20%">数量</div> |
| | | <div style="margin-left: 20%">金额</div> |
| | | </div> |
| | | |
| | | </td> |
| | | <td style="text-align: left;border:none;font-size: 15px;font-weight: bold;" colspan="5">总金额: {{delivery.money}}</td> |
| | | </tr> |
| | | <tr class="day-in"> |
| | | <td style="text-align: left;border-width: 0 1px 0 0; border-style: solid; border-color: #d3dce6;" colspan="3"></td> |
| | | <td style="text-align: left;border:none;font-size: 15px;font-weight: bold;" colspan="5">大写金额: {{money}}</td> |
| | | </tr> |
| | | </table> |
| | | </div> |
| | | <el-row :gutter="20"> |
| | | <el-col :span="3"><div class="bottom">制单员:<span style="font-size: 10px">{{delivery.creator}}</span></div></el-col> |
| | | <el-col :span="5"><div class="bottom">制单日期:<span style="font-size: 10px">{{delivery.createTime}}</span></div></el-col> |
| | | <el-col :span="4"><div class="bottom">发货员:</div></el-col> |
| | | <el-col :span="4"><div class="bottom">司机:</div></el-col> |
| | | <el-col :span="4"><div class="bottom">客户签字:</div></el-col> |
| | | <el-col :span="4"><div class="bottom">签收日期:</div></el-col> |
| | | |
| | | </el-row> |
| | | <el-row :gutter="20" style="margin-top: 20px;"> |
| | | <el-col :span="3"><div class="bottom">架子 只</div></el-col> |
| | | <el-col :span="21"><div class="bottom">{{takeCare}}</div></el-col> |
| | | </el-row> |
| | | <el-row :gutter="20" style="margin-top: 20px;"> |
| | | <el-col :span="24"><div class="bottom">{{remark}}</div></el-col> |
| | | </el-row> |
| | | |
| | | |
| | | |
| | | </div> |
| | | </div>--> |
| | | </template> |
| | | |
| | | <style> |
| | |
| | | <el-date-picker |
| | | v-model="selectDate" |
| | | type="daterange" |
| | | :start-placeholder="t('basicData.startDate')" |
| | | :end-placeholder="t('basicData.endDate')" |
| | | :start-placeholder="$t('basicData.startDate')" |
| | | :end-placeholder="$t('basicData.endDate')" |
| | | format="YYYY-MM-DD" |
| | | value-format="YYYY-MM-DD" |
| | | |
| | |
| | | item=>item.computeArea*1 < errorArea.value*1 |
| | | ) |
| | | if(errorAreaList.length){ |
| | | ElMessageBox.confirm( |
| | | /*t('order.msg.calculationAreaPrompt1')+ |
| | | ${errorAreaList.length}+ |
| | | t('order.msg.calculationAreaPrompt2')+ |
| | | ${errorArea.value}+ |
| | | t('order.msg.calculationAreaPrompt3')+ |
| | | ${errorArea.value}+*/ |
| | | t('order.msg.calculationAreaPrompt4'), |
| | | 'Warning', |
| | | { |
| | | confirmButtonText: t('basicData.confirmButtonText'), |
| | | cancelButtonText: t('basicData.cancelButtonText'), |
| | | type: 'warning', |
| | | } |
| | | ElMessageBox.confirm(`${t('order.msg.calculationAreaPrompt1')} |
| | | ${errorAreaList.length} |
| | | ${t('order.msg.calculationAreaPrompt2')} |
| | | ${errorArea.value} |
| | | ${t('order.msg.calculationAreaPrompt3')} |
| | | ${errorArea.value} |
| | | ${t('order.msg.calculationAreaPrompt4')}`, |
| | | t('order.msg.warning'), |
| | | { |
| | | confirmButtonText: t('basicData.confirmButtonText'), |
| | | cancelButtonText: t('basicData.cancelButtonText'), |
| | | type: 'warning', |
| | | } |
| | | ).then(()=>{ |
| | | errorAreaComputed() |
| | | saveOrder(order) |
| | |
| | | return Result.seccess(deliveryService.getSelectDeliveryPrinting(deliveryDetail)); |
| | | } |
| | | |
| | | @ApiOperation("订单发货订单查询接口") |
| | | @SaCheckPermission("selectDelivery.search") |
| | | @PostMapping("/getSelectOrderPrinting") |
| | | public Result getSelectOrderPrinting( @RequestBody OrderDetail orderDetail){ |
| | | return Result.seccess(deliveryService.getSelectOrderPrinting(orderDetail)); |
| | | } |
| | | |
| | | @ApiOperation("发货明细报表") |
| | | @PostMapping("/exportDeliveryDetailReport") |
| | | public void exportDeliveryDetailReport(HttpServletResponse response, @RequestBody List<LocalDate> dates) throws IOException, IllegalAccessException, InstantiationException { |
| | |
| | | |
| | | List<DeliveryDetail> getSelectDeliveryPrinting(@Param("deliveryDetail") DeliveryDetail deliveryDetail); |
| | | |
| | | List<OrderDetail> getSelectOrderPrinting(@Param("orderDetail") OrderDetail orderDetail); |
| | | |
| | | List <Map<String, Object>> getSelectDeliveryDetailPrinting(@Param("deliveryId") String deliveryId, |
| | | @Param("productId") Integer productId,@Param("orderId") String orderId); |
| | | |
| | | List <Map<String, Object>> getSelectOrderDetailPrinting(@Param("productId") Integer productId,@Param("orderId") String orderId); |
| | | |
| | | |
| | | List<DeliveryDetail> getSelectDeliveryDetailReport(@Param("offset") Integer offset, |
| | | @Param("pageSize") Integer pageSize,String startDate, String endDate, |
| | | @Param("deliveryDetail") DeliveryDetail deliveryDetail); |
| | |
| | | |
| | | Delivery getSelectShippingOrderDetailDeliveryPrinting(@Param("deliveryDetail") DeliveryDetail deliveryDetail); |
| | | |
| | | Order getSelectShippingOrderDetailPrinting(@Param("orderDetail") OrderDetail orderDetail); |
| | | |
| | | Order getSelectShippingOrderDetailDeliverys(@Param("offset") Integer offset, |
| | | @Param("pageSize") Integer pageSize, |
| | | @Param("orderDetail") OrderDetail orderDetail); |
| | |
| | | |
| | | } |
| | | |
| | | public Map<String, Object> getSelectOrderPrinting(OrderDetail orderDetail) { |
| | | Map<String, Object> map = new HashMap<>(); |
| | | List <Map<String, Object>> list=new ArrayList<Map<String, Object>>();//最终结果 |
| | | List<OrderDetail> orderDetailList=deliveryDetailMapper.getSelectOrderPrinting(orderDetail); |
| | | for (OrderDetail detail : orderDetailList) { |
| | | |
| | | Map<String, Object> itemmap = new HashMap<>(); |
| | | List<Map<String, Object>> deliveryDetailList2 = deliveryDetailMapper.getSelectOrderDetailPrinting( |
| | | detail.getProductId(), detail.getOrderId()); |
| | | itemmap.put("DeliveryDetail", detail); |
| | | itemmap.put("DeliveryDetailList", deliveryDetailList2); |
| | | list.add(itemmap); |
| | | |
| | | |
| | | } |
| | | Order order=deliveryMapper.getSelectShippingOrderDetailPrinting(orderDetail); |
| | | map.put("data", list); |
| | | map.put("delivery", deliveryMapper.getSelectShippingOrderDetailPrinting(orderDetail)); |
| | | map.put("money", toChinese(order.getMoney().toString(), false)); |
| | | return map; |
| | | |
| | | } |
| | | |
| | | public List<DeliveryDetailDTO> exportDeliveryDetailReport(List<LocalDate> dates) { |
| | | return deliveryDetailMapper.exportDeliveryDetailReport(dates); |
| | | } |
| | |
| | | group by od.order_id,od.product_name,od.product_id |
| | | </select> |
| | | |
| | | <select id="getSelectOrderPrinting" > |
| | | select od.order_id,od.product_id,od.product_name,sum(od.area) as area,sum(od.gross_amount) as money,sum(od.quantity) as quantity from |
| | | order_detail od |
| | | <where> |
| | | <if test="orderDetail.orderId != null and orderDetail.orderId != ''"> |
| | | and od.order_id like concat('%',#{orderDetail.orderId},'%') |
| | | </if> |
| | | </where> |
| | | group by od.product_name,od.product_id |
| | | </select> |
| | | |
| | | <select id="getSelectDeliveryDetailPrinting" > |
| | | select od.order_id, |
| | | od.order_number, |
| | |
| | | and od.product_id = #{productId} |
| | | </select> |
| | | |
| | | <select id="getSelectOrderDetailPrinting" > |
| | | select od.order_id, |
| | | od.order_number, |
| | | od.product_name, |
| | | od.width, |
| | | od.height, |
| | | od.quantity, |
| | | od.gross_amount, |
| | | od.area, |
| | | ifnull(od.processing_note,"") as processingNote, |
| | | ifnull(od.remarks,"") as buildingNumber, |
| | | od.price |
| | | from order_detail od |
| | | where od.order_id = #{orderId} |
| | | and od.product_id = #{productId} |
| | | </select> |
| | | |
| | | |
| | | <select id="exportDeliveryDetailReport"> |
| | | select dd.id, |
| | |
| | | </where> |
| | | </select> |
| | | |
| | | <select id="getSelectShippingOrderDetailPrinting" > |
| | | select |
| | | d.order_id,d.quantity,d.money,d.area,d.project, |
| | | d.customer_id,d.customer_name,d.creator,d.salesman,d.salesman_id |
| | | from sd.`order` d |
| | | <where> |
| | | <if test="orderDetail.orderId != null and orderDetail.orderId != ''"> |
| | | and d.order_id like concat('%',#{orderDetail.orderId},'%') |
| | | </if> |
| | | |
| | | </where> |
| | | </select> |
| | | |
| | | |
| | | <select id="getSelectShippingOrderDetailDeliverys" > |
| | | select customer_id,customer_name,project,salesman,salesman_id,contacts,contact_number,delivery_address from sd.`order` |