廖井涛
2024-06-13 a447cbc8b560a5c99b2c3fb2e9066d66e045f950
提交
59个文件已修改
1590 ■■■■■ 已修改文件
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 106 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
north-glass-erp/northglass-erp/src/views/pp/processCard/PrintLabel.vue 2 ●●● 补丁 | 查看 | 原始文档 | 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 26 ●●●● 补丁 | 查看 | 原始文档 | 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/mapper/pp/FlowCardMapper.java 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
north-glass-erp/src/main/java/com/example/erp/service/pp/FlowCardService.java 25 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
north-glass-erp/src/main/resources/mapper/pp/FolwCard.xml 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
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
@@ -12,11 +12,13 @@
import PrintProcess from '@/views/pp/processCard/PrintProcess.vue'
import PrintLabel from '@/views/pp/processCard/PrintLabel.vue'
import footSum from "@/hook/footSum"
import {Search} from "@element-plus/icons-vue";
//语言获取
const {t} = useI18n()
let router = useRouter()
const dialogTableVisible = ref(false)
const dialogTableVisibleLabel = ref(false)
const dialogTableVisibleSetup = ref(false)
let selectRecords = ref(null)
//定义滚动条高度
@@ -44,6 +46,13 @@
})
let filterDataPrint  =ref( {})
let printSetupDate = {
  id:'',
  printType:'',
  printTypeName:'',
  printState:''
}
//定义页面总页数
let pageTotal = ref('')
//定义数据返回结果
@@ -64,6 +73,14 @@
    produceList = produceList.value.concat(deepClone(res.data.data))
    xGrid.value.reloadData(produceList)
    gridOptions.loading = false
  } else {
    ElMessage.warning(res.msg)
  }
})
request.post(`/processCard/printSetup`, filterDataPrint.value).then((res) => {
  if (res.code == 200) {
    printSetupDate = deepClone(res.data.data)
  } else {
    ElMessage.warning(res.msg)
  }
@@ -106,7 +123,7 @@
    useKey: true
  },
  filterConfig: {   //筛选配置项
                    // remote: true
    // remote: true
  },
  customConfig: {
    storage: true
@@ -129,7 +146,7 @@
    },
    {
      field: 'process_id',
      title: '流程卡号',
      title: t('processCard.processId'),
      showOverflow: "ellipsis",
      filters: [{data: ''}],
      slots: {filter: 'num1_filter'},
@@ -137,36 +154,37 @@
    },
    {
      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'},
        {code: 'printSetup', name:  t('processCard.printSetup'),status: 'primary'},
    ],
    // import: false,
    // export: true,
    //print: true,
     //print: true,
    zoom: true,
    custom: true
  },
@@ -191,7 +209,7 @@
const gridEvents = {
  toolbarButtonClick ({ code}) {
    const $grid = xGrid.value
    selectRecords = $grid.getCheckboxRecords()
     selectRecords = $grid.getCheckboxRecords()
    if ($grid) {
      switch (code) {
        case 'print': {
@@ -231,10 +249,36 @@
          break
        }
        case 'printSetup': {
          dialogTableVisibleSetup.value=true
          break
        }
      }
    }
  },
}
let checkbox= ref({
  customerName:0,
  orderId:0,
  typeName:0,
  specifications:0,
  project:0,
  remarks:0,
  glassChild:0,
  processingNote:0,
})
const changeDate =  ()=>{
  request.post(`/processCard/updatePrintSetup`, checkbox.value).then((res) => {
    if (res.code == 200) {
      dialogTableVisibleSetup.value=false
    } else {
      ElMessage.warning(res.msg)
    }
  })
}
</script>
@@ -286,19 +330,37 @@
    <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%" />
          style="width: 100%;height: 100%" />
    </el-dialog>
    <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%" />
                    style="width: 100%;height: 100%" />
    </el-dialog>
    <el-dialog v-model="dialogTableVisibleSetup" :title="$t('processCard.printSetup')" style="width: 70%;height:75% ">
      <div>
        <el-button @click="changeDate"   id="searchButton" type="primary" >{{ $t('basicData.save') }}</el-button>
      </div>
      <div class="order-primary" >
        <el-checkbox v-model="checkbox.customerName" :checked="printSetupDate[0].printState===1">{{ $t('customer.customerName') }}</el-checkbox>
        <el-checkbox v-model="checkbox.project" :checked="printSetupDate[1].printState===1">{{ $t('order.project') }}</el-checkbox>
        <el-checkbox v-model="checkbox.orderId" :checked="printSetupDate[6].printState===1">{{ $t('order.orderId') }}</el-checkbox>
        <el-checkbox v-model="checkbox.specifications" :checked="printSetupDate[2].printState===1">{{ $t('processCard.specificationQuantity') }}</el-checkbox>
        <el-checkbox v-model="checkbox.remarks" :checked="printSetupDate[3].printState===1">{{ $t('order.floorNumber') }}</el-checkbox>
        <el-checkbox v-model="checkbox.processingNote" :checked="printSetupDate[4].printState===1">{{ $t('order.processingNote') }}</el-checkbox>
        <el-checkbox v-model="checkbox.glassChild" :checked="printSetupDate[5].printState===1">{{ $t('processCard.singlePieceProductName') }}</el-checkbox>
        <el-checkbox v-model="checkbox.typeName" :checked="printSetupDate[7].printState===1">{{ $t('processCard.productType') }}</el-checkbox>
      </div>
    </el-dialog>
  </div>
