guoyuji
2024-03-13 31ae2fb2901f37b46ec31e778c8585ef6f981548
添加语言切换以及修改文件
10个文件已修改
1246 ■■■■ 已修改文件
north-glass-erp/northglass-erp/src/lang/en.js 440 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
north-glass-erp/northglass-erp/src/lang/index.js 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
north-glass-erp/northglass-erp/src/lang/zh.js 437 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
north-glass-erp/northglass-erp/src/views/LoginView.vue 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
north-glass-erp/northglass-erp/src/views/sd/order/CreateOrder.vue 168 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
north-glass-erp/northglass-erp/src/views/sd/order/Order.vue 10 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
north-glass-erp/northglass-erp/src/views/sd/order/SelectOrder.vue 94 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
north-glass-erp/northglass-erp/src/views/sd/order/UpdateOrderCraft.vue 89 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
north-glass-erp/northglass-erp/src/views/sd/product/CreateProduct.vue 3 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
north-glass-erp/src/main/java/com/example/erp/controller/userInfo/SysMenuController.java 1 ●●●● 补丁 | 查看 | 原始文档 | 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/index.js
@@ -9,7 +9,7 @@
}
const i18n = createI18n({
    locale: localStorage.getItem('lang') || 'en', // 设置当前语言类型
    locale: localStorage.getItem('lang') || 'zh', // 设置当前语言类型
    legacy: false, // 如果要支持compositionAPI,此项必须设置为false;
    globalInjection: true, // 全局注册$t方法
    messages
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/LoginView.vue
@@ -35,7 +35,7 @@
const validatePass = (rule: any, value: any, callback: any) => {
  if (value === '') {
    callback(new Error(t('login.psErr')))
    callback(new Error(  t('login.psErr')  ))
  } else {
    callback()
  }
north-glass-erp/northglass-erp/src/views/sd/order/CreateOrder.vue
@@ -9,7 +9,8 @@
import SelectProduct from "@/views/sd/product/SelectProduct.vue"
import {changeFilterEvent,filterChanged} from "@/hook"
import {addListener,toolbarButtonClickEvent} from "@/hook/mouseMove";
import {CaretBottom} from "@element-plus/icons-vue";
import {useI18n} from "vue-i18n"
const { t } = useI18n()
let dialogTableVisible = ref(false)
let productVisible = ref(false)
@@ -31,7 +32,7 @@
  orderId:'',
  deliveryDate:'',
  batch:'',
  calculateType:'',
  calculateType:null,
  salesmanId:'',
  salesman:'',
  alType:'',
@@ -79,12 +80,12 @@
    body: {
      options: [
        [
          { code: 'addRow', name: '添加', prefixIcon: 'vxe-icon-square-plus', visible: true, disabled: false },
          { code: 'deleteRow', name: '删除', prefixIcon: 'vxe-icon-delete', visible: true, disabled: true },
          { code: 'copyChecked', name: '选中相同', prefixIcon: 'vxe-icon-copy', visible: true, disabled: false },
          { code: 'copyAll', name: '之后相同', prefixIcon: 'vxe-icon-feedback', visible: true, disabled: false },
          { code: 'clearChecked', name: '清除选中', prefixIcon: 'vxe-icon-indicator', visible: true, disabled: false },
          { code: 'computedMoney', name: '计算金额', prefixIcon: 'vxe-icon-chart-bar-x', visible: true, disabled: true },
          { code: 'addRow', name: t('basicData.add'), prefixIcon: 'vxe-icon-square-plus', visible: true, disabled: false },
          { code: 'deleteRow', name: t('basicData.delete'), prefixIcon: 'vxe-icon-delete', visible: true, disabled: true },
          { code: 'copyChecked', name: t('basicData.selectSame'), prefixIcon: 'vxe-icon-copy', visible: true, disabled: false },
          { code: 'copyAll', name: t('basicData.sameAfterwards'), prefixIcon: 'vxe-icon-feedback', visible: true, disabled: false },
          { code: 'clearChecked', name: t('basicData.clearSelection'), prefixIcon: 'vxe-icon-indicator', visible: true, disabled: false },
          { code: 'computedMoney', name: t('basicData.calculateAmount'), prefixIcon: 'vxe-icon-chart-bar-x', visible: true, disabled: true },
        ]
      ]
    }
@@ -105,45 +106,44 @@
    showStatus: true
  },//表头参数
  columns:[
    {type: 'seq',fixed:"left", title: '自序', width: 80 },
    {type: 'seq',fixed:"left", title: t('basicData.Number'), width: 80 },
    // {field: 'buildingNumber',width:120,  title: '楼号',editRender: { name: 'input'},filters:[{ data: '' }],slots: { filter: 'num1_filter'}, sortable: true,filterMethod:filterChanged},
    {field: 'productId',width:100,  title: '产品ID',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:140,  title: '单价',editRender: { name: 'input'},filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true,filterMethod:filterChanged},
    {field: 'quantity',width:120,  title: '数量',editRender: { name: 'input'},filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true,filterMethod:filterChanged},
    {field: 'grossAmount',width:120,  title: '总金额',filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true,filterMethod:filterChanged},
    {field: 'width',width:120,  title: '宽',editRender: { name: 'input'},filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true,filterMethod:filterChanged},
    {field: 'height',width:120,  title: '高',editRender: { name: 'input'},filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true,filterMethod:filterChanged},
    {field: 'area',width:150,  title: '实际单片面积',filters:[{ data: '' }],slots: { filter: 'num1_filter'}, sortable: true,filterMethod:filterChanged},
    {field: 'grossArea',width:140,  title: '实际总面积',filters:[{ data: '' }],slots: { filter: 'num1_filter'}, sortable: true,filterMethod:filterChanged},
    {field: 'computeArea',width:180,  title: '结算单片面积',editRender: { name: 'input'},filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true,filterMethod:filterChanged},
    {field: 'computeGrossArea',width:140,  title: '结算总面积',filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true,filterMethod:filterChanged},
    {field: 'shape',width:120,  title: '形状',editRender: { name: 'input'},filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true,filterMethod:filterChanged},
    {field: 'bendRadius',width:140,  title: '弯钢弧度',editRender: { name: 'input'},filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true,filterMethod:filterChanged},
    {field: 'edgingType',width:140,  title: '磨边类型',editRender: { name: 'input'},filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true,filterMethod:filterChanged},
    {field: 'processingNote',width:140,  title: '加工要求',editRender: { name: 'input'},filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true,filterMethod:filterChanged},
    {field: 'remarks',width:120,  title: '备注',editRender: { name: 'input'},filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true,filterMethod:filterChanged}
    {field: 'productId',width:140,  title: t('order.productId'),filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true,filterMethod:filterChanged},
    {field: 'productName',width:300,  title: t('order.product'),filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true,filterMethod:filterChanged},
    {field: 'price',width:140,  title: t('order.price'),editRender: { name: 'input'},filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true,filterMethod:filterChanged},
    {field: 'quantity',width:140,  title: t('order.quantity'),editRender: { name: 'input'},filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true,filterMethod:filterChanged},
    {field: 'grossAmount',width:160,  title: t('order.grossAmount'),filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true,filterMethod:filterChanged},
    {field: 'width',width:120,  title: t('order.width') ,editRender: { name: 'input'},filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true,filterMethod:filterChanged},
    {field: 'height',width:140,  title: t('order.height'),editRender: { name: 'input'},filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true,filterMethod:filterChanged},
    {field: 'area',width:150,  title: t('order.trueArea'),filters:[{ data: '' }],slots: { filter: 'num1_filter'}, sortable: true,filterMethod:filterChanged},
    {field: 'grossArea',width:160,  title: t('order.trueGrossArea'),filters:[{ data: '' }],slots: { filter: 'num1_filter'}, sortable: true,filterMethod:filterChanged},
    {field: 'computeArea',width:180,  title: t('order.computeArea'),editRender: { name: 'input'},filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true,filterMethod:filterChanged},
    {field: 'computeGrossArea',width:200,  title: t('order.computeGrossArea'),filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true,filterMethod:filterChanged},
    {field: 'shape',width:120,  title: t('order.shape'),editRender: { name: 'input'},filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true,filterMethod:filterChanged},
    {field: 'bendRadius',width:160,  title: t('order.bendRadius'),editRender: { name: 'input'},filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true,filterMethod:filterChanged},
    {field: 'edgingType',width:160,  title: t('order.edgingType'),editRender: { name: 'input'},filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true,filterMethod:filterChanged},
    {field: 'processingNote',width:200,  title: t('order.processingNote'),editRender: { name: 'input'},filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true,filterMethod:filterChanged},
    {field: 'remarks',width:140,  title: t('basicData.remarks'),editRender: { name: 'input'},filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true,filterMethod:filterChanged}
  ],
  //表单验证
  editRules: {
    buildingNumber: [
      { required: false},
      { min: 0, max: 255, message: '名称长度在 0 到 255 个字符' }
      { min: 0, max: 255, message: t('basicData.msg.max255') }
    ],
    productId: [
      { required: true, message: '请选择产品' }
      { required: true, message: t('order.msg.productCheck') }
    ],
    productName: [
      { required: true, message: '请选择产品' }
      { required: true, message: t('order.msg.productCheck') }
    ],
    price: [
      {
        validator ({ cellValue }) {
          const regex = /^(0(\.\d{1,2})?|([1-9]\d{0,4})(\.\d{1,2})?|99999(\.9{1,2})?)$/
          if ( !regex.test(cellValue) ) {
            return new Error('输入0.00~99999.99的数字')
            return new Error(t('basicData.msg.range99999Dec2') )
          }
        }
      }
@@ -153,7 +153,7 @@
        validator ({ cellValue }) {
          const regex = /^(0(\.\d{1,2})?|([1-9]\d{0,4})(\.\d{1,2})?|99999(\.9{1,2})?)$/
          if (!regex.test(cellValue)) {
            return new Error('输入0.00~99999.99的数字')
            return new Error(t('basicData.msg.range99999Dec2'))
          }
        }
      }
@@ -164,7 +164,7 @@
        validator ({ cellValue }) {
          const regex = /^[1-9]\d*$/
          if (!regex.test(cellValue)) {
            return new Error('输入大于0的整数')
            return new Error(t('basicData.msg.greater0'))
          }
        }}
    ],
@@ -173,7 +173,7 @@
        validator ({ cellValue }) {
          const regex = /^(0(\.\d{1,2})?|([1-9]\d{0,4})(\.\d{1,2})?|99999(\.9{1,2})?)$/
          if (!regex.test(cellValue)) {
            return new Error('输入0.00~99999.99的数字')
            return new Error(t('basicData.msg.range99999Dec2'))
          }
        }
      }
