廖井涛
2024-03-13 b13c552870d145f287dfd93a502e91cf9efc8ec3
修改界面中英文
33个文件已修改
2091 ■■■■ 已修改文件
north-glass-erp/northglass-erp/src/lang/en.js 440 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
north-glass-erp/northglass-erp/src/lang/zh.js 437 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
north-glass-erp/northglass-erp/src/views/mm/mainProductStock/CreateProductStock.vue 49 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
north-glass-erp/northglass-erp/src/views/mm/mainProductStock/FinishedGoodsIssue.vue 67 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
north-glass-erp/northglass-erp/src/views/mm/mainProductStock/FinishedProductOut.vue 58 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
north-glass-erp/northglass-erp/src/views/mm/mainProductStock/FinishedProductRework.vue 67 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
north-glass-erp/northglass-erp/src/views/mm/mainProductStock/OrderAllocation.vue 66 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
north-glass-erp/northglass-erp/src/views/mm/mainProductStock/ProductStock.vue 14 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
north-glass-erp/northglass-erp/src/views/mm/mainProductStock/ProductStockList.vue 51 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
north-glass-erp/northglass-erp/src/views/mm/mainProductStock/ReworkRecord.vue 48 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
north-glass-erp/northglass-erp/src/views/mm/mainProductStock/TakeOutRecord.vue 56 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
north-glass-erp/northglass-erp/src/views/mm/mainProductStock/TransferRecord.vue 42 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
north-glass-erp/northglass-erp/src/views/pp/Replenish/AddReplenish.vue 58 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
north-glass-erp/northglass-erp/src/views/pp/Replenish/Replenish.vue 10 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
north-glass-erp/northglass-erp/src/views/pp/Replenish/SelectReplenish.vue 72 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
north-glass-erp/northglass-erp/src/views/pp/rework/AddRework.vue 68 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
north-glass-erp/northglass-erp/src/views/pp/rework/Rework.vue 10 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
north-glass-erp/northglass-erp/src/views/pp/rework/SelectRework.vue 96 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
north-glass-erp/northglass-erp/src/views/sd/customer/CreateCustomer.vue 34 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
north-glass-erp/northglass-erp/src/views/sd/customer/Customer.vue 10 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
north-glass-erp/northglass-erp/src/views/sd/customer/SelectCustomer.vue 28 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
north-glass-erp/northglass-erp/src/views/sd/delivery/CreateDelivery.vue 118 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
north-glass-erp/northglass-erp/src/views/sd/delivery/Delivery.vue 12 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
north-glass-erp/northglass-erp/src/views/sd/delivery/SelectDelivery.vue 60 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
north-glass-erp/northglass-erp/src/views/sd/delivery/SelectOrderList.vue 62 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
north-glass-erp/src/main/java/com/example/erp/controller/sd/DeliveryController.java 12 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
north-glass-erp/src/main/java/com/example/erp/mapper/sd/DeliveryMapper.java 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
north-glass-erp/src/main/java/com/example/erp/service/sd/DeliveryService.java 27 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
north-glass-erp/src/main/resources/mapper/mm/FinishedGoodsInventory.xml 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
north-glass-erp/src/main/resources/mapper/sd/Delivery.xml 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
north-glass-erp/target/classes/mapper/mm/FinishedGoodsInventory.xml 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
north-glass-erp/target/classes/mapper/pp/ReworkMapper.xml 5 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
north-glass-erp/target/classes/mapper/sd/Delivery.xml 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
north-glass-erp/northglass-erp/src/lang/en.js
@@ -4,18 +4,446 @@
        pwErr:'Please enter your password',
        loginSuccessful:'User login successful',
        connectErr:'server connection failed',
        user:'user',
        password:'pass',
        user:'User',
        password:'Pass',
        SysName:'North Glass ERP System',
        login:'login',
        register:'register',
        login:'Login',
        register:'Register',
    },
    main:{
        connectErr:'The server connection is abnormal. Please try again later',
        titleFirst:"Welcome ",
        titleLast:' to use North Glass ERP system!'
    },
    basicData:{
        create:'New Order',
        review:"Review",
        cancelReview:"Reset",
        save:'Save',
        add:'Add',
        delete:'Delete',
        edit:'Edit',
        selectSame:'Select same',
        sameAfterwards:'Same afterwards',
        clearSelection:'Clear selection',
        calculateAmount:'Calculate amount',
        Number:'No.',
        remarks:'Remarks',
        total:'Total',
        check:'Check',
        operate:'Operate',
        search:'Search',
        startDate:'Start Date',
        endDate:'End Date',
        reportData:'Report Data',
        msg:{
            max255:"The value contains a maximum of 255 characters",
            range99999Dec2:
                "Please enter a number between 0 and 99999 with a maximum of two decimals",
            greater0:"Please enter an integer greater than 0",
            checkoutLose:'Check fail',
            saveSuccess:'save successfully',
            saveFail:'Save fail',
            cancelReviewSuccess:'Cancel review successfully',
            ReviewSuccess:'Review successfully'
        }
    },
    order:{
        orderHomePage:'Order Home Page',
        orderReport:'Order Report',
        project:'Project',
        orderId:'Order ID',
        money:'Total Amount',
        customers:"Customers",
        deliveryDate:"Delivery Date",
        contractId:'ContractId',
        orderType:'Order Type',
        batch:'Batch',
        customerBatch:'Customer Batch',
        orderClassify:'Order Classify',
        calculateType:'Calculate Type',
        contacts:'Contacts',
        icon:'Trademark',
        salesman:'Salesman',
        contactNumber:'Contact Number',
        packType:'Package Type ',
        alType:'Aluminum Type',
        deliveryAddress:'Delivery Address',
        processingNote:'Processing Note',
        technology:'Technology',
        amountReset:'Amount Reset',
        OrderNum:'Order Number',
        productId:'Product ID',
        product:'Product',
        price:'Price',
        quantity:'Quantity',
        grossAmount:'Gross Amount',
        width:'Width',
        height:'Height',
        area:'Area',
        trueArea:'True Area',
        trueGrossArea:'True Gross Area',
        computeArea:'Compute Area',
        computeGrossArea:'Compute Gross Area',
        shape:'Shape',
        bendRadius:'Bend Radius',
        edgingType:'Edging Type',
        import:'import',
        msg:{
            productCheck:'Please select a product',
            tableLengthNot:'No table data',
            amountReset:'Please open the right click menu to recalculate the amount and then save',
            projectCheck: 'Please enter a project name',
            customerCheck: 'Please select Customer',
            salasManCheck: 'Please select Sales',
            calculateTypeCheck: 'Please select a calculation method',
            tableLengthMax:'The table data has reached the maximum value. Procedure',
            productStateCheck:'The product has not yet been reviewed',
            importMaxCheckFailFirst:'Import ',
            importMaxCheckFailMid:' the data can not exceed ',
            importMaxCheckFailLast:' pieces, please import in multiple orders',
            updateAmountSuccessfully:'Updated amount successfully'
        }
    },
    searchOrder:{
        createOrder:'Create',
        production:'Production',
        process:'Process',
        storage:'Storage',
        delivery:'Delivery',
        inventoryNum:'InventoryNum',
        perimeter:'Perimeter',
        regularOrders:'Regular Orders',
        cancelledOrders:'Cancelled Orders',
        allOrders:'All Orders',
        msg:'Please select a piece of data',
        msgDelete:'Reviewed orders cannot be deleted',
        msgDeleteFail:'Fail to delete',
        msgDeleteSuccess:'Successfully delete',
        deleteConfirm:'Confirm order deletion?',
        orderType:'Order Type',
    },
    craft:{
        glassAddress:'Glass Address',
        glassChild:'GlassChild',
        width:'Width',
        height:'Height',
        totalArea:'TotalArea',
        childWidth:'Child Width',
        childHeight:'Child Height',
        area:'Area',
        process:'Process',
        orderDetail:'Order Detail',
        updateCraft:'Update Process',
        technologicalProcess:'Technological Process',
        processAttribute:'Process Attribute',
        oldProcess:'Old Process',
        newProcess:'New Process',
        reset:'Reset',
    },
    workOrder:{
        workOrder:'Work Order Management',
        productionId:'Production Order Number',
        convert:'Convert',
        unConverted:'UnConverted',
        deleteOk:'Delete Successful',
        transferOrder:'Transfer Order',
        perimeter:'perimeter'
    },
    processCard:{
        processId:'Process Card Number',
        founder:'Divider',
        layoutStatus:'Type Setting',
        splitFrame:'Rack Allocation',
        processCardManagement:'Process Card Management',
        smallPieceOrder:'Monolithic Sequence',
        quantityToDivided:'Quantity To Be Divided',
        areaToDivided:'Area To Be Divided',
        totalThickness:'Total Thickness',
        glassThickness:'Glass Thickness',
        weight:'Weight',
        selectedQuantity:'Select Quantity',
        establishProcessCards:'Add',
        return:'Return',
        ProductionSchedulingOk:'Scheduled Production',
        ProductionSchedulingNo:'Unscheduled Production',
        orderQuantity:'Order Quantity',
        orderArea:'Order Area',
        productionSchedulingQuantity:'Production Scheduling Quantity',
        quantityToScheduled:'Quantity To Be Scheduled',
        areaToScheduled:'Pending Production Area',
        plannedProductionQuantity:'Produced Quantity',
        plannedProductionArea:'Produced Area',
        reviewedState:'Review Status',
        reviewed:'Reviewer',
        schedulingId:'Production Scheduling Number',
        scheduling:'Production Scheduling',
        schedulingOk:'Please select the data on the right first',
        schedulingNo:'Please enter a positive integer',
        schedulingQuantity:'Please enter a number less than or equal to the number available',
        schedulingArea:'Please select the data on the left first',
        schedulingTime:'Please select the data on the left first',
        schedulingTimeOk:'Please enter a number less than or equal to the number to be divided',
        schedulingTimeNo:'Please select the data to save first',
        schedulingTimeQuantity:'Create a flow card for all the data on the right and save it',
        checkProductionScheduling:'Please select scheduling data',
        saveCorrespondingValues:'Please fill in the corresponding value before saving',
        selectProductionSchedulingProcess:'Please select the scheduling process',
        deleteThisData:'You are sure you want to delete the data',
        schedulingQuantityNoQuantityScheduled:'The number of scheduled production cannot be greater than the number to be scheduled',
        typesettingSuccess:'Typesetting Success',
        modifySuccessfully:'Modify Successfully',
        composing:'composing',
        composingOk:'Can Be Typesetter',
        composingNo:'Non Typesetting',
        typesetter:'typesetter',
        scheduledStartTime:'Scheduled Start Time',
        planEndTime:'Plan End Time',
        customerId:'Customer Id',
        customerName:'Customer',
        technologyNumber:'Chip Sequence',
        otherRemarks:'Original Film Requirement',
    },
    reportingWorks:{
        glassAddress:'Glass Address',
        WorkReportingManagement:'Work Reporting Management ',
        addReportingWorks:'New Work Reporting',
        qualityInspectionReview:'Quality Inspection Review',
        early:'Morning Shift ',
        nightShift:'Night Shift',
        numberProcessCards:'Number Of Process Cards',
        reportableQuantityOk:'Quantity Work available',
        completedQuantity:'Completed Quantity',
        quantityBroken:'Damage Quantity',
        completed:'Completed',
        onceBroken:'Damaged',
        available:'Available',
        returnProcess:'Return Process',
        breakageType:'Damage Type',
        breakageReason:'Damage Reason',
        responsibleProcess:'Responsible Process',
        responsibleEquipment:'Equipment',
        responsibleTeam:'Team',
        responsiblePersonnel:'Personnel',
        increase:'Add',
        lossCount:'Loss Number',
        completedNumber:'Completed Quantity',
        sumOf:'Sum Of',
        greaterThanNo:'Cannot be greater than',
        selectProcessCardData:'Please select process card data',
        selectWorkReportingEquipment:'Please select a reporting device',
        atLeastOneFinishedAndWornEligible:'Please fill in at least one loss number and completion number greater than 0',
        successfulJobApplication:'Report Success',
        actualQuantity:'Actual Reporting Quantity',
        thisProcessQuantity:'Completed Quantity',
        reReportingWork:'Please refresh the interface and report again',
        correctFormatProcessCard:'Please enter the correct format process card',
        processCardCorrectNumberDigits:'Please enter the correct number of process cards',
        selectProcess:'Please select process',
        firstProcessNotReview:'The first process does not need to be audited',
        thisProcessNotProcessCard:'This procedure does not belong to the process card',
        noDataThisProcessCard:'This process card data is not queried',
        serialNumber:'The number of serial number',
        quantityNotPreviousProcessNum:'Cannot be greater than the number of the previous operation',
        enterTheSerialNumber:'Please enter serial number',
        correctQuantity:'Correct number of completions or breakdowns',
        processCardArea:'Process Card Area',
        deviceType:'Reporting Equipment',
        pleaseDevice:'Please select a device',
        previousProcess:'Previous Process',
        numberReported:'Quantity Work Available',
        teamsType:'Reporting Team',
        selectTeam:'Please select a team',
        classes:'Shift',
        selectClasses:'Please select flight',
        nextProcess:'Next Process',
        reportingWorkTime:'Date Of Work Application',
        damageList:'Damage List',
        qualityInspector:'Quality Inspector',
        qualityInsStatus:'Quality Inspection Status',
        previousProcessQuantity:'Previous Process Quantity',
        selectBreakageType:'Please select the secondary break type',
        selectBreakageReason:'Please select the reason for the second break',
        selectResponsibleProcess:'Please select the responsible process',
        selectResponsibleEquipment:'Please select the responsible device',
        availableOkReturnProcess:'Use already selected, please select return process',
        enterIntegerGreaterThan:'Enter an integer greater than 0',
        enterIntegerGreaterThanEqualTo:'Please enter an integer that is greater than or equal to 0\n',
        saveAndReview:'Save Andf Review',
        reportingWorkId:'Reporting Work Number',
        reportingProcess:'Reporting Process',
        glassChild:'Glass Child',
        thisCompletedQuantity:'This Completed Quantity',
        thisWornQuantity:'This Worn Quantity',
        passAudit:'Pass The Audit',
    },
    productStock:{
        inventoryQuery:'Stock Inquiry',
        finishedProductWarehousing:"Finished product Into Stock ",
        finishedProductOutbound:'Finished Product Out Of Stock',
        finishedProductOrderReturn:"Return Finished Order ",
        reportForms:"Report Forms",
        remarks:"Remarks",
        outbound:'Outbound',
        orderTransfer:'Order Allocation',
        finishedProductPickup:"Finished Goods Delivery ",
        finishedProductRework:"Finished Goods Reprocessing ",
        pleaseEnterTheStorageLocation:'Please input stock no',
        pleaseEnterANote:"Please input remarks ",
        completedQuantity:'Finished Quantity',
        finishedProductInventory:"Finished Product Stock ",
        confirmOutbound:'Delivery Confirmation',
        confirmReceiptOfGoods:'Warehousing Confirmation',
        receivedSuccessfully:'Successfully entered the warehouse',
        deliverySuccessful:"Successfully transferred out of warehouse ",
        successfullyRetrieved:'Successfully claimed',
        reworkSuccessful:'Successfully rework',
        transferSuccessful:'Successfully mutual exchange',
        reviewSuccessful:'Successfully review ',
        invalidSuccessfully:'Successfully cancel',
        reverseReviewSuccessful:'Successfully re-audit',
        confirmWithdrawal:'Take Out Confirmation',
        pickingOutRecords:'Take Out Records',
        confirmTransfer:'Mutual Exchange Confirmation',
        transferRecords:'Mutual Exchange Records',
        reworkConfirmation:'Rework Confirmation',
        reworkRecords:'Rework Records',
        pleaseSelectTheTypeOfWithdrawal:'Please select the type of withdrawal',
        pleaseSelectTheTypeOfRework:'Please select the type of rework',
        receivedQuantity:'Received Quantity',
        reworkQuantity:'Rework Quantity',
        transferQuantity:'Mutual Exchange 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',
        pleaseEnterTheOrderIdForTheTransfer:'Please enter the order id for the transfer',
        pleaseEnterTheOrderNumberForTheTransfer:'Please enter the order number for the transfer',
        theTransferQuantityCannotBeGreaterThanTheOrderQuantity:'The quantity of mutual exchange cannot be greater than the number of orders',
        transferQuantityCannotBeEmptyOr0:'The quantity of mutual exchange cannot be empty or 0',
        theClaimedQuantityCannotBeGreaterThanTheOrderQuantity:'The claimed quantity cannot be greater than the number of orders',
        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',
        productionDate:'Production Date',
        statementDate:'Statement Date',
        approvedDate:'Approved Date',
        creator:'Document Making Staff',
        reviewed:'Audit Staff',
        documentStatus:'Document Status',
        status:'Status',
        totalNumberOfOrders :'Total Number Of Orders',
        quantityAlreadyInStock:'Quantity Already In Stock',
        totalArea:'Total Area',
        singlePieceArea:'Single Piece Area',
        perimeter:'Perimeter',
        returnToWarehouse:'Return To Warehouse',
    },
    customer:{
        pleaseEnterTheCustomerName:'Please enter the customer name',
        pleaseEnterCustomerLevel:"Please enter customer level ",
        pleaseEnterTheAmountOfFunds:'Please enter the amount of funds',
        pleaseEnterTheContactAddress:"Please enter the contact address ",
        pleaseEnterTheContactPerson:"Please enter the contact person ",
        pleaseEnterTheContactPhoneNumber:"Please enter the contact phone number",
        customerGrade:'Customer Grade',
        moneyLimit:"Money Limit ",
        address:"Address ",
        contacts:'Contacts',
        telephone:"Telephone ",
        customerNumber:'Customer Id',
        customerName:"Customer",
        customerHomePage:'Customer Homepage',
        increaseCustomers:'Increase Customers',
        resetting:'Resetting',
    },
    delivery:{
        delivery:'Delivery',
        place :'Place',
        technology:'Technology',
        produce:'Produce',
        traveler:'Traveler',
        warehousing:'Warehousing',
        unpaidQuantity:"Unpaid  Quantity ",
        availableStock:'Available Stock',
        deliveryQuantity:'Delivery Quantity',
        pleaseEnterTheAmountOfFunds:'Please enter the project name',
        pleaseSelectPaymentTerms:"Please select payment terms ",
        pleaseEnterThePaymentMethod:"Please enter the payment method ",
        pleaseSelectTheSameCustomerOrder:'Please select the same customer order',
        deliveryNoteSubmittedSuccessfully:"Delivery note submitted successfully",
        pleaseEnterANumericalValueGreaterThanOrEqualTo0:'Please enter a numerical value greater than or equal to 0',
        theShipmentQuantityCannotBeGreaterThanTheInventoryQuantity:"The shipment quantity cannot be greater than the inventory quantity ",
        theShipmentQuantityCannotBeEmptyOr0:"The shipment quantity cannot be empty or 0 ",
        paymentTerms:'Payment Terms',
        paymentDate:"Payment Date ",
        selectDate:'Select Date',
        paymentMethod:"Payment Method ",
        shippingAddress:'Shipping Address',
        deliveryReportDate:'Delivery Report Date',
        shipper:"Shipper ",
        shippingHomepage:'Shipping Homepage',
        orderShipment:"Order Shipment ",
        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',
        addRework:"Add Rework ",
        printRework:'Print Rework',
        reworkNumber:'Rework Number',
        reworkTeam:'Rework Team',
        reasonForRework:"Reason For Rework ",
        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',
    }
}
north-glass-erp/northglass-erp/src/lang/zh.js
@@ -15,8 +15,445 @@
        titleFirst:"欢迎 ",
        titleLast:' 使用北玻ERP系统!'
    },
    basicData:{
        create:'创建',
        review:"审核",
        cancelReview:"反审",
        save:'保存',
        add:'添加',
        delete:'删除',
        edit:'编辑',
        selectSame:'选中相同',
        sameAfterwards:'之后相同',
        clearSelection:'清除选中',
        calculateAmount:'计算金额',
        Number:'自序',
        remarks:'备注',
        total:'合计',
        check:'选择',
        operate:'操作',
        search:'查询',
        startDate:'开始时间',
        endDate:'结束时间',
        reportData:'报表日期',
        msg:{
            max255:"最多输入255个字符",
            range99999Dec2:
                "请输入0-99999之间的数字,最多保留两位小数",
            greater0:"请输入大于0的整数",
            checkoutLose:'校验不通过',
            saveSuccess:'保存成功',
            saveFail:'保存失败',
            cancelReviewSuccess:'反审成功',
            ReviewSuccess:'审核成功'
        }
    },
    order:{
        orderHomePage:'订单首页',
        orderReport:'订单报表',
        project:'项目名称',
        orderId:'销售单号',
        money:'总金额',
        customers:"客户选择",
        deliveryDate:"交货日期",
        contractId:'合同编号',
        orderType:'订单类型',
        batch:'批次',
        customerBatch:'客户批次',
        orderClassify:'订单分类',
        calculateType:'计算方式',
        contacts:'联系人',
        icon:'商标选项',
        salesman:'业务员',
        contactNumber:'联系电话',
        packType:'包装方式',
        alType:'铝条方式',
        deliveryAddress:'送货地址',
        processingNote:'加工要求',
        technology:'工艺',
        amountReset:'金额重置',
        OrderNum:'订单序号',
        productId:'产品Id',
        product:'产品',
        price:'单价',
        quantity:'数量',
        grossAmount:'总金额',
        width:'宽',
        height:'高',
        area:'面积',
        trueArea:'实际单片金额',
        trueGrossArea:'实际总面积',
        computeArea:'结算单片面积',
        computeGrossArea:'计算总面积',
        shape:'形状',
        bendRadius:'弯钢弧度',
        edgingType:'磨边类型',
        import:'导入',
        msg:{
            productCheck:'请选择产品',
            tableLengthNot:'没有表格数据',
            amountReset:'请先打开右击菜单重新计算金额后,再保存',
            projectCheck: '请输入项目名称',
            customerCheck: '请选择客户',
            salasManCheck: '请选择业务员',
            calculateTypeCheck: '请选择计算方式',
            tableLengthMax:'表格数据已达到最大值',
            productStateCheck:'该产品还未审核',
            importMaxCheckFailFirst:'导入',
            importMaxCheckFailMid:'条,$数据不能超过',
            importMaxCheckFailLast:'条,请分订单导入',
            updateAmountSuccessfully:'更新金额成功'
        }
    },
    searchOrder:{
        createOrder:'下单',
        production:'工单',
        process:'流程',
        storage:'入库',
        delivery:'发货',
        inventoryNum:'库存数',
        perimeter:'周长',
        regularOrders:'正常订单',
        cancelledOrders:'作废订单',
        allOrders:'所有订单',
        msg:'请选择一条数据',
        msgDelete:'已审核的订单不能删除',
        msgDeleteFail:'删除失败',
        msgDeleteSuccess:'删除成功',
        deleteConfirm:'确认删除订单?',
        orderType:'订单类型',
    },
    craft:{
        glassAddress:'标记',
        glassChild:'子产品',
        width:'成品宽',
        height:'成品高',
        totalArea:'总尺寸',
        childWidth:'单片宽',
        childHeight:'单片高',
        area:'单片尺寸',
        process:'工艺流程',
        orderDetail:'订单详情',
        updateCraft:'修改工艺',
        technologicalProcess:'工艺流程',
        processAttribute:'工艺属性',
        oldProcess:'原流程',
        newProcess:'流程',
        reset:'重置',
    },
    workOrder:{
        workOrder:'工单管理',
        productionId:'生产订单号',
        convert:'已转',
        unConverted:'未转',
        deleteOk:'删除成功',
        transferOrder:'转工单',
        perimeter:'周长'
    },
    processCard:{
        processId:'流程卡号',
        founder:'分架员',
        layoutStatus:'排版状态',
        splitFrame:'分架',
        processCardManagement:'流程卡管理',
        quantityToDivided:'待分数量',
        areaToDivided:'待分面积',
        totalThickness:'总厚度',
        glassThickness:'玻璃厚度',
        weight:'重量',
        selectedQuantity:'选中数量',
        establishProcessCards:'建立流程卡',
        return:'返回',
        ProductionSchedulingOk:'已排产',
        ProductionSchedulingNo:'未排产',
        orderQuantity:'订单数量',
        orderArea:'订单面积',
        productionSchedulingQuantity:'排产数量',
        quantityToScheduled:'待排产数量',
        areaToScheduled:'待排产面积',
        plannedProductionQuantity:'已排产数量',
        plannedProductionArea:'已排产面积',
        reviewedState:'审核状态',
        reviewed:'审核人',
        schedulingId:'排产编号',
        notes:'备注',
        scheduling:'排产',
        schedulingOk:'请先选择右侧数据',
        schedulingNo:'请输入正整数',
        schedulingQuantity:'请输入小于等于可用数量的数字',
        schedulingArea:'请先选择左侧数据',
        schedulingTime:'请先选择左侧一条数据',
        schedulingTimeOk:'请输入小于等于待分数量的数字',
        schedulingTimeNo:'请先选择保存的数据',
        schedulingTimeQuantity:'请先将右侧数据全部建立流程卡后保存',
        checkProductionScheduling:'请勾选排产数据',
        saveCorrespondingValues:'请填入对应的值再进行保存',
        selectProductionSchedulingProcess:'请选择排产工序',
        deleteThisData:'您确定要删除该数据',
        schedulingQuantityNoQuantityScheduled:'排产数量不能大于待排产数量',
        typesettingSuccess:'排版成功',
        modifySuccessfully:'修改成功',
        composing:'排版',
        composingOk:'可排版',
        composingNo:'不可排版',
        typesetter:'已排版',
        scheduledStartTime:'计划开始时间',
        planEndTime:'计划结束时间',
        customerId:'客户编码',
        customerName:'客户名称',
        technologyNumber:'小片顺序',
        otherRemarks:'原片要求',
    },
    reportingWorks:{
        glassAddress:'片标记',
        WorkReportingManagement:'报工管理',
        addReportingWorks:'报工新增',
        qualityInspectionReview:'质检审核',
        early:'早班',
        nightShift:'晚班',
        numberProcessCards:'流程卡数量',
        reportableQuantityOk:'可报数量',
        completedQuantity:'完工数量',
        quantityBroken:'次破数量',
        completed:'已完工',
        onceBroken:'已次破',
        available:'可利用',
        returnProcess:'退回工序',
        breakageType:'次破类型',
        breakageReason:'次破原因',
        responsibleProcess:'责任工序',
        responsibleEquipment:'责任设备',
        responsibleTeam:'责任班组',
        responsiblePersonnel:'责任人员',
        increase:'添加',
        lossCount:'损耗数',
        completedNumber:'完工数',
        sumOf:'之和',
        greaterThanNo:'不能大于',
        selectProcessCardData:'请选择流程卡数据',
        selectWorkReportingEquipment:'请选择报工设备',
        atLeastOneFinishedAndWornEligible:'请填写至少一条损耗数和完工数大于0',
        successfulJobApplication:'报工成功',
        actualQuantity:'实际可报工数量',
        thisProcessQuantity:'报工数量',
        reReportingWork:'请刷新界面重新报工',
        correctFormatProcessCard:'请输入正确格式流程卡',
        processCardCorrectNumberDigits:'请输入正确位数的流程卡',
        selectProcess:'请选择工序',
        firstProcessNotReview:'第一道工序不需要审核',
        thisProcessNotProcessCard:'此工序不属于该流程卡',
        noDataThisProcessCard:'未查询到此流程卡数据',
        serialNumber:'序号',
        quantityNotPreviousProcessNum:'的数量不能大于上工序数量',
        enterTheSerialNumber:'请输入序号',
        correctQuantity:'正确的完工或次破数量',
        processCardArea:'流程卡面积',
        deviceType:'报工设备',
        pleaseDevice:'请选择设备',
        previousProcess:'上工序',
        numberReported:'可报工数量',
        teamsType:'报工班组',
        selectTeam:'请选择班组',
        classes:'班次',
        selectClasses:'请选择班次',
        nextProcess:'下工序',
        reportingWorkTime:'报工日期',
        damageList:'破损列表',
        qualityInspector:'质检员',
        qualityInsStatus:'质检状态',
        previousProcessQuantity:'上工序完工数量',
        selectBreakageType:'请选择次破类型',
        selectBreakageReason:'请选择次破原因',
        selectResponsibleProcess:'请选择责任工序',
        selectResponsibleEquipment:'请选择责任设备',
        availableOkReturnProcess:'可利用已选择,请选择返回工序',
        enterIntegerGreaterThan:'输入大于0的整数',
        enterIntegerGreaterThanEqualTo:'请输入整数,并且大于等于0',
        saveAndReview:'保存并审核',
        reportingWorkId:'报工编号',
        reportingProcess:'报工工序',
        glassChild:'单片名称',
        thisCompletedQuantity:'本工序完工',
        thisWornQuantity:'本工序次破',
        passAudit:'审核通过',
    },
    productStock:{
        inventoryQuery:'库存查询',
        finishedProductWarehousing:"成品入库 ",
        finishedProductOutbound:'成品出库',
        finishedProductOrderReturn:"成品订单退货 ",
        reportForms:"报表 ",
        remarks:"备注",
        outbound:'出库',
        orderTransfer:'订单调拨',
        finishedProductPickup:"成品领出 ",
        finishedProductRework:"成品返工 ",
        pleaseEnterTheStorageLocation:'请输入库位',
        pleaseEnterANote:"请输入备注 ",
        completedQuantity:'完工数量',
        finishedProductInventory:"成品库存 ",
        confirmOutbound:'确认出库',
        confirmReceiptOfGoods:'确认入库',
        receivedSuccessfully:'入库成功',
        deliverySuccessful:"出库成功 ",
        successfullyRetrieved:'领出成功',
        reworkSuccessful:'返工成功',
        transferSuccessful:'调拨成功',
        reviewSuccessful:'审核成功',
        invalidSuccessfully:'返库成功',
        reverseReviewSuccessful:'反审成功',
        confirmWithdrawal:'确认领出',
        pickingOutRecords:'领出记录',
        confirmTransfer:'确认调拨',
        transferRecords:'调拨记录',
        reworkConfirmation:'返工确认',
        reworkRecords:'返工记录',
        pleaseSelectTheTypeOfWithdrawal:'请选择领出类型',
        pleaseSelectTheTypeOfRework:'请选择返工类型',
        receivedQuantity:'领出数量',
        reworkQuantity:'返工数量',
        transferQuantity:'调拨数量',
        receivedReworkedQuantity:'领出/返工数量',
        inventoryQuantity:'库存数量',
        availableQuantity:'可用数量',
        newOrderNumber:'新订单序号',
        newOrderId:'新订单号',
        transferOrderNumber:'调拨单号',
        operationOrderNumber:'操作单号',
        inventoryArea:'库存区域',
        dataVerificationFailed:'数据校验失败',
        unselectedData:'未选中数据',
        pleaseEnterAPositiveInteger:'请输入正整数',
        pleaseEnterTheOrderIdForTheTransfer:'请输入调拨的订单号',
        pleaseEnterTheOrderNumberForTheTransfer:'请输入调拨的订单序号',
        pheTransferQuantityCannotBeGreaterThanTheOrderQuantity:'调拨数量不能大于订单数',
        transferQuantityCannotBeEmptyOr0:'调拨数量不能为空或者是0',
        theClaimedQuantityCannotBeGreaterThanTheOrderQuantity:'领出数量不能大于订单数',
        claimedQuantityCannotBeEmptyOr0:'领出数量不能为空或者是0',
        theReworkQuantityCannotBeGreaterThanTheOrderQuantity:'返工数量不能大于订单数',
        reworkQuantityCannotBeEmptyOr0:'返工数量不能为空或者是0',
        storageTime:'入库时间',
        outboundTime:'出库时间',
        modificationTime:'修改时间',
        productionDate:'制单日期',
        statementDate:'报表日期',
        approvedDate:'审核日期',
        creator:'制单人',
        reviewed:'审核人',
        documentStatus:'单据状态',
        status:'状态',
        totalNumberOfOrders :'订单总数',
        quantityAlreadyInStock:'已入数量',
        totalArea:'总面积',
        singlePieceArea:'单片面积',
        perimeter:'周长',
        returnToWarehouse:'返库',
    },
    customer:{
        pleaseEnterTheCustomerName:'请输入客户名称',
        pleaseEnterCustomerLevel:"请输入客户等级 ",
        pleaseEnterTheAmountOfFunds:'请输入金额额度',
        pleaseEnterTheContactAddress:"请输入联系地址 ",
        pleaseEnterTheContactPerson:"请输入联系人 ",
        pleaseEnterTheContactPhoneNumber:"请输入联系电话",
        customerGrade:'客户等级',
        moneyLimit:"金额额度 ",
        address:"地址 ",
        contacts:'联系人',
        telephone:"联系电话 ",
        customerNumber:'客户编号',
        customerName:"客户名称 ",
        customerHomePage:'客户首页',
        increaseCustomers:'客户新增',
        resetting:'重置',
    },
    delivery:{
        delivery:'发货',
        place :'下单',
        technology:'工艺',
        produce:'生产',
        traveler:'流程卡',
        warehousing:'入库',
        unpaidQuantity:"未发数量 ",
        availableStock:'可用库存',
        deliveryQuantity:'发货数量',
        pleaseEnterTheAmountOfFunds:'请输入项目名称',
        pleaseSelectPaymentTerms:"请选择付款条件 ",
        pleaseEnterThePaymentMethod:"请输入收款方式 ",
        pleaseSelectTheSameCustomerOrder:'请选择相同的客户订单',
        deliveryNoteSubmittedSuccessfully:"发货单提交成功",
        pleaseEnterANumericalValueGreaterThanOrEqualTo0:'请输入大于等于0的数值',
        theShipmentQuantityCannotBeGreaterThanTheInventoryQuantity:"发货数量不能大于库存数 ",
        theShipmentQuantityCannotBeEmptyOr0:"发货数量不能为空或者是0 ",
        paymentTerms:'付款条件',
        paymentDate:"收款日期 ",
        selectDate:'选择日期',
        paymentMethod:"收款方式 ",
        shippingAddress:'送货地址',
        deliveryReportDate:'发货报表日期',
        shipper:"发货员 ",
        shippingHomepage:'发货首页',
        orderShipment:"订单发货 ",
        deliveryNoteId:'发货单号',
        deliveryNoteNumber:'发货序号',
        deliveryDate:"发货日期 ",
    },
    replenish:{
        patchManagement:'补片管理',
        addPatches:"补片新增 ",
        printPatches:'补片打印',
        patchNumber:'补片单号',
        mark:'标记',
        sliceMarking:'片标记',
    },
    rework:{
        reworkManagement:'返工管理',
        addRework:"返工新增 ",
        printRework:'返工打印',
        reworkNumber:'返工单号',
        reworkTeam:'返工班组',
        reasonForRework:"返工原因 ",
        reworkProcess:'返工工序',
        reworkType:'返工类型',
        reworkArea:'返工面积',
        PleaseSelectAReworkTeam:'请选择返工班组',
        TheReworkQuantityCannotBeGreaterThanTheSecondBreakQuantity:'返工数量不能大于次破数量',
        reworkQuantityCannotBeEmptyOr0:'返工数量不能为空或者是0',
    }
}
north-glass-erp/northglass-erp/src/views/mm/mainProductStock/CreateProductStock.vue
@@ -7,6 +7,10 @@
import VXETable from "vxe-table";
import useUserInfoStore from "@/stores/userInfo";
import {ElMessage} from "element-plus";
import { useI18n } from 'vue-i18n'
//语言获取
const { t } = useI18n()
const userStore = useUserInfoStore()
const username = userStore.user.userName
@@ -196,28 +200,27 @@
  },//表头参数
  columns:[
    {type:'expand',fixed:"left",slots: { content:'content' },width: '60'},
    { type: 'checkbox',fixed:"left", title: '选择', width: '80' },
    { type: 'seq',fixed:"left", title: '自序', width: '80' },
    // {title: '操作', width: '220', slots: { default: 'button_slot' },fixed:"left"},
    {field: 'order.orderId', width: '150',title: '销售单号', showOverflow:"ellipsis" ,filters:[{ data: '' }],slots: { filter: 'num1_filter' }},
    {field: 'orderDetail.buildingNumber', width: '120',title: '楼号',filters:[{ data: '' }],slots: { filter: 'num1_filter' }},
    {field: 'orderDetail.productId',width: '100', title: '产品编号', filters:[{ data: '' }],showOverflow:"ellipsis",slots: { filter: 'num1_filter' }},
    {field: 'orderDetail.productName',width: '100', title: '产品名称', filters:[{ data: '' }],slots: { filter: 'num1_filter' }},
    {field: 'orderDetail.width', width: '100',title: '宽度', filters:[{ data: '' }],slots: { filter: 'num1_filter' }},
    {field: 'orderDetail.height',width: '100', title: '高度', filters:[{ data: '' }],slots: { filter: 'num1_filter' }},
    {field: 'order.creater', width: '100',title: '业务员', filters:[{ data: '' }],slots: { filter: 'num1_filter' }},
    {field: 'order.project', width: '100',title: '项目名称', filters:[{ data: '' }],slots: { filter: 'num1_filter' }},
    {field: 'orderNumber',width: '140', title: '订序', filters:[{ data: '' }],slots: { filter: 'num1_filter' }},
    {field: 'orderDetail.quantity',width: '140', title: '订单总数', filters:[{ data: '' }],slots: { filter: 'num1_filter' }},
    {field: 'inventoryQuantity',width: '100', title: '完工数量', filters:[{ data: '' }],slots: { filter: 'num1_filter' }},
    {field: 'order.area',width: '140', title: '面积', filters:[{ data: '' }],slots: { filter: 'num1_filter' }},
    {field: 'processId',width: '100', title: '流程卡号', filters:[{ data: '' }],slots: { filter: 'num1_filter' }},
    {field: 'receivedQuantity',width: '100', title: '已入数量', filters:[{ data: '' }],slots: { filter: 'num1_filter' }},
    {field: 'order.batch',width: '100', title: '批次', filters:[{ data: '' }],slots: { filter: 'num1_filter' }},
    { type: 'checkbox',fixed:"left", title: t('basicData.check'), width: '80' },
    { type: 'seq',fixed:"left", title: t('basicData.Number'), width: '80' },
    {field: 'order.orderId', width: '150',title: t('order.orderId'), showOverflow:"ellipsis" ,filters:[{ data: '' }],slots: { filter: 'num1_filter' }},
    //{field: 'orderDetail.buildingNumber', width: '120',title: '楼号',filters:[{ data: '' }],slots: { filter: 'num1_filter' }},
    {field: 'orderDetail.productId',width: '100', title: t('order.productId'), filters:[{ data: '' }],showOverflow:"ellipsis",slots: { filter: 'num1_filter' }},
    {field: 'orderDetail.productName',width: '100', 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: 'order.creater', width: '100',title: t('order.salesman'), filters:[{ data: '' }],slots: { filter: 'num1_filter' }},
    {field: 'order.project', width: '100',title: t('order.project'), filters:[{ data: '' }],slots: { filter: 'num1_filter' }},
    {field: 'orderNumber',width: '140', title: t('order.OrderNum'), filters:[{ data: '' }],slots: { filter: 'num1_filter' }},
    {field: 'orderDetail.quantity',width: '140', title: t('productStock.totalNumberOfOrders'), filters:[{ data: '' }],slots: { filter: 'num1_filter' }},
    {field: 'inventoryQuantity',width: '100', title: t('productStock.completedQuantity'), filters:[{ data: '' }],slots: { filter: 'num1_filter' }},
    {field: 'order.area',width: '140', title: t('order.area'), filters:[{ data: '' }],slots: { filter: 'num1_filter' }},
    {field: 'processId',width: '100', title: t('processCard.processId'), filters:[{ data: '' }],slots: { filter: 'num1_filter' }},
    {field: 'receivedQuantity',width: '100', title: t('productStock.quantityAlreadyInStock'), filters:[{ data: '' }],slots: { filter: 'num1_filter' }},
    {field: 'order.batch',width: '100', title: t('order.batch'), filters:[{ data: '' }],slots: { filter: 'num1_filter' }},
  ],//表头按钮
  toolbarConfig: {
    buttons: [{
      'name': '确认入库',status: 'primary',
      'name': t('productStock.confirmReceiptOfGoods'),status: 'primary',
      'code':'add'
    }
      ],
@@ -232,7 +235,7 @@
    return[
      columns.map((column, columnIndex) => {
        if (columnIndex === 0) {
          return `合计`
          return t('basicData.total')
        }
        return ''
@@ -265,7 +268,7 @@
              request.post("/FinishedGoodsInventory/addSelectWarehousing",flowData.value).then((res) => {
                if(res.code==200){
                  ElMessage.success("入库成功")
                  ElMessage.success(t('productStock.receivedSuccessfully'))
                  router.push({path:'/main/productStock/CreateProductStock',query:{random:Math.random()}})
                }else{
                  ElMessage.warning(res.msg)
@@ -289,9 +292,9 @@
<template>
  <div class="main-div-customer">
    <div id="selectForm">
        <el-input style="width: 200px" v-model="storageRegion" class="m-2" placeholder="请输入库位">
        <el-input style="width: 200px" v-model="storageRegion" class="m-2" :placeholder="$t('productStock.pleaseEnterTheStorageLocation')">
      </el-input>
        <el-input style="width: 200px" v-model="remark" class="m-2" placeholder="请输入备注">
        <el-input style="width: 200px" v-model="remark" class="m-2" :placeholder="$t('productStock.pleaseEnterANote')">
        </el-input>
north-glass-erp/northglass-erp/src/views/mm/mainProductStock/FinishedGoodsIssue.vue
@@ -10,6 +10,10 @@
import useUserInfoStore from "@/stores/userInfo";
import {ElMessage} from "element-plus";
import {addListener,toolbarButtonClickEvent} from "@/hook/mouseMove";
import { useI18n } from 'vue-i18n'
//语言获取
const { t } = useI18n()
const userStore = useUserInfoStore()
const username = userStore.user.userName
@@ -38,17 +42,17 @@
          if (selectRecords.length > 0) {
            const errMap = await $grid.validate(selectRecords)
            if (errMap) {
              ElMessage.warning("数据校验失败")
              ElMessage.warning(t('productStock.dataVerificationFailed'))
              return
            }
          } else {
            ElMessage.warning("未选中数据")
            ElMessage.warning(t('productStock.unselectedData'))
            return
          }
          const operatetype = operateType._rawValue
          if(operatetype === null || operatetype === undefined || operatetype === ''){
            ElMessage.warning("请选择领出类型")
            ElMessage.warning(t('productStock.pleaseSelectTheTypeOfWithdrawal'))
            return
          }
@@ -63,7 +67,7 @@
          })
          request.post("/FinishedGoodsInventory/updateFinishedGoodsInventoryTakeOut",flowData.value).then((res) => {
            if(res.code==200){
              ElMessage.success("领出成功")
              ElMessage.success(t('productStock.successfullyRetrieved'))
              router.push({path:'/main/productStock/FinishedGoodsIssue',query:{random:Math.random()}})
            }else{
              ElMessage.warning(res.msg)
@@ -260,7 +264,7 @@
    body: {
      options: [
        [
          { code: 'copyChecked', name: '选中相同', prefixIcon: 'vxe-icon-copy', visible: true, disabled: false },
          { code: 'copyChecked', name: t('basicData.selectSame'), prefixIcon: 'vxe-icon-copy', visible: true, disabled: false },
        ]
      ]
    }
@@ -282,29 +286,29 @@
  },//表头参数
  columns:[
    {type:'expand',fixed:"left",slots: { content:'content' },width: '50'},
    { type: 'checkbox',fixed:"left", title: '选择', width: '80' },
    { type: 'seq',fixed:"left", title: '自序', width: '80' },
    {field: 'finishedGoodsInventory.orderId', width: '150',title: '销售单号',showOverflow:"ellipsis" ,filters:[{ data: '' }],slots: { filter: 'num1_filter' }},
    {field: 'order.project', width: '150',title: '项目名称',filters:[{ data: '' }],slots: { filter: 'num1_filter' }},
    {field: 'productId',width: '150', title: '产品编号', filters:[{ data: '' }],slots: { filter: 'num1_filter' }},
    {field: 'productName', width: '150',title: '产品名称', filters:[{ data: '' }],slots: { filter: 'num1_filter' }},
    {field: 'finishedGoodsInventory.quantityAvailable',width: '140', title: '数量', filters:[{ data: '' }],slots: { filter: 'num1_filter' }},
    {field: 'quantity',width: '140', title: '领出数量',editRender: { name: 'input', attrs: { placeholder: '' } }},
    {field: 'order.customerId', width: '100',title: '客户编号', filters:[{ data: '' }],slots: { filter: 'num1_filter' }},
    {field: 'order.customerName',width: '150', title: '客户名称', filters:[{ data: '' }],slots: { filter: 'num1_filter' }},
    {field: 'width', width: '100',title: '宽度', filters:[{ data: '' }],slots: { filter: 'num1_filter' }},
    {field: 'height',width: '100', title: '高度', filters:[{ data: '' }],slots: { filter: 'num1_filter' }},
    {field: 'finishedGoodsInventory.actualSignalArea',width: '140', title: '单片面积', filters:[{ data: '' }],slots: { filter: 'num1_filter' }},
    {field: 'finishedGoodsInventory.area',width: '150', title: '总面积', filters:[{ data: '' }],slots: { filter: 'num1_filter' }},
    {field: 'finishedGoodsInventory.storageRegion',width: '100', title: '库存区域', filters:[{ data: '' }],slots: { filter: 'num1_filter' }},
    { type: 'checkbox',fixed:"left", title: t('basicData.check'), width: '80' },
    { type: 'seq',fixed:"left", title: t('basicData.Number'), width: '80' },
    {field: 'finishedGoodsInventory.orderId', width: '150',title: t('order.orderId'),showOverflow:"ellipsis" ,filters:[{ data: '' }],slots: { filter: 'num1_filter' }},
    {field: 'order.project', width: '150',title: t('order.project'),filters:[{ data: '' }],slots: { filter: 'num1_filter' }},
    {field: 'productId',width: '150', title: t('order.productId'), filters:[{ data: '' }],slots: { filter: 'num1_filter' }},
    {field: 'productName', width: '150',title: t('order.productId'), filters:[{ data: '' }],slots: { filter: 'num1_filter' }},
    {field: 'finishedGoodsInventory.quantityAvailable',width: '140', title: t('order.quantity'), filters:[{ data: '' }],slots: { filter: 'num1_filter' }},
    {field: 'quantity',width: '140', title: t('productStock.receivedQuantity'),editRender: { name: 'input', attrs: { placeholder: '' } }},
    {field: 'order.customerId', width: '100',title: t('customer.customerNumber'), filters:[{ data: '' }],slots: { filter: 'num1_filter' }},
    {field: 'order.customerName',width: '150', title: t('customer.customerName'), filters:[{ data: '' }],slots: { filter: 'num1_filter' }},
    {field: 'width', width: '100',title: t('order.width'), filters:[{ data: '' }],slots: { filter: 'num1_filter' }},
    {field: 'height',width: '100', title: t('order.height'), filters:[{ data: '' }],slots: { filter: 'num1_filter' }},
    {field: 'finishedGoodsInventory.actualSignalArea',width: '140', title: t('productStock.singlePieceArea'), filters:[{ data: '' }],slots: { filter: 'num1_filter' }},
    {field: 'finishedGoodsInventory.area',width: '150', title: t('productStock.totalArea'), filters:[{ data: '' }],slots: { filter: 'num1_filter' }},
    {field: 'finishedGoodsInventory.storageRegion',width: '100', title: t('productStock.inventoryArea'), filters:[{ data: '' }],slots: { filter: 'num1_filter' }},
  ],//表头按钮
  toolbarConfig: {
    buttons: [{
      'name': '确认领出',
      'name': t('productStock.confirmWithdrawal'),
      'code': 'verify',
      status: 'primary'
    },{
      'name': '领出记录','code':'out',
      'name': t('productStock.pickingOutRecords'),'code':'out',
    }],
    /*import: false,
   export: true,
@@ -317,7 +321,7 @@
    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)
@@ -334,13 +338,13 @@
  quantity: [{
    validator (e) {
      if (e.row.quantity > e.row.finishedGoodsInventory.quantityAvailable) {
        return new Error('领出数量不能大于订单数')
        return new Error(t('productStock.theClaimedQuantityCannotBeGreaterThanTheOrderQuantity'))
      }else if (e.row.quantity ==="") {
        return new Error('领出数量不能为空或者是0')
        return new Error(t('productStock.claimedQuantityCannotBeEmptyOr0'))
      }
      const regex = /^[1-9]\d*$/g
      if ( !regex.test(e.row.quantity) ) {
        return new Error('请输入正整数')
        return new Error(t('productStock.pleaseEnterAPositiveInteger'))
      }
    }
@@ -359,11 +363,11 @@
<template>
  <div class="main-div-customer">
    <vxe-select v-model="operateType" placeholder="请选择领出类型">
    <vxe-select style="width: 260px" v-model="operateType" :placeholder="$t('productStock.pleaseSelectTheTypeOfWithdrawal')">
      <vxe-option v-for="(item,index) in takeOut" :key="index" :value="item.operateTypeName" :label="item.operateTypeName" ></vxe-option>
    </vxe-select>
    &nbsp;
    <vxe-input v-model="remarks" placeholder="备注"></vxe-input>
    <vxe-input v-model="remarks" :placeholder="$t('productStock.pleaseEnterANote')"></vxe-input>
    <vxe-grid
        max-height="100%"
@@ -386,12 +390,7 @@
        </ul>
      </template>
      <!--左边固定显示的插槽-->
      <template #button_slot="{ row }">
        <el-button @click="getTableRow(row,'edit')" link type="primary" size="small">订单调拨</el-button>
        <el-button @click="getTableRow(row,'out')" link type="primary" size="small">成品领出</el-button>
        <el-button @click="getTableRow(row,'back')" link type="primary" size="small">成品领出</el-button>
      </template>
      <template #num1_filter="{ column, $panel }">
        <div>
north-glass-erp/northglass-erp/src/views/mm/mainProductStock/FinishedProductOut.vue
@@ -6,6 +6,10 @@
import deepClone from "@/utils/deepClone"
import useUserInfoStore from "@/stores/userInfo";
import {ElMessage} from "element-plus";
import { useI18n } from 'vue-i18n'
//语言获取
const { t } = useI18n()
const userStore = useUserInfoStore()
const username = userStore.user.userName
@@ -196,31 +200,30 @@
  },//表头参数
  columns:[
    {type:'expand',fixed:"left",slots: { content:'content' },width: '60'},
    { type: 'checkbox',fixed:"left", title: '选择', width: '80' },
    { type: 'seq',fixed:"left", title: '自序', width: '80' },
    {title: '操作', width: '80', slots: { default: 'button_slot' },fixed:"left"},
    {field: 'deliveryDetail.deliveryId', width:'150', title: '送货单号',filters:[{ data: '' }],slots: { filter: 'num1_filter' } },
    {field: 'deliveryDetail.orderNumber', width:'150', title: '送货序号 ',filters:[{ data: '' }],slots: { filter: 'num1_filter' } },
    {field: 'deliveryDetail.orderId', width: '150',title: '销售单号',showOverflow:"ellipsis" ,filters:[{ data: '' }],slots: { filter: 'num1_filter' }},
    {field: 'deliveryDetail.orderNumber',width: '100', title: '订单序号', filters:[{ data: '' }],slots: { filter: 'num1_filter' }},
    {field: 'order.project', width: '120',title: '项目名称',filters:[{ data: '' }],slots: { filter: 'num1_filter' }},
    {field: 'productId', width: '100',title: '产品编号', filters:[{ data: '' }],slots: { filter: 'num1_filter' }},
    {field: 'productName',width: '200', title: '产品名称', filters:[{ data: '' }],slots: { filter: 'num1_filter' }},
    {field: 'deliveryNum',width: '100', title: '发货数量', filters:[{ data: '' }],slots: { filter: 'num1_filter' }},
    {field: 'warehouseNum',width: '140', title: '库存数量', filters:[{ data: '' }],slots: { filter: 'num1_filter' }},
    {field: 'delivery.customerName',width: '200', title: '客户名称', filters:[{ data: '' }],slots: { filter: 'num1_filter' }},
    {field: 'width', width: '100',title: '宽度', filters:[{ data: '' }],slots: { filter: 'num1_filter' }},
    {field: 'height',width: '100', title: '高度', filters:[{ data: '' }],slots: { filter: 'num1_filter' }},
    {field: 'delivery.area',width: '100', title: '总面积', filters:[{ data: '' }],slots: { filter: 'num1_filter' }},
    {field: 'buildingNumber',width: '100', title: '楼层编号', filters:[{ data: '' }],slots: { filter: 'num1_filter' }},
    {field: 'delivery.creator',width: '100', title: '业务员', filters:[{ data: '' }],slots: { filter: 'num1_filter' }},
    {field: 'deliveryDetail.createTime',width: '140', title: '报表日期', filters:[{ data: '' }],slots: { filter: 'num1_filter' }},
    //{field: 'Status',width: '100', title: '状态', filters:[{ data: '' }],slots: { filter: 'num1_filter' }},
    {field: 'deliveryDetail.deliveryDetailRemakes',width: '80', title: '备注', filters:[{ data: '' }],slots: { filter: 'num1_filter' }},
    { type: 'checkbox',fixed:"left", title: t('basicData.check'), width: '80' },
    { type: 'seq',fixed:"left", title: t('basicData.Number'), width: '80' },
    {title: t('basicData.operate'), width: '80', slots: { default: 'button_slot' },fixed:"left"},
    {field: 'deliveryDetail.deliveryId', width:'150', title:  t('delivery.deliveryNoteId'),filters:[{ data: '' }],slots: { filter: 'num1_filter' } },
    {field: 'deliveryDetail.orderNumber', width:'150', title:  t('delivery.deliveryNoteNumber'),filters:[{ data: '' }],slots: { filter: 'num1_filter' } },
    {field: 'deliveryDetail.orderId', width: '150',title:  t('order.orderId'),showOverflow:"ellipsis" ,filters:[{ data: '' }],slots: { filter: 'num1_filter' }},
    {field: 'deliveryDetail.orderNumber',width: '100', title: t('order.OrderNum'), filters:[{ data: '' }],slots: { filter: 'num1_filter' }},
    {field: 'order.project', width: '120',title: t('order.project'),filters:[{ data: '' }],slots: { filter: 'num1_filter' }},
    {field: 'productId', width: '100',title: t('order.productId'), filters:[{ data: '' }],slots: { filter: 'num1_filter' }},
    {field: 'productName',width: '200', title: t('order.product'), filters:[{ data: '' }],slots: { filter: 'num1_filter' }},
    {field: 'deliveryNum',width: '100', title: t('delivery.deliveryQuantity'), filters:[{ data: '' }],slots: { filter: 'num1_filter' }},
    {field: 'warehouseNum',width: '140', title: t('productStock.inventoryQuantity'), filters:[{ data: '' }],slots: { filter: 'num1_filter' }},
    {field: 'delivery.customerName',width: '200', title: t('customer.customerName'), filters:[{ data: '' }],slots: { filter: 'num1_filter' }},
    {field: 'width', width: '100',title: t('order.width'), filters:[{ data: '' }],slots: { filter: 'num1_filter' }},
    {field: 'height',width: '100', title: t('order.height'), filters:[{ data: '' }],slots: { filter: 'num1_filter' }},
    {field: 'delivery.area',width: '100', title: t('productStock.totalArea'), filters:[{ data: '' }],slots: { filter: 'num1_filter' }},
    //{field: 'buildingNumber',width: '100', title: '楼层编号', filters:[{ data: '' }],slots: { filter: 'num1_filter' }},
    {field: 'delivery.creator',width: '100', title: t('order.salesman'), filters:[{ data: '' }],slots: { filter: 'num1_filter' }},
    {field: 'deliveryDetail.createTime',width: '140', title: t('productStock.statementDate'), filters:[{ data: '' }],slots: { filter: 'num1_filter' }},
    {field: 'deliveryDetail.deliveryDetailRemakes',width: '80', title: t('productStock.remarks'), filters:[{ data: '' }],slots: { filter: 'num1_filter' }},
  ],//表头按钮
  toolbarConfig: {
    buttons: [{
      'name': '确认出库',
      'name': t('productStock.confirmOutbound'),
      status: 'primary',
      'code':'ver'
    }],
@@ -237,7 +240,7 @@
    return[
      columns.map((column, columnIndex) => {
        if (columnIndex === 0) {
          return `合计`
          return t('basicData.total')
        }
        return ''
@@ -259,6 +262,11 @@
          if ($table) {
            const selectRecords = $table.getCheckboxRecords()
            if (selectRecords.length <= 0) {
              ElMessage.warning(t('productStock.unselectedData'))
              return
            }
            let orderDetailData = ref({
              userId:userid,
              userName:username,
@@ -267,7 +275,7 @@
            request.post("/FinishedGoodsInventory/addDeliveryDetail",orderDetailData.value).then((res) => {
              if(res.code==200){
                ElMessage.success("出库成功")
                ElMessage.success(t('productStock.deliverySuccessful'))
                router.push({path:'/main/productStock/FinishedProductOut',query:{random:Math.random()}})
              }else{
                ElMessage.warning(res.msg)
@@ -315,7 +323,7 @@
      <!--左边固定显示的插槽-->
      <template #button_slot="{ row }">
        <el-button @click="getTableRow(row,'edit')" link type="primary" size="small">编辑</el-button>
        <el-button @click="getTableRow(row,'edit')" link type="primary" size="small">{{ $t('basicData.edit') }}</el-button>
      </template>
north-glass-erp/northglass-erp/src/views/mm/mainProductStock/FinishedProductRework.vue
@@ -11,6 +11,10 @@
import useUserInfoStore from "@/stores/userInfo";
import {ElMessage} from "element-plus";
import {addListener,toolbarButtonClickEvent} from "@/hook/mouseMove";
import { useI18n } from 'vue-i18n'
//语言获取
const { t } = useI18n()
const userStore = useUserInfoStore()
const username = userStore.user.userName
const userid = userStore.user.userId
@@ -38,17 +42,17 @@
            if (selectRecords.length > 0) {
              const errMap = await $grid.validate(selectRecords)
              if (errMap) {
                ElMessage.warning("数据校验失败")
                ElMessage.warning(t('productStock.dataVerificationFailed'))
                return
              }
            } else {
              ElMessage.warning("未选中数据")
              ElMessage.warning(t('productStock.unselectedData'))
              return
            }
          const operatetype = operateType._rawValue
          if(operatetype === null || operatetype === undefined || operatetype === ''){
            ElMessage.warning("请选择返工类型")
            ElMessage.warning(t('productStock.pleaseSelectTheTypeOfRework'))
            return
          }
@@ -63,7 +67,7 @@
          })
          request.post("/FinishedGoodsInventory/updateFinishedGoodsInventoryRework", flowData.value).then((res) => {
            if (res.code == 200) {
              ElMessage.success("返工成功")
              ElMessage.success(t('productStock.reworkSuccessful'))
              router.push({path:'/main/productStock/FinishedProductRework',query:{random:Math.random()}})
            } else {
              ElMessage.warning(res.msg)
@@ -258,7 +262,7 @@
    body: {
      options: [
        [
          { code: 'copyChecked', name: '选中相同', prefixIcon: 'vxe-icon-copy', visible: true, disabled: false },
          { code: 'copyChecked', name: t('basicData.selectSame'), prefixIcon: 'vxe-icon-copy', visible: true, disabled: false },
        ]
      ]
    }
@@ -280,30 +284,30 @@
  },//表头参数
  columns:[
    {type:'expand',fixed:"left",slots: { content:'content' },width: '50'},
    { type: 'checkbox',fixed:"left", title: '选择', width: '80' },
    { type: 'seq',fixed:"left", title: '自序', width: '80' },
    {field: 'finishedGoodsInventory.orderId', width: '150',title: '销售单号',showOverflow:"ellipsis" ,filters:[{ data: '' }],slots: { filter: 'num1_filter' }},
    {field: 'order.project', width: '150',title: '项目名称',filters:[{ data: '' }],slots: { filter: 'num1_filter' }},
    {field: 'productId',width: '150', title: '产品编号', filters:[{ data: '' }],slots: { filter: 'num1_filter' }},
    {field: 'productName', width: '150',title: '产品名称', filters:[{ data: '' }],slots: { filter: 'num1_filter' }},
    {field: 'finishedGoodsInventory.quantityAvailable',width: '140', title: '数量', filters:[{ data: '' }],slots: { filter: 'num1_filter' }},
    {field: 'quantity',width: '140', title: '返工数量',editRender: { name: 'input', attrs: { placeholder: '' } }},
    {field: 'order.customerId', width: '100',title: '客户编号', filters:[{ data: '' }],slots: { filter: 'num1_filter' }},
    {field: 'order.customerName',width: '150', title: '客户名称', filters:[{ data: '' }],slots: { filter: 'num1_filter' }},
    {field: 'width', width: '100',title: '宽度', filters:[{ data: '' }],slots: { filter: 'num1_filter' }},
    {field: 'height',width: '100', title: '高度', filters:[{ data: '' }],slots: { filter: 'num1_filter' }},
      {field: 'finishedGoodsInventory.actualSignalArea',width: '140', title: '单片面积', filters:[{ data: '' }],slots: { filter: 'num1_filter' }},
    {field: 'finishedGoodsInventory.area',width: '150', title: '总面积', filters:[{ data: '' }],slots: { filter: 'num1_filter' }},
    {field: 'finishedGoodsInventory.storageRegion',width: '100', title: '库存区域', filters:[{ data: '' }],slots: { filter: 'num1_filter' }},
    { type: 'checkbox',fixed:"left", title: t('basicData.check'), width: '80' },
    { type: 'seq',fixed:"left", title: t('basicData.Number'), width: '80' },
    {field: 'finishedGoodsInventory.orderId', width: '150',title: t('order.orderId'),showOverflow:"ellipsis" ,filters:[{ data: '' }],slots: { filter: 'num1_filter' }},
    {field: 'order.project', width: '150',title: t('order.project'),filters:[{ data: '' }],slots: { filter: 'num1_filter' }},
    {field: 'productId',width: '150', title: t('order.productId'), filters:[{ data: '' }],slots: { filter: 'num1_filter' }},
    {field: 'productName', width: '150',title: t('order.product'), filters:[{ data: '' }],slots: { filter: 'num1_filter' }},
    {field: 'finishedGoodsInventory.quantityAvailable',width: '140', title: t('order.quantity'), filters:[{ data: '' }],slots: { filter: 'num1_filter' }},
    {field: 'quantity',width: '140', title: t('productStock.reworkQuantity'),editRender: { name: 'input', attrs: { placeholder: '' } }},
    {field: 'order.customerId', width: '100',title: t('customer.customerNumber'), filters:[{ data: '' }],slots: { filter: 'num1_filter' }},
    {field: 'order.customerName',width: '150', title: t('customer.customerName'), filters:[{ data: '' }],slots: { filter: 'num1_filter' }},
    {field: 'width', width: '100',title: t('order.width'), filters:[{ data: '' }],slots: { filter: 'num1_filter' }},
    {field: 'height',width: '100', title: t('order.height'), filters:[{ data: '' }],slots: { filter: 'num1_filter' }},
    {field: 'finishedGoodsInventory.actualSignalArea',width: '140', title: t('productStock.singlePieceArea'), filters:[{ data: '' }],slots: { filter: 'num1_filter' }},
    {field: 'finishedGoodsInventory.area',width: '150', title: t('productStock.totalArea'), filters:[{ data: '' }],slots: { filter: 'num1_filter' }},
    {field: 'finishedGoodsInventory.storageRegion',width: '100', title:t('productStock.inventoryArea'), filters:[{ data: '' }],slots: { filter: 'num1_filter' }},
  ],//表头按钮
  toolbarConfig: {
    buttons: [{
      'name': '返工确认',
      'name': t('productStock.reworkConfirmation'),
      status: 'primary',
      'code':'ver'
    },
      {
      'name': '返工记录',
      'name': t('productStock.reworkRecords'),
        'code':'rework'
    }],
    /*import: false,
@@ -317,7 +321,7 @@
    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)
@@ -334,13 +338,13 @@
  quantity: [{
    validator (e) {
      if (e.row.quantity > e.row.finishedGoodsInventory.quantityAvailable) {
        return new Error('返工数量不能大于订单数')
        return new Error(t('productStock.theReworkQuantityCannotBeGreaterThanTheOrderQuantity'))
      }else if (e.row.quantity ==="") {
        return new Error('返工数量不能为空或者是0')
        return new Error(t('productStock.reworkQuantityCannotBeEmptyOr0'))
      }
      const regex = /^[1-9]\d*$/g
      if ( !regex.test(e.row.quantity) ) {
        return new Error('请输入正整数')
        return new Error(t('productStock.pleaseEnterAPositiveInteger'))
      }
    }
@@ -356,11 +360,11 @@
<template>
  <div class="main-div-customer">
    <vxe-select v-model="operateType" placeholder="请选择返工类型">
    <vxe-select v-model="operateType" :placeholder="$t('productStock.pleaseSelectTheTypeOfRework')">
      <vxe-option v-for="(item,index) in takeOut" :key="index" :value="item.operateTypeName" :label="item.operateTypeName" ></vxe-option>
    </vxe-select>
    &nbsp;
    <vxe-input v-model="remarks" placeholder="备注"></vxe-input>
    <vxe-input v-model="remarks" :placeholder="$t('productStock.pleaseEnterANote')"></vxe-input>
    <vxe-grid
        max-height="100%"
@@ -383,12 +387,7 @@
        </ul>
      </template>
      <!--左边固定显示的插槽-->
      <template #button_slot="{ row }">
        <el-button @click="getTableRow(row,'edit')" link type="primary" size="small">订单调拨</el-button>
        <el-button @click="getTableRow(row,'out')" link type="primary" size="small">成品领出</el-button>
        <el-button @click="getTableRow(row,'back')" link type="primary" size="small">成品返工</el-button>
      </template>
      <template #num1_filter="{ column, $panel }">
        <div>
north-glass-erp/northglass-erp/src/views/mm/mainProductStock/OrderAllocation.vue
@@ -11,6 +11,10 @@
import useUserInfoStore from "@/stores/userInfo";
import {ElMessage} from "element-plus";
import {addListener,toolbarButtonClickEvent} from "@/hook/mouseMove";
import { useI18n } from 'vue-i18n'
//语言获取
const { t } = useI18n()
const userStore = useUserInfoStore()
const username = userStore.user.userName
@@ -175,7 +179,7 @@
    body: {
      options: [
        [
          { code: 'copyChecked', name: '选中相同', prefixIcon: 'vxe-icon-copy', visible: true, disabled: false },
          { code: 'copyChecked', name: t('basicData.selectSame'), prefixIcon: 'vxe-icon-copy', visible: true, disabled: false },
        ]
      ]
    }
@@ -197,30 +201,30 @@
  },//表头参数
  columns:[
    {type:'expand',fixed:"left",slots: { content:'content' },width: '50'},
    { type: 'checkbox',fixed:"left", title: '选择', width: '80' },
    // { type: 'seq',fixed:"left", title: '自序', width: '80' },
    { type: 'checkbox',fixed:"left", title: t('basicData.check'), width: '80' },
     { type: 'seq',fixed:"left", title: t('basicData.Number'), width: '80' },
    // {title: '操作', width: '80', slots: { default: 'button_slot' },fixed:"left"},
    {field: 'finishedGoodsInventory.orderId', width: '150',title: '销售单号',showOverflow:"ellipsis" ,filters:[{ data: '' }],slots: { filter: 'num1_filter' }},
    {field: 'order.project', width: '120',title: '项目名称',filters:[{ data: '' }],slots: { filter: 'num1_filter' }},
    {field: 'finishedGoodsInventory.orderNumber', width: '120',title: '当前序号',filters:[{ data: '' }],slots: { filter: 'num1_filter' }},
    {field: 'finishedGoodsInventory.quantityAvailable',width: '140', title: '订单数量'},
    {field: 'orderId', width: '150',title: '调拨单号',editRender: { name: 'input', attrs: { placeholder: '' } }, showOverflow:"ellipsis" ,filters:[{ data: '' }],slots: { filter: 'num1_filter' }},
    {field: 'orderNumber', width:'150', title: '新订序', editRender: { name: 'input', attrs: { placeholder: '' } } },
    {field: 'quantity',width: '120', title: '调拨数量',editRender: { name: 'input', attrs: { placeholder: '' } }},
    {field: 'productId', width: '120',title: '产品编号'},
    {field: 'productName',width: '140', title: '产品名称'},
    {field: 'order.customerId', width: '100',title: '客户编号'},
    {field: 'order.customerName',width: '140', title: '客户名称'},
    {field: 'width', width: '100',title: '宽度'},
    {field: 'height',width: '100', title: '高度'},
    {field: 'finishedGoodsInventory.actualSignalArea',width: '140', title: '单片面积'},
    {field: 'finishedGoodsInventory.area',width: '100', title: '总面积'},
    {field: 'finishedGoodsInventory.storageRegion',width: '100', title: '库存区域'},
    {field: 'finishedGoodsInventory.orderId', width: '150',title: t('order.orderId'),showOverflow:"ellipsis" ,filters:[{ data: '' }],slots: { filter: 'num1_filter' }},
    {field: 'order.project', width: '120',title: t('order.project'),filters:[{ data: '' }],slots: { filter: 'num1_filter' }},
    {field: 'finishedGoodsInventory.orderNumber', width: '120',title: t('order.OrderNum'),filters:[{ data: '' }],slots: { filter: 'num1_filter' }},
    {field: 'finishedGoodsInventory.quantityAvailable',width: '140', title: t('productStock.totalNumberOfOrders')},
    {field: 'orderId', width: '150',title: t('productStock.newOrderId'),editRender: { name: 'input', attrs: { placeholder: '' } }, showOverflow:"ellipsis" ,filters:[{ data: '' }],slots: { filter: 'num1_filter' }},
    {field: 'orderNumber', width:'150', title: t('productStock.newOrderNumber'), editRender: { name: 'input', attrs: { placeholder: '' } } },
    {field: 'quantity',width: '120', title: t('productStock.transferQuantity'),editRender: { name: 'input', attrs: { placeholder: '' } }},
    {field: 'productId', width: '120',title: t('order.productId')},
    {field: 'productName',width: '140', title: t('order.product')},
    {field: 'order.customerId', width: '100',title: t('customer.customerNumber')},
    {field: 'order.customerName',width: '140', title: t('customer.customerName')},
    {field: 'width', width: '100',title: t('order.width')},
    {field: 'height',width: '100', title: t('order.height')},
    {field: 'finishedGoodsInventory.actualSignalArea',width: '140', title: t('productStock.singlePieceArea')},
    {field: 'finishedGoodsInventory.area',width: '100', title: t('productStock.totalArea')},
    {field: 'finishedGoodsInventory.storageRegion',width: '100', title: t('productStock.inventoryArea')},
  ],//表头按钮
  toolbarConfig: {
    buttons: [
        {'name': '确认调拨',status: 'primary','code':'edit'},
        {'name': '调拨记录','code':'record'}
        {'name': t('productStock.confirmTransfer'),status: 'primary','code':'edit'},
        {'name': t('productStock.transferRecords'),'code':'record'}
    ],
    /*import: false,
   export: true,
@@ -233,7 +237,7 @@
    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)
@@ -258,11 +262,11 @@
            if (selectRecords.length > 0) {
              const errMap = await $grid.validate(selectRecords)
              if (errMap) {
                ElMessage.warning("数据校验失败")
                ElMessage.warning(t('productStock.dataVerificationFailed'))
                return
              }
            } else {
              ElMessage.warning("未选中数据")
              ElMessage.warning(t('productStock.unselectedData'))
              return
            }
@@ -275,7 +279,7 @@
            request.post("/FinishedGoodsInventory/updateFinishedGoodsInventoryAllocate", flowData.value).then((res) => {
              if (res.code == 200) {
                ElMessage.success("调拨成功")
                ElMessage.success(t('productStock.transferSuccessful'))
                router.push({path:'/main/productStock/OrderAllocation',query:{random:Math.random()}})
              } else {
                ElMessage.warning(res.msg)
@@ -337,21 +341,21 @@
/*数据校验*/
const validRules = ref({
  orderId: [
    { required: true, message: '请输入调拨的订单号' }
    { required: true, message: t('productStock.pleaseEnterTheOrderIdForTheTransfer') }
  ],
  orderNumber: [
    { required: true, message: '请输入调拨的订单序号' }
    { required: true, message: t('productStock.pleaseEnterTheOrderNumberForTheTransfer') }
  ],
  quantity: [{
    validator (e) {
      if (e.row.quantity > e.row.finishedGoodsInventory.quantityAvailable) {
        return new Error('调拨数量不能大于订单数')
        return new Error(t('productStock.theTransferQuantityCannotBeGreaterThanTheOrderQuantity'))
      }else if (e.row.quantity ==="") {
        return new Error('调拨数量不能为空或者是0')
        return new Error(t('productStock.transferQuantityCannotBeEmptyOr0'))
      }
      const regex = /^[1-9]\d*$/g
      if ( !regex.test(e.row.quantity) ) {
        return new Error('请输入正整数')
        return new Error(t('productStock.pleaseEnterAPositiveInteger'))
      }
    }
@@ -393,7 +397,7 @@
      <!--左边固定显示的插槽-->
      <template #button_slot="{ row }">
        <el-button @click="getTableRow(row,'edit')" 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,'out')" link type="primary" size="small">成品领出</el-button>-->
<!--        <el-button @click="getTableRow(row,'back')" link type="primary" size="small">成品返工</el-button>-->
      </template>
north-glass-erp/northglass-erp/src/views/mm/mainProductStock/ProductStock.vue
@@ -5,6 +5,10 @@
import deepClone from "@/utils/deepClone";
import {ElMessage} from "element-plus";
import {useRouter,useRoute,onBeforeRouteUpdate} from "vue-router";
import { useI18n } from 'vue-i18n'
//语言获取
const { t } = useI18n()
const router = useRouter()
@@ -19,11 +23,11 @@
  <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/productStock/ProductStockList' }">库存查询</el-breadcrumb-item>
       <el-breadcrumb-item @click="changeRouter(2)" :class="indexFlag===2?'indexTag':''" :to="{ path: '/main/productStock/CreateProductStock' }">成品入库</el-breadcrumb-item>
       <el-breadcrumb-item @click="changeRouter(3)" :class="indexFlag===3?'indexTag':''" :to="{ path: '/main/productStock/FinishedProductOut' }">成品出库</el-breadcrumb-item>
       <el-breadcrumb-item @click="changeRouter(4)" :class="indexFlag===4?'indexTag':''" :to="{ path: '/main/productStock/FinishedProductReturn' }">订单成品退货</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/productStock/ProductStockList' }" >{{$t('productStock.inventoryQuery')}}</el-breadcrumb-item>
       <el-breadcrumb-item @click="changeRouter(2)" :class="indexFlag===2?'indexTag':''" :to="{ path: '/main/productStock/CreateProductStock' }">{{$t('productStock.finishedProductWarehousing')}}</el-breadcrumb-item>
       <el-breadcrumb-item @click="changeRouter(3)" :class="indexFlag===3?'indexTag':''" :to="{ path: '/main/productStock/FinishedProductOut' }">{{$t('productStock.finishedProductOutbound')}}</el-breadcrumb-item>
       <el-breadcrumb-item @click="changeRouter(4)" :class="indexFlag===4?'indexTag':''" :to="{ path: '/main/productStock/FinishedProductReturn' }">{{$t('productStock.finishedProductOrderReturn')}}</el-breadcrumb-item>
       <el-breadcrumb-item v-show="false" :to="{ path: '/main/order/orderReport' }">{{$t('productStock.reportForms')}}</el-breadcrumb-item>
<!--       <el-breadcrumb-item :to="{ path: '/main/productStock/OrderAllocation' }">订单调拨</el-breadcrumb-item>-->
<!--       <el-breadcrumb-item :to="{ path: '/main/productStock/FinishedGoodsIssue' }">成品领出</el-breadcrumb-item>-->
<!--       <el-breadcrumb-item :to="{ path: '/main/productStock/FinishedProductRework' }">成品返工</el-breadcrumb-item>-->
north-glass-erp/northglass-erp/src/views/mm/mainProductStock/ProductStockList.vue
@@ -5,6 +5,10 @@
import request from "@/utils/request";
import deepClone from "@/utils/deepClone";
import {ElMessage} from "element-plus";
import { useI18n } from 'vue-i18n'
//语言获取
const { t } = useI18n()
let router=useRouter()
let produceList = ref([])
const getTableRow = (row,type) =>{
@@ -181,37 +185,36 @@
  columns:[
    {type:'expand',fixed:"left",slots: { content:'content' },width: '60'},
    // { type: 'checkbox',fixed:"left", title: '选择', width: '80' },
    { type: 'seq',fixed:"left", title: '自序', width: '80' },
    { type: 'seq',fixed:"left", title: t('basicData.Number'), width: '80' },
    // {title: '操作', width: '220', slots: { default: 'button_slot' },fixed:"left"},
    {field: 'orderDetail.orderNumber', width:'150', title: '订单序号', filters:[{ data: '' }],slots: { filter: 'num1_filter' } },
    {field: 'order.orderId', width: '150',title: '销售单号',showOverflow:"ellipsis" ,filters:[{ data: '' }],slots: { filter: 'num1_filter' }},
    {field: 'order.project', width: '120',title: '项目名称',filters:[{ data: '' }],slots: { filter: 'num1_filter' }},
    {field: 'order.orderType', width: '100',title: '订单类型', filters:[{ data: '' }],slots: { filter: 'num1_filter' }},
    {field: 'orderDetail.productName', width: '100',title: '产品名称', filters:[{ data: '' }],slots: { filter: 'num1_filter' }},
    {field: 'orderDetail.productId',width: '100', title: '产品编号', filters:[{ data: '' }],slots: { filter: 'num1_filter' }},
    {field: 'orderDetail.orderNumber', width:'150', title: t('order.OrderNum'), filters:[{ data: '' }],slots: { filter: 'num1_filter' } },
    {field: 'order.orderId', width: '150',title: t('order.orderId'),showOverflow:"ellipsis" ,filters:[{ data: '' }],slots: { filter: 'num1_filter' }},
    {field: 'order.project', width: '120',title: t('order.project'),filters:[{ data: '' }],slots: { filter: 'num1_filter' }},
    {field: 'order.orderType', width: '100',title: t('order.orderType'), filters:[{ data: '' }],slots: { filter: 'num1_filter' }},
    {field: 'orderDetail.productName', width: '100',title: t('order.product'), filters:[{ data: '' }],slots: { filter: 'num1_filter' }},
    {field: 'orderDetail.productId',width: '100', title: t('order.productId'), filters:[{ data: '' }],slots: { filter: 'num1_filter' }},
    {field: 'orderDetail.width', width: '100',title: '宽度',filters:[{ data: '' }],slots: { filter: 'num1_filter' }},
    {field: 'orderDetail.height',width: '100', title: '高度', filters:[{ data: '' }],slots: { filter: 'num1_filter' }},
    {field: 'inventory',width: '140', title: '库存数量', filters:[{ data: '' }],slots: { filter: 'num1_filter' }},
    {field: 'quantityAvailable',width: '140', title: '可用数量', 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: 'inventory',width: '140', title: t('productStock.inventoryQuantity'), filters:[{ data: '' }],slots: { filter: 'num1_filter' }},
    {field: 'quantityAvailable',width: '140', title: t('productStock.availableQuantity'), filters:[{ data: '' }],slots: { filter: 'num1_filter' }},
    {field: 'actualSignalArea',width: '140', title: '实际单片面积', filters:[{ data: '' }],slots: { filter: 'num1_filter' }},
    {field: 'area',width: '100', title: '总面积', filters:[{ data: '' }],slots: { filter: 'num1_filter' }},
    {field: 'actualSignalArea',width: '140', title: t('productStock.singlePieceArea'), filters:[{ data: '' }],slots: { filter: 'num1_filter' }},
    {field: 'area',width: '100', title: t('productStock.totalArea'), filters:[{ data: '' }],slots: { filter: 'num1_filter' }},
    /*{field: 'warehouseNumber',width: '100', title: '仓库编号', filters:[{ data: '' }],slots: { filter: 'num1_filter' }},*/
    {field: 'storageRegion',width: '100', title: '库存区域', filters:[{ data: '' }],slots: { filter: 'num1_filter' }},
    {field: 'status',width: '100', title: '状态', filters:[{ data: '' }],slots: { filter: 'num1_filter' }},
    {field: 'storageRegion',width: '100', title: t('productStock.inventoryArea'), filters:[{ data: '' }],slots: { filter: 'num1_filter' }},
    {field: 'status',width: '100', title: t('productStock.status'), filters:[{ data: '' }],slots: { filter: 'num1_filter' }},
    {field: 'enterStorageTime',width: '140', title: '入库时间', filters:[{ data: '' }],slots: { filter: 'num1_filter' }},
    {field: 'updateTime',width: '140', title: '修改时间', filters:[{ data: '' }],slots: { filter: 'num1_filter' }},
    {field: 'endTime',width: '100', title: '出库时间', filters:[{ data: '' }],slots: { filter: 'num1_filter' }},
    {field: 'remark',width: '80', title: '备注', filters:[{ data: '' }],slots: { filter: 'num1_filter' }},
    {field: 'enterStorageTime',width: '140', title: t('productStock.storageTime'), filters:[{ data: '' }],slots: { filter: 'num1_filter' }},
    {field: 'updateTime',width: '140', title: t('productStock.modificationTime'), filters:[{ data: '' }],slots: { filter: 'num1_filter' }},
    {field: 'endTime',width: '100', title: t('productStock.outboundTime'), filters:[{ data: '' }],slots: { filter: 'num1_filter' }},
    {field: 'remark',width: '80', title: t('productStock.remarks'), filters:[{ data: '' }],slots: { filter: 'num1_filter' }},
  ],//表头按钮
  toolbarConfig: {
    buttons: [
      { 'code' :'issue','name':'订单调拨',status: 'primary'},
      { 'code' :'out','name':'成品领出',status: 'primary'},
      { 'code' :'rework','name':'成品返工',status: 'primary'},
      { 'code' :'issue','name':t('productStock.orderTransfer'),status: 'primary'},
      { 'code' :'out','name':t('productStock.finishedProductPickup'),status: 'primary'},
      { 'code' :'rework','name':t('productStock.finishedProductRework'),status: 'primary'},
    ],
    /*import: false,
@@ -226,7 +229,7 @@
    return[
      columns.map((column, columnIndex) => {
        if (columnIndex === 0) {
          return `合计`
          return t('basicData.total')
        }
        if (footList.includes(column.field)) {
          return sumNum(data, column.field)
north-glass-erp/northglass-erp/src/views/mm/mainProductStock/ReworkRecord.vue
@@ -8,6 +8,10 @@
import useUserInfoStore from "@/stores/userInfo";
import {ElMessage} from "element-plus";
import {Search} from "@element-plus/icons-vue";
import { useI18n } from 'vue-i18n'
//语言获取
const { t } = useI18n()
const userStore = useUserInfoStore()
const username = userStore.user.userName
@@ -186,27 +190,27 @@
  },//表头参数
  columns:[
    {type: 'checkbox',fixed:"left", title: '选择', width: '80' },
    {type: 'checkbox',fixed:"left", title: t('basicData.check'), width: '80' },
    {type:'expand',fixed:"left",slots: { content:'content' },width: '80'},
    {type: 'seq',fixed:"left", title: '自序', width: '80' },
    {field: 'status', width: '120',title: '单据状态',filters:[{ data: '' }],slots: { filter: 'num1_filter' }},
    {field: 'operationOrderNumber', width:'150', title: '操作单号',filters:[{ data: '' }],slots: { filter: 'num1_filter' }},
    {field: 'orderId', width: '150',title: '销售单号',showOverflow:"ellipsis" ,filters:[{ data: '' }],slots: { filter: 'num1_filter' }},
    {field: 'operationNumber', width: '100',title: '序号', showOverflow:"ellipsis" ,filters:[{ data: '' }],slots: { filter: 'num1_filter' }},
    {field: 'quantity', width: '140',title: '领出/返工数量',filters:[{ data: '' }],slots: { filter: 'num1_filter' }},
    {field: 'orderDetail.productId',width: '100', title: '产品编号',filters:[{ data: '' }],slots: { filter: 'num1_filter' }},
    {field: 'orderDetail.productName',width: '140', title: '产品名称',filters:[{ data: '' }],slots: { filter: 'num1_filter' }},
    {field: 'orderDetail.width', width: '100',title: '宽度',filters:[{ data: '' }],slots: { filter: 'num1_filter' }},
    {field: 'orderDetail.height',width: '100', title: '高度',filters:[{ data: '' }],slots: { filter: 'num1_filter' }},
    {field: 'operator', width: '100',title: '制单人',filters:[{ data: '' }],slots: { filter: 'num1_filter' }},
    {field: 'operateTime', width:'140', title: '制单日期',filters:[{ data: '' }],slots: { filter: 'num1_filter' }},
    {field: 'reviewed', width: '100',title: '审核人',filters:[{ data: '' }],slots: { filter: 'num1_filter' }},
    {field: 'reviewedTime', width: '140',title: '审核日期',filters:[{ data: '' }],slots: { filter: 'num1_filter' }},
    {field: 'remarks', width: '140',title: '备注',filters:[{ data: '' }],slots: { filter: 'num1_filter' }},
    {type: 'seq',fixed:"left", title: t('basicData.Number'), width: '80' },
    {field: 'status', width: '120',title: t('productStock.documentStatus'),filters:[{ data: '' }],slots: { filter: 'num1_filter' }},
    {field: 'operationOrderNumber', width:'150', title: t('productStock.operationOrderNumber'),filters:[{ data: '' }],slots: { filter: 'num1_filter' }},
    {field: 'orderId', width: '150',title: t('order.orderId'),showOverflow:"ellipsis" ,filters:[{ data: '' }],slots: { filter: 'num1_filter' }},
    {field: 'operationNumber', width: '100',title: t('order.OrderNum'), showOverflow:"ellipsis" ,filters:[{ data: '' }],slots: { filter: 'num1_filter' }},
    {field: 'quantity', width: '140',title: t('productStock.receivedReworkedQuantity'),filters:[{ data: '' }],slots: { filter: 'num1_filter' }},
    {field: 'orderDetail.productId',width: '100', title: t('order.productId'),filters:[{ data: '' }],slots: { filter: 'num1_filter' }},
    {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: '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: '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' }},
  ],//表头按钮
  toolbarConfig: {
    buttons: [{
      'name': '反审',status: 'primary',
      'name': t('basicData.cancelReview'),status: 'primary',
      'code':'add'
    }],
    /*import: false,
@@ -220,7 +224,7 @@
    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)
@@ -252,7 +256,7 @@
            })
            request.post("/FinishedGoodsInventory/updateFinishedGoodsInventoryCounterExamination",flowData.value).then((res) => {
              if(res.code==200){
                ElMessage.success("反审成功")
                ElMessage.success(t('productStock.reverseReviewSuccessful'))
                router.push({path:'/main/productStock/ReworkRecord',query:{random:Math.random()}})
              }else{
@@ -299,7 +303,7 @@
        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%"
@@ -333,8 +337,8 @@
      <!--左边固定显示的插槽-->
      <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 }">
north-glass-erp/northglass-erp/src/views/mm/mainProductStock/TakeOutRecord.vue
@@ -8,6 +8,10 @@
import useUserInfoStore from "@/stores/userInfo";
import {ElMessage} from "element-plus";
import {Search} from "@element-plus/icons-vue";
import { useI18n } from 'vue-i18n'
//语言获取
const { t } = useI18n()
const userStore = useUserInfoStore()
const username = userStore.user.userName
@@ -184,36 +188,36 @@
  },//表头参数
  columns:[
    {type: 'checkbox',fixed:"left", title: '选择', width: '80' },
    //{field:"status", title: '选择', width: '80',slots: { default: 'state' } },
    {type: 'checkbox',fixed:"left", title: t('basicData.check'), width: '80' },
    {type:'expand',fixed:"left",slots: { content:'content' },width: '80'},
    {type: 'seq',fixed:"left", title: '自序', width: '80' },
    {field: 'status', width: '120',title: '单据状态',filters:[{ data: '' }],slots: { filter: 'num1_filter' }},
    {field: 'operationOrderNumber', width:'150', title: '操作单号',filters:[{ data: '' }],slots: { filter: 'num1_filter' }},
    {field: 'orderId', width: '150',title: '销售单号',showOverflow:"ellipsis" ,filters:[{ data: '' }],slots: { filter: 'num1_filter' }},
    {field: 'operationNumber', width: '100',title: '序号', showOverflow:"ellipsis" ,filters:[{ data: '' }],slots: { filter: 'num1_filter' }},
    {field: 'quantity', width: '140',title: '领出/返工数量',filters:[{ data: '' }],slots: { filter: 'num1_filter' }},
    {field: 'orderDetail.productId',width: '100', title: '产品编号',filters:[{ data: '' }],slots: { filter: 'num1_filter' }},
    {field: 'orderDetail.productName',width: '140', title: '产品名称',filters:[{ data: '' }],slots: { filter: 'num1_filter' }},
    {field: 'orderDetail.width', width: '100',title: '宽度',filters:[{ data: '' }],slots: { filter: 'num1_filter' }},
    {field: 'orderDetail.height',width: '100', title: '高度',filters:[{ data: '' }],slots: { filter: 'num1_filter' }},
    {field: 'operator', width: '100',title: '制单人',filters:[{ data: '' }],slots: { filter: 'num1_filter' }},
    {field: 'operateTime', width:'140', title: '制单日期',filters:[{ data: '' }],slots: { filter: 'num1_filter' }},
    {field: 'reviewed', width: '100',title: '审核人',filters:[{ data: '' }],slots: { filter: 'num1_filter' }},
    {field: 'reviewedTime', width: '140',title: '审核日期',filters:[{ data: '' }],slots: { filter: 'num1_filter' }},
    {field: 'remarks', width: '140',title: '备注',filters:[{ data: '' }],slots: { filter: 'num1_filter' }},
    {type: 'seq',fixed:"left", title: t('basicData.Number'), width: '80' },
    {field: 'status', width: '120',title: t('productStock.documentStatus'),filters:[{ data: '' }],slots: { filter: 'num1_filter' }},
    {field: 'operationOrderNumber', width:'150', title: t('productStock.operationOrderNumber'),filters:[{ data: '' }],slots: { filter: 'num1_filter' }},
    {field: 'orderId', width: '150',title: t('order.orderId'),showOverflow:"ellipsis" ,filters:[{ data: '' }],slots: { filter: 'num1_filter' }},
    {field: 'operationNumber', width: '100',title: t('order.OrderNum'), showOverflow:"ellipsis" ,filters:[{ data: '' }],slots: { filter: 'num1_filter' }},
    {field: 'quantity', width: '140',title: t('productStock.receivedReworkedQuantity'),filters:[{ data: '' }],slots: { filter: 'num1_filter' }},
    {field: 'orderDetail.productId',width: '100', title: t('order.productId'),filters:[{ data: '' }],slots: { filter: 'num1_filter' }},
    {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: '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: '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' }},
  ],//表头按钮
  toolbarConfig: {
    buttons: [{
      'name': '审核',status: 'primary',
      'name': t('basicData.review'),status: 'primary',
      'code':'add'
    },
      {
        'name': '反审',status: 'primary',
        'name': t('basicData.cancelReview'),status: 'primary',
        'code':'rework'
      },
      {
        'name': '作废',status: 'primary',
        'name': t('productStock.returnToWarehouse'),status: 'primary',
        'code':'cancel'
      }],
    /*import: false,
@@ -227,7 +231,7 @@
    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)
@@ -259,7 +263,7 @@
            })
            request.post("/FinishedGoodsInventory/updateFinishedGoodsInventoryToExamine",flowData.value).then((res) => {
              if(res.code==200){
                ElMessage.success("审核成功")
                ElMessage.success(t('productStock.reviewSuccessful'))
                router.push({path:'/main/productStock/TakeOutRecord',query:{random:Math.random()}})
              }else{
@@ -291,7 +295,7 @@
            console.log(flowData)
            request.post("/FinishedGoodsInventory/cancelFinishedGoodsInventoryToExamine",flowData.value).then((res) => {
              if(res.code==200){
                ElMessage.success("作废成功")
                ElMessage.success(t('productStock.invalidSuccessfully'))
                router.push({path:'/main/productStock/TakeOutRecord',query:{random:Math.random()}})
              }else{
@@ -338,7 +342,7 @@
        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%"
@@ -372,8 +376,8 @@
      <!--左边固定显示的插槽-->
      <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 }">
north-glass-erp/northglass-erp/src/views/mm/mainProductStock/TransferRecord.vue
@@ -8,6 +8,10 @@
import useUserInfoStore from "@/stores/userInfo";
import {ElMessage} from "element-plus";
import {Search} from "@element-plus/icons-vue";
import { useI18n } from 'vue-i18n'
//语言获取
const { t } = useI18n()
const userStore = useUserInfoStore()
const username = userStore.user.userName
@@ -192,21 +196,21 @@
    //{type: 'checkbox',fixed:"left", title: '选择', width: '80' },
    {type:'expand',fixed:"left",slots: { content:'content' },width: '80'},
    {type: 'seq',fixed:"left", title: '自序', width: '80' },
    {field: 'operationOrderNumber', width:'150', title: '操作单号',filters:[{ data: '' }],slots: { filter: 'num1_filter' }},
    {field: 'orderId', width: '150',title: '销售单号',showOverflow:"ellipsis" ,filters:[{ data: '' }],slots: { filter: 'num1_filter' }},
    {field: 'operationNumber', width: '100',title: '序号', showOverflow:"ellipsis" ,filters:[{ data: '' }],slots: { filter: 'num1_filter' }},
    {field: 'staterOperationOrderNumber', width: '150',title: '新调拨单号',showOverflow:"ellipsis" ,filters:[{ data: '' }],slots: { filter: 'num1_filter' }},
    {field: 'endOperationOrderNumber', width: '100',title: '新序号', showOverflow:"ellipsis" ,filters:[{ data: '' }],slots: { filter: 'num1_filter' }},
    {field: 'quantity', width: '140',title: '调拨数量',filters:[{ data: '' }],slots: { filter: 'num1_filter' }},
    {field: 'orderDetail.productId',width: '100', title: '产品编号',filters:[{ data: '' }],slots: { filter: 'num1_filter' }},
    {field: 'orderDetail.productName',width: '140', title: '产品名称',filters:[{ data: '' }],slots: { filter: 'num1_filter' }},
    {field: 'orderDetail.width', width: '100',title: '宽度',filters:[{ data: '' }],slots: { filter: 'num1_filter' }},
    {field: 'orderDetail.height',width: '100', title: '高度',filters:[{ data: '' }],slots: { filter: 'num1_filter' }},
    {field: 'operator', width: '100',title: '制单人',filters:[{ data: '' }],slots: { filter: 'num1_filter' }},
    {field: 'operateTime', width:'140', title: '制单日期',filters:[{ data: '' }],slots: { filter: 'num1_filter' }},
    {type: 'seq',fixed:"left", title: t('basicData.Number'), width: '80' },
    {field: 'operationOrderNumber', width:'150', title: t('productStock.operationOrderNumber'),filters:[{ data: '' }],slots: { filter: 'num1_filter' }},
    {field: 'orderId', width: '150',title: t('order.orderId'),showOverflow:"ellipsis" ,filters:[{ data: '' }],slots: { filter: 'num1_filter' }},
    {field: 'operationNumber', width: '100',title: t('order.OrderNum'), showOverflow:"ellipsis" ,filters:[{ data: '' }],slots: { filter: 'num1_filter' }},
    {field: 'staterOperationOrderNumber', width: '150',title: t('productStock.newOrderId'),showOverflow:"ellipsis" ,filters:[{ data: '' }],slots: { filter: 'num1_filter' }},
    {field: 'endOperationOrderNumber', width: '100',title: t('productStock.newOrderNumber'), showOverflow:"ellipsis" ,filters:[{ data: '' }],slots: { filter: 'num1_filter' }},
    {field: 'quantity', width: '140',title: t('productStock.transferQuantity'),filters:[{ data: '' }],slots: { filter: 'num1_filter' }},
    {field: 'orderDetail.productId',width: '100', title: t('order.productId'),filters:[{ data: '' }],slots: { filter: 'num1_filter' }},
    {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: '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: 'remarks', width: '140',title: '备注',filters:[{ data: '' }],slots: { filter: 'num1_filter' }},
    {field: 'remarks', width: '140',title: t('productStock.remarks'),filters:[{ data: '' }],slots: { filter: 'num1_filter' }},
  ],//表头按钮
@@ -214,7 +218,7 @@
    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)
@@ -246,7 +250,7 @@
            })
            request.post("/FinishedGoodsInventory/updateFinishedGoodsInventoryCounterExamination",flowData.value).then((res) => {
              if(res.code==200){
                ElMessage.success("反审成功")
                ElMessage.success(t('productStock.reverseReviewSuccessful'))
                router.push({path:'/main/productStock/TransferRecord',query:{random:Math.random()}})
              }else{
@@ -283,7 +287,7 @@
        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%"
@@ -316,8 +320,8 @@
      <!--左边固定显示的插槽-->
      <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 }">
north-glass-erp/northglass-erp/src/views/pp/Replenish/AddReplenish.vue
@@ -7,6 +7,10 @@
import deepClone from "@/utils/deepClone";
import {changeFilterEvent,filterChanged} from "@/hook"
import {addListener,toolbarButtonClickEvent} from "@/hook/mouseMove";
import { useI18n } from 'vue-i18n'
//语言获取
const { t } = useI18n()
let router = useRouter()
@@ -81,33 +85,33 @@
  },//表头参数
  columns:[
    {type: 'expand', fixed: "left", slots: {content: 'content'}, width: 50},
    {field: 'select',type:'checkbox',title: '选择', width: 80,fixed:"left"},
    {type: 'seq', fixed: "left", title: '自序', width: 50},
    {field: 'reportingWorkTime', width: 120, title: '报工时间', filters: [{data: ''}], slots: {filter: 'num1_filter'},filterMethod:filterChanged},
    {field: 'orderId', width: 120, title: '销售单号', showOverflow: "ellipsis", filters: [{data: ''}], slots: {filter: 'num1_filter'},filterMethod:filterChanged},
    {field: 'processId', width: 120, title: '流程卡号', filters: [{data: ''}], slots: {filter: 'num1_filter'},filterMethod:filterChanged},
    {field: 'project', width: 120, title: '项目名称', filters: [{data: ''}], slots: {filter: 'num1_filter'}, sortable: true,filterMethod:filterChanged},
    {field: 'batch', width: 80, title: '批次',filters:[{ data: '' }],slots: { filter: 'num1_filter' }, showOverflow: "ellipsis",filterMethod:filterChanged},
    {field: 'orderSort', width: 80, title: '序号',filters:[{ data: '' }],slots: { filter: 'num1_filter' },filterMethod:filterChanged},
    {field: 'productName', width: 120, title: '产品名称',filters:[{ data: '' }],slots: { filter: 'num1_filter' },filterMethod:filterChanged},
    {field: 'reportingWorkId', width: 120, title: '报工编号', filters: [{data: ''}], slots: {filter: 'num1_filter'},filterMethod:filterChanged},
    {field: 'technologyNumber', width: 80, title: '标记',filters:[{ data: '' }],slots: { filter: 'num1_filter' }, showOverflow: "ellipsis",filterMethod:filterChanged},
    {field: 'glassAddress', width: 90, title: '片标记', sortable: true,filters:[{ data: '' }],slots: { filter: 'num1_filter' },filterMethod:filterChanged},
    {field: 'patchNum', width: 120, title: '次破数量', sortable: true,filters:[{ data: '' }],slots: { filter: 'num1_filter' },filterMethod:filterChanged},
    {field: 'width', width: 80, title: '宽', sortable: true,filters:[{ data: '' }],slots: { filter: 'num1_filter' },filterMethod:filterChanged},
    {field: 'height', width: 80, title: '高', sortable: true,filters:[{ data: '' }],slots: { filter: 'num1_filter' },filterMethod:filterChanged},
    {field: 'shape', width: 80, title: '形状', sortable: true,filters:[{ data: '' }],slots: { filter: 'num1_filter' },filterMethod:filterChanged},
    {field: 'patchProcesses', width: 100, title: '报工工序', sortable: true,filters:[{ data: '' }],slots: { filter: 'num1_filter' },filterMethod:filterChanged},
    {field: 'patchType', width: 100, title: '次破类型', sortable: true,filters:[{ data: '' }],slots: { filter: 'num1_filter' },filterMethod:filterChanged},
    {field: 'patchReason', width: 120, title: '次破原因', sortable: true,filters:[{ data: '' }],slots: { filter: 'num1_filter' }},
    {field: 'responsibleEquipment', width: 120, title: '责任设备', sortable: true,filters:[{ data: '' }],slots: { filter: 'num1_filter' },filterMethod:filterChanged},
    {field: 'responsibleTeam', width: 120, title: '责任班组', sortable: true,filters:[{ data: '' }],slots: { filter: 'num1_filter' },filterMethod:filterChanged},
    {field: 'qualityInspector', width: 100, title: '质检员', sortable: true,filters:[{ data: '' }],slots: { filter: 'num1_filter' },filterMethod:filterChanged}
    {field: 'select',type:'checkbox',title: t('basicData.check'), width: 80,fixed:"left"},
    {type: 'seq', fixed: "left", title: t('basicData.Number'), width: 50},
    {field: 'reportingWorkTime', width: 120, title: t('reportingWorks.reportingWorkTime'), filters: [{data: ''}], slots: {filter: 'num1_filter'},filterMethod:filterChanged},
    {field: 'orderId', width: 120, title: t('order.orderId'), showOverflow: "ellipsis", filters: [{data: ''}], slots: {filter: 'num1_filter'},filterMethod:filterChanged},
    {field: 'processId', width: 120, title: t('processCard.processId'), filters: [{data: ''}], slots: {filter: 'num1_filter'},filterMethod:filterChanged},
    {field: 'project', width: 120, title: t('order.project'), filters: [{data: ''}], slots: {filter: 'num1_filter'}, sortable: true,filterMethod:filterChanged},
    {field: 'batch', width: 80, title: t('order.batch'),filters:[{ data: '' }],slots: { filter: 'num1_filter' }, showOverflow: "ellipsis",filterMethod:filterChanged},
    {field: 'orderSort', width: 80, title: t('order.OrderNum'),filters:[{ data: '' }],slots: { filter: 'num1_filter' },filterMethod:filterChanged},
    {field: 'productName', width: 120, title: t('order.product'),filters:[{ data: '' }],slots: { filter: 'num1_filter' },filterMethod:filterChanged},
    {field: 'reportingWorkId', width: 120, title: t('reportingWorks.reportingWorkId'), filters: [{data: ''}], slots: {filter: 'num1_filter'},filterMethod:filterChanged},
    {field: 'technologyNumber', width: 80, title: t('replenish.mark'),filters:[{ data: '' }],slots: { filter: 'num1_filter' }, showOverflow: "ellipsis",filterMethod:filterChanged},
    {field: 'glassAddress', width: 90, title: t('replenish.mark'), sortable: true,filters:[{ data: '' }],slots: { filter: 'num1_filter' },filterMethod:filterChanged},
    {field: 'patchNum', width: 120, title: t('replenish.sliceMarking'), sortable: true,filters:[{ data: '' }],slots: { filter: 'num1_filter' },filterMethod:filterChanged},
    {field: 'width', width: 80, title: t('order.width'), sortable: true,filters:[{ data: '' }],slots: { filter: 'num1_filter' },filterMethod:filterChanged},
    {field: 'height', width: 80, title: t('order.height'), sortable: true,filters:[{ data: '' }],slots: { filter: 'num1_filter' },filterMethod:filterChanged},
    {field: 'shape', width: 80, title: t('order.shape'), sortable: true,filters:[{ data: '' }],slots: { filter: 'num1_filter' },filterMethod:filterChanged},
    {field: 'patchProcesses', width: 100, title: t('reportingWorks.reportingProcess'), sortable: true,filters:[{ data: '' }],slots: { filter: 'num1_filter' },filterMethod:filterChanged},
    {field: 'patchType', width: 100, title: t('reportingWorks.breakageType'), sortable: true,filters:[{ data: '' }],slots: { filter: 'num1_filter' },filterMethod:filterChanged},
    {field: 'patchReason', width: 120, title: t('reportingWorks.breakageReason'), sortable: true,filters:[{ data: '' }],slots: { filter: 'num1_filter' }},
    {field: 'responsibleEquipment', width: 120, title: t('reportingWorks.responsibleEquipment'), sortable: true,filters:[{ data: '' }],slots: { filter: 'num1_filter' },filterMethod:filterChanged},
    {field: 'responsibleTeam', width: 120, title: t('reportingWorks.responsibleTeam'), sortable: true,filters:[{ data: '' }],slots: { filter: 'num1_filter' },filterMethod:filterChanged},
    {field: 'qualityInspector', width: 100, title: t('reportingWorks.qualityInspector'), sortable: true,filters:[{ data: '' }],slots: { filter: 'num1_filter' },filterMethod:filterChanged}
  ],//表头按钮
  toolbarConfig: {
    buttons: [
      {'code': 'add', 'name': '保存',status: 'primary',icon: 'vxe-icon-save'}
      {'code': 'add', 'name': t('basicData.save'),status: 'primary',icon: 'vxe-icon-save'}
    ],
    import: false,
    export: true,
@@ -121,7 +125,7 @@
    return[
      columns.map((column, columnIndex) => {
        if (columnIndex === 0) {
          return '合计'
          return t('basicData.total')
        }
        if (footList.includes(column.field)) {
          return sumNum(data, column.field)
@@ -147,7 +151,7 @@
              return
            }
          } else {
            ElMessage.warning("未选中数据")
            ElMessage.warning(t('productStock.unselectedData'))
            return
          }
@@ -158,7 +162,7 @@
          })
          request.post("/Replenish/saveReplenish", flowData.value).then((res) => {
            if(res.code==200){
              ElMessage.success("补片单提交成功")
              ElMessage.success(t('basicData.msg.saveSuccess'))
              router.push({path:'/main/Replenish/AddReplenish',query:{random:Math.random()}})
            }else{
              ElMessage.warning(res.msg)
@@ -260,7 +264,7 @@
      <!--左边固定显示的插槽-->
      <template #button_slot="{ row }">
        <el-button @click="getTableRow(row,'delete')" link type="primary" size="small">删除</el-button>
        <el-button @click="getTableRow(row,'delete')" link type="primary" size="small">{{$t('basicData.delete')}}</el-button>
      </template>
      <template #num1_filter="{ column, $panel }">
north-glass-erp/northglass-erp/src/views/pp/Replenish/Replenish.vue
@@ -6,6 +6,10 @@
import {ElMessage} from "element-plus";
import  GlassType from '@/components/basic/product/GlassType.vue'
import {useRouter,useRoute,onBeforeRouteUpdate} from "vue-router";
import { useI18n } from 'vue-i18n'
//语言获取
const { t } = useI18n()
const router = useRouter()
@@ -20,9 +24,9 @@
  <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/Replenish/SelectReplenish' }">补片管理</el-breadcrumb-item>
        <el-breadcrumb-item @click="changeRouter(2)" :class="indexFlag===2?'indexTag':''" :to="{ path: '/main/Replenish/AddReplenish' }">补片新增</el-breadcrumb-item>
        <el-breadcrumb-item @click="changeRouter(3)" :class="indexFlag===3?'indexTag':''" :to="{ path: '/main/Replenish/PrintReplenishFlowCard' }">补片打印</el-breadcrumb-item>
        <el-breadcrumb-item @click="changeRouter(1)" :class="indexFlag===1?'indexTag':''" :to="{ path: '/main/Replenish/SelectReplenish' }">{{$t('replenish.patchManagement')}}</el-breadcrumb-item>
        <el-breadcrumb-item @click="changeRouter(2)" :class="indexFlag===2?'indexTag':''" :to="{ path: '/main/Replenish/AddReplenish' }">{{$t('replenish.addPatches')}}</el-breadcrumb-item>
        <el-breadcrumb-item @click="changeRouter(3)" :class="indexFlag===3?'indexTag':''" :to="{ path: '/main/Replenish/PrintReplenishFlowCard' }">{{$t('replenish.printPatches')}}</el-breadcrumb-item>
        <el-breadcrumb-item :to="{ path: '/main/processCard/SelectPrintFlowCard' }" style="display: none">打印</el-breadcrumb-item>
      </el-breadcrumb>
    </div>
north-glass-erp/northglass-erp/src/views/pp/Replenish/SelectReplenish.vue
@@ -8,6 +8,10 @@
import {Search} from "@element-plus/icons-vue";
import useUserInfoStore from "@/stores/userInfo";
import {changeFilterEvent,filterChanged} from "@/hook"
import { useI18n } from 'vue-i18n'
//语言获取
const { t } = useI18n()
const userStore = useUserInfoStore()
@@ -111,39 +115,39 @@
  columns:[
    {type: 'expand', fixed: "left", slots: {content: 'content'}, width: 50},
    {type:'checkbox',title: '选择', width: 80,fixed:"left"},
    {type: 'seq', fixed: "left", title: '自序', width: 50},
    {field: 'review_status',title: '审核', width: 40, slots: { default: 'state' }},
    {field: 'patch_id', width: 120, title: '补片单号', filters: [{data: ''}], slots: {filter: 'num1_filter'},filterMethod:filterChanged},
    {field: 'order_id', width: 120, title: '销售单号', showOverflow: "ellipsis", filters: [{data: ''}], slots: {filter: 'num1_filter'},filterMethod:filterChanged},
    {field: 'process_id', width: 120, title: '流程卡号', filters: [{data: ''}], slots: {filter: 'num1_filter'},filterMethod:filterChanged},
    {field: 'project', width: 120, title: '项目名称', filters: [{data: ''}], slots: {filter: 'num1_filter'},filterMethod:filterChanged},
    {field: 'reporting_work_id', width: 100,title: '报工编号',filters: [{data: ''}], slots: {filter: 'num1_filter'},filterMethod:filterChanged},
    {field: 'batch', width: 80, title: '批次', showOverflow: "ellipsis", filters: [{data: ''}], slots: {filter: 'num1_filter'},filterMethod:filterChanged},
    {field: 'order_sort', width: 80, title: '序号', filters: [{data: ''}], slots: {filter: 'num1_filter'},filterMethod:filterChanged},
    {field: 'product_name', width: 120, title: '单片名称', filters: [{data: ''}], slots: {filter: 'num1_filter'},filterMethod:filterChanged},
    {field: 'building_number',width: 120, title: '楼层编号', filters: [{data: ''}], slots: {filter: 'num1_filter'},filterMethod:filterChanged},
    {field: 'technology_number', width: 80, title: '标记', showOverflow: "ellipsis", filters: [{data: ''}], slots: {filter: 'num1_filter'},filterMethod:filterChanged},
    {field: 'glass_address', width: 90, title: '片标记', filters: [{data: ''}], slots: {filter: 'num1_filter'},filterMethod:filterChanged},
    {field: 'patch_num', width: 80, title: '数量', filters: [{data: ''}], slots: {filter: 'num1_filter'},filterMethod:filterChanged},
    {field: 'width', width: 80, title: '宽', filters: [{data: ''}], slots: {filter: 'num1_filter'},filterMethod:filterChanged},
    {field: 'height', width: 80, title: '高', filters: [{data: ''}], slots: {filter: 'num1_filter'},filterMethod:filterChanged},
    {field: 'shape', width: 80, title: '形状', filters: [{data: ''}], slots: {filter: 'num1_filter'},filterMethod:filterChanged},
    {field: 'patch_type', width: 100, title: '返工类型', filters: [{data: ''}], slots: {filter: 'num1_filter'},filterMethod:filterChanged},
    {field: 'patch_reason', width: 120, title: '返工原因', filters: [{data: ''}], slots: {filter: 'num1_filter'},filterMethod:filterChanged},
    {field: 'responsible_equipment', width: 120, title: '责任设备', filters: [{data: ''}], slots: {filter: 'num1_filter'},filterMethod:filterChanged},
    {field: 'responsible_team', width: 120, title: '责任班组', filters: [{data: ''}], slots: {filter: 'num1_filter'},filterMethod:filterChanged},
    {field: 'patch_area', width: 120, title: '面积', filters: [{data: ''}], slots: {filter: 'num1_filter'},filterMethod:filterChanged},
    {field: 'patch_processes', width: 120, title: '报工工序', filters: [{data: ''}], slots: {filter: 'num1_filter'},filterMethod:filterChanged},
    {field: 'quality_inspector', width: 100, title: '质检员', filters: [{data: ''}], slots: {filter: 'num1_filter'},filterMethod:filterChanged},
    {field: 'reviewer', width: 100, title: '审核员', filters: [{data: ''}], slots: {filter: 'num1_filter'},filterMethod:filterChanged},
    {field: 'create_time', width: 100, title: '补片时间'},
    {field: 'update_time', width: 120, title: '补片审核时间'}
    {type:'checkbox',title: t('basicData.check'), width: 80,fixed:"left"},
    {type: 'seq', fixed: "left", title: t('basicData.Number'), width: 50},
    {field: 'review_status',title: t('basicData.review'), width: 40, slots: { default: 'state' }},
    {field: 'patch_id', width: 120, title: t('replenish.patchNumber'), filters: [{data: ''}], slots: {filter: 'num1_filter'},filterMethod:filterChanged},
    {field: 'order_id', width: 120, title: t('order.orderId'), showOverflow: "ellipsis", filters: [{data: ''}], slots: {filter: 'num1_filter'},filterMethod:filterChanged},
    {field: 'process_id', width: 120, title: t('processCard.processId'), filters: [{data: ''}], slots: {filter: 'num1_filter'},filterMethod:filterChanged},
    {field: 'project', width: 120, title: t('order.project'), filters: [{data: ''}], slots: {filter: 'num1_filter'},filterMethod:filterChanged},
    {field: 'reporting_work_id', width: 100,title: t('reportingWorks.reportingWorkId'),filters: [{data: ''}], slots: {filter: 'num1_filter'},filterMethod:filterChanged},
    {field: 'batch', width: 80, title: t('order.batch'), showOverflow: "ellipsis", filters: [{data: ''}], slots: {filter: 'num1_filter'},filterMethod:filterChanged},
    {field: 'order_sort', width: 80, title:t('order.OrderNum'), 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: 'building_number',width: 120, title: '楼层编号', filters: [{data: ''}], slots: {filter: 'num1_filter'},filterMethod:filterChanged},
    {field: 'technology_number', width: 80, title: t('replenish.mark'), showOverflow: "ellipsis", filters: [{data: ''}], slots: {filter: 'num1_filter'},filterMethod:filterChanged},
    {field: 'glass_address', width: 90, title: t('replenish.sliceMarking'), filters: [{data: ''}], slots: {filter: 'num1_filter'},filterMethod:filterChanged},
    {field: 'patch_num', width: 80, title: t('order.quantity'), filters: [{data: ''}], slots: {filter: 'num1_filter'},filterMethod:filterChanged},
    {field: 'width', width: 80, title: t('order.width'), filters: [{data: ''}], slots: {filter: 'num1_filter'},filterMethod:filterChanged},
    {field: 'height', width: 80, title: t('order.height'), filters: [{data: ''}], slots: {filter: 'num1_filter'},filterMethod:filterChanged},
    {field: 'shape', width: 80, title: t('order.shape'), filters: [{data: ''}], slots: {filter: 'num1_filter'},filterMethod:filterChanged},
    {field: 'patch_type', width: 100, title: t('reportingWorks.breakageType'), filters: [{data: ''}], slots: {filter: 'num1_filter'},filterMethod:filterChanged},
    {field: 'patch_reason', width: 120, title: t('reportingWorks.breakageReason'), filters: [{data: ''}], slots: {filter: 'num1_filter'},filterMethod:filterChanged},
    {field: 'responsible_equipment', width: 120, title: t('reportingWorks.responsibleEquipment'), filters: [{data: ''}], slots: {filter: 'num1_filter'},filterMethod:filterChanged},
    {field: 'responsible_team', width: 120, title: t('reportingWorks.responsibleTeam'), filters: [{data: ''}], slots: {filter: 'num1_filter'},filterMethod:filterChanged},
    {field: 'patch_area', width: 120, title: t('order.area'), filters: [{data: ''}], slots: {filter: 'num1_filter'},filterMethod:filterChanged},
    {field: 'patch_processes', width: 120, title:  t('reportingWorks.reportingProcess'), filters: [{data: ''}], slots: {filter: 'num1_filter'},filterMethod:filterChanged},
    {field: 'quality_inspector', width: 100, title: t('reportingWorks.qualityInspector'), filters: [{data: ''}], slots: {filter: 'num1_filter'},filterMethod:filterChanged},
    {field: 'reviewer', width: 100, title: t('productStock.reviewed'), filters: [{data: ''}], slots: {filter: 'num1_filter'},filterMethod:filterChanged},
    {field: 'create_time', width: 100, title: t('productStock.productionDate')},
    {field: 'update_time', width: 120, title: t('productStock.approvedDate')}
  ],//表头按钮
  toolbarConfig: {
    buttons: [{
      'name': '审核',status: 'primary',
      'name': t('basicData.review'),status: 'primary',
      'code':'add'
    }],
    /*import: false,
@@ -158,7 +162,7 @@
    return[
      columns.map((column, columnIndex) => {
        if (columnIndex === 0) {
          return '合计'
          return t('basicData.total')
        }
        if (footList.includes(column.field)) {
          return sumNum(data, column.field)
@@ -180,7 +184,7 @@
          if ($table) {
            const selectRecords = $table.getCheckboxRecords()
            if (selectRecords.length === 0) {
              ElMessage.warning("未选中数据")
              ElMessage.warning(t('productStock.unselectedData'))
              return
            }
            let flowData = ref({
@@ -192,7 +196,7 @@
            })
            request.post("/Replenish/updateReplenish",flowData.value).then((res) => {
              if(res.code==200){
                ElMessage.success("审核成功")
                ElMessage.success(t('basicData.msg.ReviewSuccess'))
                router.push({path:'/main/Replenish/SelectReplenish',query:{random:Math.random()}})
              }else{
@@ -268,7 +272,7 @@
          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>
    </el-header>
    <vxe-grid
@@ -293,7 +297,7 @@
      <!--左边固定显示的插槽-->
      <template #button_slot="{ row }">
        <el-button @click="getTableRow(row,'delete')" link type="primary" size="small">删除</el-button>
        <el-button @click="getTableRow(row,'delete')" link type="primary" size="small">{{$t('basicData.delete')}}</el-button>
      </template>
      <template #num1_filter="{ column, $panel }">
north-glass-erp/northglass-erp/src/views/pp/rework/AddRework.vue
@@ -7,6 +7,10 @@
import deepClone from "@/utils/deepClone";
import {changeFilterEvent,filterChanged} from "@/hook"
import {addListener,toolbarButtonClickEvent} from "@/hook/mouseMove";
import { useI18n } from 'vue-i18n'
//语言获取
const { t } = useI18n()
let router = useRouter()
@@ -77,7 +81,7 @@
    body: {
      options: [
        [
          { code: 'copyChecked', name: '选中相同', prefixIcon: 'vxe-icon-copy', visible: true, disabled: false },
          { code: 'copyChecked', name: t('basicData.selectSame'), prefixIcon: 'vxe-icon-copy', visible: true, disabled: false },
        ]
      ]
    }
@@ -99,34 +103,34 @@
  },//表头参数
  columns: [
    {type: 'expand', fixed: "left", slots: {content: 'content'}, width: 50},
    {field: 'select',type:'checkbox',title: '选择', width: 80,fixed:"left"},
    {type: 'seq', fixed: "left", title: '自序', width: 50},
    {field: 'reworkTeam', width: 120, title: '返工班组', slots: {default: 'responsibleTeam_default', edit: 'responsibleTeam'}, editRender: {}},
    {field: 'orderId', width: 120, title: '销售单号', sortable: true, showOverflow: "ellipsis", filters: [{data: ''}], slots: {filter: 'num1_filter'},filterMethod:filterChanged},
    {field: 'processId', width: 120, title: '流程卡号', sortable: true, filters: [{data: ''}], slots: {filter: 'num1_filter'},filterMethod:filterChanged},
    {field: 'project', width: 120, title: '项目名称', filters: [{data: ''}], slots: {filter: 'num1_filter'}, sortable: true,filterMethod:filterChanged},
    {field: 'batch', width: 80, title: '批次', sortable: true,filters:[{ data: '' }],slots: { filter: 'num1_filter' }, showOverflow: "ellipsis",filterMethod:filterChanged},
    {field: 'orderSort', width: 80, title: '序号', sortable: true,filters:[{ data: '' }],slots: { filter: 'num1_filter' },filterMethod:filterChanged},
    {field: 'productName', width: 120, title: '单片名称', sortable: true,filters:[{ data: '' }],slots: { filter: 'num1_filter' },filterMethod:filterChanged},
    {field: 'technologyNumber', width: 80, title: '标记', sortable: true,filters:[{ data: '' }],slots: { filter: 'num1_filter' }, showOverflow: "ellipsis",filterMethod:filterChanged},
    {field: 'glassAddress', width: 90, title: '片标记', sortable: true,filters:[{ data: '' }],slots: { filter: 'num1_filter' },filterMethod:filterChanged},
    {field: 'breakageQuantity', width: 120, title: '次破数量', sortable: true,filters:[{ data: '' }],slots: { filter: 'num1_filter' },filterMethod:filterChanged},
    {field: 'reworkNum',width:120,  title: '返工数量',editRender: { name: 'input', attrs: { placeholder: '' } },filters:[{ data: '' }],slots: { filter: 'num1_filter' }},
    {field: 'width', width: 80, title: '宽', sortable: true,filters:[{ data: '' }],slots: { filter: 'num1_filter' },filterMethod:filterChanged},
    {field: 'height', width: 80, title: '高', sortable: true,filters:[{ data: '' }],slots: { filter: 'num1_filter' },filterMethod:filterChanged},
    {field: 'shape', width: 80, title: '形状', sortable: true,filters:[{ data: '' }],slots: { filter: 'num1_filter' },filterMethod:filterChanged},
    {field: 'reworkProcesses', width: 100, title: '返工工序', sortable: true,filters:[{ data: '' }],slots: { filter: 'num1_filter' },filterMethod:filterChanged},
    {field: 'reworkType', width: 100, title: '返工类型', sortable: true,filters:[{ data: '' }],slots: { filter: 'num1_filter' },filterMethod:filterChanged},
    {field: 'reworkReason', width: 120, title: '返工原因', sortable: true,filters:[{ data: '' }],slots: { filter: 'num1_filter' }},
    {field: 'responsibleEquipment', width: 120, title: '责任设备', sortable: true,filters:[{ data: '' }],slots: { filter: 'num1_filter' },filterMethod:filterChanged},
    {field: 'responsibleTeam', width: 120, title: '责任班组', sortable: true,filters:[{ data: '' }],slots: { filter: 'num1_filter' },filterMethod:filterChanged},
    {field: 'area', width: 120, title: '返工面积', sortable: true,filters:[{ data: '' }],slots: { filter: 'num1_filter' },filterMethod:filterChanged},
    {field: 'qualityInspector', width: 100, title: '质检员', sortable: true,filters:[{ data: '' }],slots: { filter: 'num1_filter' },filterMethod:filterChanged}
    {field: 'select',type:'checkbox',title: t('basicData.check'), width: 80,fixed:"left"},
    {type: 'seq', fixed: "left", title: t('basicData.Number'), width: 50},
    {field: 'reworkTeam', width: 120, title: t('rework.reworkTeam'), slots: {default: 'responsibleTeam_default', edit: 'responsibleTeam'}, editRender: {}},
    {field: 'orderId', width: 120, title: t('order.orderId'), sortable: true, showOverflow: "ellipsis", filters: [{data: ''}], slots: {filter: 'num1_filter'},filterMethod:filterChanged},
    {field: 'processId', width: 120, title: t('processCard.processId'), sortable: true, filters: [{data: ''}], slots: {filter: 'num1_filter'},filterMethod:filterChanged},
    {field: 'project', width: 120, title: t('order.project'), filters: [{data: ''}], slots: {filter: 'num1_filter'}, sortable: true,filterMethod:filterChanged},
    {field: 'batch', width: 80, title: t('order.batch'), sortable: true,filters:[{ data: '' }],slots: { filter: 'num1_filter' }, showOverflow: "ellipsis",filterMethod:filterChanged},
    {field: 'orderSort', width: 80, title: t('order.OrderNum'), sortable: true,filters:[{ data: '' }],slots: { filter: 'num1_filter' },filterMethod:filterChanged},
    {field: 'productName', width: 120, title: t('order.product'), sortable: true,filters:[{ data: '' }],slots: { filter: 'num1_filter' },filterMethod:filterChanged},
    {field: 'technologyNumber', width: 80, title: t('replenish.mark'), sortable: true,filters:[{ data: '' }],slots: { filter: 'num1_filter' }, showOverflow: "ellipsis",filterMethod:filterChanged},
    {field: 'glassAddress', width: 90, title: t('replenish.sliceMarking'), sortable: true,filters:[{ data: '' }],slots: { filter: 'num1_filter' },filterMethod:filterChanged},
    {field: 'breakageQuantity', width: 120, title: t('reportingWorks.quantityBroken'), sortable: true,filters:[{ data: '' }],slots: { filter: 'num1_filter' },filterMethod:filterChanged},
    {field: 'reworkNum',width:120,  title: t('productStock.reworkQuantity'),editRender: { name: 'input', attrs: { placeholder: '' } },filters:[{ data: '' }],slots: { filter: 'num1_filter' }},
    {field: 'width', width: 80, title: t('order.width'), sortable: true,filters:[{ data: '' }],slots: { filter: 'num1_filter' },filterMethod:filterChanged},
    {field: 'height', width: 80, title: t('order.height'), sortable: true,filters:[{ data: '' }],slots: { filter: 'num1_filter' },filterMethod:filterChanged},
    {field: 'shape', width: 80, title: t('order.shape'), sortable: true,filters:[{ data: '' }],slots: { filter: 'num1_filter' },filterMethod:filterChanged},
    {field: 'reworkProcesses', width: 100, title: t('rework.reworkProcess'), sortable: true,filters:[{ data: '' }],slots: { filter: 'num1_filter' },filterMethod:filterChanged},
    {field: 'reworkType', width: 100, title: t('rework.reworkType'), sortable: true,filters:[{ data: '' }],slots: { filter: 'num1_filter' },filterMethod:filterChanged},
    {field: 'reworkReason', width: 120, title: t('rework.reasonForRework'), sortable: true,filters:[{ data: '' }],slots: { filter: 'num1_filter' }},
    {field: 'responsibleEquipment', width: 120, title: t('reportingWorks.responsibleEquipment'), sortable: true,filters:[{ data: '' }],slots: { filter: 'num1_filter' },filterMethod:filterChanged},
    {field: 'responsibleTeam', width: 120, title: t('reportingWorks.responsibleTeam'), sortable: true,filters:[{ data: '' }],slots: { filter: 'num1_filter' },filterMethod:filterChanged},
    {field: 'area', width: 120, title: t('rework.reworkArea'), sortable: true,filters:[{ data: '' }],slots: { filter: 'num1_filter' },filterMethod:filterChanged},
    {field: 'qualityInspector', width: 100, title: t('reportingWorks.qualityInspector'), sortable: true,filters:[{ data: '' }],slots: { filter: 'num1_filter' },filterMethod:filterChanged}
  ],//表头按钮
  toolbarConfig: {
    buttons: [
      {'code': 'add', 'name': '保存',status: 'primary',icon: 'vxe-icon-save'}
      {'code': 'add', 'name': t('basicData.save'),status: 'primary',icon: 'vxe-icon-save'}
    ],
    import: false,
    export: true,
@@ -140,7 +144,7 @@
    return [
      columns.map((column, columnIndex) => {
        if (columnIndex === 0) {
          return '合计:'
          return t('basicData.total')
        }
        if (footList.includes(column.field)) {
          return sumNum(data, column.field)
@@ -166,7 +170,7 @@
              return
            }
          } else {
            ElMessage.warning("未选中数据")
            ElMessage.warning(t('productStock.unselectedData'))
            return
          }
@@ -177,7 +181,7 @@
          })
          request.post("/rework/saveRework", flowData.value).then((res) => {
            if(res.code==200){
              ElMessage.success("返工单提交成功")
              ElMessage.success(t('basicData.msg.saveSuccess'))
              router.push({path:'/main/rework/AddRework',query:{random:Math.random()}})
            }else{
              ElMessage.warning(res.msg)
@@ -254,19 +258,19 @@
/*数据校验*/
const validRules = ref({
  reworkTeam: [
    { required: true, message: '请选择返工班组' }
    { required: true, message: t('rework.PleaseSelectAReworkTeam') }
  ],
  reworkNum: [{
    validator (e) {
      if (e.row.reworkNum > e.row.breakageQuantity) {
        return new Error('返工数量不能大于次破数量')
        return new Error(t('rework.TheReworkQuantityCannotBeGreaterThanTheSecondBreakQuantity'))
      }else if (e.row.reworkNum ==="") {
        return new Error('返工数量不能为空或者是0')
        return new Error(t('rework.reworkQuantityCannotBeEmptyOr0'))
      }
      const regex = /^[1-9]\d*$/g
      if ( !regex.test(e.row.reworkNum) ) {
        return new Error('请输入正整数')
        return new Error(t('productStock.pleaseEnterAPositiveInteger'))
      }
    }
north-glass-erp/northglass-erp/src/views/pp/rework/Rework.vue
@@ -5,6 +5,10 @@
import deepClone from "@/utils/deepClone";
import {ElMessage} from "element-plus";
import {useRouter,useRoute,onBeforeRouteUpdate} from "vue-router";
import { useI18n } from 'vue-i18n'
//语言获取
const { t } = useI18n()
const router = useRouter()
@@ -19,9 +23,9 @@
  <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/rework/SelectRework' }">返工管理</el-breadcrumb-item>
        <el-breadcrumb-item @click="changeRouter(2)" :class="indexFlag===2?'indexTag':''" :to="{ path: '/main/rework/AddRework' }">返工新增</el-breadcrumb-item>
        <el-breadcrumb-item :to="{ path: '/main/processCard/SelectPrintFlowCard' }" style="display: none">打印</el-breadcrumb-item>
        <el-breadcrumb-item @click="changeRouter(1)" :class="indexFlag===1?'indexTag':''" :to="{ path: '/main/rework/SelectRework' }">{{$t('rework.reworkManagement')}}</el-breadcrumb-item>
        <el-breadcrumb-item @click="changeRouter(2)" :class="indexFlag===2?'indexTag':''" :to="{ path: '/main/rework/AddRework' }">{{$t('rework.addRework')}}</el-breadcrumb-item>
        <el-breadcrumb-item :to="{ path: '/main/processCard/SelectPrintFlowCard' }" style="display: none">{{$t('rework.printRework')}}</el-breadcrumb-item>
      </el-breadcrumb>
    </div>
north-glass-erp/northglass-erp/src/views/pp/rework/SelectRework.vue
@@ -8,6 +8,10 @@
import {Search} from "@element-plus/icons-vue";
import useUserInfoStore from "@/stores/userInfo";
import {changeFilterEvent,filterChanged} from "@/hook"
import { useI18n } from 'vue-i18n'
//语言获取
const { t } = useI18n()
const userStore = useUserInfoStore()
const username = userStore.user.userName
@@ -121,38 +125,38 @@
  },//表头参数
  columns: [
    {type: 'expand', fixed: "left", slots: {content: 'content'}, width: 50},
    {type:'checkbox',title: '选择', width: 80,fixed:"left"},
    {type: 'seq', fixed: "left", title: '自序', width: 50},
    {field: 'review_status',title: '审核', width: 40, slots: { default: 'state' }},
    {field: 'rework_id', width: 120, title: '返工单号', filters: [{data: ''}], slots: {filter: 'num1_filter'},filterMethod:filterChanged},
    {field: 'rework_team', width: 120, title: '返工班组', filters: [{data: ''}], slots: {filter: 'num1_filter'},filterMethod:filterChanged},
    {field: 'order_id', width: 120, title: '销售单号', showOverflow: "ellipsis", filters: [{data: ''}], slots: {filter: 'num1_filter'},filterMethod:filterChanged},
    {field: 'process_id', width: 120, title: '流程卡号', filters: [{data: ''}], slots: {filter: 'num1_filter'},filterMethod:filterChanged},
    {field: 'project', width: 120, title: '项目名称', filters: [{data: ''}], slots: {filter: 'num1_filter'},filterMethod:filterChanged},
    {field: 'batch', width: 80, title: '批次', showOverflow: "ellipsis", filters: [{data: ''}], slots: {filter: 'num1_filter'},filterMethod:filterChanged},
    {field: 'order_sort', width: 80, title: '序号', filters: [{data: ''}], slots: {filter: 'num1_filter'},filterMethod:filterChanged},
    {field: 'product_name', width: 120, title: '单片名称', filters: [{data: ''}], slots: {filter: 'num1_filter'},filterMethod:filterChanged},
    {field: 'technology_number', width: 80, title: '标记', showOverflow: "ellipsis", filters: [{data: ''}], slots: {filter: 'num1_filter'},filterMethod:filterChanged},
    {field: 'glass_address', width: 90, title: '片标记', filters: [{data: ''}], slots: {filter: 'num1_filter'},filterMethod:filterChanged},
    {field: 'rework_num', width: 80, title: '数量', filters: [{data: ''}], slots: {filter: 'num1_filter'},filterMethod:filterChanged},
    {field: 'width', width: 80, title: '宽', filters: [{data: ''}], slots: {filter: 'num1_filter'},filterMethod:filterChanged},
    {field: 'height', width: 80, title: '高', filters: [{data: ''}], slots: {filter: 'num1_filter'},filterMethod:filterChanged},
    {field: 'shape', width: 80, title: '形状', filters: [{data: ''}], slots: {filter: 'num1_filter'},filterMethod:filterChanged},
    {field: 'rework_type', width: 100, title: '返工类型', filters: [{data: ''}], slots: {filter: 'num1_filter'},filterMethod:filterChanged},
    {field: 'rework_reason', width: 120, title: '返工原因', filters: [{data: ''}], slots: {filter: 'num1_filter'},filterMethod:filterChanged},
    {field: 'responsible_equipment', width: 120, title: '责任设备', filters: [{data: ''}], slots: {filter: 'num1_filter'},filterMethod:filterChanged},
    {field: 'responsible_team', width: 120, title: '责任班组', filters: [{data: ''}], slots: {filter: 'num1_filter'},filterMethod:filterChanged},
    {field: 'rework_area', width: 120, title: '返工面积', filters: [{data: ''}], slots: {filter: 'num1_filter'},filterMethod:filterChanged},
    {field: 'rework_processes', width: 120, title: '返工工序', filters: [{data: ''}], slots: {filter: 'num1_filter'},filterMethod:filterChanged},
    {field: 'quality_inspector', width: 100, title: '质检员', filters: [{data: ''}], slots: {filter: 'num1_filter'},filterMethod:filterChanged},
    {field: 'reviewer', width: 100, title: '审核员', filters: [{data: ''}], slots: {filter: 'num1_filter'},filterMethod:filterChanged},
    {field: 'create_time', width: 100, title: '返工时间'},
    {field: 'update_time', width: 120, title: '返工审核时间'}
    {type:'checkbox',title: t('basicData.check'), width: 80,fixed:"left"},
    {type: 'seq', fixed: "left", title: t('basicData.Number'), width: 50},
    {field: 'review_status',title: t('basicData.review'), width: 40, slots: { default: 'state' }},
    {field: 'rework_id', width: 120, title: t('rework.reworkNumber'), filters: [{data: ''}], slots: {filter: 'num1_filter'},filterMethod:filterChanged},
    {field: 'rework_team', width: 120, title: t('rework.reworkTeam'), filters: [{data: ''}], slots: {filter: 'num1_filter'},filterMethod:filterChanged},
    {field: 'order_id', width: 120, title: t('order.orderId'), showOverflow: "ellipsis", filters: [{data: ''}], slots: {filter: 'num1_filter'},filterMethod:filterChanged},
    {field: 'process_id', width: 120, title: t('processCard.processId'), filters: [{data: ''}], slots: {filter: 'num1_filter'},filterMethod:filterChanged},
    {field: 'project', width: 120, title: t('order.project'), filters: [{data: ''}], slots: {filter: 'num1_filter'},filterMethod:filterChanged},
    {field: 'batch', width: 80, title: t('order.batch'), showOverflow: "ellipsis", filters: [{data: ''}], slots: {filter: 'num1_filter'},filterMethod:filterChanged},
    {field: 'order_sort', width: 80, title: t('order.OrderNum'), 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: 'technology_number', width: 80, title: t('replenish.mark'), showOverflow: "ellipsis", filters: [{data: ''}], slots: {filter: 'num1_filter'},filterMethod:filterChanged},
    {field: 'glass_address', width: 90, title: t('replenish.sliceMarking'), filters: [{data: ''}], slots: {filter: 'num1_filter'},filterMethod:filterChanged},
    {field: 'rework_num', width: 80, title: t('productStock.reworkQuantity'), filters: [{data: ''}], slots: {filter: 'num1_filter'},filterMethod:filterChanged},
    {field: 'width', width: 80, title: t('order.width'), filters: [{data: ''}], slots: {filter: 'num1_filter'},filterMethod:filterChanged},
    {field: 'height', width: 80, title: t('order.height'), filters: [{data: ''}], slots: {filter: 'num1_filter'},filterMethod:filterChanged},
    {field: 'shape', width: 80, title: t('order.shape'), filters: [{data: ''}], slots: {filter: 'num1_filter'},filterMethod:filterChanged},
    {field: 'rework_type', width: 100, title: t('rework.reworkType'), filters: [{data: ''}], slots: {filter: 'num1_filter'},filterMethod:filterChanged},
    {field: 'rework_reason', width: 120, title: t('rework.reasonForRework'), filters: [{data: ''}], slots: {filter: 'num1_filter'},filterMethod:filterChanged},
    {field: 'responsible_equipment', width: 120, title: t('reportingWorks.responsibleEquipment'), filters: [{data: ''}], slots: {filter: 'num1_filter'},filterMethod:filterChanged},
    {field: 'responsible_team', width: 120, title: t('reportingWorks.responsibleTeam'), filters: [{data: ''}], slots: {filter: 'num1_filter'},filterMethod:filterChanged},
    {field: 'rework_area', width: 120, title: t('rework.reworkArea'), filters: [{data: ''}], slots: {filter: 'num1_filter'},filterMethod:filterChanged},
    {field: 'rework_processes', width: 120, title: t('rework.reworkProcess'), filters: [{data: ''}], slots: {filter: 'num1_filter'},filterMethod:filterChanged},
    {field: 'quality_inspector', width: 100, title: t('reportingWorks.qualityInspector'), filters: [{data: ''}], slots: {filter: 'num1_filter'},filterMethod:filterChanged},
    {field: 'reviewer', width: 100, title: t('productStock.reviewed'), filters: [{data: ''}], slots: {filter: 'num1_filter'},filterMethod:filterChanged},
    {field: 'create_time', width: 100, title: t('productStock.productionDate')},
    {field: 'update_time', width: 120, title: t('productStock.approvedDate')}
  ],//表头按钮
  toolbarConfig: {
    buttons: [{
      'name': '审核',status: 'primary',
      'name': t('basicData.review'),status: 'primary',
      'code':'add'
    }],
    /*import: false,
@@ -167,7 +171,7 @@
    return[
      columns.map((column, columnIndex) => {
        if (columnIndex === 0) {
          return `合计`
          return t('basicData.total')
        }
        if (footList.includes(column.field)) {
          return sumNum(data, column.field)
@@ -190,7 +194,7 @@
          if ($table) {
            const selectRecords = $table.getCheckboxRecords()
            if (selectRecords.length === 0) {
              ElMessage.warning("未选中数据")
              ElMessage.warning(t('productStock.unselectedData'))
              return
            }
            let flowData = ref({
@@ -202,7 +206,7 @@
            })
            request.post("/rework/updateRework",flowData.value).then((res) => {
              if(res.code==200){
                ElMessage.success("审核成功")
                ElMessage.success(t('basicData.msg.ReviewSuccess'))
                router.push({path:'/main/rework/SelectRework',query:{random:Math.random()}})
              }else{
@@ -278,7 +282,7 @@
          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>
    </el-header>
@@ -303,11 +307,6 @@
        </ul>
      </template>
      <!--左边固定显示的插槽-->
      <template #button_slot="{ row }">
        <el-button @click="dialogFormVisible = true" link type="primary" size="small">编辑</el-button>
        <el-button @click="getTableRow(row,'setType')" link type="primary" size="small">审核</el-button>
      </template>
      <template #num1_filter="{ column, $panel }">
        <div>
@@ -338,30 +337,7 @@
    </vxe-grid>
<!--  返工管理-“编辑”弹窗  -->
    <el-dialog v-model="dialogFormVisible" title="返工编辑">
      <el-form :model="editData">
        <el-form-item label="返工编号" :label-width="formLabelWidth">
          <el-input v-model="form.name" disabled autocomplete="off" style="width: 200px"/>
        </el-form-item>
        <el-form-item label="返工班组" :label-width="formLabelWidth">
          <el-select v-model="form.region" placeholder="班组一" style="width: 200px">
            <el-option label="班组一" value="shanghai"/>
            <el-option label="班组二" value="beijing"/>
          </el-select>
        </el-form-item>
      </el-form>
      <template #footer>
      <span class="dialog-footer">
        <el-button @click="dialogFormVisible = false">取消</el-button>
        <el-button type="primary" @click="dialogFormVisible = false">
          确认
        </el-button>
      </span>
      </template>
    </el-dialog>
  </div>
</template>
north-glass-erp/northglass-erp/src/views/sd/customer/CreateCustomer.vue
@@ -4,6 +4,10 @@
import request from "@/utils/request"
import {ElMessage} from "element-plus";
import deepClone from "@/utils/deepClone"
import { useI18n } from 'vue-i18n'
//语言获取
const { t } = useI18n()
const router = useRouter()
const route = useRoute()
let produceList = ref([])
@@ -51,32 +55,32 @@
  //表头数据校验
  const customerName = ruleForm.value.customerName
  if(customerName === null || customerName === undefined || customerName === ''){
    ElMessage.error('输入客户名称!')
    ElMessage.error(t('customer.pleaseEnterTheCustomerName'))
    return
  }
  const grade = ruleForm.value.grade
  if(grade === null || grade === undefined || grade === ''){
    ElMessage.error('输入客户等级!')
    ElMessage.error(t('customer.pleaseEnterCustomerLevel'))
    return
  }
  const moneyLimit = ruleForm.value.moneyLimit
  if(moneyLimit === null || moneyLimit === undefined || moneyLimit === ''){
    ElMessage.error('输入金额额度!')
    ElMessage.error(t('customer.pleaseEnterTheAmountOfFunds'))
    return
  }
  const address = ruleForm.value.address
  if(address === null || address === undefined || address === ''){
    ElMessage.error('输入联系地址!')
    ElMessage.error(t('customer.pleaseEnterTheContactAddress'))
    return
  }
  const contact = ruleForm.value.contact
  if(contact === null || contact === undefined || contact === ''){
    ElMessage.error('输入联系人!')
    ElMessage.error(t('customer.pleaseEnterTheContactPerson'))
    return
  }
  const phone = ruleForm.value.phone
  if(phone === null || phone === undefined || phone === ''){
    ElMessage.error('输入类型电话!')
    ElMessage.error(t('customer.pleaseEnterTheContactPhoneNumber'))
    return
  }
@@ -87,7 +91,7 @@
  request.post("/customer/insertCustomer", flowData.value).then((res) => {
    if(res.code==200){
      resetForm()
      ElMessage.success("提交成功")
      ElMessage.success(t('basicData.msg.saveSuccess'))
    }else{
      ElMessage.warning(res.msg)
      router.push("/login")
@@ -111,32 +115,32 @@
    <div class="order-primary" >
      <el-row>
        <el-col  :span="2"><el-text>客户名称:</el-text></el-col>
        <el-col  :span="2"><el-text>{{ $t('customer.customerName') }}:</el-text></el-col>
        <el-col  :span="5"><el-input style="font-size: large;color: #181818" v-model="ruleForm.customerName"  ></el-input></el-col>
      </el-row>
      <el-row>
        <el-col  :span="2"><el-text>客户等级:</el-text></el-col>
        <el-col  :span="2"><el-text>{{ $t('customer.customerGrade') }}:</el-text></el-col>
        <el-col  :span="5"><el-input style="font-size: large;color: #181818" v-model="ruleForm.grade"  ></el-input></el-col>
      </el-row>
      <el-row>
        <el-col  :span="2"><el-text>信用额度:</el-text></el-col>
        <el-col  :span="2"><el-text>{{ $t('customer.creditLimit') }}:</el-text></el-col>
        <el-col  :span="5"><el-input style="font-size: large;color: #181818" v-model="ruleForm.moneyLimit"  ></el-input></el-col>
      </el-row>
      <el-row>
        <el-col  :span="2"><el-text>地址:</el-text></el-col>
        <el-col  :span="2"><el-text>{{ $t('customer.address') }}:</el-text></el-col>
        <el-col  :span="5"><el-input style="font-size: large;color: #181818" v-model="ruleForm.address"  ></el-input></el-col>
      </el-row>
      <el-row>
        <el-col  :span="2"><el-text>联系人:</el-text></el-col>
        <el-col  :span="2"><el-text>{{ $t('customer.contacts') }}:</el-text></el-col>
        <el-col  :span="5"><el-input style="font-size: large;color: #181818" v-model="ruleForm.contact"  ></el-input></el-col>
      </el-row>
      <el-row>
        <el-col  :span="2"><el-text>联系电话:</el-text></el-col>
        <el-col  :span="2"><el-text>{{ $t('customer.telephone') }}:</el-text></el-col>
        <el-col  :span="5"><el-input style="font-size: large;color: #181818" v-model="ruleForm.phone"  ></el-input></el-col>
      </el-row>
      <el-row>
        <el-col  :span="2"><el-button type="primary" @click="submitForm()">保存</el-button></el-col>
        <el-col  :span="2"><el-button @click="resetForm()">重置</el-button></el-col>
        <el-col  :span="2"><el-button type="primary" @click="submitForm()">{{ $t('basicData.save') }}</el-button></el-col>
        <el-col  :span="2"><el-button @click="resetForm()">{{ $t('customer.resetting') }}</el-button></el-col>
      </el-row>
    </div>
north-glass-erp/northglass-erp/src/views/sd/customer/Customer.vue
@@ -1,6 +1,10 @@
<script setup>
import {ArrowLeftBold, ArrowRight, Search} from "@element-plus/icons-vue"
import {useRouter} from "vue-router";
import { useI18n } from 'vue-i18n'
//语言获取
const { t } = useI18n()
let indexFlag=$ref(1)
function changeRouter(index){
  indexFlag=index
@@ -12,9 +16,9 @@
  <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/customer/selectCustomer' }">客户首页</el-breadcrumb-item>
        <el-breadcrumb-item @click="changeRouter(2)" :class="indexFlag===2?'indexTag':''" :to="{ path: '/main/customer/CreateCustomer' }">新增</el-breadcrumb-item>
        <el-breadcrumb-item v-show="false" :to="{ path: '/main/product/test1' }">测试</el-breadcrumb-item>
        <el-breadcrumb-item @click="changeRouter(1)" :class="indexFlag===1?'indexTag':''" :to="{ path: '/main/customer/selectCustomer' }">{{ $t('customer.customerHomePage') }}</el-breadcrumb-item>
        <el-breadcrumb-item @click="changeRouter(2)" :class="indexFlag===2?'indexTag':''" :to="{ path: '/main/customer/CreateCustomer' }">{{ $t('customer.increaseCustomers') }}</el-breadcrumb-item>
      </el-breadcrumb>
    </div>
north-glass-erp/northglass-erp/src/views/sd/customer/SelectCustomer.vue
@@ -7,6 +7,10 @@
import VXETable from "vxe-table";
import useUserInfoStore from "@/stores/userInfo";
import {ElMessage} from "element-plus";
import { useI18n } from 'vue-i18n'
//语言获取
const { t } = useI18n()
const userStore = useUserInfoStore()
const username = userStore.user.userName
@@ -184,15 +188,15 @@
  },//表头参数
  columns:[
          {type:'expand',fixed:"left",slots: { content:'content' },width: 60},
          {type: 'seq',fixed:"left", title: '自序', width: 80 },
          {title: '操作', width: 110, slots: { default: 'button_slot' },fixed:"left"},
          {field: 'id', title: '客户编码',filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true},
          {field: 'customerName', title: '名称',filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true},
          {field: 'grade', title: '客户等级',filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true},
          {field: 'moneyLimit', title: '信用额度',filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true},
          {field: 'address', title: '地址',filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true},
          {field: 'contact', title: '联系人',filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true},
          {field: 'phone', title: '联系电话',filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true}
          {type: 'seq',fixed:"left", title: t('basicData.Number'), width: 80 },
          {title: t('basicData.operate'), width: 110, slots: { default: 'button_slot' },fixed:"left"},
          {field: 'id', title: t('customer.customerNumber'),filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true},
          {field: 'customerName', title: t('customer.customerName'),filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true},
          {field: 'grade', title: t('customer.customerGrade'),filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true},
          {field: 'moneyLimit', title: t('customer.moneyLimit'),filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true},
          {field: 'address', title: t('customer.address'),filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true},
          {field: 'contact', title: t('customer.contacts'),filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true},
          {field: 'phone', title: t('customer.telephone'),filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true}
      ],//表头按钮
  toolbarConfig: {
    buttons: [],
@@ -206,7 +210,7 @@
    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)
@@ -245,8 +249,8 @@
      <!--左边固定显示的插槽-->
      <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 }">
north-glass-erp/northglass-erp/src/views/sd/delivery/CreateDelivery.vue
@@ -9,6 +9,10 @@
import useUserInfoStore from "@/stores/userInfo";
import {ElMessage} from "element-plus";
import {addListener,toolbarButtonClickEvent} from "@/hook/mouseMove";
import { useI18n } from 'vue-i18n'
//语言获取
const { t } = useI18n()
const router = useRouter()
const route = useRoute()
const userStore = useUserInfoStore()
@@ -327,39 +331,39 @@
  columns:[
    {type:'expand',fixed:"left",slots: { content:'content' },width: 60},
    {field: 'select',type:'checkbox',title: '选择', width: 80,fixed:"left"},
    {type: 'seq', title: '自序', width: 80 ,fixed:"left"},
    {field: 'orderId',width:120,  title: '销售单号',filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true,filterMethod:filterChanged},
    {field: 'order.batch',width:120,  title: '批次',filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true,filterMethod:filterChanged},
    {field: 'finishedGoodsInventory.quantityAvailable',width:120,  title: '库存可发',filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true,filterMethod:filterChanged},
    {field: 'order.quantity',width:120,  title: '未发数量',filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true,filterMethod:filterChanged},
    {field: 'quantity',width:120,  title: '总数量',filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true,filterMethod:filterChanged},
    {field: 'deliveryDetail.quantity',width:120,  title: '发货数量',editRender: { name: 'input', attrs: { placeholder: '' } },filters:[{ data: '' }],slots: { filter: 'num1_filter' },filterMethod:filterChanged},
    {field: 'buildingNumber',width:120,  title: '楼号',filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true,filterMethod:filterChanged},
    {field: 'productId',width:120,   title: '产品编号',filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true,filterMethod:filterChanged},
    {field: 'productName',width:120,  title: '产品名称',filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true,filterMethod:filterChanged},
    {field: 'price',width:120,  title: '单价',filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true,filterMethod:filterChanged},
    {field: 'finishedGoodsInventory.storageRegion',width:120,  title: '库区',filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true,filterMethod:filterChanged},
    {field: 'deliveryDetail.money',width:120,  title: '金额',filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true,filterMethod:filterChanged},
    {field: 'width',width:120,  title: '宽',filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true,filterMethod:filterChanged},
    {field: 'height',width:120,  title: '高',filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true,filterMethod:filterChanged},
    {field: 'shape',width:120,  title: '形状',filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true,filterMethod:filterChanged},
    {field: 'finishedGoodsInventory.actualSignalArea',width:120,   title: '单片面积',filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true,filterMethod:filterChanged},
    {field: 'grossArea',width:120,   title: '总面积',filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true,filterMethod:filterChanged},
    {field: 'computeArea',width:120,  title: '结算单片面积',filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true,filterMethod:filterChanged},
    {field: 'computeGrossArea',width:120,  title: '结算总面积',filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true,filterMethod:filterChanged},
    {field: 'processingNote',width:120,  title: '加工要求',filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true,filterMethod:filterChanged},
    {field: 'deliveryDetail.deliveryDetailRemakes',width:120,  title: '备注',filters:[{ data: '' }],slots: { filter: 'num1_filter' },filterMethod:filterChanged},
    {field: 'edgingType',width:120,  title: '磨边类型',filters:[{ data: '' }],slots: { filter: 'num1_filter' },filterMethod:filterChanged},
    {field: 'perimeter',width:120,  title: '周长',filters:[{ data: '' }],slots: { filter: 'num1_filter' },filterMethod:filterChanged},
    {field: 'select',type:'checkbox',title: t('basicData.check'), width: 80,fixed:"left"},
    {type: 'seq', title: t('basicData.Number'), width: 80 ,fixed:"left"},
    {field: 'orderId',width:120,  title: t('order.orderId'),filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true,filterMethod:filterChanged},
    {field: 'order.batch',width:120,  title: t('order.batch'),filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true,filterMethod:filterChanged},
    {field: 'finishedGoodsInventory.quantityAvailable',width:120,  title: t('delivery.availableStock'),filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true,filterMethod:filterChanged},
    {field: 'order.quantity',width:120,  title: t('delivery.unpaidQuantity'),filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true,filterMethod:filterChanged},
    {field: 'quantity',width:120,  title: t('order.quantity'),filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true,filterMethod:filterChanged},
    {field: 'deliveryDetail.quantity',width:120,  title: t('delivery.deliveryQuantity'),editRender: { name: 'input', attrs: { placeholder: '' } },filters:[{ data: '' }],slots: { filter: 'num1_filter' },filterMethod:filterChanged},
    //{field: 'buildingNumber',width:120,  title: '楼号',filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true,filterMethod:filterChanged},
    {field: 'productId',width:120,   title: t('order.productId'),filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true,filterMethod:filterChanged},
    {field: 'productName',width:120,  title: t('order.product'),filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true,filterMethod:filterChanged},
    {field: 'price',width:120,  title: t('order.price'),filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true,filterMethod:filterChanged},
    {field: 'finishedGoodsInventory.storageRegion',width:120,  title: t('productStock.inventoryArea'),filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true,filterMethod:filterChanged},
    {field: 'deliveryDetail.money',width:120,  title: t('order.grossAmount'),filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true,filterMethod:filterChanged},
    {field: 'width',width:120,  title: t('order.width'),filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true,filterMethod:filterChanged},
    {field: 'height',width:120,  title: t('order.height'),filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true,filterMethod:filterChanged},
    {field: 'shape',width:120,  title: t('order.shape'),filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true,filterMethod:filterChanged},
    {field: 'finishedGoodsInventory.actualSignalArea',width:120,   title: t('productStock.singlePieceArea'),filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true,filterMethod:filterChanged},
    {field: 'grossArea',width:120,   title: t('productStock.totalArea'),filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true,filterMethod:filterChanged},
    {field: 'computeArea',width:120,  title: t('order.computeArea'),filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true,filterMethod:filterChanged},
    {field: 'computeGrossArea',width:120,  title: t('order.computeGrossArea'),filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true,filterMethod:filterChanged},
    {field: 'processingNote',width:120,  title: t('order.processingNote'),filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true,filterMethod:filterChanged},
    {field: 'deliveryDetail.deliveryDetailRemakes',width:120,  title: t('productStock.remarks'),filters:[{ data: '' }],slots: { filter: 'num1_filter' },filterMethod:filterChanged},
    {field: 'edgingType',width:120,  title: t('order.edgingType'),filters:[{ data: '' }],slots: { filter: 'num1_filter' },filterMethod:filterChanged},
    {field: 'perimeter',width:120,  title: t('productStock.perimeter'),filters:[{ data: '' }],slots: { filter: 'num1_filter' },filterMethod:filterChanged},
  ],//表头按钮
  toolbarConfig: {
    buttons: [
      {'code': 'add', 'name': '保存',status: 'primary',icon: 'vxe-icon-save'},
      {'code': 'toExamine', 'name': '审核',status: 'primary'},
      {'code': 'CounterExamination', 'name': '反审',status: 'primary'}
      {'code': 'add', 'name': t('basicData.save'),status: 'primary',icon: 'vxe-icon-save'},
      {'code': 'toExamine', 'name': t('basicData.review'),status: 'primary'},
      {'code': 'CounterExamination', 'name': t('basicData.cancelReview'),status: 'primary'}
    ],
    /*import: false,
   export: true,
@@ -371,7 +375,7 @@
    return[
      columns.map((column, columnIndex) => {
        if (columnIndex === 0) {
          return `页数:${pageNum}/${pageTotal.value}`
          return t('basicData.total')
        }
        // if (props.tableProp.footList.includes(column.field)) {
        //   return sumNum(data, column.field)
@@ -392,28 +396,28 @@
          const selectRecords = $grid.getCheckboxRecords()
          if (selectRecords.length === 0) {
            ElMessage.warning("未选中数据")
            ElMessage.warning(t('productStock.unselectedData'))
            return
          }
          const errMap = await $grid.validate(selectRecords)
          if (errMap) {
            ElMessage.warning("数据校验失败")
            ElMessage.warning(t('productStock.dataVerificationFailed'))
            return
          }
          //表头数据校验
          const project = titleUploadData.value.project
          if(project === null || project === undefined || project === ''){
            ElMessage.error('输入项目名称!')
            ElMessage.error(t('delivery.pleaseEnterTheAmountOfFunds'))
            return
          }
          const paymentTerms = titleUploadData.value.paymentTerms
          if(paymentTerms === null || paymentTerms === undefined || paymentTerms === ''){
            ElMessage.error('请选择付款条件!')
            ElMessage.error(t('delivery.pleaseSelectPaymentTerms'))
            return
          }
          const payMethod = titleUploadData.value.payMethod
          if(payMethod === null || payMethod === undefined || payMethod === ''){
            ElMessage.error('请输入收款方式!')
            ElMessage.error(t('delivery.pleaseEnterThePaymentMethod'))
            return
          }
@@ -429,7 +433,7 @@
          console.log(flowData)
           request.post("/Delivery/insertDelivery", flowData.value).then((res) => {
             if(res.code==200){
               ElMessage.success("发货单提交成功")
               ElMessage.success(t('delivery.deliveryNoteSubmittedSuccessfully'))
               router.push({path: '/main/delivery/selectDelivery', query:{random:Math.random()}})
             }else{
               ElMessage.warning(res.msg)
@@ -446,7 +450,7 @@
          })
          request.post("/Delivery/updateDeliveryToExamine", flowData.value).then((res) => {
            if (res.code == 200) {
              ElMessage.success("审核成功")
              ElMessage.success(t('basicData.msg.ReviewSuccess'))
              router.push({path: '/main/delivery/selectDelivery', query:{random:Math.random()}})
            } else {
              ElMessage.warning(res.msg)
@@ -463,7 +467,7 @@
          })
          request.post("/Delivery/updateDeliveryToExamine", flowData.value).then((res) => {
            if (res.code == 200) {
              ElMessage.success("反审成功")
              ElMessage.success(t('basicData.msg.cancelReviewSuccess'))
              router.push({path: '/main/delivery/selectDelivery', query:{random:Math.random()}})
            } else {
              ElMessage.warning(res.msg)
@@ -514,19 +518,19 @@
/*数据校验*/
const validRules = ref({
  quantity: [
    { type: 'number', min: 0, message: '请输入大于等于0的数值' }
    { type: 'number', min: 0, message: t('delivery.pleaseEnterANumericalValueGreaterThanOrEqualTo0') }
  ],
    "deliveryDetail.quantity": [{
       validator (e) {
          if (e.row.deliveryDetail.quantity > e.row.finishedGoodsInventory.quantityAvailable) {
            return new Error('发货数量不能大于库存数')
            return new Error(t('delivery.theShipmentQuantityCannotBeGreaterThanTheInventoryQuantity'))
          }else if (e.row.deliveryDetail.quantity ==="") {
            return new Error('发货数量不能为空或者是0')
            return new Error(t('delivery.theShipmentQuantityCannotBeEmptyOr0'))
         }
         const regex = /^[1-9]\d*$/g
         if ( !regex.test(e.row.deliveryDetail.quantity) ) {
           return new Error('请输入正整数')
           return new Error(t('productStock.pleaseEnterAPositiveInteger'))
         }
       }
@@ -542,15 +546,15 @@
  <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('customer.customerNumber')}}:</el-text></el-col>
        <el-col  :span="3"><el-input style="font-size: large;color: #181818" v-model="titleUploadData.customerId" :readonly="true" ></el-input></el-col>
        <el-col  :span="2"><el-text>客户名称:</el-text></el-col>
        <el-col  :span="2"><el-text>{{$t('customer.customerName')}}:</el-text></el-col>
        <el-col  :span="5"><el-input  v-model="titleUploadData.customerName" :readonly="true"></el-input></el-col>
        <el-col  :span="2"><el-text>项目名称:</el-text></el-col>
        <el-col  :span="2"><el-text>{{$t('customer.customerNumber')}}:</el-text></el-col>
        <el-col  :span="5"><el-input v-model="titleUploadData.project" :readonly="true"></el-input></el-col>
      </el-row>
      <el-row>
        <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-select v-model="titleUploadData.paymentTerms"  clearable placeholder=""  >
            <el-option
@@ -561,20 +565,20 @@
            />
          </el-select>
        </el-col>
        <el-col  :span="2"><el-text>联系人:</el-text></el-col>
        <el-col  :span="2"><el-text>{{$t('customer.contacts')}}:</el-text></el-col>
        <el-col  :span="5"><el-input v-model="titleUploadData.contacts"/></el-col>
        <el-col  :span="2"><el-text>收款日期:</el-text></el-col>
        <el-col  :span="2"><el-text>{{$t('delivery.paymentDate')}}:</el-text></el-col>
        <el-col  :span="5">
          <el-date-picker
              v-model="titleUploadData.payDate"
              type="date"
              placeholder="选择日期"/>
              :placeholder="$t('delivery.selectDate')"/>
        </el-col>
      </el-row>
      <el-row>
        <el-col  :span="2"><el-text>收款方式:</el-text></el-col>
        <el-col  :span="2"><el-text>{{$t('delivery.paymentMethod')}}:</el-text></el-col>
        <el-col  :span="3">
          <el-select v-model="titleUploadData.payMethod"  clearable placeholder=""  >
            <el-option
@@ -585,28 +589,28 @@
            />
          </el-select>
        </el-col>
        <el-col  :span="2"><el-text>联系电话:</el-text></el-col>
        <el-col  :span="2"><el-text>{{$t('customer.telephone')}}:</el-text></el-col>
        <el-col  :span="5"><el-input v-model="titleUploadData.contactNumber"/></el-col>
        <el-col  :span="2"><el-text>送货地址:</el-text></el-col>
        <el-col  :span="2"><el-text>{{$t('customer.address')}}:</el-text></el-col>
        <el-col  :span="5"><el-input v-model="titleUploadData.deliveryAddress"/></el-col>
      </el-row>
      <el-row>
        <el-col  :span="2"><el-text>备注:</el-text></el-col>
        <el-col  :span="2"><el-text>{{$t('basicData.remarks')}}:</el-text></el-col>
        <el-col  :span="3"><el-input v-model="titleUploadData.remarks"/></el-col>
        <el-col  :span="2"><el-text>报表日期:</el-text></el-col>
        <el-col  :span="2"><el-text>{{$t('delivery.deliveryReportDate')}}:</el-text></el-col>
        <el-col  :span="5"><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('delivery.deliveryDate')}}:</el-text></el-col>
        <el-col  :span="5">
          <el-date-picker
              v-model="titleUploadData.deliveryDate"
              type="date"
              placeholder="选择日期"/>
              :placeholder="$t('delivery.selectDate')"/>
        </el-col>
      </el-row>
      <el-row>
        <el-col  :span="2"><el-text>业务员:</el-text></el-col>
        <el-col  :span="2"><el-text>{{$t('order.salesman')}}:</el-text></el-col>
        <el-col  :span="3"><el-input v-model="titleUploadData.salesman" :readonly="true"/></el-col>
        <el-col  :span="2"><el-text>发货员:</el-text></el-col>
        <el-col  :span="2"><el-text>{{$t('delivery.shipper')}}:</el-text></el-col>
        <el-col  :span="5"><el-input v-model="titleUploadData.creator" :readonly="true"/></el-col>
      </el-row>
    </div>
north-glass-erp/northglass-erp/src/views/sd/delivery/Delivery.vue
@@ -2,6 +2,10 @@
import {ArrowLeftBold, ArrowRight, Search} from "@element-plus/icons-vue"
import {useRouter,useRoute,onBeforeRouteUpdate} from "vue-router";
import { useI18n } from 'vue-i18n'
//语言获取
const { t } = useI18n()
const router = useRouter()
@@ -16,10 +20,10 @@
  <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/delivery/selectDelivery' }">发货首页</el-breadcrumb-item>
        <el-breadcrumb-item @click="changeRouter(2)" :class="indexFlag===2?'indexTag':''" :to="{ path: '/main/delivery/selectOrderList' }">订单发货</el-breadcrumb-item>
        <el-breadcrumb-item @click="changeRouter(3)" :class="indexFlag===3?'indexTag':''" :to="{ path: '/main/delivery/deliveryReport' }">报表</el-breadcrumb-item>
        <el-breadcrumb-item v-show="false" :to="{ path: '/main/delivery/deliveryReport' }">报表</el-breadcrumb-item>
        <el-breadcrumb-item @click="changeRouter(1)" :class="indexFlag===1?'indexTag':''" :to="{ path: '/main/delivery/selectDelivery' }">{{$t('delivery.shippingHomepage')}}</el-breadcrumb-item>
        <el-breadcrumb-item @click="changeRouter(2)" :class="indexFlag===2?'indexTag':''" :to="{ path: '/main/delivery/selectOrderList' }">{{$t('delivery.orderShipment')}}</el-breadcrumb-item>
<!--        <el-breadcrumb-item @click="changeRouter(3)" :class="indexFlag===3?'indexTag':''" :to="{ path: '/main/delivery/deliveryReport' }">{{$t('productStock.reportForms')}}</el-breadcrumb-item>-->
      </el-breadcrumb>
    </div>
north-glass-erp/northglass-erp/src/views/sd/delivery/SelectDelivery.vue
@@ -7,6 +7,10 @@
import VXETable from "vxe-table";
import useUserInfoStore from "@/stores/userInfo";
import {ElMessage} from "element-plus";
import { useI18n } from 'vue-i18n'
//语言获取
const { t } = useI18n()
const router = useRouter()
const userStore = useUserInfoStore()
const username = userStore.user.userName
@@ -19,8 +23,20 @@
      break
    }
    case 'delete':{
      alert('我接收到子组件传送的删除信息')
      break
      let flowData = ref({
        deliveryId:row.deliveryId
      })
      request.post("/Delivery/deleteDelivery",flowData.value).then((res) => {
        if(res.code==200){
          ElMessage.success(t('searchOrder.msgDeleteSuccess'))
          router.push({path:'/main/delivery/selectDelivery',query:{random:Math.random()}})
        }else{
          ElMessage.warning(res.msg)
          router.push("/login")
        }
      })
      return
    }
  }
}
@@ -172,24 +188,24 @@
  },//表头参数
  columns:[
    {type:'expand',slots: { content:'content' },width: 60},
    {title: '操作', width: 110, slots: { default: 'button_slot' }},
    {type: 'seq', title: '自序', width: 80 },
    {title: t('basicData.operate'), width: 110, slots: { default: 'button_slot' }},
    {type: 'seq', title: t('basicData.Number'), width: 80 },
    {field: 'deliveryState',title: '审核', width: 40, slots: { default: 'state' }},
    {field: 'stockState',title: '出库', width: 40, slots: { default: 'state' }},
    {field: 'deliveryState',title: t('basicData.review'), width: 40, slots: { default: 'state' }},
    {field: 'stockState',title: t('productStock.outbound'), width: 40, slots: { default: 'state' }},
    {field: 'deliveryId',width:120,  title: '发货单号',filters:[{ data: '' }],slots: { filter: 'num1_filter' }},
    {field: 'creator',width:120,  title: '发货员',filters:[{ data: '' }],slots: { filter: 'num1_filter' }},
    {field: 'deliveryDate',width:120,  title: '发货日期',filters:[{ data: '' }],slots: { filter: 'num1_filter' }},
    {field: 'customerId',width:120,  title: '客户编号',filters:[{ data: '' }],slots: { filter: 'num1_filter' }},
    {field: 'customerName',width:120,  title: '客户名称',filters:[{ data: '' }],slots: { filter: 'num1_filter' }},
    {field: 'project',width:120,  title: '项目名称',filters:[{ data: '' }],slots: { filter: 'num1_filter' }},
    {field: 'orderId',width:120,   title: '订单编号',filters:[{ data: '' }],slots: { filter: 'num1_filter' }},
    //{field: '11',width:120,  title: '付款条件',filters:[{ data: '' }],slots: { filter: 'num1_filter' }},
    {field: 'payMethod',width:120,  title: '付款方式',filters:[{ data: '' }],slots: { filter: 'num1_filter' }},
    {field: 'quantity',width:120,  title: '总数量',filters:[{ data: '' }],slots: { filter: 'num1_filter' }},
    {field: 'area',width:120,  title: '总面积',filters:[{ data: '' }],slots: { filter: 'num1_filter' }},
    {field: 'createTime',width:120,  title: '创建日期',filters:[{ data: '' }],slots: { filter: 'num1_filter' }}
    {field: 'deliveryId',width:120,  title: t('delivery.deliveryNoteNumber'),filters:[{ data: '' }],slots: { filter: 'num1_filter' }},
    {field: 'creator',width:120,  title: t('delivery.shipper'),filters:[{ data: '' }],slots: { filter: 'num1_filter' }},
    {field: 'deliveryDate',width:120,  title: t('delivery.deliveryDate'),filters:[{ data: '' }],slots: { filter: 'num1_filter' }},
    {field: 'customerId',width:120,  title: t('customer.customerNumber'),filters:[{ data: '' }],slots: { filter: 'num1_filter' }},
    {field: 'customerName',width:120,  title: t('customer.customerName'),filters:[{ data: '' }],slots: { filter: 'num1_filter' }},
    {field: 'project',width:120,  title: t('order.project'),filters:[{ data: '' }],slots: { filter: 'num1_filter' }},
    {field: 'orderId',width:120,   title: t('order.OrderNum'),filters:[{ data: '' }],slots: { filter: 'num1_filter' }},
    {field: 'paymentTerms',width:120,  title: t('delivery.paymentTerms'),filters:[{ data: '' }],slots: { filter: 'num1_filter' }},
    {field: 'payMethod',width:120,  title:t('delivery.paymentMethod'),filters:[{ data: '' }],slots: { filter: 'num1_filter' }},
    {field: 'quantity',width:120,  title: t('order.quantity'),filters:[{ data: '' }],slots: { filter: 'num1_filter' }},
    {field: 'area',width:120,  title: t('productStock.totalArea'),filters:[{ data: '' }],slots: { filter: 'num1_filter' }},
    {field: 'createTime',width:120,  title: t('productStock.statementDate'),filters:[{ data: '' }],slots: { filter: 'num1_filter' }}
  ],//表头按钮
@@ -206,7 +222,7 @@
    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)
@@ -230,7 +246,7 @@
        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="97%"
        @filter-change="filterChanged"
@@ -259,8 +275,8 @@
      <!--左边固定显示的插槽-->
      <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 }">
north-glass-erp/northglass-erp/src/views/sd/delivery/SelectOrderList.vue
@@ -7,6 +7,10 @@
import VXETable from "vxe-table";
import useUserInfoStore from "@/stores/userInfo";
import {ElMessage} from "element-plus";
import { useI18n } from 'vue-i18n'
//语言获取
const { t } = useI18n()
const router = useRouter()
const userStore = useUserInfoStore()
const username = userStore.user.userName
@@ -176,36 +180,36 @@
  columns:[
    {type:'expand',slots: { content:'content' },width: 60,fixed:"left"},
    {type:'checkbox',title: '选择', width: 80,fixed:"left"},
    {type: 'seq', title: '自序', width: 80 ,fixed:"left"},
    {type:'checkbox',title: t('basicData.check'), width: 80,fixed:"left"},
    {type: 'seq', title: t('basicData.Number'), width: 80 ,fixed:"left"},
    {field: 'createOrder',title: '下单', width: 40, slots: { default: 'state' }},
    {field: 'processReview',title: '工艺', width: 40, slots: { default: 'state' }},
    {field: 'orderReview',title: '审核', width: 40, slots: { default: 'state' }},
    {field: 'productionOrder',title: '生产', width: 40, slots: { default: 'state' }},
    {field: 'processingCard',title: '流程卡', width: 60, slots: { default: 'state' }},
    {field: 'warehousing',title: '入库', width: 40, slots: { default: 'state' }},
    {field: 'delivery',title: '发货', width: 40, slots: { default: 'state' }},
    {field: 'createOrder',title: t('delivery.place'), width: 40, slots: { default: 'state' }},
    {field: 'processReview',title: t('delivery.technology'), width: 40, slots: { default: 'state' }},
    {field: 'orderReview',title: t('basicData.review'), width: 40, slots: { default: 'state' }},
    {field: 'productionOrder',title: t('delivery.produce'), width: 40, slots: { default: 'state' }},
    {field: 'processingCard',title: t('delivery.traveler'), width: 60, slots: { default: 'state' }},
    {field: 'warehousing',title: t('delivery.warehousing'), width: 40, slots: { default: 'state' }},
    {field: 'delivery',title: t('delivery.delivery'), width: 40, slots: { default: 'state' }},
    {field: 'orderId',width:120,  title: '销售单号',filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true},
    {field: 'customerId',width:120,  title: '客户编号',filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true},
    {field: 'customerName',width:120,  title: '客户名称',filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true},
    {field: 'quantity',width:120,  title: '总数量',filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true},
    {field: 'finishedGoodsInventory.quantityAvailable',width:120,  title: '可用库存',filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true},
    {field: 'project',width:120,  title: '项目名称',filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true},
    {field: 'batch',width:120,  title: '批次',filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true},
    {field: 'money',width:120,   title: '总金额',filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true},
    {field: 'area',width:120,  title: '总面积',filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true},
    {field: 'createTime',width:120,  title: '报表日期',filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true},
    {field: 'packType',width:120,  title: '包装方式',filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true},
    {field: 'orderType',width:120,  title: '订单类型',filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true},
    {field: 'creator',width:120,  title: '创建人',filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true}
    {field: 'orderId',width:120,  title: t('order.orderId'),filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true},
    {field: 'customerId',width:120,  title: t('customer.customerNumber'),filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true},
    {field: 'customerName',width:120,  title: t('customer.customerName'),filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true},
    {field: 'quantity',width:120,  title: t('order.quantity'),filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true},
    {field: 'finishedGoodsInventory.quantityAvailable',width:120,  title: t('delivery.availableStock'),filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true},
    {field: 'project',width:120,  title: t('order.project'),filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true},
    {field: 'batch',width:120,  title: t('order.batch'),filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true},
    {field: 'money',width:120,   title: t('order.money'),filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true},
    {field: 'area',width:120,  title: t('productStock.totalArea'),filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true},
    {field: 'createTime',width:120,  title: t('productStock.statementDate'),filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true},
    {field: 'packType',width:120,  title: t('order.packType'),filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true},
    {field: 'orderType',width:120,  title: t('order.orderType'),filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true},
    {field: 'creator',width:120,  title:t('productStock.creator'),filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true}
  ],//表头按钮
  toolbarConfig: {
    buttons: [
      {'code': 'add', 'name': '发货',status: 'primary',icon: 'vxe-icon-add'}
      {'code': 'add', 'name': t('delivery.delivery'),status: 'primary',icon: 'vxe-icon-add'}
    ],
    /*import: false,
   export: true,
@@ -217,7 +221,7 @@
    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)
@@ -238,7 +242,7 @@
          if (selectRecords.length === 0) {
            ElMessage.warning("未选中数据")
            ElMessage.warning(t('productStock.unselectedData'))
            return
          }
          let order_id=""
@@ -253,7 +257,7 @@
          }
          //判断所选客户是否相同
          if(!isAllEqual(array)){
            ElMessage.warning("请选择相同的客户订单")
            ElMessage.warning(t('delivery.pleaseSelectTheSameCustomerOrder'))
            return
          }
@@ -292,7 +296,7 @@
        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="97%"
        class="mytable-scrollbar"
@@ -318,8 +322,8 @@
      <!--左边固定显示的插槽-->
      <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 }">
north-glass-erp/src/main/java/com/example/erp/controller/sd/DeliveryController.java
@@ -76,6 +76,18 @@
        }
    }
    @ApiOperation("发货删除接口")
    @PostMapping("/deleteDelivery")
    public Result deleteDelivery( @RequestBody Map<String,Object> object){
        if(deliveryService.deleteDelivery(object)){
            return Result.seccess();
        }else {
            throw new ServiceException(Constants.Code_500,"删除失败");
        }
    }
north-glass-erp/src/main/java/com/example/erp/mapper/sd/DeliveryMapper.java
@@ -40,6 +40,8 @@
    Boolean updateDeliveryToExamine(@Param("deliveryId") String deliveryId,@Param("deliveryState") int deliveryState);
    Boolean deleteDelivery(@Param("deliveryId") String deliveryId);
    Integer getmaximum(@Param("type") String type);
    Boolean updatedelivery(@Param("area") Double area,
north-glass-erp/src/main/java/com/example/erp/service/sd/DeliveryService.java
@@ -215,6 +215,33 @@
    }
    public Boolean deleteDelivery(Map<String,Object> object) {
        boolean saveState = true;
        //设置回滚点
        Object savePoint = TransactionAspectSupport.currentTransactionStatus().createSavepoint();
        try {
            String deliveryId = "";
            if (object.get("deliveryId") != null) {
                deliveryId = object.get("deliveryId").toString();
            }
            deliveryDetailMapper.deleteDeliveryDetail(deliveryId);
            deliveryMapper.deleteDelivery(deliveryId);
            return true;
        }catch (Exception e) {
            TransactionAspectSupport.currentTransactionStatus().rollbackToSavepoint(savePoint);
            //将异常传入数据库
            SysError sysError = new SysError();
            sysError.setError(e.toString());
            sysError.setFunc("saveOrder");
            sysErrorService.insert(sysError);
            saveState = false;
        }
        return saveState;
    }
    public String orderNumberSetting(String type) {
        //根据类型自动生成不同的操作单号
north-glass-erp/src/main/resources/mapper/mm/FinishedGoodsInventory.xml
@@ -162,7 +162,7 @@
                 left join sd.order_detail od on fgi.order_id = od.order_id and fgi.order_number = od.order_number
                 left join sd.`order` o on fgi.order_id = o.order_id
        <where>
                and fgi.quantity_available>0
                and fgi.status = 0 and fgi.quantity_available>0
            <if test="orderDetail.finishedGoodsInventory.orderId != null and orderDetail.finishedGoodsInventory.orderId != ''">
                and fgi.order_id regexp #{orderDetail.finishedGoodsInventory.orderId}
            </if>
north-glass-erp/src/main/resources/mapper/sd/Delivery.xml
@@ -28,6 +28,10 @@
        <result column="quantity_available" property="finishedGoodsInventory.quantityAvailable"/>
    </resultMap>
    <delete id="deleteDelivery">
        delete from sd.delivery where delivery_id=#{deliveryId}
    </delete>
    <update id="updateDeliveryToExamine">
        update sd.delivery set delivery_state=#{deliveryState} where delivery_id=#{deliveryId}
    </update>
north-glass-erp/target/classes/mapper/mm/FinishedGoodsInventory.xml
@@ -162,7 +162,7 @@
                 left join sd.order_detail od on fgi.order_id = od.order_id and fgi.order_number = od.order_number
                 left join sd.`order` o on fgi.order_id = o.order_id
        <where>
                and fgi.quantity_available>0
                and fgi.status = 0 and fgi.quantity_available>0
            <if test="orderDetail.finishedGoodsInventory.orderId != null and orderDetail.finishedGoodsInventory.orderId != ''">
                and fgi.order_id regexp #{orderDetail.finishedGoodsInventory.orderId}
            </if>
north-glass-erp/target/classes/mapper/pp/ReworkMapper.xml
@@ -45,8 +45,7 @@
        <where>
            date(r.create_time)>=#{startDate} and date(r.create_time) &lt;= #{endDate}
        </where>
         order by r.review_status,r.id desc
        limit #{offset},#{pageSize};
         order by r.review_status,r.id desc limit #{offset},#{pageSize};
    </select>
    <select id="SelectReworkPageTotal" >
@@ -118,7 +117,7 @@
        values (
                   #{oddNumber}, #{rework.reportingWorkId},#{rework.processId},#{rework.orderId},#{rework.orderSort},#{rework.technologyNumber},#{rework.responsibleTeam},
                #{rework.responsiblePersonnel},#{rework.reworkType},#{rework.reworkReason},#{rework.reworkProcesses},#{rework.reworkNum},
                #{rework.reworkArea},#{rework.reworkTeam},#{rework.responsibleEquipment},#{rework.qualityInspector},"",0,now()
                #{rework.reworkArea},#{rework.reworkTeam},#{rework.responsibleEquipment},#{rework.qualityInspector},'',0,now()
               )
    </insert>
north-glass-erp/target/classes/mapper/sd/Delivery.xml
@@ -28,6 +28,10 @@
        <result column="quantity_available" property="finishedGoodsInventory.quantityAvailable"/>
    </resultMap>
    <delete id="deleteDelivery">
        delete from sd.delivery where delivery_id=#{deliveryId}
    </delete>
    <update id="updateDeliveryToExamine">
        update sd.delivery set delivery_state=#{deliveryState} where delivery_id=#{deliveryId}
    </update>