guoyuji
2024-06-13 c3360be51c33fbdf16a379156d29cc5cd919e50e
Merge branch 'master' of http://bore.pub:10439/r/ERP_override
68个文件已修改
1个文件已删除
2026 ■■■■ 已修改文件
north-glass-erp/northglass-erp/config.js 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
north-glass-erp/northglass-erp/src/components/BasicTable.vue 3 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
north-glass-erp/northglass-erp/src/lang/zh.js 232 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
north-glass-erp/northglass-erp/src/views/pp/Replenish/AddReplenish.vue 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
north-glass-erp/northglass-erp/src/views/pp/Replenish/SelectReplenish.vue 6 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
north-glass-erp/northglass-erp/src/views/pp/machine/AddMachine.vue 10 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
north-glass-erp/northglass-erp/src/views/pp/machine/AddMaintenanceAndRepair.vue 28 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
north-glass-erp/northglass-erp/src/views/pp/machine/Machine.vue 10 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
north-glass-erp/northglass-erp/src/views/pp/machine/MaintenanceAndRepair.vue 64 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
north-glass-erp/northglass-erp/src/views/pp/machine/SelectMachine.vue 24 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
north-glass-erp/northglass-erp/src/views/pp/processCard/AddProcessCard.vue 6 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
north-glass-erp/northglass-erp/src/views/pp/processCard/PrintFlowCard.vue 37 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
north-glass-erp/northglass-erp/src/views/pp/processCard/PrintLabel.vue 38 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
north-glass-erp/northglass-erp/src/views/pp/processCard/PrintProcess.vue 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
north-glass-erp/northglass-erp/src/views/pp/processCard/ProcessCard.vue 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
north-glass-erp/northglass-erp/src/views/pp/processCard/ProductionScheduling.vue 196 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
north-glass-erp/northglass-erp/src/views/pp/processCard/SelectDetailProcessCard.vue 26 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
north-glass-erp/northglass-erp/src/views/pp/processCard/SelectPrintFlowCard.vue 14 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
north-glass-erp/northglass-erp/src/views/pp/processCard/SelectProcessCard.vue 24 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
north-glass-erp/northglass-erp/src/views/pp/reportingWorks/AddReportingWork.vue 80 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
north-glass-erp/northglass-erp/src/views/pp/reportingWorks/QualityInReviewDetail.vue 38 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
north-glass-erp/northglass-erp/src/views/pp/reportingWorks/QualityInspectionReview.vue 44 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
north-glass-erp/northglass-erp/src/views/pp/reportingWorks/ReportingWorks.vue 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
north-glass-erp/northglass-erp/src/views/pp/reportingWorks/SelectReportingWorks.vue 34 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
north-glass-erp/northglass-erp/src/views/pp/rework/AddRework.vue 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
north-glass-erp/northglass-erp/src/views/pp/rework/SelectRework.vue 8 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
north-glass-erp/northglass-erp/src/views/pp/workOrder/AddWorkOrder.vue 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
north-glass-erp/northglass-erp/src/views/pp/workOrder/SelectWorkOrder.vue 12 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
north-glass-erp/northglass-erp/src/views/pp/workOrder/WorkOrder.vue 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
north-glass-erp/northglass-erp/src/views/sd/basicData/BasicData.vue 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
north-glass-erp/northglass-erp/src/views/sd/basicData/CreateBasicData.vue 60 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
north-glass-erp/northglass-erp/src/views/sd/basicData/SearchBasicData.vue 8 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
north-glass-erp/northglass-erp/src/views/sd/basicData/SearchGlassType.vue 20 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
north-glass-erp/northglass-erp/src/views/sd/customer/CreateCustomer.vue 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
north-glass-erp/northglass-erp/src/views/sd/customer/SelectCustomer.vue 10 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
north-glass-erp/northglass-erp/src/views/sd/customer/SelectCustomerOrder.vue 18 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
north-glass-erp/northglass-erp/src/views/sd/delivery/CreateDelivery.vue 18 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
north-glass-erp/northglass-erp/src/views/sd/delivery/Delivery.vue 6 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
north-glass-erp/northglass-erp/src/views/sd/delivery/DeliveryProductReport.vue 52 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
north-glass-erp/northglass-erp/src/views/sd/delivery/DeliveryReport.vue 48 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
north-glass-erp/northglass-erp/src/views/sd/delivery/SelectDelivery.vue 12 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
north-glass-erp/northglass-erp/src/views/sd/delivery/SelectOrderList.vue 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
north-glass-erp/northglass-erp/src/views/sd/order/CreateOrder.vue 41 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
north-glass-erp/northglass-erp/src/views/sd/order/Order.vue 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
north-glass-erp/northglass-erp/src/views/sd/order/OrderProductSummaryReport.vue 71 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
north-glass-erp/northglass-erp/src/views/sd/order/OrderReport.vue 71 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
north-glass-erp/northglass-erp/src/views/sd/order/SelectOrder.vue 6 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
north-glass-erp/northglass-erp/src/views/sd/order/UpdateOrderCraft.vue 36 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
north-glass-erp/northglass-erp/src/views/sd/product/CreateProduct.vue 113 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
north-glass-erp/northglass-erp/src/views/sd/product/SelectProduct.vue 38 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
north-glass-erp/northglass-erp/src/views/system/role/Role.vue 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
north-glass-erp/northglass-erp/src/views/system/role/RoleList.vue 42 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
north-glass-erp/northglass-erp/src/views/system/user/User.vue 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
north-glass-erp/northglass-erp/src/views/system/user/UserList.vue 14 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
north-glass-erp/northglass-erp/src/views/system/userPassWord/UpdateUserPassWord.vue 26 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
north-glass-erp/northglass-erp/src/views/system/userPassWord/UserPassWord.vue 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
north-glass-erp/src/main/java/com/example/erp/controller/pp/ProcessCardController.java 8 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
north-glass-erp/src/main/java/com/example/erp/controller/pp/ProductionSchedulingController.java 19 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
north-glass-erp/src/main/java/com/example/erp/entity/pp/PrintSetup.java 18 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
north-glass-erp/src/main/java/com/example/erp/entity/pp/ProductionScheduling.java 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
north-glass-erp/src/main/java/com/example/erp/mapper/pp/FlowCardMapper.java 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
north-glass-erp/src/main/java/com/example/erp/mapper/pp/ProductionSchedulingMapper.java 10 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
north-glass-erp/src/main/java/com/example/erp/service/pp/FlowCardService.java 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
north-glass-erp/src/main/java/com/example/erp/service/pp/ProductionSchedulingService.java 33 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
north-glass-erp/src/main/resources/application.yml 8 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
north-glass-erp/src/main/resources/mapper/pp/FolwCard.xml 8 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
north-glass-erp/src/main/resources/mapper/pp/ProductionScheduling.xml 201 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
north-glass-erp/src/main/resources/mapper/pp/Report.xml 10 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
north-glass-erp/src/main/resources/mapper/pp/ReportingWork.xml 6 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
north-glass-erp/northglass-erp/config.js
@@ -1,4 +1,4 @@
export default {
  serverUrl:"localhost:8086"
  //serverUrl:"10.153.19.150:8080"
  //serverUrl:"192.168.1.199:8086"
}
north-glass-erp/northglass-erp/src/components/BasicTable.vue
@@ -8,6 +8,9 @@
import deepClone from "@/utils/deepClone";
import {ElMessage} from "element-plus";
import * as XLSX from "xlsx";
import {useI18n} from "vue-i18n";
const { t } = useI18n()
const xGrid = ref()
let filterData = ref({})
const gridOptions = reactive({
north-glass-erp/northglass-erp/src/lang/zh.js
@@ -43,6 +43,18 @@
        startDate:'开始时间',
        endDate:'结束时间',
        reportData:'报表日期',
        confirmButtonText: '确认',
        cancelButtonText: '取消',
        creationTime:'创建时间',
        insert: '新增',
        update:'修改',
        number:'序号',
        otherAmounts:'其他金额',
        errorSettlementArea:'误差结算面积',
        sizeReview:'尺寸审核',
        reportForms:'报表',
        print:'打印',
        msg:{
            max255:"最多输入255个字符",
            range99999Dec2:
@@ -52,12 +64,30 @@
            saveSuccess:'保存成功',
            saveFail:'保存失败',
            cancelReviewSuccess:'反审成功',
            ReviewSuccess:'审核成功'
            ReviewSuccess:'审核成功',
            ServerConnectionError:'服务器连接错误',
            deleteSuccess:'删除成功',
            deleteFail:'删除失败',
            reviewFail:'审核失败',
            noProductDataInTheTable:'表格中无产品数据',
            tableDataExceedsMaximumLimit:'表格数据超过最大限制',
        }
    },
    product:{
       ProductHomePage:'产品首页',
       create:'创建',
        ProductHomePage:'产品首页',
        create:'创建',
        coloredGlaze:'彩釉',
        frostedSand:'蒙砂',
        coating:'镀膜',
        filmApplication:'贴膜',
        sandblasting:'喷砂',
        edgeGrinding:'磨边',
        productName:'名称',
        typeName:'所属类别',
        query:'快速查询',
        creator:'创建人',
       msg:{
           productLength:'请添加产品详情',
           lastGlass:'产品详情最后一条不是玻璃,请完善',
@@ -105,6 +135,7 @@
           create:'创建',
           review:'审核',
           cancelReview:'反审',
           theProductHasBeenReviewedAndCannotBeDeleted:'产品已审核,无法删除',
       }
@@ -146,12 +177,32 @@
        trueArea:'实际单片面积',
        trueGrossArea:'实际总面积',
        computeArea:'结算单片面积',
        computeGrossArea:'计算总面积',
        computeGrossArea:'结算总面积',
        shape:'形状',
        bendRadius:'弯钢弧度',
        edgingType:'磨边类型',
        import:'导入',
        template:'模板',
        universalShape:'普形',
        alien:'异形',
        areaAmountPerPiece:'面积金额(单片)',
        areaAmountAge:'面积金额(总面积)',
        errorValue:'误差值',
        orderDetailsSummary:'订单明细汇总',
        details:'详情',
        workmanship:'工艺',
        processCard:'流程卡',
        processingNotes:'主加工要求',
        perimeter:'周长',
        grossArea:'总面积',
        creator:'制单员',
        totalThickness:'厚度',
        levelOne:'产品大类',
        levelTwo:'产品小类',
        orderDetailsReport:'订单明细报表',
        orderDetailsSummaryReport:'订单明细汇总报表',
        floorNumber:'楼层编号',
        msg:{
            productCheck:'请选择产品',
            tableLengthNot:'没有表格数据',
@@ -167,6 +218,10 @@
            importMaxCheckFailLast:'条,请分订单导入',
            updateAmountSuccessfully:'更新金额成功',
            updateOrderState:'更新订单状态成功',
            calculationAreaPrompt1:'存在',
            calculationAreaPrompt2:'条结算单片面积小于',
            calculationAreaPrompt3:'是否按照',
            calculationAreaPrompt4:'计算',
        }
    },
@@ -213,14 +268,21 @@
        newProcess:'流程',
        reset:'重置',
        sure:'确定',
        // upperLeft:'左上',
        // upperRight:'右上',
        // lowLeft:'左下',
        // lowRight:'右下',
        // TrademarkAttribute:'商标参数',
        // TrademarkOptions:'商标选项',
        // xImage:'X轴镜像',
        // yImage:'X轴镜像'
        upperLeft:'左上',
        upperRight:'右上',
        lowLeft:'左下',
        lowRight:'右下',
        TrademarkAttribute:'商标参数',
        TrademarkOptions:'商标选项',
        xImage:'X轴镜像',
        yImage:'y轴镜像',
        modifyTrademark:'修改商标',
        tag:'打标使能',
        tag2:'二维码打印1',
        tag3:'二维码打印2',
        xMargin:'X轴边距',
        yMargin:'Y轴边距',
        location:'商标位置',
    },
@@ -231,7 +293,8 @@
        unConverted:'未转',
        deleteOk:'删除成功',
        transferOrder:'转工单',
        perimeter:'周长'
        perimeter:'周长',
        deleteNo:'删除失败,检查是否已分架'
    },
    processCard:{
@@ -288,6 +351,20 @@
        technologyNumber:'小片顺序',
        otherRemarks:'原片要求',
        pleaseSelectTheSavedDataFirst:'请先选择保存的数据',
        pleaseFirstCreateAProcessCardForAllTheDataOnTheRightSideAndSaveIt:'请先将右侧数据全部建立流程卡后保存',
        glassAddress:'小片标记',
        splitFrameTime:'分架时间',
        print:'打印流程卡',
        printLabel:'打印标签',
        printSetup:'标签设置',
        specificationQuantity:'规格数量',
        singlePieceProductName:'单片产品名称',
        productType:'产品类型',
        whetherToScheduleProduction:'是否排产',
        deleteNo:'删除失败,检查流程卡是否已报工',
        deleteNoProcedure:'删除失败,检查下工序是否已报工',
        pleaseCheckTheRequiredData:'请勾选需要的数据',
    },
    reportingWorks:{
@@ -363,6 +440,18 @@
        thisWornQuantity:'本工序次破',
        passAudit:'审核通过',
        ThanEqualTo1:'请输入大于等于',
        ThanEqualTo2:'的数字',
        selectResponsibleTeam:'请选择责任班组',
        selectWorkReportingTeam:'请选择责任班组',
        successfulModificationOfWorkApplication:'报工修改成功',
        theProcessCardNumberCannotBeEmpty:'流程卡号不能为空',
        unqualified:'未质检',
        qualified:'已质检',
        thisProcess:'本工序',
        qualityInsTime:'质检时间',
        completedArea:'完工面积',
        wornArea:'次破面积',
    },
@@ -477,6 +566,8 @@
        customerHomePage:'客户首页',
        increaseCustomers:'客户新增',
        resetting:'重置',
        customerOrders:'客户订单',
        orderAmount:'订单金额',
    },
    delivery:{
@@ -511,6 +602,12 @@
        deliveryNoteId:'发货单号',
        deliveryNoteNumber:'发货序号',
        deliveryDate:"发货日期 ",
        shipmentDetailsReport:"发货明细报表 ",
        shipmentProductClassificationReport:"发货产品分类报表 ",
        contacts:'联系人',
        contactNumber:'联系电话',
        salesman:'销售员',
        money:'金额',
    },
    replenish:{
@@ -538,7 +635,116 @@
        TheReworkQuantityCannotBeGreaterThanTheSecondBreakQuantity:'返工数量不能大于次破数量',
        reworkQuantityCannotBeEmptyOr0:'返工数量不能为空或者是0',
    },
    role:{
        id:'ID',
        characterHomepage:'角色首页',
        role:'角色',
        roleAdd:'角色新增',
        menu:"菜单 ",
        page:'页面',
        permission:'权限',
        rolePermissions:'角色权限',
        permissionSelection:"权限选择 ",
        ConfirmModifyingRolePermissions:'确认修改角色权限?',
        PleaseEnterANewRole:'请输入新角色',
        AddANewRole:'新增角色',
        CannotBeEmptyAndTheLengthCannotExceed255:'不能为空且长度不能超过255',
    },
    user:{
        userId:'用户ID',
        userHomepage:'用户首页',
        user:'用户',
        setUpRoles:'设置角色',
        changePassword:'修改密码',
        OldPassword:'旧密码',
        TheNewPassword:'新密码',
        ConfirmPassword:'确认密码',
        OldPasswordCannotBeEmpty:'旧密码不能为空',
        TheNewPasswordCannotBeEmpty:'新密码不能为空',
        ThePasswordLengthCannotBeLessThan6OrMoreThan16:'密码长度不能低于6或超过16',
        ConfirmPasswordCannotBeEmpty:'确认密码不能为空',
        TheTwoPasswordsAreNotTheSame:'两次密码不相同',
        OldPasswordError:'旧密码错误',
    },
    orderBasicData:{
        order:'订单',
        orderType:'订单类型',
        orderClassify:'订单分类',
        icon:'商标选项',
        packType:'包装方式',
        alType:'铝条方式',
        saleMan:'业务员',
        product:'产品',
        stuffThickness:'材料厚度',
        stuffColor:'材料颜色',
        stuffCraft:'工艺属性',
        stuffPosition:'玻璃位置',
        stuffLowE:'lowe',
        InterlayerThickness:'夹胶厚度',
        InterlayerType:'夹胶类型',
        InterlayerColor:'夹胶颜色',
        process:'工艺流程',
        hollowThickness:'中空厚度',
        hollowGasType:'充气方式',
        hollowType:'封胶',
        hollowGlueDepth:'默认胶深',
        paymentTerms:'付款条件',
        payMethod:'收款方式',
        delivery:'送货',
        basicType:'基础类型',
        name:'名称',
        glassCategory:'玻璃类别',
        level:'类别等级',
        firstLevel:'一级类别',
        towLevel:'二级类别',
    },
    machine:{
        basicId:'设备编号',
        basicName:'设备名称',
        basicCategory:'所在工序',
        type:'类型',
        faultTime:'故障日期',
        faultReason:'故障原因',
        maintenanceTime:'保养日期',
        maintenanceIllustrate:'保养说明',
        startTime:'维修/保养开始时间',
        stopTime:'维修/保养结束时间',
        process:'所在工序',
        personnel:'维修/保养人员',
        cost:'费用',
        equipmentSituation:'设备情况',
        equipmentAddition:'设备新增',
        maintenanceAndRepair:'保养与维修',
        maintenanceAndRepairAddition:'保养与维修新增',
        maintenanceAndRepairEdit:'保养与维修编辑',
        service:'维修',
        maintain:'保养',
        faultCount:'维修次数',
        maintenanceCount:'保养次数',
        faultLastTime:'最后维修时间',
        maintenanceLastTime:'最后保养时间',
        faultCost:'维修费用',
        maintenanceCost:'保养费用',
    }
}
north-glass-erp/northglass-erp/src/views/pp/Replenish/AddReplenish.vue
@@ -98,7 +98,7 @@
    {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: 'responsibleProcess', width: 100, title: '责任工序', sortable: true,filters:[{ data: '' }],slots: { filter: 'num1_filter' },filterMethod:filterChanged},
    {field: 'responsibleProcess', width: 100, title: t('reportingWorks.responsibleProcess'), 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' }},
@@ -163,7 +163,7 @@
              ElMessage.success(t('basicData.msg.saveSuccess'))
              router.push({path:'/main/Replenish/AddReplenish',query:{random:Math.random()}})
            }else{
              ElMessage.warning("保存失败")
              ElMessage.warning(t('basicData.msg.saveFail'))
              router.push("/login")
            }
          })
north-glass-erp/northglass-erp/src/views/pp/Replenish/SelectReplenish.vue
@@ -194,7 +194,7 @@
                router.push({path:'/main/Replenish/SelectReplenish',query:{random:Math.random()}})
              }else{
                ElMessage.warning("审核失败")
                ElMessage.warning(t('basicData.msg.reviewFail'))
                router.push("/login")
              }
            })
@@ -264,8 +264,8 @@
      <el-date-picker
          v-model="selectDate"
          type="daterange"
          start-placeholder="开始时间"
          end-placeholder="结束时间"
          :start-placeholder="$t('basicData.startDate')"
          :end-placeholder="$t('basicData.endDate')"
          format="YYYY-MM-DD"
          value-format="YYYY-MM-DD"