@@ -183,7 +183,7 @@
        validator ({ cellValue }) {
          const regex = /^(0|[1-9][0-9]{0,4}([.][0-9]{1,2})?)$/
          if ( !regex.test(cellValue)) {
            return new Error('输入0.00~99999.99的数字')
            return new Error(t('basicData.msg.range99999Dec2'))
          }
        }
      }
@@ -191,11 +191,11 @@
  },
  toolbarConfig: {
    buttons: [
      {'code': 'remarks', 'name': '加工要求'},
      {'code': 'Craft', 'name': '工艺',status: 'primary',disabled: true},
      {'code': 'review', 'name': '审核',status: 'primary',disabled: true},
      {'code': 'updateMoney', 'name': '金额重置',status: 'primary',disabled: true},
      {'code': 'saveOrder', 'name': '保存',status: 'primary',icon: 'vxe-icon-save',disabled: false}
      {'code': 'remarks', 'name': t('order.processingNote')},
      {'code': 'Craft', 'name': t('order.technology'),status: 'primary',disabled: true},
      {'code': 'review', 'name': t('basicData.review'),status: 'primary',disabled: true},
      {'code': 'updateMoney', 'name': t('order.amountReset'),status: 'primary',disabled: true},
      {'code': 'saveOrder', 'name': t('basicData.save'),status: 'primary',icon: 'vxe-icon-save',disabled: false}
    ],
    slots: {
      tools: 'toolbar_buttons'
@@ -212,7 +212,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)
@@ -250,39 +250,39 @@
        }
        case 'saveOrder': {
          if ($grid.getTableData().tableData.length === 0){
            ElMessage.error('没有表格数据!')
            ElMessage.error( t('order.msg.tableLengthNot'))
            return
          }
          if(!gridOptions.menuConfig.body.options[0][5].disabled){
            ElMessage.error('请先打开右击菜单重新计算金额后,再保存!')
            ElMessage.error(t('order.msg.amountReset'))
            return
          }
          const project = titleUploadData.value.project
          if(project === null || project === undefined || project === ''){
            ElMessage.error('输入项目名称!')
            ElMessage.error(t('order.msg.projectCheck'))
            return
          }
          const customer = titleUploadData.value.customerId
          if(customer === null || customer === undefined || customer === ''){
            ElMessage.error('请选择客户!')
            ElMessage.error(t('order.msg.customerCheck'))
            return
          }
          const salasMan = titleUploadData.value.salesman
          if(salasMan === null || salasMan === undefined || salasMan === ''){
            ElMessage.error('请选择业务员!')
            ElMessage.error(t('order.msg.salasManCheck'))
            return
          }
          const calculateType = titleUploadData.value.calculateType
          if(calculateType === null || calculateType === undefined || calculateType === ''){
            ElMessage.error('请选择计算方式!')
            ElMessage.error(t('order.msg.calculateTypeCheck'))
            return
          }
          if ($grid) {
            const errMap = await $grid.validate(true)
            if (errMap) {
              ElMessage.error(`校验不通过!`)
              ElMessage.error(t('basicData.msg.checkoutLose'))
              return
            }
            let order ={
@@ -306,7 +306,7 @@
        }
        case 'addRow': {
          if ($grid.getTableData().tableData.length >=240){
            ElMessage.error('表格数据已达到最大值!')
            ElMessage.error(t('order.msg.tableLengthMax'))
            return
          }
          $grid.insert({})
@@ -392,7 +392,7 @@
//获取子页面产品方法
const getProductRow = (row) => {
  if(row.state!=1){
    ElMessage.warning('该产品还未审核')
    ElMessage.warning(t('order.msg.productStateCheck'))
    return
  }
@@ -413,7 +413,6 @@
  }
  request.post(`/order/getOrderById/${str}`).then((res) => {
    if(res.code==200){
      console.log(res.data.order)
      titleUploadData.value = res.data.order
      //取消工艺按钮禁用
      gridOptions.toolbarConfig.buttons[1].disabled = false
@@ -430,7 +429,7 @@
      if(res.data.order.orderReview === 2){
        gridOptions.toolbarConfig.buttons[2].disabled = false
        gridOptions.toolbarConfig.buttons[2].code='reviews'
        gridOptions.toolbarConfig.buttons[2].name='反审'
        gridOptions.toolbarConfig.buttons[2].name=t('basicData.cancelReview')
        gridOptions.toolbarConfig.buttons[3].disabled = false
      }
      if(res.data.order.productionOrder !==0 ){
@@ -455,6 +454,7 @@
    titleUploadData.value.icon = titleSelectJson.value.icon[0].basicName
    titleUploadData.value.packType = titleSelectJson.value.packType[0].basicName
    titleUploadData.value.alType = titleSelectJson.value.alType[0].basicName
    titleUploadData.value.calculateType=1
    const today = new Date
    today.setTime(today.getTime() + (15 * 24 * 60 * 60 * 1000))
    titleUploadData.value.deliveryDate = today.getFullYear() +
@@ -469,7 +469,7 @@
const saveOrder = (order) => {
  request.post(`/order/saveOrder`,order).then((res) => {
    if(res.code==200){
      ElMessage.success('保存成功')
      ElMessage.success(t('basicData.msg.saveSuccess'))
      router.push({path:'/main/order/selectOrder'})
    }else {
      ElMessage.error(res.msg)
@@ -485,7 +485,7 @@
  }
  request.post(`/order/updateOrderMoney`,updateData).then(res => {
    if (res.code == 200){
      ElMessage.success('更新金额成功')
      ElMessage.success( t('order.msg.updateAmountSuccessfully') )
      router.push({path:'/main/order/createOrder',query:{orderId:titleUploadData.value.orderId,random:Math.random()}})
    }
@@ -500,13 +500,13 @@
    if(res.code==200){
      gridOptions.toolbarConfig.buttons[2].disabled = true
      if(state==2){
        ElMessage.success('审核成功!')
        ElMessage.success(t('basicData.msg.ReviewSuccess') )
      }else if (state==0){
        ElMessage.success('反审成功!')
        ElMessage.success(t('basicData.msg.cancelReviewSuccess'))
      }
      setTimeout(() =>{
        location.reload()
      },1500)
      router.push({path:'/main/order/createOrder',query:{
        orderId:titleUploadData.value.orderId,
        random:Math.random()}})
    }else{
      ElMessage.error(res.msg)
@@ -554,7 +554,10 @@
    const workbook = XLXS.read(data, { type: 'binary' })
    let jsonData = XLXS.utils.sheet_to_json(workbook.Sheets.Sheet1).slice(1)
    if(jsonData.length>240){
      ElMessage.error(`导入${jsonData.length}条,数据不能超过240条,请分订单导入`)
      ElMessage.error(`${t('order.msg.importMaxCheckFailFirst')}
                          ${jsonData.length}
                          ${t('order.msg.importMaxCheckFailMid')}
                          ${t('order.msg.importMaxCheckFailLast')}`)
      return
    }
    jsonData.forEach((item,index) => {
@@ -598,15 +601,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('order.project')}}:</el-text></el-col>
        <el-col  :span="2"><el-input v-model="titleUploadData.project"/></el-col>
        <el-col  :span="2"><el-text>*客户选择:</el-text></el-col>
        <el-col  :span="2"><el-text>*{{$t('order.customers')}}:</el-text></el-col>
        <el-col  :span="2">
          <el-select  v-model="titleUploadData.customerId"
                      @change="changeCustomer"
                      filterable
                      clearable
                      placeholder="" >
                      placeholder=" " >
            <el-option v-for="item in titleSelectJson['customer']"
                       :key="item.id"
                       :label="item.id+' '+item.customerName"
@@ -614,7 +617,7 @@
                       />
          </el-select>
        </el-col>
        <el-col  :span="2"><el-text>*订单类型:</el-text></el-col>
        <el-col  :span="2"><el-text>*{{$t('order.orderType')}}:</el-text></el-col>
        <el-col  :span="2">
          <el-select v-model="titleUploadData.orderType"  clearable placeholder=""  >
            <el-option
@@ -625,7 +628,7 @@
            />
          </el-select>
        </el-col>
        <el-col  :span="2"><el-text>订单分类:</el-text></el-col>
        <el-col  :span="2"><el-text>{{$t('order.orderClassify')}}:</el-text></el-col>
        <el-col  :span="2">
          <el-select v-model="titleUploadData.orderClassify"  clearable placeholder=" " >
            <el-option
@@ -636,7 +639,7 @@
            />
          </el-select>
        </el-col>
        <el-col  :span="2"><el-text>商标选项:</el-text></el-col>
        <el-col  :span="2"><el-text>{{$t('order.icon')}}:</el-text></el-col>
        <el-col  :span="2">
          <el-select v-model="titleUploadData.icon"  clearable placeholder=" " >
            <el-option  v-for="item in titleSelectJson['icon']"
@@ -645,7 +648,7 @@
                       :value="item.basicName"/>
          </el-select>
        </el-col>
        <el-col  :span="2"><el-text>包装方式:</el-text></el-col>
        <el-col  :span="2"><el-text>{{$t('order.packType')}}:</el-text></el-col>
        <el-col  :span="2">
          <el-select v-model="titleUploadData.packType"  clearable placeholder=" " >
            <el-option v-for="item in titleSelectJson['packType']"
@@ -657,9 +660,9 @@
        <!--      <el-col :span="2"><el-text  /></el-col>-->
      </el-row>
      <el-row>
        <el-col  :span="2"><el-text>销售单号:</el-text></el-col>
        <el-col  :span="2"><el-text>{{$t('order.orderId')}}:</el-text></el-col>
        <el-col  :span="2"><el-text  >{{titleUploadData.orderId}}</el-text></el-col>
        <el-col  :span="2"><el-text>交货日期:</el-text></el-col>
        <el-col  :span="2"><el-text>{{$t('order.deliveryDate')}}:</el-text></el-col>
        <el-col  :span="2">
          <el-date-picker
              v-model="titleUploadData.deliveryDate"
@@ -667,15 +670,15 @@
              placeholder=""
              />
        </el-col>
        <el-col  :span="2"><el-text>批次:</el-text></el-col>
        <el-col  :span="2"><el-text>{{$t('order.batch')}}:</el-text></el-col>
        <el-col  :span="2"><el-input  v-model="titleUploadData.batch"/></el-col>
        <el-col  :span="2"><el-text>计算方式:</el-text></el-col>
        <el-col  :span="2"><el-text>{{$t('order.calculateType')}}:</el-text></el-col>
        <el-col  :span="2">
          <el-select v-model="titleUploadData.calculateType"  clearable placeholder=" " >
            <el-option :value="1" label="面积金额(单片)"/>
          </el-select>
        </el-col>
        <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="2">
          <el-select
              v-model="titleUploadData.salesmanId"
@@ -689,7 +692,7 @@
                       :value="item.id"/>
          </el-select>
        </el-col>
        <el-col  :span="2"><el-text>铝条方式:</el-text></el-col>
        <el-col  :span="2"><el-text>{{$t('order.alType')}}</el-text></el-col>
        <el-col  :span="2">
          <el-select v-model="titleUploadData.alType" clearable placeholder=" " >
            <el-option v-for="item in titleSelectJson['alType']"
@@ -700,17 +703,17 @@
        </el-col>
      </el-row>
      <el-row>
        <el-col  :span="2"><el-text>总金额:</el-text></el-col>
        <el-col  :span="2"><el-text>{{$t('order.money')}}:</el-text></el-col>
        <el-col  :span="2"><el-text >{{titleUploadData.money}}</el-text></el-col>
        <el-col  :span="2"><el-text>合同编号:</el-text></el-col>
        <el-col  :span="2"><el-text>{{$t('order.customers')}}:</el-text></el-col>
        <el-col  :span="2"><el-input v-model="titleUploadData.contractId"/></el-col>
        <el-col  :span="2"><el-text>客户批次:</el-text></el-col>
        <el-col  :span="2"><el-text>{{$t('order.customerBatch')}}:</el-text></el-col>
        <el-col  :span="2"><el-input v-model="titleUploadData.customerBatch"/></el-col>
        <el-col  :span="2"><el-text>联系人:</el-text></el-col>
        <el-col  :span="2"><el-text>{{$t('order.contacts')}}:</el-text></el-col>
        <el-col  :span="2"><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('order.contactNumber')}}:</el-text></el-col>
        <el-col  :span="2"><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('order.deliveryAddress')}}:</el-text></el-col>
        <el-col  :span="2"><el-input v-model="titleUploadData.deliveryAddress"/></el-col>
      </el-row>
<!--      <el-row>-->
@@ -740,13 +743,13 @@
          </div>
        </template>
        <template #toolbar_buttons>
          <vxe-button  @click="importEvent">导入</vxe-button>
          <vxe-button  @click="importEvent">{{$t('order.import')}}</vxe-button>
        </template>
      </vxe-grid>
    </div>
    <el-dialog v-model="dialogTableVisible" title="加工要求" style="width: 60%;height:75% ">
    <el-dialog v-model="dialogTableVisible" :title="$t('order.processingNote')" style="width: 60%;height:75% ">
      <el-input
          v-model="titleUploadData.processingNote"
          type="textarea"
@@ -756,12 +759,7 @@
    <el-dialog v-model="productVisible"  style="width: 80%;height:75% ">
      <select-product :rowIndex="rowIndex" @getProductRow="getProductRow" style="width: 100%;height: 100%" />
    </el-dialog>
<!--选中表格 -->
<!--    <div class="vxe-table&#45;&#45;cell-area" ref="cellArea" >-->
<!--      <span  class="vxe-table&#45;&#45;cell-main-area"  ></span>-->
<!--      <span class="vxe-table&#45;&#45;cell-active-area"  ></span>-->
<!--    </div>-->
  </div>
</template>
north-glass-erp/northglass-erp/src/views/sd/order/Order.vue
@@ -1,6 +1,8 @@
<script setup>
import {ArrowLeftBold, ArrowRight, Search} from "@element-plus/icons-vue"
import {useRouter,useRoute,onBeforeRouteUpdate} from "vue-router";
import {useRouter,useRoute,onBeforeRouteUpdate} from "vue-router"
import {useI18n} from "vue-i18n"
const { t } = useI18n()
const router = useRouter()
const route = useRoute()
let indexFlag=$ref(1)
@@ -18,9 +20,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/order/selectOrder' }">订单首页</el-breadcrumb-item>
        <el-breadcrumb-item @click="changeRouter(2)" :class="indexFlag===2?'indexTag':''" :to="{ path: '/main/order/createOrder' }">创建</el-breadcrumb-item>
        <el-breadcrumb-item @click="changeRouter(3)" :class="indexFlag===3?'indexTag':''" :to="{ path: '/main/order/orderReport' }">报表</el-breadcrumb-item>
        <el-breadcrumb-item @click="changeRouter(1)" :class="indexFlag===1?'indexTag':''" :to="{ path: '/main/order/selectOrder' }">{{$t('order.orderHomePage')}}</el-breadcrumb-item>
        <el-breadcrumb-item @click="changeRouter(2)" :class="indexFlag===2?'indexTag':''" :to="{ path: '/main/order/createOrder' }">{{$t('basicData.create')}}</el-breadcrumb-item>
        <el-breadcrumb-item @click="changeRouter(3)" :class="indexFlag===3?'indexTag':''" :to="{ path: '/main/order/orderReport' }">{{$t('order.orderReport')}}</el-breadcrumb-item>
        <el-breadcrumb-item v-show="false" :to="{ path: '/main/order/orderReport' }">报表</el-breadcrumb-item>
      </el-breadcrumb>
    </div>
north-glass-erp/northglass-erp/src/views/sd/order/SelectOrder.vue
@@ -1,13 +1,15 @@
<script setup>
  import {Search} from "@element-plus/icons-vue"
  import {useRouter} from "vue-router"
  import {reactive, ref} from "vue";
  const router = useRouter()
  import {reactive, ref} from "vue"
  import ProcessCardProgress from '@/views/pp/report/ProcessCardProgress.vue'
  import request from "@/utils/request";
  import deepClone from "@/utils/deepClone";
  import {ElMessage} from "element-plus";
  import {VXETable} from "vxe-table";
  import deepClone from "@/utils/deepClone"
  import {ElMessage} from "element-plus"
  import {VXETable} from "vxe-table"
  import {useI18n} from "vue-i18n"
  const { t } = useI18n()
  const router = useRouter()
  const xGrid = ref()
@@ -41,35 +43,35 @@
    },//表头参数
    columns:[
      {type:'expand',slots: { content:'content' },width: 50,fixed:"left",},
      {title: '操作', width: 110, slots: { default: 'button_slot' },fixed:"left",},
      {type: 'seq', title: '自序', width: 80 ,fixed:"left",},
      {title: t('basicData.operate'), width: 110, slots: { default: 'button_slot' },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: 40, slots: { default: 'state' }},
      {field:'warehousing',title: '入库', width: 40, slots: { default: 'state' }},
      {field:'delivery',title: '发货', width: 40, slots: { default: 'state' }},
      {field:'createOrder',title: t('searchOrder.createOrder'), width: 40, slots: { default: 'state' }},
      {field:'processReview',title: t('order.technology'), width: 40, slots: { default: 'state' }},
      {field:'orderReview',title: t('basicData.review'), width: 40, slots: { default: 'state' }},
      {field:'productionOrder',title: t('searchOrder.production'), width: 40, slots: { default: 'state' }},
      {field:'processingCard',title: t('searchOrder.process'), width: 40, slots: { default: 'state' }},
      {field:'warehousing',title: t('searchOrder.storage'), width: 40, slots: { default: 'state' }},
      {field:'delivery',title: t('searchOrder.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: '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: 'quantity',width:120,  title: '数量',filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true},
      {field: '14',width:120,  title: '库存数', 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: 'salesman',width:120,  title: '业务员',filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true},
      {field: 'perimeter',width:120,  title: '周长',filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true},
      {field: 'deliveryDate',width:120,  title: '交货日期',filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true},
      {field: 'customerBatch',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: '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: 'quantity',width:120,  title: t('order.quantity'),filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true},
      {field: '14',width:120,  title: t('searchOrder.inventoryNum'), sortable: true},
      {field: 'area',width:120,  title: t('order.computeGrossArea'),filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true},
      {field: 'createTime',width:120,   title: t('basicData.reportData'),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: 'salesman',width:120,  title: t('order.salesman'),filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true},
      {field: 'perimeter',width:120,  title: t('searchOrder.perimeter'),filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true},
      {field: 'deliveryDate',width:120,  title: t('order.deliveryDate'),filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true},
      {field: 'customerBatch',width:120,  title: t('order.customerBatch'),filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true},
      //{field: '14',width:120,  title: '备注',filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true},
      {field: 'deliveryAddress',width:120,  title: '地址',filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true}
      {field: 'deliveryAddress',width:120,  title: t('order.deliveryAddress'),filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true}
    ],//表头按钮
    toolbarConfig: {
@@ -91,7 +93,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)
@@ -109,7 +111,7 @@
        switch (code) {
          case 'checkList': {
            if($grid.getCheckboxRecords().length==0){
              VXETable.modal.message( '请选择一条数据!')
              VXETable.modal.message( t('searchOrder.msg'))
              return
            }
            break
@@ -219,15 +221,15 @@
      }
      case 'delete': {
        if (row.processReview === 2) {
          ElMessage.warning('已审核的订单不能删除')
          ElMessage.warning(t('searchOrder.msgDelete'))
          return
        }
        request.post(`/order/deleteOrder/${row.orderId}`).then((res) => {
          if(res.code==200){
            ElMessage.success('删除成功')
            location.reload()
            ElMessage.success(t('searchOrder.msgDeleteSuccess'))
            router.push({path:'/main/order/selectOrder',query:{random:Math.random()}})
          }else{
            ElMessage.warning('删除失败')
            ElMessage.warning(t('searchOrder.msgDeleteFail'))
          }
        })
        break
@@ -244,13 +246,13 @@
    <el-date-picker
        v-model="selectDate"
        type="daterange"
        start-placeholder="开始时间"
        end-placeholder="结束时间"
        :start-placeholder="$t('basicData.startDate')"
        :end-placeholder="$t('basicData.startDate')"
        format="YYYY-MM-DD"
        value-format="YYYY-MM-DD"
    />
    <el-button @click="changeDate" style="margin-top: -5px"  id="searchButton" type="primary" :icon="Search">查询</el-button>
    <el-button @click="changeDate" style="margin-top: -5px"  id="searchButton" type="primary" :icon="Search">{{ $t('basicData.search') }}</el-button>
    <vxe-grid
        @filter-change="filterChanged"
        @cell-dblclick="cellClickEvent"
@@ -276,10 +278,10 @@
      <!--左边固定显示的插槽-->
      <template #button_slot="{ row }">
        <el-button @click="getTableRow(row,'edit')" link type="primary" size="small">编辑</el-button>
        <el-popconfirm @confirm="getTableRow(row,'delete')" title="确认删除订单?">
        <el-button @click="getTableRow(row,'edit')" link type="primary" size="small">{{ $t('basicData.edit') }}</el-button>
        <el-popconfirm @confirm="getTableRow(row,'delete')" :title="$t('basicData.deleteConfirm')">
          <template #reference>
            <el-button  link type="primary" size="small">删除</el-button>
            <el-button  link type="primary" size="small">{{ $t('basicData.delete') }}</el-button>
          </template>
        </el-popconfirm>
      </template>
@@ -293,10 +295,10 @@
      </template>
      <template #toolbar_buttons>
        <vxe-select @change="changeOrderType" v-model="orderType" placeholder="订单类型">
          <vxe-option value="2" label="正常订单"></vxe-option>
          <vxe-option value="-2" label="作废订单"></vxe-option>
          <vxe-option value="0" label="全部订单"></vxe-option>
        <vxe-select @change="changeOrderType" v-model="orderType" :placeholder="$t('searchOrder.orderType')">
          <vxe-option value="2" :label="$t('searchOrder.regularOrders')"></vxe-option>
          <vxe-option value="-2" :label="$t('searchOrder.cancelledOrders')"></vxe-option>
          <vxe-option value="0" :label="$t('searchOrder.allOrders')"></vxe-option>
        </vxe-select>
      </template>
north-glass-erp/northglass-erp/src/views/sd/order/UpdateOrderCraft.vue
@@ -4,7 +4,8 @@
import request from "@/utils/request"
import {ElMessage} from "element-plus"
import {changeFilterEvent,filterChanged} from "@/hook"
import SelectProduct from "@/views/sd/product/SelectProduct.vue";
import {useI18n} from "vue-i18n"
const { t } = useI18n()
const router = useRouter()
const route = useRoute()
@@ -40,25 +41,25 @@
    showStatus: true
  },//表头参数
  columns:[
    {title: '操作', width: 110, slots: { default: 'button_slot' },fixed:"left",},
    {field: 'orderNumber',width:120,  title: '序号',filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true,filterMethod:filterChanged},
    {title: t('basicData.operate'), width: 110, slots: { default: 'button_slot' },fixed:"left",},
    {field: 'orderNumber',width:120,  title: t('order.OrderNum'),filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true,filterMethod:filterChanged},
    //{field: 'orderDetail.buildingNumber',width:120,  title: '楼号',filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true},
    {field: 'orderDetail.productName',width:120,  title: '成品名称',filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true,filterMethod:filterChanged},
    {field: 'glassAddress',width:120,  title: '标记',filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true,filterMethod:filterChanged},
    {field: 'glassChild',width:120,  title: '子产品',filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true,filterMethod:filterChanged},
    {field: 'orderDetail.width',width:120,  title: '成品宽',filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true,filterMethod:filterChanged},
    {field: 'orderDetail.height',width:120,  title: '成品高',filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true,filterMethod:filterChanged},
    {field: 'orderDetail.shape',width:120,  title: '形状',filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true,filterMethod:filterChanged},
    {field: 'totalArea',width:120,  title: '总尺寸',filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true,filterMethod:filterChanged},
    {field: 'childWidth',width:120,  title: '单片宽',editRender: { name: 'input'},filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true,filterMethod:filterChanged},
    {field: 'childHeight',width:120,  title: '单片高',editRender: { name: 'input'},filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true,filterMethod:filterChanged},
    {field: 'area',width:120,  title: '单片尺寸',filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true,filterMethod:filterChanged},
    {field: 'orderDetail.quantity',width:120,  title: '数量',filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true,filterMethod:filterChanged},
    {field: 'process',width:120,  title: '工艺流程',filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true,filterMethod:filterChanged},
    {field: 'icon',width:120,  title: '商标',editRender: { name: 'input'},filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true,filterMethod:filterChanged},
    {field: 'orderDetail.processingNote',width:120,  title: '加工要求',filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true,filterMethod:filterChanged},
    {field: 'orderDetail.remarks',width:120,  title: '备注',filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true,filterMethod:filterChanged},
    {field: 'orderDetail.edgingType',width:120,  title: '磨边类型',filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true,filterMethod:filterChanged}
    {field: 'orderDetail.productName',width:120,  title: t('order.product'),filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true,filterMethod:filterChanged},
    {field: 'glassAddress',width:120,  title: t('craft.glassAddress'),filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true,filterMethod:filterChanged},
    {field: 'glassChild',width:120,  title: t('craft.glassChild'),filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true,filterMethod:filterChanged},
    {field: 'orderDetail.width',width:120,  title: t('craft.width'),filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true,filterMethod:filterChanged},
    {field: 'orderDetail.height',width:120,  title: t('craft.height'),filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true,filterMethod:filterChanged},
    {field: 'orderDetail.shape',width:120,  title: t('order.shape'),filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true,filterMethod:filterChanged},
    {field: 'totalArea',width:120,  title: t('craft.totalArea'),filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true,filterMethod:filterChanged},
    {field: 'childWidth',width:120,  title: t('craft.childWidth'),editRender: { name: 'input'},filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true,filterMethod:filterChanged},
    {field: 'childHeight',width:120,  title: t('craft.childHeight'),editRender: { name: 'input'},filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true,filterMethod:filterChanged},
    {field: 'area',width:120,  title: t('craft.area'),filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true,filterMethod:filterChanged},
    {field: 'orderDetail.quantity',width:120,  title: t('order.quantity'),filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true,filterMethod:filterChanged},
    {field: 'process',width:120,  title: t('craft.process'),filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true,filterMethod:filterChanged},
    {field: 'icon',width:120,  title: t('order.icon'),editRender: { name: 'input'},filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true,filterMethod:filterChanged},
    {field: 'orderDetail.processingNote',width:120,  title: t('order.processingNote'),filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true,filterMethod:filterChanged},
    {field: 'orderDetail.remarks',width:120,  title: t('order.remarks'),filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true,filterMethod:filterChanged},
    {field: 'orderDetail.edgingType',width:120,  title: t('order.edgingType'),filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true,filterMethod:filterChanged}
  ],//表头按钮
  mergeCells: [
    /*{ row: 0, col: 1, rowspan: 4, colspan: 1 },
@@ -71,9 +72,9 @@
  ],
  toolbarConfig: {
    buttons: [
      {'code': 'remarks', 'name': '加工要求'},
      {'code': 'Craft', 'name': '订单详情',status: 'primary'},
      {'code': 'review', 'name': '审核',status: 'primary'},
      {'code': 'remarks', 'name': t('order.processingNote')},
      {'code': 'Craft', 'name': t('craft.orderDetail'),status: 'primary'},
      {'code': 'review', 'name': t('basicData.review'),status: 'primary'},
    ],
    // import: false,
    // export: true,
@@ -85,7 +86,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)
@@ -198,7 +199,7 @@
      if(res.data.order.processReview === 2 ){
        //gridOptions.toolbarConfig.buttons[2].disabled = false
        gridOptions.toolbarConfig.buttons[2].code='reviews'
        gridOptions.toolbarConfig.buttons[2].name='反审'
        gridOptions.toolbarConfig.buttons[2].name=t('basicData.cancelReview')
      }
@@ -223,13 +224,11 @@
    if(res.code==200){
      gridOptions.toolbarConfig.buttons[2].disabled = true
      if(state==2){
        ElMessage.success('审核成功!')
        ElMessage.success(t('basicData.msg.reviewSuccess'))
      }else if (state==0){
        ElMessage.success('反审成功!')
        ElMessage.success(t('basicData.msg.cancelReviewSuccess'))
      }
      setTimeout(() =>{
        location.reload()
      },1500)
      router.push({path:'/main/order/updateOrderCraft',query:{orderId:titleUploadData.value.orderId,random:Math.random()}})
    }else{
      ElMessage.error(res.msg)
@@ -247,25 +246,25 @@
    <div class="order-primary" style="background-color: white">
      <el-row>
        <el-col  :span="4"><el-text>销售单号:</el-text></el-col>
        <el-col  :span="4"><el-text>{{t('order.orderId')}}</el-text></el-col>
        <el-col  :span="4"><el-text>{{titleUploadData.orderId}}</el-text></el-col>
        <el-col  :span="4"><el-text>客户名称:</el-text></el-col>
        <el-col  :span="4"><el-text>{{t('customer.customerName')}}</el-text></el-col>
        <el-col  :span="4"><el-text>{{titleUploadData.customerName}}</el-text></el-col>
        <el-col  :span="4"><el-text>项目名称:</el-text></el-col>
        <el-col  :span="4"><el-text>{{t('order.project')}}</el-text></el-col>
        <el-col  :span="4"><el-text>{{titleUploadData.project}}</el-text></el-col>
      </el-row>
      <el-row>
        <el-col  :span="4"><el-text>订单批次:</el-text></el-col>
        <el-col  :span="4"><el-text>{{t('order.batch')}}</el-text></el-col>
        <el-col  :span="4"><el-text>{{titleUploadData.batch}}</el-text></el-col>
        <el-col  :span="4"><el-text>订单类型:</el-text></el-col>
        <el-col  :span="4"><el-text>{{t('order.orderType')}}</el-text></el-col>
        <el-col  :span="4"><el-text>{{ titleUploadData.orderType }}</el-text></el-col>
        <el-col  :span="4"><el-text>业务员</el-text></el-col>
        <el-col  :span="4"><el-text>{{t('order.salesman')}}</el-text></el-col>
        <el-col  :span="4"><el-text>{{titleUploadData.salesman}}</el-text></el-col>
      </el-row>
      <el-row>
        <el-col  :span="4"><el-text>包装方式:</el-text></el-col>
        <el-col  :span="4"><el-text>{{t('order.packType')}}</el-text></el-col>
        <el-col  :span="4"><el-text>{{titleUploadData.packType}}</el-text></el-col>
        <el-col  :span="4"><el-text>交货日期:</el-text></el-col>
        <el-col  :span="4"><el-text>{{t('order.deliveryDate')}}</el-text></el-col>
        <el-col  :span="4"><el-text>{{titleUploadData.deliveryDate}}</el-text></el-col>
      </el-row>
    </div>
@@ -291,7 +290,7 @@
        <!--左边固定显示的插槽-->
        <template #button_slot="{ row }">
          <el-button @click="updateCraft(row)" link type="primary" size="small">修改工艺</el-button>
          <el-button @click="updateCraft(row)" link type="primary" size="small">{{t('craft.updateCraft')}}</el-button>
        </template>
        <template #num1_filter="{ column, $panel }">
@@ -304,7 +303,7 @@
      </vxe-grid>
    </div>
    <el-dialog v-model="dialogTableVisible" title="加工要求" style="width: 60%;height:75% ">
    <el-dialog v-model="dialogTableVisible" :title="$t('order.processingNote')" style="width: 60%;height:75% ">
      <el-input
          v-model="titleUploadData.processingNote"
          type="textarea"
@@ -312,8 +311,8 @@
      />
    </el-dialog>
    <el-dialog v-model="craftVisible" title="工艺流程" style="width: 60%;height:60% ;position: relative;" >
      <h5>工艺属性</h5>
    <el-dialog v-model="craftVisible" :title="$t('craft.technologicalProcess')" style="width: 60%;height:60% ;position: relative;" >
      <h5>{{$t('craft.processAttribute')}}</h5>
      <el-checkbox
          v-model="craftObj.newCraft"
          v-for="item in process"
@@ -324,16 +323,16 @@
      <el-row style="width: 90%;border: 0;position: absolute;bottom: 1rem; left: 50%;transform: translateX(-50%);">
        <span class="ml-3 w-35 text-gray-600 inline-flex items-center"
        >原流程:
        >{{$t('craft.oldProcess')}}:
        </span>
        <el-input :value="oldCraftComputed" disabled class="w-50 m-2" />
        <span class="ml-3 w-35 text-gray-600 inline-flex items-center"
        >流程:
        >{{$t('craft.newProcess')}}:
        </span>
        <el-input :value="newCraftComputed" disabled class="w-50 m-2" />
        <el-col style="margin-top: 0.5rem">
          <el-button type="primary" @click="resetCraft">重置</el-button>
          <el-button type="primary" @click="saveCraft">保存</el-button>
          <el-button type="primary" @click="resetCraft">{{$t('craft.reset')}}</el-button>
          <el-button type="primary" @click="saveCraft">{{$t('basicData.save')}}</el-button>
        </el-col>
      </el-row>
north-glass-erp/northglass-erp/src/views/sd/product/CreateProduct.vue
@@ -548,7 +548,7 @@
              @click="updateHollowSure"
              size="small"
              type="primary"
              round>夹层间隔物修改</el-button>
              round>中空间隔物修改</el-button>
        </div>
        <div class="glass-spacer-zk">
          <el-select
@@ -740,7 +740,6 @@
          <el-col :span="16">
            <el-input
                :value="item.detail"
                value="5mm白玻"
                size="small"
                disabled  />
          </el-col>
north-glass-erp/src/main/java/com/example/erp/controller/userInfo/SysMenuController.java
@@ -21,7 +21,6 @@
    private SysMenuService sysMenuService;
    @GetMapping("/getMenu/{lang}")
    public Result getMenu(@PathVariable String lang){
        System.out.println(lang);
        MyChannelHandlerPool myChannelHandlerPool = new MyChannelHandlerPool();
        //myChannelHandlerPool.sendMsg("123");
        //MyChannelHandlerPool.channelGroup.writeAndFlush( new TextWebSocketFrame("123123"));