</template>
@@ -308,5 +370,9 @@
  width: 99%;
  height: 100%;
}
.order-primary{
  margin-top: 20px;
  width: 100%;
}
</style>
north-glass-erp/northglass-erp/src/views/pp/processCard/PrintLabel.vue
@@ -100,7 +100,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" >
    <div id="entirety" v-for="(item,id) in labelList" >
      <div v-show="printSetupData[0].printState" class="row1">{{ item.customer_name }}</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
@@ -428,7 +428,7 @@
          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++) {
@@ -437,13 +437,13 @@
              let number = selectRecords[i].scheduling_quantity
              //计划开始、结束时间,排产数量不能为空
              if (start == null || end == null || number == null) {
                ElMessage.warning("请填入对应的值再进行保存")
                ElMessage.warning(t('processCard.saveCorrespondingValues'))
                return;
              }
            }
            let selectProcesses = value.value
            if (selectProcesses == null || selectProcesses == "") {
              ElMessage.warning("请选择排产工序")
              ElMessage.warning(t('processCard.selectProductionSchedulingProcess'))
              return;
            }
@@ -457,7 +457,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({
@@ -482,10 +482,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,
@@ -493,7 +493,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)
@@ -509,7 +509,7 @@
          const selectRecords = $table.getCheckboxRecords()
          if ($table) {
            if (selectRecords.length == 0) {
              ElMessage.warning("请勾选排产数据")
              ElMessage.warning(t('processCard.checkProductionScheduling'))
              return;
            }
            let schedulingData = ref({
@@ -518,7 +518,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)
@@ -593,7 +593,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
    }
@@ -612,9 +612,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"
@@ -631,7 +631,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"
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
@@ -158,28 +158,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
@@ -221,9 +221,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"
@@ -231,7 +231,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
@@ -23,7 +23,7 @@
const oldPassword = (rule: any, value: any, callback: any) => {
  if (value.trim() === '') {
    callback(new Error('旧密码不能为空'))
    callback(new Error(t('user.OldPasswordCannotBeEmpty')))
  }else{
    callback()
  }
@@ -31,9 +31,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()
  }
@@ -41,11 +41,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()
  }
@@ -66,14 +66,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
      })
    }
@@ -93,20 +93,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
@@ -205,4 +205,12 @@
        return Result.seccess(flowCardService.printSetup(printSetup));
    }
    @ApiOperation("修改打印标签内容")
    @SaCheckPermission("PrintFlowCard.search")
    @PostMapping("/updatePrintSetup")
    public Result updatePrintSetup(@RequestBody Map<String,Object>  object)
    {
        return  Result.seccess(flowCardService.updatePrintSetup(object));
    }
}
north-glass-erp/src/main/java/com/example/erp/mapper/pp/FlowCardMapper.java
@@ -84,4 +84,6 @@
    List<Map<String, String>> getPrintLabel(String processId, Integer technologyNumber);
    List<Map<String, String>> selectPrintSetup(PrintSetup printSetup);
    Boolean updatePrintSetup(String alias,Integer printState);
}
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;
@@ -274,4 +271,24 @@
        return map;
    }
    public Boolean updatePrintSetup(Map<String, Object> object) {
        System.out.println(object);
        boolean saveState = true;
        String[] stringList=new String[]{"customerName","orderId","typeName","specifications","project","remarks","glassChild","processingNote"};
        for(String strings:stringList){
            if (object.get(strings) != null) {
                if (Objects.equals(object.get(strings).toString(), "true")){
                    flowCardMapper.updatePrintSetup(strings,1);
                }else {
                    flowCardMapper.updatePrintSetup(strings,0);
                }
            }else {
                saveState=false;
            }
        }
        return saveState;
    }
}
north-glass-erp/src/main/resources/mapper/pp/FolwCard.xml
@@ -552,4 +552,8 @@
               print_state as printState
        from pp.print_setup
    </select>
    <update id="updatePrintSetup">
        update pp.print_setup set print_state=#{printState} where alias=#{alias}
    </update>
</mapper>