north-glass-erp/northglass-erp/src/views/pp/machine/AddMachine.vue
@@ -69,14 +69,14 @@
    {type: 'seq', fixed: "left", title: '自序', width: 50},
    {
      field: 'basicName',
      title: '设备名称',
      title: t('machine.basicName'),
      width: 500,
      editRender: {name: 'input', attrs: {placeholder: ''}},
    },
    {
      field: 'basicCategory',
      title: '所在工序',
      title: t('machine.basicCategory'),
      width: 500,
      editRender: {},
      slots: {default: 'basicCategory_default', edit: 'basicCategory'}
@@ -87,7 +87,7 @@
    buttons: [
      {code: 'removeRow', name: t('basicData.delete'), status: 'primary', icon: 'vxe-icon-delete'},
      {code: 'addRow', name: t('reportingWorks.increase'), status: 'primary', icon: 'vxe-icon-square-plus'},
      {code: 'save', name: '保存', status: 'primary', icon: 'vxe-icon-save'},
      {code: 'save', name: t('basicData.save'), status: 'primary', icon: 'vxe-icon-save'},
    ],
    // import: false,
    // export: true,
@@ -102,7 +102,7 @@
    return [
      columns.map((column, columnIndex) => {
        if (columnIndex === 0) {
          return '合计:'
          return ''
        }
        if (footList.includes(column.field)) {
          return sumNum(data, column.field)
@@ -139,7 +139,7 @@
          })
          request.post("/maintenance/saveMachine", machineData.value).then((res) => {
            if (res.code == 200) {
              ElMessage.success("保存成功")
              ElMessage.success(t('basicData.msg.saveSuccess'))
              //router.push('/main/processCard/SplittingDetails?orderId=${orderId}')
              router.push({
                path: '/main/machine/AddMachine',
north-glass-erp/northglass-erp/src/views/pp/machine/AddMaintenanceAndRepair.vue
@@ -76,60 +76,60 @@
    {type: 'seq', fixed: "left", title: '自序', width: 50},
    {
      field: 'deviceName',
      title: '设备名称',
      title: t('machine.basicName'),
      editRender: {},
      slots: {default: 'basicCategory_default', edit: 'deviceName'}
    },
    {
      field: 'type',
      title: '类型',
      title: t('machine.type'),
      editRender: {name: 'input', attrs: {placeholder: ''}},
    },
    {
      field: 'faultTime',
      title: '故障日期',
      title: t('machine.faultTime'),
      editRender: {name: 'input', attrs: {placeholder: '', type: 'date'}},
    },
    {
      field: 'faultReason',
      title: '故障原因',
      title: t('machine.faultReason'),
      editRender: {name: 'input', attrs: {placeholder: ''}},
    },
    {
      field: 'maintenanceTime',
      title: '保养日期',
      title: t('machine.maintenanceTime'),
      editRender: {name: 'input', attrs: {placeholder: '', type: 'date'}},
    },
    {
      field: 'maintenanceIllustrate',
      title: '保养说明',
      title: t('machine.maintenanceIllustrate'),
      editRender: {name: 'input', attrs: {placeholder: ''}},
    },
    {
      field: 'startTime',
      title: '维修/保养开始时间',
      title: t('machine.startTime'),
      editRender: {name: 'input', attrs: {placeholder: '', type: 'date'}},
    },
    {
      field: 'stopTime',
      title: '维修/保养结束时间',
      title: t('machine.stopTime'),
      editRender: {name: 'input', attrs: {placeholder: '', type: 'date'}},
    },
    {
      field: 'process',
      title: '所在工序',
      title: t('machine.process'),
      editRender: {},
      slots: {default: 'reportingDeviceSort_default', edit: 'process'}
    },
    {
      field: 'personnel',
      title: '维修/保养人员',
      title: t('machine.personnel'),
      editRender: {name: 'input', attrs: {placeholder: ''}},
    },
    {
      field: 'cost',
      title: '费用',
      title: t('machine.cost'),
      editRender: {name: 'input', attrs: {placeholder: ''}},
    },
  ],
@@ -138,7 +138,7 @@
    buttons: [
      {code: 'removeRow', name: t('basicData.delete'), status: 'primary', icon: 'vxe-icon-delete'},
      {code: 'addRow', name: t('reportingWorks.increase'), status: 'primary', icon: 'vxe-icon-square-plus'},
      {code: 'save', name: '保存', status: 'primary', icon: 'vxe-icon-save'},
      {code: 'save', name: t('basicData.save'), status: 'primary', icon: 'vxe-icon-save'},
    ],
    // import: false,
    // export: true,
@@ -153,7 +153,7 @@
    return [
      columns.map((column, columnIndex) => {
        if (columnIndex === 0) {
          return '合计:'
          return ''
        }
        if (footList.includes(column.field)) {
          return sumNum(data, column.field)
@@ -189,7 +189,7 @@
          })
          request.post("/maintenance/saveMaintenanceAndRepair", machineData.value).then((res) => {
            if (res.code == 200) {
              ElMessage.success("保存成功")
              ElMessage.success(t('basicData.msg.saveSuccess'))
              //router.push('/main/processCard/SplittingDetails?orderId=${orderId}')
              router.push({
                path: '/main/machine/AddMaintenanceAndRepair',
north-glass-erp/northglass-erp/src/views/pp/machine/Machine.vue
@@ -19,11 +19,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/machine/SelectMachine' }">设备情况</el-breadcrumb-item>
        <el-breadcrumb-item @click="changeRouter(2)" :class="indexFlag===2?'indexTag':''" :to="{ path: '/main/machine/AddMachine' }">设备新增</el-breadcrumb-item>
        <el-breadcrumb-item @click="changeRouter(3)" :class="indexFlag===3?'indexTag':''" :to="{ path: '/main/machine/MaintenanceAndRepair' }">保养与维修</el-breadcrumb-item>
        <el-breadcrumb-item @click="changeRouter(4)" :class="indexFlag===4?'indexTag':''" :to="{ path: '/main/machine/AddMaintenanceAndRepair' }">保养与维修新增</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/machine/SelectMachine' }">{{$t('machine.equipmentSituation')}}</el-breadcrumb-item>
        <el-breadcrumb-item @click="changeRouter(2)" :class="indexFlag===2?'indexTag':''" :to="{ path: '/main/machine/AddMachine' }">{{$t('machine.equipmentAddition')}}</el-breadcrumb-item>
        <el-breadcrumb-item @click="changeRouter(3)" :class="indexFlag===3?'indexTag':''" :to="{ path: '/main/machine/MaintenanceAndRepair' }">{{$t('machine.maintenanceAndRepair')}}</el-breadcrumb-item>
        <el-breadcrumb-item @click="changeRouter(4)" :class="indexFlag===4?'indexTag':''" :to="{ path: '/main/machine/AddMaintenanceAndRepair' }">{{$t('machine.maintenanceAndRepairAddition')}}</el-breadcrumb-item>
        <el-breadcrumb-item :to="{ path: '/main/processCard/SelectPrintFlowCard' }" style="display: none">{{$t('basicData.print')}}</el-breadcrumb-item>
      </el-breadcrumb>
    </div>
north-glass-erp/northglass-erp/src/views/pp/machine/MaintenanceAndRepair.vue
@@ -164,38 +164,38 @@
  },//表头参数
  columns: [
    {type: 'expand', fixed: "left", slots: {content: 'content'}, width: 50},
    {title: '操作', width: 140, slots: {default: 'button_slot'}, fixed: "left"},
    {title: t('basicData.operate'), width: 140, slots: {default: 'button_slot'}, fixed: "left"},
    {
      field: 'id', width: 130, title: 'Id'
    },
    {
      field: 'deviceName', width: 130, title: '设备名称', filters: [{data: ''}],
      field: 'deviceName', width: 130, title: t('machine.basicName'), filters: [{data: ''}],
      slots: {filter: 'num1_filter'},
      filterMethod: filterChanged
    },
    {
      field: 'type', width: 120, title: '类型', filters: [{data: ''}],
      field: 'type', width: 120, title: t('machine.type'), filters: [{data: ''}],
      slots: {filter: 'num1_filter'},
      filterMethod: filterChanged
    },
    {field: 'faultTime', width: 100, title: '故障日期', showOverflow: "ellipsis"},
    {field: 'faultTime', width: 100, title: t('machine.faultTime'), showOverflow: "ellipsis"},
    {
      field: 'faultReason', width: 100, title: '故障原因', filters: [{data: ''}],
      field: 'faultReason', width: 100, title: t('machine.faultReason'), filters: [{data: ''}],
      slots: {filter: 'num1_filter'},
      filterMethod: filterChanged
    },
    {field: 'maintenanceTime', width: 100, title: '保养日期'},
    {field: 'maintenanceIllustrate', width: 120, title: '保养说明', showOverflow: "ellipsis"},
    {field: 'startTime', width: 160, title: '维修/保养开始时间'},
    {field: 'stopTime', width: 160, title: '维修/保养结束时间'},
    {field: 'maintenanceTime', width: 100, title: t('machine.maintenanceTime')},
    {field: 'maintenanceIllustrate', width: 120, title: t('machine.maintenanceIllustrate'), showOverflow: "ellipsis"},
    {field: 'startTime', width: 160, title: t('machine.startTime')},
    {field: 'stopTime', width: 160, title: t('machine.stopTime')},
    {
      field: 'process', width: 120, title: '所在工艺', filters: [{data: ''}],
      field: 'process', width: 120, title: t('machine.process'), filters: [{data: ''}],
      slots: {filter: 'num1_filter'},
      filterMethod: filterChanged
    },
    {field: 'personnel', width: 150, title: '维修/保养人员'},
    {field: 'cost', width: 120, title: '费用'},
    {field: 'personnel', width: 150, title: t('machine.personnel')},
    {field: 'cost', width: 120, title: t('machine.cost')},
  ],//表头按钮
  toolbarConfig: {
@@ -211,11 +211,11 @@
  data: [],//table body实际数据
  //脚部求和
  footerMethod({columns, data}) {//页脚函数
    let footList = ['费用']
    let footList = ['']
    return [
      columns.map((column, columnIndex) => {
        if (columnIndex === 0) {
          return '合计:'
          return t('basicData.total')
        }
        if (footList.includes(column.field)) {
          return sumNum(data, column.field)
@@ -303,7 +303,7 @@
                   size="small">
          {{ $t('basicData.edit') }}
        </el-button>
        <el-button link size="small" type="primary" @click="getTableRow(row,'delete')">删除</el-button>
        <el-button link size="small" type="primary" @click="getTableRow(row,'delete')">{{$t('basicData.delete')}}</el-button>
      </template>
      <template #num1_filter="{ column, $panel }">
@@ -317,27 +317,27 @@
    </vxe-grid>
    <el-dialog v-model="dialogTableVisible" title="保养与维修编辑">
    <el-dialog v-model="dialogTableVisible" :title="$t('machine.maintenanceAndRepairEdit')">
      <el-form :model="form">
        <el-row>
          <el-col :span="12">
            <el-form-item :label-width="formLabelWidth" label="设备名称">
            <el-form-item :label-width="formLabelWidth" :label="$t('machine.basicName')">
              <el-input v-model="getBasicData.device_name" autocomplete="off" style="width: 220px"/>
            </el-form-item>
          </el-col>
          <el-col :span="12">
            <el-form-item :label-width="formLabelWidth" label="类型">
              <el-select v-model="getBasicData.type" placeholder="维修" style="width: 220px">
                <el-option label="保养" value="1"/>
                <el-option label="维修" value="2"/>
            <el-form-item :label-width="formLabelWidth" :label="$t('machine.type')">
              <el-select v-model="getBasicData.type" :placeholder="$t('machine.service')" style="width: 220px">
                <el-option :label="$t('machine.maintain')" value="1"/>
                <el-option :label="$t('machine.service')" value="2"/>
              </el-select>
            </el-form-item>
          </el-col>
        </el-row>
        <el-row>
          <el-col :span="12">
            <el-form-item :label-width="formLabelWidth" label="故障日期">
            <el-form-item :label-width="formLabelWidth" :label="$t('machine.faultTime')">
              <el-date-picker
                  v-model="getBasicData.fault_time"
                  :size="size"
@@ -348,14 +348,14 @@
            </el-form-item>
          </el-col>
          <el-col :span="12">
            <el-form-item :label-width="formLabelWidth" label="故障原因">
            <el-form-item :label-width="formLabelWidth" :label="$t('machine.faultReason')">
              <el-input v-model="getBasicData.fault_reason" autocomplete="off" style="width: 220px"/>
            </el-form-item>
          </el-col>
        </el-row>
        <el-row>
          <el-col :span="12">
            <el-form-item :label-width="formLabelWidth" label="保养日期">
            <el-form-item :label-width="formLabelWidth" :label="$t('machine.maintenanceTime')">
              <el-date-picker
                  v-model="getBasicData.maintenance_time"
                  :size="size"
@@ -366,14 +366,14 @@
            </el-form-item>
          </el-col>
          <el-col :span="12">
            <el-form-item :label-width="formLabelWidth" label="保养说明">
            <el-form-item :label-width="formLabelWidth" :label="$t('machine.maintenanceIllustrate')">
              <el-input v-model="getBasicData.maintenance_illustrate" autocomplete="off" style="width: 220px"/>
            </el-form-item>
          </el-col>
        </el-row>
        <el-row>
          <el-col :span="12">
            <el-form-item :label-width="formLabelWidth" label="保养/维修开始时间">
            <el-form-item :label-width="formLabelWidth" :label="$t('machine.startTime')">
              <el-date-picker
                  v-model="getBasicData.start_time"
                  type="date"
@@ -383,7 +383,7 @@
            </el-form-item>
          </el-col>
          <el-col :span="12">
            <el-form-item :label-width="formLabelWidth" label="保养/维修完成时间">
            <el-form-item :label-width="formLabelWidth" :label="$t('machine.stopTime')">
              <el-date-picker
                  v-model="getBasicData.stop_time"
                  :size="size"
@@ -396,7 +396,7 @@
        </el-row>
        <el-row>
          <el-col :span="12">
            <el-form-item :label-width="formLabelWidth" label="所在工艺">
            <el-form-item :label-width="formLabelWidth" :label="$t('machine.process')">
              <el-select  v-model="getBasicData.process" clearable placeholder="" style="width: 220px"
              >
                <el-option
@@ -409,20 +409,20 @@
            </el-form-item>
          </el-col>
          <el-col :span="12">
            <el-form-item :label-width="formLabelWidth" label="保养/维修人员">
            <el-form-item :label-width="formLabelWidth" :label="$t('machine.personnel')">
              <el-input v-model="getBasicData.personnel" autocomplete="off" style="width: 220px"/>
            </el-form-item>
          </el-col>
        </el-row>
        <el-form-item :label-width="formLabelWidth" label="费用">
        <el-form-item :label-width="formLabelWidth" :label="$t('machine.cost')">
          <el-input v-model="getBasicData.cost" autocomplete="off" style="width: 220px"/>
        </el-form-item>
      </el-form>
      <template #footer>
      <span class="dialog-footer">
        <el-button @click="dialogTableVisible = false">取消</el-button>
        <el-button @click="dialogTableVisible = false">{{$t('basicData.cancelButtonText')}}</el-button>
        <el-button type="primary" @click="updateBasic">
          修改
          {{$t('basicData.update')}}
        </el-button>
      </span>
      </template>
north-glass-erp/northglass-erp/src/views/pp/machine/SelectMachine.vue
@@ -78,17 +78,17 @@
  },//表头参数
  columns:[
    {type:'expand',fixed:"left",slots: { content:'content' },width: 50},
    { type: 'seq',fixed:"left", title: '自序', width: 50 },
    {field: 'deviceId', width: 120, title: '设备编号',filters:[{ data: '' }],slots: { filter: 'num1_filter' },filterMethod: filterChanged },
    {field: 'deviceName', width: 130,title: '设备名称' ,filters:[{ data: '' }],slots: { filter: 'num1_filter' },filterMethod: filterChanged},
    {field: 'type',width: 100, title: '使用状态',filters:[{ data: '' }],slots: { filter: 'num1_filter' },filterMethod: filterChanged },
    {field: 'faultCount',width: 120, title: '维修次数' ,showOverflow:"ellipsis"},
    {field: 'maintenanceCount', width: 120,title: '保养次数', },
    {field: 'faultLastTime',width: 120, title: '最后维修时间', },
    {field: 'maintenanceLastTime',width: 120, title: '最后保养时间', },
    {field: 'faultCost',width: 120, title: '维修费用', },
    {field: 'maintenanceCost',width: 120, title: '保养费用', },
    {field: 'process',width: 120, title: '所在工艺',filters:[{ data: '' }],slots: { filter: 'num1_filter' },filterMethod: filterChanged }
    { type: 'seq',fixed:"left", title: t('basicData.Number'), width: 50 },
    {field: 'deviceId', width: 120, title: t('machine.basicId'),filters:[{ data: '' }],slots: { filter: 'num1_filter' },filterMethod: filterChanged },
    {field: 'deviceName', width: 130,title: t('machine.basicName') ,filters:[{ data: '' }],slots: { filter: 'num1_filter' },filterMethod: filterChanged},
    {field: 'type',width: 100, title:  t('machine.type'),filters:[{ data: '' }],slots: { filter: 'num1_filter' },filterMethod: filterChanged },
    {field: 'faultCount',width: 120, title: t('machine.faultCount') ,showOverflow:"ellipsis"},
    {field: 'maintenanceCount', width: 120,title: t('machine.maintenanceCount'), },
    {field: 'faultLastTime',width: 120, title: t('machine.faultLastTime'), },
    {field: 'maintenanceLastTime',width: 120, title: t('machine.maintenanceLastTime'), },
    {field: 'faultCost',width: 120, title: t('machine.faultCost'), },
    {field: 'maintenanceCost',width: 120, title: t('machine.maintenanceCost'), },
    {field: 'process',width: 120, title: t('machine.basicCategory'),filters:[{ data: '' }],slots: { filter: 'num1_filter' },filterMethod: filterChanged }
  ],
  //表头按钮
  toolbarConfig: {
@@ -109,7 +109,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/pp/processCard/AddProcessCard.vue
@@ -642,12 +642,12 @@
            //  const selectRight = $tableRight.getCheckboxRecords()
            let leftData = $tableRight.getTableData().fullData
            if (selectRecords.length === 0) {
              ElMessage.warning("请先选择保存的数据")
              ElMessage.warning(t('processCard.pleaseSelectTheSavedDataFirst'))
              return
            }
            if (leftData.length > 0) {
              ElMessage.warning("请先将右侧数据全部建立流程卡后保存")
              ElMessage.warning(t('processCard.pleaseFirstCreateAProcessCardForAllTheDataOnTheRightSideAndSaveIt'))
              return;
            }
            let flowCardData = ref({
@@ -658,7 +658,7 @@
            request.post("/processCard/addFlowCard", flowCardData.value).then((res) => {
              if (res.code == 200) {
                ElMessage.success("保存成功")
                ElMessage.success(t('basicData.msg.saveSuccess'))
                //router.push('/main/processCard/SplittingDetails?orderId=${orderId}')
                router.push({
                  path: '/main/processCard/AddProcessCard',
north-glass-erp/northglass-erp/src/views/pp/processCard/PrintFlowCard.vue
@@ -60,6 +60,7 @@
})
//定义页面总页数
let pageTotal = ref('')
//定义数据返回结果
@@ -86,6 +87,7 @@
    ElMessage.warning(res.msg)
  }
})
//表尾求和
const sumNum = (list, field) => {
@@ -147,7 +149,7 @@
    },
    {
      field: 'process_id',
      title: '流程卡号',
      title: t('processCard.processId'),
      showOverflow: "ellipsis",
      filters: [{data: ''}],
      slots: {filter: 'num1_filter'},
@@ -155,32 +157,33 @@
    },
    {
      field: 'customer_name',
      title: '客户名称',
      title: t('customer.customerName'),
      filters: [{data: ''}],
      slots: {filter: 'num1_filter'},
      filterMethod: filterChanged
    },
    {
      field: 'project',
      title: '项目名称',
      title:  t('order.project'),
      filters: [{data: ''}],
      slots: {filter: 'num1_filter'},
      filterMethod: filterChanged
    },
    {field: 'technology_number', title: '小片顺序', showOverflow: "ellipsis"},
    {field: 'glass_address', title: '小片标记',},
    {field: 'quantity', title: '数量',},
    {field: 'total_area', title: '面积',},
    {field: 'product_name', title: '产品名称',},
    {field: 'glass_child', title: '单片名称',},
    {field: 'founder', title: '分架员',},
    {field: 'splitFrame_time', title: '分架时间',},
    {field: 'technology_number', title: t('processCard.technologyNumber'), showOverflow: "ellipsis"},
    {field: 'glass_address', title: t('processCard.glassAddress'),},
    {field: 'quantity', title:  t('order.quantity'),},
    {field: 'total_area', title:  t('order.area'),},
    {field: 'product_name', title: t('order.product'),},
    {field: 'glass_child', title: t('reportingWorks.glassChild'),},
    {field: 'founder', title: t('processCard.founder'),},
    {field: 'splitFrame_time', title: t('processCard.splitFrameTime'),},
  ],//表头按钮
  toolbarConfig: {
    buttons: [
      {code: 'print', name: '打印流程卡', status: 'primary'},
      {code: 'printLabel', name: '打印标签', status: 'primary'},
      {code: 'print', name: t('processCard.print'), status: 'primary'},
      {code: 'printLabel', name: t('processCard.printLabel'), status: 'primary'},
    ],
    // import: false,
    // export: true,
@@ -275,6 +278,7 @@
    }
  },
}
const detailGridOptions = reactive({
@@ -406,6 +410,7 @@
  xGridDetail.value.reloadData(detail.value)
}
</script>
<template>
@@ -460,7 +465,7 @@
    <el-dialog
        v-model="dialogTableVisible"
        destroy-on-close
        title="流程卡打印"
        :title="$t('processCard.print')"
        style="width: 80%;height:75% ">
      <PrintProcess :printList="selectRecords"
                    style="width: 100%;height: 100%" />
@@ -469,7 +474,7 @@
    <el-dialog
        v-model="dialogTableVisibleLabel"
        destroy-on-close
        title="标签打印"
        :title="$t('processCard.printLabel')"
        style="width: 80%;height:75% ">
      <PrintLabel :printList="selectRecords"
                  style="width: 100%;height: 100%" />
@@ -514,6 +519,8 @@
      </vxe-grid>
    </el-dialog>
  </div>
</template>
north-glass-erp/northglass-erp/src/views/pp/processCard/PrintLabel.vue
@@ -18,11 +18,7 @@
const data = ref({
  printList: []
})
const setupData = ref({
})
let printSetupData = {
  printState:''
}
const {currentRoute} = useRouter()
const route = currentRoute.value
@@ -50,14 +46,6 @@
)
request.post(`/processCard/printSetup`, setupData.value).then((res) => {
  if (res.code == 200) {
    printSetupData = deepClone(res.data.data)
  } else {
    ElMessage.warning(res.msg)
    router.push("/login")
  }
})
@@ -100,22 +88,22 @@
</script>
<template>
  <el-button id="printButton" @click="printFlowCard();">打印</el-button>
  <el-button id="printButton" @click="printFlowCard();">{{ $t('basicData.print') }}</el-button>
  <div id="printFlowCard" >
    <div id="entirety" v-for="(item,id) in labelList" >
      <div v-show="printSetupData[0].printState" class="row1">{{ item.customer_name }}</div>
      <div v-show="printSetupData[6].printState || printSetupData[7].printState" class="row2">
        <span v-show="printSetupData[6].printState">{{ item.order_id }}</span>
        <span v-show="printSetupData[7].printState">{{ item.type_name }}</span>
      <div class="row1">{{ item.customer_name }}</div>
      <div  class="row2">
        <span>{{ item.order_id }}</span>
        <span>{{ item.type_name }}</span>
      </div>
      <div v-show="printSetupData[2].printState" class="row3">{{item.child_width}}*{{item.child_height}}={{item.quantity}}</div>
      <div v-show="printSetupData[1].printState || printSetupData[3].printState" class="row5">
        <span v-show="printSetupData[1].printState">{{item.project}}</span>
        <span v-show="printSetupData[3].printState">{{ item.remarks }}</span>
      <div class="row3">{{item.child_width}}*{{item.child_height}}={{item.quantity}}</div>
      <div class="row5">
        <span>{{item.project}}</span>
        <span>{{ item.remarks }}</span>
      </div>
      <div v-show="printSetupData[5].printState || printSetupData[4].printState" class="row6">
        <span v-show="printSetupData[5].printState">{{item.glass_child}}</span>
        <span v-show="printSetupData[4].printState">{{item.processing_note}}</span></div>
      <div class="row6">
        <span>{{item.glass_child}}</span>
        <span>{{item.processing_note}}</span></div>
    </div>
  </div>
north-glass-erp/northglass-erp/src/views/pp/processCard/PrintProcess.vue
@@ -99,7 +99,7 @@
</script>
<template>
  <el-button id="printButton" @click="printFlowCard();">打印</el-button>
  <el-button id="printButton" @click="printFlowCard();">{{ $t('basicData.print') }}</el-button>
  <div id="printFlowCard">
    <table v-for="(item,id) in produceList" id="contentTable" :key="id">
      <thead>
north-glass-erp/northglass-erp/src/views/pp/processCard/ProcessCard.vue
@@ -27,8 +27,8 @@
        </el-breadcrumb-item>
        <el-breadcrumb-item @click="changeRouter(3)" :class="indexFlag===3?'indexTag':''" :to="{ path: '/main/processCard/ProductionScheduling' }">{{$t('processCard.scheduling')}}
        </el-breadcrumb-item>
        <el-breadcrumb-item @click="changeRouter(4)" :class="indexFlag===4?'indexTag':''" :to="{ path: '/main/processCard/SelectPrintFlowCard' }" >打印</el-breadcrumb-item>
        <el-breadcrumb-item @click="changeRouter(4)" :class="indexFlag===4?'indexTag':''" :to="{ path: '/main/processCard/SelectPrintFlowCard' }" style="display: none">打印</el-breadcrumb-item>
        <el-breadcrumb-item @click="changeRouter(4)" :class="indexFlag===4?'indexTag':''" :to="{ path: '/main/processCard/SelectPrintFlowCard' }" >{{ $t('basicData.print') }}</el-breadcrumb-item>
        <el-breadcrumb-item @click="changeRouter(4)" :class="indexFlag===4?'indexTag':''" :to="{ path: '/main/processCard/SelectPrintFlowCard' }" style="display: none">{{ $t('basicData.print') }}</el-breadcrumb-item>
      </el-breadcrumb>
    </div>
north-glass-erp/northglass-erp/src/views/pp/processCard/ProductionScheduling.vue
@@ -29,16 +29,12 @@
      break
    }
    case  'setType': {
      alert('我接收到子组件传送的排版状态')
      break
    }
  }
}
//工序
const value = ref('切割')
const processVal = ref('切割')
//排产状态
@@ -54,10 +50,6 @@
  },
]
function padLeftZero(str) {
  return ('00' + str).substr(str.length)
}
//定义表单值
const form = reactive({
  date1: '',
@@ -70,25 +62,6 @@
})
//表尾求和
const sumNum = (list, field) => {
  let count = 0
  list.forEach(item => {
    count += Number(item[field])
  })
  return count.toFixed(2)
}
//定义滚动条高度
let scrollTop = ref(null)
let scrollHeight = ref(null)
let clientHeight = ref(null)
const scrollEvnt = (row) => {
  // 内容高度
  scrollTop.value = row.$event.target.scrollTop
  scrollHeight.value = row.$event.target.scrollHeight
  clientHeight.value = row.$event.target.clientHeight
}
//筛选条件,有外键需要先定义明细里面的数据
let filterData = ref({
  order: {
@@ -137,7 +110,7 @@
form.date1 = getNowTime()
let startTime = form.date1[0]
let endTime = form.date1[1]
let selectProcesses = value.value
let selectProcesses = processVal.value
let inputVal = form.orderId
if (inputVal == '') {
  inputVal = null
@@ -166,7 +139,7 @@
const getWorkOrder = () => {
  let startTime = form.date1[0]
  let endTime = form.date1[1]
  let selectProcesses = value.value
  let selectProcesses = processVal.value
  let selectState = stateValue.value
  let inputVal = form.orderId
  if (inputVal == '') {
@@ -175,24 +148,6 @@
  if (selectProcesses == '') {
    selectProcesses = null
  }
  // if (inputVal == null && selectState == 1) {
  //   //根据时间查询未排产数据
  //   request.post(`/productionScheduling/selectLastScheduling/${startTime}/${endTime}/${selectProcesses}/${inputVal}`, filterData.value).then((res) => {
  //
  //     if (res.code == 200) {
  //       pageTotal.value = res.data.total
  //       xGrid.value.loadData(res.data.data)
  //       gridOptions.loading = false
  //       //禁用删除、审核按钮
  //       gridOptions.toolbarConfig.buttons[0].disabled = true
  //       gridOptions.toolbarConfig.buttons[1].disabled = true
  //       //启用保存
  //       gridOptions.toolbarConfig.buttons[2].disabled = false
  //     } else {
  //       ElMessage.warning(res.msg)
  //     }
  //   })
  // } else if (inputVal != null && selectState == 1) {
  //根据工序查询未排产数据
  request.post(`/productionScheduling/selectScheduling/${pageNum.value}/${total.pageSize}/${startTime}/${endTime}/${inputVal}/${selectProcesses}/${selectState}`, filterData.value).then((res) => {
    if (res.code == 200) {
@@ -202,48 +157,24 @@
      xGrid.value.loadData(res.data.data)
      console.log(res.data.data)
      gridOptions.loading = false
      //禁用删除、审核按钮
      gridOptions.toolbarConfig.buttons[0].disabled = true
      gridOptions.toolbarConfig.buttons[1].disabled = true
      //启用保存
      gridOptions.toolbarConfig.buttons[2].disabled = false
      if (selectState==1){
        //禁用删除、审核按钮
        gridOptions.toolbarConfig.buttons[0].disabled = true
        gridOptions.toolbarConfig.buttons[1].disabled = true
        //启用保存
        gridOptions.toolbarConfig.buttons[2].disabled = false
      }else{
        //禁用删除、审核按钮
        gridOptions.toolbarConfig.buttons[0].disabled = false
        gridOptions.toolbarConfig.buttons[1].disabled = false
        //启用保存
        gridOptions.toolbarConfig.buttons[2].disabled = false
      }
    } else {
      ElMessage.warning(res.msg)
    }
  })
  // } else if (inputVal == null && selectState == 2) {
  //   //根据时间查询已排产数据
  //   request.post(`/productionScheduling/selectScheduling/${startTime}/${endTime}/${inputVal}/${selectProcesses}/${selectState}`, filterData.value).then((res) => {
  //     if (res.code == 200) {
  //       pageTotal.value = res.data.total
  //       xGrid.value.loadData(res.data.data)
  //       gridOptions.loading = false
  //       //启用删除、审核按钮
  //       gridOptions.toolbarConfig.buttons[0].disabled = false
  //       gridOptions.toolbarConfig.buttons[1].disabled = false
  //       //禁用保存
  //       gridOptions.toolbarConfig.buttons[2].disabled = true
  //     } else {
  //       ElMessage.warning(res.msg)
  //     }
  //   })
  // } else if (inputVal != null && selectState == 2) {
  //   //根据订单号查询已排产数据
  //   request.post(`/productionScheduling/selectSchedulingNot/${startTime}/${endTime}/${inputVal}/${selectProcesses}/${selectState}`, filterData.value).then((res) => {
  //     if (res.code == 200) {
  //       pageTotal.value = res.data.total
  //       xGrid.value.loadData(res.data.data)
  //       gridOptions.loading = false
  //       //启用删除、审核按钮
  //       gridOptions.toolbarConfig.buttons[0].disabled = false
  //       gridOptions.toolbarConfig.buttons[1].disabled = false
  //       //禁用保存
  //       gridOptions.toolbarConfig.buttons[2].disabled = true
  //     } else {
  //       ElMessage.warning(res.msg)
  //     }
  //   })
  // }
}
@@ -272,7 +203,7 @@
//获取选中时间
  let startTime = form.date1[0]
  let endTime = form.date1[1]
  let selectProcesses = value.value
  let selectProcesses = processVal.value
  let selectState = stateValue.value
  let inputVal = form.orderId
  if (inputVal == '') {
@@ -281,7 +212,6 @@
  if (selectProcesses == '') {
    selectProcesses = null
  }
  request.post(`/productionScheduling/selectScheduling/1/${total.pageSize}/${startTime}/${endTime}/${inputVal}/${selectProcesses}/${selectState}`, filterData.value).then((res) => {
    if (res.code == 200) {
      total.dataTotal = res.data.total.total * 1
@@ -289,11 +219,6 @@
      pageNum.value = 1
      xGrid.value.loadData(res.data.data)
      gridOptions.loading = false
      //禁用删除、审核按钮
      gridOptions.toolbarConfig.buttons[0].disabled = true
      gridOptions.toolbarConfig.buttons[1].disabled = true
      //启用保存
      gridOptions.toolbarConfig.buttons[2].disabled = false
    } else {
      ElMessage.warning(res.msg)
    }
@@ -315,7 +240,7 @@
  keepSource: true,//保持源数据
  align: 'center',//文字居中
  stripe: true,//斑马纹
  rowConfig: {isCurrent: true, isHover: true, height: 30},//鼠标移动或选择高亮
  rowConfig: {isCurrent: true, isHover: true, height: 50},//鼠标移动或选择高亮
  id: 'CustomerList',
  showFooter: true,//显示脚
  printConfig: {},
@@ -333,7 +258,6 @@
  customConfig: {
    storage: true
  },
  editConfig: {
    trigger: 'click',
    mode: 'row',
@@ -370,18 +294,18 @@
  },
  //表头参数
  columns: [
    {type: 'expand', fixed: "left", slots: {content: 'content'}, width: 50},
    {type: 'checkbox', fixed: "left", title: t('basicData.check'), width: 80},
    {type: 'expand',fixed: "left",  slots: {content: 'content'}, width: 50},
    {type: 'seq', fixed: "left", title: t('basicData.Number'), width: 50},
    {type: 'checkbox', fixed: "left", title: t('basicData.check'), width: 80},
    {
      field: 'scheduled_start_time',
      width: 120,
      editRender: {name: 'input', attrs: {placeholder: '', type: 'date'}},
      field: 'scheduledStartTime',
      width: 130,
      editRender: {name: 'input', attrs: {placeholder: '', type: 'date'},},
      title: t('processCard.scheduledStartTime')
    },
    {
      field: 'plan_end_time',
      width: 120,
      field: 'planEndTime',
      width: 130,
      editRender: {name: 'input', attrs: {placeholder: '', type: 'date'}},
      title: t('processCard.planEndTime')
    },
@@ -391,7 +315,7 @@
      title: t('order.orderId'),
      filters: [{data: ''}],
      slots: {filter: 'num1_filter'},
      width: 100,
      width: 110,
    },
    {
      field: 'order.customerName',
@@ -412,14 +336,14 @@
      title: t('order.OrderNum'),
      filters: [{data: ''}],
      slots: {filter: 'num1_filter'},
      width: 70,
      width: 100,
    },
    {
      field: 'technologyNumber',
      title: t('processCard.technologyNumber'),
      filters: [{data: ''}],
      slots: {filter: 'num1_filter'},
      width: 70,
      width: 100,
    },
    {
      field: 'orderGlassDetail.childWidth',
@@ -431,7 +355,7 @@
      title: t('order.height'),
      width: 60,
    },
    {field: 'orderDetail.quantity', title: t('processCard.orderQuantity'), width: 70},
    {field: 'orderDetail.quantity', title: t('processCard.orderQuantity'), width: 90},
    {field: 'orderGlassDetail.area', title: t('processCard.orderArea'), width: 90},
    {
      field: 'schedulingQuantity',
@@ -440,13 +364,13 @@
      title: t('processCard.productionSchedulingQuantity'),
      sortable: true
    },
    {field: 'pendingProductionQuantity', title: t('processCard.quantityToScheduled'), width: 120},
    {field: 'pendingProductionArea', title: t('processCard.areaToScheduled'), width: 120},
    {field: 'productionScheduledQuantity', title: t('processCard.plannedProductionQuantity'), width: 120},
    {field: 'productionScheduledArea', title: t('processCard.plannedProductionArea'), width: 120},
    {field: 'reviewStatus', title: t('processCard.reviewedState'), width: 140},
    {field: 'reviewer', title: t('processCard.reviewed'), width: 140},
    {field: 'orderGlassDetail.glassChild', title: t('order.product'), width: 140},
    {field: 'pendingProductionQuantity', title: t('processCard.quantityToScheduled'), width: 100},
    {field: 'pendingProductionArea', title: t('processCard.areaToScheduled'), width: 100},
    {field: 'productionScheduledQuantity', title: t('processCard.plannedProductionQuantity'), width: 100},
    {field: 'productionScheduledArea', title: t('processCard.plannedProductionArea'), width: 100},
    {field: 'reviewStatus', title: t('processCard.reviewedState'), width: 80},
    {field: 'reviewer', title: t('processCard.reviewed'), width: 80},
    {field: 'orderDetail.productName', title: t('order.product'), width: 140},
    {field: 'orderDetail.shape', title: t('order.shape'), width: 80},
    {field: 'notes', title: t('processCard.notes'), editRender: {name: 'input', attrs: {placeholder: ''}}, width: 120},
    {field: 'schedulingId', title: t('processCard.schedulingId'), width: 120},
@@ -496,22 +420,22 @@
          if ($table) {
            const selectRecords = $table.getCheckboxRecords()
            if (selectRecords.length == 0) {
              ElMessage.warning("请勾选排产数据")
              ElMessage.warning(t('processCard.checkProductionScheduling'))
              return;
            }
            for (let i = 0; i < selectRecords.length; i++) {
              let start = selectRecords[i].scheduled_start_time
              let end = selectRecords[i].plan_end_time
              let number = selectRecords[i].scheduling_quantity
              let start = selectRecords[i].scheduledStartTime
              let end = selectRecords[i].planEndTime
              let number = selectRecords[i].schedulingQuantity
              //计划开始、结束时间,排产数量不能为空
              if (start == null || end == null || number == null) {
                ElMessage.warning("请填入对应的值再进行保存")
                ElMessage.warning(t('processCard.saveCorrespondingValues'))
                return;
              }
            }
            let selectProcesses = value.value
            let selectProcesses = processVal.value
            if (selectProcesses == null || selectProcesses == "") {
              ElMessage.warning("请选择排产工序")
              ElMessage.warning(t('processCard.selectProductionSchedulingProcess'))
              return;
            }
@@ -525,7 +449,7 @@
            //保存排产数据
            request.post("/productionScheduling/addScheduling", schedulingData.value).then((res) => {
              if (res.code == 200) {
                ElMessage.success("保存成功")
                ElMessage.success(t('basicData.msg.saveSuccess'))
                // 启用保存
                gridOptions.toolbarConfig.buttons[2].disabled = false
                router.push({
@@ -550,10 +474,10 @@
          const selectRecords = $table.getCheckboxRecords()
          if ($table) {
            if (selectRecords.length == 0) {
              ElMessage.warning("请勾选排产数据")
              ElMessage.warning(t('processCard.checkProductionScheduling'))
              return;
            }
            const type = await VXETable.modal.confirm('您确定要删除该数据?')
            const type = await VXETable.modal.confirm(t('processCard.deleteThisData'))
            if (type === 'confirm') {
              let schedulingData = ref({
                scheduling: selectRecords,
@@ -561,7 +485,7 @@
              request.post("/productionScheduling/deleteScheduling", schedulingData.value).then((res) => {
                if (res.code == 200) {
                  ElMessage.success("删除成功")
                  ElMessage.success(t('basicData.msg.deleteSuccess'))
                  location.reload();
                } else {
                  ElMessage.warning(res.msg)
@@ -577,7 +501,7 @@
          const selectRecords = $table.getCheckboxRecords()
          if ($table) {
            if (selectRecords.length == 0) {
              ElMessage.warning("请勾选排产数据")
              ElMessage.warning(t('processCard.checkProductionScheduling'))
              return;
            }
            let schedulingData = ref({
@@ -586,7 +510,7 @@
            })
            request.post("/productionScheduling/examineScheduling", schedulingData.value).then((res) => {
              if (res.code == 200) {
                ElMessage.success("审核成功")
                ElMessage.success(t('basicData.msg.ReviewSuccess'))
                location.reload();
              } else {
                ElMessage.warning(res.msg)
@@ -606,7 +530,7 @@
      switch (menu.code) {
        case 'copyChecked' : {
          let result = toolbarButtonClickEvent()
          if (result.cell === "scheduled_start_time" || result.cell === "plan_end_time") {
          if (result.cell === "scheduledStartTime" || result.cell === "planEndTime" || result.cell === "schedulingQuantity"){
            if (result) {
              const dataList = xGrid.value.getTableData().visibleData
              const val = dataList[result.start][result.cell]
@@ -622,7 +546,7 @@
        }
        case 'copyAll' : {
          let result = toolbarButtonClickEvent()
          if (result.cell === "scheduled_start_time" || result.cell === "plan_end_time") {
          if (result.cell === "scheduledStartTime" || result.cell === "planEndTime"|| result.cell === "schedulingQuantity") {
            if (result) {
              const dataList = xGrid.value.getTableData().visibleData
              const val = dataList[result.start][result.cell]
@@ -637,7 +561,7 @@
        }
        case 'clearChecked' : {
          let result = toolbarButtonClickEvent()
          if (result.cell === "scheduled_start_time" || result.cell === "plan_end_time") {
          if (result.cell === "scheduledStartTime" || result.cell === "planEndTime"|| result.cell === "schedulingQuantity") {
            if (result) {
              const dataList = xGrid.value.getTableData().visibleData
              dataList.forEach((item, index) => {
@@ -661,7 +585,7 @@
  let selectState = stateValue.value
  table.forEach((selectRecords) => {
    if (selectRecords.scheduling_quantity > selectRecords.pendingProductionQuantity && selectState == 1) {
      ElMessage.warning("排产数量不能大于待排产数量")
      ElMessage.warning(t('processCard.schedulingQuantityNoQuantityScheduled'))
      //禁用保存按钮
      //gridOptions.toolbarConfig.buttons[2].disabled = true
    }
@@ -680,9 +604,9 @@
        <el-date-picker
            v-model="form.date1"
            :default-time="defaultTime"
            end-placeholder="结束时间"
            :start-placeholder="$t('basicData.startDate')"
            :end-placeholder="$t('basicData.endDate')"
            format="YYYY/MM/DD"
            start-placeholder="开始时间"
            type="daterange"
            value-format="YYYY-MM-DD"
@@ -690,7 +614,7 @@
        &nbsp;&nbsp;
        <el-input v-model="form.orderId" :placeholder="$t('order.orderId')" clearable style="width: 110px"></el-input>
        &nbsp;
        <el-select v-model="value" clearable default-value="default_city" style="width: 120px">
        <el-select v-model="processVal" clearable default-value="default_city" style="width: 120px">
          <el-option
              v-for="item in titleSelectJson['processType']"
              :key="item.id"
@@ -699,7 +623,7 @@
          />
        </el-select>
        &nbsp;
        <el-select v-model="stateValue" class="m-2" placeholder="是否排产" style="width: 120px">
        <el-select v-model="stateValue" class="m-2" :placeholder="$t('processCard.whetherToScheduleProduction')" style="width: 120px">
          <el-option
              v-for="item in stateOptions"
              :key="item.value"
@@ -761,11 +685,7 @@
    </vxe-grid>
  </div>
  <div ref="cellArea" class="vxe-table--cell-area">
    <span class="vxe-table--cell-main-area"></span>
    <span class="vxe-table--cell-active-area"></span>
  </div>
</template>
<style scoped>
north-glass-erp/northglass-erp/src/views/pp/processCard/SelectDetailProcessCard.vue
@@ -136,19 +136,19 @@
  },//表头参数
  columns:[
    {type:'expand',fixed:"left",slots: { content:'content' },width: 50},
    { type: 'seq',fixed:"left", title: '自序', width: 50 },
    {field: 'order_id', title: '销售单号',filters:[{ data: '' }],slots: { filter: 'num1_filter' },width: 80 },
    {field: 'process_id', width: 140, title: '流程卡号' ,showOverflow:"ellipsis" ,filters:[{ data: '' }],slots: { filter: 'num1_filter' }},
    {field: 'order_number', title: '订单序号' ,filters:[{ data: '' }],slots: { filter: 'num1_filter' },},
    {field: 'technology_number', title: '小片顺序' ,filters:[{ data: '' }],slots: { filter: 'num1_filter' },},
    {field: 'quantity', title: '数量',filters:[{ data: '' }],slots: { filter: 'num1_filter' }, width: 80},
    {field: 'child_width', title: '宽', },
    {field: 'child_height', title: '高', },
    {field: 'area', title: '面积' ,showOverflow:"ellipsis"},
    {field: 'product_name', title: '产品名称', },
    {field: 'glass_child', title: '单片名称', },
    {field: 'founder', title: '分架员', },
    {field: 'splitFrame_time', title: '分架时间', },
    { type: 'seq',fixed:"left", title: t('basicData.Number'), width: 50 },
    {field: 'order_id', title: t('order.orderId'),filters:[{ data: '' }],slots: { filter: 'num1_filter' },width: 80 },
    {field: 'process_id', width: 140, title: t('processCard.processId') ,showOverflow:"ellipsis" ,filters:[{ data: '' }],slots: { filter: 'num1_filter' }},
    {field: 'order_number', title: t('order.OrderNum') ,filters:[{ data: '' }],slots: { filter: 'num1_filter' },},
    {field: 'technology_number', title: t('processCard.technologyNumber') ,filters:[{ data: '' }],slots: { filter: 'num1_filter' },},
    {field: 'quantity', title: t('order.OrderNum'),filters:[{ data: '' }],slots: { filter: 'num1_filter' }, width: 80},
    {field: 'child_width', title: t('order.width'), },
    {field: 'child_height', title: t('order.height'), },
    {field: 'area', title: t('order.area') ,showOverflow:"ellipsis"},
    {field: 'product_name', title: t('order.product'), },
    {field: 'glass_child', title: t('reportingWorks.glassChild'), },
    {field: 'founder', title: t('processCard.founder'), },
    {field: 'splitFrame_time', title: t('processCard.splitFrameTime'), },
  ],//表头按钮
  toolbarConfig: {
north-glass-erp/northglass-erp/src/views/pp/processCard/SelectPrintFlowCard.vue
@@ -156,28 +156,28 @@
    {type: 'seq', fixed: "left", title: t('basicData.Number'), width: 50},
    {
      field: 'order_id',
      title: '销售单号',
      title: t('order.orderId'),
      filters: [{data: ''}],
      slots: {filter: 'num1_filter'},
      filterMethod: filterChanged
    },
    {
      field: 'project',
      title: '项目名称',
      title: t('order.project'),
      filters: [{data: ''}],
      slots: {filter: 'num1_filter'},
      filterMethod: filterChanged
    },
    {
      field: 'quantity',
      title: '数量',
      title: t('order.quantity'),
      filters: [{data: ''}],
      slots: {filter: 'num1_filter'},
      filterMethod: filterChanged
    },
    {
      field: 'area',
      title: '面积',
      title: t('order.area'),
      filters: [{data: ''}],
      slots: {filter: 'num1_filter'},
      filterMethod: filterChanged
@@ -233,9 +233,9 @@
      <el-row :gutter="0">
        <el-date-picker
            v-model="form.date1"
            end-placeholder="结束时间"
            :start-placeholder="$t('basicData.startDate')"
            :end-placeholder="$t('basicData.endDate')"
            format="YYYY/MM/DD"
            start-placeholder="开始时间"
            type="daterange"
            value-format="YYYY-MM-DD"
@@ -243,7 +243,7 @@
        &nbsp;&nbsp;
        <el-input v-model="form.orderId" :placeholder="$t('order.orderId')" clearable style="width: 110px"></el-input>
        &nbsp;&nbsp;
        <el-input v-model="form.project" clearable placeholder="项目名称" style="width: 110px"></el-input>
        <el-input v-model="form.project" clearable :placeholder="$t('order.project')" style="width: 110px"></el-input>
        &nbsp;&nbsp;
        <el-button
            id="select"
north-glass-erp/northglass-erp/src/views/pp/processCard/SelectProcessCard.vue
@@ -37,7 +37,7 @@
          ElMessage.success(t('workOrder.deleteOk'))
          router.push({path: '/main/processCard/SelectProcessCard', query: {random: Math.random()}})
        } else {
          ElMessage.warning('删除失败,检查流程卡是否已报工')
          ElMessage.warning(t('processCard.deleteOk'))
        }
      })
@@ -54,7 +54,7 @@
//定义变量
const form = reactive({
  date1: '',
  getSelect:'不可排版'
  getSelect:t('processCard.composingNo')
})
@@ -318,9 +318,9 @@
})
const sexOptions = ref([
  {label: '已排版', value: '已排版'},
  {label: '可排版', value: '可排版'},
  {label: '不可排版', value: '不可排版'}
  {label: t('processCard.typesetter'), value: t('processCard.typesetter')},
  {label: t('processCard.composingOk'), value: t('processCard.composingOk')},
  {label: t('processCard.composingNo'), value: t('processCard.composingNo')}
])
//表格按钮
@@ -334,7 +334,7 @@
          if ($table) {
            const selectRecords = $table.getCheckboxRecords()
            if (selectRecords.length == 0) {
              ElMessage.warning("请勾选需要的数据")
              ElMessage.warning(t('processCard.pleaseCheckTheRequiredData'))
              return;
            }
@@ -345,14 +345,14 @@
            //修改排版状态
            request.post("/processCard/updateComposing", composingData.value).then((res) => {
              if (res.code == 200 && res.data === true) {
                ElMessage.success("修改成功")
                ElMessage.success(t('basicData.msg.saveSuccess'))
                router.push({
                  path: '/main/processCard/SelectProcessCard',
                  query: {random: Math.random()}
                })
              } else {
                ElMessage.warning('修改失败')
                ElMessage.warning(t('basicData.msg.saveFail'))
              }
            })
@@ -368,7 +368,7 @@
}
const checkBoxConfig = {
  checkMethod: ({row}) => {
    if (row['layoutStatus'] === '可排版' || row['layoutStatus'] === '已排版') {
    if (row['layoutStatus'] === t('processCard.composingOk') || row['layoutStatus'] === t('processCard.typesetter')) {
      return row.disable
    } else {
      return !row.disable
@@ -463,9 +463,9 @@
          <div v-for="(option, index) in column.filters" :key="index">
            <select v-model="option.data" @change="changeFilterEvent($event, option, $panel)" style="width: 100%">
              <option  value="已排版" label="已排版"></option>
              <option  value="可排版" label="可排版"></option>
              <option  value="不可排版" label="不可排版"></option>
              <option  :value="$t('processCard.typesetter')" :label="$t('processCard.typesetter')"></option>
              <option  :value="$t('processCard.composingOk')" :label="$t('processCard.composingOk')"></option>
              <option  :value="$t('processCard.composingNo')" :label="$t('processCard.composingNo')"></option>
            </select>
          </div>
        </div>
north-glass-erp/northglass-erp/src/views/pp/reportingWorks/AddReportingWork.vue
@@ -99,11 +99,11 @@
        xGrid.value.reloadData(res.data.reportingWorkDetails)
        let button =  {
          code: 'update',
          name: '修改',
          name: t('basicData.update'),
          status: 'primary',
        }
        if(route.query.reviewStatus === "1"){
          button.name='审核'
          button.name=t('basicData.review')
          titleUploadData.value.qualityInspector=user.user.userName
        }
@@ -132,15 +132,15 @@
const optionVal = ref('')
//班次
const classesVal = ref('早班')
const classesVal = ref(t('reportingWorks.early'))
const classesOption = [
  {
    value: '早班',
    label: '早班',
    value: t('reportingWorks.early'),
    label: t('reportingWorks.early'),
  },
  {
    value: '晚班',
    label: '晚班',
    value: t('reportingWorks.nightShift'),
    label: t('reportingWorks.nightShift'),
  },
]
@@ -259,7 +259,7 @@
          const brokenNum =
              (row.breakageQuantity === undefined || row.breakageQuantity===null) ? 0 : row.breakageQuantity
          if (row.completedQuantity && !regex.test(row.completedQuantity)) {
            return new Error('请输入整数,并且大于等于0')
            return new Error(t('reportingWorks.enterIntegerGreaterThanEqualTo'))
          }else if((row.completedQuantity*1+brokenNum*1)>row.quantity*1){
            return new Error((`${row.completedQuantity}+${brokenNum}>${row.quantity}`))
          }
@@ -319,7 +319,7 @@
        case 'saveReportingWork':  {
          const errMap = await $grid.validate(true)
          if (errMap) {
            ElMessage.error(`校验不通过!`)
            ElMessage.error(t('basicData.msg.checkoutLose'))
            return
          }
          saveReportingWork(0,'save')
@@ -328,7 +328,7 @@
        case 'saveReportingWorkReview':  {
          const errMap = await $grid.validate(true)
          if (errMap) {
            ElMessage.error(`校验不通过!`)
            ElMessage.error(t('basicData.msg.checkoutLose'))
            return
          }
          saveReportingWork(1,'save')
@@ -338,7 +338,7 @@
          getQuantity()
          const errMap = await $grid.validate(true)
          if (errMap) {
            ElMessage.error(`校验不通过!`)
            ElMessage.error(t('basicData.msg.checkoutLose'))
            return
          }
          saveReportingWork(0,'update')
@@ -453,7 +453,7 @@
        validator ({ cellValue }) {
          const regex = /^[1-9]\d*$/
          if (!regex.test(cellValue)) {
            return new Error('输入大于0的整数')
            return new Error(t('reportingWorks.enterIntegerGreaterThan'))
          }
        }
      }
@@ -463,25 +463,25 @@
        validator ({ row }) {
          const regex = /^\s*$/i
          if(row.available===true && (regex.test(row.returnProcess)==='' || row.returnProcess===null)){
            return new Error('可利用已选择,请选择返回工序')
            return new Error(t('reportingWorks.availableOkReturnProcess'))
          }
        }
      }
    ],
    breakageType: [
      { required: true, message: '请选择次破类型' }
      { required: true, message: t('reportingWorks.selectBreakageType') }
    ],
    breakageReason: [
      { required: true, message: '请选择次破原因' }
      { required: true, message: t('reportingWorks.selectBreakageReason') }
    ],
    responsibleProcess: [
      { required: true, message: '请选择责任工序' }
      { required: true, message: t('reportingWorks.selectResponsibleProcess')}
    ],
    responsibleEquipment: [
      { required: true, message: '请选择责任设备' }
      { required: true, message: t('reportingWorks.selectResponsibleEquipment') }
    ],
    responsibleTeam: [
      { required: true, message: '责任班组' }
      { required: true, message: t('reportingWorks.selectResponsibleTeam') }
    ],
  },
  toolbarConfig: {//表头按钮
@@ -533,7 +533,7 @@
  }
  const errMap = await brokenGrid.value.validate(true)
  if (errMap) {
    ElMessage.error(`校验不通过!`)
    ElMessage.error(t('basicData.msg.checkoutLose'))
    return false
  }
  let breakageQuantityCount = 0
@@ -610,17 +610,17 @@
const saveReportingWork = (state,saveType) => {
  if(xGrid.value.getTableData().fullData.length===0){
    ElMessage.warning(`请选择流程卡数据`)
    ElMessage.warning(t('reportingWorks.selectProcessCardData'))
    return
  }
  const device = titleUploadData.value.deviceName
  if(device === null || device === undefined || device === ''){
    ElMessage.error('请选择报工设备!')
    ElMessage.error(t('reportingWorks.selectWorkReportingEquipment'))
    return
  }
  const teamsGroupsName = titleUploadData.value.teamsGroupsName
  if(teamsGroupsName === null || teamsGroupsName === undefined || teamsGroupsName === ''){
    ElMessage.error('请选择报工设备!')
    ElMessage.error(t('reportingWorks.selectWorkReportingTeam'))
    return
  }
@@ -655,7 +655,7 @@
    return (a || b)
  })
  if(requestDetailData.length === 0){
    ElMessage.warning('请填写至少一条损耗数和完工数大于0')
    ElMessage.warning(t('reportingWorks.atLeastOneFinishedAndWornEligible'))
    return false
  }
@@ -678,7 +678,7 @@
const saveReportingWorkRequest = (requestData) =>{
  request.post(`/reportingWork/saveReportingWork`,requestData).then(res =>{
    if (res.code == 200){
      ElMessage.success("报工成功")
      ElMessage.success(t('reportingWorks.successfulJobApplication'))
      router.push({path:'/main/reportingWorks/AddReportingWork',query:{processId:titleUploadData.value.processId,random:Math.random()}})
    }else{
      const errorObj = JSON.parse(res.msg)
@@ -707,7 +707,7 @@
  }
  request.post(`/reportingWork/updateReportingWork/${reviewState}`,requestData).then(res =>{
    if (res.code == 200){
      ElMessage.success("报工修改成功")
      ElMessage.success(t('reportingWorks.successfulModificationOfWorkApplication'))
      router.push({path:'/main/reportingWorks/AddReportingWork',
        query:{
          processId:titleUploadData.value.processId,
@@ -749,23 +749,23 @@
const reviewReportingWork = () => {
  const processId = titleUploadData.value.processId
  if (processId.indexOf("/") < 0) {
    ElMessage.warning("请输入正确格式流程卡")
    ElMessage.warning(t('reportingWorks.correctFormatProcessCard'))
    return
  }
  let indexOfChar = processId.indexOf("/")
  let leftString = processId.slice(0, indexOfChar)
  if (leftString.length < 14) {
    ElMessage.warning("请输入正确位数的流程卡")
    ElMessage.warning(t('reportingWorks.processCardCorrectNumberDigits'))
    return
  }
//工序
  let process = titleUploadData.value.thisProcess
  if (process === "" || process == null) {
    ElMessage.warning("请选择工序")
    ElMessage.warning(t('reportingWorks.selectProcess'))
    return
  }
  if(titleUploadData.value.previousProcess===''){
    ElMessage.warning("第一道工序不需要审核")
    ElMessage.warning(t('reportingWorks.firstProcessNotReview'))
    return
  }
  const reportWork = {
@@ -775,7 +775,7 @@
  loadingFlag.value= true
  request.post("/reportingWork/reviewReportingWork",reportWork).then((res) =>{
    if(res.code === '200'){
      ElMessage.success("审核成功")
      ElMessage.success(t('basicData.msg.ReviewSuccess'))
      router.push({path:'/main/reportingWorks/AddReportingWork',
        query:{
          processId:titleUploadData.value.processId,
@@ -795,30 +795,30 @@
  let processId = titleUploadData.value.processId
  if (processId == "" || processId == null) {
    ElMessage.warning("流程卡号不能为空")
    ElMessage.warning(t('reportingWorks.theProcessCardNumberCannotBeEmpty'))
    return
  }
  let parts = processId.split('/');
  if (processId.indexOf("/") < 0 ||parts[1].trim() == '') {
    ElMessage.warning("请输入正确格式流程卡")
    ElMessage.warning(t('reportingWorks.correctFormatProcessCard'))
    return
  }
  let indexOfChar = processId.indexOf("/")
  let leftString = processId.slice(0, indexOfChar)
  if (leftString.length < 14) {
    ElMessage.warning("请输入正确位数的流程卡")
    ElMessage.warning(t('reportingWorks.processCardCorrectNumberDigits'))
    return
  }
//工序
  let process = titleUploadData.value.thisProcess
  if (process == "" || process == null) {
    ElMessage.warning("请选择工序")
    ElMessage.warning(t('reportingWorks.selectProcess'))
    return
  }
  if (titleSelectJson.value.thisProcessType.indexOf(process) == -1 && process != "切割" && titleSelectJson.value.thisProcessType != "") {
    ElMessage.warning("此工序不属于该流程卡")
    ElMessage.warning(t('reportingWorks.thisProcessNotProcessCard'))
    return
  }
  //匹配“/”前后字符串
@@ -833,7 +833,7 @@
  request.post(`/reportingWork/addSelectLastWork/${processIdStr}/${technologyStr}/${process}`).then((res) => {
    if (res.code == 200) {
      if(res.data.data==null){
        ElMessage.error("未查询到此流程卡数据")
        ElMessage.error(t('reportingWorks.noDataThisProcessCard'))
        return
      }
@@ -918,7 +918,7 @@
  let hours = dateObj.getHours().toString().padStart(2, '0'); // 小时
  let minutes = dateObj.getMinutes().toString().padStart(2, '0'); // 分钟
  let seconds = dateObj.getSeconds().toString().padStart(2, '0'); // 秒数
  if(parseInt(hours)>=17 && parseInt(hours)<8)titleUploadData.value.classes='晚班'
  if(parseInt(hours)>=17 && parseInt(hours)<8)titleUploadData.value.classes=t('reportingWorks.nightShift')
  return `${year}-${month}-${day} ${hours}:${minutes}:${seconds}`; // 返回格式化后的时间字符串
}
@@ -963,10 +963,10 @@
<template>
  <div style="height: 100%;width: 100%">
    <div id="head" style="height: 5%;width: 100%;margin-bottom: 5px">
      <el-input :disabled="inputDisabled" v-if="titleUploadData.reportingWorkId" v-model="titleUploadData.reportingWorkId" placeholder="报工编号" style="width: 200px" />
      <el-input :disabled="inputDisabled" v-model="titleUploadData.processId" placeholder="流程卡号" style="width: 200px" @keyup.enter.native="getWork();getQuantity()"/>
      <el-input :disabled="inputDisabled" v-if="titleUploadData.reportingWorkId" v-model="titleUploadData.reportingWorkId" :placeholder="$t('reportingWorks.reportingWorkId')" style="width: 200px" />
      <el-input :disabled="inputDisabled" v-model="titleUploadData.processId" :placeholder="$t('processCard.processId')" style="width: 200px" @keyup.enter.native="getWork();getQuantity()"/>
      &nbsp;
      <el-select :disabled="inputDisabled" v-model="titleUploadData.thisProcess" clearable placeholder="请选择工序" style="width: 120px"
      <el-select :disabled="inputDisabled" v-model="titleUploadData.thisProcess" clearable :placeholder="$t('reportingWorks.selectProcess')" style="width: 120px"
                 @change="getWork();getQuantity()">
        <el-option
            v-for="item in titleSelectJson['processType']"
north-glass-erp/northglass-erp/src/views/pp/reportingWorks/QualityInReviewDetail.vue
@@ -105,28 +105,28 @@
  columns:[
    {type:'expand',fixed:"left",slots: { content:'content' },width: 50},
    // { type: 'seq',fixed:"left", title: '自序', width: 50 },
    {field: 'order_number',fixed:"left", width: 120, title: '序号',filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true, },
    {field: 'glass_child',fixed:"left",width: 120, title: '单片名称', sortable: true,showOverflow:"ellipsis" ,filters:[{ data: '' }],slots: { filter: 'num1_filter' }},
    {field: 'technology_number', width: 130,title: '小片顺序', sortable: true,filters:[{ data: '' }],slots: { filter: 'num1_filter' }},
    {field: 'glass_address',width: 120, title: '片标记',filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true},
    {field: 'child_width', width: 100,title: '宽', sortable: true},
    {field: 'child_height',width: 100, title: '高', sortable: true},
    {field: 'shape',width: 120, title: '形状', sortable: true,showOverflow:"ellipsis"},
    {field: 'completed_quantity',width: 120, title: '完工数量', sortable: true},
    {field: 'breakage_quantity',width: 120, title: '次破数量', sortable: true},
    {field: 'available',width: 120, title: '可利用', sortable: true},
    {field: 'return_process',width: 120, title: '退回工序', sortable: true},
    {field: 'breakage_type',width: 120, title: '次破类型', sortable: true},
    {field: 'breakage_reason',width: 120, title: '次破原因', sortable: true},
    {field: 'responsible_equipment',width: 120, title: '责任设备', sortable: true},
    {field: 'responsible_process',width: 120, title: '责任工序', sortable: true},
    {field: 'responsible_team',width: 120, title: '责任班组', sortable: true},
    {field: 'responsible_personnel',width: 120, title: '责任人员', sortable: true},
    {field: 'order_number',fixed:"left", width: 120, title: t('order.OrderNum'),filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true, },
    {field: 'glass_child',fixed:"left",width: 120, title: t('reportingWorks.glassChild'), sortable: true,showOverflow:"ellipsis" ,filters:[{ data: '' }],slots: { filter: 'num1_filter' }},
    {field: 'technology_number', width: 130,title: t('processCard.technologyNumber'), sortable: true,filters:[{ data: '' }],slots: { filter: 'num1_filter' }},
    {field: 'glass_address',width: 120, title: t('reportingWorks.glassAddress'),filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true},
    {field: 'child_width', width: 100,title: t('order.width'), sortable: true},
    {field: 'child_height',width: 100, title: t('order.height'), sortable: true},
    {field: 'shape',width: 120, title: t('order.shape'), sortable: true,showOverflow:"ellipsis"},
    {field: 'completed_quantity',width: 120, title:  t('reportingWorks.thisCompletedQuantity'), sortable: true},
    {field: 'breakage_quantity',width: 120, title: t('reportingWorks.thisWornQuantity'), sortable: true},
    {field: 'available',width: 120, title: t('reportingWorks.available'), sortable: true},
    {field: 'return_process',width: 120, title: t('reportingWorks.returnProcess'), sortable: true},
    {field: 'breakage_type',width: 120, title: t('reportingWorks.breakageType'), sortable: true},
    {field: 'breakage_reason',width: 120, title: t('reportingWorks.breakageReason'), sortable: true},
    {field: 'responsible_equipment',width: 120, title: t('reportingWorks.responsibleEquipment'), sortable: true},
    {field: 'responsible_process',width: 120, title: t('reportingWorks.responsibleProcess'), sortable: true},
    {field: 'responsible_team',width: 120, title: t('reportingWorks.responsibleTeam'), sortable: true},
    {field: 'responsible_personnel',width: 120, title: t('reportingWorks.responsiblePersonnel'), sortable: true},
  ],//表头按钮
  toolbarConfig: {
    buttons: [
      {code: 'print_lck', name: '审核通过',status:'primary' },
      {code: 'print_lck', name: t('reportingWorks.passAudit'),status:'primary' },
    ],
    // import: false,
    // export: true,
@@ -142,7 +142,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/pp/reportingWorks/QualityInspectionReview.vue
@@ -56,11 +56,11 @@
const options = [
  {
    value: '1',
    label: '未质检',
    label: t('reportingWorks.unqualified'),
  },
  {
    value: '2',
    label: '已质检',
    label: t('reportingWorks.qualified'),
  },
]
@@ -274,24 +274,24 @@
  },//表头参数
  columns:[
    {type:'expand',fixed:"left",slots: { content:'content' }},
    {title: '操作', width: 100, slots: { default: 'button_slot' },fixed:"left"},
    { type: 'seq',fixed:"left", title: '自序',},
    {title: t('basicData.operate'), width: 100, slots: { default: 'button_slot' },fixed:"left"},
    { type: 'seq',fixed:"left", title: t('basicData.Number'),},
    {field: 'reportingWorkId',width: 130,  title: '报工编号',filters:[{ data: '' }],slots: { filter: 'num1_filter' }, },
    {field: 'reportingWorkTime',width: 120, title: '报工时间',showOverflow:"ellipsis" },
    {field: 'processId',width: 130, title: '流程卡号',filters:[{ data: '' }],slots: { filter: 'num1_filter' }},
    {field: 'order.project',width: 120, title: '项目名称',filters:[{ data: '' }],slots: { filter: 'num1_filter' }},
    {field: 'order.customerName',width: 120, title: '客户名称',filters:[{ data: '' }],slots: { filter: 'num1_filter' }},
    {field: 'thisProcess',width: 100, title: '本工序',showOverflow:"ellipsis"},
    {field: 'thisCompletedQuantity',width: 100, title: '完工数量'},
    {field: 'thisWornQuantity', width: 100,title: '次破数量'},
    {field: 'teamsGroupsName',width: 110, title: '报工班组'},
    {field: 'deviceName',width: 110, title: '报工设备'},
    {field: 'previousProcess', width: 100,title: '上工序'},
    {field: 'nextProcess',width: 100, title: '下工序'},
    {field: 'qualityInspector',width: 120, title: '质检员'},
    {field: 'qualityInsTime',width: 120, title: '质检时间'},
    {field: 'damageDetails.qualityInsStatus',width: 120, title: '质检状态'}
    {field: 'reportingWorkId',width: 130,  title: t('reportingWorks.reportingWorkId'),filters:[{ data: '' }],slots: { filter: 'num1_filter' }, },
    {field: 'reportingWorkTime',width: 120, title: t('reportingWorks.reportingWorkTime'),showOverflow:"ellipsis" },
    {field: 'processId',width: 130, title: t('processCard.processId'),filters:[{ data: '' }],slots: { filter: 'num1_filter' }},
    {field: 'order.project',width: 120, title: t('order.project'),filters:[{ data: '' }],slots: { filter: 'num1_filter' }},
    {field: 'order.customerName',width: 120, title: t('customer.customerName'),filters:[{ data: '' }],slots: { filter: 'num1_filter' }},
    {field: 'thisProcess',width: 100, title: t('reportingWorks.thisProcess'),showOverflow:"ellipsis"},
    {field: 'thisCompletedQuantity',width: 100, title: t('reportingWorks.thisCompletedQuantity')},
    {field: 'thisWornQuantity', width: 100,title: t('reportingWorks.thisWornQuantity')},
    {field: 'teamsGroupsName',width: 110, title: t('reportingWorks.teamsType')},
    {field: 'deviceName',width: 110, title: t('reportingWorks.deviceType')},
    {field: 'previousProcess', width: 100,title: t('reportingWorks.previousProcess')},
    {field: 'nextProcess',width: 100, title: t('reportingWorks.nextProcess')},
    {field: 'qualityInspector',width: 120, title: t('reportingWorks.qualityInspector')},
    {field: 'qualityInsTime',width: 120, title: t('reportingWorks.qualityInsTime')},
    {field: 'damageDetails.qualityInsStatus',width: 120, title: t('reportingWorks.qualityInsStatus')}
  ],//表头按钮
  toolbarConfig: {
@@ -353,7 +353,7 @@
          />
        </el-select>
        &nbsp;&nbsp;
        <el-input v-model="form.processId" clearable placeholder="流程卡号" style="width: 130px"></el-input>
        <el-input v-model="form.processId" clearable :placeholder="$t('processCard.processId')" style="width: 130px"></el-input>
        &nbsp;
        <el-button
            @click="getWorkOrder"
@@ -395,8 +395,8 @@
                   size="small">
          {{ $t('basicData.edit') }}
        </el-button>
        <el-button v-if="row.damageDetails.qualityInsStatus===1" @click="getTableRow(row,'setType')" link type="primary" size="small">审核</el-button>
        <el-button v-else disabled @click="getTableRow(row,'setType')" link type="primary" size="small">审核</el-button>
        <el-button v-if="row.damageDetails.qualityInsStatus===1" @click="getTableRow(row,'setType')" link type="primary" size="small">{{ $t('basicData.review') }}</el-button>
        <el-button v-else disabled @click="getTableRow(row,'setType')" link type="primary" size="small">{{ $t('basicData.review') }}</el-button>
      </template>
      <template #num1_filter="{ column, $panel }">
north-glass-erp/northglass-erp/src/views/pp/reportingWorks/ReportingWorks.vue
@@ -26,7 +26,7 @@
        <el-breadcrumb-item @click="changeRouter(1)" :class="indexFlag===1?'indexTag':''" :to="{ path: '/main/reportingWorks/AddReportingWork' }">{{$t('reportingWorks.addReportingWorks')}}</el-breadcrumb-item>
        <el-breadcrumb-item @click="changeRouter(2)" :class="indexFlag===2?'indexTag':''" :to="{ path: '/main/reportingWorks/SelectReportingWorks' }">{{$t('reportingWorks.WorkReportingManagement')}}</el-breadcrumb-item>
        <el-breadcrumb-item @click="changeRouter(3)" :class="indexFlag===3?'indexTag':''" :to="{ path: '/main/reportingWorks/QualityInspectionReview' }">{{$t('reportingWorks.qualityInspectionReview')}}</el-breadcrumb-item>
        <el-breadcrumb-item :to="{ path: '/main/processCard/SelectPrintFlowCard' }" style="display: none">打印</el-breadcrumb-item>
        <el-breadcrumb-item :to="{ path: '/main/processCard/SelectPrintFlowCard' }" style="display: none">{{$t('basicData.print')}}</el-breadcrumb-item>
      </el-breadcrumb>
    </div>
north-glass-erp/northglass-erp/src/views/pp/reportingWorks/SelectReportingWorks.vue
@@ -28,7 +28,7 @@
          ElMessage.success(t('workOrder.deleteOk'))
          router.push({path: '/main/reportingWorks/SelectReportingWorks', query: {random:Math.random()}})
        } else {
          ElMessage.warning('删除失败,检查下工序是否已报工')
          ElMessage.warning(t('processCard.deleteNoProcedure'))
        }
      })
      break
@@ -250,23 +250,23 @@
  },//表头参数
  columns:[
    {type:'expand',fixed:"left",slots: { content:'content' },width: 50},
    {title: '操作', width: 140, slots: { default: 'button_slot' },fixed:"left"},
    { type: 'seq',fixed:"left", title: '自序', width: 50 },
    {field: 'reportingWorkId', width: 120, title: '报工编号',filters:[{ data: '' }],slots: { filter: 'num1_filter' }, },
    {field: 'reportingWorkTime',width: 120, title: '报工时间' ,showOverflow:"ellipsis" ,filters:[{ data: '' }],slots: { filter: 'num1_filter' }},
    {field: 'orderId', width: 130,title: '销售单号' ,filters:[{ data: '' }],slots: { filter: 'num1_filter' }},
    {field: 'processId', width: 130,title: '流程卡号' ,filters:[{ data: '' }],slots: { filter: 'num1_filter' }},
    {field: 'order.project',width: 120, title: '项目名称',filters:[{ data: '' }],slots: { filter: 'num1_filter' }, },
    {field: 'order.batch', width: 100,title: '批次' ,filters:[{ data: '' }],slots: { filter: 'num1_filter' }},
    {title: t('basicData.operate'), width: 140, slots: { default: 'button_slot' },fixed:"left"},
    { type: 'seq',fixed:"left", title: t('basicData.Number'), width: 50 },
    {field: 'reportingWorkId', width: 120, title: t('reportingWorks.reportingWorkId'),filters:[{ data: '' }],slots: { filter: 'num1_filter' }, },
    {field: 'reportingWorkTime',width: 120, title: t('reportingWorks.reportingWorkTime') ,showOverflow:"ellipsis" ,filters:[{ data: '' }],slots: { filter: 'num1_filter' }},
    {field: 'orderId', width: 130,title:  t('order.orderId') ,filters:[{ data: '' }],slots: { filter: 'num1_filter' }},
    {field: 'processId', width: 130,title: t('processCard.processId') ,filters:[{ data: '' }],slots: { filter: 'num1_filter' }},
    {field: 'order.project',width: 120, title: t('order.project'),filters:[{ data: '' }],slots: { filter: 'num1_filter' }, },
    {field: 'order.batch', width: 100,title: t('order.batch') ,filters:[{ data: '' }],slots: { filter: 'num1_filter' }},
    {field: 'thisProcess',width: 100, title: '本工序',filters:[{ data: '' }],slots: { filter: 'num1_filter' } },
    {field: 'thisCompletedQuantity',width: 120, title: '本工序完工' },
    {field: 'completedArea', width: 120,title: '完工面积', },
    {field: 'thisWornQuantity',width: 120, title: '本工序次破', },
    {field: 'wornArea',width: 120, title: '次破面积', },
    {field: 'deviceName', width: 100,title: '报工设备', },
    {field: 'teamsGroupsName',width: 120, title: '报工班组', },
    {field: 'reviewedState',width: 120, title: '审核状态', },
    {field: 'thisProcess',width: 100, title: t('reportingWorks.thisProcess'),filters:[{ data: '' }],slots: { filter: 'num1_filter' } },
    {field: 'thisCompletedQuantity',width: 120, title: t('reportingWorks.thisCompletedQuantity') },
    {field: 'completedArea', width: 120,title: t('reportingWorks.completedArea'), },
    {field: 'thisWornQuantity',width: 120, title: t('reportingWorks.thisWornQuantity'), },
    {field: 'wornArea',width: 120, title: t('reportingWorks.wornArea'), },
    {field: 'deviceName', width: 100,title: t('reportingWorks.deviceType'), },
    {field: 'teamsGroupsName',width: 120, title: t('reportingWorks.teamsType'), },
    {field: 'reviewedState',width: 120, title: t('processCard.reviewedState'), },
  ],//表头按钮
north-glass-erp/northglass-erp/src/views/pp/rework/AddRework.vue
@@ -182,11 +182,11 @@
              ElMessage.success(t('basicData.msg.saveSuccess'))
              router.push({path:'/main/rework/AddRework',query:{random:Math.random()}})
            }else{
              ElMessage.warning("保存失败")
              ElMessage.warning(t('basicData.msg.saveFail'))
              router.push("/login")
            }
          }).catch((err)=>{
            ElMessage.error('系统错误')
            ElMessage.error(t('basicData.msg.ServerConnectionError'))
            router.push("/login")
          })
          break
north-glass-erp/northglass-erp/src/views/pp/rework/SelectRework.vue
@@ -201,11 +201,11 @@
                router.push({path:'/main/rework/SelectRework',query:{random:Math.random()}})
              }else{
                ElMessage.warning("审核失败")
                ElMessage.warning(t('basicData.msg.reviewFail'))
                router.push("/login")
              }
            }).catch((err)=>{
              ElMessage.error('系统错误')
              ElMessage.error(t('basicData.msg.ServerConnectionError'))
              router.push("/login")
            })
          }
@@ -274,8 +274,8 @@
      <el-date-picker
          v-model="selectDate"
          type="daterange"
          start-placeholder="开始时间"
          end-placeholder="结束时间"
          :start-placeholder="$t('basicData.startDate')"
          :end-placeholder="$t('basicData.endDate')"
          format="YYYY-MM-DD"
          value-format="YYYY-MM-DD"
north-glass-erp/northglass-erp/src/views/pp/workOrder/AddWorkOrder.vue
@@ -270,8 +270,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('workOrder.transferOrder') }}</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/workOrder/SelectWorkOrder.vue
@@ -38,7 +38,7 @@
            router.push({path: '/main/workOrder/SelectWorkOrder', query: {startTime:startTime,endTime:endTime,state:state,random:Math.random()}})
          } else {
            ElMessage.warning('删除失败,检查是否已分架')
            ElMessage.warning(t('workOrder.deleteNo'))
          }
      })
@@ -253,11 +253,11 @@
      , width: 130
    },
    {field: 'order.batch', title: t('order.batch'), filters: [{data: ''}], slots: {filter: 'num1_filter'}, width: 110},
    {field: 'order.project', title: '项目名称', filters: [{data: ''}], slots: {filter: 'num1_filter'}, width: 210},
    {field: 'order.orderType', title: '订单类型', showOverflow: "ellipsis", width: 110},
    {field: 'orderDetail.grossArea', title: '面积', width: 70},
    {field: 'orderDetail.quantity', title: '数量',},
    {field: 'order.creator', title: '创建人',},
    {field: 'order.project', title: t('order.project'), filters: [{data: ''}], slots: {filter: 'num1_filter'}, width: 210},
    {field: 'order.orderType', title: t('order.orderType'), showOverflow: "ellipsis", width: 110},
    {field: 'orderDetail.grossArea', title: t('order.orderType'), width: 70},
    {field: 'orderDetail.quantity', title: t('order.grossArea'),},
    {field: 'order.creator', title: t('order.creator'),},
  ],//表头按钮
  data: null,//表格数据
  toolbarConfig: {
north-glass-erp/northglass-erp/src/views/pp/workOrder/WorkOrder.vue
@@ -23,7 +23,7 @@
    <div id="div-title">
      <el-breadcrumb :separator-icon="ArrowRight">
        <el-breadcrumb-item @click="changeRouter(1)" :class="indexFlag===1?'indexTag':''" :to="{ path: '/main/workOrder/SelectWorkOrder' }">{{$t('workOrder.workOrder')}}</el-breadcrumb-item>
        <el-breadcrumb-item @click="changeRouter(2)" :class="indexFlag===2?'indexTag':''" :to="{ path: '/main/processCard/SelectPrintFlowCard' }" style="display: none">打印</el-breadcrumb-item>
        <el-breadcrumb-item @click="changeRouter(2)" :class="indexFlag===2?'indexTag':''" :to="{ path: '/main/processCard/SelectPrintFlowCard' }" style="display: none">{{$t('basicData.print')}}</el-breadcrumb-item>
      </el-breadcrumb>
    </div>
    <div id="main-body">
north-glass-erp/northglass-erp/src/views/sd/basicData/BasicData.vue
@@ -20,8 +20,8 @@
  <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/orderBasicData/searchBasicData' }">基础数据</el-breadcrumb-item>
        <el-breadcrumb-item @click="changeRouter(2)" :class="indexFlag===2?'indexTag':''" :to="{ path: '/main/orderBasicData/searchGlassType' }">玻璃类别</el-breadcrumb-item>
        <el-breadcrumb-item @click="changeRouter(1)" :class="indexFlag===1?'indexTag':''" :to="{ path: '/main/orderBasicData/searchBasicData' }">{{ $t('orderBasicData.basicType') }}</el-breadcrumb-item>
        <el-breadcrumb-item @click="changeRouter(2)" :class="indexFlag===2?'indexTag':''" :to="{ path: '/main/orderBasicData/searchGlassType' }">{{ $t('orderBasicData.glassCategory') }}</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/basicData/CreateBasicData.vue
@@ -14,89 +14,89 @@
  input:''
})
let options=ref([
  { "label": "订单",
  { "label": t('orderBasicData.order'),
    "value": "order",
    "children": [
      {
        "label": "订单类型",
        "label": t('orderBasicData.orderType'),
        "value": "orderType"
      },
      {
        "label": "订单分类",
        "label": t('orderBasicData.orderClassify'),
        "value": "orderClassify"
      },
      {
        "label": "商标选项",
        "label": t('orderBasicData.icon'),
        "value": "icon"
      },
      {
        "label": "包装方式",
        "label": t('orderBasicData.packType'),
        "value": "packType"
      },
      {
        "label": "铝条方式",
        "label": t('orderBasicData.alType'),
        "value": "alType"
      },
      {
        "label": "业务员",
        "label": t('orderBasicData.saleMan'),
        "value": "saleMan"
      }
    ]
  },
  {
    "label": "产品",
    "label": t('orderBasicData.product'),
    "value": "product",
    "children": [
      {
        "label": "材料厚度",
        "label": t('orderBasicData.stuffThickness'),
        "value": "stuffThickness"
      },
      {
        "label": "材料颜色",
        "label": t('orderBasicData.stuffColor'),
        "value": "stuffColor"
      },
      {
        "label": "工艺属性",
        "label": t('orderBasicData.stuffCraft'),
        "value": "stuffCraft"
      },
      {
        "label": "玻璃位置",
        "label": t('orderBasicData.stuffPosition'),
        "value": "stuffPosition"
      },
      {
        "label": "lowe",
        "label": t('orderBasicData.stuffLowE'),
        "value": "stuffLowE"
      },
      {
        "label": "夹胶厚度",
        "label": t('orderBasicData.InterlayerThickness'),
        "value": "InterlayerThickness"
      },
      {
        "label": "夹胶类型",
        "label": t('orderBasicData.InterlayerType'),
        "value": "InterlayerType"
      },
      {
        "label": "夹胶颜色",
        "label": t('orderBasicData.InterlayerColor'),
        "value": "InterlayerColor"
      },
      {
        "label": "工艺流程",
        "label": t('orderBasicData.process'),
        "value": "process"
      },
      {
        "label": "中空厚度",
        "label": t('orderBasicData.hollowThickness'),
        "value": "hollowThickness"
      },
      {
        "label": "充气方式",
        "label": t('orderBasicData.hollowGasType'),
        "value": "hollowGasType"
      },
      {
        "label": "封胶",
        "label": t('orderBasicData.hollowType'),
        "value": "hollowType"
      },
      {
        "label": "默认胶深",
        "label": t('orderBasicData.hollowGlueDepth'),
        "value": "hollowGlueDepth"
      }
    ]
@@ -104,15 +104,15 @@
  {
    "children": [
      {
        "label": "付款条件",
        "label": t('orderBasicData.paymentTerms'),
        "value": "paymentTerms"
      },
      {
        "label": "收款方式",
        "label": t('orderBasicData.payMethod'),
        "value": "payMethod"
      }
    ],
    "label": "送货",
    "label": t('orderBasicData.delivery'),
    "value": "delivery"
  }
])
@@ -135,7 +135,7 @@
const saveBasicData =  () =>{
  request.post(`/basicData/addBasicData`, basic.value).then(res => {
    if (res.data) {
      ElMessage.success('保存成功')
      ElMessage.success(t('basicData.msg.saveSuccess'))
      emit('gaveParent', true)
    }
  })
@@ -147,7 +147,7 @@
  submitArr.basicName = basic.value.input
  request.post(`/basicData/updateBasicData`, submitArr).then(res => {
    if (res.data) {
      ElMessage.success('修改成功')
      ElMessage.success(t('basicData.msg.saveSuccess'))
      emit('gaveParent', true)
    }
  })
@@ -165,7 +165,7 @@
<template>
  <div>
    <el-row>
      <el-col :span="4">基础类型:</el-col>
      <el-col :span="4">{{ $t('orderBasicData.basicType') }}:</el-col>
      <el-col :span="12">
        <el-cascader
            v-model="basic.basicType"
@@ -178,7 +178,7 @@
      </el-col>
    </el-row>
    <el-row>
      <el-col :span="4">名称:</el-col>
      <el-col :span="4">{{ $t('orderBasicData.name') }}:</el-col>
      <el-col :span="12">
        <el-input v-model="basic.input"/>
      </el-col>
@@ -186,8 +186,8 @@
    <el-row>
      <el-col :span="4"></el-col>
      <el-col :span="12">
        <el-button v-show="!props.rowIndex" @click="saveBasicData" type="primary">新增</el-button>
        <el-button v-show="props.rowIndex" @click="updateBasicData" type="primary">修改</el-button>
        <el-button v-show="!props.rowIndex" @click="saveBasicData" type="primary">{{ $t('basicData.insert') }}</el-button>
        <el-button v-show="props.rowIndex" @click="updateBasicData" type="primary">{{ $t('basicData.update') }}</el-button>
      </el-col>
    </el-row>
north-glass-erp/northglass-erp/src/views/sd/basicData/SearchBasicData.vue
@@ -42,9 +42,9 @@
  //表头参数
  columns:[
    {title: t('basicData.operate'), width: 110, slots: { default: 'button_slot' },fixed:"left",},
    {type: 'seq', title: '序号', width: 80 ,fixed:"left",},
    {field:'basicName',title: '名称'},
    {field:'createTime',title: '创建日期'},
    {type: 'seq', title: t('basicData.number'), width: 80 ,fixed:"left",},
    {field:'basicName',title: t('orderBasicData.name')},
    {field:'createTime',title: t('basicData.creationTime')},
  ],
@@ -52,7 +52,7 @@
  //表头按钮
  toolbarConfig: {
    buttons: [
      {'code': 'add', 'name': '新增',status: 'primary'},
      {'code': 'add', 'name': t('basicData.insert'),status: 'primary'},
    ],
    // import: false,
north-glass-erp/northglass-erp/src/views/sd/basicData/SearchGlassType.vue
@@ -42,16 +42,16 @@
  //表头参数
  columns:[
    {title: t('basicData.operate'), width: 110, slots: { default: 'button_slot' },fixed:"left",},
    {type: 'seq', title: '序号', width: 80 ,fixed:"left",},
    {field:'level',title: '类别等级'},
    {field:'typeName',title: '名称'},
    {field:'createTime',title: '创建日期'}
    {type: 'seq', title: t('basicData.number'), width: 80 ,fixed:"left",},
    {field:'level',title: t('orderBasicData.level')},
    {field:'typeName',title: t('orderBasicData.name')},
    {field:'createTime',title: t('basicData.creationTime')}
  ],
  //表头按钮
  toolbarConfig: {
    buttons: [
      {'code': 'add', 'name': '新增',status: 'primary'},
      {'code': 'add', 'name': t('basicData.insert'),status: 'primary'},
    ],
    // import: false,
@@ -65,11 +65,11 @@
const glassType = reactive([
  {
    value:1,
    label:'一级类别'
    label:t('orderBasicData.firstLevel')
  },
  {
    value: 2,
    label: '二级类别',
    label: t('orderBasicData.towLevel'),
    children: []
  }
])
@@ -139,7 +139,7 @@
  submit.value.type = type
  request.post(`/basicGlassType/add`, submit.value).then(res => {
    if (res.code==='200') {
      ElMessage.success('保存成功')
      ElMessage.success(t('basicData.msg.saveSuccess'))
      router.push({
        path:'/main/orderBasicData/searchGlassType',
        query:{random:Math.random()
@@ -188,8 +188,8 @@
          <el-input v-model="submit.value"/>
      </el-row>
      <el-row>
        <el-button v-if="!rowIndex" @click="saveBasicData('add')"   type="primary">新增</el-button>
        <el-button v-else @click="saveBasicData('update')" type="primary">修改</el-button>
        <el-button v-if="!rowIndex" @click="saveBasicData('add')"   type="primary">{{ $t('basicData.insert') }}</el-button>
        <el-button v-else @click="saveBasicData('update')" type="primary">{{ $t('basicData.update') }}</el-button>
      </el-row>
    </el-dialog>
north-glass-erp/northglass-erp/src/views/sd/customer/CreateCustomer.vue
@@ -93,11 +93,11 @@
      resetForm()
      ElMessage.success(t('basicData.msg.saveSuccess'))
    }else{
      ElMessage.warning("保存失败")
      ElMessage.warning(t('basicData.msg.saveFail'))
      router.push("/login")
    }
  }).catch((err)=>{
    ElMessage.error('系统错误')
    ElMessage.error(t('basicData.msg.ServerConnectionError'))
    router.push("/login")
  })
north-glass-erp/northglass-erp/src/views/sd/customer/SelectCustomer.vue
@@ -47,14 +47,14 @@
      request.post("/customer/deleteCustomer", flowData.value).then((res) => {
        if(res.code==200 && res.data===true){
          ElMessage.success("删除成功")
          ElMessage.success(t('basicData.msg.deleteSuccess'))
          router.push({path:'/main/customer/selectCustomer',query:{random:Math.random()}})
        }else{
          ElMessage.warning("删除失败")
          ElMessage.warning(t('basicData.msg.deleteFail'))
          router.push("/login")
        }
      }).catch((err)=>{
        ElMessage.error('系统错误')
        ElMessage.error(t('basicData.msg.ServerConnectionError'))
        router.push("/login")
      })
      break
@@ -261,8 +261,8 @@
                   v-if="userStore.user.permissions.indexOf('selectCustomer.edit') > -1"
                   link type="primary" size="small">{{$t('basicData.edit')}}</el-button>
        <el-button @click="getTableRow(row,'customerOrder')"
                   link type="primary" size="small">客户订单</el-button>
        <el-popconfirm @confirm="getTableRow(row,'delete')" title="确定删除?">
                   link type="primary" size="small">{{$t('customer.customerOrders')}}</el-button>
        <el-popconfirm @confirm="getTableRow(row,'delete')" :title="$t('searchOrder.deleteConfirm')">
          <template #reference>
            <el-button  link type="primary" size="small">{{ $t('basicData.delete') }}</el-button>
          </template>
north-glass-erp/northglass-erp/src/views/sd/customer/SelectCustomerOrder.vue
@@ -195,18 +195,18 @@
    {field: 'order.customerId',width:120,  title: t('customer.customerNumber')},
    {field: 'order.customerName',width:120,  title: t('customer.customerName')},
    {field: 'quantity',width:120,  title: t('order.quantity')},
    {field: 'productId',width:120,  title: "产品编号",filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true},
    {field: 'productName',width:120,  title: "产品名称",filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true},
    {field: 'shape',width:120,  title: "形状",filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true},
    {field: 'width',width:120,  title: "宽度",filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true},
    {field: 'height',width:120,  title: "高度",filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true},
    {field: 'productId',width:120,  title: t('order.productId'),filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true},
    {field: 'productName',width:120,  title: t('order.product'),filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true},
    {field: 'shape',width:120,  title: t('order.shape'),filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true},
    {field: 'width',width:120,  title: t('order.width'),filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true},
    {field: 'height',width:120,  title: t('order.height'),filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true},
    {field: 'order.project',width:120,  title: t('order.project'),filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true},
    {field: 'order.batch',width:120,  title: t('order.batch'),filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true},
    {field: 'order.money',width:120,   title: "订单金额",filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true},
    {field: 'order.money',width:120,   title: t('customer.orderAmount'),filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true},
    {field: 'area',width:120,  title: t('productStock.totalArea')},
    {field: 'order.orderType',width:120,  title: t('order.orderType'),filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true},
    {field: 'order.salesman',width:120,  title:t('order.salesman'),filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true},
    {field: 'order.createTime',width:120,  title:"创建时间"},
    {field: 'order.createTime',width:120,  title:t('basicData.creationTime')},
  ],//表头按钮
@@ -270,8 +270,8 @@
    <el-date-picker
        v-model="selectDate"
        type="daterange"
        start-placeholder="开始时间"
        end-placeholder="结束时间"
        :start-placeholder="t('basicData.startDate')"
        :end-placeholder="t('basicData.endDate')"
        format="YYYY-MM-DD"
        value-format="YYYY-MM-DD"
north-glass-erp/northglass-erp/src/views/sd/delivery/CreateDelivery.vue
@@ -264,8 +264,8 @@
    body: {
      options: [
        [
          { code: 'copyChecked', name: '选中相同', prefixIcon: 'vxe-icon-copy', visible: true, disabled: false },
          { code: 'otherMoney', name: '其他金额', prefixIcon: 'vxe-icon-chart-bar-x', visible: true, disabled: false }
          { code: 'copyChecked', name: t('basicData.selectSame'), prefixIcon: 'vxe-icon-copy', visible: true, disabled: false },
          { code: 'otherMoney', name: t('basicData.otherAmounts'), prefixIcon: 'vxe-icon-chart-bar-x', visible: true, disabled: false }
        ]
      ]
    }
@@ -400,11 +400,11 @@
               ElMessage.success(t('delivery.deliveryNoteSubmittedSuccessfully'))
               router.push({path: '/main/delivery/selectDelivery', query:{random:Math.random()}})
             }else{
               ElMessage.warning("保存失败")
               ElMessage.warning(t('basicData.msg.saveFail'))
               router.push("/login")
             }
           }).catch((err)=>{
             ElMessage.error('系统错误')
             ElMessage.error(t('basicData.msg.ServerConnectionError'))
             router.push("/login")
           })
          break
@@ -420,11 +420,11 @@
              ElMessage.success(t('basicData.msg.ReviewSuccess'))
              router.push({path: '/main/delivery/selectDelivery', query:{random:Math.random()}})
            } else {
              ElMessage.warning("审核失败")
              ElMessage.warning(t('basicData.msg.reviewFail'))
              router.push("/login")
            }
          }).catch((err)=>{
            ElMessage.error('系统错误')
            ElMessage.error(t('basicData.msg.ServerConnectionError'))
            router.push("/login")
          })
          break
@@ -440,11 +440,11 @@
              ElMessage.success(t('basicData.msg.cancelReviewSuccess'))
              router.push({path: '/main/delivery/selectDelivery', query:{random:Math.random()}})
            } else {
              ElMessage.warning("审核失败")
              ElMessage.warning(t('basicData.msg.reviewFail'))
              router.push("/login")
            }
          }).catch((err)=>{
            ElMessage.error('系统错误')
            ElMessage.error(t('basicData.msg.ServerConnectionError'))
            router.push("/login")
          })
          break
@@ -661,7 +661,7 @@
    </div>
    <el-dialog v-model="otherMoneyVisible"
               :title="'其他金额'"
               :title="$t('basicData.otherAmounts')"
               :close-on-click-modal="false"
               :close-on-press-escape="false"
               :before-close="closeOtherMoneyDialog"
north-glass-erp/northglass-erp/src/views/sd/delivery/Delivery.vue
@@ -32,15 +32,15 @@
        >
          <el-dropdown @command="handleCommand">
            <span class="el-dropdown-link" style="font-weight: 700;outline: none;">
              报表
              {{$t('basicData.reportForms')}}
              <el-icon class="el-icon--right">
                <arrow-down />
              </el-icon>
            </span>
            <template #dropdown>
              <el-dropdown-menu>
                <el-dropdown-item command="/main/delivery/deliveryReport" >发货明细报表</el-dropdown-item>
                <el-dropdown-item command="/main/delivery/deliveryProductReport">发货产品分类报表</el-dropdown-item>
                <el-dropdown-item command="/main/delivery/deliveryReport" >{{$t('delivery.shipmentDetailsReport')}}</el-dropdown-item>
                <el-dropdown-item command="/main/delivery/deliveryProductReport">{{$t('delivery.shipmentProductClassificationReport')}}</el-dropdown-item>
              </el-dropdown-menu>
            </template>
          </el-dropdown>
north-glass-erp/northglass-erp/src/views/sd/delivery/DeliveryProductReport.vue
@@ -3,40 +3,42 @@
import BasicTable from "@/components/BasicTable.vue"
import request from "@/utils/request"
import { ref} from "vue"
import {useI18n} from "vue-i18n";
const { t } = useI18n()
const childrenData = ref({
  columns:[
    {type:'expand',fixed:"left",width: 80},
    {type: 'seq',fixed:"left", title: '自序', width: 80 },
    {field: 'deliveryId',width:120, title: '发货单号',filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true},
    {field: 'deliveryNumber',width:120, title: '发货序号',filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true},
    {field: 'orderDetail.productId',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},
    {field: 'delivery.paymentTerms',width:120, title: '付款条件',filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true},
    {field: 'delivery.project',width:140, title: '项目名称',filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true},
    {field: 'quantity',width:120, title: '数量', sortable: true},
    {field: 'area',width:120, title: '面积', sortable: true},
    {field: 'money',width:120, title: '金额', sortable: true},
    {field: 'delivery.customerId',width:120, title: '客户编号',filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true},
    {field: 'delivery.customerName',width:120, title: '客户名称',filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true},
    {field: 'delivery.deliveryDate',width:120, title: '送货日期',filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true},
    {field: 'delivery.payMethod',width:120, title: '支付方式',filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true},
    {field: 'delivery.payDate',width:120, title: '支付日期',filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true},
    {field: 'delivery.salesman',width:120, title: '销售员',filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true},
    {field: 'delivery.creator',width:120, title: '发货员',filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true},
    {field: 'delivery.contacts',width:120, title: '联系人',filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true},
    {field: 'delivery.contactNumber',width:120, title: '联系电话',filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true},
    {field: 'delivery.deliveryAddress',width:150, title: '送货地址',filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true},
    {field: 'orderId',width:120, title: '销售单号',filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true},
    {field: 'orderNumber',width:120, title: '订单序号',filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true},
    {field: 'deliveryDetailRemakes',width:120, title: '备注',filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true},
    {field: 'createTime',width:120, title: '报表日期',filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true},
    {type: 'seq',fixed:"left", title: t('basicData.Number'), width: 80 },
    {field: 'deliveryId',width:120, title: t('delivery.deliveryNoteId'),filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true},
    {field: 'deliveryNumber',width:120, title: t('delivery.deliveryNoteNumber'),filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true},
    {field: 'orderDetail.productId',width:120, title: t('order.productId'),filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true},
    {field: 'orderDetail.productName',width:120, title: t('order.product'),filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true},
    {field: 'delivery.paymentTerms',width:120, title: t('delivery.paymentTerms'),filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true},
    {field: 'delivery.project',width:140, title: t('order.project'),filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true},
    {field: 'quantity',width:120, title: t('order.quantity'), sortable: true},
    {field: 'area',width:120, title: t('productStock.totalArea'), sortable: true},
    {field: 'money',width:120, title: t('delivery.money'), sortable: true},
    {field: 'delivery.customerId',width:120, title: t('customer.customerNumber'),filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true},
    {field: 'delivery.customerName',width:120, title: t('customer.customerName'),filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true},
    {field: 'delivery.deliveryDate',width:120, title: t('delivery.deliveryDate'),filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true},
    {field: 'delivery.payMethod',width:120, title: t('delivery.paymentMethod'),filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true},
    {field: 'delivery.payDate',width:120, title: t('delivery.deliveryDate'),filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true},
    {field: 'delivery.salesman',width:120, title: t('delivery.salesman'),filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true},
    {field: 'delivery.creator',width:120, title:  t('delivery.shipper'),filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true},
    {field: 'delivery.contacts',width:120, title: t('delivery.contacts'),filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true},
    {field: 'delivery.contactNumber',width:120, title: t('delivery.contactNumber'),filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true},
    {field: 'delivery.deliveryAddress',width:150, title: t('delivery.shippingAddress'),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: 'orderNumber',width:120, title: t('order.OrderNum'),filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true},
    {field: 'deliveryDetailRemakes',width:120, title: t('basicData.remarks'),filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true},
    {field: 'createTime',width:120, title: t('basicData.reportData'),filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true},
  ],//表格表头字段
  data:[],//表格数据
  url :'/Delivery/getSelectDeliveryDetailProductReport',
  exportUrl :'/Delivery/exportDeliveryDetailProductReport',
  exportName:'发货明细产品分类报表',
  exportName:t('delivery.shipmentProductClassificationReport'),
  footList:['quantity','area','money']
})
north-glass-erp/northglass-erp/src/views/sd/delivery/DeliveryReport.vue
@@ -3,38 +3,40 @@
import BasicTable from "@/components/BasicTable.vue"
import request from "@/utils/request"
import { ref} from "vue"
import {useI18n} from "vue-i18n";
const { t } = useI18n()
const childrenData = ref({
  columns:[
    {type:'expand',fixed:"left",width: 80},
    {type: 'seq',fixed:"left", title: '自序', width: 80 },
    {field: 'deliveryId',width:120, title: '发货单号',filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true},
    {field: 'deliveryNumber',width:120, title: '发货序号',filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true},
    {field: 'delivery.paymentTerms',width:120, title: '付款条件',filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true},
    {field: 'delivery.project',width:140, title: '项目名称',filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true},
    {field: 'quantity',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: 'money',width:120, title: '金额',filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true},
    {field: 'delivery.customerId',width:120, title: '客户编号',filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true},
    {field: 'delivery.customerName',width:120, title: '客户名称',filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true},
    {field: 'delivery.deliveryDate',width:120, title: '送货日期',filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true},
    {field: 'delivery.payMethod',width:120, title: '支付方式',filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true},
    {field: 'delivery.payDate',width:120, title: '支付日期',filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true},
    {field: 'delivery.salesman',width:120, title: '销售员',filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true},
    {field: 'delivery.creator',width:120, title: '发货员',filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true},
    {field: 'delivery.contacts',width:120, title: '联系人',filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true},
    {field: 'delivery.contactNumber',width:120, title: '联系电话',filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true},
    {field: 'delivery.deliveryAddress',width:150, title: '送货地址',filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true},
    {field: 'orderId',width:120, title: '销售单号',filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true},
    {field: 'orderNumber',width:120, title: '订单序号',filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true},
    {field: 'deliveryDetailRemakes',width:120, title: '备注',filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true},
    {field: 'createTime',width:120, title: '报表日期',filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true},
    {type: 'seq',fixed:"left", title: t('basicData.Number'), width: 80 },
    {field: 'deliveryId',width:120, title: t('delivery.deliveryNoteId'),filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true},
    {field: 'deliveryNumber',width:120, title: t('delivery.deliveryNoteNumber'),filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true},
    {field: 'delivery.paymentTerms',width:120, title: t('delivery.paymentTerms'),filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true},
    {field: 'delivery.project',width:140, title: t('order.project'),filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true},
    {field: 'quantity',width:120, title: t('order.quantity'), sortable: true},
    {field: 'area',width:120, title: t('productStock.totalArea'), sortable: true},
    {field: 'money',width:120, title: t('delivery.money'), sortable: true},
    {field: 'delivery.customerId',width:120, title: t('customer.customerNumber'),filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true},
    {field: 'delivery.customerName',width:120, title: t('customer.customerName'),filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true},
    {field: 'delivery.deliveryDate',width:120, title: t('delivery.deliveryDate'),filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true},
    {field: 'delivery.payMethod',width:120, title: t('delivery.paymentMethod'),filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true},
    {field: 'delivery.payDate',width:120, title: t('delivery.deliveryDate'),filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true},
    {field: 'delivery.salesman',width:120, title: t('delivery.salesman'),filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true},
    {field: 'delivery.creator',width:120, title:  t('delivery.shipper'),filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true},
    {field: 'delivery.contacts',width:120, title: t('delivery.contacts'),filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true},
    {field: 'delivery.contactNumber',width:120, title: t('delivery.contactNumber'),filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true},
    {field: 'delivery.deliveryAddress',width:150, title: t('delivery.shippingAddress'),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: 'orderNumber',width:120, title: t('order.OrderNum'),filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true},
    {field: 'deliveryDetailRemakes',width:120, title: t('basicData.remarks'),filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true},
    {field: 'createTime',width:120, title: t('basicData.reportData'),filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true},
  ],//表格表头字段
  data:[],//表格数据
  url :'/Delivery/getSelectDeliveryDetailReport',
  exportUrl :'/Delivery/exportDeliveryDetailReport',
  exportName:'发货明细报表',
  exportName:t('delivery.shipmentDetailsReport'),
  footList:['quantity','area','money']
})
north-glass-erp/northglass-erp/src/views/sd/delivery/SelectDelivery.vue
@@ -39,11 +39,11 @@
          ElMessage.success(t('searchOrder.msgDeleteSuccess'))
          router.push({path:'/main/delivery/selectDelivery',query:{random:Math.random()}})
        }else{
          ElMessage.warning("删除失败")
          ElMessage.warning(t('basicData.msg.deleteFail'))
          router.push("/login")
        }
      }).catch((err)=>{
        ElMessage.error('系统错误')
        ElMessage.error(t('basicData.msg.ServerConnectionError'))
        router.push("/login")
      })
@@ -228,7 +228,7 @@
    body: {
      options: [
        [
          { code: 'getProcessList', name: "打印", prefixIcon: 'vxe-icon-file-txt', visible: true}
          { code: 'getProcessList', name: t('basicData.print'), prefixIcon: 'vxe-icon-file-txt', visible: true}
        ]
      ]
    }
@@ -291,8 +291,8 @@
    <el-date-picker
        v-model="selectDate"
        type="daterange"
        start-placeholder="开始时间"
        end-placeholder="结束时间"
        :start-placeholder="t('basicData.startDate')"
        :end-placeholder="t('basicData.endDate')"
        format="YYYY-MM-DD"
        value-format="YYYY-MM-DD"
@@ -330,7 +330,7 @@
                   v-if="userStore.user.permissions.indexOf('selectDelivery.edit') > -1"
                   link type="primary" size="small">{{$t('basicData.edit')}}</el-button>
        <el-button @click="getTableRow(row,'printing')" :disabled="row.deliveryState!==2" link type="primary" size="small">打印</el-button>
        <el-popconfirm @confirm="getTableRow(row,'delete')"  title="确定删除?">
        <el-popconfirm @confirm="getTableRow(row,'delete')"  :title="$t('searchOrder.deleteConfirm')">
          <template #reference>
            <el-button :disabled="row.deliveryState===2" link type="primary" size="small">{{ $t('basicData.delete') }}</el-button>
          </template>
north-glass-erp/northglass-erp/src/views/sd/delivery/SelectOrderList.vue
@@ -294,8 +294,8 @@
    <el-date-picker
        v-model="selectDate"
        type="daterange"
        start-placeholder="开始时间"
        end-placeholder="结束时间"
        :start-placeholder="$t('basicData.startDate')"
        :end-placeholder="$t('basicData.endDate')"
        format="YYYY-MM-DD"
        value-format="YYYY-MM-DD"
north-glass-erp/northglass-erp/src/views/sd/order/CreateOrder.vue
@@ -29,7 +29,7 @@
const xGrid = ref()
let cellArea = ref()
const shapeList = ref([
    {label:'普形',value:'1'}, {label:'异形',value:'2'}
    {label:t('order.universalShape'),value:'1'}, {label:t('order.alien'),value:'2'}
])
// 定义表头上传数据
@@ -105,9 +105,9 @@
          { 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 },
          { code: 'errorArea', name: '误差结算面积', prefixIcon: 'vxe-icon-chart-bar-x', visible: true, disabled: false },
          { code: 'otherMoney', name: '其他金额', prefixIcon: 'vxe-icon-chart-bar-x', visible: true, disabled: false },
          { code: 'sizeCheck', name: '尺寸审核', prefixIcon: 'vxe-icon-eye-fill', visible: true, disabled: true }
          { code: 'errorArea', name: t('basicData.errorSettlementArea'), prefixIcon: 'vxe-icon-chart-bar-x', visible: true, disabled: false },
          { code: 'otherMoney', name: t('basicData.otherAmounts'), prefixIcon: 'vxe-icon-chart-bar-x', visible: true, disabled: false },
          { code: 'sizeCheck', name: t('basicData.sizeReview'), prefixIcon: 'vxe-icon-eye-fill', visible: true, disabled: true }
        ]
      ]
    }
@@ -338,14 +338,17 @@
            )
            if(errorAreaList.length){
              ElMessageBox.confirm(
                  `存在
                  ${errorAreaList.length}
                  条结算单片面积小于
                  ${errorArea.value}是否按照${errorArea.value}计算`,
                  /*t('order.msg.calculationAreaPrompt1')+
                  ${errorAreaList.length}+
                  t('order.msg.calculationAreaPrompt2')+
                  ${errorArea.value}+
                      t('order.msg.calculationAreaPrompt3')+
                  ${errorArea.value}+*/
                      t('order.msg.calculationAreaPrompt4'),
                  'Warning',
                  {
                    confirmButtonText: '确定',
                    cancelButtonText: '取消',
                    confirmButtonText: t('basicData.confirmButtonText'),
                    cancelButtonText: t('basicData.cancelButtonText'),
                    type: 'warning',
                  }
              ).then(()=>{
@@ -864,7 +867,7 @@
  }
  const fullData = xGrid.value.getTableData().fullData
  if (!fullData.length){
    ElMessage.warning("表格中无产品数据")
    ElMessage.warning(t('basicData.msg.noProductDataInTheTable'))
  }
  fullData.forEach((item,index) => {
    if( !isNaN(item.computeArea*1) && item.computeArea != null && item.computeArea*1 < errorArea.value){
@@ -919,7 +922,7 @@
  }
  const length = xGrid.value.getTableData().fullData.length
  if(length>maxTableLen.value){
    ElMessage.warning('表格数据超过最大限制')
    ElMessage.warning(t('basicData.msg.tableDataExceedsMaximumLimit'))
    return
  }
  if(evnt.$event.keyCode === 13 ){
@@ -1011,8 +1014,8 @@
        <el-col  :span="2"><el-text>{{$t('order.calculateType')}}:</el-text></el-col>
        <el-col  :span="2">
          <el-select @change="changeCalculateType" v-model="titleUploadData.calculateType"   placeholder=" " >
            <el-option :value="1" label="面积金额(单片)"/>
            <el-option :value="2" label="面积金额(总面积)"/>
            <el-option :value="1" :label="t('order.areaAmountPerPiece')"/>
            <el-option :value="2" :label="t('order.areaAmountAge')"/>
          </el-select>
        </el-col>
        <el-col  :span="2"><el-text>*{{$t('order.salesman')}}:</el-text></el-col>
@@ -1085,7 +1088,7 @@
          <vxe-button  @click="importEvent">{{$t('order.import')}}</vxe-button>
        </template>
        <template #default_shape="{ row }">
          <span>{{ row.shape=='1'?'普形':row.shape=='2'?'异形':null }}</span>
          <span>{{ row.shape=='1'? t('order.universalShape'):row.shape=='2'? t('order.alien'):null }}</span>
        </template>
        <template #shape_edit="{ row }">
          <vxe-select v-model="row.shape" transfer :options="shapeList"  placeholder=" "/>
@@ -1110,16 +1113,16 @@
        <el-col :span="10">
          <el-input
              v-model="errorArea"
              :placeholder="'误差值'"
              :placeholder="$t('order.errorValue')"
          />
        </el-col>
        <el-col :span="6">
          <el-button @click="errorAreaComputed">确认</el-button>
          <el-button @click="errorAreaComputed">{{$t('basicData.confirmButtonText')}}</el-button>
        </el-col>
      </el-row>
    </el-dialog>
    <el-dialog v-model="otherMoneyVisible"
               :title="'其他金额'"
               :title="$t('basicData.otherAmounts')"
               :close-on-click-modal="false"
               :close-on-press-escape="false"
               :before-close="closeOtherMoneyDialog"
@@ -1134,7 +1137,7 @@
    <el-dialog
        id="sizeCheck"
        v-model="sizeCheckVisible"
       :title="'尺寸校验'"
       :title="$t('basicData.sizeReview')"
       :close-on-click-modal="false"
       :close-on-press-escape="false"
       style="width: 614px;height:445px "
north-glass-erp/northglass-erp/src/views/sd/order/Order.vue
@@ -32,7 +32,7 @@
            >
          <el-dropdown @command="handleCommand">
            <span class="el-dropdown-link" style="font-weight: 700;outline: none;">
              报表
              {{ $t('basicData.reportForms') }}
              <el-icon class="el-icon--right">
                <arrow-down />
              </el-icon>
@@ -40,7 +40,7 @@
            <template #dropdown>
              <el-dropdown-menu>
                <el-dropdown-item command="/main/order/orderReport" >{{ $t('order.orderReport') }}</el-dropdown-item>
                <el-dropdown-item command="/main/order/orderProductSummaryReport">订单明细汇总</el-dropdown-item>
                <el-dropdown-item command="/main/order/orderProductSummaryReport">{{ $t('order.orderDetailsSummary') }}</el-dropdown-item>
              </el-dropdown-menu>
            </template>
          </el-dropdown>
north-glass-erp/northglass-erp/src/views/sd/order/OrderProductSummaryReport.vue
@@ -2,49 +2,54 @@
import BasicTable from "@/components/BasicTable.vue"
import { ref} from "vue"
import request from "@/utils/request"
import {useI18n} from "vue-i18n";
const { t } = useI18n()
const childrenData = ref({
  columns:[
    {type:'expand',fixed:"left",width: 80,slots: { content:'content' }},
    {type: 'seq',fixed:"left", title: '自序', width: 80 },
    {field: 'order.orderType',width:120, title: '订单类型',filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true},
    {field: 'order.customerName',width:120, title: '客户名称',filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true},
    {field: 'order.project',width:120, title: '项目名称',filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true},
    {field: 'order.orderId',width:120, title: '销售单号',filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true},
    {field: 'order.batch',width:120, title: '批次',filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true},
    {field: 'productId',width:120, title: '产品编号',filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true},
    {field: 'productName',width:120, title: '产品名称',filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true},
    {type: 'seq',fixed:"left", title: t('basicData.Number'), width: 80 },
    {field: 'order.orderType',width:120, title: t('order.orderType'),filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true},
    {field: 'order.customerName',width:120, title: t('customer.customerName'),filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true},
    {field: 'order.project',width:120, title: t('order.project'),filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true},
    {field: 'order.orderId',width:120, title: t('order.orderId'),filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true},
    {field: 'order.batch',width:120, title: t('order.batch'),filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true},
    {field: 'productId',width:120, title: t('order.productId'),filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true},
    {field: 'productName',width:120, title: t('order.product'),filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true},
    //{field: 'orderNumber',width:120, title: '订单序号',filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true},
    // {field: 'buildingNumber',width:120, title: '楼号',filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true},
    //{field: 'width',width:120, title: '宽',filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true},
    //{field: 'height',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: 'bendRadius',width:120, title: '弯钢弧度',filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true},
    {field: 'grossArea',width:120, title: '实际面积',filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true},
    {field: 'computeGrossArea',width:150, title: '结算总面积',filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true},
    //{field: 'shape',width:120, title: '形状',filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true},
    //{field: 'edgingType',width:120, title: '磨边类型',filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true},
    //{field: 'order.processingNote',width:140, title: '主加工要求',filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true},
    //{field: 'processingNote',width:120, title: '加工要求',filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true},
    //{field: 'order.remarks',width:120, title: '备注',filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true},
    {field: 'order.icon',width:120, title: '商标选项',filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true},
    {field: 'order.packType',width:120, title: '包装方式',filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true},
    //{field: 'width',width:120, title: t('order.width'),filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true},
    //{field: 'height',width:120, title: t('order.height'),filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true},
    {field: 'quantity',width:120, title: t('order.quantity'),filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true},
    //{field: 'bendRadius',width:120, title: t('order.bendRadius'),filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true},
    {field: 'grossArea',width:120, title: t('order.trueGrossArea'),filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true},
    {field: 'computeGrossArea',width:150, title: t('order.computeGrossArea'),filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true},
    //{field: 'shape',width:120, title: t('order.shape'),filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true},
    //{field: 'edgingType',width:120, title: t('order.edgingType'),filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true},
    //{field: 'order.processingNote',width:140, title: t('order.processingNotes'),filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true},
    //{field: 'processingNote',width:120, title: t('order.processingNote'),filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true},
    //{field: 'order.remarks',width:120, title: t('basicData.remarks'),filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true},
    {field: 'order.icon',width:120, title: t('order.icon'),filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true},
    {field: 'order.packType',width:120, title: t('order.packType'),filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true},
    // {field: 'prodID',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: 'price',width:120, title: '单价',filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true},
    {field: 'grossAmount',width:120, title: '金额',filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true},
    {field: 'order.alType',width:120, title: '铝条方式',filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true},
    {field: 'perimeter',width:120, title: t('order.perimeter'),filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true},
    {field: 'price',width:120, title: t('order.price'),filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true},
    {field: 'grossAmount',width:120, title: t('order.grossAmount'),filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true},
    {field: 'order.alType',width:120, title: t('order.alType'),filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true},
    // {field: 'prodID',width:120, title: '订单类型',filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true},
    {field: 'order.salesman',width:120, title: '业务员',filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true},
    {field: 'order.deliveryAddress',width:120, title: '送货地址',filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true},
    {field: 'order.creator',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: 'totalThickness',width:120, title: '总厚度',filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true},
    {field: 'levelOne',width:120, title: '产品大类',filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true},
    {field: 'levelTwo',width:120, title: '产品小类',filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true},
    {field: 'order.customerBatch',width:120, title: '客户批次',filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true}
    {field: 'order.salesman',width:120, title: t('order.salesman'),filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true},
    {field: 'order.deliveryAddress',width:120, title: t('order.deliveryAddress'),filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true},
    {field: 'order.creator',width:120, title: t('order.creator'),filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true},
    {field: 'createTime',width:120, title: t('basicData.creationTime'),filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true},
    {field: 'totalThickness',width:120, title:t('order.totalThickness'),filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true},
    {field: 'levelOne',width:120, title: t('order.levelOne'),filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true},
    {field: 'levelTwo',width:120, title: t('order.levelTwo'),filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true},
    {field: 'order.customerBatch',width:120, title: t('order.customerBatch'),filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true}
  ],//表格表头字段
  data:[],//表格数据
  url :'/order/getOrderProductSummary',
  exportUrl :'/order/getOrderProductSummary',
  exportName:t('order.orderDetailsSummaryReport'),
  footList:['quantity','grossArea','computeGrossArea','perimeter','price','grossAmount']
})
north-glass-erp/northglass-erp/src/views/sd/order/OrderReport.vue
@@ -2,51 +2,54 @@
import BasicTable from "@/components/BasicTable.vue"
import { ref} from "vue"
import request from "@/utils/request"
import {useI18n} from "vue-i18n";
const { t } = useI18n()
const childrenData = ref({
  columns:[
    {type:'expand',fixed:"left",width: 80,slots: { content:'content' }},
    {type: 'seq',fixed:"left", title: '自序', width: 80 },
    {field: 'order.orderType',width:120, title: '订单类型',filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true},
    {field: 'order.customerName',width:120, title: '客户名称',filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true},
    {field: 'order.project',width:120, title: '项目名称',filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true},
    {field: 'order.orderId',width:120, title: '销售单号',filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true},
    {field: 'order.batch',width:120, title: '批次',filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true},
    {field: 'productId',width:120, title: '产品编号',filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true},
    {field: 'productName',width:120, title: '产品名称',filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true},
    {type: 'seq',fixed:"left", title: t('basicData.Number'), width: 80 },
    {field: 'order.orderType',width:120, title: t('order.orderType'),filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true},
    {field: 'order.customerName',width:120, title: t('customer.customerName'),filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true},
    {field: 'order.project',width:120, title: t('order.project'),filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true},
    {field: 'order.orderId',width:120, title: t('order.orderId'),filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true},
    {field: 'order.batch',width:120, title: t('order.batch'),filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true},
    {field: 'productId',width:120, title: t('order.productId'),filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true},
    {field: 'productName',width:120, title: t('order.product'),filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true},
    {field: 'orderNumber',width:120, title: '订单序号',filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true},
    // {field: 'buildingNumber',width:120, title: '楼号',filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true},
    {field: 'width',width:120, title: '宽',filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true},
    {field: 'height',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: 'bendRadius',width:120, title: '弯钢弧度',filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true},
    {field: 'grossArea',width:120, title: '实际面积',filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true},
    {field: 'computeGrossArea',width:150, title: '结算总面积',filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true},
    {field: 'shape',width:120, title: '形状',filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true},
    {field: 'edgingType',width:120, title: '磨边类型',filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true},
    {field: 'order.processingNote',width:140, title: '主加工要求',filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true},
    {field: 'processingNote',width:120, title: '加工要求',filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true},
    {field: 'order.remarks',width:120, title: '备注',filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true},
    {field: 'order.icon',width:120, title: '商标选项',filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true},
    {field: 'order.packType',width:120, title: '包装方式',filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true},
    {field: 'width',width:120, title: t('order.width'),filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true},
    {field: 'height',width:120, title: t('order.height'),filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true},
    {field: 'quantity',width:120, title: t('order.quantity'),filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true},
    {field: 'bendRadius',width:120, title: t('order.bendRadius'),filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true},
    {field: 'grossArea',width:120, title: t('order.trueGrossArea'),filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true},
    {field: 'computeGrossArea',width:150, title: t('order.computeGrossArea'),filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true},
    {field: 'shape',width:120, title: t('order.shape'),filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true},
    {field: 'edgingType',width:120, title: t('order.edgingType'),filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true},
    {field: 'order.processingNote',width:140, title: t('order.processingNotes'),filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true},
    {field: 'processingNote',width:120, title: t('order.processingNote'),filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true},
    {field: 'order.remarks',width:120, title: t('basicData.remarks'),filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true},
    {field: 'order.icon',width:120, title: t('order.icon'),filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true},
    {field: 'order.packType',width:120, title: t('order.packType'),filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true},
    // {field: 'prodID',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: 'price',width:120, title: '单价',filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true},
    {field: 'grossAmount',width:120, title: '金额',filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true},
    {field: 'order.alType',width:120, title: '铝条方式',filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true},
    {field: 'perimeter',width:120, title: t('order.perimeter'),filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true},
    {field: 'price',width:120, title: t('order.price'),filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true},
    {field: 'grossAmount',width:120, title: t('order.grossAmount'),filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true},
    {field: 'order.alType',width:120, title: t('order.alType'),filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true},
    // {field: 'prodID',width:120, title: '订单类型',filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true},
    {field: 'order.salesman',width:120, title: '业务员',filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true},
    {field: 'order.deliveryAddress',width:120, title: '送货地址',filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true},
    {field: 'order.creator',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: 'totalThickness',width:120, title: '总厚度',filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true},
    {field: 'levelOne',width:120, title: '产品大类',filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true},
    {field: 'levelTwo',width:120, title: '产品小类',filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true},
    {field: 'order.customerBatch',width:120, title: '客户批次',filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true}
    {field: 'order.salesman',width:120, title: t('order.salesman'),filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true},
    {field: 'order.deliveryAddress',width:120, title: t('order.deliveryAddress'),filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true},
    {field: 'order.creator',width:120, title: t('order.creator'),filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true},
    {field: 'createTime',width:120, title: t('basicData.creationTime'),filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true},
    {field: 'totalThickness',width:120, title:t('order.totalThickness'),filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true},
    {field: 'levelOne',width:120, title: t('order.levelOne'),filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true},
    {field: 'levelTwo',width:120, title: t('order.levelTwo'),filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true},
    {field: 'order.customerBatch',width:120, title: t('order.customerBatch'),filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true}
  ],//表格表头字段
  data:[],//表格数据
  url :'/order/getOrderReport',
  exportUrl :'/order/exportOrderReport',
  exportName:'订单明细报表',
  exportName:t('order.orderDetailsReport'),
  footList:['quantity','grossArea','computeGrossArea','perimeter','price','grossAmount']
})
north-glass-erp/northglass-erp/src/views/sd/order/SelectOrder.vue
@@ -433,19 +433,19 @@
               v-model="tabsValue"
               class="demo-tabs"
               style="width: 100%;height: 100%" >
        <el-tab-pane label="详情" name="1" >
        <el-tab-pane :label="$t('order.details')" name="1" >
          <order-detail
              v-if="tabsValue==='1'"
            :orderId="rowClickIndex===null?null:rowClickIndex.orderId"
          />
        </el-tab-pane>
        <el-tab-pane label="工艺 " name="2">
        <el-tab-pane :label="$t('order.workmanship')" name="2">
          <order-craft-detail
              v-if="tabsValue==='2'"
              :orderId="rowClickIndex===null?null:rowClickIndex.orderId"
          />
        </el-tab-pane>
        <el-tab-pane label="流程卡" name="3">
        <el-tab-pane :label="$t('order.processCard')" name="3">
          <order-process
              v-if="tabsValue==='3'"
              :orderId="rowClickIndex===null?null:rowClickIndex.orderId"
north-glass-erp/northglass-erp/src/views/sd/order/UpdateOrderCraft.vue
@@ -14,7 +14,7 @@
let dialogTableVisible = ref(false)
let craftVisible = ref(false)
const xGrid = ref()
const trademarkLocation=ref(['左上','右上','左下','右下'])
const trademarkLocation=ref([t('craft.upperLeft'),t('craft.upperRight'),t('craft.lowLeft'),t('craft.lowRight')])
const gridOptions = reactive({
  border:  "full",//表格加边框
  keepSource: true,//保持源数据
@@ -255,7 +255,7 @@
      tag3:true,
      xMargin:30,
      yMargin:30,
      location:'左下'
      location:t('craft.lowLeft')
  }
  if(row.icon!=null){
    trademarkAttr.value = JSON.parse(row.icon)
@@ -407,8 +407,8 @@
        <!--左边固定显示的插槽-->
        <template #button_slot="{ row }">
          <el-button @click="updateCraft(row)" link type="primary" size="small">{{t('craft.updateCraft')}}</el-button>
          <el-button @click="updateTrademark(row)" link type="primary" size="small">修改商标</el-button>
          <el-button @click="updateCraft(row)" link type="primary" size="small">{{$t('craft.updateCraft')}}</el-button>
          <el-button @click="updateTrademark(row)" link type="primary" size="small">{{$t('craft.modifyTrademark')}}</el-button>
        </template>
        <template #num1_filter="{ column, $panel }">
@@ -466,14 +466,14 @@
    <el-dialog
        id="trademark"
        v-model="trademarkVisible"
        :title="'商标参数'"
        :title="$t('craft.TrademarkAttribute')"
        :close-on-click-modal="false"
        :close-on-press-escape="false"
        style="width: 922px;height:443px ;
        position: relative;" >
      <div style="width: 50%;height: 100%;float: left">
        <el-row style="">
          <el-col :span="4">商标选项:</el-col>
          <el-col :span="4">{{$t('craft.TrademarkOptions')}}:</el-col>
          <el-col :span="6">
            <el-select v-model="trademarkAttr.trademark"
                        >
@@ -483,7 +483,7 @@
        </el-row>
        <el-row>
          <el-col :span="4">X轴镜像:</el-col>
          <el-col :span="4">{{$t('craft.xImage')}}:</el-col>
          <el-col :span="6">
            <el-select v-model="trademarkAttr.xImage">
              <el-option :value="true" :label="'是'"/>
@@ -493,7 +493,7 @@
        </el-row>
        <el-row>
          <el-col :span="4">Y轴镜像:</el-col>
          <el-col :span="4">{{$t('craft.yImage')}}:</el-col>
          <el-col :span="6">
            <el-select v-model="trademarkAttr.yImage">
              <el-option :value="true" :label="'是'"/>
@@ -503,7 +503,7 @@
        </el-row>
        <el-row>
          <el-col :span="4">打标使能:</el-col>
          <el-col :span="4">{{$t('craft.tag')}}:</el-col>
          <el-col :span="6">
            <el-select v-model="trademarkAttr.tag">
              <el-option :value="true" :label="'是'"/>
@@ -513,7 +513,7 @@
        </el-row>
        <el-row>
          <el-col :span="4">二维码打印1:</el-col>
          <el-col :span="4">{{$t('craft.tag2')}}:</el-col>
          <el-col :span="6">
            <el-select v-model="trademarkAttr.tag2">
              <el-option :value="true" :label="'是'"/>
@@ -523,7 +523,7 @@
        </el-row>
        <el-row>
          <el-col :span="4">二维码打印2:</el-col>
          <el-col :span="4">{{$t('craft.tag3')}}:</el-col>
          <el-col :span="6">
            <el-select v-model="trademarkAttr.tag3">
              <el-option :value="true" :label="'是'"/>
@@ -533,21 +533,21 @@
        </el-row>
        <el-row>
          <el-col :span="4">X轴边距:</el-col>
          <el-col :span="4">{{$t('craft.xMargin')}}:</el-col>
          <el-col :span="6">
            <el-input-number v-model="trademarkAttr.xMargin"/>
          </el-col>
        </el-row>
        <el-row>
          <el-col :span="4">Y轴边距:</el-col>
          <el-col :span="4">{{$t('craft.yMargin')}}:</el-col>
          <el-col :span="6">
            <el-input-number v-model="trademarkAttr.yMargin"/>
          </el-col>
        </el-row>
        <el-row>
          <el-col :span="4">商标位置:</el-col>
          <el-col :span="4">{{$t('craft.location')}}:</el-col>
          <el-col :span="25">
            <el-radio v-model="trademarkAttr.location" v-for="item in trademarkLocation" :label="item"  />
          </el-col>
@@ -562,7 +562,7 @@
      </div>
      <div style="width: 400px;height: 250px;border: 2px solid #000;float: left;position: relative;">
        <div
            v-if="tagCheck('左上')"
            v-if="tagCheck(t('craft.upperLeft'))"
            style="float: left;width: 60px;height: 60px;margin-left: 1rem">
          <el-row>
            <el-col :span="20"><el-image :class="{'xStyle':trademarkAttr.xImage,'yStyle':trademarkAttr.yImage}" src="/trademark.png"/></el-col>
@@ -578,7 +578,7 @@
        </div>
        <div
            v-if="tagCheck('右上')"
            v-if="tagCheck(t('craft.upperRight'))"
            style="float: right;width: 60px;height: 60px;margin-right: 1rem">
          <el-row>
            <el-col :span="20"><el-image  :class="{'xStyle':trademarkAttr.xImage,'yStyle':trademarkAttr.yImage}" src="/trademark.png"/></el-col>
@@ -594,7 +594,7 @@
        </div>
        <div
            v-if="tagCheck('左下')"
            v-if="tagCheck(t('craft.lowLeft'))"
            style="width: 60px;height: 60px;margin-left: 1rem;float: left;position: absolute;bottom: 15px">
          <el-row>
            <el-col :span="20"><el-image :class="{'xStyle':trademarkAttr.xImage,'yStyle':trademarkAttr.yImage}"  src="/trademark.png"/></el-col>
@@ -610,7 +610,7 @@
        </div>
        <div
            v-if="tagCheck('右下')"
            v-if="tagCheck(t('craft.lowRight'))"
            style="width: 60px;height: 60px;position: absolute;bottom: 15px;right: 1rem">
          <el-row>
            <el-col :span="20">
north-glass-erp/northglass-erp/src/views/sd/product/CreateProduct.vue
@@ -7,17 +7,18 @@
import {useRouter,useRoute} from "vue-router"
import GlassType from "@/components/sd/product/GlassType.vue"
import useProductGlassTypeStore from "@/stores/sd/product/productGlassType"
import {useI18n} from "vue-i18n";
const { t } = useI18n()
const router = useRouter()
const route = useRoute()
let  userInfo = useUserInfo()
const disposeList = $ref([
  '彩釉',
  '蒙砂',
  '镀膜',
  '贴膜',
  '喷砂',
  '磨边'
  t('product.coloredGlaze'),
  t('product.frostedSand'),
  t('product.coating'),
  t('product.filmApplication'),
  t('product.sandblasting'),
  t('product.edgeGrinding')
])
let BasicData = ref({
  stuffColor:null,
@@ -106,13 +107,13 @@
const saveProduct = () => {
  if(productDetailList.value.length===0){
    ElMessage.warning("请添加产品详情")
    ElMessage.warning(t('product.msg.productLength'))
    return
  }else if(productDetailList.value[productDetailList.value.length-1].detailType!=='glass'){
    ElMessage.warning("产品详情最后一条不是玻璃,请完善")
    ElMessage.warning(t('product.msg.lastGlass'))
    return
  }else if(productGlassTypeStore.GlassType[1]==='' || productGlassTypeStore.GlassType[1]===null){
    ElMessage.warning("请选择产品类别")
    ElMessage.warning(t('product.msg.glassType'))
    return
  }
  productTotal.value.typeId =  productGlassTypeStore.GlassType[1]
@@ -141,7 +142,7 @@
  }
  request.post(`/product/saveProduct`,product).then((res) =>{
    if(res.code==200){
      ElMessage.success("创建成功")
      ElMessage.success(t('product.msg.saveSuccess'))
      router.push("/main/product/selectProduct")
    }
  })
@@ -151,11 +152,11 @@
const updateProductState =  (state) => {
  request.post(`/product/updateProductStateById/${productTotal.value.id}/${state}`).then((res) =>{
    if(res.code==200){
      ElMessage.success("操作成功")
      ElMessage.success(t('product.msg.operateSuccess'))
      //router.go(0)
      router.push({path:'/main/product/createProduct',query:{id:productTotal.value.id,random:Math.random()}})
    }else{
      ElMessage.error("操作失败")
      ElMessage.error(t('product.msg.operateFail'))
    }
  })
}
@@ -176,7 +177,7 @@
  })
  let rege = /^\s*$/
  if(rege.test(childName) || processChecked.value.length===0){
    ElMessage.warning('请输入产品材料属性与工艺属性')
    ElMessage.warning(t('product.msg.glassReview'))
    return
  }
  let productDetail = {
@@ -190,7 +191,7 @@
      productDetailList.value.push(productDetail)
    }else{
      if (productDetailList.value[productDetailList.value.length-1].detailType === 'glass') {
        ElMessage.warning('请先选择间隔物')
        ElMessage.warning(t('product.msg.glassRepeat'))
        return
      }
      productDetailList.value.push(productDetail)
@@ -209,7 +210,7 @@
  try {
    Object.keys(hollowBasic.value).forEach((item, index) => {
      if (hollowBasic.value[item] === '') {
        throw new Error("请选择全部中空间隔物下拉框")
        throw new Error(t('product.msg.HollowReview'))
      }
      childName += hollowBasic.value[item]
    })
@@ -225,10 +226,10 @@
  }
  if(hollowFlag.value.flag){
    if (productDetailList.value.length ===0) {
      ElMessage.warning('请先选择产品')
      ElMessage.warning(t('product.msg.firstGlass'))
      return
    }else if(productDetailList.value[productDetailList.value.length-1].detailType !== 'glass'){
      ElMessage.warning('请先选择产品')
      ElMessage.warning(t('product.msg.firstGlass'))
      return
    }
    productDetailList.value.push(Object.assign({},hollowDetail))
@@ -246,7 +247,7 @@
  try {
    Object.keys(InterlayerBasic.value).forEach((item, index) => {
      if (InterlayerBasic.value[item] === '') {
        throw new Error("请选择全部中空间隔物下拉框")
        throw new Error(t('product.msg.InterlayerReview'))
      }
      childName += InterlayerBasic.value[item]
    })
@@ -261,10 +262,10 @@
  }
  if(InterlayerFlag.value.flag){
    if (productDetailList.value.length ===0) {
      ElMessage.warning('请先选择产品')
      ElMessage.warning(t('product.msg.firstGlass'))
      return
    }else if(productDetailList.value[productDetailList.value.length-1].detailType !== 'glass'){
      ElMessage.warning('请先选择产品')
      ElMessage.warning(t('product.msg.firstGlass'))
      return
    }
    productDetailList.value.push(Object.assign({},InterlayerDetail))
@@ -420,12 +421,12 @@
      <div class="line"/>
      <div class="glass-type">
        <h5>材料属性</h5>
        <h5>{{ $t('product.msg.glassTypeTitle') }}</h5>
        <el-row :gutter="50">
<!--          <el-col :span="6"></el-col>-->
          <el-col :span="4">
            <div class="grid-content ep-bg-purple" >
              <el-select v-model="stuff.thickness" size="small" clearable placeholder="*厚度:" >
              <el-select v-model="stuff.thickness" size="small" clearable :placeholder="$t('product.msg.thickness')" >
                <el-option v-for="item in BasicData.stuffThickness"
                           :key="item.id"
                           :label="item.basicName"
@@ -436,7 +437,7 @@
          </el-col>
          <el-col :span="5">
            <div class="grid-content ep-bg-purple" >
              <el-select v-model="stuff.color" size="small" clearable placeholder="*颜色:"  filterable>
              <el-select v-model="stuff.color" size="small" clearable :placeholder="$t('product.msg.color')"  filterable>
                <el-option v-for="item in BasicData.stuffColor"
                           :key="item.id"
                           :label="item.basicName"
@@ -447,7 +448,7 @@
          </el-col>
          <el-col :span="4">
            <div class="grid-content ep-bg-purple" >
              <el-select v-model="stuff.craft" size="small" clearable placeholder="*工艺属性:" >
              <el-select v-model="stuff.craft" size="small" clearable :placeholder="$t('product.msg.craft')" >
                <el-option v-for="item in BasicData.stuffCraft"
                           :key="item.id"
                           :label="item.basicName"
@@ -458,7 +459,7 @@
          </el-col>
          <el-col :span="4">
            <div class="grid-content ep-bg-purple" >
              <el-select v-model="stuff.position" size="small"  clearable placeholder="位置:" >
              <el-select v-model="stuff.position" size="small"  clearable :placeholder="$t('product.msg.location')" >
                <el-option v-for="item in BasicData.stuffPosition"
                           :key="item.id"
                           :label="item.basicName"
@@ -469,7 +470,7 @@
          </el-col>
          <el-col :span="6">
            <div class="grid-content ep-bg-purple" >
              <el-select v-model="stuff.lowE" size="small"  clearable placeholder="LOW-E面:" >
              <el-select v-model="stuff.lowE" size="small"  clearable :placeholder="$t('product.msg.lowELocation')" >
                <el-option v-for="item in BasicData.stuffLowE"
                           :key="item.id"
                           :label="item.basicName"
@@ -483,7 +484,7 @@
      <div class="line"/>
      <div class="glass-process">
        <h5>工艺属性</h5>
        <h5>{{ $t('product.msg.processAttribute') }}</h5>
        <el-checkbox
            v-model="processChecked"
            v-for="item in BasicData.process"
@@ -498,7 +499,7 @@
              v-model="hollowBasic.thickness"
              size="small"
              style="width: 100px"
              clearable placeholder="*中空厚度:" >
              clearable :placeholder="$t('product.msg.hollowThickness')" >
            <el-option v-for="item in BasicData.hollowThickness"
                       :key="item.id"
                       :label="item.basicName"
@@ -509,7 +510,7 @@
              v-model="hollowBasic.gasType"
              size="small"
              style="width: 100px"
              clearable placeholder="*充气方式:" >
              clearable :placeholder="$t('product.msg.hollowGasType')" >
            <el-option v-for="item in BasicData.hollowGasType"
                       :key="item.id"
                       :label="item.basicName"
@@ -520,7 +521,7 @@
              v-model="hollowBasic.Type"
              size="small"
              style="width: 100px"
              clearable placeholder="*封胶:" >
              clearable :placeholder="$t('product.msg.hollowType')" >
            <el-option v-for="item in BasicData.hollowType"
                       :key="item.id"
                       :label="item.basicName"
@@ -531,7 +532,7 @@
              v-model="hollowBasic.GlueDepth"
              size="small"
              style="width: 100px"
              clearable placeholder="*默认胶深:" >
              clearable :placeholder="$t('product.msg.hollowGlueDepth')" >
            <el-option v-for="item in BasicData.hollowGlueDepth"
                       :key="item.id"
                       :label="item.basicName"
@@ -543,20 +544,20 @@
              @click="addHollow"
              size="small"
              type="primary"
              round>中空间隔物</el-button>
              round>{{ $t('product.msg.hollow') }}</el-button>
          <el-button
              v-else
              @click="updateHollowSure"
              size="small"
              type="primary"
              round>中空间隔物修改</el-button>
              round>{{ $t('product.msg.hollowUpdate') }}</el-button>
        </div>
        <div class="glass-spacer-zk">
          <el-select
              v-model="InterlayerBasic.thickness"
              size="small"
              style="width: 100px"
              clearable placeholder="*夹层厚度:" >
              clearable :placeholder="$t('product.msg.interlayerThickness')" >
            <el-option v-for="item in BasicData.InterlayerThickness"
                       :key="item.id"
                       :label="item.basicName"
@@ -567,7 +568,7 @@
              v-model="InterlayerBasic.type"
              size="small"
              style="width: 100px"
              clearable placeholder="*类型:" >
              clearable :placeholder="$t('product.msg.interlayerType')" >
            <el-option v-for="item in BasicData.InterlayerType"
                       :key="item.id"
                       :label="item.basicName"
@@ -578,7 +579,7 @@
              v-model="InterlayerBasic.color"
              size="small"
              style="width: 100px"
              clearable placeholder="*颜色:" >
              clearable :placeholder="$t('product.msg.interlayerColor')">
            <el-option v-for="item in BasicData.InterlayerColor"
                       :key="item.id"
                       :label="item.basicName"
@@ -591,14 +592,14 @@
              size="small"
              type="primary"
              style="margin-left: 100px"
              round>夹层间隔物</el-button>
              round>{{ $t('product.msg.interlayer') }}</el-button>
          <el-button
              v-else
              @click="updateInterlayerSure"
              size="small"
              type="primary"
              style="margin-left: 100px"
              round>夹层间隔物修改</el-button>
              round>{{ $t('product.msg.interlayerUpdate') }}</el-button>
        </div>
      </div>
      <div class="line"/>
@@ -607,7 +608,7 @@
          <el-row :gutter="20">
            <el-col :span="5">
              <div class="grid-content ep-bg-purple" >
                <el-text class="mx-1"  style="margin-left: 0.5rem" >单片玻璃属性:</el-text>
                <el-text class="mx-1"  style="margin-left: 0.5rem" >{{ $t('product.msg.glassAttribute') }}:</el-text>
              </div>
            </el-col>
            <el-col :span="13">
@@ -621,7 +622,7 @@
                    @click="reset"
                    size="small"
                    type="primary"
                    round>重置</el-button>
                    round>{{ $t('product.msg.reset') }}</el-button>
              </div>
            </el-col>
          </el-row>
@@ -630,7 +631,7 @@
          <el-row :gutter="20">
            <el-col :span="5">
              <div class="grid-content ep-bg-purple" >
                <el-text class="mx-1"  style="margin-left: 0.5rem"  >工艺流程属性:</el-text>
                <el-text class="mx-1"  style="margin-left: 0.5rem"  >{{ $t('product.msg.processFlowAttribute') }}:</el-text>
              </div>
            </el-col>
            <el-col :span="13">
@@ -644,12 +645,12 @@
                    @click="glassSure"
                    size="small"
                    type="primary"
                    round>确认</el-button>
                    round>{{ $t('product.msg.sure') }}</el-button>
                <el-button v-else
                           @click="updateGlassSure"
                           size="small"
                           type="primary"
                           round>修改</el-button>
                           round>{{ $t('product.msg.update') }}</el-button>
              </div>
            </el-col>
          </el-row>
@@ -661,7 +662,7 @@
            <div class="grid-content ep-bg-purple" >
              <el-text class="mx-1"
                       style="margin-left: 0.5rem;text-align: center">
                快速查询:
                {{ $t('product.msg.quickSearch') }}:
              </el-text>
              <el-input v-model="productTotal.query" size="small" disabled  />
            </div>
@@ -670,7 +671,7 @@
            <div class="grid-content ep-bg-purple" >
              <el-text class="mx-1"
                       style="margin-left: 0.5rem;text-align: center">
                计重厚度:
                {{ $t('product.msg.weightThickness') }}:
              </el-text>
              <el-input v-model="productTotal.thickness" size="small" disabled  />
            </div>
@@ -679,7 +680,7 @@
            <div class="grid-content ep-bg-purple" >
              <el-text class="mx-1"
                       style="margin-left: 0.5rem;text-align: center">
                厚度:
                {{ $t('product.msg.allThickness') }}:
              </el-text>
              <el-input v-model="productTotal.totalThickness"  size="small" disabled  />
            </div>
@@ -688,7 +689,7 @@
            <div class="grid-content ep-bg-purple" >
              <el-text class="mx-1"
                       style="margin-left: 0.5rem;text-align: center">
                备注:
                {{ $t('product.msg.remarks') }}:
              </el-text>
              <el-input v-model="productTotal.remarks"  size="small"   />
            </div>
@@ -707,7 +708,7 @@
        <el-row >
          <el-col :span="4">
            <div class="grid-content ep-bg-purple" >
              <el-text class="mx-1" size="large"  >产品名称:</el-text>
              <el-text class="mx-1" size="large"  >{{ $t('product.msg.product') }}:</el-text>
            </div>
          </el-col>
          <el-col :span="20">
@@ -724,19 +725,19 @@
            <el-button
                @click = "updateGlass(index)"
                size="small"
                type="primary">修改玻璃</el-button>
                type="primary">{{ $t('product.msg.updateGlass') }}</el-button>
          </el-col>
          <el-col :span="4" v-show="item.detailType === 'Interlayer'">
            <el-button
                @click = "updateInterlayer(index)"
                size="small"
                type="primary">修改夹层</el-button>
                type="primary">{{ $t('product.msg.updateHollow') }}</el-button>
          </el-col>
          <el-col :span="4" v-show="item.detailType === 'hollow'">
            <el-button
                @click = "updateHollow(index)"
                size="small"
                type="primary">修改中空</el-button>
                type="primary">{{ $t('product.msg.updateInterlayer') }}</el-button>
          </el-col>
          <el-col :span="16">
            <el-input
@@ -750,7 +751,7 @@
            <el-button
                @click="deleteProductDetail(index)"
                size="small"
                type="primary">删除</el-button>
                type="primary">{{ $t('product.msg.delete') }}</el-button>
          </el-col>
        </el-row>
@@ -762,7 +763,7 @@
          margin-right: 0.5rem;"
          size="large"
          type="primary"
          round>{{productTotal.id?'修改':'创建'}}</el-button>
          round>{{productTotal.id?$t('product.msg.update'):$t('product.msg.create')}}</el-button>
      <el-button
          v-if="productTotal.state===0"
          @click="updateProductState(1)"
@@ -770,7 +771,7 @@
          margin-right: 0.5rem;"
          size="large"
          type="primary"
          round>审核</el-button>
          round>{{ $t('product.msg.review') }}</el-button>
      <el-button
          v-else-if="productTotal.state===1"
          @click="updateProductState(0)"
@@ -778,7 +779,7 @@
          margin-right: 0.5rem;"
          size="large"
          type="primary"
          round>反审</el-button>
          round>{{ $t('product.msg.cancelReview') }}</el-button>
    </div>
north-glass-erp/northglass-erp/src/views/sd/product/SelectProduct.vue
@@ -11,6 +11,8 @@
import Sortable from 'sortablejs'
import BasicTable from '@/components/sd/product/BasicTable.vue'
import {VXETable} from "vxe-table";
import {useI18n} from "vue-i18n";
const { t } = useI18n()
let productGlassTypeStore = useProductGlassTypeStore()
let router=useRouter()
//监听玻璃类型改变
@@ -156,10 +158,10 @@
      request.post(`/product/deleteProductById/${row.id}`).then((res) => {
        if(res.code==200){
          router.push({path:"/main/product/selectProduct",query:{random:Math.random()}})
          ElMessage.success('删除成功')
          ElMessage.success(t('basicData.deleteSuccess'))
        }
      }).catch((err) => {
        if(err==="600")ElMessage.warning("产品已审核,无法删除")
        if(err==="600")ElMessage.warning(t('product.msg.theProductHasBeenReviewedAndCannotBeDeleted'))
      })
      break
    }
@@ -206,16 +208,16 @@
  },
  columns:[
    {type:'expand',fixed:"left",slots: { content:'content' },width: 60},
    {title: '操作', width: 110, slots: { default: 'button_slot' },fixed:"left"},
    {field:'state',title: '审核', width: 40, slots: { default: 'state' }},
    {type: 'seq',fixed:"left", title: '自序', width: 80 },
    {field: 'id', title: '编号',filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: false},
    {field: 'productName', title: '名称',filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: false},
    {field: 'basicGlassType.typeName', title: '所属类别',filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: false},
    {field: 'query', title: '快速查询',filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: false},
    {field: 'remarks', title: '备注',filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: false},
    {field: 'creator', title: '创建人',filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: false},
    {field: 'createTime', title: '创建时间',filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: false}
    {title: t('basicData.operate'), width: 110, slots: { default: 'button_slot' },fixed:"left"},
    {field:'state',title: t('basicData.review'), width: 40, slots: { default: 'state' }},
    {type: 'seq',fixed:"left", title: t('basicData.Number'), width: 80 },
    {field: 'id', title: t('basicData.number'),filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: false},
    {field: 'productName', title: t('product.productName'),filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: false},
    {field: 'basicGlassType.typeName', title: t('product.typeName'),filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: false},
    {field: 'query', title: t('product.query'),filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: false},
    {field: 'remarks', title: t('basicData.remarks'),filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: false},
    {field: 'creator', title: t('product.creator'),filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: false},
    {field: 'createTime', title: t('basicData.creationTime'),filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: false}
  ],//表头参数
  data:null,//表格数据
  toolbarConfig: {
@@ -230,7 +232,7 @@
    return[
      columns.map((column, columnIndex) => {
        if (columnIndex === 0) {
          return `${pageNum}/${pageTotal.value}`
          return t('basicData.total')
        }
        return ''
@@ -317,7 +319,7 @@
      <el-button
          @click="getProduct"
          id="select"
          type="primary" :icon="Search">查询</el-button>
          type="primary" :icon="Search">{{ $t('basicData.search') }}</el-button>
@@ -345,15 +347,15 @@
      <!--左边固定显示的插槽-->
      <template #button_slot="{ row }" v-if="!props.rowIndex">
        <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('searchOrder.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>
      <template #button_slot="{ row }" v-else>
        <el-button @click="emitParent(row)" link type="primary" size="small">添加</el-button>
        <el-button @click="emitParent(row)" link type="primary" size="small">{{ $t('basicData.add') }}</el-button>
      </template>
      <template #num1_filter="{ column, $panel }">
north-glass-erp/northglass-erp/src/views/system/role/Role.vue
@@ -19,7 +19,7 @@
  <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/role/roleList' }">角色首页</el-breadcrumb-item>
        <el-breadcrumb-item @click="changeRouter(1)" :class="indexFlag===1?'indexTag':''" :to="{ path: '/main/role/roleList' }">{{$t('role.characterHomepage')}}</el-breadcrumb-item>
        <el-breadcrumb-item v-show="false" @click="changeRouter(2)" :class="indexFlag===2?'indexTag':''" :to="{ path: '/main/order/createOrder' }">{{$t('basicData.create')}}</el-breadcrumb-item>
      </el-breadcrumb>
    </div>
north-glass-erp/northglass-erp/src/views/system/role/RoleList.vue
@@ -122,8 +122,8 @@
onBeforeMount(()=>{
  let columns = [{title: t('basicData.operate'), width: 133, slots: { default: 'button_slot' }}]
  const columnName = {
    id: 'ID',
    role:'角色'
    id: t('role.id'),
    role:t('role.role')
  }
  for (let columnNameKey in columnName) {
    let column = {field: columnNameKey,
@@ -143,10 +143,10 @@
      }
  ]
  const columnNameP = {
    id: 'ID',
    menu: '菜单',
    page:'页面',
    permission:'权限'
    id: t('role.id'),
    menu: t('role.menu'),
    page:t('role.page'),
    permission:t('role.permission')
  }
  for (let columnNameKey in columnNameP) {
    let column = {field: columnNameKey,
@@ -213,11 +213,11 @@
  //   return
  // }
  ElMessageBox.confirm(
      '确认修改角色权限?',
      t('role.ConfirmModifyingRolePermissions'),
      'Warning',
      {
        confirmButtonText: '确认',
        cancelButtonText: '取消',
        confirmButtonText: t('basicData.confirmButtonText'),
        cancelButtonText: t('basicData.cancelButtonText'),
        type: 'warning',
      }
  ).then(() => {
@@ -229,22 +229,22 @@
    }
    request.post(`/permissionRole/savePermissionRole`,permission).then(res=>{
      if(res.data=== true && res.code==='200'){
        ElMessage.success('保存成功')
        ElMessage.success(t('basicData.msg.saveSuccess'))
        dialogVisible.value = false
        getPermissionList()
      }else{
        ElMessage.error('保存失败')
        ElMessage.error(t('basicData.msg.saveFail'))
      }
    })
  })
}
const addRole = () =>{
  ElMessageBox.prompt('请输入新角色', '新增角色', {
    confirmButtonText: '确定',
    cancelButtonText: '取消',
  ElMessageBox.prompt(t('role.PleaseEnterANewRole'), t('role.AddANewRole'), {
    confirmButtonText: t('basicData.confirmButtonText'),
    cancelButtonText: t('basicData.cancelButtonText'),
    inputPattern:/^.{1,255}$/,
    inputErrorMessage: '不能为空且长度不能超过255',
    inputErrorMessage: t('role.CannotBeEmptyAndTheLengthCannotExceed255'),
  })
    .then(({ value }) => {
      const role= {
@@ -252,10 +252,10 @@
      }
      request.post("/role/add",role).then(res=>{
        if(res.code==='200' && res.data===true){
          ElMessage.success('新增成功')
          ElMessage.success(t('basicData.msg.saveSuccess'))
          router.push({path:'/main/role/roleList',query:{random:Math.random()}})
        }else{
          ElMessage.error('新增失败')
          ElMessage.error(t('basicData.msg.saveFail'))
        }
      })
    })
@@ -276,7 +276,7 @@
          @click="addRole"
          status='primary'
          style="margin-right: 1rem"
      >角色新增</vxe-button>
      >{{$t('role.roleAdd')}}</vxe-button>
      </template>
@@ -289,7 +289,7 @@
      </template>
      <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('role.rolePermissions')}}</el-button>
      </template>
    </vxe-grid>
@@ -297,7 +297,7 @@
        v-model="dialogVisible"
        @open="getPermissionList"
        style="height: 70%;width: 70%"
        title="权限选择">
        :title="$t('role.permissionSelection')">
      <vxe-grid
          height="100%"
          class="mytable-scrollbar"
@@ -317,7 +317,7 @@
              @click="saveBatch"
              status='primary'
              style="margin-right: 1rem"
          >保存</vxe-button>
          >{{$t('basicData.save')}}</vxe-button>
        </template>
      </vxe-grid>
north-glass-erp/northglass-erp/src/views/system/user/User.vue
@@ -19,7 +19,7 @@
  <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/user/userList' }">用户首页</el-breadcrumb-item>
        <el-breadcrumb-item @click="changeRouter(1)" :class="indexFlag===1?'indexTag':''" :to="{ path: '/main/user/userList' }">{{$t('user.userHomepage')}}</el-breadcrumb-item>
        <el-breadcrumb-item v-show="false" @click="changeRouter(2)" :class="indexFlag===2?'indexTag':''" :to="{ path: '/main/order/createOrder' }">{{$t('basicData.create')}}</el-breadcrumb-item>
      </el-breadcrumb>
    </div>
north-glass-erp/northglass-erp/src/views/system/user/UserList.vue
@@ -60,12 +60,12 @@
onBeforeMount(()=>{
  let columns = [{title: t('basicData.operate'), width: 133, slots: { default: 'button_slot' }}]
  const columnName = {
    loginName: '用户ID',
    userName:'用户',
    loginName: t('user.userId'),
    userName:t('user.user'),
    // address:'地址',
    // phone:'电话',
    role:'角色',
    createTime:'创建时间'
    role:t('role.role'),
    createTime:t('basicData.creationTime')
  }
  for (let columnNameKey in columnName) {
    let column = {field: columnNameKey,
@@ -156,7 +156,7 @@
      </template>
      <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('user.setUpRoles') }}</el-button>
        <el-popconfirm @confirm="getTableRow(row,'delete')" :title="$t('searchOrder.deleteConfirm')">
          <template #reference>
            <el-button  link type="primary" size="small">{{ $t('basicData.delete') }}</el-button>
@@ -180,9 +180,9 @@
      </span>
      <template #footer>
      <span class="dialog-footer">
        <el-button @click="dialogVisible = false">取消</el-button>
        <el-button @click="dialogVisible = false">{{ $t('basicData.cancelButtonText') }}</el-button>
        <el-button type="primary" @click="roleUpdate">
          确认
          {{ $t('basicData.confirmButtonText') }}
        </el-button>
      </span>
      </template>
north-glass-erp/northglass-erp/src/views/system/userPassWord/UpdateUserPassWord.vue
@@ -21,7 +21,7 @@
const oldPassword = (rule: any, value: any, callback: any) => {
  if (value.trim() === '') {
    callback(new Error('旧密码不能为空'))
    callback(new Error(t('user.OldPasswordCannotBeEmpty')))
  }else{
    callback()
  }
@@ -29,9 +29,9 @@
const checkPassword = (rule: any, value: any, callback: any) => {
  if (value.trim() === '') {
    callback(new Error('新密码不能为空'))
    callback(new Error(t('user.TheNewPasswordCannotBeEmpty')))
  }else if(value.length>16 || value.length<6){
    callback(new Error('密码长度不能低于6或超过16'))
    callback(new Error(t('user.ThePasswordLengthCannotBeLessThan6OrMoreThan16')))
  }else{
    callback()
  }
@@ -39,11 +39,11 @@
const checkConfirmPassword = (rule: any, value: any, callback: any) => {
  if (value.trim() === '') {
    callback(new Error('确认密码不能为空'))
    callback(new Error(t('user.ConfirmPasswordCannotBeEmpty')))
  }else if(value !== register.password){
    callback(new Error('两次密码不相同'))
    callback(new Error(t('user.ConfirmPasswordCannotBeEmpty')))
  }else if(value.length>16 || value.length<6){
    callback(new Error('密码长度不能低于6或超过16'))
    callback(new Error(t('user.TheTwoPasswordsAreNotTheSame')))
  }else{
    callback()
  }
@@ -64,14 +64,14 @@
      register.oldPassword = btoa(register.oldPassword)
      request.post('/user/updatePassWord', register).then((res) => {
        if (res.data === true) {
          ElMessage.success(`修改成功`)
          ElMessage.success(t('basicData.msg.saveSuccess'))
          router.push("/login")
        } else {
          ElMessage.error('旧密码错误')
          ElMessage.error(t('user.OldPasswordError'))
          return false
        }
      }).catch(error => {
        ElMessage.error("服务器连接失败")
        ElMessage.error(t('basicData.msg.ServerConnectionError'))
        return false
      })
    }
@@ -91,20 +91,20 @@
          status-icon
          :rules="rules"
      >
        <el-form-item label="旧密码:" prop="oldPassword">
        <el-form-item :label="$t('user.OldPassword')" prop="oldPassword">
          <el-input autocomplete="off" type="text" style="-webkit-text-security: disc"  v-model="register.oldPassword" />
        </el-form-item>
        <el-form-item label="新密码:" prop="password">
        <el-form-item :label="$t('user.TheNewPassword')" prop="password">
          <el-input autocomplete="off" type="text" style="-webkit-text-security: disc" v-model="register.password" />
        </el-form-item>
        <el-form-item label="确认密码:" prop="confirmPassword">
        <el-form-item :label="$t('user.ConfirmPassword')" prop="confirmPassword">
          <el-input autocomplete="off" type="text" style="-webkit-text-security: disc" v-model="register.confirmPassword" />
        </el-form-item>
        <el-form-item >
          <el-button
              type="primary"
              @click="submitForm(ruleFormRef)"
          >修改
          >{{ $t('basicData.save') }}
          </el-button>
        </el-form-item>
      </el-form>
north-glass-erp/northglass-erp/src/views/system/userPassWord/UserPassWord.vue
@@ -19,7 +19,7 @@
  <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/userPassWord/updateUserPassWord' }">修改密码</el-breadcrumb-item>
        <el-breadcrumb-item @click="changeRouter(1)" :class="indexFlag===1?'indexTag':''" :to="{ path: '/main/userPassWord/updateUserPassWord' }">{{$t('user.changePassword')}}</el-breadcrumb-item>
        <el-breadcrumb-item v-show="false" @click="changeRouter(2)" :class="indexFlag===2?'indexTag':''" :to="{ path: '/main/order/createOrder' }">{{$t('basicData.create')}}</el-breadcrumb-item>
      </el-breadcrumb>
    </div>
north-glass-erp/src/main/java/com/example/erp/controller/pp/ProcessCardController.java
@@ -3,7 +3,6 @@
import cn.dev33.satoken.annotation.SaCheckPermission;
import com.example.erp.common.Constants;
import com.example.erp.entity.pp.FlowCard;
import com.example.erp.entity.pp.PrintSetup;
import com.example.erp.entity.sd.DeliveryDetail;
import com.example.erp.entity.sd.Order;
import com.example.erp.common.Result;
@@ -219,11 +218,4 @@
        }
    }
    @ApiOperation("打印标签设置查询")
    @SaCheckPermission("PrintFlowCard.search")
    @PostMapping  ("/printSetup")
    public Result printSetup(@RequestBody PrintSetup printSetup){
        return Result.seccess(flowCardService.printSetup(printSetup));
    }
}
north-glass-erp/src/main/java/com/example/erp/controller/pp/ProductionSchedulingController.java
@@ -37,35 +37,22 @@
    //点击查询排版数据
    @ApiOperation("点击查询排版数据接口")
    @SaCheckPermission("ProductionScheduling.search")
    @PostMapping  ("/selectScheduling/{pageNum}/{pageSize}/{selectTime1}/{selectTime2}/{orderId}/{processes}/{state}")
    @PostMapping  ("/selectScheduling/{pageNum}/{pageSize}/{selectTime1}/{selectTime2}/{orderIds}/{processes}/{state}")
    public Result selectScheduling(
            @PathVariable Integer pageNum,
            @PathVariable Integer pageSize,
            @PathVariable String selectTime1,
            @PathVariable String selectTime2,
            @PathVariable String orderId,
            @PathVariable String orderIds,
            @PathVariable String processes,
            @PathVariable Integer state,
            @RequestBody ProductionScheduling productionScheduling){
        return Result.seccess(productionSchedulingService.selectSchedulingSv(pageNum, pageSize,selectTime1,selectTime2,orderId,processes,state,productionScheduling));
        return Result.seccess(productionSchedulingService.selectSchedulingSv(pageNum, pageSize,selectTime1,selectTime2,orderIds,processes,state,productionScheduling));
    }
    //点击查询排版数据(带订单号查询)
    @ApiOperation("根据条件查询排版数据接口")
    @SaCheckPermission("ProductionScheduling.search")
    @PostMapping  ("/selectSchedulingNot/{selectTime1}/{selectTime2}/{orderId}/{processes}/{state}")
    public Result selectSchedulingNot(
            @PathVariable String selectTime1,
            @PathVariable String selectTime2,
            @PathVariable String orderId,
            @PathVariable String processes,
            @PathVariable Integer state,
            @RequestBody ProductionScheduling productionScheduling){
        return Result.seccess(productionSchedulingService.selectSchedulingNotSv(selectTime1,selectTime2,orderId,processes,state,productionScheduling));
    }
    //添加排产数据
    @ApiOperation("添加排产数据接口")
north-glass-erp/src/main/java/com/example/erp/entity/pp/PrintSetup.java
File was deleted
north-glass-erp/src/main/java/com/example/erp/entity/pp/ProductionScheduling.java
@@ -42,6 +42,7 @@
    private Double productionScheduledArea;
    private  String reviewer;
    //外键订单表
    private Order order;
north-glass-erp/src/main/java/com/example/erp/mapper/pp/FlowCardMapper.java
@@ -87,5 +87,4 @@
    Boolean printSortMp(String processId, Integer orderNumber, Integer technologyNumber, Integer sort);
    List<Map<String, String>> selectPrintSetup(PrintSetup printSetup);
}
north-glass-erp/src/main/java/com/example/erp/mapper/pp/ProductionSchedulingMapper.java
@@ -12,13 +12,9 @@
public interface ProductionSchedulingMapper extends BaseMapper<ProductionScheduling> {
    List<Map<String,String>> selectOkSchedulingMp(Integer offset, Integer pageSize, String selectTime1, String selectTime2, String orderId, String processes, ProductionScheduling productionScheduling);
    List<ProductionScheduling> selectOkSchedulingMp(Integer offset, Integer pageSize, String selectTime1, String selectTime2, String orderIds, String processes, ProductionScheduling productionScheduling);
    List<ProductionScheduling> selectNoSchedulingMp(Integer offset, Integer pageSize, String selectTime1, String selectTime2, String orderId, String processes, ProductionScheduling  productionScheduling);
    List<Map<String,String>> selectLastSchedulingMp(String selectTime1, String selectTime2,String processes,String orderId, ProductionScheduling productionScheduling);
    List<Map<String,String>> selectSchedulingNotMp(String selectTime1, String selectTime2, String orderId, String processes, ProductionScheduling productionScheduling);
    List<ProductionScheduling> selectNoSchedulingMp(Integer offset, Integer pageSize, String selectTime1, String selectTime2, String orderIds, String processes, ProductionScheduling  productionScheduling);
    Integer selectMaxId();
@@ -32,5 +28,7 @@
    Map<String, Integer> getPageTotal(Integer offset, Integer pageSize, String selectTime1, String selectTime2, String orderId, String processes, ProductionScheduling productionScheduling);
    Map<String, Integer> getOkPageTotal(Integer offset, Integer pageSize, String selectTime1, String selectTime2, String orderId, String processes, ProductionScheduling productionScheduling);
//    Integer selectNumberMp(String orderId, String orderNumber, String processes);
}
north-glass-erp/src/main/java/com/example/erp/service/pp/FlowCardService.java
@@ -16,10 +16,7 @@
import org.springframework.stereotype.Service;
import java.sql.Date;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.*;
import static com.example.erp.service.sd.OrderService.getOrderProcessDetails;
@@ -284,9 +281,7 @@
        return true;
    }
    public Map<String, Object> printSetup(PrintSetup printSetup) {
        Map<String, Object> map = new HashMap<>();
        map.put("data", flowCardMapper.selectPrintSetup(printSetup));
        return map;
    }
}
north-glass-erp/src/main/java/com/example/erp/service/pp/ProductionSchedulingService.java
@@ -22,12 +22,12 @@
    ProductionSchedulingMapper productionSchedulingMapper;
    //未排产查询
    public Map<String, Object> selectSchedulingSv(Integer pageNum, Integer pageSize, String selectTime1, String selectTime2, String orderId, String processes, Integer state, ProductionScheduling productionScheduling ) {
    public Map<String, Object> selectSchedulingSv(Integer pageNum, Integer pageSize, String selectTime1, String selectTime2, String orderIds, String processes, Integer state, ProductionScheduling productionScheduling ) {
        Integer offset = (pageNum - 1) * pageSize;
        Map<String, Object> map = new HashMap<>();
        if("null".equals(orderId)){
            orderId="";
        if("null".equals(orderIds)){
            orderIds="";
        }
        if ("null".equals(processes)){
@@ -35,12 +35,14 @@
        }
        if (state==2){//已排产
            map.put("data", productionSchedulingMapper.selectOkSchedulingMp(offset, pageSize,selectTime1, selectTime2,orderId,processes, productionScheduling));
            map.put("data", productionSchedulingMapper.selectOkSchedulingMp(offset, pageSize,selectTime1, selectTime2,orderIds,processes, productionScheduling));
            map.put("total", productionSchedulingMapper.getOkPageTotal(offset, pageSize,selectTime1, selectTime2,orderIds,processes, productionScheduling));
        }else if (state==1){//未排产
            map.put("data", productionSchedulingMapper.selectNoSchedulingMp(offset, pageSize,selectTime1, selectTime2,orderId,processes, productionScheduling));
            map.put("data", productionSchedulingMapper.selectNoSchedulingMp(offset, pageSize,selectTime1, selectTime2,orderIds,processes, productionScheduling));
            map.put("total", productionSchedulingMapper.getPageTotal(offset, pageSize,selectTime1, selectTime2,orderIds,processes, productionScheduling));
        }
        map.put("total", productionSchedulingMapper.getPageTotal(offset, pageSize,selectTime1, selectTime2,orderId,processes, productionScheduling));
        return map;
    }
@@ -48,24 +50,11 @@
    //首次查询排产数据
    public Map<String, Object> selectLastScheduling(String selectTime1, String selectTime2,String processes,String orderId,ProductionScheduling productionScheduling ) {
        Map<String, Object> map = new HashMap<>();
        if("null".equals(orderId)){
            orderId="";
        }
        if ("null".equals(processes)){
            processes="";
        }
        map.put("data", productionSchedulingMapper.selectLastSchedulingMp(selectTime1, selectTime2,processes,orderId, productionScheduling));
        map.put("process", productionSchedulingMapper.selectProcess());
        return map;
    }
    //带订单号查询
    public Map<String, Object> selectSchedulingNotSv(String selectTime1, String selectTime2, String orderId, String processes, Integer state, ProductionScheduling productionScheduling) {
        Map<String, Object> map = new HashMap<>();
        map.put("data", productionSchedulingMapper.selectSchedulingNotMp(selectTime1, selectTime2,orderId,processes, productionScheduling));
        return map;
    }
    public Boolean addSchedulingSv(Map<String, Object> object) {
        String userName = "";
@@ -92,8 +81,8 @@
                //查询已排产工序数量
             // Integer num =  productionSchedulingMapper.selectNumberMp(productionScheduling.getOrderId(),productionScheduling.getOrderNumber(),processes);
             productionSchedulingMapper.insertSelective(schedulingId,productionScheduling.getOrderId(),productionScheduling.getOrderNumber(),productionScheduling.getTechnologyNumber(),processes,productionScheduling.getSchedulingQuantity(),productionScheduling.getScheduledStartTime(),productionScheduling.getPlanEndTime(),productionScheduling.getNotes());
                //System.out.println(productionScheduling.getOrderNumber()+"***"+productionScheduling.getTechnologyNumber());
             productionSchedulingMapper.insertSelective(schedulingId,productionScheduling.getOrderGlassDetail().getOrderId(),productionScheduling.getOrderNumber(),productionScheduling.getTechnologyNumber(),processes,productionScheduling.getSchedulingQuantity(),productionScheduling.getScheduledStartTime(),productionScheduling.getPlanEndTime(),productionScheduling.getNotes());
               // System.out.println(productionScheduling.getOrderId()+"***"+productionScheduling.getOrderGlassDetail().getOrderId()+"--"+productionScheduling.getOrderDetail().getOrderId());
            }
            return true;
        }
north-glass-erp/src/main/resources/application.yml
@@ -11,22 +11,22 @@
      strict: false #设置严格模式,默认false不启动. 启动后在未匹配到指定数据源时候回抛出异常,不启动会使用默认数据源.
      datasource:
        user_info:
          url: jdbc:mysql://192.168.1.108:3306/erp_user_info?serverTimezone=GMT%2b8
          url: jdbc:mysql://localhost:3306/erp_user_info?serverTimezone=GMT%2b8
          username: root
          password: beibo.123/
          driver-class-name: com.mysql.cj.jdbc.Driver
        sd:
          url: jdbc:mysql://192.168.1.108:3306/sd?serverTimezone=GMT%2b8&allowMultiQueries=true
          url: jdbc:mysql://localhost:3306/sd?serverTimezone=GMT%2b8&allowMultiQueries=true
          username: root
          password: beibo.123/
          driver-class-name: com.mysql.cj.jdbc.Driver
        mm:
          url: jdbc:mysql://192.168.1.108:3306/mm?serverTimezone=GMT%2b8
          url: jdbc:mysql://localhost:3306/mm?serverTimezone=GMT%2b8
          username: root
          password: beibo.123/
          driver-class-name: com.mysql.cj.jdbc.Driver
        pp:
          url: jdbc:mysql://192.168.1.108:3306/pp?serverTimezone=GMT%2b8
          url: jdbc:mysql://localhost:3306/pp?serverTimezone=GMT%2b8
          username: root
          password: beibo.123/
          driver-class-name: com.mysql.cj.jdbc.Driver
north-glass-erp/src/main/resources/mapper/pp/FolwCard.xml
@@ -570,11 +570,5 @@
          and technology_number = #{technologyNumber}
    </update>
<select id="selectPrintSetup">
        select id,
               print_type as printType,
               print_type_name as printTypeName,
               print_state as printState
        from pp.print_setup
    </select>
</mapper>
north-glass-erp/src/main/resources/mapper/pp/ProductionScheduling.xml
@@ -15,6 +15,9 @@
        <result column="productionScheduledQuantity" property="productionScheduledQuantity"/>
        <result column="productionScheduledArea" property="productionScheduledArea"/>
        <result column="review_status" property="reviewStatus"/>
        <result column="scheduled_start_time" property="scheduledStartTime"/>
        <result column="plan_end_time" property="planEndTime"/>
        <result column="reviewer" property="reviewer"/>
        <!--接收其他外键实体类数据-->
        <result column="project" property="order.project"/>
        <result column="customer_name" property="order.customerName"/>
@@ -42,76 +45,61 @@
    <!--    查询已排版数据-->
    <select id="selectOkSchedulingMp">
        select date(ps.scheduled_start_time)                          as scheduled_start_time,
               date(ps.plan_end_time)                                 as plan_end_time,
               od.order_id,
               o.customer_name,
               o.project,
               od.order_number,
               od.width,
               od.height,
               od.quantity,
               round(od.width * od.height * od.quantity / 1000000, 2) as area,
               ps.scheduling_quantity,
               (od.quantity - IFNULL(sum(ps.scheduling_quantity), 0)) as pendingProductionQuantity,
               round(od.width * od.height * (od.quantity - IFNULL(sum(ps.scheduling_quantity), 0)) / 1000000,
                     2)                                               as pendingProductionArea,
               IFNULL(ps.scheduling_quantity, 0)                      as productionScheduledQuantity,
               round(od.width * od.height * (IFNULL(ps.scheduling_quantity, 0)) / 1000000,
                     2)                                               as productionScheduledArea,
               IF(ps.review_status = 0, "未审核", "已审核")           as review_status,
               ps.reviewer,
               od.product_name,
               od.shape,
               ps.scheduling_id
    <select id="selectOkSchedulingMp" resultMap="productionSchedulingMap">
        select date(ps.scheduled_start_time) as scheduled_start_time,
        date(ps.plan_end_time) as plan_end_time,
        od.order_id,
        o.customer_name,
        o.project,
        ps.order_number,
        ps.technology_number,
        ogd.child_width,
        ogd.child_height,
        od.quantity,
        round(od.width * od.height * od.quantity / 1000000, 2) as area,
        ps.scheduling_quantity,
        (od.quantity - IFNULL(sum(ps.scheduling_quantity), 0)) as pendingProductionQuantity,
        round(od.width * od.height * (od.quantity - IFNULL(sum(ps.scheduling_quantity), 0)) / 1000000,
        2) as pendingProductionArea,
        IFNULL(ps.scheduling_quantity, 0) as productionScheduledQuantity,
        round(od.width * od.height * (IFNULL(ps.scheduling_quantity, 0)) / 1000000,
        2) as productionScheduledArea,
        IF(ps.review_status = 0, "未审核", "已审核") as review_status,
        ps.reviewer,
        od.product_name,
        if(od.shape=1,'普形',if(od.shape=2,'异形','')) as shape,
        ps.scheduling_id
        from sd.order_detail as od
                 left join sd.order as o on od.order_id = o.order_id
                 left join production_scheduling as ps
                           on ps.order_id = od.order_id and ps.order_number = od.order_number
        left join sd.order as o on od.order_id = o.order_id
        left join production_scheduling as ps
        on ps.order_id = od.order_id and ps.order_number = od.order_number
        left join sd.order_glass_detail as ogd on ogd.order_id=od.order_id and ogd.order_number=od.order_number and
        ogd.technology_number=ps.technology_number
        where ps.scheduling_id IS NOT NULL
          and od.create_time between #{selectTime1} and #{selectTime2}
          and position(#{processes} in ps.processes)
          and position(#{orderId} in ps.order_id)
        group by od.order_id, od.order_number
        and od.create_time between #{selectTime1} and #{selectTime2}
        and position(#{processes} in ps.processes)
        and position(#{orderIds} in ps.order_id)
        <if test="productionScheduling.orderId != null and productionScheduling.orderId != ''">
            and ogd.order_id regexp #{productionScheduling.orderId}
        </if>
        <if test="productionScheduling.order.customerName != null and productionScheduling.order.customerName != ''">
            and o.customer_name regexp #{productionScheduling.order.customerName}
        </if>
        <if test="productionScheduling.order.project != null and productionScheduling.order.project != ''">
            and o.project regexp #{productionScheduling.order.project}
        </if>
        <if test="productionScheduling.orderNumber != null and productionScheduling.orderNumber != ''">
            and ogd.order_number regexp #{productionScheduling.orderNumber}
        </if>
        <if test="productionScheduling.technologyNumber != null and productionScheduling.technologyNumber != ''">
            and ogd.technology_number regexp #{productionScheduling.technologyNumber}
        </if>
        group by ps.id
        order by ps.id desc
        limit #{offset},#{pageSize};
    </select>
    <!--    查询已排产的数据-->
    <select id="selectSchedulingNotMp">
        select date(ps.scheduled_start_time)                          as scheduled_start_time,
               date(ps.plan_end_time)                                 as plan_end_time,
               od.order_id,
               o.customer_name,
               o.project,
               od.order_number,
               od.width,
               od.height,
               od.quantity,
               round(od.width * od.height * od.quantity / 1000000, 2) as area,
               ps.scheduling_quantity,
               (od.quantity - IFNULL(sum(ps.scheduling_quantity), 0)) as scheduling_quantity,
               round(od.width * od.height * (od.quantity - IFNULL(sum(ps.scheduling_quantity), 0)) / 1000000, 2)
                                                                      as pendingProductionArea,
               IFNULL(ps.scheduling_quantity, 0)                      as productionScheduledQuantity,
               round(od.width * od.height * (IFNULL(ps.scheduling_quantity, 0)) / 1000000, 2)
                                                                      as productionScheduledArea,
               IF(ps.review_status = 0, "未审核", "已审核")
                                                                      as review_status,
               ps.reviewer,
               od.product_name,
               od.shape,
               ps.scheduling_id
        from sd.order_detail as od
                 left join sd.order as o on od.order_id = o.order_id
                 left join production_scheduling as ps
                           on ps.order_id = od.order_id and ps.order_number = od.order_number
        where (ps.scheduling_id IS NOT NULL)
          and position(#{processes} in ps.processes)
          and position(#{orderId} in ps.order_id)
        group by od.order_id, od.order_number
        order by ps.id desc
    </select>
    <!--    查询未排产数据-->
    <select id="selectNoSchedulingMp" resultMap="productionSchedulingMap">
        select ogd.order_id,
@@ -131,8 +119,8 @@
        IFNULL(ps.schedulingQuantity, 0) as productionScheduledQuantity,
        round(ogd.child_width * ogd.child_height * (IFNULL(ps.schedulingQuantity, 0)) / 1000000,
        2) as productionScheduledArea,
        ogd.glass_child,
        od.shape
        od.product_name,
        if(od.shape=1,'普形',if(od.shape=2,'异形','')) as shape
        from sd.order_glass_detail as ogd
        left join sd.order as o on ogd.order_id = o.order_id
@@ -152,7 +140,7 @@
        and od.create_time between #{selectTime1} and #{selectTime2}
        and opd.reporting_work_num_count = 0
        and position(#{orderId} in ogd.order_id)
        and position(#{orderIds} in ogd.order_id)
        -- and position("切割" in ps.processes)
        <if test="productionScheduling.orderId != null and productionScheduling.orderId != ''">
            and ogd.order_id regexp #{productionScheduling.orderId}
@@ -173,52 +161,7 @@
        order by ogd.order_id desc
        limit #{offset},#{pageSize};
    </select>
    <!--    首次查询排产数据-->
    <select id="selectLastSchedulingMp">
        select ogd.order_id,
               o.customer_name,
               o.project,
               ogd.order_number,
               ogd.technology_number,
               ogd.child_width,
               ogd.child_height,
               od.quantity,
               round(ogd.child_width * ogd.child_height * od.quantity / 1000000, 2) as area,
               (od.quantity - IFNULL((ps.schedulingQuantity), 0))                   as scheduling_quantity,
               (od.quantity - IFNULL((ps.schedulingQuantity), 0))                   as pendingProductionQuantity,
               round(ogd.child_width * ogd.child_height * (od.quantity - IFNULL((ps.schedulingQuantity), 0)) / 1000000,
                     2)
                                                                                    as pendingProductionArea,
               IFNULL(ps.schedulingQuantity, 0)                                     as productionScheduledQuantity,
               round(ogd.child_width * ogd.child_height * (IFNULL(ps.schedulingQuantity, 0)) / 1000000,
                     2)                                                             as productionScheduledArea,
               ogd.glass_child,
               od.shape
        from sd.order_glass_detail as ogd
                 left join sd.order as o on ogd.order_id = o.order_id
                 left join sd.order_detail as od on od.order_id = ogd.order_id and od.order_number = ogd.order_number
                 left join sd.order_process_detail as opd
                           on opd.order_id = ogd.order_id and opd.order_number = ogd.order_number and
                              opd.technology_number = ogd.technology_number
                 left join
             (select order_id, order_number, technology_number, SUM(scheduling_quantity) as schedulingQuantity
              from production_scheduling
              where processes = #{processes}
              group by order_id, order_number, technology_number) as ps
             on ps.order_id = ogd.order_id and ps.order_number = ogd.order_number and
                ps.technology_number = ogd.technology_number
        where (od.quantity - IFNULL((ps.schedulingQuantity), 0)) > 0
          and od.create_time between #{selectTime1} and #{selectTime2}
          and opd.reporting_work_num_count = 0
          and position(#{orderId} in ogd.order_id)
--           and position("切割" in ps.processes)
        group by ogd.order_id, ogd.order_number, ogd.technology_number
        order by ogd.order_id desc
    </select>
    <select id="selectMaxId">
        select COUNT(ps.scheduling_id)
@@ -311,4 +254,36 @@
        order by ogd.order_id desc
        limit #{offset},#{pageSize};
    </select>
    <select id="getOkPageTotal">
        select CEILING(count(ps.id)/#{pageSize}) as 'pageTotal',
        count(distinct ps.id) as 'total'
        from sd.order_detail as od
        left join sd.order as o on od.order_id = o.order_id
        left join production_scheduling as ps
        on ps.order_id = od.order_id and ps.order_number = od.order_number
        left join sd.order_glass_detail as ogd on ogd.order_id=od.order_id and ogd.order_number=od.order_number and
        ogd.technology_number=ps.technology_number
        where ps.scheduling_id IS NOT NULL
        and od.create_time between #{selectTime1} and #{selectTime2}
        and position(#{processes} in ps.processes)
        and position(#{orderId} in ps.order_id)
        <if test="productionScheduling.orderId != null and productionScheduling.orderId != ''">
            and ogd.order_id regexp #{productionScheduling.orderId}
        </if>
        <if test="productionScheduling.order.customerName != null and productionScheduling.order.customerName != ''">
            and o.customer_name regexp #{productionScheduling.order.customerName}
        </if>
        <if test="productionScheduling.order.project != null and productionScheduling.order.project != ''">
            and o.project regexp #{productionScheduling.order.project}
        </if>
        <if test="productionScheduling.orderNumber != null and productionScheduling.orderNumber != ''">
            and ogd.order_number regexp #{productionScheduling.orderNumber}
        </if>
        <if test="productionScheduling.technologyNumber != null and productionScheduling.technologyNumber != ''">
            and ogd.technology_number regexp #{productionScheduling.technologyNumber}
        </if>
        order by ps.id desc
        limit #{offset},#{pageSize};
    </select>
</mapper>
north-glass-erp/src/main/resources/mapper/pp/Report.xml
@@ -225,7 +225,7 @@
               o.project,
               o.order_id,
               o.batch,
               od.shape,
               if(od.shape=1,'普形',if(od.shape=2,'异形','')) as shape,
               ogd.order_number,
               ogd.technology_number,
               ogd.process,
@@ -526,7 +526,7 @@
            ogd.child_height as childHeight,
            fc.quantity,
            round( ogd.child_width * ogd.child_height * fc.quantity / 1000000, 2 ) as area,
            od.shape,
            if(od.shape=1,'普形',if(od.shape=2,'异形','')) as shape,
            od.remarks
        FROM
            sd.ORDER AS o
@@ -614,7 +614,7 @@
    <select id="productionScheduleMp">
        select
            a.order_number,
            a.shape,
            if(od.shape=1,'普形',if(od.shape=2,'异形','')) as shape,
            a.product_name,
            b.child_width,
            b.child_height,
@@ -967,7 +967,7 @@
               o.project,
               o.order_id,
               o.batch,
               od.shape,
               if(od.shape=1,'普形',if(od.shape=2,'异形','')) as shape,
               ogd.order_number,
               ogd.technology_number,
               ogd.process,
@@ -1180,7 +1180,7 @@
            rwd.order_number,
            MAX( ogd.child_width ) as width,
            MAX( ogd.child_height ) as height,
            od.shape,
        if(od.shape=1,'普形',if(od.shape=2,'异形','')) as shape,
            sum( pd.thickness ) as thickness,
            od.edging_type,
            rwd.completed_quantity,
north-glass-erp/src/main/resources/mapper/pp/ReportingWork.xml
@@ -125,7 +125,7 @@
            fc.quantity AS quantity_card,
            ogd.child_width,
            ogd.child_height,
            od.shape,
            if(od.shape=1,'普形',if(od.shape=2,'异形','')) as shape,
            fc.quantity -odpd.reporting_work_num -odpd.broken_num  as quantity,
            fc.quantity -odpd.reporting_work_num -odpd.broken_num  as completedQuantity,
            odpd.reporting_work_num as completed,
@@ -163,7 +163,7 @@
            fc.quantity AS quantity_card,
            ogd.child_width,
            ogd.child_height,
            od.shape,
        if(od.shape=1,'普形',if(od.shape=2,'异形','')) as shape,
            if((odpds.reporting_work_num_count + ifnull(c.patchNumSum,0) -odpd.reporting_work_num_count -odpd.broken_num ) &lt; 0,
                0,
        odpds.reporting_work_num_count + ifnull(c.patchNumSum,0) -odpd.reporting_work_num_count -odpd.broken_num) as quantity,
@@ -382,7 +382,7 @@
            c.quantity as quantity_card,
            d.child_width,
            d.child_height,
            e.shape,
            if(e.shape=1,'普形',if(e.shape=2,'异形','')) as shape,
            if(ifnull(a.completed_quantity+a.breakage_quantity,0)=0,
                c.quantity-ifnull(a.completed_quantity+a.breakage_quantity,0),
                ifnull(a.completed_quantity+a.breakage_quantity,0)) as 'quantity', -- 可报工数