guoyuji
2024-06-17 5ba0c74d42abf5362643f17fed33723674378321
提交相关拉取文件
84个文件已修改
1个文件已添加
2316 ■■■■■ 已修改文件
north-glass-erp/northglass-erp/src/components/BasicTable.vue 12 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
north-glass-erp/northglass-erp/src/components/pp/TagStyle.vue 32 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
north-glass-erp/northglass-erp/src/components/sd/order/OrderCraftDetail.vue 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
north-glass-erp/northglass-erp/src/components/sd/order/OrderDetail.vue 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
north-glass-erp/northglass-erp/src/components/sd/order/OrderOtherMoney.vue 38 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
north-glass-erp/northglass-erp/src/components/sd/order/OrderProcess.vue 22 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
north-glass-erp/northglass-erp/src/components/sd/order/OrderSizeCheck.vue 14 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
north-glass-erp/northglass-erp/src/components/sd/product/BasicTable.vue 13 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
north-glass-erp/northglass-erp/src/components/sd/product/GlassType.vue 4 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
north-glass-erp/northglass-erp/src/lang/en.js 24 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
north-glass-erp/northglass-erp/src/lang/zh.js 220 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
north-glass-erp/northglass-erp/src/router/index.js 5 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
north-glass-erp/northglass-erp/src/views/mm/basicData/WarehouseBasicData.vue 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
north-glass-erp/northglass-erp/src/views/mm/basicData/WarehouseCreateBasicData.vue 34 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
north-glass-erp/northglass-erp/src/views/mm/basicData/WarehouseSearchBasicData.vue 16 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
north-glass-erp/northglass-erp/src/views/mm/mainIngredient/CreateIngredients.vue 29 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
north-glass-erp/northglass-erp/src/views/mm/mainIngredient/Ingredients.vue 6 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
north-glass-erp/northglass-erp/src/views/mm/mainIngredient/SelectIngredients.vue 34 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
north-glass-erp/northglass-erp/src/views/mm/mainIngredientStock/CreateOutBound.vue 74 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
north-glass-erp/northglass-erp/src/views/mm/mainIngredientStock/IngredientsStock.vue 8 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
north-glass-erp/northglass-erp/src/views/mm/mainIngredientStock/MaterialOutbound.vue 42 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
north-glass-erp/northglass-erp/src/views/mm/mainIngredientStock/ReturnToStorage.vue 40 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
north-glass-erp/northglass-erp/src/views/mm/mainIngredientStock/ReturnToStorageCreate.vue 88 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
north-glass-erp/northglass-erp/src/views/mm/mainIngredientStock/SelectIngredientsStock.vue 120 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
north-glass-erp/northglass-erp/src/views/mm/mainProductStock/CreateProductStock.vue 6 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
north-glass-erp/northglass-erp/src/views/mm/mainProductStock/FinishedGoodsIssue.vue 6 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
north-glass-erp/northglass-erp/src/views/mm/mainProductStock/FinishedProductOut.vue 8 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
north-glass-erp/northglass-erp/src/views/mm/mainProductStock/FinishedProductReturn.vue 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
north-glass-erp/northglass-erp/src/views/mm/mainProductStock/FinishedProductRework.vue 6 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
north-glass-erp/northglass-erp/src/views/mm/mainProductStock/OrderAllocation.vue 6 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
north-glass-erp/northglass-erp/src/views/mm/mainProductStock/ProductStockList.vue 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
north-glass-erp/northglass-erp/src/views/mm/mainProductStock/ReworkRecord.vue 12 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
north-glass-erp/northglass-erp/src/views/mm/mainProductStock/StorageRecord.vue 12 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
north-glass-erp/northglass-erp/src/views/mm/mainProductStock/TakeOutRecord.vue 16 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
north-glass-erp/northglass-erp/src/views/mm/mainProductStock/TransferRecord.vue 10 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
north-glass-erp/northglass-erp/src/views/mm/stockReport/StockReport.vue 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
north-glass-erp/northglass-erp/src/views/mm/stockReport/WarehouseReport.vue 10 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
north-glass-erp/northglass-erp/src/views/pp/Replenish/AddReplenish.vue 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
north-glass-erp/northglass-erp/src/views/pp/Replenish/SelectReplenish.vue 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
north-glass-erp/northglass-erp/src/views/pp/machine/SelectMachine.vue 26 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
north-glass-erp/northglass-erp/src/views/pp/processCard/PrintCustomLabel.vue 180 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
north-glass-erp/northglass-erp/src/views/pp/processCard/PrintFlowCard.vue 85 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
north-glass-erp/northglass-erp/src/views/pp/processCard/PrintProcess.vue 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
north-glass-erp/northglass-erp/src/views/pp/processCard/ProductionScheduling.vue 26 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
north-glass-erp/northglass-erp/src/views/pp/productionBasicData/AddBreakageReason.vue 10 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
north-glass-erp/northglass-erp/src/views/pp/productionBasicData/AddBreakageType.vue 10 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
north-glass-erp/northglass-erp/src/views/pp/productionBasicData/AddTeamGroup.vue 12 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
north-glass-erp/northglass-erp/src/views/pp/productionBasicData/ProductionBasicData.vue 10 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
north-glass-erp/northglass-erp/src/views/pp/productionBasicData/SelectProductionBasicData.vue 24 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
north-glass-erp/northglass-erp/src/views/pp/report/CrossProcessBreaking.vue 27 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
north-glass-erp/northglass-erp/src/views/pp/report/DamageReport.vue 44 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
north-glass-erp/northglass-erp/src/views/pp/report/OrderPlanDecomposition.vue 42 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
north-glass-erp/northglass-erp/src/views/pp/report/ProcessCardProgress.vue 24 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
north-glass-erp/northglass-erp/src/views/pp/report/ProcessToBeCompleted.vue 68 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
north-glass-erp/northglass-erp/src/views/pp/report/ProductionSchedule.vue 26 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
north-glass-erp/northglass-erp/src/views/pp/report/QualityReport.vue 38 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
north-glass-erp/northglass-erp/src/views/pp/report/RawMaterialRequisition.vue 32 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
north-glass-erp/northglass-erp/src/views/pp/report/Report.vue 30 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
north-glass-erp/northglass-erp/src/views/pp/report/SplittingDetailsOutside.vue 26 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
north-glass-erp/northglass-erp/src/views/pp/report/TaskCompletionStatus.vue 26 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
north-glass-erp/northglass-erp/src/views/pp/report/TeamOutput.vue 48 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
north-glass-erp/northglass-erp/src/views/pp/report/WorkInProgress.vue 60 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
north-glass-erp/northglass-erp/src/views/pp/report/Yield.vue 36 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
north-glass-erp/northglass-erp/src/views/pp/reportingWorks/AddReportingWork.vue 28 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
north-glass-erp/northglass-erp/src/views/pp/rework/AddRework.vue 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
north-glass-erp/northglass-erp/src/views/pp/rework/SelectRework.vue 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
north-glass-erp/northglass-erp/src/views/pp/workOrder/SelectWorkOrder.vue 4 ●●●● 补丁 | 查看 | 原始文档 | 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 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
north-glass-erp/northglass-erp/src/views/sd/customer/SelectCustomerOrder.vue 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
north-glass-erp/northglass-erp/src/views/sd/delivery/CreateDelivery.vue 6 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
north-glass-erp/northglass-erp/src/views/sd/delivery/DeliveryPrinting.vue 132 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
north-glass-erp/northglass-erp/src/views/sd/delivery/SelectDelivery.vue 6 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
north-glass-erp/northglass-erp/src/views/sd/delivery/SelectOrderList.vue 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
north-glass-erp/northglass-erp/src/views/sd/order/CreateOrder.vue 27 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
north-glass-erp/src/main/java/com/example/erp/controller/pp/ProcessCardController.java 18 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
north-glass-erp/src/main/java/com/example/erp/controller/sd/DeliveryController.java 7 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
north-glass-erp/src/main/java/com/example/erp/mapper/pp/FlowCardMapper.java 8 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
north-glass-erp/src/main/java/com/example/erp/mapper/sd/DeliveryDetailMapper.java 5 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
north-glass-erp/src/main/java/com/example/erp/mapper/sd/DeliveryMapper.java 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
north-glass-erp/src/main/java/com/example/erp/service/pp/FlowCardService.java 31 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
north-glass-erp/src/main/java/com/example/erp/service/sd/DeliveryService.java 23 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
north-glass-erp/src/main/resources/mapper/pp/FolwCard.xml 70 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
north-glass-erp/src/main/resources/mapper/sd/DeliveryDetailMapper.xml 28 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
north-glass-erp/src/main/resources/mapper/sd/DeliveryMapper.xml 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
north-glass-erp/northglass-erp/src/components/BasicTable.vue
@@ -47,7 +47,7 @@
      options: [
        [
          { code: 'exportExcelChecked', name: '导出选中', prefixIcon: 'vxe-icon-download', visible: true }
          { code: 'exportExcelChecked', name: t('components.exportSelected'), prefixIcon: 'vxe-icon-download', visible: true }
        ]
      ]
    }
@@ -72,7 +72,7 @@
    return[
      columns.map((column, columnIndex) => {
        if (columnIndex === 0) {
          return '合计:'
          return t('basicData.total')
        }
        if (props.childrenData.footList.includes(column.field)) {
          return sumNum(data, column.field)
@@ -191,8 +191,8 @@
    <el-date-picker
        v-model="basicProp.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"
    />
@@ -201,7 +201,7 @@
        id="searchButton"
        type="primary"
        style="margin-top: -5px"
        :icon="Search">查询</el-button>
        :icon="Search">{{$t('basicData.search')}}</el-button>
    <div class="order-detail">
      <vxe-grid
          @filter-change="filterChanged"
@@ -234,7 +234,7 @@
                      @click="exportExcel(props.childrenData.exportUrl,
                                          props.childrenData.exportName,
                                          basicProp.selectDate)">
            导出</vxe-button>
            {{$t('basicData.export')}}</vxe-button>
        </template>
        <template #pager>
north-glass-erp/northglass-erp/src/components/pp/TagStyle.vue
@@ -61,11 +61,11 @@
})
const saveTag = () => {
  ElMessageBox.prompt( '新增标签名:', {
    confirmButtonText: '保存',
    cancelButtonText: '取消',
  ElMessageBox.prompt( t('components.addNewSignature')+':', {
    confirmButtonText: t('basicData.save'),
    cancelButtonText: t('basicData.cancelButtonText'),
    inputPattern:/^.{1,20}$/,
    inputErrorMessage: '请输入20个字符以内的且不为空的字符',
    inputErrorMessage: t('components.message'),
    inputValue:tag.value.name
  }).then(({ value }) => {
      tag.value.name = value
@@ -73,7 +73,7 @@
      tag.value.size = JSON.stringify(size.value)
      request.post('tagStyle/saveTag',tag.value).then(res => {
        if(res.code === '200' && res.data===true){
          ElMessage.success("保存成功")
          ElMessage.success(t('basicData.msg.saveSuccess'))
          getTags()
        }
      })
@@ -130,7 +130,7 @@
const deleteTag = () => {
  request.post(`tagStyle/deleteTag/${tag.value.id}`).then(res => {
    if(res.code === '200' && res.data===true){
      ElMessage.success("删除成功")
      ElMessage.success(t('basicData.msg.deleteSuccess'))
      getTags()
      close()
    }
@@ -159,7 +159,7 @@
    <el-container style="width: 100%;height: 100%;">
      <el-aside  width="200px">
        <el-collapse v-model="activeName" accordion>
          <el-collapse-item title="标签列表" name="1">
          <el-collapse-item :title="$t('components.orderHeader')" name="1">
            <div v-for="(tag,index) in tags"
                 :class="{'tag-active':index===clickIndex}"
                 @dblclick="searchTag(tag,index)">
@@ -176,8 +176,8 @@
                v-model="tag.type"
                @change="changeType"
                placeholder="" >
              <el-option label="成品" :value="1"/>
              <el-option label="半成品" :value="2"/>
              <el-option :label="$t('components.finishedProduct')" :value="1"/>
              <el-option :label="$t('components.semiFinishedProducts')" :value="2"/>
            </el-select>
            <el-select placeholder="订单表头">
              <el-option @click="addList(keys,item)"
@@ -230,22 +230,22 @@
        <el-footer style="padding-top: 0.5rem">
          <el-popconfirm
              width="220"
              confirm-button-text="确定"
              cancel-button-text="取消"
              :confirm-button-text="$t('basicData.confirmButtonText')"
              :cancel-button-text="$t('basicData.cancelButtonText')"
              :icon="InfoFilled"
              icon-color="#626AEF"
              title="确定删除?"
              :title="$t('searchOrder.deleteConfirm')"
              @confirm="deleteTag"
              v-if="tag.id!==null"
          >
            <template #reference>
              <el-button type="primary"  style="float: left"  >删除</el-button>
              <el-button type="primary"  style="float: left"  >{{ $t('basicData.delete') }}</el-button>
            </template>
          </el-popconfirm>
          <el-button type="primary" @click="clearList">清空</el-button>
          <el-button v-if="tag.id===null" type="primary" @click="saveTag" >新增</el-button>
          <el-button v-else type="primary" @click="saveTag" >修改</el-button>
          <el-button type="primary" @click="clearList">{{ $t('basicData.empty') }}</el-button>
          <el-button v-if="tag.id===null" type="primary" @click="saveTag" >{{ $t('basicData.insert') }}</el-button>
          <el-button v-else type="primary" @click="saveTag" >{{ $t('basicData.update') }}</el-button>
        </el-footer>
      </el-container>
    </el-container>
north-glass-erp/northglass-erp/src/components/sd/order/OrderCraftDetail.vue
@@ -91,7 +91,7 @@
      </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>
    </vxe-grid>
north-glass-erp/northglass-erp/src/components/sd/order/OrderDetail.vue
@@ -93,7 +93,7 @@
      </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>
    </vxe-grid>
north-glass-erp/northglass-erp/src/components/sd/order/OrderOtherMoney.vue
@@ -38,10 +38,10 @@
  },//表头参数
  columns:[
    // {field: 'buildingNumber',width:120,  title: '楼号',editRender: { name: 'input'},filters:[{ data: '' }],slots: { filter: 'num1_filter'}, sortable: true,filterMethod:filterChanged},
    {field: 'alias', title:'其他加工',minWith:'130'},
    {field: 'price',  title:'单价',editRender: { name: 'input'}},
    {field: 'quantity',  title:'数量' },
    {field: 'money', slots:{default:'default'},  title:'金额'}
    {field: 'alias', title:t('components.otherProcessing'),minWith:'130'},
    {field: 'price',  title:t('order.price'),editRender: { name: 'input'}},
    {field: 'quantity',  title:t('order.quantity')},
    {field: 'money', slots:{default:'default'},  title:t('delivery.money')}
  ],
  //表单验证
  editRules: {
@@ -69,8 +69,8 @@
  },
  toolbarConfig: {
    buttons: [
      {'code': 'add', 'name': '新增',status: 'primary'},
      {'code': 'delete', 'name': '删除',status: 'primary'}
      {'code': 'add', 'name': t('basicData.insert'),status: 'primary'},
      {'code': 'delete', 'name': t('basicData.delete'),status: 'primary'}
    ],
@@ -116,7 +116,7 @@
        }
        case 'delete': {
          if(rowClickIndex.value === null){
            ElMessage.warning('请先单击选择行')
            ElMessage.warning(t('components.pleaseClickToSelectARowFirst'))
            return
          }
          deleteColum(rowClickIndex.value.id)
@@ -160,7 +160,7 @@
const validate = async () => {
  const errMap = await xGrid.value.validate(true)
  if (errMap) {
    ElMessage.error(`校验不通过!`)
    ElMessage.error(t('basicData.msg.checkoutLose'))
    return false
  }
  return true
@@ -171,22 +171,22 @@
const addColumn = () => {
  ElMessageBox.prompt( '新增列名:', {
    confirmButtonText: '新增',
    cancelButtonText: '取消',
  ElMessageBox.prompt( t('components.addColumnNames')+':', {
    confirmButtonText: t('basicData.insert'),
    cancelButtonText: t('basicData.cancelButtonText'),
    inputPattern:/^.{1,20}$/,
    inputErrorMessage: '请输入20个字符以内的且不为空的字符',
    inputErrorMessage: t('components.message'),
  })
    .then(({ value }) => {
      request.post('/basicOtherMoney/save',{alias:value}).then(res=>{
        if (res.code==='200' && res.data!==false){
          ElMessage.success('新增成功')
          ElMessage.success(t('basicData.msg.saveSuccess'))
          setTimeout(()=>{
            window.location.reload()
          },1500)
        }else{
          ElMessage.error('新增失败,不能重复添加或超过100条列')
          ElMessage.error(t('basicData.msg.saveFail'))
        }
      })
    })
@@ -195,23 +195,23 @@
const deleteColum = (id) => {
  ElMessageBox.confirm(
      '确认删除此列名?',
      t('searchOrder.deleteConfirm'),
      'Warning',
      {
        confirmButtonText: '删除',
        cancelButtonText: '取消',
        confirmButtonText: t('basicData.confirmButtonText'),
        cancelButtonText: t('basicData.cancelButtonText'),
        type: 'warning',
      }
  )
      .then(() => {
        request.post(`/basicOtherMoney/deleteById/${id}`,).then(res=>{
          if (res.code==='200' && res.data!==false){
            ElMessage.success('删除成功')
            ElMessage.success(t('basicData.msg.deleteSuccess'))
            setTimeout(()=>{
              window.location.reload()
            },1500)
          }else{
            ElMessage.error('删除失败')
            ElMessage.error(t('basicData.msg.deleteFail'))
          }
        })
      })
north-glass-erp/northglass-erp/src/components/sd/order/OrderProcess.vue
@@ -44,19 +44,19 @@
  orderId:null
})
const columns = [
  {field: 'order_number',fixed:"left", width: 90,title: '订单序号',showOverflow:"ellipsis"},
  {field: 'order_number',fixed:"left", width: 90,title: t('order.OrderNum'),showOverflow:"ellipsis"},
  // {type:'expand',fixed:"left",slots: { content:'content' },width: 50},
  {field: 'product_name', width: 150, title: '产品名称',filters:[{ data: '' }],slots: { filter: 'num1_filter' },filterMethod: filterChanged},
  {field: 'glass_child',width: 130, title: '单片名称' ,filters:[{ data: '' }],slots: { filter: 'num1_filter' },filterMethod: filterChanged},
  {field: 'order_type', width: 120,title: '订单类型',filters:[{ data: '' }],slots: { filter: 'num1_filter' },filterMethod: filterChanged},
  {field: 'process_id',width: 110, title: '流程卡号',filters:[{ data: '' }],slots: { filter: 'num1_filter' },filterMethod: filterChanged},
  {field: 'product_name', width: 150, title: t('order.product'),filters:[{ data: '' }],slots: { filter: 'num1_filter' },filterMethod: filterChanged},
  {field: 'glass_child',width: 130, title: t('reportingWorks.glassChild') ,filters:[{ data: '' }],slots: { filter: 'num1_filter' },filterMethod: filterChanged},
  {field: 'order_type', width: 120,title: t('order.orderType'),filters:[{ data: '' }],slots: { filter: 'num1_filter' },filterMethod: filterChanged},
  {field: 'process_id',width: 110, title: t('processCard.processId'),filters:[{ data: '' }],slots: { filter: 'num1_filter' },filterMethod: filterChanged},
  {field: 'technology_number', width: 90,title: '小片顺序',showOverflow:"ellipsis"},
  {field: 'quantity', width: 90,title: '数量'},
  {field: 'shippedQuantity',width: 120, title: '发货数量'},
  {field: 'inventory',width: 120, title: '库存数量'},
  {field: 'inventoryArea',width: 120, title: '库存面积'},
  {field: 'broken_num',width: 90, title: '次破数量'},
  {field: 'technology_number', width: 90,title:  t('processCard.technologyNumber'),showOverflow:"ellipsis"},
  {field: 'quantity', width: 90,title: t('order.quantity')},
  {field: 'shippedQuantity',width: 120, title: t('delivery.deliveryQuantity')},
  {field: 'inventory',width: 120, title: t('productStock.inventoryQuantity')},
  {field: 'inventoryArea',width: 120, title: t('report.inventoryArea')},
  {field: 'broken_num',width: 90, title: t('reportingWorks.quantityBroken')},
]
let column = [0,1,3,6,7,8,9]
north-glass-erp/northglass-erp/src/components/sd/order/OrderSizeCheck.vue
@@ -16,7 +16,7 @@
  id:'sizeCheck',
  toolbarConfig: {
    buttons: [
      {'code': 'review', 'name': '审核',status: 'primary'},
      {'code': 'review', 'name': t('basicData.review'),status: 'primary'},
    ]
  },
@@ -49,19 +49,19 @@
    storage: true
  },
  columns:[
    {field: 'width',  title: '宽',editRender: { name: 'input'}},
    {field: 'height',  title:'高', editRender: { name: 'input'}},
    {field: 'quantity', title: '数量' ,editRender: { name: 'input'}, },
    {field: 'width',  title: t('order.width'),editRender: { name: 'input'}},
    {field: 'height',  title:t('order.height'), editRender: { name: 'input'}},
    {field: 'quantity', title: t('order.quantity') ,editRender: { name: 'input'}, },
  ],
  editRules: {
    width: [
      { required: true, message: '必填,参数不一致' }
      { required: true, message: t('components.inconsistentParameters') }
    ],
    height: [
      { required: true, message: '必填,参数不一致' }
      { required: true, message:t('components.inconsistentParameters') }
    ],
    quantity: [
      { required: true, message: '必填,参数不一致' }
      { required: true, message:t('components.inconsistentParameters') }
    ]
  }
})
north-glass-erp/northglass-erp/src/components/sd/product/BasicTable.vue
@@ -28,8 +28,8 @@
<!--左边固定显示的插槽-->
      <template #button_slot="{ row }">
        <el-button @click="gaveParent(row,'edit')" link type="primary" size="small">编辑</el-button>
        <el-button @click="gaveParent(row,'delete')" link type="primary" size="small">删除</el-button>
        <el-button @click="gaveParent(row,'edit')" link type="primary" size="small">{{ $t('basicData.edit') }}</el-button>
        <el-button @click="gaveParent(row,'delete')" link type="primary" size="small">{{ $t('basicData.delete') }}</el-button>
      </template>
      <template #num1_filter="{ column, $panel }">
@@ -52,9 +52,10 @@
import deepClone from "@/utils/deepClone";
import {ElMessage} from "element-plus";
import router from "@/router";
import {useI18n} from "vue-i18n";
//prop接收父组件函数
const { t } = useI18n()
let props = defineProps({
  tableProp:{
@@ -154,7 +155,7 @@
    return[
      columns.map((column, columnIndex) => {
        if (columnIndex === 0) {
          return '合计:'
          return t('basicData.total')
        }
        if (props.tableProp.footList.includes(column.field)) {
          return sumNum(data, column.field)
@@ -172,7 +173,7 @@
      switch (code) {
        case 'checkList': {
          if($grid.getCheckboxRecords().length==0){
            VXETable.modal.message( '请选择一条数据!')
            VXETable.modal.message( t('searchOrder.msg'))
            return
          }
          emit('getCheckList',$grid.getCheckboxRecords())
@@ -188,7 +189,7 @@
        }
        case 'mySave': {
          const { insertRecords, removeRecords, updateRecords } = $grid.getRecordset()
          VXETable.modal.message({ content: `新增 ${insertRecords.length} 条,删除 ${removeRecords.length} 条,更新 ${updateRecords.length} 条`, status: 'success' })
          VXETable.modal.message({ content: `${t('basicData.insert')} ${insertRecords.length} ${t('components.strip')},${t('basicData.delete')} ${removeRecords.length} ${t('components.strip')},${t('basicData.update')} ${updateRecords.length} ${t('components.strip')}`, status: 'success' })
          break
        }
        case 'myExport': {
north-glass-erp/northglass-erp/src/components/sd/product/GlassType.vue
@@ -3,6 +3,8 @@
import deepClone from "@/utils/deepClone";
import {ElMessage} from "element-plus";
import useProductGlassTypeStore from "@/stores/sd/product/productGlassType"
import {useI18n} from "vue-i18n";
const { t } = useI18n()
let productGlassTypeStore = useProductGlassTypeStore()
let options=$ref([])
@@ -25,7 +27,7 @@
        v-model="productGlassTypeStore.GlassType"
        :options="options"
        clearable
        placeholder="玻璃类别"
        :placeholder="$t('orderBasicData.glassCategory')"
    />
  </div>
</template>
north-glass-erp/northglass-erp/src/lang/en.js
@@ -113,7 +113,6 @@
            updateAmountSuccessfully:'Updated amount successfully',
            updateOrderState:'Order status update succeeded',
        }
    },
    searchOrder:{
        createOrder:'Create',
@@ -158,6 +157,7 @@
        reset:'Reset',
        sure:'Sure',
    },
    workOrder:{
        workOrder:'Work Order Management',
        productionId:'Production Order Number',
@@ -221,7 +221,6 @@
        technologyNumber:'Chip Sequence',
        otherRemarks:'Original Film Requirement',
    },
    reportingWorks:{
        glassAddress:'Glass Address',
        WorkReportingManagement:'Work Reporting Management ',
@@ -294,12 +293,7 @@
        thisCompletedQuantity:'This Completed Quantity',
        thisWornQuantity:'This Worn Quantity',
        passAudit:'Pass The Audit',
    },
    productStock:{
        inventoryQuery:'Stock Inquiry',
@@ -321,7 +315,6 @@
        quantityToBeStockedIn:'Quantity To Be Stocked In',
        return:'Return',
        reverseReviewList:'Reverse Review List',
        receivedSuccessfully:'Successfully entered the warehouse',
        deliverySuccessful:"Successfully transferred out of warehouse ",
        successfullyRetrieved:'Successfully claimed',
@@ -330,7 +323,6 @@
        reviewSuccessful:'Successfully review ',
        invalidSuccessfully:'Successfully cancel',
        reverseReviewSuccessful:'Successfully re-audit',
        confirmWithdrawal:'Take Out Confirmation',
        pickingOutRecords:'Take Out Records',
        confirmTransfer:'Mutual Exchange Confirmation',
@@ -339,8 +331,6 @@
        reworkRecords:'Rework Records',
        warehousingRecords:'Warehousing Records',
        outboundRecords:'Outbound Records',
        pleaseSelectTheTypeOfWithdrawal:'Please select the type of withdrawal',
        pleaseSelectTheTypeOfRework:'Please select the type of rework',
        receivedQuantity:'Received Quantity',
@@ -349,14 +339,11 @@
        receivedReworkedQuantity:'Received/Reworked Quantity',
        inventoryQuantity:'Inventory Quantity',
        availableQuantity:'Available Quantity',
        newOrderNumber:'New Order Number',
        newOrderId:'New Order Id',
        transferOrderNumber:'Mutual Exchange Order Number',
        operationOrderNumber:'Operation Order Number',
        inventoryArea:'Inventory Location',
        dataVerificationFailed:'Fail data check',
        unselectedData:'No data selected',
        pleaseEnterAPositiveInteger:'Please enter a positive integer',
@@ -368,7 +355,6 @@
        claimedQuantityCannotBeEmptyOr0:'The claimed quantity cannot be empty or 0',
        theReworkQuantityCannotBeGreaterThanTheOrderQuantity:'The quantity of rework cannot be greater than the number of orders',
        reworkQuantityCannotBeEmptyOr0:'Rework quantity cannot be empty or 0',
        storageTime:'Warehouse Entry Time',
        outboundTime:'Time Of Leaving The Warehouse',
        modificationTime:'modification Time',
@@ -379,7 +365,6 @@
        reviewed:'Audit Staff',
        documentStatus:'Document Status',
        status:'Status',
        totalNumberOfOrders :'Total Number Of Orders',
        quantityAlreadyInStock:'Quantity Already In Stock',
        totalArea:'Total Area',
@@ -404,7 +389,6 @@
        customerHomePage:'Customer Homepage',
        increaseCustomers:'Increase Customers',
        resetting:'Revoke',
    },
    delivery:{
        delivery:'Delivery',
@@ -436,19 +420,14 @@
        deliveryNoteId:'Delivery Note Id',
        deliveryNoteNumber:'Delivery Note Number',
        deliveryDate:"Delivery Date ",
    },
    replenish:{
        patchManagement:'Patch Management',
        addPatches:"Add Patches ",
        printPatches:'Print Patches',
        patchNumber:'Patch Number',
        mark:'Mark',
        sliceMarking:'Slice Marking',
    },
    rework:{
        reworkManagement:'Rework Management',
@@ -460,7 +439,6 @@
        reworkProcess:'Rework Process',
        reworkType:'Rework Type',
        reworkArea:'Rework Area',
        PleaseSelectAReworkTeam:'Please select a rework team',
        TheReworkQuantityCannotBeGreaterThanTheSecondBreakQuantity:'The rework quantity cannot be greater than the second break quantity',
        reworkQuantityCannotBeEmptyOr0:'Rework quantity cannot be empty or 0',
north-glass-erp/northglass-erp/src/lang/zh.js
@@ -55,6 +55,8 @@
        sizeReview:'尺寸审核',
        reportForms:'报表',
        print:'打印',
        export:'导出',
        empty:'清空',
        msg:{
            max255:"最多输入255个字符",
            range99999Dec2:
@@ -65,14 +67,14 @@
            saveFail:'保存失败',
            cancelReviewSuccess:'反审成功',
            ReviewSuccess:'审核成功',
            ServerConnectionError:'服务器连接错误',
            deleteSuccess:'删除成功',
            deleteFail:'删除失败',
            cancelReviewFail:'反审失败',
            reviewFail:'审核失败',
            noProductDataInTheTable:'表格中无产品数据',
            tableDataExceedsMaximumLimit:'表格数据超过最大限制',
        }
    },
    product:{
@@ -137,10 +139,7 @@
           cancelReview:'反审',
           theProductHasBeenReviewedAndCannotBeDeleted:'产品已审核,无法删除',
       }
    },
    order:{
        orderHomePage:'订单首页',
        orderReport:'订单明细报表',
@@ -218,10 +217,12 @@
            importMaxCheckFailLast:'条,请分订单导入',
            updateAmountSuccessfully:'更新金额成功',
            updateOrderState:'更新订单状态成功',
            calculationAreaPrompt1:'存在',
            calculationAreaPrompt2:'条结算单片面积小于',
            calculationAreaPrompt3:'是否按照',
            calculationAreaPrompt4:'计算',
            warning:'提示',
        }
    },
@@ -240,7 +241,7 @@
        msgDelete:'已审核的订单不能删除',
        msgDeleteFail:'删除失败',
        msgDeleteSuccess:'删除成功',
        deleteConfirm:'确认删除订单?',
        deleteConfirm:'确认删除?',
        orderType:'订单类型',
        processFlows:'流程卡进度',
        copy:'复制订单',
@@ -248,7 +249,6 @@
        msgList:{
            checkOrder:'未查询到订单信息,请先单击订单'
        }
    },
    craft:{
        glassAddress:'标记',
@@ -366,7 +366,6 @@
        deleteNoProcedure:'删除失败,检查下工序是否已报工',
        pleaseCheckTheRequiredData:'请勾选需要的数据',
    },
    reportingWorks:{
        glassAddress:'片标记',
        WorkReportingManagement:'报工管理',
@@ -440,8 +439,7 @@
        thisWornQuantity:'本工序次破',
        passAudit:'审核通过',
        ThanEqualTo1:'请输入大于等于',
        ThanEqualTo2:'的数字',
        selectResponsibleTeam:'请选择责任班组',
        selectWorkReportingTeam:'请选择责任班组',
        successfulModificationOfWorkApplication:'报工修改成功',
@@ -452,12 +450,23 @@
        qualityInsTime:'质检时间',
        completedArea:'完工面积',
        wornArea:'次破面积',
        pleaseGreaterThanOrEqual1:'请输入大于等于',
        pleaseGreaterThanOrEqual2:'的数字',
        lossCount1:'损耗数',
        lossCount2:'不能大于',
        pleaseCheckTheOrderNumber1:'请检查订单序号',
        pleaseCheckTheOrderNumber2:'报工数量是否相同',
        pleaseNumber1:'序号',
        pleaseNumber2:'小片顺序',
        pleaseNumber3:'实际可报工数量',
        pleaseNumber4:'报工数量',
        pleaseNumber5:'请刷新界面重新报工',
        pleaseNumber6:'序号',
        pleaseNumber7:'的数量不能大于上工序数量',
        pleaseNumber8:'请输入序号',
        pleaseNumber9:'正确的完工或次破数量',
    },
    productStock:{
        inventoryQuery:'库存查询',
@@ -479,9 +488,6 @@
        quantityToBeStockedIn:'待入库数量',
        return:'返回',
        reverseReviewList:'反审列表',
        receivedSuccessfully:'入库成功',
        deliverySuccessful:"出库成功 ",
        successfullyRetrieved:'领出成功',
@@ -490,7 +496,6 @@
        reviewSuccessful:'审核成功',
        invalidSuccessfully:'返库成功',
        reverseReviewSuccessful:'反审成功',
        confirmWithdrawal:'确认领出',
        pickingOutRecords:'领出记录',
        confirmTransfer:'确认调拨',
@@ -499,8 +504,6 @@
        reworkRecords:'返工记录',
        warehousingRecords:'入库记录',
        outboundRecords:'出库记录',
        pleaseSelectTheTypeOfWithdrawal:'请选择领出类型',
        pleaseSelectTheTypeOfRework:'请选择返工类型',
        receivedQuantity:'领出数量',
@@ -509,14 +512,11 @@
        receivedReworkedQuantity:'领出/返工数量',
        inventoryQuantity:'库存数量',
        availableQuantity:'可用数量',
        newOrderNumber:'新订单序号',
        newOrderId:'新订单号',
        transferOrderNumber:'调拨单号',
        operationOrderNumber:'操作单号',
        inventoryArea:'库存区域',
        dataVerificationFailed:'数据校验失败',
        unselectedData:'未选中数据',
        pleaseEnterAPositiveInteger:'请输入正整数',
@@ -528,7 +528,6 @@
        claimedQuantityCannotBeEmptyOr0:'领出数量不能为空或者是0',
        theReworkQuantityCannotBeGreaterThanTheOrderQuantity:'返工数量不能大于订单数',
        reworkQuantityCannotBeEmptyOr0:'返工数量不能为空或者是0',
        storageTime:'入库时间',
        outboundTime:'出库时间',
        modificationTime:'修改时间',
@@ -539,13 +538,26 @@
        reviewed:'审核人',
        documentStatus:'单据状态',
        status:'状态',
        totalNumberOfOrders :'订单总数',
        quantityAlreadyInStock:'已入数量',
        totalArea:'总面积',
        singlePieceArea:'单片面积',
        perimeter:'周长',
        returnToWarehouse:'撤销',
        entryFailure:'入库失败',
        entry:'入库',
        failedToRetrieve:'领出失败',
        deliveryFailed:'发货失败',
        reworkFailed:'返工失败',
        transferFailed:'调拨失败',
        approved:'已审核',
        notPassed:'未通过',
        cancellationFailed:'反作废失败',
        voidFailed:'作废失败',
        staterOperationOrderNumber:'调拨销售单号',
        endOperationOrderNumber:'调拨序号',
        typeClaim:'领出类型',
    },
@@ -580,7 +592,6 @@
        unpaidQuantity:"未发数量 ",
        availableStock:'可用库存',
        deliveryQuantity:'发货数量',
        pleaseEnterTheAmountOfFunds:'请输入项目名称',
        pleaseSelectPaymentTerms:"请选择付款条件 ",
        pleaseEnterThePaymentMethod:"请输入收款方式 ",
@@ -589,7 +600,6 @@
        pleaseEnterANumericalValueGreaterThanOrEqualTo0:'请输入大于等于0的数值',
        theShipmentQuantityCannotBeGreaterThanTheInventoryQuantity:"发货数量不能大于库存数 ",
        theShipmentQuantityCannotBeEmptyOr0:"发货数量不能为空或者是0 ",
        paymentTerms:'付款条件',
        paymentDate:"收款日期 ",
        selectDate:'选择日期',
@@ -615,7 +625,6 @@
        addPatches:"补片新增 ",
        printPatches:'补片打印',
        patchNumber:'补片单号',
        mark:'标记',
        sliceMarking:'片标记',
@@ -630,12 +639,11 @@
        reworkProcess:'返工工序',
        reworkType:'返工类型',
        reworkArea:'返工面积',
        PleaseSelectAReworkTeam:'请选择返工班组',
        TheReworkQuantityCannotBeGreaterThanTheSecondBreakQuantity:'返工数量不能大于次破数量',
        reworkQuantityCannotBeEmptyOr0:'返工数量不能为空或者是0',
    },
    role:{
        id:'ID',
@@ -647,15 +655,11 @@
        permission:'权限',
        rolePermissions:'角色权限',
        permissionSelection:"权限选择 ",
        ConfirmModifyingRolePermissions:'确认修改角色权限?',
        PleaseEnterANewRole:'请输入新角色',
        AddANewRole:'新增角色',
        CannotBeEmptyAndTheLengthCannotExceed255:'不能为空且长度不能超过255',
    },
    user:{
        userId:'用户ID',
        userHomepage:'用户首页',
@@ -665,17 +669,13 @@
        OldPassword:'旧密码',
        TheNewPassword:'新密码',
        ConfirmPassword:'确认密码',
        OldPasswordCannotBeEmpty:'旧密码不能为空',
        TheNewPasswordCannotBeEmpty:'新密码不能为空',
        ThePasswordLengthCannotBeLessThan6OrMoreThan16:'密码长度不能低于6或超过16',
        ConfirmPasswordCannotBeEmpty:'确认密码不能为空',
        TheTwoPasswordsAreNotTheSame:'两次密码不相同',
        OldPasswordError:'旧密码错误',
    },
    orderBasicData:{
        order:'订单',
        orderType:'订单类型',
@@ -701,16 +701,13 @@
        paymentTerms:'付款条件',
        payMethod:'收款方式',
        delivery:'送货',
        basicType:'基础类型',
        name:'名称',
        glassCategory:'玻璃类别',
        level:'类别等级',
        firstLevel:'一级类别',
        towLevel:'二级类别',
    },
    machine:{
        basicId:'设备编号',
        basicName:'设备名称',
@@ -725,7 +722,6 @@
        process:'所在工序',
        personnel:'维修/保养人员',
        cost:'费用',
        equipmentSituation:'设备情况',
        equipmentAddition:'设备新增',
        maintenanceAndRepair:'保养与维修',
@@ -733,18 +729,148 @@
        maintenanceAndRepairEdit:'保养与维修编辑',
        service:'维修',
        maintain:'保养',
        faultCount:'维修次数',
        maintenanceCount:'保养次数',
        faultLastTime:'最后维修时间',
        maintenanceLastTime:'最后保养时间',
        faultCost:'维修费用',
        maintenanceCost:'保养费用',
        deviceEditing:'设备编辑',
        standardName:'标准名称',
        purchaseTime:'购买时间',
        installationTime:'安装时间',
        maintenanceCycle:'保养周期',
        cutting:'切割',
        edgeGrinding:'磨边',
        tempering:'钢化',
    },
    report:{
        productionReport:'生产报表',
        workInProgressReport:'在制品报表',
        processToBeCompleted:'工序待完成报表',
        productionAndShippingProgress:'生产发货进度报表',
        processCardProgress:'流程卡进度报表',
        orderPlanDecomposition:'订单计划分解报表',
        secondaryBrokenReport:'次破报表',
        crossProcessBreakdown:'跨工序次破报表',
        teamOutput:'班组产量报表',
        splittingDetails:'分架明细报表',
        TaskCompletionStatus:'任务完成情况报表',
        rawMaterialRequisition:'原片领料报表',
        qualityReport:'品质报表',
        yieldReport:'成品率报表',
        workingProcedure:'工序',
        inventoryArea:'库存面积',
        pleaseSelectADateFirst:'请先选择日期',
        pleaseSelectAProcessFirst:'请先选择工序',
        theFilteringTimeForExportCannotExceed180Days:'导出的筛选时间不能超过180天',
        orderTime :'下单时间',
        deliveryDate:'交货日期',
        completedQuantity:'已完成数量',
        completedArea:'已完成面积',
        unfinishedQuantity :'未完成数量',
        unfinishedArea:'未完成面积',
        inventoryNum:'入库数量',
        shippedQuantity :'发货数量',
        area:'发货面积',
        noDataFoundForThisOrder:'未查询到此订单数据',
        startTime:'切割开始时间',
        daysDifference :'生产天数',
        accomplish:'是否清单',
        receivedNo:'未入库数量',
        projectNo :'工程编号',
        quantityClaimed :'已领数量',
        areaClaimed :'已领面积',
        dateClaimed :'领出日期',
        quantityMax :'投入数量',
        patchNum :'补片数量',
        finished :'成品率',
        finishedProductReport :'成品报表',
    },
    productionBasicData:{
        basicDataQuery :'基础数据查询',
        newTypeOfSecondaryDamageAdded :'次破类型新增',
        reasonForSecondaryFailureAdded :'次破原因新增',
        teamAdditionAndAddition :'班组新增新增',
        id:'id',
        basicName:'类别',
        basicDataEdit:'基础数据修改',
        teamName:'班组名称',
        processInvolved:'所在工序',
    },
    mainIngredient:{
        materialInformation :'物料资料',
        materialAddition :'物料新增',
        originalFilm :'原片',
        accessories :'辅料',
        materialCode :'物料编码',
        pleaseSelectACategory :'请选择类别',
        films :'膜系',
        pleaseEnterData :'请输入数据',
        pleaseEnter :'请输入',
    },
    mainIngredientStock:{
        materialName :'物料名称',
        producer :'产地',
        dateOfManufacture :'生产日期',
        selectIngredientsStock :'物料库存',
        materialOutbound :'物料出库',
        returnToStorage :'返库',
        inventory :'库存',
        engineering :'工程',
        inventoryOrganization :'库存组织',
        id :'库存编号',
        projectNo :'工程号',
        planQuantity :'计划数量',
        qualityGuaranteePeriod :'保质期',
        pleaseSelectInventoryOrganization :'请选择库存组织',
        pleaseEnterTheQuantity :'请输入数量',
        pleaseDateOfManufacture :'请选择生产日期',
        materialOutboundId :'出库单号',
        materialRequisitionPersonnel :'领料员',
        materialRequisitionTeam :'领料班组',
        outboundType :'出库类型',
        warehouseManager :'仓管员',
        materialRequisitionDate :'领料日期',
        reviewed :'审核员',
        reviewedTime :'审核时间',
        outboundQuantity :'出库数量',
        materialOutboundType :'材料出库类型',
        pleaseOutboundType :'请选择出库类型',
        pleaseMaterialRequisitionPersonnel :'请输入领料员',
        pleaseMaterialRequisitionTeam :'请输入领料班组',
        pleaseOrderId :'请输入销售单号',
        theOutboundQuantityCannotBeGreaterThanTheAvailableQuantity :'出库数量不能大于可用数量',
        theOutboundQuantityCannotBeEmptyOrEqualTo0 :'出库数量不能为空或者是等于0',
        theReturnQuantityCannotBeEmptyOrEqualTo0 :'返库数量不能为空或者是等于0',
        returningId :'返库单号',
        returningType :'返库类型',
        returningAdd :'返库新增',
        returnQuantity :'返库数量',
        materialReturnType :'材料返库类型',
        createTime :'返库日期',
    },
    mainBasicData:{
        BasicData :'基础数据',
        operateTypeName :'名称',
        operateType :'别称',
        type :'类型',
        takeOut :'领出',
    },
    components:{
        addNewSignature :'新增标签名',
        addColumnNames :'新增列名',
        message :'请输入20个字符以内的且不为空的字符',
        activeName :'标签列表',
        orderHeader :'订单表头',
        finishedProduct :'成品',
        semiFinishedProducts :'半成品',
        pleaseClickToSelectARowFirst :'请先单击选择行',
        otherProcessing :'其他加工',
        inconsistentParameters :'必填,参数不一致',
        strip :'条',
        exportSelected :'导出选中',
    }
}
north-glass-erp/northglass-erp/src/router/index.js
@@ -368,6 +368,11 @@
              component: () => import('../views/pp/processCard/PrintLabel.vue'),
            },
            {
              path: 'printCustomLabel',
              name: 'printCustomLabel',
              component: () => import('../views/pp/processCard/PrintCustomLabel.vue'),
            },
            {
              path: 'productionScheduling',
              name: 'productionScheduling',
              component: () => import('../views/pp/processCard/ProductionScheduling.vue'),
north-glass-erp/northglass-erp/src/views/mm/basicData/WarehouseBasicData.vue
@@ -20,7 +20,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/warehouseBasicData/warehouseSearchBasicData' }">基础数据</el-breadcrumb-item>
        <el-breadcrumb-item @click="changeRouter(1)" :class="indexFlag===1?'indexTag':''" :to="{ path: '/main/warehouseBasicData/warehouseSearchBasicData' }">{{$t('mainBasicData.BasicData')}}</el-breadcrumb-item>
        <el-breadcrumb-item v-show="false" :to="{ path: '/main/order/orderReport' }">{{$t('productStock.reportForms')}}</el-breadcrumb-item>
      </el-breadcrumb>
    </div>
north-glass-erp/northglass-erp/src/views/mm/basicData/WarehouseCreateBasicData.vue
@@ -15,16 +15,16 @@
  input:''
})
let options=ref([
  { label: "库存组织",
  { label: t('mainIngredientStock.inventoryOrganization'),
    value: "inventoryOrganization",
  },
  { label: "领出",
  { label: t('mainBasicData.takeOut'),
    value: "takeOut",
  },
  { label: "材料出库类型",
  { label: t('mainIngredientStock.materialOutboundType'),
    value: "outboundType",
  },
  { label: "材料返库类型",
  { label: t('mainIngredientStock.materialReturnType'),
    value: "returningType",
  },
])
@@ -46,27 +46,27 @@
const emit =  defineEmits(['gaveParent'])
const saveBasicData =  () =>{
  if (basic.value.operateType[0]==='inventoryOrganization'){
    basic.value.type='库存组织'
    basic.value.type=t('mainIngredientStock.inventoryOrganization')
  }
  else if(basic.value.operateType[0]==='takeOut'){
    basic.value.type='领出'
    basic.value.type=t('mainBasicData.takeOut')
  }
  else if(basic.value.operateType[0]==='outboundType'){
    basic.value.type='材料出库类型'
    basic.value.type=t('mainIngredientStock.materialOutboundType')
  }
  else if(basic.value.operateType[0]==='returningType'){
    basic.value.type='材料返库类型'
    basic.value.type=t('mainIngredientStock.materialReturnType')
  }
  if(basic.value.operateType[0]==='' || basic.value.input===''){
    return
  }
  request.post(`/BasicWarehouse/addBasicWarehouse`, basic.value).then(res => {
    if (res.data) {
      ElMessage.success('保存成功')
      ElMessage.success(t('basicData.msg.saveSuccess'))
      emit('gaveParent', true)
    }
  }).catch((err)=>{
    ElMessage.error('系统错误')
    ElMessage.error(t('basicData.msg.ServerConnectionError'))
    router.push("/login")
  })
}
@@ -76,15 +76,15 @@
  submitArr.type = basic.value.type
  submitArr.operateTypeName = basic.value.input
  if(basic.value.input===''){
    ElMessage.warning('请输入数据')
    ElMessage.warning(t('mainIngredient.pleaseEnterData'))
  }else{
    request.post(`/BasicWarehouse/updateBasicWarehouse`, submitArr).then(res => {
      if (res.data) {
        ElMessage.success('修改成功')
        ElMessage.success(t('basicData.msg.saveSuccess'))
        emit('gaveParent', true)
      }
    }).catch((err)=>{
      ElMessage.error('系统错误')
      ElMessage.error(t('basicData.msg.ServerConnectionError'))
      router.push("/login")
    })
  }
@@ -103,7 +103,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.operateType"
@@ -115,7 +115,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>
@@ -123,8 +123,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/mm/basicData/WarehouseSearchBasicData.vue
@@ -45,11 +45,11 @@
  //表头参数
  columns:[
    {title: t('basicData.operate'), width: 110, slots: { default: 'button_slot' },fixed:"left",},
    {type: 'seq', title: '序号', width: 80 ,fixed:"left",},
    {field:'operateTypeName',title: '名称'},
    {field:'operateType',title: '别称'},
    {field:'type',title: '类型'},
    {field:'createTime',title: '创建日期'},
    {type: 'seq', title: t('basicData.Number'), width: 80 ,fixed:"left",},
    {field:'operateTypeName',title: t('mainBasicData.operateTypeName')},
    {field:'operateType',title: t('mainBasicData.operateType')},
    {field:'type',title: t('mainBasicData.type')},
    {field:'createTime',title: t('basicData.creationTime')},
  ],
@@ -57,7 +57,7 @@
  //表头按钮
  toolbarConfig: {
    buttons: [
      {'code': 'add', 'name': '新增',status: 'primary'},
      {'code': 'add', 'name': t('basicData.insert'),status: 'primary'},
    ],
    // import: false,
@@ -144,7 +144,7 @@
          ElMessage.warning(t('searchOrder.msgDeleteFail'))
        }
      }).catch((err)=>{
        ElMessage.error('系统错误')
        ElMessage.error(t('basicData.msg.ServerConnectionError'))
        router.push("/login")
      })
      break
@@ -169,7 +169,7 @@
        <el-button @click="getTableRow(row,'edit')"
                   v-if="userStore.user.permissions.indexOf('warehouseSearchBasicData.edit') > -1"
                   link type="primary" size="small">{{ $t('basicData.edit') }}</el-button>
        <el-popconfirm @confirm="getTableRow(row,'delete')" title="确定删除数据?">
        <el-popconfirm @confirm="getTableRow(row,'delete')" :title="$t('searchOrder.deleteConfirm')">
          <template #reference>
            <el-button  link type="primary" size="small">{{ $t('basicData.delete') }}</el-button>
          </template>
north-glass-erp/northglass-erp/src/views/mm/mainIngredient/CreateIngredients.vue
@@ -9,19 +9,20 @@
import  useUserInfo from "@/stores/userInfo"
import GlassType from "@/components/sd/product/GlassType.vue"
import useProductGlassTypeStore from "@/stores/sd/product/productGlassType"
import {useI18n} from "vue-i18n";
const { t } = useI18n()
const router = useRouter()
const route = useRoute()
const value = ref('')
const options = [
  {
    value: '原片',
    label: '原片'
    value: t('mainIngredient.originalFilm'),
    label: t('mainIngredient.originalFilm')
  },
  {
    value: '辅料',
    label: '辅料',
    value: t('mainIngredient.accessories'),
    label: t('mainIngredient.accessories'),
  }
]
@@ -85,7 +86,7 @@
    filterData[item.OperateType]=item.Type
    const customerName = item.Type
    if(customerName === null || customerName === undefined || customerName === ''){
      ElMessage.error('请输入'+item.OperateTypeName)
      ElMessage.error(t('mainIngredient.pleaseEnter')+item.OperateTypeName)
      isBool=false
      return
    }
@@ -100,7 +101,7 @@
  let materialStore
  if(value.value==='原片'){
  if(value.value===t('mainIngredient.originalFilm')){
     materialStore={
      id:ruleForm.value.id,
      type:value.value,
@@ -108,7 +109,7 @@
      width:BasicData.value[0].Type,
      height:BasicData.value[1].Type
    }
  }else if(value.value==='辅料'){
  }else if(value.value===t('mainIngredient.accessories')){
     materialStore={
      id:ruleForm.value.id,
      type:value.value,
@@ -121,12 +122,12 @@
    request.post("/MaterialStore/saveMaterialStore", materialStore).then((res) => {
      if(res.code==200 && res.data===true){
        resetForm()
        ElMessage.success('保存成功')
        ElMessage.success(t('basicData.msg.saveSuccess'))
      }else{
        ElMessage.warning("保存失败")
        ElMessage.warning(t('basicData.msg.saveFail'))
      }
    }).catch((err)=>{
      ElMessage.error('系统错误')
      ElMessage.error(t('basicData.msg.ServerConnectionError'))
      router.push("/login")
    })
  }
@@ -168,7 +169,7 @@
<div>
  <el-row>
  <el-col :span="4">
    <el-select v-model="value" placeholder="请选择类别" @change="getWork">
    <el-select v-model="value" :placeholder="$t('mainIngredient.pleaseSelectACategory')" @change="getWork">
      <el-option
          v-for="item in options"
          :key="item.value"
@@ -186,7 +187,7 @@
             v-for="item in BasicData" >
       <el-col :span="4.5" >
         {{item.OperateTypeName}}:
         <el-select filterable v-if="item.OperateTypeName=='膜系'" v-model="item.Type"  placeholder="请输入数据" style="width: 150px; height: 30px;" >
         <el-select filterable v-if="item.OperateTypeName==$t('mainIngredient.films')" v-model="item.Type"  :placeholder="$t('mainIngredient.pleaseEnterData')" style="width: 150px; height: 30px;" >
           <el-option
               v-for="item in titleSelectJson"
               :key="item.id"
@@ -194,7 +195,7 @@
               :value="item.basicName"
           />
         </el-select>
         <el-input v-else v-model="item.Type"  placeholder="请输入数据" style="width: 150px; height: 30px;" />
         <el-input v-else v-model="item.Type"  :placeholder="$t('mainIngredient.pleaseEnterData')" style="width: 150px; height: 30px;" />
       </el-col>
north-glass-erp/northglass-erp/src/views/mm/mainIngredient/Ingredients.vue
@@ -26,9 +26,9 @@
  <div id="main">
    <div id="div-title">
      <el-breadcrumb :separator-icon="ArrowRight">
        <el-breadcrumb-item @click="changeRouter(1)" :class="indexFlag===1?'indexTag':''" :to="{ path: '/main/ingredients/SelectIngredients' }">物料资料</el-breadcrumb-item>
        <el-breadcrumb-item @click="changeRouter(2)" :class="indexFlag===2?'indexTag':''" :to="{ path: '/main/ingredients/CreateIngredients' }">物料新增</el-breadcrumb-item>
        <el-breadcrumb-item v-show="false" :to="{ path: '/main/order/orderReport' }">报表</el-breadcrumb-item>
        <el-breadcrumb-item @click="changeRouter(1)" :class="indexFlag===1?'indexTag':''" :to="{ path: '/main/ingredients/SelectIngredients' }">{{$t('mainIngredient.materialInformation')}}</el-breadcrumb-item>
        <el-breadcrumb-item @click="changeRouter(2)" :class="indexFlag===2?'indexTag':''" :to="{ path: '/main/ingredients/CreateIngredients' }">{{$t('mainIngredient.materialAddition')}}</el-breadcrumb-item>
        <el-breadcrumb-item v-show="false" :to="{ path: '/main/order/orderReport' }">{{$t('mainIngredient.materialAddition')}}</el-breadcrumb-item>
      </el-breadcrumb>
    </div>
north-glass-erp/northglass-erp/src/views/mm/mainIngredient/SelectIngredients.vue
@@ -27,14 +27,14 @@
      })
      request.post("/MaterialStore/deleteMaterialStore",flowData.value).then((res) => {
        if(res.code==200 && res.data===true){
          ElMessage.success("删除成功")
          ElMessage.success(t('basicData.msg.deleteSuccess'))
          router.push({path:'/main/ingredients/SelectIngredients',query:{random:Math.random()}})
        }else{
          ElMessage.warning("删除失败")
          ElMessage.warning(t('basicData.msg.deleteFail'))
          router.push("/login")
        }
      }).catch((err)=>{
        ElMessage.error('系统错误')
        ElMessage.error(t('basicData.msg.ServerConnectionError'))
        router.push("/login")
      })
      return
@@ -45,12 +45,12 @@
const value = ref('')
const options = [
  {
    value: '原片',
    label: '原片'
    value: t('mainIngredient.originalFilm'),
    label: t('mainIngredient.originalFilm')
  },
  {
    value: '辅料',
    label: '辅料',
    value: t('mainIngredient.accessories'),
    label: t('mainIngredient.accessories'),
  }
]
@@ -87,14 +87,14 @@
let arr = [
  {type:'expand',fixed:'left',slots: { content:'content' },width: '60'},
  {title: '操作', width: '110', slots: { default: 'button_slot' },fixed:'left'},
  { type: 'seq',fixed:'left', title: '自序', width: '80' },
  {field: 'id', width: '150',title: '物料编码', sortable: true,showOverflow:'ellipsis' ,filters:[{ data: '' }],slots: { filter: 'num1_filter' },filterMethod:filterChanged}
  {title: t('basicData.operate'), width: '110', slots: { default: 'button_slot' },fixed:'left'},
  { type: 'seq',fixed:'left', title: t('basicData.Number'), width: '80' },
  {field: 'id', width: '150',title: t('mainIngredient.materialCode'), sortable: true,showOverflow:'ellipsis' ,filters:[{ data: '' }],slots: { filter: 'num1_filter' },filterMethod:filterChanged}
]
//第一次加载默认
value.value='原片'
filterData.value.type='原片'
value.value=t('mainIngredient.originalFilm')
filterData.value.type=t('mainIngredient.originalFilm')
request.get(`/BasicWarehouse/BasicWarehouseType/${value.value}`).then((res) => {
  if(res.code==200){
    gridOptions.columns.splice(0,gridOptions.columns.length)
@@ -236,7 +236,7 @@
  align: 'center',//文字居中
  stripe:true,//斑马纹
  rowConfig: {isCurrent: true, isHover: true,height: 30},//鼠标移动或选择高亮
  id: 'CustomerList',
  id: 'SelectIngredients',
  showFooter: true,//显示脚
  printConfig: {},
  importConfig: {},
@@ -276,7 +276,7 @@
    return[
      columns.map((column, columnIndex) => {
        if (columnIndex === 0) {
          return '合计:'
          return t('basicData.total')
        }
        return ''
@@ -297,7 +297,7 @@
    <div>
      <el-row>
        <el-col :span="4">
          <el-select v-model="value" placeholder="请选择类别" @change="getWork">
          <el-select v-model="value" :placeholder="$t('mainIngredient.pleaseSelectACategory')" @change="getWork">
            <el-option
                v-for="item in options"
                :key="item.value"
@@ -332,8 +332,8 @@
      <template #button_slot="{ row }">
        <el-button @click="getTableRow(row,'edit')"
                   v-if="userStore.user.permissions.indexOf('SelectIngredients.edit') > -1"
                   link type="primary" size="small">编辑</el-button>
        <el-popconfirm @confirm="getTableRow(row,'delete')" title="确定删除?">
                   link type="primary" size="small">{{ $t('basicData.edit') }}</el-button>
        <el-popconfirm @confirm="getTableRow(row,'delete')" :title="$t('searchOrder.deleteConfirm')">
          <template #reference>
            <el-button  link type="primary" size="small">{{ $t('basicData.delete') }}</el-button>
          </template>
north-glass-erp/northglass-erp/src/views/mm/mainIngredientStock/CreateOutBound.vue
@@ -85,25 +85,25 @@
let materialStore= ref([])
let arr = [
  {type:'expand',fixed:"left",slots: { content:'content' },width: '60'},
  {field: 'select',type: 'checkbox',fixed:"left", title: '选择', width: '80' },
  { type: 'seq',fixed:"left", title: '自序', width: '80' },
  {field: 'inventoryOrganization', width:'150', title: '库存组织', sortable: true,filters:[{ data: '' }],slots: { filter: 'num1_filter' },filterMethod:filterChanged },
  {field: 'materialCode', width: '150',title: '物料编码', sortable: true,showOverflow:"ellipsis" ,filters:[{ data: '' }],slots: { filter: 'num1_filter' },filterMethod:filterChanged},
  {field: 'producer', width: '100',title: '产地', sortable: true,filters:[{ data: '' }],slots: { filter: 'num1_filter' },filterMethod:filterChanged},
  {field: 'projectNo', width: '100',title: '工程号', sortable: true,filters:[{ data: '' }],slots: { filter: 'num1_filter' },filterMethod:filterChanged},
  {field: 'inventoryQuantity',width: '100', title: '库存数量', sortable: true,filters:[{ data: '' }],slots: { filter: 'num1_filter' },filterMethod:filterChanged},
  {field: 'availableQuantity', width: '100',title: '可用库存', sortable: true,filters:[{ data: '' }],slots: { filter: 'num1_filter' },filterMethod:filterChanged},
  {field: 'outboundQuantity', width:'150', title: '出库数量', sortable: true,editRender: { name: 'input', attrs: { placeholder: '' } }},
  {field: 'singlePieceArea', width: '100',title: '单片面积', sortable: true,filters:[{ data: '' }],slots: { filter: 'num1_filter' },filterMethod:filterChanged},
  {field: 'dateOfManufacture',width: '100', title: '生产日期', sortable: true},
  {field: 'inventoryArea',width: '100', title: '库存区域', sortable: true,filters:[{ data: '' }],slots: { filter: 'num1_filter' },filterMethod:filterChanged},
  {field: 'remarks',width: '80', title: '备注', sortable: true,editRender: { name: 'input', attrs: { placeholder: '' } }},
  //{type:'expand',fixed:"left",slots: { content:'content' },width: '60'},
  {field: 'select',type: 'checkbox',fixed:"left", title: t('basicData.check'), width: '80' },
  { type: 'seq',fixed:"left", title: t('basicData.Number'), width: '80' },
  {field: 'inventoryOrganization', width:'150', title: t('mainIngredientStock.inventoryOrganization'), sortable: true,filters:[{ data: '' }],slots: { filter: 'num1_filter' },filterMethod:filterChanged },
  {field: 'materialCode', width: '150',title: t('mainIngredient.materialCode'), sortable: true,showOverflow:"ellipsis" ,filters:[{ data: '' }],slots: { filter: 'num1_filter' },filterMethod:filterChanged},
  {field: 'producer', width: '100',title: t('mainIngredientStock.producer'), sortable: true,filters:[{ data: '' }],slots: { filter: 'num1_filter' },filterMethod:filterChanged},
  {field: 'projectNo', width: '100',title: t('mainIngredientStock.projectNo'), sortable: true,filters:[{ data: '' }],slots: { filter: 'num1_filter' },filterMethod:filterChanged},
  {field: 'inventoryQuantity',width: '100', title: t('productStock.inventoryQuantity'), sortable: true,filters:[{ data: '' }],slots: { filter: 'num1_filter' },filterMethod:filterChanged},
  {field: 'availableQuantity', width: '100',title: t('productStock.availableQuantity'), sortable: true,filters:[{ data: '' }],slots: { filter: 'num1_filter' },filterMethod:filterChanged},
  {field: 'outboundQuantity', width:'150', title: t('mainIngredientStock.outboundQuantity'), sortable: true,editRender: { name: 'input', attrs: { placeholder: '' } }},
  {field: 'singlePieceArea', width: '100',title: t('productStock.singlePieceArea'), sortable: true,filters:[{ data: '' }],slots: { filter: 'num1_filter' },filterMethod:filterChanged},
  {field: 'dateOfManufacture',width: '100', title: t('mainIngredientStock.dateOfManufacture'), sortable: true},
  {field: 'inventoryArea',width: '100', title: t('productStock.inventoryArea'), sortable: true,filters:[{ data: '' }],slots: { filter: 'num1_filter' },filterMethod:filterChanged},
  {field: 'remarks',width: '80', title: t('basicData.remarks'), sortable: true,editRender: { name: 'input', attrs: { placeholder: '' } }},
]
//页面第一次加载
request.get(`/BasicWarehouse/BasicWarehouseTypes/材料出库类型`).then((res) => {
request.get(`/BasicWarehouse/BasicWarehouseTypes/`+t('mainIngredientStock.materialOutboundType')).then((res) => {
  if(res.code==200){
@@ -121,7 +121,7 @@
//列查询
const getWork = () => {
  request.get(`/BasicWarehouse/BasicWarehouseType/原片|辅料`).then((res) => {
  request.get(`/BasicWarehouse/BasicWarehouseType/`+t('mainIngredient.originalFilm')+'|'+t('mainIngredient.accessories')).then((res) => {
    if(res.code==200){
      gridOptions.columns=[]
      BasicData.value = res.data
@@ -157,7 +157,7 @@
  const type = route.query.type
  if (typeof id !== 'undefined' && id !== null && id !== '' && id !== '\n' && id !== '\r'){
    if(type==='库存'){
    if(type===t('mainIngredientStock.inventory')){
      filterData.value.stockId=id
      number.value=id
      request.post("/MaterialInventory/getSelectMaterialInventory/1/100",filterData.value).then((res) => {
@@ -288,22 +288,22 @@
          //表头数据校验
          const outboundType = titleUploadData.value.outboundType
          if(outboundType === null || outboundType === undefined || outboundType === ''){
            ElMessage.error("请选择出库类型")
            ElMessage.error(t('mainIngredientStock.pleaseOutboundType'))
            return
          }
          const materialRequisitionPersonnel = titleUploadData.value.materialRequisitionPersonnel
          if(materialRequisitionPersonnel === null || materialRequisitionPersonnel === undefined || materialRequisitionPersonnel === ''){
            ElMessage.error("请输入领料员")
            ElMessage.error(t('mainIngredientStock.pleaseMaterialRequisitionPersonnel'))
            return
          }
          const materialRequisitionTeam = titleUploadData.value.materialRequisitionTeam
          if(materialRequisitionTeam === null || materialRequisitionTeam === undefined || materialRequisitionTeam === ''){
            ElMessage.error("请输入领料班组")
            ElMessage.error(t('mainIngredientStock.pleaseMaterialRequisitionTeam'))
            return
          }
          const orderId = titleUploadData.value.orderId
          if(orderId === null || orderId === undefined || orderId === ''){
            ElMessage.error("请输入销售单号")
            ElMessage.error(t('mainIngredientStock.pleaseOrderId'))
            return
          }
@@ -318,7 +318,7 @@
          })
          request.post("/MaterialInventory/saveMaterialOutbound", flowData.value).then((res) => {
            if(res.code==200){
              ElMessage.success('保存成功')
              ElMessage.success(t('basicData.msg.saveSuccess'))
              router.push({path: '/main/ingredientsStock/MaterialOutbound', query:{random:Math.random()}})
            }else{
              ElMessage.warning(res.msg)
@@ -339,11 +339,11 @@
              ElMessage.success(t('basicData.msg.ReviewSuccess'))
              router.push({path: '/main/ingredientsStock/MaterialOutbound', query:{random:Math.random()}})
            } else {
              ElMessage.warning("审核失败")
              ElMessage.warning(t('basicData.msg.reviewFail'))
              router.push("/login")
            }
          }).catch((err)=>{
            ElMessage.error('系统错误')
            ElMessage.error(t('basicData.msg.ServerConnectionError'))
            router.push("/login")
          })
          break
@@ -359,11 +359,11 @@
              ElMessage.success(t('basicData.msg.cancelReviewSuccess'))
              router.push({path: '/main/ingredientsStock/MaterialOutbound', query:{random:Math.random()}})
            } else {
              ElMessage.warning("反审失败")
              ElMessage.warning(t('basicData.msg.cancelReviewFail'))
              router.push("/login")
            }
          }).catch((err)=>{
            ElMessage.error('系统错误')
            ElMessage.error(t('basicData.msg.ServerConnectionError'))
            router.push("/login")
          })
          break
@@ -418,7 +418,7 @@
  align: 'center',//文字居中
  stripe:true,//斑马纹
  rowConfig: {isCurrent: true, isHover: true,height: 30},//鼠标移动或选择高亮
  id: 'CustomerList',
  id: 'CreateOutBound',
  showFooter: true,//显示脚
  printConfig: {},
  importConfig: {},
@@ -481,9 +481,9 @@
  outboundQuantity: [{
    validator (e) {
      if (e.row.outboundQuantity > e.row.availableQuantity) {
        return new Error("出库数量不能大于可用数量")
        return new Error(t('mainIngredientStock.theOutboundQuantityCannotBeGreaterThanTheAvailableQuantity'))
      }else if (e.row.outboundQuantity ==="") {
        return new Error("出库数量不能为空或者是等于0")
        return new Error(t('mainIngredientStock.theOutboundQuantityCannotBeEmptyOrEqualTo0'))
      }
      const regex = /^[1-9]\d*$/g
      if ( !regex.test(e.row.outboundQuantity) ) {
@@ -504,16 +504,16 @@
  <div class="main-div">
  <div class="order-primary" style="background-color: white">
    <el-row>
      <el-col  :span="2"><el-text>领料日期:</el-text></el-col>
      <el-col  :span="2"><el-text>{{$t('mainIngredientStock.materialRequisitionDate')}}:</el-text></el-col>
      <el-col  :span="3"><el-input  v-model="titleUploadData.materialRequisitionDate" :readonly="true" ></el-input></el-col>
      <el-col  :span="2"><el-text>领料员:</el-text></el-col>
      <el-col  :span="2"><el-text>{{$t('mainIngredientStock.materialRequisitionPersonnel')}}:</el-text></el-col>
      <el-col  :span="3"><el-input v-model="titleUploadData.materialRequisitionPersonnel" /></el-col>
      <el-col  :span="2"><el-text>领料班组:</el-text></el-col>
      <el-col  :span="2"><el-text>{{$t('mainIngredientStock.materialRequisitionTeam')}}:</el-text></el-col>
      <el-col  :span="3"><el-input v-model="titleUploadData.materialRequisitionTeam" /></el-col>
    </el-row>
    <el-row>
      <el-col  :span="2"><el-text>出库类型:</el-text></el-col>
      <el-col  :span="2"><el-text>{{$t('mainIngredientStock.outboundType')}}:</el-text></el-col>
      <el-col  :span="3">
        <el-select v-model="titleUploadData.outboundType"  clearable placeholder=""  >
          <el-option
@@ -524,9 +524,9 @@
          />
        </el-select>
      </el-col>
      <el-col  :span="2"><el-text>销售单号:</el-text></el-col>
      <el-col  :span="2"><el-text>{{$t('order.orderId')}}:</el-text></el-col>
      <el-col  :span="3"><el-input v-model="titleUploadData.orderId" /></el-col>
      <el-col  :span="2"><el-text>仓管员:</el-text></el-col>
      <el-col  :span="2"><el-text>{{$t('mainIngredientStock.warehouseManager')}}:</el-text></el-col>
      <el-col  :span="3"><el-input v-model="titleUploadData.warehouseManager" :readonly="true" /></el-col>
    </el-row>
@@ -557,8 +557,8 @@
      <!--左边固定显示的插槽-->
      <template #button_slot="{ row }">
        <el-button @click="getTableRow(row,'edit')" link type="primary" size="small">编辑</el-button>
        <el-button @click="getTableRow(row,'delete')" link type="primary" size="small">删除</el-button>
        <el-button @click="getTableRow(row,'edit')" link type="primary" size="small">{{$t('basicData.edit')}}</el-button>
        <el-button @click="getTableRow(row,'delete')" link type="primary" size="small">{{$t('basicData.delete')}}</el-button>
      </template>
      <template #num1_filter="{ column, $panel }">
north-glass-erp/northglass-erp/src/views/mm/mainIngredientStock/IngredientsStock.vue
@@ -26,12 +26,12 @@
  <div id="main">
    <div id="div-title">
      <el-breadcrumb :separator-icon="ArrowRight">
        <el-breadcrumb-item @click="changeRouter(1)" :class="indexFlag===1?'indexTag':''" :to="{ path: '/main/ingredientsStock/SelectIngredientsStock' }">物料库存</el-breadcrumb-item>
        <el-breadcrumb-item @click="changeRouter(2)" :class="indexFlag===2?'indexTag':''" :to="{ path: '/main/ingredientsStock/MaterialOutbound' }">物料出库</el-breadcrumb-item>
        <el-breadcrumb-item @click="changeRouter(1)" :class="indexFlag===1?'indexTag':''" :to="{ path: '/main/ingredientsStock/SelectIngredientsStock' }">{{$t('mainIngredientStock.selectIngredientsStock')}}</el-breadcrumb-item>
        <el-breadcrumb-item @click="changeRouter(2)" :class="indexFlag===2?'indexTag':''" :to="{ path: '/main/ingredientsStock/MaterialOutbound' }">{{$t('mainIngredientStock.materialOutbound')}}</el-breadcrumb-item>
<!--        <el-breadcrumb-item @click="changeRouter(3)" :class="indexFlag===3?'indexTag':''" :to="{ path: '/main/ingredientsStock/OriginalMonthlySettlement' }">原片月结</el-breadcrumb-item>
        <el-breadcrumb-item @click="changeRouter(4)" :class="indexFlag===4?'indexTag':''" :to="{ path: '/main/ingredientsStock/AccessoriesMonthlySettlement' }">辅料月结</el-breadcrumb-item>-->
        <el-breadcrumb-item @click="changeRouter(5)" :class="indexFlag===5?'indexTag':''" :to="{ path: '/main/ingredientsStock/ReturnToStorage' }">返库</el-breadcrumb-item>
        <el-breadcrumb-item v-show="false" :to="{ path: '/main/order/orderReport' }">报表</el-breadcrumb-item>
        <el-breadcrumb-item @click="changeRouter(5)" :class="indexFlag===5?'indexTag':''" :to="{ path: '/main/ingredientsStock/ReturnToStorage' }">{{$t('mainIngredientStock.returnToStorage')}}</el-breadcrumb-item>
        <el-breadcrumb-item v-show="false" :to="{ path: '/main/order/orderReport' }">{{$t('mainIngredientStock.returnToStorage')}}</el-breadcrumb-item>
      </el-breadcrumb>
    </div>
north-glass-erp/northglass-erp/src/views/mm/mainIngredientStock/MaterialOutbound.vue
@@ -33,11 +33,11 @@
          ElMessage.success(t('searchOrder.msgDeleteSuccess'))
          router.push({path:'/main/ingredientsStock/MaterialOutbound', query:{random:Math.random()}})
        }else{
          ElMessage.warning("删除失败")
          ElMessage.warning(t('basicData.msg.deleteSuccess'))
          router.push("/login")
        }
      }).catch((err)=>{
        ElMessage.error('系统错误')
        ElMessage.error(t('basicData.msg.ServerConnectionError'))
        router.push("/login")
      })
@@ -173,7 +173,7 @@
  align: 'center',//文字居中
  stripe:true,//斑马纹
  rowConfig: {isCurrent: true, isHover: true,height: 30},//鼠标移动或选择高亮
  id: 'CustomerList',
  id: 'MaterialOutbound',
  showFooter: true,//显示脚
  printConfig: {},
  importConfig: {},
@@ -197,19 +197,19 @@
  },//表头参数
  columns:[
    {type:'expand',fixed:"left",slots: { content:'content' },width: '60'},
    {title: '操作', width: '110', slots: { default: 'button_slot' },fixed:"left"},
    { type: 'seq',fixed:"left", title: '自序', width: '80' },
    {field: 'reviewedState',title: '审核', width: 50, slots: { default: 'state' },},
    {field: 'materialOutboundId', width:'150', title: '出库单号', sortable: true,filters:[{ data: '' }],slots: { filter: 'num1_filter' }},
    {field: 'materialRequisitionPersonnel', width: '150',title: '领料员', sortable: true,showOverflow:"ellipsis" ,filters:[{ data: '' }],slots: { filter: 'num1_filter' }},
    {field: 'materialRequisitionTeam', width: '120',title: '领料班组', sortable: true,filters:[{ data: '' }],slots: { filter: 'num1_filter' }},
    {field: 'orderId', width:'150', title: '销售单号', sortable: true,filters:[{ data: '' }],slots: { filter: 'num1_filter' }},
    {field: 'outboundType', width: '100',title: '出库类型', sortable: true,filters:[{ data: '' }],slots: { filter: 'num1_filter' }},
    {field: 'warehouseManager',width: '100', title: '仓管员', sortable: true,showOverflow:"ellipsis",filters:[{ data: '' }],slots: { filter: 'num1_filter' }},
    {field: 'materialRequisitionDate', width: '80',title: '领料日期', sortable: true},
    {field: 'reviewed',width: '100', title: '审核员', sortable: true,filters:[{ data: '' }],slots: { filter: 'num1_filter' }},
    {field: 'reviewedTime', width: '100',title: '审核时间', sortable: true},
    {field: 'createTime',width: '100', title: '创建时间', sortable: true},
    {title:  t('basicData.operate'), width: '110', slots: { default: 'button_slot' },fixed:"left"},
    { type: 'seq',fixed:"left", title:  t('basicData.Number'), width: '80' },
    {field: 'reviewedState',title: t('basicData.review'), width: 50, slots: { default: 'state' },},
    {field: 'materialOutboundId', width:'150', title: t('mainIngredientStock.materialOutboundId'), sortable: true,filters:[{ data: '' }],slots: { filter: 'num1_filter' }},
    {field: 'materialRequisitionPersonnel', width: '150',title: t('mainIngredientStock.materialRequisitionPersonnel'), sortable: true,showOverflow:"ellipsis" ,filters:[{ data: '' }],slots: { filter: 'num1_filter' }},
    {field: 'materialRequisitionTeam', width: '120',title: t('mainIngredientStock.materialRequisitionTeam'), sortable: true,filters:[{ data: '' }],slots: { filter: 'num1_filter' }},
    {field: 'orderId', width:'150', title: t('order.orderId'), sortable: true,filters:[{ data: '' }],slots: { filter: 'num1_filter' }},
    {field: 'outboundType', width: '100',title: t('mainIngredientStock.outboundType'), sortable: true,filters:[{ data: '' }],slots: { filter: 'num1_filter' }},
    {field: 'warehouseManager',width: '100', title: t('mainIngredientStock.warehouseManager'), sortable: true,showOverflow:"ellipsis",filters:[{ data: '' }],slots: { filter: 'num1_filter' }},
    {field: 'materialRequisitionDate', width: '80',title: t('mainIngredientStock.materialRequisitionDate'), sortable: true},
    {field: 'reviewed',width: '100', title: t('mainIngredientStock.reviewed'), sortable: true,filters:[{ data: '' }],slots: { filter: 'num1_filter' }},
    {field: 'reviewedTime', width: '100',title: t('mainIngredientStock.reviewedTime'), sortable: true},
    {field: 'createTime',width: '100', title: t('basicData.creationTime'), sortable: true},
  ],//表头按钮
  toolbarConfig: {
@@ -223,7 +223,7 @@
    return[
      columns.map((column, columnIndex) => {
        if (columnIndex === 0) {
          return '合计:'
          return t('basicData.total')
        }
        // if (props.tableProp.footList.includes(column.field)) {
        //   return sumNum(data, column.field)
@@ -248,13 +248,13 @@
    <el-date-picker
        v-model="selectDate"
        type="daterange"
        start-placeholder="开始时间"
        end-placeholder="结束时间"
        :start-placeholder="$t('basicData.startDate')"
        :end-placeholder="$t('basicData.endDate')"
        format="YYYY-MM-DD"
        value-format="YYYY-MM-DD"
    />
    <el-button @click="changeDate" style="margin-top: -5px"  id="searchButton" type="primary" :icon="Search">查询</el-button>
    <el-button @click="changeDate" style="margin-top: -5px"  id="searchButton" type="primary" :icon="Search">{{$t('basicData.search')}}</el-button>
    <vxe-grid
        max-height="100%"
@@ -279,7 +279,7 @@
      <template #button_slot="{ row }">
        <el-button @click="getTableRow(row,'edit')"
                   v-if="userStore.user.permissions.indexOf('MaterialOutbound.edit') > -1"
                   link type="primary" size="small">编辑</el-button>
                   link type="primary" size="small">{{$t('basicData.edit')}}</el-button>
<!--        <el-button @click="getTableRow(row,'delete')" link type="primary" size="small">删除</el-button>-->
      </template>
north-glass-erp/northglass-erp/src/views/mm/mainIngredientStock/ReturnToStorage.vue
@@ -177,7 +177,7 @@
  align: 'center',//文字居中
  stripe:true,//斑马纹
  rowConfig: {isCurrent: true, isHover: true,height: 30},//鼠标移动或选择高亮
  id: 'CustomerList',
  id: 'ReturnToStorage',
  showFooter: true,//显示脚
  printConfig: {},
  importConfig: {},
@@ -202,23 +202,23 @@
  columns:[
    {type:'expand',fixed:"left",slots: { content:'content' },width: '60'},
    {title: '操作', width: '110', slots: { default: 'button_slot' },fixed:"left"},
    { type: 'seq',fixed:"left", title: '自序', width: '80' },
    {field: 'reviewedState',title: '审核', width: 50, slots: { default: 'state' },},
    {field: 'returningId', width:'150', title: '返库单号', sortable: true,filters:[{ data: '' }],slots: { filter: 'num1_filter' }},
    {field: 'materialRequisitionPersonnel', width: '150',title: '领料员/供应商', sortable: true,showOverflow:"ellipsis" ,filters:[{ data: '' }],slots: { filter: 'num1_filter' }},
    {field: 'materialRequisitionTeam', width: '120',title: '领料班组/供应商', sortable: true,filters:[{ data: '' }],slots: { filter: 'num1_filter' }},
    {field: 'orderId', width:'150', title: '销售单号', sortable: true,filters:[{ data: '' }],slots: { filter: 'num1_filter' }},
    {field: 'project', width:'150', title: '项目名称', sortable: true,filters:[{ data: '' }],slots: { filter: 'num1_filter' }},
    {field: 'batch', width:'150', title: '批次', sortable: true,filters:[{ data: '' }],slots: { filter: 'num1_filter' }},
    {field: 'returningType', width: '100',title: '返库类型', sortable: true,filters:[{ data: '' }],slots: { filter: 'num1_filter' }},
    {field: 'warehouseManager',width: '100', title: '仓管员', sortable: true,showOverflow:"ellipsis",filters:[{ data: '' }],slots: { filter: 'num1_filter' }},
    {field: 'reviewed',width: '100', title: '审核员', sortable: true,filters:[{ data: '' }],slots: { filter: 'num1_filter' }},
    {field: 'reviewedTime', width: '100',title: '审核时间', sortable: true},
    {field: 'createTime',width: '100', title: '制单日期', sortable: true},
    { type: 'seq',fixed:"left", title: t('basicData.Number'), width: '80' },
    {field: 'reviewedState',title: t('basicData.review'), width: 50, slots: { default: 'state' },},
    {field: 'returningId', width:'150', title: t('mainIngredientStock.returningId'), sortable: true,filters:[{ data: '' }],slots: { filter: 'num1_filter' }},
    {field: 'materialRequisitionPersonnel', width: '150',title:  t('mainIngredientStock.materialRequisitionPersonnel'), sortable: true,showOverflow:"ellipsis" ,filters:[{ data: '' }],slots: { filter: 'num1_filter' }},
    {field: 'materialRequisitionTeam', width: '120',title:  t('mainIngredientStock.materialRequisitionTeam'), sortable: true,filters:[{ data: '' }],slots: { filter: 'num1_filter' }},
    {field: 'orderId', width:'150', title: t('order.orderId'), sortable: true,filters:[{ data: '' }],slots: { filter: 'num1_filter' }},
    {field: 'project', width:'150', title: t('order.project'), sortable: true,filters:[{ data: '' }],slots: { filter: 'num1_filter' }},
    {field: 'batch', width:'150', title: t('order.batch'), sortable: true,filters:[{ data: '' }],slots: { filter: 'num1_filter' }},
    {field: 'returningType', width: '100',title: t('mainIngredientStock.returningType'), sortable: true,filters:[{ data: '' }],slots: { filter: 'num1_filter' }},
    {field: 'warehouseManager',width: '100', title: t('mainIngredientStock.warehouseManager'), sortable: true,showOverflow:"ellipsis",filters:[{ data: '' }],slots: { filter: 'num1_filter' }},
    {field: 'reviewed',width: '100', title:t('mainIngredientStock.reviewed'), sortable: true,filters:[{ data: '' }],slots: { filter: 'num1_filter' }},
    {field: 'reviewedTime', width: '100',title: t('mainIngredientStock.reviewedTime'), sortable: true},
    {field: 'createTime',width: '100', title: t('basicData.creationTime'), sortable: true},
  ],//表头按钮
  toolbarConfig: {
    buttons: [
      {'code': 'add', 'name': '返库新增',status: 'primary'},
      {'code': 'add', 'name': t('mainIngredientStock.returningAdd'),status: 'primary'},
    ],
    /*import: false,
    export: true,
@@ -230,7 +230,7 @@
    return[
      columns.map((column, columnIndex) => {
        if (columnIndex === 0) {
          return '合计:'
          return t('basicData.total')
        }
        // if (props.tableProp.footList.includes(column.field)) {
        //   return sumNum(data, column.field)
@@ -251,13 +251,13 @@
    <el-date-picker
        v-model="selectDate"
        type="daterange"
        start-placeholder="开始时间"
        end-placeholder="结束时间"
        :start-placeholder="$t('basicData.startDate')"
        :end-placeholder="$t('basicData.endDate')"
        format="YYYY-MM-DD"
        value-format="YYYY-MM-DD"
    />
    <el-button @click="changeDate" style="margin-top: -5px"  id="searchButton" type="primary" :icon="Search">查询</el-button>
    <el-button @click="changeDate" style="margin-top: -5px"  id="searchButton" type="primary" :icon="Search">{{$t('basicData.search')}}</el-button>
    <vxe-grid
        max-height="100%"
@@ -282,7 +282,7 @@
      <template #button_slot="{ row }">
        <el-button @click="getTableRow(row,'edit')"
                   v-if="userStore.user.permissions.indexOf('ReturnToStorage.edit') > -1"
                   link type="primary" size="small">编辑</el-button>
                   link type="primary" size="small">{{$t('basicData.edit')}}</el-button>
<!--        <el-button @click="getTableRow(row,'delete')" link type="primary" size="small">删除</el-button>-->
      </template>
north-glass-erp/northglass-erp/src/views/mm/mainIngredientStock/ReturnToStorageCreate.vue
@@ -70,35 +70,35 @@
const value = ref('')
const options = [
  {
    value: '原片',
    label: '原片'
    value: t('mainIngredient.originalFilm'),
    label: t('mainIngredient.originalFilm')
  },
  {
    value: '辅料',
    label: '辅料',
    value: t('mainIngredient.accessories'),
    label: t('mainIngredient.accessories'),
  }
]
let arr = [
  {field: 'select',type: 'checkbox',fixed:"left", title: '选择', width: '80' },
  { type: 'seq',fixed:"left", title: '自序', width: '80' },
  {field: 'returnQuantity', width:'150', title: '返库数量', sortable: true,editRender: { name: 'input', attrs: { placeholder: '' } }},
  {field: 'dateOfManufacture', width:'150', title: '生产日期', sortable: true,editRender: {name: 'input', attrs: {placeholder: '', type: 'date'}},},
  {field: 'select',type: 'checkbox',fixed:"left", title: t('basicData.check'), width: '80' },
  { type: 'seq',fixed:"left", title: t('basicData.Number'), width: '80' },
  {field: 'returnQuantity', width:'150', title: t('mainIngredientStock.returnQuantity'), sortable: true,editRender: { name: 'input', attrs: { placeholder: '' } }},
  {field: 'dateOfManufacture', width:'150', title: t('mainIngredientStock.dateOfManufacture'), sortable: true,editRender: {name: 'input', attrs: {placeholder: '', type: 'date'}},},
  {field: 'inventoryOrganization', width:'150', title: '库存组织', sortable: true,folding: true,slots: { edit: 'inventoryOrganization'},editRender: { name: '$select', attrs: { placeholder: '' } }},
  {field: 'producer', width:'150', title: '产地', sortable: true,editRender: { name: 'input', attrs: { placeholder: '' } }},
  {field: 'qualityGuaranteePeriod', width:'150', title: '保质期', sortable: true,editRender: { name: 'input', attrs: { placeholder: '' } }},
  {field: 'inventoryArea', width:'150', title: '库存区域',sortable: true,editRender: { name: 'input', attrs: { placeholder: '' } }},
  {field: 'inventoryOrganization', width:'150', title: t('mainIngredientStock.inventoryOrganization'), sortable: true,folding: true,slots: { edit: 'inventoryOrganization'},editRender: { name: '$select', attrs: { placeholder: '' } }},
  {field: 'producer', width:'150', title: t('mainIngredientStock.producer'), sortable: true,editRender: { name: 'input', attrs: { placeholder: '' } }},
  {field: 'qualityGuaranteePeriod', width:'150', title: t('mainIngredientStock.qualityGuaranteePeriod'), sortable: true,editRender: { name: 'input', attrs: { placeholder: '' } }},
  {field: 'inventoryArea', width:'150', title: t('productStock.inventoryArea'),sortable: true,editRender: { name: 'input', attrs: { placeholder: '' } }},
  {field: 'remarks',width: '80', title: '备注', sortable: true,editRender: { name: 'input', attrs: { placeholder: '' } }},
  {field: 'id', width: '150',title: '物料编码', sortable: true,showOverflow:'ellipsis' ,filters:[{ data: '' }],slots: { filter: 'num1_filter' },filterMethod:filterChanged}
  {field: 'remarks',width: '80', title: t('basicData.remarks'), sortable: true,editRender: { name: 'input', attrs: { placeholder: '' } }},
  {field: 'id', width: '150',title: t('mainIngredient.materialCode'), sortable: true,showOverflow:'ellipsis' ,filters:[{ data: '' }],slots: { filter: 'num1_filter' },filterMethod:filterChanged}
]
//页面第一次加载
request.get(`/BasicWarehouse/BasicWarehouseTypes/库存组织|材料返库类型`).then((res) => {
request.get(`/BasicWarehouse/BasicWarehouseTypes/`+t('mainIngredientStock.inventoryOrganization')+'|'+t('mainIngredientStock.materialReturnType')).then((res) => {
  if(res.code==200){
    titleSelectJson.value=deepClone(res.data)
@@ -132,7 +132,7 @@
      if(res.code==200){
        titleUploadData.value=deepClone(res.data.returningWarehouse)
        //根据审核状态显示审核按钮或者是反审按钮
        value.value='原片|辅料'
        value.value=t('mainIngredient.originalFilm')+'|'+t('mainIngredient.accessories')
        getStoreWork()
        if(titleUploadData.value.reviewedState!==0){
          gridOptions.toolbarConfig.buttons[1].disabled = true
@@ -179,7 +179,7 @@
        //显示复选框
        xGrid.value.showColumn("select")
        value.value='原片'
        value.value=t('mainIngredient.originalFilm')
        getStoreWork()
        getStoreWorks()
@@ -198,7 +198,7 @@
//库存组织
const getInventoryOrganization=()=>{
  //页面第一次加载
  request.get(`/BasicWarehouse/BasicWarehouseTypes/库存组织|材料返库类型`).then((res) => {
  request.get(`/BasicWarehouse/BasicWarehouseTypes//`+t('mainIngredientStock.inventoryOrganization')+'|'+t('mainIngredientStock.materialReturnType')).then((res) => {
    if(res.code==200){
      titleSelectJson.value=deepClone(res.data)
@@ -260,11 +260,11 @@
        materialStore.value[i].json=(JSON.parse(res.data.data[i].json))
      }
      if(value.value==='原片'){
      if(value.value===t('mainIngredient.originalFilm')){
        materialStore.value.forEach(item => {
          item['inventoryOrganization'] = titleSelectJson.value["inventoryOrganization"][0].operateTypeName
        })
      }else if(value.value==='辅料'){
      }else if(value.value===t('mainIngredient.accessories')){
        materialStore.value.forEach(item => {
          item['inventoryOrganization'] = titleSelectJson.value["inventoryOrganization"][1].operateTypeName
        })
@@ -308,27 +308,27 @@
          }
          const materialRequisitionPersonnel = titleUploadData.value.materialRequisitionPersonnel
          if(materialRequisitionPersonnel === null || materialRequisitionPersonnel === undefined || materialRequisitionPersonnel === ''){
            ElMessage.error("请输入领料员")
            ElMessage.error(t('mainIngredientStock.materialRequisitionPersonnel'))
            return
          }
          const materialRequisitionTeam = titleUploadData.value.materialRequisitionTeam
          if(materialRequisitionTeam === null || materialRequisitionTeam === undefined || materialRequisitionTeam === ''){
            ElMessage.error("请输入领料班组")
            ElMessage.error(t('mainIngredientStock.materialRequisitionTeam'))
            return
          }
          const orderId = titleUploadData.value.orderId
          if(orderId === null || orderId === undefined || orderId === ''){
            ElMessage.error("请输入销售单号")
            ElMessage.error(t('order.orderId'))
            return
          }
          const project = titleUploadData.value.project
          if(project === null || project === undefined || project === ''){
            ElMessage.error("请输入项目名称")
            ElMessage.error(t('order.project'))
            return
          }
          const batch = titleUploadData.value.batch
          if(batch === null || batch === undefined || batch === ''){
            ElMessage.error("请输入批次")
            ElMessage.error(t('order.batch'))
            return
          }
@@ -343,14 +343,14 @@
          })
          request.post("/MaterialInventory/saveReturningWarehouse", flowData.value).then((res) => {
            if(res.code==200 && res.data===true){
              ElMessage.success('保存成功')
              ElMessage.success(t('basicData.msg.saveSuccess'))
              router.push({path: '/main/ingredientsStock/ReturnToStorage', query:{random:Math.random()}})
            }else{
              ElMessage.warning("保存失败")
              ElMessage.warning(t('basicData.msg.saveFail'))
              router.push("/login")
            }
          }).catch((err)=>{
            ElMessage.error('系统错误')
            ElMessage.error(t('basicData.msg.ServerConnectionError'))
            router.push("/login")
          })
          break
@@ -367,11 +367,11 @@
              ElMessage.success(t('basicData.msg.ReviewSuccess'))
              router.push({path: '/main/ingredientsStock/ReturnToStorage', query:{random:Math.random()}})
            } else {
              ElMessage.warning("审核失败")
              ElMessage.warning(t('basicData.msg.reviewFail'))
              router.push("/login")
            }
          }).catch((err)=>{
            ElMessage.error('系统错误')
            ElMessage.error(t('basicData.msg.ServerConnectionError'))
            router.push("/login")
          })
          break
@@ -387,11 +387,11 @@
              ElMessage.success(t('basicData.msg.cancelReviewSuccess'))
              router.push({path: '/main/ingredientsStock/ReturnToStorage', query:{random:Math.random()}})
            } else {
              ElMessage.warning("反审失败")
              ElMessage.warning(t('basicData.msg.cancelReviewFail'))
              router.push("/login")
            }
          }).catch((err)=>{
            ElMessage.error('系统错误')
            ElMessage.error(t('basicData.msg.ServerConnectionError'))
            router.push("/login")
          })
          break
@@ -444,7 +444,7 @@
  align: 'center',//文字居中
  stripe:true,//斑马纹
  rowConfig: {isCurrent: true, isHover: true,height: 30},//鼠标移动或选择高亮
  id: 'OrderList',
  id: 'ReturnToStorageCreate',
  showFooter: true,//显示脚
  printConfig: {},
  importConfig: {},
@@ -487,7 +487,7 @@
    return[
      columns.map((column, columnIndex) => {
        if (columnIndex === 0) {
          return '合计:'
          return t('basicData.total')
        }
        // if (props.tableProp.footList.includes(column.field)) {
        //   return sumNum(data, column.field)
@@ -504,7 +504,7 @@
  returnQuantity: [{
    validator (e) {
     if (e.row.returnQuantity ==="") {
        return new Error("返库数量不能为空或者是等于0")
        return new Error(t('mainIngredientStock.theReturnQuantityCannotBeEmptyOrEqualTo0'))
      }
      const regex = /^[1-9]\d*$/g
      if ( !regex.test(e.row.returnQuantity) ) {
@@ -524,17 +524,17 @@
    <div class="order-primary" style="background-color: white">
      <el-row>
        <el-col  :span="2"><el-text>返库日期:</el-text></el-col>
        <el-col  :span="2"><el-text>{{$t('mainIngredientStock.createTime')}}:</el-text></el-col>
        <el-col  :span="3"><el-input  v-model="titleUploadData.createTime" :readonly="true" ></el-input></el-col>
        <el-col  :span="2"><el-text>领料员/供应商:</el-text></el-col>
        <el-col  :span="2"><el-text>{{$t('mainIngredientStock.materialRequisitionPersonnel')}}:</el-text></el-col>
        <el-col  :span="3"><el-input v-model="titleUploadData.materialRequisitionPersonnel" /></el-col>
        <el-col  :span="2"><el-text>领料班组/供应商:</el-text></el-col>
        <el-col  :span="2"><el-text>{{$t('mainIngredientStock.materialRequisitionTeam')}}:</el-text></el-col>
        <el-col  :span="3"><el-input v-model="titleUploadData.materialRequisitionTeam" /></el-col>
        <el-col  :span="2"><el-text>仓管员:</el-text></el-col>
        <el-col  :span="2"><el-text>{{$t('mainIngredientStock.warehouseManager')}}:</el-text></el-col>
        <el-col  :span="3"><el-input v-model="titleUploadData.warehouseManager" :readonly="true" /></el-col>
      </el-row>
      <el-row>
        <el-col  :span="2"><el-text>返库类型:</el-text></el-col>
        <el-col  :span="2"><el-text>{{$t('mainIngredientStock.returningType')}}:</el-text></el-col>
        <el-col  :span="3">
          <el-select v-model="titleUploadData.returningType"  clearable placeholder=""  >
            <el-option
@@ -545,11 +545,11 @@
            />
          </el-select>
        </el-col>
        <el-col  :span="2"><el-text>销售单号:</el-text></el-col>
        <el-col  :span="2"><el-text>{{$t('order.orderId')}}:</el-text></el-col>
        <el-col  :span="3"><el-input v-model="titleUploadData.orderId" /></el-col>
        <el-col  :span="2"><el-text>项目名称:</el-text></el-col>
        <el-col  :span="2"><el-text>{{$t('order.project')}}:</el-text></el-col>
        <el-col  :span="3"><el-input v-model="titleUploadData.project" /></el-col>
        <el-col  :span="2"><el-text>批次:</el-text></el-col>
        <el-col  :span="2"><el-text>{{$t('order.batch')}}:</el-text></el-col>
        <el-col  :span="3"><el-input v-model="titleUploadData.batch" /></el-col>
@@ -557,7 +557,7 @@
      <el-row>
        <el-select v-model="value" placeholder="请选择类别" @change="getWork" style="margin-top: 10px;border: #181818 1px solid;">
        <el-select v-model="value" :placeholder="$t('mainIngredient.pleaseSelectACategory')" @change="getWork" style="margin-top: 10px;border: #181818 1px solid;">
          <el-option
              v-for="item in options"
              :key="item.value"
north-glass-erp/northglass-erp/src/views/mm/mainIngredientStock/SelectIngredientsStock.vue
@@ -62,12 +62,12 @@
const values = ref('')
const selectOptions = [
  {
    value: '库存',
    label: '库存'
    value: t('mainIngredientStock.inventory'),
    label: t('mainIngredientStock.inventory')
  },
  {
    value: '工程',
    label: '工程',
    value: t('mainIngredientStock.engineering'),
    label: t('mainIngredientStock.engineering'),
  }
]
@@ -78,31 +78,31 @@
let arr = [
  { type: 'checkbox',fixed:"left", title: '选择', width: '80' },
  { type: 'seq',fixed:"left", title: '自序', width: '80' },
  {field: 'inventoryOrganization', width:'150', title: '库存组织', sortable: true,filters:[{ data: '' }],slots: { filter: 'num1_filter' },filterMethod:filterChanged },
  {field: 'materialCode', width: '150',title: '物料编码', sortable: true,showOverflow:"ellipsis" ,filters:[{ data: '' }],slots: { filter: 'num1_filter' },filterMethod:filterChanged},
  {field: 'producer', width: '100',title: '产地', sortable: true,filters:[{ data: '' }],slots: { filter: 'num1_filter' },filterMethod:filterChanged},
  {field: 'id',width: '100', title: '库存编号', sortable: true,showOverflow:"ellipsis",filters:[{ data: '' }],slots: { filter: 'num1_filter' },filterMethod:filterChanged},
  {field: 'projectNo',width: '100', title: '工程号', sortable: true,showOverflow:"ellipsis",filters:[{ data: '' }],slots: { filter: 'num1_filter' },filterMethod:filterChanged},
  { type: 'checkbox',fixed:"left", title: t('basicData.check'), width: '80' },
  { type: 'seq',fixed:"left", title: t('basicData.Number'), width: '80' },
  {field: 'inventoryOrganization', width:'150', title: t('mainIngredientStock.inventoryOrganization'), sortable: true,filters:[{ data: '' }],slots: { filter: 'num1_filter' },filterMethod:filterChanged },
  {field: 'materialCode', width: '150',title: t('mainIngredient.materialCode'), sortable: true,showOverflow:"ellipsis" ,filters:[{ data: '' }],slots: { filter: 'num1_filter' },filterMethod:filterChanged},
  {field: 'producer', width: '100',title: t('mainIngredientStock.producer'), sortable: true,filters:[{ data: '' }],slots: { filter: 'num1_filter' },filterMethod:filterChanged},
  {field: 'id',width: '100', title: t('mainIngredientStock.id'), sortable: true,showOverflow:"ellipsis",filters:[{ data: '' }],slots: { filter: 'num1_filter' },filterMethod:filterChanged},
  {field: 'projectNo',width: '100', title: t('mainIngredientStock.projectNo'), sortable: true,showOverflow:"ellipsis",filters:[{ data: '' }],slots: { filter: 'num1_filter' },filterMethod:filterChanged},
  //{field: 'safetyStock', width: '100',title: '安全库存', sortable: true,filters:[{ data: '' }],slots: { filter: 'num1_filter' },filterMethod:filterChanged},
  {field: 'inventoryQuantity',width: '100', title: '库存数量', sortable: true,filters:[{ data: '' }],slots: { filter: 'num1_filter' },filterMethod:filterChanged},
  {field: 'availableQuantity', width: '100',title: '可用库存', sortable: true,filters:[{ data: '' }],slots: { filter: 'num1_filter' },filterMethod:filterChanged},
  {field: 'planQuantity', width: '100',title: '计划数量', sortable: true,filters:[{ data: '' }],slots: { filter: 'num1_filter' },filterMethod:filterChanged},
  {field: 'totalArea',width: '100', title: '总面积', sortable: true,filters:[{ data: '' }],slots: { filter: 'num1_filter' },filterMethod:filterChanged},
  {field: 'dateOfManufacture',width: '100', title: '生产日期', sortable: true},
  {field: 'qualityGuaranteePeriod',width: '100', title: '保质期', sortable: true,filters:[{ data: '' }],slots: { filter: 'num1_filter' },filterMethod:filterChanged},
  {field: 'inventoryArea',width: '100', title: '库存区域', sortable: true,filters:[{ data: '' }],slots: { filter: 'num1_filter' },filterMethod:filterChanged},
  {field: 'inventoryQuantity',width: '100', title: t('productStock.inventoryQuantity'), sortable: true,filters:[{ data: '' }],slots: { filter: 'num1_filter' },filterMethod:filterChanged},
  {field: 'availableQuantity', width: '100',title: t('productStock.availableQuantity'), sortable: true,filters:[{ data: '' }],slots: { filter: 'num1_filter' },filterMethod:filterChanged},
  {field: 'planQuantity', width: '100',title: t('mainIngredientStock.planQuantity'), sortable: true,filters:[{ data: '' }],slots: { filter: 'num1_filter' },filterMethod:filterChanged},
  {field: 'totalArea',width: '100', title: t('order.grossArea'), sortable: true,filters:[{ data: '' }],slots: { filter: 'num1_filter' },filterMethod:filterChanged},
  {field: 'dateOfManufacture',width: '100', title: t('mainIngredientStock.dateOfManufacture'), sortable: true},
  {field: 'qualityGuaranteePeriod',width: '100', title: t('mainIngredientStock.qualityGuaranteePeriod'), sortable: true,filters:[{ data: '' }],slots: { filter: 'num1_filter' },filterMethod:filterChanged},
  {field: 'inventoryArea',width: '100', title: t('productStock.inventoryArea'), sortable: true,filters:[{ data: '' }],slots: { filter: 'num1_filter' },filterMethod:filterChanged},
  //{field: 'deadStock',width: '100', title: '积压库存', sortable: true,filters:[{ data: '' }],slots: { filter: 'num1_filter' },filterMethod:filterChanged},
  {field: 'createTime',width: '100', title: '入库时间', sortable: true},
  {field: 'remarks',width: '80', title: '备注', sortable: true,filters:[{ data: '' }],slots: { filter: 'num1_filter' },filterMethod:filterChanged},
  {field: 'createTime',width: '100', title: t('productStock.storageTime'), sortable: true},
  {field: 'remarks',width: '80', title: t('basicData.remarks'), sortable: true,filters:[{ data: '' }],slots: { filter: 'num1_filter' },filterMethod:filterChanged},
]
request.get(`/BasicWarehouse/BasicWarehouseType/原片|辅料`).then((res) => {
request.get(`/BasicWarehouse/BasicWarehouseType/`+t('mainIngredient.originalFilm')+'|'+t('mainIngredient.accessories')).then((res) => {
  if(res.code==200){
    gridOptions.columns.splice(0,gridOptions.columns.length)
    BasicData.value = res.data
@@ -114,7 +114,7 @@
      gridOptions.columns.push(aa)
    }
    values.value='库存'
    values.value=t('mainIngredientStock.inventory')
    getInventoryWorks()
  }else{
@@ -175,7 +175,7 @@
}
const selectInventoryWork = () => {
  if(values.value==='库存'){
  if(values.value===t('mainIngredientStock.inventory')){
    getInventoryWorks()
  }else{
    getInventoryEngineeringWork()
@@ -213,7 +213,7 @@
const selectOrderList = ()=>{
  request.get(`/BasicWarehouse/BasicWarehouseType/原片|辅料`).then((res) => {
  request.get(`/BasicWarehouse/BasicWarehouseType/`+t('mainIngredient.originalFilm')+'|'+t('mainIngredient.accessories')).then((res) => {
    if(res.code==200){
      gridOptions.columns.splice(0,gridOptions.columns.length)
      BasicData.value = res.data
@@ -226,7 +226,7 @@
        gridOptions.columns.push(aa)
      }
      if(values.value==='库存'){
      if(values.value===t('mainIngredientStock.inventory')){
        getInventoryWorkPaging()
      }else{
        getInventoryEngineeringWork()
@@ -259,7 +259,7 @@
  align: 'center',//文字居中
  stripe:true,//斑马纹
  rowConfig: {isCurrent: true, isHover: true,height: 30},//鼠标移动或选择高亮
  id: 'CustomerList',
  id: 'SelectIngredientsStock',
  showFooter: true,//显示脚
  printConfig: {},
  importConfig: {},
@@ -286,8 +286,8 @@
  ],//表头按钮
  toolbarConfig: {
    buttons: [
      {'code': 'out', 'name': '物料出库',status: 'primary'},
      {'code': 'add', 'name': '物料新增',status: 'primary'},
      {'code': 'out', 'name': t('mainIngredientStock.materialOutbound'),status: 'primary'},
      {'code': 'add', 'name': t('mainIngredient.materialAddition'),status: 'primary'},
    ],
    /*import: false,
    export: true,
@@ -299,7 +299,7 @@
    return[
      columns.map((column, columnIndex) => {
        if (columnIndex === 0) {
          return '合计:'
          return t('basicData.total')
        }
        // if (props.tableProp.footList.includes(column.field)) {
        //   return sumNum(data, column.field)
@@ -327,7 +327,7 @@
          }
          let id = ""
          const array = [];
          if (values.value==='库存'){
          if (values.value===t('mainIngredientStock.inventory')){
            for (let i = 0; i < selectRecords.length; i++) {
              array.push(selectRecords[i].id)
              if (i + 1 === selectRecords.length) {
@@ -359,8 +359,8 @@
          dialogTableVisible.value=true
          select()
          //第一次加载默认
          value.value='原片'
          filterData.value.type='原片'
          value.value=t('mainIngredient.originalFilm')
          filterData.value.type=t('mainIngredient.originalFilm')
          request.get(`/BasicWarehouse/BasicWarehouseType/${value.value}`).then((res) => {
            if(res.code==200){
              gridOption.columns.splice(0,gridOption.columns.length)
@@ -392,20 +392,20 @@
let arrs = [
  { type: 'radio',fixed:"left", title: '选择', width: '80' },
  { type: 'seq',fixed:'left', title: '自序', width: '80' },
  {field: 'id', width: '150',title: '物料编码', sortable: true,showOverflow:'ellipsis' ,filters:[{ data: '' }],slots: { filter: 'num1_filter' },filterMethod:filterChanged}
  { type: 'radio',fixed:"left", title: t('basicData.check'), width: '80' },
  { type: 'seq',fixed:'left', title: t('basicData.Number'), width: '80' },
  {field: 'id', width: '150',title: t('mainIngredient.materialCode'), sortable: true,showOverflow:'ellipsis' ,filters:[{ data: '' }],slots: { filter: 'num1_filter' },filterMethod:filterChanged}
]
const value = ref('')
const options = [
  {
    value: '原片',
    label: '原片'
    value: t('mainIngredient.originalFilm'),
    label: t('mainIngredient.originalFilm')
  },
  {
    value: '辅料',
    label: '辅料',
    value: t('mainIngredient.accessories'),
    label: t('mainIngredient.accessories'),
  }
]
@@ -442,7 +442,7 @@
  align: 'center',//文字居中
  stripe:true,//斑马纹
  rowConfig: {isCurrent: true, isHover: true,height: 30},//鼠标移动或选择高亮
  id: 'CustomerList',
  id: 'SelectIngredientsStocks',
  showFooter: true,//显示脚
  printConfig: {},
  importConfig: {},
@@ -476,7 +476,7 @@
})
const select=() =>{
  request.get(`/BasicWarehouse/BasicWarehouseTypes/库存组织`).then((res) => {
  request.get(`/BasicWarehouse/BasicWarehouseTypes/`+t('mainIngredientStock.inventoryOrganization')).then((res) => {
    if(res.code==200){
      titleSelectJson.value=deepClone(res.data)
@@ -559,12 +559,12 @@
          //表头数据校验
          const outboundType = titleUploadData.value.inventoryOrganization
          if(outboundType === null || outboundType === undefined || outboundType === ''){
            ElMessage.error("请选择库存组织")
            ElMessage.error(t('mainIngredientStock.pleaseSelectInventoryOrganization'))
            return
          }
          const materialRequisitionPersonnel = titleUploadData.value.inventoryQuantity
          if(materialRequisitionPersonnel === null || materialRequisitionPersonnel === undefined || materialRequisitionPersonnel === ''){
            ElMessage.error("请输入数量")
            ElMessage.error(t('mainIngredientStock.pleaseEnterTheQuantity'))
            return
          }
          const  dateOfManufacture= titleUploadData.value.dateOfManufacture
@@ -589,7 +589,7 @@
          request.post("/MaterialInventory/saveMaterialInventory", flowData.value).then((res) => {
            if(res.code==200){
              ElMessage.success('保存成功')
              ElMessage.success(t('basicData.msg.saveSuccess'))
              router.push({path: '/main/ingredientsStock/SelectIngredientsStock', query:{random:Math.random()}})
            }else{
              ElMessage.warning(res.msg)
@@ -613,16 +613,16 @@
    <el-date-picker
        v-model="selectDate"
        type="daterange"
        start-placeholder="开始时间"
        end-placeholder="结束时间"
        :start-placeholder="$t('basicData.startDate')"
        :end-placeholder="$t('basicData.endDate')"
        format="YYYY-MM-DD"
        value-format="YYYY-MM-DD"
    />
    <el-button @click="changeDate" style="margin-top: -5px"  id="searchButton" type="primary" :icon="Search">查询</el-button>
    <el-button @click="changeDate" style="margin-top: -5px"  id="searchButton" type="primary" :icon="Search">{{$t('basicData.search')}}</el-button>
    <div>
      <el-row>
        <el-select v-model="values" placeholder="请选择类别" @change="selectInventoryWork">
        <el-select v-model="values" :placeholder="$t('mainIngredient.pleaseSelectACategory')" @change="selectInventoryWork">
          <el-option
              v-for="item in selectOptions"
              :key="item.value"
@@ -656,8 +656,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>
                   link type="primary" size="small">{{$t('basicData.edit')}}</el-button>
        <el-button @click="getTableRow(row,'delete')" link type="primary" size="small">{{$t('basicData.delete')}}</el-button>
      </template>
      <template #num1_filter="{ column, $panel }">
@@ -684,27 +684,27 @@
    </vxe-grid>
    <el-dialog v-model="dialogTableVisible" title="物料新增" style="width: 70%;height:75% ">
    <el-dialog v-model="dialogTableVisible" :title="$t('mainIngredient.materialAddition')" style="width: 70%;height:75% ">
      <div class="order-primary" >
        <el-row>
          <el-col  :span="2"><el-text>生产日期:</el-text></el-col>
          <el-col  :span="2"><el-text>{{$t('mainIngredientStock.dateOfManufacture')}}:</el-text></el-col>
          <el-col  :span="4">
            <el-date-picker
                v-model="titleUploadData.dateOfManufacture"
                type="date"
                format="YYYY-MM-DD"
                value-format="YYYY-MM-DD"
                placeholder="请选择生产日期"/>
                :placeholder="$t('mainIngredientStock.pleaseDateOfManufacture')"/>
          </el-col>
          <el-col  :span="2"><el-text>保质期:</el-text></el-col>
          <el-col  :span="2"><el-text>{{$t('mainIngredientStock.qualityGuaranteePeriod')}}:</el-text></el-col>
          <el-col  :span="3"><el-input v-model="titleUploadData.qualityGuaranteePeriod" /></el-col>
          <el-col  :span="1"><el-text>产地:</el-text></el-col>
          <el-col  :span="1"><el-text>{{$t('mainIngredientStock.producer')}}:</el-text></el-col>
          <el-col  :span="3"><el-input v-model="titleUploadData.producer" /></el-col>
        </el-row>
        <el-row>
          <el-col  :span="2"><el-text>库存组织:</el-text></el-col>
          <el-col  :span="2"><el-text>{{$t('mainIngredientStock.inventoryOrganization')}}:</el-text></el-col>
          <el-col  :span="4">
            <el-select v-model="titleUploadData.inventoryOrganization"  clearable placeholder=""  >
              <el-option
@@ -715,18 +715,18 @@
              />
            </el-select>
          </el-col>
          <el-col  :span="2"><el-text>库存区域:</el-text></el-col>
          <el-col  :span="2"><el-text>{{$t('productStock.inventoryArea')}}:</el-text></el-col>
          <el-col  :span="3"><el-input v-model="titleUploadData.inventoryArea" /></el-col>
          <el-col  :span="1"><el-text>数量:</el-text></el-col>
          <el-col  :span="1"><el-text>{{$t('order.quantity')}}:</el-text></el-col>
          <el-col  :span="3"><el-input v-model="titleUploadData.inventoryQuantity" /></el-col>
          <el-col  :span="1"><el-text>备注:</el-text></el-col>
          <el-col  :span="1"><el-text>{{$t('basicData.remarks')}}:</el-text></el-col>
          <el-col  :span="3"><el-input v-model="titleUploadData.remarks" /></el-col>
        </el-row>
      </div>
      <div>
        <el-row>
            <el-select v-model="value" placeholder="请选择类别" @change="getStoreWork">
            <el-select v-model="value" :placeholder="$t('mainIngredientStock.pleaseSelectACategory')" @change="getStoreWork">
              <el-option
                  v-for="item in options"
                  :key="item.value"
north-glass-erp/northglass-erp/src/views/mm/mainProductStock/CreateProductStock.vue
@@ -177,7 +177,7 @@
  align: 'center',//文字居中
  stripe:true,//斑马纹
  rowConfig: {isCurrent: true, isHover: true,height: 30},//鼠标移动或选择高亮
  id: 'CustomerList',
  id: 'CreateProductStock',
  showFooter: true,//显示脚
  printConfig: {},
  importConfig: {},
@@ -279,7 +279,7 @@
                  ElMessage.success(t('productStock.receivedSuccessfully'))
                  router.push({path:'/main/productStock/CreateProductStock',query:{random:Math.random()}})
                }else{
                  ElMessage.warning("入库失败")
                  ElMessage.warning(t('productStock.entryFailure'))
                  router.push("/login")
                }
              })
@@ -289,7 +289,7 @@
        }
        case 'jump': {
          router.push({path: '/main/productStock/storageRecord', query: { storageType: '入库' }})
          router.push({path: '/main/productStock/storageRecord', query: { storageType: t('productStock.entry') }})
          return;
        }
north-glass-erp/northglass-erp/src/views/mm/mainProductStock/FinishedGoodsIssue.vue
@@ -71,11 +71,11 @@
              ElMessage.success(t('productStock.successfullyRetrieved'))
              router.push({path:'/main/productStock/FinishedGoodsIssue',query:{random:Math.random()}})
            }else{
              ElMessage.warning("领出失败")
              ElMessage.warning(t('productStock.failedToRetrieve'))
              router.push("/login")
            }
          }).catch((err)=>{
            ElMessage.error('系统错误')
            ElMessage.error(t('basicData.msg.ServerConnectionError'))
            router.push("/login")
          })
@@ -261,7 +261,7 @@
  align: 'center',//文字居中
  stripe:true,//斑马纹
  rowConfig: {isCurrent: true, isHover: true,height: 30},//鼠标移动或选择高亮
  id: 'CustomerList',
  id: 'FinishedGoodsIssue',
  showFooter: true,//显示脚
  printConfig: {},
  importConfig: {},
north-glass-erp/northglass-erp/src/views/mm/mainProductStock/FinishedProductOut.vue
@@ -181,7 +181,7 @@
  align: 'center',//文字居中
  stripe:true,//斑马纹
  rowConfig: {isCurrent: true, isHover: true,height: 30},//鼠标移动或选择高亮
  id: 'CustomerList',
  id: 'FinishedProductOut',
  showFooter: true,//显示脚
  printConfig: {},
  importConfig: {},
@@ -290,11 +290,11 @@
                ElMessage.success(t('productStock.deliverySuccessful'))
                router.push({path: '/main/productStock/FinishedProductOut', query: {random: Math.random()}})
              } else {
                ElMessage.warning("发货失败")
                ElMessage.warning(t('productStock.deliveryFailed'))
                router.push("/login")
              }
            }).catch((err)=>{
              ElMessage.error('系统错误')
              ElMessage.error(t('basicData.msg.ServerConnectionError'))
              router.push("/login")
            })
@@ -304,7 +304,7 @@
        }
        case 'jump': {
          router.push({path: '/main/productStock/storageRecord', query: {storageType: '出库'}})
          router.push({path: '/main/productStock/storageRecord', query: {storageType: t('productStock.outbound')}})
          return;
        }
north-glass-erp/northglass-erp/src/views/mm/mainProductStock/FinishedProductReturn.vue
@@ -29,7 +29,7 @@
  align: 'center',//文字居中
  stripe:true,//斑马纹
  rowConfig: {isCurrent: true, isHover: true,height: 30},//鼠标移动或选择高亮
  id: 'CustomerList',
  id: 'FinishedProductReturn',
  showFooter: true,//显示脚
  printConfig: {},
  importConfig: {},
north-glass-erp/northglass-erp/src/views/mm/mainProductStock/FinishedProductRework.vue
@@ -70,11 +70,11 @@
              ElMessage.success(t('productStock.reworkSuccessful'))
              router.push({path:'/main/productStock/FinishedProductRework',query:{random:Math.random()}})
            } else {
              ElMessage.warning("返工失败")
              ElMessage.warning(t('productStock.reworkFailed'))
              router.push("/login")
            }
          }).catch((err)=>{
            ElMessage.error('系统错误')
            ElMessage.error(t('basicData.msg.ServerConnectionError'))
            router.push("/login")
          })
@@ -258,7 +258,7 @@
  align: 'center',//文字居中
  stripe:true,//斑马纹
  rowConfig: {isCurrent: true, isHover: true,height: 30},//鼠标移动或选择高亮
  id: 'CustomerList',
  id: 'FinishedProductRework',
  showFooter: true,//显示脚
  printConfig: {},
  importConfig: {},
north-glass-erp/northglass-erp/src/views/mm/mainProductStock/OrderAllocation.vue
@@ -172,7 +172,7 @@
  align: 'center',//文字居中
  stripe:true,//斑马纹
  rowConfig: {isCurrent: true, isHover: true,height: 30},//鼠标移动或选择高亮
  id: 'CustomerList',
  id: 'OrderAllocation',
  showFooter: true,//显示脚
  printConfig: {},
  importConfig: {},
@@ -286,11 +286,11 @@
                ElMessage.success(t('productStock.transferSuccessful'))
                router.push({path:'/main/productStock/OrderAllocation',query:{random:Math.random()}})
              } else {
                ElMessage.warning("调拨失败")
                ElMessage.warning(t('productStock.transferFailed'))
                router.push("/login")
              }
            }).catch((err)=>{
              ElMessage.error('系统错误')
              ElMessage.error(t('basicData.msg.ServerConnectionError'))
              router.push("/login")
            })
north-glass-erp/northglass-erp/src/views/mm/mainProductStock/ProductStockList.vue
@@ -165,7 +165,7 @@
  align: 'center',//文字居中
  stripe:true,//斑马纹
  rowConfig: {isCurrent: true, isHover: true,height: 30},//鼠标移动或选择高亮
  id: 'CustomerList',
  id: 'ProductStockList',
  showFooter: true,//显示脚
  printConfig: {},
  importConfig: {},
north-glass-erp/northglass-erp/src/views/mm/mainProductStock/ReworkRecord.vue
@@ -168,7 +168,7 @@
  align: 'center',//文字居中
  stripe:true,//斑马纹
  rowConfig: {isCurrent: true, isHover: true,height: 30},//鼠标移动或选择高亮
  id: 'CustomerList',
  id: 'ReworkRecord',
  showFooter: true,//显示脚
  printConfig: {},
  importConfig: {},
@@ -265,11 +265,11 @@
                router.push({path:'/main/productStock/ReworkRecord',query:{random:Math.random()}})
              }else{
                ElMessage.warning("反审失败")
                ElMessage.warning(t('basicData.msg.cancelReviewFail'))
                router.push("/login")
              }
            }).catch((err)=>{
              ElMessage.error('系统错误')
              ElMessage.error(t('basicData.msg.ServerConnectionError'))
              router.push("/login")
            })
          }
@@ -289,7 +289,7 @@
const checkBoxConfig = {
  checkMethod: ({ row }) => {
    if (row['status']==='已审核'||row['status']==='未通过'){
    if (row['status']===t('productStock.approved')||row['status']===t('productStock.notPassed')){
      return !row.disable
    }else{
      return row.disable
@@ -308,8 +308,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/mm/mainProductStock/StorageRecord.vue
@@ -178,7 +178,7 @@
  align: 'center',//文字居中
  stripe:true,//斑马纹
  rowConfig: {isCurrent: true, isHover: true,height: 30},//鼠标移动或选择高亮
  id: 'CustomerList',
  id: 'StorageRecord',
  showFooter: true,//显示脚
  printConfig: {},
  importConfig: {},
@@ -284,11 +284,11 @@
                router.push({path:'/main/productStock/storageRecord',query:{random:Math.random(),storageType: type.value}})
              }else{
                ElMessage.warning("反作废失败")
                ElMessage.warning(t('productStock.cancellationFailed'))
                router.push("/login")
              }
            }).catch((err)=>{
              ElMessage.error('系统错误')
              ElMessage.error(t('basicData.msg.ServerConnectionError'))
              router.push("/login")
            })
          }
@@ -308,7 +308,7 @@
const checkBoxConfig = {
  checkMethod: ({ row }) => {
    if (row['status']==='已审核'||row['status']==='未通过'){
    if (row['status']===t('productStock.approved')||row['status']===t('productStock.notPassed')){
      return row.disable
    }else{
      return !row.disable
@@ -327,8 +327,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/mm/mainProductStock/TakeOutRecord.vue
@@ -168,7 +168,7 @@
  align: 'center',//文字居中
  stripe:true,//斑马纹
  rowConfig: {isCurrent: true, isHover: true,height: 30},//鼠标移动或选择高亮
  id: 'CustomerList',
  id: 'TakeOutRecord',
  showFooter: true,//显示脚
  printConfig: {},
  importConfig: {},
@@ -277,11 +277,11 @@
                router.push({path:'/main/productStock/TakeOutRecord',query:{random:Math.random()}})
              }else{
                ElMessage.warning("审核失败")
                ElMessage.warning(t('basicData.msg.reviewFail'))
                router.push("/login")
              }
            }).catch((err)=>{
              ElMessage.error('系统错误')
              ElMessage.error(t('basicData.msg.ServerConnectionError'))
              router.push("/login")
            })
          }
@@ -315,11 +315,11 @@
                router.push({path:'/main/productStock/TakeOutRecord',query:{random:Math.random()}})
              }else{
                ElMessage.warning("作废失败")
                ElMessage.warning(t('productStock.voidFailed'))
                router.push("/login")
              }
            }).catch((err)=>{
              ElMessage.error('系统错误')
              ElMessage.error(t('basicData.msg.ServerConnectionError'))
              router.push("/login")
            })
          }
@@ -336,7 +336,7 @@
const checkBoxConfig = {
  checkMethod: ({ row }) => {
    if (row['status']==='已审核'||row['status']==='未通过'){
    if (row['status']===t('productStock.approved')||row['status']===t('productStock.notPassed')){
      return row.disable
    }else{
      return !row.disable
@@ -355,8 +355,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/mm/mainProductStock/TransferRecord.vue
@@ -172,7 +172,7 @@
  align: 'center',//文字居中
  stripe:true,//斑马纹
  rowConfig: {isCurrent: true, isHover: true,height: 30},//鼠标移动或选择高亮
  id: 'CustomerList',
  id: 'TransferRecord',
  showFooter: true,//显示脚
  printConfig: {},
  importConfig: {},
@@ -256,11 +256,11 @@
                router.push({path:'/main/productStock/TransferRecord',query:{random:Math.random()}})
              }else{
                ElMessage.warning("反审失败")
                ElMessage.warning(t('basicData.msg.cancelReviewFail'))
                router.push("/login")
              }
            }).catch((err)=>{
              ElMessage.error('系统错误')
              ElMessage.error(t('basicData.msg.ServerConnectionError'))
              router.push("/login")
            })
          }
@@ -286,8 +286,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/mm/stockReport/StockReport.vue
@@ -24,7 +24,7 @@
                              :to="{path:'/main/stockReport/WarehouseReport'}">原材料报表
          </el-breadcrumb-item>-->
          <el-breadcrumb-item @click="changeRouter(2)" :class="indexFlag===2?'indexTag':''"
                              :to="{path:'/main/stockReport/StockWarehouseReport'}">成品报表
                              :to="{path:'/main/stockReport/StockWarehouseReport'}">{{$t('report.finishedProductReport')}}
          </el-breadcrumb-item>
<!--          <el-breadcrumb-item @click="changeRouter(3)" :class="indexFlag===3?'indexTag':''"
                              :to="{path:'/main/stockReport/StockMonthReport'}">原片月结报表
north-glass-erp/northglass-erp/src/views/mm/stockReport/WarehouseReport.vue
@@ -20,12 +20,12 @@
    {field: 'orderDetail.productName',width: '140', title: t('order.product'),filters:[{ data: '' }],slots: { filter: 'num1_filter' }},
    {field: 'orderDetail.width', width: '100',title: t('order.width'),filters:[{ data: '' }],slots: { filter: 'num1_filter' }},
    {field: 'orderDetail.height',width: '100', title: t('order.height'),filters:[{ data: '' }],slots: { filter: 'num1_filter' }},
    {field: 'staterOperationOrderNumber', width: '150',title: '调拨销售单号',filters:[{ data: '' }],slots: { filter: 'num1_filter' }},
    {field: 'endOperationOrderNumber', width: '100',title: '调拨序号',filters:[{ data: '' }],slots: { filter: 'num1_filter' }},
    {field: 'staterOperationOrderNumber', width: '150',title: t('productStock.staterOperationOrderNumber'),filters:[{ data: '' }],slots: { filter: 'num1_filter' }},
    {field: 'endOperationOrderNumber', width: '100',title: t('productStock.endOperationOrderNumber'),filters:[{ data: '' }],slots: { filter: 'num1_filter' }},
    {field: 'operator', width: '100',title: t('productStock.creator'),filters:[{ data: '' }],slots: { filter: 'num1_filter' }},
    {field: 'operateTime', width:'140', title: t('productStock.productionDate'),filters:[{ data: '' }],slots: { filter: 'num1_filter' }},
    {field: 'processId', width:'140', title: '流程卡号',filters:[{ data: '' }],slots: { filter: 'num1_filter' }},
    {field: 'type', width:'140', title: '领出类型',filters:[{ data: '' }],slots: { filter: 'num1_filter' }},
    {field: 'processId', width:'140', title: t('processCard.processId'),filters:[{ data: '' }],slots: { filter: 'num1_filter' }},
    {field: 'type', width:'140', title: t('productStock.领出类型'),filters:[{ data: '' }],slots: { filter: 'num1_filter' }},
    {field: 'reviewed', width: '100',title: t('productStock.reviewed'),filters:[{ data: '' }],slots: { filter: 'num1_filter' }},
    {field: 'reviewedTime', width: '140',title: t('productStock.approvedDate'),filters:[{ data: '' }],slots: { filter: 'num1_filter' }},
    {field: 'remarks', width: '140',title: t('productStock.remarks'),filters:[{ data: '' }],slots: { filter: 'num1_filter' }},
@@ -34,7 +34,7 @@
  data:[],//表格数据
  url :'/FinishedGoodsInventory/getSelectFinishedOperateLogReport',
  exportUrl :'/FinishedGoodsInventory/exportFinishedOperateLogReport',
  exportName:'成品报表',
  exportName:t('report.finishedProductReport'),
  footList:['quantity']
})
north-glass-erp/northglass-erp/src/views/pp/Replenish/AddReplenish.vue
@@ -58,7 +58,7 @@
  align: 'center',//文字居中
  stripe:true,//斑马纹
  rowConfig: {isCurrent: true, isHover: true,height: 30},//鼠标移动或选择高亮
  id: 'CustomerList',
  id: 'AddReplenish',
  showFooter: true,//显示脚
  printConfig: {},
  importConfig: {},
north-glass-erp/northglass-erp/src/views/pp/Replenish/SelectReplenish.vue
@@ -84,7 +84,7 @@
  align: 'center',//文字居中
  stripe:true,//斑马纹
  rowConfig: {isCurrent: true, isHover: true,height: 30},//鼠标移动或选择高亮
  id: 'CustomerList',
  id: 'SelectReplenish',
  showFooter: true,//显示脚
  printConfig: {},
  importConfig: {},
north-glass-erp/northglass-erp/src/views/pp/machine/SelectMachine.vue
@@ -163,15 +163,15 @@
    </vxe-grid>
    <el-dialog v-model="dialogFormVisible" title="设备编辑">
    <el-dialog v-model="dialogFormVisible" :title="$t('machine.deviceEditing')">
      <el-form :model="form">
        <el-form-item label="标准名称" :label-width="formLabelWidth">
        <el-form-item :label="$t('machine.standardName')" :label-width="formLabelWidth">
          <el-input v-model="form.name"  autocomplete="off"  style="width: 220px"/>
        </el-form-item>
        <el-form-item label="设备名称" :label-width="formLabelWidth">
        <el-form-item :label="$t('machine.basicName')" :label-width="formLabelWidth">
          <el-input v-model="form.name"  autocomplete="off"  style="width: 220px"/>
        </el-form-item>
        <el-form-item label="购买时间" :label-width="formLabelWidth">
        <el-form-item :label="$t('machine.purchaseTime')" :label-width="formLabelWidth">
          <el-date-picker
              v-model="value1"
              type="date"
@@ -179,7 +179,7 @@
              :size="size"
          />
        </el-form-item>
        <el-form-item label="安装时间" :label-width="formLabelWidth">
        <el-form-item :label="$t('machine.installationTime')" :label-width="formLabelWidth">
          <el-date-picker
              v-model="value1"
              type="date"
@@ -187,22 +187,22 @@
              :size="size"
          />
        </el-form-item>
        <el-form-item label="保养周期" :label-width="formLabelWidth">
        <el-form-item :label="$t('machine.maintenanceCycle')" :label-width="formLabelWidth">
          <el-input v-model="form.name"  autocomplete="off"  style="width: 220px"/>
        </el-form-item>
        <el-form-item label="所在工艺" :label-width="formLabelWidth">
          <el-select v-model="form.region" placeholder="钢化" style="width: 220px">
            <el-option label="切割" value="shanghai" />
            <el-option label="磨边" value="mobian" />
            <el-option label="钢化" value="ganghua" />
        <el-form-item :label="$t('machine.standardName')" :label-width="formLabelWidth">
          <el-select v-model="form.region" :placeholder="$t('machine.tempering')" style="width: 220px">
            <el-option :label="$t('machine.cutting')" value="shanghai" />
            <el-option :label="$t('machine.edgeGrinding')" value="mobian" />
            <el-option :label="$t('machine.tempering')" value="ganghua" />
          </el-select>
        </el-form-item>
      </el-form>
      <template #footer>
      <span class="dialog-footer">
        <el-button @click="dialogFormVisible = false">取消</el-button>
        <el-button @click="dialogFormVisible = false">{{$t('basicData.cancelButtonText')}}</el-button>
        <el-button type="primary" @click="dialogFormVisible = false">
          确认
          {{$t('basicData.confirmButtonText')}}
        </el-button>
      </span>
      </template>
north-glass-erp/northglass-erp/src/views/pp/processCard/PrintCustomLabel.vue
New file
@@ -0,0 +1,180 @@
<script setup>
import request from "@/utils/request"
import {ElDatePicker, ElMessage} from "element-plus"
import {nextTick, onMounted, onUnmounted, reactive, ref, watch} from "vue"
import {Search} from "@element-plus/icons-vue"
import {useRouter} from 'vue-router'
import {changeFilterEvent, filterChanged} from "@/hook"
import {useI18n} from 'vue-i18n'
import deepClone from "@/utils/deepClone";
//语言获取
const {t} = useI18n()
let router = useRouter()
let produceList = ref([])
let labelList = ref([])
let titleList = ref([])
let dataList = ref([])
let list = ref([])
let lastList=ref([])
let filterData = ref({})
const data = ref({
  printList: []
})
const {currentRoute} = useRouter()
const route = currentRoute.value
data.value.printList = JSON.parse(route.query.printList)
const type = route.query.type
const faceOrientation = route.query.faceOrientation
onMounted(() => {
      request.post(`/processCard/getSelectPrintCustomLabel/${type}`, data.value).then((res) => {
        if (res.code == 200) {
          produceList.value = deepClone(res.data.title)
          list.value = deepClone(res.data.data)
          const quantity = res.data.quantity
          console.log(quantity)
          const data = produceList.value[0].value
          dataList = JSON.parse(`[${data}]`);
          labelList = dataList[0]
          for (let i = 0; i < list.value.length; i++) {
            let count= list.value[i].quantity
            for (let j = 0; j < quantity; j++) {
              lastList.value.push(list.value[i])
            }
          }
          console.log(lastList.value)
          console.log(labelList)
        } else {
          ElMessage.warning(res.msg)
          router.push("/login")
        }
      })
    }
)
// 打印方法
const printFlowCard = () => {
  // 需要打印的局部区域赋予"print-wrap"的id
  let el = document.getElementById("printFlowCard");
  let doc = document;
  let body = doc.body || doc.getElementsByTagName("body")[0];
  let printId = "print-" + Date.now();
  // 创建无副作用的打印容器(因不确定页面的打印元素有无其它样式)
  let content = doc.createElement("div");
  content.id = printId;
  // 样式控制与打印无关的元素隐藏
  let style = doc.createElement("style");
  style.innerHTML =
      "body>#" +
      printId +
      "{display:none}@media print{body>:not(#" +
      printId +
      "){display:none !important}body>#" +
      printId +
      "{display:block;padding-top:1px}}";
  //
  content.innerHTML = el.outerHTML;
  // // console.log("el.outerHTML", el.outerHTML);
  body.appendChild(style);
  // 与style元素设置的样式相配合
  // 把打印内容的元素添加到body(作为body的子元素,可用body的子选择器 '>' 控制打印样式)
  body.appendChild(content);
  setTimeout(() => {
    window.print();
    body.removeChild(content);
    body.removeChild(style);
  }, 20);
}
</script>
<template>
  <el-button id="printButton" @click="printFlowCard();">{{ $t('basicData.print') }}</el-button>
  <div id="printFlowCard">
    <div v-for="(item1,id) in lastList" id="entirety">
      <div class="row4">{{faceOrientation}}</div>
      <div v-for="(item,id) in labelList" class="contentRow">
        <div class="row1">{{ item.title }}:</div>
        <div class="row2">{{ item1.order[item.name] }}</div>
      </div>
      <div class="row3"><label>W:</label>{{ item1.width }} <label>H:</label>{{ item1.height }}</div>
    </div>
  </div>
</template>
<style scoped>
* {
  margin: 0;
  padding: 0;
}
#printButton {
  margin-top: -20px;
  width: 100px;
}
#printFlowCard {
  flex-wrap: wrap;
  font-size: 20px;
  margin-left: 5px;
  margin-top: 15px;
}
#entirety {
  display: flex;
  text-align: center;
  width: 250px;
  margin-bottom: 10px;
  flex-direction:column;
}
.contentRow{
  display: flex;
  text-align: center;
  border: red solid 1px;
}
label{
  font-weight: bolder;
}
.row1{
  font-weight: bolder;
}
.row4{
  font-weight: bolder;
  text-align: right;
}
.row1,.row2{
  text-align: left;
}
@page {
  size: auto;  /* auto is the initial value */
  margin: 7mm 2mm 2mm 0mm  /* this affects the margin in the printer settings */
}
@media print {
  div {
    page-break-inside: avoid;
  }
}
</style>
north-glass-erp/northglass-erp/src/views/pp/processCard/PrintFlowCard.vue
@@ -11,12 +11,14 @@
import {addListener, toolbarButtonClickEvent} from "@/hook/mouseMove";
import PrintProcess from '@/views/pp/processCard/PrintProcess.vue'
import PrintLabel from '@/views/pp/processCard/PrintLabel.vue'
import PrintCustomLabel from '@/views/pp/processCard/PrintCustomLabel.vue'
import footSum from "@/hook/footSum"
//语言获取
const {t} = useI18n()
let router = useRouter()
const dialogTableVisible = ref(false)
const dialogTableVisibleLabel = ref(false)
const dialogTableVisibleCustomLabel = ref(false)
const printVisible= ref(false)
let selectRecords = ref(null)
@@ -71,6 +73,28 @@
let pageNum = $ref(1)
let pageState = null
//室内室外面
const stateValue = ref('此面为室内面')
const stateOptions = [
  {
    value: '此面为室内面',
    label: '此面为室内面',
  },
  {
    value: '此面为室外面',
    label: '此面为室外面',
  },
]
//打印类型
const printType = ref()
//定义接收加载表头下拉数据
const titleSelectJson = ref({
  dataType: [],
})
const {currentRoute} = useRouter()
const route = currentRoute.value
@@ -81,6 +105,7 @@
  if (res.code == 200) {
    produceList = produceList.value.concat(deepClone(res.data.data))
    titleSelectJson.value.dataType = res.data.type
    xGrid.value.reloadData(produceList)
    gridOptions.loading = false
  } else {
@@ -156,6 +181,14 @@
      filterMethod: filterChanged
    },
    {
      field: 'order_number',
      title: '序号',
      showOverflow: "ellipsis",
      filters: [{data: ''}],
      slots: {filter: 'num1_filter'},
      filterMethod: filterChanged
    },
    {
      field: 'customer_name',
      title: t('customer.customerName'),
      filters: [{data: ''}],
@@ -183,6 +216,7 @@
    buttons: [
      {code: 'print', name: t('processCard.print'), status: 'primary'},
      {code: 'printLabel', name: t('processCard.printLabel'), status: 'primary'},
      // {code: 'customLabel', name: '自定义标签打印', status: 'primary'},
    ],
    // import: false,
@@ -213,6 +247,8 @@
  toolbarButtonClick ({ code}) {
    const $grid = xGrid.value
    selectRecords = $grid.getCheckboxRecords()
    let type=printType.value
    let faceOrientation=stateValue.value
    if ($grid) {
      switch (code) {
        case 'print': {
@@ -272,6 +308,29 @@
              ElMessage.warning(res.msg)
            }
          })
          break
        }
        case 'customLabel': {
          if(selectRecords===null ||selectRecords===''||selectRecords.length===0){
            ElMessage.warning(t('searchOrder.msgList.checkOrder'))
            return
          }
          if (type===null||type===''||type===undefined){
            ElMessage.warning('请选择自定义打印标签样式')
            return
          }
          let id = ""
          for (let i = 0; i < selectRecords.length; i++) {
            if (i + 1 === selectRecords.length) {
              id += selectRecords[i].id
            } else {
              id += selectRecords[i].id + "|"
            }
          }
          router.push({path: '/main/processCard/PrintCustomLabel', query: {type:type,faceOrientation:faceOrientation,  printList: JSON.stringify(selectRecords)}})
          break
        }
      }
@@ -415,6 +474,23 @@
<template>
  <div class="main-div-customer">
<!--    <label>标签样式:</label>-->
<!--    <el-select v-model="printType" clearable default-value="default_city" style="width: 120px">-->
<!--      <el-option-->
<!--          v-for="item in titleSelectJson['dataType']"-->
<!--          :key="item.id"-->
<!--          :label="item.name"-->
<!--          :value="item.name"-->
<!--      />-->
<!--    </el-select>-->
<!--    <el-select v-model="stateValue" class="m-2" placeholder="室内外面" style="width: 140px">-->
<!--      <el-option-->
<!--          v-for="item in stateOptions"-->
<!--          :key="item.value"-->
<!--          :label="item.label"-->
<!--          :value="item.value"-->
<!--      />-->
<!--    </el-select>-->
    <vxe-grid
        ref="xGrid"
        class="mytable-scrollbar"
@@ -481,6 +557,15 @@
    </el-dialog>
    <el-dialog
        v-model="dialogTableVisibleCustomLabel"
        destroy-on-close
        title="自定义标签"
        style="width: 80%;height:75% ">
      <PrintLabel :printList="selectRecords"
                  style="width: 100%;height: 100%" />
    </el-dialog>
    <el-dialog
        @opened="openedTable"
        v-model="printVisible"
        title="流程卡明细"
north-glass-erp/northglass-erp/src/views/pp/processCard/PrintProcess.vue
@@ -338,7 +338,6 @@
}
#printFlowCard {
  margin-top: -40px;
  text-align: center;
//font-weight: bolder; height: 600px;
}
north-glass-erp/northglass-erp/src/views/pp/processCard/ProductionScheduling.vue
@@ -420,7 +420,7 @@
          if ($table) {
            const selectRecords = $table.getCheckboxRecords()
            if (selectRecords.length == 0) {
              ElMessage.warning(t('processCard.checkProductionScheduling'))
              ElMessage.warning("请勾选排产数据")
              return;
            }
            for (let i = 0; i < selectRecords.length; i++) {
@@ -429,13 +429,13 @@
              let number = selectRecords[i].schedulingQuantity
              //计划开始、结束时间,排产数量不能为空
              if (start == null || end == null || number == null) {
                ElMessage.warning(t('processCard.saveCorrespondingValues'))
                ElMessage.warning("请填入对应的值再进行保存")
                return;
              }
            }
            let selectProcesses = processVal.value
            if (selectProcesses == null || selectProcesses == "") {
              ElMessage.warning(t('processCard.selectProductionSchedulingProcess'))
              ElMessage.warning("请选择排产工序")
              return;
            }
@@ -449,7 +449,7 @@
            //保存排产数据
            request.post("/productionScheduling/addScheduling", schedulingData.value).then((res) => {
              if (res.code == 200) {
                ElMessage.success(t('basicData.msg.saveSuccess'))
                ElMessage.success("保存成功")
                // 启用保存
                gridOptions.toolbarConfig.buttons[2].disabled = false
                router.push({
@@ -474,10 +474,10 @@
          const selectRecords = $table.getCheckboxRecords()
          if ($table) {
            if (selectRecords.length == 0) {
              ElMessage.warning(t('processCard.checkProductionScheduling'))
              ElMessage.warning("请勾选排产数据")
              return;
            }
            const type = await VXETable.modal.confirm(t('processCard.deleteThisData'))
            const type = await VXETable.modal.confirm('您确定要删除该数据?')
            if (type === 'confirm') {
              let schedulingData = ref({
                scheduling: selectRecords,
@@ -485,7 +485,7 @@
              request.post("/productionScheduling/deleteScheduling", schedulingData.value).then((res) => {
                if (res.code == 200) {
                  ElMessage.success(t('basicData.msg.deleteSuccess'))
                  ElMessage.success("删除成功")
                  location.reload();
                } else {
                  ElMessage.warning(res.msg)
@@ -501,7 +501,7 @@
          const selectRecords = $table.getCheckboxRecords()
          if ($table) {
            if (selectRecords.length == 0) {
              ElMessage.warning(t('processCard.checkProductionScheduling'))
              ElMessage.warning("请勾选排产数据")
              return;
            }
            let schedulingData = ref({
@@ -510,7 +510,7 @@
            })
            request.post("/productionScheduling/examineScheduling", schedulingData.value).then((res) => {
              if (res.code == 200) {
                ElMessage.success(t('basicData.msg.ReviewSuccess'))
                ElMessage.success("审核成功")
                location.reload();
              } else {
                ElMessage.warning(res.msg)
@@ -585,7 +585,7 @@
  let selectState = stateValue.value
  table.forEach((selectRecords) => {
    if (selectRecords.scheduling_quantity > selectRecords.pendingProductionQuantity && selectState == 1) {
      ElMessage.warning(t('processCard.schedulingQuantityNoQuantityScheduled'))
      ElMessage.warning("排产数量不能大于待排产数量")
      //禁用保存按钮
      //gridOptions.toolbarConfig.buttons[2].disabled = true
    }
@@ -604,9 +604,9 @@
        <el-date-picker
            v-model="form.date1"
            :default-time="defaultTime"
            :start-placeholder="$t('basicData.startDate')"
            :end-placeholder="$t('basicData.endDate')"
            end-placeholder="结束时间"
            format="YYYY/MM/DD"
            start-placeholder="开始时间"
            type="daterange"
            value-format="YYYY-MM-DD"
@@ -623,7 +623,7 @@
          />
        </el-select>
        &nbsp;
        <el-select v-model="stateValue" class="m-2" :placeholder="$t('processCard.whetherToScheduleProduction')" style="width: 120px">
        <el-select v-model="stateValue" class="m-2" placeholder="是否排产" style="width: 120px">
          <el-option
              v-for="item in stateOptions"
              :key="item.value"
north-glass-erp/northglass-erp/src/views/pp/productionBasicData/AddBreakageReason.vue
@@ -50,10 +50,10 @@
    showStatus: true
  },//表头参数
  columns:[
    { type: 'seq',fixed:"left", title: '自序', width: 50 },
    { type: 'seq',fixed:"left", title: t('basicData.Number'), width: 50 },
    {
      field: 'basicName',
      title: '次破原因',
      title: t('reportingWorks.breakageReason'),
      width: 1000,
      editRender: {name: 'input', attrs: {placeholder: ''}},
@@ -64,7 +64,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,
@@ -81,7 +81,7 @@
    return[
      columns.map((column, columnIndex) => {
        if (columnIndex === 0) {
          return '合计:'
          return t('basicData.total')
        }
        if (footList.includes(column.field)) {
          return sumNum(data, column.field)
@@ -116,7 +116,7 @@
          })
          request.post("/basicDataProduce/saveBreakageReason", breakageTypeData.value).then((res) => {
            if (res.code == 200) {
              ElMessage.success("保存成功")
              ElMessage.success(t('basicData.msg.saveSuccess'))
              router.push({
                path: '/main/productionBasicData/AddBreakageReason',
                query: {random: Math.random()}
north-glass-erp/northglass-erp/src/views/pp/productionBasicData/AddBreakageType.vue
@@ -49,11 +49,11 @@
    showStatus: true
  },//表头参数
  columns:[
    { type: 'seq',fixed:"left", title: '自序', width: 50 },
    { type: 'seq',fixed:"left", title: t('basicData.Number'), width: 50 },
    {
      field: 'basicName',
      title: '次破类型',
      title: t('reportingWorks.breakageType'),
      width: 1000,
      editRender: {name: 'input', attrs: {placeholder: ''}},
@@ -64,7 +64,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,
@@ -81,7 +81,7 @@
    return[
      columns.map((column, columnIndex) => {
        if (columnIndex === 0) {
          return '合计:'
          return t('basicData.total')
        }
        if (footList.includes(column.field)) {
          return sumNum(data, column.field)
@@ -117,7 +117,7 @@
          })
          request.post("/basicDataProduce/saveBreakageType", breakageTypeData.value).then((res) => {
            if (res.code == 200) {
              ElMessage.success("保存成功")
              ElMessage.success(t('basicData.msg.saveSuccess'))
              router.push({
                path: '/main/productionBasicData/AddBreakageType',
                query: {random: Math.random()}
north-glass-erp/northglass-erp/src/views/pp/productionBasicData/AddTeamGroup.vue
@@ -65,17 +65,17 @@
    showStatus: true
  },//表头参数
  columns: [
    {type: 'seq', fixed: "left", title: '自序', width: 50},
    {type: 'seq', fixed: "left", title: t('basicData.Number'), width: 50},
    {
      field: 'basicName',
      title: '班组名称',
      title: t('productionBasicData.teamName'),
      width: 600,
      editRender: {name: 'input', attrs: {placeholder: ''}},
    },
    {
      field: 'basicCategory',
      title: '所在工序',
      title: t('productionBasicData.processInvolved'),
      editRender: {},
      slots: {default: 'basicCategory_default', edit: 'basicCategory'}
    },
@@ -85,7 +85,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,
@@ -100,7 +100,7 @@
    return [
      columns.map((column, columnIndex) => {
        if (columnIndex === 0) {
          return '合计:'
          return t('basicData.total')
        }
        if (footList.includes(column.field)) {
          return sumNum(data, column.field)
@@ -136,7 +136,7 @@
          })
          request.post("/basicDataProduce/saveTeamGroup", teamGroupData.value).then((res) => {
            if (res.code == 200) {
              ElMessage.success("保存成功")
              ElMessage.success(t('basicData.msg.saveSuccess'))
              //router.push('/main/processCard/SplittingDetails?orderId=${orderId}')
              router.push({
                path: '/main/productionBasicData/AddTeamGroup',
north-glass-erp/northglass-erp/src/views/pp/productionBasicData/ProductionBasicData.vue
@@ -19,12 +19,12 @@
  <div id="main">
    <div id="div-title">
      <el-breadcrumb :separator-icon="ArrowRight">
        <el-breadcrumb-item @click="changeRouter(1)" :class="indexFlag===1?'indexTag':''" :to="{ path: '/main/productionBasicData/SelectProductionBasicData' }">基础数据查询</el-breadcrumb-item>
        <el-breadcrumb-item @click="changeRouter(2)" :class="indexFlag===2?'indexTag':''" :to="{ path: '/main/productionBasicData/AddBreakageType' }">次破类型新增</el-breadcrumb-item>
        <el-breadcrumb-item @click="changeRouter(3)" :class="indexFlag===3?'indexTag':''" :to="{ path: '/main/productionBasicData/AddBreakageReason' }">次破原因新增</el-breadcrumb-item>
        <el-breadcrumb-item @click="changeRouter(4)" :class="indexFlag===4?'indexTag':''" :to="{ path: '/main/productionBasicData/AddTeamGroup' }">班组新增新增</el-breadcrumb-item>
        <el-breadcrumb-item @click="changeRouter(1)" :class="indexFlag===1?'indexTag':''" :to="{ path: '/main/productionBasicData/SelectProductionBasicData' }">{{$t('productionBasicData.basicDataQuery')}}</el-breadcrumb-item>
        <el-breadcrumb-item @click="changeRouter(2)" :class="indexFlag===2?'indexTag':''" :to="{ path: '/main/productionBasicData/AddBreakageType' }">{{$t('productionBasicData.newTypeOfSecondaryDamageAdded')}}</el-breadcrumb-item>
        <el-breadcrumb-item @click="changeRouter(3)" :class="indexFlag===3?'indexTag':''" :to="{ path: '/main/productionBasicData/AddBreakageReason' }">{{$t('productionBasicData.reasonForSecondaryFailureAdded')}}</el-breadcrumb-item>
        <el-breadcrumb-item @click="changeRouter(4)" :class="indexFlag===4?'indexTag':''" :to="{ path: '/main/productionBasicData/AddTeamGroup' }">{{$t('productionBasicData.teamAdditionAndAddition')}}</el-breadcrumb-item>
<!--        <el-breadcrumb-item @click="changeRouter(4)" :class="indexFlag===4?'indexTag':''" :to="{ path: '/main/productionBasicData/AddMaintenanceAndRepair' }">班组人员新增新增</el-breadcrumb-item>-->
        <el-breadcrumb-item :to="{ path: '/main/processCard/SelectPrintFlowCard' }" style="display: none">打印</el-breadcrumb-item>
        <el-breadcrumb-item :to="{ path: '/main/processCard/SelectPrintFlowCard' }" style="display: none">{{$t('basicData.print')}}</el-breadcrumb-item>
      </el-breadcrumb>
    </div>
north-glass-erp/northglass-erp/src/views/pp/productionBasicData/SelectProductionBasicData.vue
@@ -126,11 +126,11 @@
  },//表头参数
  columns:[
    {type:'expand',fixed:"left",slots: { content:'content' },width: 50},
    {title: '操作', width: 140, slots: { default: 'button_slot' },fixed:"left"},
    {field: 'id', width: 60, title: 'id',filters:[{ data: '' }],slots: { filter: 'num1_filter' },filterMethod: filterChanged,},
    {field: 'basic_type',width: 370, title: '类型', showOverflow:"ellipsis" ,filters:[{ data: '' }],slots: { filter: 'num1_filter' },filterMethod: filterChanged},
    {field: 'basic_name', width: 330,title: '名称', filters:[{ data: '' }],slots: { filter: 'num1_filter' },filterMethod: filterChanged},
    {field: 'd_basic_name',width: 330, title: '类别'},
    {title: t('basicData.operate'), width: 140, slots: { default: 'button_slot' },fixed:"left"},
    {field: 'id', width: 60, title: t('productionBasicData.id'),filters:[{ data: '' }],slots: { filter: 'num1_filter' },filterMethod: filterChanged,},
    {field: 'basic_type',width: 370, title: t('machine.type'), showOverflow:"ellipsis" ,filters:[{ data: '' }],slots: { filter: 'num1_filter' },filterMethod: filterChanged},
    {field: 'basic_name', width: 330,title: t('orderBasicData.name'), filters:[{ data: '' }],slots: { filter: 'num1_filter' },filterMethod: filterChanged},
    {field: 'd_basic_name',width: 330, title: t('productionBasicData.basicName')},
  ],
  //表头按钮
  toolbarConfig: {
@@ -233,10 +233,10 @@
    </vxe-grid>
    <el-dialog v-model="dialogTableVisible" title="基础数据修改">
    <el-dialog v-model="dialogTableVisible" :title="$t('productionBasicData.basicDataEdit')">
      <el-row>
        <el-col :span="2">
          <el-text>id:</el-text>
          <el-text>{{$t('productionBasicData.id')}}:</el-text>
        </el-col>
        <el-col :span="3">
          <el-input v-model="getBasicData.id"  readonly autocomplete="off"  style="width: 220px"/>
@@ -244,7 +244,7 @@
      </el-row>
      <el-row>
        <el-col :span="2">
          <el-text>类型:</el-text>
          <el-text>{{$t('machine.type')}}:</el-text>
        </el-col>
        <el-col :span="3">
          <el-input v-model="getBasicData.basic_type" readonly  autocomplete="off"  style="width: 220px"/>
@@ -252,7 +252,7 @@
      </el-row>
      <el-row>
        <el-col :span="2">
          <el-text>名称:</el-text>
          <el-text>{{$t('orderBasicData.name')}}:</el-text>
        </el-col>
        <el-col :span="3">
          <el-input v-model="getBasicData.basic_name"  autocomplete="off"  style="width: 220px"/>
@@ -260,7 +260,7 @@
      </el-row>
      <el-row>
        <el-col :span="2">
          <el-text>类别:</el-text>
          <el-text>{{$t('productionBasicData.basicName')}}:</el-text>
        </el-col>
        <el-col :span="3">
<!--          <el-input v-model="getBasicData.d_basic_name"  autocomplete="off"  style="width: 220px"/>-->
@@ -278,9 +278,9 @@
      <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/report/CrossProcessBreaking.vue
@@ -2,27 +2,28 @@
import BasicTable from "@/components/BasicTable.vue"
import request from "@/utils/request"
import { ref} from "vue"
import {useI18n} from "vue-i18n";
const {t} = useI18n()
const childrenData = ref({
  columns:[
    {type:'expand',fixed:"left",width: 80},
    {type: 'seq',fixed:"left", title: '自序', width: 80 },
    {field: 'reportingWork.reportingWorkTime', width: 120, title: '报工时间',filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true, },
    {field: 'reportingWork.thisProcess',width: 120, title: '报工工序', sortable: true,showOverflow:"ellipsis" ,filters:[{ data: '' }],slots: { filter: 'num1_filter' }},
    {field: 'responsibleProcess',width: 120, title: '责任工序', sortable: true,showOverflow:"ellipsis" ,filters:[{ data: '' }],slots: { filter: 'num1_filter' }},
    {field: 'responsibleTeam', width: 130,title: '责任班组', sortable: true,filters:[{ data: '' }],slots: { filter: 'num1_filter' }},
    {field: 'breakageType', width: 100,title: '次破类型', sortable: true,showOverflow:"ellipsis"},
    {field: 'breakageReason', width: 100,title: '次破原因', sortable: true,showOverflow:"ellipsis"},
    {field: 'breakageQuantity', width: 100,title: '次破数量', sortable: true},
    {field: 'area',width: 100, title: '次破面积', sortable: true},
    {field: 'order.project', width: 120,title: '项目名称', sortable: true},
    {field: 'order.orderId',width: 120, title: '销售单号', sortable: true},
    {field: 'orderGlassDetail.glassChild',width: 120, title: '单片名称', sortable: true},
    {field: 'reportingWork.reportingWorkTime', width: 120, title: t('reportingWorks.reportingWorkTime'),filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true, },
    {field: 'reportingWork.thisProcess',width: 120, title: t('reportingWorks.reportingProcess'), sortable: true,showOverflow:"ellipsis" ,filters:[{ data: '' }],slots: { filter: 'num1_filter' }},
    {field: 'responsibleProcess',width: 120, title: t('reportingWorks.responsibleProcess'), sortable: true,showOverflow:"ellipsis" ,filters:[{ data: '' }],slots: { filter: 'num1_filter' }},
    {field: 'responsibleTeam', width: 130,title: t('reportingWorks.responsibleTeam'), sortable: true,filters:[{ data: '' }],slots: { filter: 'num1_filter' }},
    {field: 'breakageType', width: 100,title: t('reportingWorks.breakageType'), sortable: true,showOverflow:"ellipsis"},
    {field: 'breakageReason', width: 100,title: t('reportingWorks.breakageReason'), sortable: true,showOverflow:"ellipsis"},
    {field: 'breakageQuantity', width: 100,title: t('reportingWorks.quantityBroken'), sortable: true},
    {field: 'area',width: 100, title: t('reportingWorks.wornArea'), sortable: true},
    {field: 'order.project', width: 120,title: t('order.project'), sortable: true},
    {field: 'order.orderId',width: 120, title: t('order.orderId'), sortable: true},
    {field: 'orderGlassDetail.glassChild',width: 120, title: t('reportingWorks.glassChild'), sortable: true},
  ],//表格表头字段
  data:[],//表格数据
  url :'/report/crossProcessBreaking',
  exportUrl :'/report/exportCrossProcessBreaking',
  exportName:'跨工序次破报表',
  exportName:t('report.crossProcessBreakdown'),
  footList:['breakageQuantity','area']
})
north-glass-erp/northglass-erp/src/views/pp/report/DamageReport.vue
@@ -20,7 +20,7 @@
})
//工序
const value = ref('磨边')
const value = ref(t('machine.edgeGrinding'))
//表尾求和
const sumNum = (list, field) => {
@@ -214,42 +214,42 @@
  },//表头参数
  columns: [
    {type: 'expand', fixed: "left", slots: {content: 'content'}, width: 50},
    {type: 'seq', fixed: "left", title: '自序', width: 50},
    {type: 'seq', fixed: "left", title: t('basicData.Number'), width: 50},
    {
      field: 'orderId', width: 120, title: '销售单号',filters:[{ data: '' }],slots: { filter: 'num1_filter' }
      field: 'orderId', width: 120, title: t('order.orderId'),filters:[{ data: '' }],slots: { filter: 'num1_filter' }
    },
    {
      field: 'project',
      width: 120,
      title: '项目名称',
      title: t('order.project'),
      showOverflow: "ellipsis",
      filters:[{ data: '' }],slots: { filter: 'num1_filter' }
    },
    {
      field: 'processId', width: 130, title: '流程卡号', filters:[{ data: '' }],slots: { filter: 'num1_filter' }
      field: 'processId', width: 130, title: t('processCard.processId'), filters:[{ data: '' }],slots: { filter: 'num1_filter' }
    },
    {
      field: 'orderNumber', width: 120, title: '订单序号',filters:[{ data: '' }],slots: { filter: 'num1_filter' }
      field: 'orderNumber', width: 120, title: t('order.OrderNum'),filters:[{ data: '' }],slots: { filter: 'num1_filter' }
    },
    {
      field: 'technologyNumber', width: 100, title: '小片顺序', filters:[{ data: '' }],slots: { filter: 'num1_filter' }
      field: 'technologyNumber', width: 100, title: t('processCard.technologyNumber'), filters:[{ data: '' }],slots: { filter: 'num1_filter' }
    },
    {
      field: 'reportingWorkTime',
      width: 100,
      title: '报工时间',
      title: t('reportingWorks.reportingWorkTime'),
      type: 'date',
      attrs: {placeholder: '', type: 'date'},
    },
    {field: 'responsibleProcess', width: 120, title: '责任工序',filters:[{ data: '' }],slots: { filter: 'num1_filter' }, showOverflow: "ellipsis"},
    {field: 'responsibleTeam', width: 100, title: '责任班组',filters:[{ data: '' }],slots: { filter: 'num1_filter' }},
    {field: 'responsibleEquipment', width: 120, title: '责任设备',filters:[{ data: '' }],slots: { filter: 'num1_filter' }},
    {field: 'breakageType', width: 120, title: '次破类型',filters:[{ data: '' }],slots: { filter: 'num1_filter' }},
    {field: 'breakageReason', width: 120, title: '次破原因',filters:[{ data: '' }],slots: { filter: 'num1_filter' }},
    {field: 'breakageQuantity', width: 120, title: '次破数量'},
    {field: 'area', width: 120, title: '次破面积'},
    {field: 'personnel', width: 120, title: '责任人员'},
    {field: 'glassChild', width: 120, title: '单片名称'},
    {field: 'responsibleProcess', width: 120, title: t('reportingWorks.responsibleProcess'),filters:[{ data: '' }],slots: { filter: 'num1_filter' }, showOverflow: "ellipsis"},
    {field: 'responsibleTeam', width: 100, title: t('reportingWorks.responsibleTeam'),filters:[{ data: '' }],slots: { filter: 'num1_filter' }},
    {field: 'responsibleEquipment', width: 120, title: t('reportingWorks.responsibleEquipment'),filters:[{ data: '' }],slots: { filter: 'num1_filter' }},
    {field: 'breakageType', width: 120, title: t('reportingWorks.breakageType'),filters:[{ data: '' }],slots: { filter: 'num1_filter' }},
    {field: 'breakageReason', width: 120, title: t('reportingWorks.breakageReason'),filters:[{ data: '' }],slots: { filter: 'num1_filter' }},
    {field: 'breakageQuantity', width: 120, title: t('reportingWorks.quantityBroken')},
    {field: 'area', width: 120, title: t('reportingWorks.wornArea')},
    {field: 'personnel', width: 120, title: t('reportingWorks.responsiblePersonnel')},
    {field: 'glassChild', width: 120, title: t('reportingWorks.glassChild')},
  ],//表头按钮
  toolbarConfig: {
@@ -287,15 +287,15 @@
      <el-row :gutter="0">
        <el-date-picker
            v-model="form.date1"
            end-placeholder="结束时间"
            :start-placeholder="$t('basicData.startDate')"
            :end-placeholder="$t('basicData.endDate')"
            format="YYYY/MM/DD"
            start-placeholder="开始时间"
            style="width: 100px"
            type="daterange"
            value-format="YYYY-MM-DD"
        />
        &nbsp;&nbsp;
        <el-button type="primary" @click="getWorkOrder">查询</el-button>
        <el-button type="primary" @click="getWorkOrder">{{$t('basicData.search')}}</el-button>
      </el-row>
    </div>
@@ -321,9 +321,9 @@
      <template #toolbar_buttons>
        <vxe-button style="margin-right: 0.5rem"
                    @click="exportExcel('/report/exportDamageReport',
                                          '次破明细报表',
                                          t('report.secondaryBrokenReport'),
                                          form.date1)">
          导出</vxe-button>
          {{t('basicData.export')}}</vxe-button>
      </template>
      <template #num1_filter="{ column, $panel }">
north-glass-erp/northglass-erp/src/views/pp/report/OrderPlanDecomposition.vue
@@ -21,7 +21,7 @@
})
//工序
const value = ref('磨边')
const value = ref(t('machine.edgeGrinding'))
//表尾求和
const sumNum = (list, field) => {
@@ -201,16 +201,16 @@
  },//表头参数
  columns: [
    {type: 'expand', fixed: "left", slots: {content: 'content'}, width: 50},
    {type: 'seq', fixed: "left", title: '自序', width: 50},
    {type: 'seq', fixed: "left", title: t('basicData.Number'), width: 50},
    {
      field: 'order_id', width: 120, title: '销售单号', filters: [{data: ''}],
      field: 'order_id', width: 120, title: t('order.orderId'), filters: [{data: ''}],
      slots: {filter: 'num1_filter'},
      filterMethod: filterChanged
    },
    {
      field: 'customer_name',
      width: 120,
      title: '客户名称',
      title: t('customer.customerName'),
      showOverflow: "ellipsis",
      filters: [{data: ''}],
      slots: {filter: 'num1_filter'},
@@ -219,40 +219,40 @@
    {
      field: 'project',
      width: 120,
      title: '项目名称',
      title: t('order.project'),
      showOverflow: "ellipsis",
      filters: [{data: ''}],
      slots: {filter: 'num1_filter'},
      filterMethod: filterChanged
    },
    {
      field: 'batch', width: 130, title: '批次', filters: [{data: ''}],
      field: 'batch', width: 130, title: t('order.batch'), filters: [{data: ''}],
      slots: {filter: 'num1_filter'},
      filterMethod: filterChanged
    },
    {
      field: 'quantity', width: 120, title: '订单数量', filters: [{data: ''}],
      field: 'quantity', width: 120, title: t('order.quantity'), filters: [{data: ''}],
      slots: {filter: 'num1_filter'},
      filterMethod: filterChanged
    },
    {
      field: 'area', width: 100, title: '订单面积', filters: [{data: ''}],
      field: 'area', width: 100, title: t('order.area'), filters: [{data: ''}],
      slots: {filter: 'num1_filter'},
      filterMethod: filterChanged
    },
    {
      field: 'create_time',
      width: 100,
      title: '分架时间',
      title: t('processCard.splitFrameTime'),
      type: 'date',
      attrs: {placeholder: '', type: 'date'},
    },
    {field: 'startTime', width: 120, title: '切割开始时间', showOverflow: "ellipsis"},
    {field: 'completionsNum', width: 100, title: '完工数量'},
    {field: 'received_quantity', width: 120, title: '入库数量'},
    {field: 'receivedNo', width: 120, title: '未入库数量'},
    {field: 'accomplish', width: 120, title: '是否清单'},
    {field: 'daysDifference', width: 120, title: '生产天数'},
    {field: 'startTime', width: 120, title: t('report.startTime'), showOverflow: "ellipsis"},
    {field: 'completionsNum', width: 100, title: t('reportingWorks.completedQuantity')},
    {field: 'received_quantity', width: 120, title: t('report.inventoryNum')},
    {field: 'receivedNo', width: 120, title: t('report.receivedNo')},
    {field: 'accomplish', width: 120, title: t('report.accomplish')},
    {field: 'daysDifference', width: 120, title: t('report.daysDifference')},
  ],//表头按钮
  toolbarConfig: {
@@ -296,15 +296,15 @@
      <el-row :gutter="0">
        <el-date-picker
            v-model="form.date1"
            end-placeholder="结束时间"
            :start-placeholder="$t('basicData.startDate')"
            :end-placeholder="$t('basicData.endDate')"
            format="YYYY/MM/DD"
            start-placeholder="开始时间"
            style="width: 100px"
            type="daterange"
            value-format="YYYY-MM-DD"
        />
        &nbsp;&nbsp;
        <el-button type="primary" @click="getWorkOrder">查询</el-button>
        <el-button type="primary" @click="getWorkOrder">{{$t('basicData.search')}}</el-button>
      </el-row>
    </div>
@@ -327,10 +327,10 @@
      </template>
      <template #toolbar_buttons>
        <vxe-button style="margin-right: 0.5rem"
                    @click="exportExcel('/report/exportOrderPlanDecomposition',
                                          '订单计划分解报表',
                    @click="exportExcel('/report/orderPlanDecomposition',
                                          t('report.orderPlanDecomposition'),
                                          form.date1)">
          导出</vxe-button>
          {{t('basicData.export')}}</vxe-button>
      </template>
      <template #num1_filter="{ column, $panel }">
north-glass-erp/northglass-erp/src/views/pp/report/ProcessCardProgress.vue
@@ -48,17 +48,17 @@
})
const columns = [
  // {type:'expand',fixed:"left",slots: { content:'content' },width: 50},
  {field: 'product_name', width: 150, title: '产品名称',filters:[{ data: '' }],slots: { filter: 'num1_filter' },filterMethod: filterChanged},
  {field: 'glass_child',width: 130, title: '单片名称' ,filters:[{ data: '' }],slots: { filter: 'num1_filter' },filterMethod: filterChanged},
  {field: 'order_type', width: 120,title: '订单类型',filters:[{ data: '' }],slots: { filter: 'num1_filter' },filterMethod: filterChanged},
  {field: 'process_id',width: 110, title: '流程卡号',filters:[{ data: '' }],slots: { filter: 'num1_filter' },filterMethod: filterChanged},
  {field: 'order_number', width: 90,title: '订单序号',showOverflow:"ellipsis"},
  {field: 'technology_number', width: 90,title: '小片顺序',showOverflow:"ellipsis"},
  {field: 'quantity', width: 90,title: '数量'},
  {field: 'broken_num',width: 90, title: '次破数量'},
  {field: 'shippedQuantity',width: 120, title: '发货数量'},
  {field: 'inventory',width: 120, title: '入库数量'},
  {field: 'inventoryArea',width: 120, title: '入库面积'},
  {field: 'product_name', width: 150, title: t('order.product'),filters:[{ data: '' }],slots: { filter: 'num1_filter' },filterMethod: filterChanged},
  {field: 'glass_child',width: 130, title:  t('reportingWorks.glassChild') ,filters:[{ data: '' }],slots: { filter: 'num1_filter' },filterMethod: filterChanged},
  {field: 'order_type', width: 120,title: t('order.orderType'),filters:[{ data: '' }],slots: { filter: 'num1_filter' },filterMethod: filterChanged},
  {field: 'process_id',width: 110, title: t('processCard.processId'),filters:[{ data: '' }],slots: { filter: 'num1_filter' },filterMethod: filterChanged},
  {field: 'order_number', width: 90,title: t('order.OrderNum'),showOverflow:"ellipsis"},
  {field: 'technology_number', width: 90,title: t('processCard.technologyNumber'),showOverflow:"ellipsis"},
  {field: 'quantity', width: 90,title: t('order.quantity')},
  {field: 'broken_num',width: 90, title: t('reportingWorks.quantityBroken')},
  {field: 'shippedQuantity',width: 120, title: t('report.shippedQuantity')},
  {field: 'inventory',width: 120, title: t('report.inventoryNum')},
  {field: 'inventoryArea',width: 120, title: t('report.inventoryArea')},
]
//需要合并的列
let column = [1,3,8]
@@ -67,7 +67,7 @@
  request.post(`/report/processCardProgress/${form.orderId}`,column).then((res) => {
    if (res.code == 200) {
      if(res.data.data.length===0){
        ElMessage.warning('未查询到此订单流程卡数据')
        ElMessage.warning(t('report.noDataFoundForThisOrder'))
        return
      }
      gridOptions.columns = JSON.parse(JSON.stringify(columns))
north-glass-erp/northglass-erp/src/views/pp/report/ProcessToBeCompleted.vue
@@ -20,7 +20,7 @@
})
//工序
const value = ref('磨边')
const value = ref(t('machine.edgeGrinding'))
//表尾求和
const sumNum = (list, field) => {
@@ -223,51 +223,51 @@
  },//表头参数
  columns: [
    {type: 'expand', fixed: "left", slots: {content: 'content'}, width: 50},
    {type: 'seq', fixed: "left", title: '自序', width: 50},
    {field: 'create_time', width: 120, title: '下单时间'},
    {field: 'delivery_date', width: 120, title: '交货日期'},
    {type: 'seq', fixed: "left", title: t('basicData.Number'), width: 50},
    {field: 'create_time', width: 120, title:  t('report.orderTime')},
    {field: 'delivery_date', width: 120, title:  t('report.deliveryDate')},
    {
      field: 'order_id', width: 120, title: '销售单号', filters: [{data: ''}],
      field: 'order_id', width: 120, title: t('order.orderId'), filters: [{data: ''}],
      slots: {filter: 'num1_filter'},
      filterMethod: filterChanged
    },
    {
      field: 'process_id',
      width: 120,
      title: '流程卡号',
      title: t('processCard.processId'),
      showOverflow: "ellipsis",
      filters: [{data: ''}],
      slots: {filter: 'num1_filter'},
      filterMethod: filterChanged
    },
    {
      field: 'customer_name', width: 130, title: '客户名称', filters: [{data: ''}],
      field: 'customer_name', width: 130, title: t('customer.customerName'), filters: [{data: ''}],
      slots: {filter: 'num1_filter'},
      filterMethod: filterChanged
    },
    {
      field: 'project', width: 120, title: '项目名称', filters: [{data: ''}],
      field: 'project', width: 120, title: t('order.project'), filters: [{data: ''}],
      slots: {filter: 'num1_filter'},
      filterMethod: filterChanged
    },
    {
      field: 'batch', width: 100, title: '批次', filters: [{data: ''}],
      field: 'batch', width: 100, title: t('order.batch'), filters: [{data: ''}],
      slots: {filter: 'num1_filter'},
      filterMethod: filterChanged
    },
    {field: 'order_number', width: 100, title: '序号'},
    {field: 'technology_number', width: 120, title: '小片顺序', showOverflow: "ellipsis"},
    {field: 'glass_child', width: 100, title: '单片名称'},
    {field: 'child_width', width: 120, title: '宽'},
    {field: 'child_height', width: 120, title: '高'},
    {field: 'quantity', width: 120, title: '订单数量'},
    {field: 'childArea', width: 120, title: '单片面积'},
    {field: 'actualArea', width: 120, title: '实际面积'},
    {field: 'completeNum', width: 120, title: '已完成数量'},
    {field: 'completeArea', width: 120, title: '已完成面积'},
    {field: 'incompleteNum', width: 120, title: '未完成数量'},
    {field: 'incompleteArea', width: 120, title: '未完成面积'},
    {field: 'product_name', width: 120, title: '成品名称'},
    {field: 'order_number', width: 100, title: t('order.OrderNum')},
    {field: 'technology_number', width: 120, title: t('processCard.technologyNumber'), showOverflow: "ellipsis"},
    {field: 'glass_child', width: 100, title: t('reportingWorks.glassChild')},
    {field: 'child_width', width: 120, title: t('order.width')},
    {field: 'child_height', width: 120, title: t('order.height')},
    {field: 'quantity', width: 120, title: t('order.quantity')},
    {field: 'childArea', width: 120, title: t('order.trueArea')},
    {field: 'actualArea', width: 120, title: t('order.trueGrossArea')},
    {field: 'completeNum', width: 120, title: t('report.completedQuantity')},
    {field: 'completeArea', width: 120, title: t('report.completedArea')},
    {field: 'incompleteNum', width: 120, title: t('report.unfinishedQuantity')},
    {field: 'incompleteArea', width: 120, title: t('report.unfinishedArea')},
    {field: 'product_name', width: 120, title: t('order.product')},
  ],//表头按钮
  toolbarConfig: {
@@ -312,12 +312,12 @@
    inputProject = null
  }
  if(date===null){
    ElMessage.warning("请先选择日期")
    ElMessage.warning(t('report.pleaseSelectADateFirst'))
    return
  }
  if(processes===null){
    ElMessage.warning("请先选择工序")
    ElMessage.warning(t('report.pleaseSelectAProcessFirst'))
    return
  }
@@ -326,7 +326,7 @@
  const timeDiff = Math.abs(date2.getTime() - date1.getTime());
  const daysDiff = timeDiff / (1000 * 3600 * 24);
  if(Math.floor(daysDiff)>180){
    ElMessage.warning("导出的筛选时间不能超过180天")
    ElMessage.warning(t('report.theFilteringTimeForExportCannotExceed180Days'))
    return
  }
   let dataMp = ref({
@@ -364,9 +364,9 @@
        <el-date-picker
            v-model="form.date1"
            end-placeholder="结束时间"
            :start-placeholder="$t('basicData.startDate')"
            :end-placeholder="$t('basicData.endDate')"
            format="YYYY/MM/DD"
            start-placeholder="开始时间"
            style="width: 100px"
            type="daterange"
            value-format="YYYY-MM-DD"
@@ -374,7 +374,7 @@
        &nbsp;&nbsp;
        <el-input v-model="form.orderId" :placeholder="$t('order.orderId')" clearable style="width: 130px"></el-input>
        &nbsp;&nbsp;
        <el-input v-model="form.project" clearable placeholder="项目名称" style="width: 130px"></el-input>
        <el-input v-model="form.project" clearable :placeholder="$t('order.project')" style="width: 130px"></el-input>
        &nbsp;
        <el-select v-model="value" clearable default-value="default_city" style="width: 120px">
          <el-option
@@ -384,7 +384,7 @@
              :value="item.basic_name"
          />
        </el-select>
        <el-button type="primary" @click="getWorkOrder">查询</el-button>
        <el-button type="primary" @click="getWorkOrder">{{$t('basicData.search')}}</el-button>
      </el-row>
    </div>
@@ -408,17 +408,17 @@
      <!--左边固定显示的插槽-->
      <template #button_slot="{ row }">
        <el-button link size="small" type="primary" @click="getTableRow(row,'edit')">编辑</el-button>
        <el-button link size="small" type="primary" @click="getTableRow(row,'setType')">反审</el-button>
        <el-button link size="small" type="primary" @click="getTableRow(row,'delete')">删除</el-button>
        <el-button link size="small" type="primary" @click="getTableRow(row,'edit')">{{$t('basicData.edit')}}</el-button>
        <el-button link size="small" type="primary" @click="getTableRow(row,'setType')">{{$t('basicData.cancelReview')}}</el-button>
        <el-button link size="small" type="primary" @click="getTableRow(row,'delete')">{{$t('basicData.delete')}}</el-button>
      </template>
      <template #toolbar_buttons>
        <vxe-button style="margin-right: 0.5rem"
                    @click="exportExcel('/report/exportProcessToBeCompleted',
                                          '工序待完成报表',
                                          t('report.processToBeCompleted'),
                                          form.date1)">
          导出</vxe-button>
          {{t('basicData.export')}}</vxe-button>
      </template>
      <template #num1_filter="{ column, $panel }">
north-glass-erp/northglass-erp/src/views/pp/report/ProductionSchedule.vue
@@ -57,18 +57,18 @@
})
const columns = [
  {type:'expand',fixed:"left",slots: { content:'content' },width: 50},
  {field: 'order_number', width: 150, title: '订单序号',filters:[{ data: '' }],slots: { filter: 'num1_filter' },filterMethod: filterChanged},
  {field: 'shape',width: 130, title: '形状' ,filters:[{ data: '' }],slots: { filter: 'num1_filter' },filterMethod: filterChanged},
  {field: 'product_name', width: 120,title: '产品名称',filters:[{ data: '' }],slots: { filter: 'num1_filter' },filterMethod: filterChanged},
  {field: 'child_width',width: 110, title: '宽',filters:[{ data: '' }],slots: { filter: 'num1_filter' },filterMethod: filterChanged},
  {field: 'child_height', width: 90,title: '高',showOverflow:"ellipsis"},
  {field: 'quantity', width: 90,title: '数量'},
  {field: 'technology_number',width: 90, title: '小片顺序'},
  {field: 'glass_child',width: 120, title: '单片名称'},
  {field: 'inventoryNum',width: 120, title: '入库数量'},
  {field: 'inventoryArea',width: 120, title: '入库面积'},
  {field: 'shippedQuantity',width: 120, title: '发货数量'},
  {field: 'area',width: 120, title: '发货面积'},
  {field: 'order_number', width: 150, title: t('order.OrderNum'),filters:[{ data: '' }],slots: { filter: 'num1_filter' },filterMethod: filterChanged},
  {field: 'shape',width: 130, title: t('order.shape') ,filters:[{ data: '' }],slots: { filter: 'num1_filter' },filterMethod: filterChanged},
  {field: 'product_name', width: 120,title: t('order.product'),filters:[{ data: '' }],slots: { filter: 'num1_filter' },filterMethod: filterChanged},
  {field: 'child_width',width: 110, title: t('order.width'),filters:[{ data: '' }],slots: { filter: 'num1_filter' },filterMethod: filterChanged},
  {field: 'child_height', width: 90,title: t('order.height'),showOverflow:"ellipsis"},
  {field: 'quantity', width: 90,title: t('order.quantity')},
  {field: 'technology_number',width: 90, title: t('processCard.technologyNumber')},
  {field: 'glass_child',width: 120, title: t('reportingWorks.glassChild')},
  {field: 'inventoryNum',width: 120, title: t('report.inventoryNum')},
  {field: 'inventoryArea',width: 120, title: t('report.inventoryArea')},
  {field: 'shippedQuantity',width: 120, title: t('report.shippedQuantity')},
  {field: 'area',width: 120, title: t('report.area')},
]
//需要合并的列
let column = [1,2,3]
@@ -77,7 +77,7 @@
  request.post(`/report/productionSchedule/${form.orderId}`,column).then((res) => {
    if (res.code == 200) {
      if(res.data.data.length===0){
        ElMessage.warning('未查询到此订单数据')
        ElMessage.warning(t('report.noDataFoundForThisOrder'))
        return
      }
      gridOptions.columns = JSON.parse(JSON.stringify(columns))
north-glass-erp/northglass-erp/src/views/pp/report/QualityReport.vue
@@ -22,7 +22,7 @@
})
//工序
const value = ref('磨边')
const value = ref(t('machine.edgeGrinding'))
//表尾求和
const sumNum = (list, field) => {
@@ -202,16 +202,16 @@
  },//表头参数
  columns: [
    {type: 'expand', fixed: "left", slots: {content: 'content'}, width: 50},
    {type: 'seq', fixed: "left", title: '自序', width: 50},
    {type: 'seq', fixed: "left", title: t('basicData.Number'), width: 50},
    {
      field: 'order_id', width: 120, title: '销售单号', filters: [{data: ''}],
      field: 'order_id', width: 120, title: t('order.orderId'), filters: [{data: ''}],
      slots: {filter: 'num1_filter'},
      filterMethod: filterChanged
    },
    {
      field: 'customer_name',
      width: 120,
      title: '客户名称',
      title: t('customer.customerName'),
      showOverflow: "ellipsis",
      filters: [{data: ''}],
      slots: {filter: 'num1_filter'},
@@ -220,39 +220,39 @@
    {
      field: 'project',
      width: 120,
      title: '项目名称',
      title: t('order.project'),
      showOverflow: "ellipsis",
      filters: [{data: ''}],
      slots: {filter: 'num1_filter'},
      filterMethod: filterChanged
    },
    {
      field: 'order_number', width: 130, title: '订单序号', filters: [{data: ''}],
      field: 'order_number', width: 130, title: t('order.OrderNum'), filters: [{data: ''}],
      slots: {filter: 'num1_filter'},
      filterMethod: filterChanged
    },
    {
      field: 'technology_number', width: 120, title: '小片顺序', filters: [{data: ''}],
      field: 'technology_number', width: 120, title: t('processCard.technologyNumber'), filters: [{data: ''}],
      slots: {filter: 'num1_filter'},
      filterMethod: filterChanged
    },
    {
      field: 'product_name', width: 100, title: '产品名称', filters: [{data: ''}],
      field: 'product_name', width: 100, title: t('order.product'), filters: [{data: ''}],
      slots: {filter: 'num1_filter'},
      filterMethod: filterChanged
    },
    {
      field: 'quantity',
      width: 100,
      title: '订单数量',
      title:  t('order.quantity'),
      type: 'date',
      attrs: {placeholder: '', type: 'date'},
    },
    {field: 'quantityMax', width: 120, title: '投入数量', showOverflow: "ellipsis"},
    {field: 'breakage_quantity', width: 100, title: '次破数量'},
    {field: 'patch_num', width: 120, title: '补片数量'},
    {field: 'received_quantity', width: 120, title: '入库数量'},
    {field: 'finished', width: 120, title: '成品率'},
    {field: 'quantityMax', width: 120, title: t('report.quantityMax'), showOverflow: "ellipsis"},
    {field: 'breakage_quantity', width: 100, title: t('reportingWorks.quantityBroken')},
    {field: 'patch_num', width: 120, title:  t('reportingWorks.quantityBroken')},
    {field: 'received_quantity', width: 120, title: t('report.patchNum')},
    {field: 'finished', width: 120, title: t('report.finished')},
  ],//表头按钮
  toolbarConfig: {
@@ -293,15 +293,15 @@
      <el-row :gutter="0">
        <el-date-picker
            v-model="form.date1"
            end-placeholder="结束时间"
            :start-placeholder="$t('basicData.startDate')"
            :end-placeholder="$t('basicData.endDate')"
            format="YYYY/MM/DD"
            start-placeholder="开始时间"
            style="width: 100px"
            type="daterange"
            value-format="YYYY-MM-DD"
        />
        &nbsp;&nbsp;
        <el-button type="primary" @click="getWorkOrder">查询</el-button>
        <el-button type="primary" @click="getWorkOrder">{{$t('basicData.search')}}</el-button>
      </el-row>
    </div>
@@ -326,9 +326,9 @@
      <template #toolbar_buttons>
        <vxe-button style="margin-right: 0.5rem"
                    @click="exportExcel('/report/exportQualityReport',
                                          '品质报表',
                                          t('report.qualityReport'),
                                          form.date1)">
          导出</vxe-button>
          {{t('basicData.export')}}</vxe-button>
      </template>
      <template #num1_filter="{ column, $panel }">
north-glass-erp/northglass-erp/src/views/pp/report/RawMaterialRequisition.vue
@@ -22,7 +22,7 @@
})
//工序
const value = ref('磨边')
const value = ref(t('machine.edgeGrinding'))
//表尾求和
const sumNum = (list, field) => {
@@ -202,38 +202,38 @@
  },//表头参数
  columns: [
    {type: 'expand', fixed: "left", slots: {content: 'content'}, width: 50},
    {type: 'seq', fixed: "left", title: '自序', width: 50},
    {type: 'seq', fixed: "left", title: t('basicData.Number'), width: 50},
    {
      field: 'project_no',
      width: 120,
      title: '工程编号',
      title: t('report.projectNo'),
      showOverflow: "ellipsis",
      filters: [{data: ''}],
      slots: {filter: 'num1_filter'},
      filterMethod: filterChanged
    },
    {
      field: 'material_name', width: 120, title: '物料名称', filters: [{data: ''}],
      field: 'material_name', width: 120, title: t('mainIngredient.materialName'), filters: [{data: ''}],
      slots: {filter: 'num1_filter'},
      filterMethod: filterChanged
    },
    {
      field: 'producer',title: '原片产地', filters: [{data: ''}],
      field: 'producer',title: t('mainIngredient.producer'), filters: [{data: ''}],
      slots: {filter: 'num1_filter'},
      filterMethod: filterChanged
    },
    {
      field: 'width',
      title: '宽',
      title: t('order.width'),
      type: 'date',
      attrs: {placeholder: '', type: 'date'},
    },
    {field: 'height',  title: '高', showOverflow: "ellipsis"},
    {field: 'quantity', title: '已领数量'},
    {field: 'area', title: '已领面积'},
    {field: 'date_of_manufacture',  title: '原片生产日期'},
    {field: 'date',  title: '领出日期'},
    {field: 'height',  title: t('order.height'), showOverflow: "ellipsis"},
    {field: 'quantity', title: t('report.quantityClaimed')},
    {field: 'area', title: t('report.areaClaimed')},
    {field: 'date_of_manufacture',  title: t('mainIngredient.dateOfManufacture')},
    {field: 'date',  title: t('report.dateClaimed')},
  ],//表头按钮
  toolbarConfig: {
@@ -274,15 +274,15 @@
      <el-row :gutter="0">
        <el-date-picker
            v-model="form.date1"
            end-placeholder="结束时间"
            :start-placeholder="$t('basicData.startDate')"
            :end-placeholder="$t('basicData.endDate')"
            format="YYYY/MM/DD"
            start-placeholder="开始时间"
            style="width: 100px"
            type="daterange"
            value-format="YYYY-MM-DD"
        />
        &nbsp;&nbsp;
        <el-button type="primary" @click="getWorkOrder">查询</el-button>
        <el-button type="primary" @click="getWorkOrder">{{$t('basicData.search')}}</el-button>
      </el-row>
    </div>
@@ -316,9 +316,9 @@
      <template #toolbar_buttons>
        <vxe-button style="margin-right: 0.5rem"
                    @click="exportExcel('/report/exportRawMaterialRequisition',
                                          '原片领料报表',
                                          t('report.rawMaterialRequisition'),
                                          form.date1)">
          导出</vxe-button>
          {{t('basicData.export')}}</vxe-button>
      </template>
    </vxe-grid>
north-glass-erp/northglass-erp/src/views/pp/report/Report.vue
@@ -45,12 +45,12 @@
      >
        <el-sub-menu index="1" >
          <template #title >生产报表</template>
          <el-menu-item index="/main/report/WorkInProgress">在制品报表</el-menu-item>
          <el-menu-item index="/main/report/ProcessToBeCompleted">工序待完成</el-menu-item>
          <el-menu-item index="/main/report/ProductionSchedule">生产发货进度</el-menu-item>
          <el-menu-item index="/main/report/ProcessCardProgress">流程卡进度</el-menu-item>
          <el-menu-item index="/main/report/OrderPlanDecomposition">订单计划分解</el-menu-item>
          <template #title >{{$t('report.productionReport')}}</template>
          <el-menu-item index="/main/report/WorkInProgress">{{$t('report.workInProgressReport')}}</el-menu-item>
          <el-menu-item index="/main/report/ProcessToBeCompleted">{{$t('report.processToBeCompleted')}}</el-menu-item>
          <el-menu-item index="/main/report/ProductionSchedule">{{$t('report.productionAndShippingProgress')}}</el-menu-item>
          <el-menu-item index="/main/report/ProcessCardProgress">{{$t('report.processCardProgress')}}</el-menu-item>
          <el-menu-item index="/main/report/OrderPlanDecomposition">{{$t('report.orderPlanDecomposition')}}</el-menu-item>
        </el-sub-menu>
<!--        <el-sub-menu  index="2" popper-class="test">-->
<!--          <template #title>产量报表</template>-->
@@ -58,16 +58,16 @@
<!--          <el-menu-item index="/main/report/EquipmentOutput">设备产量</el-menu-item>-->
<!--        </el-sub-menu>-->
        <el-sub-menu  index="3" popper-class="test">
          <template #title>次破报表</template>
          <el-menu-item  index="/main/report/DamageReport">次破报表</el-menu-item>
          <el-menu-item index="/main/report/CrossProcessBreaking">跨工序次破</el-menu-item>
          <template #title>{{$t('report.secondaryBrokenReport')}}</template>
          <el-menu-item  index="/main/report/DamageReport">{{$t('report.secondaryBrokenReport')}}</el-menu-item>
          <el-menu-item index="/main/report/CrossProcessBreaking">{{$t('report.crossProcessBreakdown')}}</el-menu-item>
        </el-sub-menu>
        <el-menu-item  index="/main/report/TeamOutput">班组产量</el-menu-item>
        <el-menu-item  index="/main/report/SplittingDetailsOutside">分架明细</el-menu-item>
        <el-menu-item  index="/main/report/TaskCompletionStatus">任务完成情况</el-menu-item>
        <el-menu-item  index="/main/report/RawMaterialRequisition">原片领料</el-menu-item>
        <el-menu-item  index="/main/report/QualityReport">品质报表</el-menu-item>
        <el-menu-item  index="/main/report/Yield">成品率报表</el-menu-item>
        <el-menu-item  index="/main/report/TeamOutput">{{$t('report.teamOutput')}}</el-menu-item>
        <el-menu-item  index="/main/report/SplittingDetailsOutside">{{$t('report.splittingDetails')}}</el-menu-item>
        <el-menu-item  index="/main/report/TaskCompletionStatus">{{$t('report.TaskCompletionStatus')}}</el-menu-item>
        <el-menu-item  index="/main/report/RawMaterialRequisition">{{$t('report.rawMaterialRequisition')}}</el-menu-item>
        <el-menu-item  index="/main/report/QualityReport">{{$t('report.qualityReport')}}</el-menu-item>
        <el-menu-item  index="/main/report/Yield">{{$t('report.yieldReport')}}</el-menu-item>
<!--        <el-menu-item  index="/main/report/OrderBOMOutside">BOM报表</el-menu-item>-->
      </el-menu>
    </div>
north-glass-erp/northglass-erp/src/views/pp/report/SplittingDetailsOutside.vue
@@ -187,43 +187,43 @@
  },//表头参数
  columns: [
    {type: 'expand', fixed: "left", slots: {content: 'content'}, width: 50},
    {type: 'seq', fixed: "left", title: '自序', width: 50},
    {type: 'seq', fixed: "left", title: t('basicData.Number'), width: 50},
    {
      field: 'processId', width: 120, title: '流程卡号', filters: [{data: ''}],
      field: 'processId', width: 120, title: t('processCard.processId'), filters: [{data: ''}],
      slots: {filter: 'num1_filter'},
      filterMethod: filterChanged
    },
    {
      field: 'orderNumber',
      width: 120,
      title: '订单序号',
      title: t('order.OrderNum'),
      showOverflow: "ellipsis",
      filters: [{data: ''}],
      slots: {filter: 'num1_filter'},
      filterMethod: filterChanged
    },
    {
      field: 'technologyNumber', width: 130, title: '小片顺序', filters: [{data: ''}],
      field: 'technologyNumber', width: 130, title: t('processCard.technologyNumber'), filters: [{data: ''}],
      slots: {filter: 'num1_filter'},
      filterMethod: filterChanged
    },
    {
      field: 'project', width: 120, title: '项目名称', filters: [{data: ''}],
      field: 'project', width: 120, title: t('order.project'), filters: [{data: ''}],
      slots: {filter: 'num1_filter'},
      filterMethod: filterChanged
    },
    {
      field: 'batch', width: 100, title: '批次', filters: [{data: ''}],
      field: 'batch', width: 100, title: t('order.batch'), filters: [{data: ''}],
      slots: {filter: 'num1_filter'},
      filterMethod: filterChanged
    },
    {field: 'childWidth', width: 120, title: '宽'},
    {field: 'childHeight', width: 120, title: '高'},
    {field: 'quantity', width: 120, title: '订单数'},
    {field: 'childWidth', width: 120, title: t('order.width')},
    {field: 'childHeight', width: 120, title: t('order.height')},
    {field: 'quantity', width: 120, title: t('order.quantity')},
    {field: 'area', width: 100, title: '面积'},
    {field: 'shape', width: 120, title: '形状',},
    {field: 'remarks', width: 100, title: '备注'},
    {field: 'area', width: 100, title: t('order.area')},
    {field: 'shape', width: 120, title: t('order.shape'),},
    {field: 'remarks', width: 100, title: t('basicData.remarks')},
  ],//表头按钮
  toolbarConfig: {
@@ -260,7 +260,7 @@
        <el-input v-model="form.orderId" :placeholder="$t('order.orderId')" clearable style="width: 130px"></el-input>
        &nbsp;&nbsp;
        <el-button type="primary" @click="getWorkOrder">查询</el-button>
        <el-button type="primary" @click="getWorkOrder">{{$t('basicData.search')}}</el-button>
      </el-row>
    </div>
north-glass-erp/northglass-erp/src/views/pp/report/TaskCompletionStatus.vue
@@ -77,14 +77,14 @@
})
const columns = [
  {type:'expand',fixed:"left",slots: { content:'content' },width: 50},
  {field: 'customerName', width: 150, title: '客户名称',filters:[{ data: '' }],slots: { filter: 'num1_filter' },filterMethod: filterChanged},
  {field: 'project',width: 130, title: '项目名称' ,filters:[{ data: '' }],slots: { filter: 'num1_filter' },filterMethod: filterChanged},
  {field: 'batch', width: 120,title: '批次',filters:[{ data: '' }],slots: { filter: 'num1_filter' },filterMethod: filterChanged},
  {field: 'orderId',width: 110, title: '销售单号',filters:[{ data: '' }],slots: { filter: 'num1_filter' },filterMethod: filterChanged},
  {field: 'quantity', width: 90,title: '订单数量',showOverflow:"ellipsis"},
  {field: 'area', width: 90,title: '订单面积'},
  {field: 'shippedQuantity',width: 90, title: '发货数量'},
  {field: 'shippedArea',width: 120, title: '发货面积'},
  {field: 'customerName', width: 150, title: t('customer.customerName'),filters:[{ data: '' }],slots: { filter: 'num1_filter' },filterMethod: filterChanged},
  {field: 'project',width: 130, title: t('order.project') ,filters:[{ data: '' }],slots: { filter: 'num1_filter' },filterMethod: filterChanged},
  {field: 'batch', width: 120,title: t('order.batch'),filters:[{ data: '' }],slots: { filter: 'num1_filter' },filterMethod: filterChanged},
  {field: 'orderId',width: 110, title: t('order.orderId'),filters:[{ data: '' }],slots: { filter: 'num1_filter' },filterMethod: filterChanged},
  {field: 'quantity', width: 90,title: t('order.quantity'),showOverflow:"ellipsis"},
  {field: 'area', width: 90,title: t('order.area')},
  {field: 'shippedQuantity',width: 90, title: t('delivery.deliveryQuantity')},
  {field: 'shippedArea',width: 120, title: t('report.area')},
]
//需要合并的列
let column = [1,2,3]
@@ -95,7 +95,7 @@
  request.post(`/report/taskCompletionStatus/${startTime}/${endTime}`,column).then((res) => {
    if (res.code == 200) {
      if(res.data.data.length===0){
        ElMessage.warning('未查询到此订单数据')
        ElMessage.warning(t('report.noDataFoundForThisOrder'))
        return
      }
      gridOptions.columns = JSON.parse(JSON.stringify(columns))
@@ -224,9 +224,9 @@
<!--            style="width: 130px"></el-input>-->
        <el-date-picker
            v-model="time.date1"
            end-placeholder="结束时间"
            :start-placeholder="$t('basicData.startDate')"
            :end-placeholder="$t('basicData.endDate')"
            format="YYYY/MM/DD"
            start-placeholder="开始时间"
            style="width: 100px"
            type="daterange"
            value-format="YYYY-MM-DD"
@@ -277,9 +277,9 @@
      <template #toolbar_buttons>
        <vxe-button style="margin-right: 0.5rem"
                    @click="exportExcel('/report/exportTaskCompletionStatus',
                                          '任务完成情况报表',
                                          t('report.TaskCompletionStatus'),
                                          time.date1)">
          导出</vxe-button>
          {{t('basicData.export')}}</vxe-button>
      </template>
    </vxe-grid>
north-glass-erp/northglass-erp/src/views/pp/report/TeamOutput.vue
@@ -19,7 +19,7 @@
})
//工序
const value = ref('切割')
const value = ref(t('machine.edgeGrinding'))
//表尾求和
const sumNum = (list, field) => {
@@ -219,35 +219,35 @@
  },//表头参数
  columns: [
    {type: 'expand', fixed: "left", slots: {content: 'content'}, width: 50},
    {type: 'seq', fixed: "left", title: '自序', width: 40},
    {type: 'seq', fixed: "left", title: t('basicData.Number'), width: 40},
    {
      field: 'reportingWorkTime', width: 160, title: '报工时间',
      field: 'reportingWorkTime', width: 160, title: t('reportingWorks.reportingWorkTime'),
    },
    {
      field: 'thisProcess',
      width: 100,
      title: '报工工序',
      title: t('reportingWorks.reportingProcess'),
      showOverflow: "ellipsis",
      filters:[{ data: '' }],slots: { filter: 'num1_filter' }
    },
    {
      field: 'teamsGroupsName', width: 100, title: '报工班组',filters:[{ data: '' }],slots: { filter: 'num1_filter' }
      field: 'teamsGroupsName', width: 100, title: t('reportingWorks.teamsType'),filters:[{ data: '' }],slots: { filter: 'num1_filter' }
    },
    {
      field: 'project', width: 120, title: '项目名称',filters:[{ data: '' }],slots: { filter: 'num1_filter' }
      field: 'project', width: 120, title: t('order.project'),filters:[{ data: '' }],slots: { filter: 'num1_filter' }
    },
    {
      field: 'processId', width: 140, title: '流程卡号',filters:[{ data: '' }],slots: { filter: 'num1_filter' }
      field: 'processId', width: 140, title: t('processCard.processId'),filters:[{ data: '' }],slots: { filter: 'num1_filter' }
    },
    {field: 'orderNumber', width: 60, title: '序号'},
    {field: 'width', width: 100, title: '宽'},
    {field: 'height', width: 100, title: '高'},
    {field: 'shape', width: 90, title: '形状'},
    {field: 'thickness', width: 90, title: '厚度',filters:[{ data: '' }],slots: { filter: 'num1_filter' }},
    {field: 'edgingType', width: 110, title: '磨边类型',filters:[{ data: '' }],slots: { filter: 'num1_filter' }},
    {field: 'completedQuantity', width: 90, title: '完工数量'},
    {field: 'area', width: 100, title: '完工面积'},
    {field: 'productName', width: 150, title: '产品名称'},
    {field: 'orderNumber', width: 60, title: t('order.OrderNum')},
    {field: 'width', width: 100, title: t('order.width')},
    {field: 'height', width: 100, title: t('order.height')},
    {field: 'shape', width: 90, title: t('order.shape')},
    {field: 'thickness', width: 90, title: t('order.totalThickness'),filters:[{ data: '' }],slots: { filter: 'num1_filter' }},
    {field: 'edgingType', width: 110, title: t('order.edgingType'),filters:[{ data: '' }],slots: { filter: 'num1_filter' }},
    {field: 'completedQuantity', width: 90, title: t('reportingWorks.completedQuantity')},
    {field: 'area', width: 100, title: t('reportingWorks.completedArea')},
    {field: 'productName', width: 150, title: t('order.product')},
  ],//表头按钮
  toolbarConfig: {
@@ -285,12 +285,12 @@
function exportExcel(url, fileName,date) {
  let processes = value.value
  if(date===null){
    ElMessage.warning("请先选择日期")
    ElMessage.warning(t('report.pleaseSelectADateFirst'))
    return
  }
  if(processes===null){
    ElMessage.warning("请先选择工序")
    ElMessage.warning(t('report.pleaseSelectAProcessFirst'))
    return
  }
@@ -299,7 +299,7 @@
  const timeDiff = Math.abs(date2.getTime() - date1.getTime());
  const daysDiff = timeDiff / (1000 * 3600 * 24);
  if(Math.floor(daysDiff)>180){
    ElMessage.warning("导出的筛选时间不能超过180天")
    ElMessage.warning(t('report.theFilteringTimeForExportCannotExceed180Days'))
    return
  }
  let dataMp = ref({
@@ -334,9 +334,9 @@
        <el-date-picker
            v-model="form.date1"
            end-placeholder="结束时间"
            :start-placeholder="$t('basicData.startDate')"
            :end-placeholder="$t('basicData.endDate')"
            format="YYYY/MM/DD"
            start-placeholder="开始时间"
            style="width: 100px"
            type="daterange"
            value-format="YYYY-MM-DD"
@@ -350,7 +350,7 @@
              :value="item.basic_name"
          />
        </el-select>
        <el-button type="primary" @click="getWorkOrder">查询</el-button>
        <el-button type="primary" @click="getWorkOrder">{{$t('basicData.search')}}</el-button>
      </el-row>
    </div>
@@ -383,9 +383,9 @@
      <template #toolbar_buttons>
        <vxe-button style="margin-right: 0.5rem"
                    @click="exportExcel('/report/exportTeamOutput',
                                          '班组产量明细',
                                          t('report.teamOutput'),
                                          form.date1)">
          导出</vxe-button>
          {{t('basicData.export')}}</vxe-button>
      </template>
    </vxe-grid>
north-glass-erp/northglass-erp/src/views/pp/report/WorkInProgress.vue
@@ -20,7 +20,7 @@
})
//工序
const value = ref('磨边')
const value = ref(t('machine.edgeGrinding'))
//表尾求和
const sumNum = (list, field) => {
@@ -224,47 +224,47 @@
  },//表头参数
  columns: [
    {type: 'expand', fixed: "left", slots: {content: 'content'}, width: 50},
    {type: 'seq', fixed: "left", title: '自序', width: 50},
    {type: 'seq', fixed: "left", title: t('basicData.Number'), width: 50},
    {
      field: 'thisProcess', width: 120, title: '工序', filters: [{data: ''}],
      field: 'thisProcess', width: 120, title: t('report.workingProcedure'), filters: [{data: ''}],
      slots: {filter: 'num1_filter'},
      filterMethod: filterChanged
    },
    {
      field: 'process_id',
      width: 120,
      title: '流程卡号',
      title: t('processCard.processId'),
      showOverflow: "ellipsis",
      filters: [{data: ''}],
      slots: {filter: 'num1_filter'},
      filterMethod: filterChanged
    },
    {
      field: 'customer_name', width: 130, title: '客户名称', filters: [{data: ''}],
      field: 'customer_name', width: 130, title: t('customer.customerName'), filters: [{data: ''}],
      slots: {filter: 'num1_filter'},
      filterMethod: filterChanged
    },
    {
      field: 'project', width: 120, title: '项目名称', filters: [{data: ''}],
      field: 'project', width: 120, title: t('order.project'), filters: [{data: ''}],
      slots: {filter: 'num1_filter'},
      filterMethod: filterChanged
    },
    {
      field: 'batch', width: 100, title: '批次', filters: [{data: ''}],
      field: 'batch', width: 100, title: t('order.batch'), filters: [{data: ''}],
      slots: {filter: 'num1_filter'},
      filterMethod: filterChanged
    },
    {field: 'order_number', width: 100, title: '序号'},
    {field: 'technology_number', width: 120, title: '小片顺序', showOverflow: "ellipsis"},
    {field: 'shape', width: 100, title: '形状'},
    {field: 'process', width: 120, title: '工艺流程'},
    {field: 'quantity', width: 120, title: '订单数'},
    {field: 'child_width', width: 120, title: '宽'},
    {field: 'child_height', width: 120, title: '高'},
    {field: 'stockNum', width: 120, title: '库存数'},
    {field: 'stockArea', width: 120, title: '库存面积'},
    {field: 'product_name', width: 120, title: '成品名称'},
    {field: 'bend_radius', width: 120, title: '弯钢半径'},
    {field: 'order_number', width: 100, title: t('order.OrderNum')},
    {field: 'technology_number', width: 120, title: t('processCard.technologyNumber'), showOverflow: "ellipsis"},
    {field: 'shape', width: 100, title: t('order.shape')},
    {field: 'process', width: 120, title: t('craft.process')},
    {field: 'quantity', width: 120, title: t('order.quantity')},
    {field: 'child_width', width: 120, title: t('order.width')},
    {field: 'child_height', width: 120, title: t('order.height')},
    {field: 'stockNum', width: 120, title: t('productStock.inventoryQuantity')},
    {field: 'stockArea', width: 120, title: t('report.inventoryArea')},
    {field: 'product_name', width: 120, title:  t('order.product')},
    {field: 'bend_radius', width: 120, title: t('order.bendRadius')},
  ],//表头按钮
  toolbarConfig: {
@@ -310,12 +310,12 @@
    inputProject = null
  }
  if(date===null){
    ElMessage.warning("请先选择日期")
    ElMessage.warning(t('report.pleaseSelectADateFirst'))
    return
  }
  if(processes===null){
    ElMessage.warning("请先选择工序")
    ElMessage.warning(t('report.pleaseSelectAProcessFirst'))
    return
  }
@@ -324,7 +324,7 @@
  const timeDiff = Math.abs(date2.getTime() - date1.getTime());
  const daysDiff = timeDiff / (1000 * 3600 * 24);
  if(Math.floor(daysDiff)>180){
    ElMessage.warning("导出的筛选时间不能超过180天")
    ElMessage.warning(t('report.theFilteringTimeForExportCannotExceed180Days'))
    return
  }
  let dataMp = ref({
@@ -361,9 +361,9 @@
        <el-date-picker
            v-model="form.date1"
            end-placeholder="结束时间"
            :start-placeholder="$t('basicData.startDate')"
            :end-placeholder="$t('basicData.endDate')"
            format="YYYY/MM/DD"
            start-placeholder="开始时间"
            style="width: 100px"
            type="daterange"
            value-format="YYYY-MM-DD"
@@ -371,7 +371,7 @@
        &nbsp;&nbsp;
        <el-input v-model="form.orderId" :placeholder="$t('order.orderId')" clearable style="width: 130px"></el-input>
        &nbsp;&nbsp;
        <el-input v-model="form.project" clearable placeholder="项目名称" style="width: 130px"></el-input>
        <el-input v-model="form.project" clearable :placeholder="$t('order.project')" style="width: 130px"></el-input>
        &nbsp;
        <el-select v-model="value" clearable default-value="default_city" style="width: 120px">
          <el-option
@@ -381,7 +381,7 @@
              :value="item.basic_name"
          />
        </el-select>
        <el-button type="primary" @click="getWorkOrder">查询</el-button>
        <el-button type="primary" @click="getWorkOrder">{{$t('basicData.search')}}</el-button>
      </el-row>
    </div>
@@ -405,9 +405,9 @@
      <!--左边固定显示的插槽-->
      <template #button_slot="{ row }">
        <el-button link size="small" type="primary" @click="getTableRow(row,'edit')">编辑</el-button>
        <el-button link size="small" type="primary" @click="getTableRow(row,'setType')">反审</el-button>
        <el-button link size="small" type="primary" @click="getTableRow(row,'delete')">删除</el-button>
        <el-button link size="small" type="primary" @click="getTableRow(row,'edit')">{{$t('basicData.edit')}}</el-button>
        <el-button link size="small" type="primary" @click="getTableRow(row,'setType')">{{$t('basicData.cancelReview')}}</el-button>
        <el-button link size="small" type="primary" @click="getTableRow(row,'delete')">{{$t('basicData.delete')}}</el-button>
      </template>
      <template #num1_filter="{ column, $panel }">
@@ -420,9 +420,9 @@
      <template #toolbar_buttons>
        <vxe-button style="margin-right: 0.5rem"
                    @click="exportExcel('/report/exportWorkInProgress',
                                          '在制品报表',
                                          t('report.workInProgressReport'),
                                          form.date1)">
          导出</vxe-button>
          {{t('basicData.export')}}</vxe-button>
      </template>
    </vxe-grid>
north-glass-erp/northglass-erp/src/views/pp/report/Yield.vue
@@ -204,29 +204,29 @@
  },//表头参数
  columns: [
    {type: 'expand', fixed: "left", slots: {content: 'content'}, width: 50},
    {type: 'seq', fixed: "left", title: '自序', width: 50},
    {type: 'seq', fixed: "left", title: t('basicData.Number'), width: 50},
    {
      field: 'process', width: 120, title: '工序', filters: [{data: ''}],
      field: 'process', width: 120, title: t('report.workingProcedure'), filters: [{data: ''}],
      slots: {filter: 'num1_filter'},
      filterMethod: filterChanged
    },
    {
      field: 'order_id',
      width: 120,
      title: '销售单号',
      title: t('order.orderId'),
      showOverflow: "ellipsis",
      filters: [{data: ''}],
      slots: {filter: 'num1_filter'},
      filterMethod: filterChanged
    },
    {
      field: 'customer_name', title: '客户名称', filters: [{data: ''}],
      field: 'customer_name', title: t('customer.customerName'), filters: [{data: ''}],
      slots: {filter: 'num1_filter'},
      filterMethod: filterChanged
    },
    {
      field: 'project',
      title: '项目名称',
      title: t('order.project'),
      showOverflow: "ellipsis",
      filters: [{data: ''}],
      slots: {filter: 'num1_filter'},
@@ -234,23 +234,23 @@
    },
    {
      field: 'product_name',  title: '产品名称', filters: [{data: ''}],
      field: 'product_name',  title: t('order.product'), filters: [{data: ''}],
      slots: {filter: 'num1_filter'},
      filterMethod: filterChanged
    },
    {
      field: 'finishedArea',  title: '完工面积', filters: [{data: ''}],
      field: 'finishedArea',  title: t('reportingWorks.completedArea'), filters: [{data: ''}],
      slots: {filter: 'num1_filter'},
      filterMethod: filterChanged
    },
    {
      field: 'brokenArea',
      title: '次破面积',
      title: t('reportingWorks.wornArea'),
      type: 'date',
      attrs: {placeholder: '', type: 'date'},
    },
    {field: 'area', width: 120, title: '总面积', showOverflow: "ellipsis"},
    {field: 'finished', width: 100, title: '成品率'},
    {field: 'area', width: 120, title: t('productStock.totalArea'), showOverflow: "ellipsis"},
    {field: 'finished', width: 100, title: t('report.finished')},
  ],//表头按钮
  toolbarConfig: {
@@ -286,12 +286,12 @@
  let processes = value.value
  if(date===null){
    ElMessage.warning("请先选择日期")
    ElMessage.warning(t('report.pleaseSelectADateFirst'))
    return
  }
  if(processes===null){
    ElMessage.warning("请先选择工序")
    ElMessage.warning(t('report.pleaseSelectAProcessFirst'))
    return
  }
@@ -300,7 +300,7 @@
  const timeDiff = Math.abs(date2.getTime() - date1.getTime());
  const daysDiff = timeDiff / (1000 * 3600 * 24);
  if(Math.floor(daysDiff)>180){
    ElMessage.warning("导出的筛选时间不能超过180天")
    ElMessage.warning(t('report.theFilteringTimeForExportCannotExceed180Days'))
    return
  }
  let dataMp = ref({
@@ -332,9 +332,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="开始时间"
            style="width: 100px"
            type="daterange"
            value-format="YYYY-MM-DD"
@@ -348,7 +348,7 @@
              :value="item.basic_name"
          />
        </el-select>
        <el-button type="primary" @click="getWorkOrder">查询</el-button>
        <el-button type="primary" @click="getWorkOrder">{{$t('basicData.search')}}</el-button>
      </el-row>
    </div>
@@ -373,9 +373,9 @@
      <template #toolbar_buttons>
        <vxe-button style="margin-right: 0.5rem"
                    @click="exportExcel('/report/exportYield',
                                          '成品率报表',
                                          t('report.yieldReport'),
                                          form.date1)">
          导出</vxe-button>
          {{t('basicData.export')}}</vxe-button>
      </template>
      <template #num1_filter="{ column, $panel }">
north-glass-erp/northglass-erp/src/views/pp/reportingWorks/AddReportingWork.vue
@@ -264,7 +264,9 @@
            return new Error((`${row.completedQuantity}+${brokenNum}>${row.quantity}`))
          }
          if(titleUploadData.value.reportingWorkId!=null  && row.completedQuantity<row.minQuantity){
            return new Error(`请输入大于等于${row.minQuantity}的数字`)
            return new Error(`${t('reportingWorks.pleaseGreaterThanOrEqual1')}
            ${row.minQuantity}
            ${t('reportingWorks.pleaseGreaterThanOrEqual2')}`)
          }
        }
@@ -544,8 +546,8 @@
  let reportingWorkNum = isNaN(brokenRow.value.completedQuantity*1)?0:brokenRow.value.completedQuantity*1
  if((breakageQuantityCount>brokenRow.value.quantity*1) ){
    ElMessage.warning(`损耗数:'${breakageQuantityCount}'
                               不能大于${brokenRow.value.quantity*1}`)
    ElMessage.warning(`${t('reportingWorks.lossCount1')}':'${breakageQuantityCount}
                               ${t('reportingWorks.lossCount2')}${brokenRow.value.quantity*1}`)
    return false
  }
  brokenRow.value.completedQuantity = brokenRow.value.quantity-breakageQuantityCount
@@ -641,7 +643,9 @@
  for(let item of uniqueByOrderNum){
    if(!checkSameNumForId(notFinishList,item.order_number)){
      ElMessage.error(`请检查订单序号: ${item.order_number} 报工数量是否相同!`)
      ElMessage.error(`${t('reportingWorks.pleaseCheckTheOrderNumber1')}':'
      ${item.order_number}
       ${t('reportingWorks.pleaseCheckTheOrderNumber1')}`)
      return false
    }
  }
@@ -682,11 +686,11 @@
      router.push({path:'/main/reportingWorks/AddReportingWork',query:{processId:titleUploadData.value.processId,random:Math.random()}})
    }else{
      const errorObj = JSON.parse(res.msg)
      const msg = "序号:"+errorObj.orderNumber+'\n'
          +'小片顺序:'+errorObj.technologyNumber+'\n'
          +"实际可报工数量:"+errorObj.processNum+'<'+
          "报工数量:"+errorObj.sumNum+'\n'
          +"请刷新界面重新报工"
      const msg = t('reportingWorks.pleaseNumber1')+":"+errorObj.orderNumber+'\n'
          +t('reportingWorks.pleaseNumber2')+':'+errorObj.technologyNumber+'\n'
          +t('reportingWorks.pleaseNumber3')+':'+errorObj.processNum+'<'+
          +t('reportingWorks.pleaseNumber4')+':'+errorObj.sumNum+'\n'
          +t('reportingWorks.pleaseNumber5')
      ElMessage.error(msg)
    }
@@ -817,7 +821,7 @@
    return
  }
  if (titleSelectJson.value.thisProcessType.indexOf(process) == -1 && process != "切割" && titleSelectJson.value.thisProcessType != "") {
  if (titleSelectJson.value.thisProcessType.indexOf(process) === -1 && process !== t('machine.cutting') && titleSelectJson.value.thisProcessType !== "") {
    ElMessage.warning(t('reportingWorks.thisProcessNotProcessCard'))
    return
  }
@@ -893,11 +897,11 @@
    }
    if (item.quantity < item.completedQuantity) {
      ElMessage.success("序号" + item.order_number + "的数量不能大于上工序数量")
      ElMessage.success(t('reportingWorks.pleaseNumber6') + item.order_number + t('reportingWorks.pleaseNumber7'))
    } else if (item.breakageQuantity * 1 + item.completedQuantity * 1 > item.quantity * 1) {
      ElMessage.success("请输入序号" + item.order_number + "正确的完工或次破数量")
      ElMessage.success(t('reportingWorks.pleaseNumber8') + item.order_number + t('reportingWorks.pleaseNumber9'))
    }
    sum = item.completedQuantity * 1 + sum * 1
north-glass-erp/northglass-erp/src/views/pp/rework/AddRework.vue
@@ -68,7 +68,7 @@
  align: 'center',//文字居中
  stripe: true,//斑马纹
  rowConfig: {isCurrent: true, isHover: true, height: 30},//鼠标移动或选择高亮
  id: 'CustomerList',
  id: 'AddRework',
  showFooter: true,//显示脚
  printConfig: {},
  importConfig: {},
north-glass-erp/northglass-erp/src/views/pp/rework/SelectRework.vue
@@ -92,7 +92,7 @@
  align: 'center',//文字居中
  stripe: true,//斑马纹
  rowConfig: {isCurrent: true, isHover: true, height: 30},//鼠标移动或选择高亮
  id: 'CustomerList',
  id: 'SelectRework',
  showFooter: true,//显示脚
  printConfig: {},
  importConfig: {},
north-glass-erp/northglass-erp/src/views/pp/workOrder/SelectWorkOrder.vue
@@ -255,8 +255,8 @@
    {field: 'order.batch', title: t('order.batch'), filters: [{data: ''}], slots: {filter: 'num1_filter'}, width: 110},
    {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: 'orderDetail.grossArea', title: t('order.grossArea'), width: 70},
    {field: 'orderDetail.quantity', title: t('order.quantity'),},
    {field: 'order.creator', title: t('order.creator'),},
  ],//表头按钮
  data: null,//表格数据
north-glass-erp/northglass-erp/src/views/sd/customer/CreateCustomer.vue
@@ -58,7 +58,7 @@
    ElMessage.error(t('customer.pleaseEnterTheCustomerName'))
    return
  }
  const grade = ruleForm.value.grade
  /*const grade = ruleForm.value.grade
  if(grade === null || grade === undefined || grade === ''){
    ElMessage.error(t('customer.pleaseEnterCustomerLevel'))
    return
@@ -67,7 +67,7 @@
  if(moneyLimit === null || moneyLimit === undefined || moneyLimit === ''){
    ElMessage.error(t('customer.pleaseEnterTheAmountOfFunds'))
    return
  }
  }*/
  const address = ruleForm.value.address
  if(address === null || address === undefined || address === ''){
    ElMessage.error(t('customer.pleaseEnterTheContactAddress'))
north-glass-erp/northglass-erp/src/views/sd/customer/SelectCustomer.vue
@@ -172,7 +172,7 @@
  align: 'center',//文字居中
  stripe:true,//斑马纹
  rowConfig: {isCurrent: true, isHover: true,height: 30},//鼠标移动或选择高亮
  id: 'CustomerList',
  id: 'SelectCustomer',
  showFooter: true,//显示脚
  printConfig: {},
  importConfig: {},
north-glass-erp/northglass-erp/src/views/sd/customer/SelectCustomerOrder.vue
@@ -164,7 +164,7 @@
  align: 'center',//文字居中
  stripe:true,//斑马纹
  rowConfig: {isCurrent: true, isHover: true,height: 30},//鼠标移动或选择高亮
  id: 'OrderList',
  id: 'SelectCustomerOrder',
  showFooter: true,//显示脚
  printConfig: {},
  importConfig: {},
north-glass-erp/northglass-erp/src/views/sd/delivery/CreateDelivery.vue
@@ -34,7 +34,9 @@
const hasDecimalhtml=(item,row)=>{
  let aa=item.split('.').length
  console.log(item)
  if (aa===2){
    return row[item.split('.')[0]][item.split('.')[1]]
  }else if(aa===3){
    return row[item.split('.')[0]][item.split('.')[1]][item.split('.')[2]]
@@ -253,7 +255,7 @@
  align: 'center',//文字居中
  stripe:true,//斑马纹
  rowConfig: {isCurrent: true, isHover: true,height: 30},//鼠标移动或选择高亮
  id: 'OrderList',
  id: 'CreateDelivery',
  showFooter: true,//显示脚
  printConfig: {},
  importConfig: {},
@@ -290,7 +292,7 @@
  },//表头参数
  columns:[
    {type:'expand',fixed:"left",slots: { content:'content' },width: 60},
    //{type:'expand',fixed:"left",slots: { content:'content' },width: 60},
    {field: 'select',type:'checkbox',title: t('basicData.check'), width: 80,fixed:"left"},
    {type: 'seq', title: t('basicData.Number'), width: 80 ,fixed:"left"},
    {field: 'orderId',width:120,  title: t('order.orderId'),filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true,filterMethod:filterChanged},
north-glass-erp/northglass-erp/src/views/sd/delivery/DeliveryPrinting.vue
@@ -73,6 +73,22 @@
    return
  }
  form.value.deliveryId = props.deliveryId*/
  /*form.value.orderId='NG24060501'
  request.post(`/Delivery/getSelectOrderPrinting`,form.value).then((res) => {
    if(res.code==200){
      produceList.value = deepClone(res.data.data)
      delivery.value=deepClone(res.data.delivery)
      money.value=deepClone(res.data.money)
      console.log(res.data.data)
    }else{
      ElMessage.warning(res.msg)
      router.push("/login")
    }
  })*/
  if(route.query.deliveryID===null  || route.query.deliveryID===undefined || route.query.deliveryID===''){
    return
  }
@@ -90,6 +106,8 @@
      router.push("/login")
    }
  })
})
@@ -217,6 +235,120 @@
    </div>
  </div>
<!--  <div>
    <el-button @click="Printing" style="margin-top: -5px"  id="searchButton" type="primary" >打印</el-button>
    <div id="pis" style="width: 100%;height: 100%">
      <div style="font-size: 30px;text-align: center;font-weight: bold;">常州市吉利玻璃有限公司</div>
      <el-row :gutter="20">
        <el-col :span="7"><div></div></el-col>
        <el-col :span="10"><div style="font-size: 25px;text-align: center;font-weight: bold;">销售发货单</div></el-col>
        <el-col :span="7">
          <div style="display: flex;margin-top: 10px;">
            <div style="font-weight: bold;font-size: 15px">发货单号:</div>
            <div style="font-weight: bold;font-size: 15px">{{delivery.deliveryId}}</div>
          </div>
        </el-col>
      </el-row>
      <div style="border: 1px solid #d3dce6;border-collapse: collapse;width: 100%;height: 100%;">
        <table id="table1" style="border: 1px solid #d3dce6;border-collapse: collapse;width: 100%;height: 100%;">
          <tr>
            <th style="text-align: left;border:none;" colspan="3">客户名称:<span>{{delivery.customerName}}</span></th>
            <th style="text-align: left;border:none;" colspan="3">项目名称:<span>{{delivery.project}}</span></th>
            <th style="text-align: left;border:none;" colspan="2">联系人:<span>{{delivery.contacts}}</span></th>
          </tr>
          <tr>
            <th style="text-align: left;border:none;" colspan="6">送货地址:<span>{{delivery.deliveryAddress}}</span></th>
            <th style="text-align: left;border:none;" colspan="2">联系电话:<span>{{delivery.contactNumber}}</span></th>
          </tr>
          <tr>
            <th style="width: 6%;">序号</th>
            <th style="width: 20%;">楼层编号</th>
            <th style="width: 20%;">宽(弧度)*高</th>
            <th style="width: 10%;">数量</th>
            <th style="width: 10%;">面积</th>
            <th style="width: 10%;">单价</th>
            <th style="width: 12%;">金额</th>
            <th style="width: 12%;">加工要求</th>
          </tr>
          <template v-for="(item, index) in produceList" :key="index" >
            <tr>
              <td style="font-size: 15px;font-weight: bold;" colspan="3">产品名称:<span>{{item.DeliveryDetail.productName}}</span></td>
              <td style="font-size: 15px;font-weight: bold;" colspan="3">对方单号:</td>
              <td style="font-size: 15px;font-weight: bold;" colspan="2">订单编号:<span>{{item.DeliveryDetail.orderId}}</span></td>
            </tr>
            <tr class="day-in" v-for="(items, index1) in item.DeliveryDetailList" :key="index1">
              <td>{{items.order_number}}</td>
              <td>{{items.buildingNumber}}</td>
              <td style="font-size: 15px;font-weight: bold;">{{items.width}}x{{items.height}}</td>
              <td>{{items.quantity}}</td>
              <td>{{items.area}}</td>
              <td>{{items.price}}</td>
              <td>{{items.money}}</td>
              <td>{{items.processingNote}}</td>
            </tr>
            <tr class="day-in" >
              <td style="font-size: 15px;font-weight: bold;" colspan="3">小计:</td>
              <td>{{item.DeliveryDetail.quantity}}</td>
              <td>{{item.DeliveryDetail.area}}</td>
              <td></td>
              <td>{{item.DeliveryDetail.money}}</td>
              <td></td>
            </tr>
          </template>
          <tr class="day-in">
            <td style="font-size: 15px;font-weight: bold;" colspan="3">合计:</td>
            <td>{{delivery.quantity}}</td>
            <td>{{delivery.area}}</td>
            <td></td>
            <td>{{delivery.money}}</td>
            <td></td>
          </tr>
          <tr class="day-in">
            <td style="text-align: left;border-width: 0 1px 0 0; border-style: solid; border-color: #d3dce6" colspan="3">
              <div style="display: flex;font-size: 10px;">
                <div>加工费用</div>
                <div  style="margin-left: 20%">单价</div>
                <div  style="margin-left: 20%">数量</div>
                <div  style="margin-left: 20%">金额</div>
              </div>
            </td>
            <td style="text-align: left;border:none;font-size: 15px;font-weight: bold;" colspan="5">总金额:&nbsp;&nbsp;&nbsp;&nbsp;{{delivery.money}}</td>
          </tr>
          <tr class="day-in">
            <td style="text-align: left;border-width: 0 1px 0 0; border-style: solid; border-color: #d3dce6;" colspan="3"></td>
            <td style="text-align: left;border:none;font-size: 15px;font-weight: bold;" colspan="5">大写金额:&nbsp;&nbsp;&nbsp;&nbsp;{{money}}</td>
          </tr>
        </table>
      </div>
      <el-row :gutter="20">
        <el-col :span="3"><div class="bottom">制单员:<span style="font-size: 10px">{{delivery.creator}}</span></div></el-col>
        <el-col :span="5"><div class="bottom">制单日期:<span style="font-size: 10px">{{delivery.createTime}}</span></div></el-col>
        <el-col :span="4"><div class="bottom">发货员:</div></el-col>
        <el-col :span="4"><div class="bottom">司机:</div></el-col>
        <el-col :span="4"><div class="bottom">客户签字:</div></el-col>
        <el-col :span="4"><div class="bottom">签收日期:</div></el-col>
      </el-row>
      <el-row :gutter="20" style="margin-top: 20px;">
        <el-col :span="3"><div class="bottom">架子&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;只</div></el-col>
        <el-col :span="21"><div class="bottom">{{takeCare}}</div></el-col>
      </el-row>
      <el-row :gutter="20" style="margin-top: 20px;">
        <el-col :span="24"><div class="bottom">{{remark}}</div></el-col>
      </el-row>
    </div>
  </div>-->
</template>
<style>
north-glass-erp/northglass-erp/src/views/sd/delivery/SelectDelivery.vue
@@ -202,7 +202,7 @@
  align: 'center',//文字居中
  stripe:true,//斑马纹
  rowConfig: {isCurrent: true, isHover: true,height: 30},//鼠标移动或选择高亮
  id: 'OrderList',
  id: 'SelectDelivery',
  showFooter: true,//显示脚
  printConfig: {},
  importConfig: {},
@@ -291,8 +291,8 @@
    <el-date-picker
        v-model="selectDate"
        type="daterange"
        :start-placeholder="t('basicData.startDate')"
        :end-placeholder="t('basicData.endDate')"
        :start-placeholder="$t('basicData.startDate')"
        :end-placeholder="$t('basicData.endDate')"
        format="YYYY-MM-DD"
        value-format="YYYY-MM-DD"
north-glass-erp/northglass-erp/src/views/sd/delivery/SelectOrderList.vue
@@ -159,7 +159,7 @@
  align: 'center',//文字居中
  stripe:true,//斑马纹
  rowConfig: {isCurrent: true, isHover: true,height: 30},//鼠标移动或选择高亮
  id: 'OrderList',
  id: 'SelectOrderList',
  showFooter: true,//显示脚
  printConfig: {},
  importConfig: {},
north-glass-erp/northglass-erp/src/views/sd/order/CreateOrder.vue
@@ -347,20 +347,19 @@
                item=>item.computeArea*1 < errorArea.value*1
            )
            if(errorAreaList.length){
              ElMessageBox.confirm(
                  /*t('order.msg.calculationAreaPrompt1')+
                  ${errorAreaList.length}+
                  t('order.msg.calculationAreaPrompt2')+
                  ${errorArea.value}+
                      t('order.msg.calculationAreaPrompt3')+
                  ${errorArea.value}+*/
                      t('order.msg.calculationAreaPrompt4'),
                  'Warning',
                  {
                    confirmButtonText: t('basicData.confirmButtonText'),
                    cancelButtonText: t('basicData.cancelButtonText'),
                    type: 'warning',
                  }
              ElMessageBox.confirm(`${t('order.msg.calculationAreaPrompt1')}
                  ${errorAreaList.length}
                  ${t('order.msg.calculationAreaPrompt2')}
                  ${errorArea.value}
                  ${t('order.msg.calculationAreaPrompt3')}
                  ${errorArea.value}
                  ${t('order.msg.calculationAreaPrompt4')}`,
                  t('order.msg.warning'),
              {
                confirmButtonText: t('basicData.confirmButtonText'),
                cancelButtonText: t('basicData.cancelButtonText'),
                type: 'warning',
              }
              ).then(()=>{
                errorAreaComputed()
                saveOrder(order)
north-glass-erp/src/main/java/com/example/erp/controller/pp/ProcessCardController.java
@@ -189,6 +189,14 @@
        return Result.seccess(flowCardService.getSelectPrintLabelSv(object));
    }
    @ApiOperation("打印自定义标签数据查询接口")
    @PostMapping("/getSelectPrintCustomLabel/{type}")
    public Result getSelectPrintCustomLabel( @PathVariable String type,
                                             @RequestBody Map<String, Object> object) {
        return Result.seccess(flowCardService.getSelectPrintCustomLabelSv(type,object));
    }
    @ApiOperation("复选框修改排版状态")
    @SaCheckPermission("SelectProcessCard.review")
    @PostMapping("/updateComposing")
@@ -218,4 +226,14 @@
        }
    }
    @ApiOperation("自定义标签打印明细接口")
    @PostMapping("/getCustomLabelDetail/{name}/{form}/{id}")
    public Result getCustomLabelDetail(
            @PathVariable String name,
            @PathVariable String form,
            @PathVariable String id,
            @RequestBody FlowCard flowCard) {
        return Result.seccess(flowCardService.getCustomLabelDetailSv(name,form,id, flowCard));
    }
}
north-glass-erp/src/main/java/com/example/erp/controller/sd/DeliveryController.java
@@ -108,6 +108,13 @@
        return Result.seccess(deliveryService.getSelectDeliveryPrinting(deliveryDetail));
    }
    @ApiOperation("订单发货订单查询接口")
    @SaCheckPermission("selectDelivery.search")
    @PostMapping("/getSelectOrderPrinting")
    public Result getSelectOrderPrinting( @RequestBody OrderDetail orderDetail){
        return Result.seccess(deliveryService.getSelectOrderPrinting(orderDetail));
    }
    @ApiOperation("发货明细报表")
    @PostMapping("/exportDeliveryDetailReport")
    public void exportDeliveryDetailReport(HttpServletResponse response, @RequestBody List<LocalDate> dates) throws IOException, IllegalAccessException, InstantiationException {
north-glass-erp/src/main/java/com/example/erp/mapper/pp/FlowCardMapper.java
@@ -2,6 +2,7 @@
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.example.erp.entity.pp.FlowCard;
import com.example.erp.entity.sd.Order;
import org.apache.ibatis.annotations.Mapper;
import java.sql.Date;
@@ -86,4 +87,11 @@
    Boolean printSortMp(String processId, Integer orderNumber, Integer technologyNumber, Integer sort);
    List<Map<String,String>> selectType();
    List<Map<String, Object>> getPrintTitle(String type);
    List<Map<String, Object>> getCustomLabelDetailMp(String name, String form, String id, FlowCard flowCard);
    List<Order> getPrintCustomData(String orderId, Integer orderNumber);
}
north-glass-erp/src/main/java/com/example/erp/mapper/sd/DeliveryDetailMapper.java
@@ -27,9 +27,14 @@
    List<DeliveryDetail> getSelectDeliveryPrinting(@Param("deliveryDetail") DeliveryDetail deliveryDetail);
    List<OrderDetail> getSelectOrderPrinting(@Param("orderDetail") OrderDetail orderDetail);
    List <Map<String, Object>> getSelectDeliveryDetailPrinting(@Param("deliveryId") String deliveryId,
                                                         @Param("productId") Integer productId,@Param("orderId") String orderId);
    List <Map<String, Object>> getSelectOrderDetailPrinting(@Param("productId") Integer productId,@Param("orderId") String orderId);
    List<DeliveryDetail> getSelectDeliveryDetailReport(@Param("offset") Integer offset,
                                                      @Param("pageSize") Integer pageSize,String startDate, String endDate,
                                                      @Param("deliveryDetail") DeliveryDetail deliveryDetail);
north-glass-erp/src/main/java/com/example/erp/mapper/sd/DeliveryMapper.java
@@ -25,6 +25,8 @@
   Delivery getSelectShippingOrderDetailDeliveryPrinting(@Param("deliveryDetail") DeliveryDetail deliveryDetail);
   Order getSelectShippingOrderDetailPrinting(@Param("orderDetail") OrderDetail orderDetail);
    Order getSelectShippingOrderDetailDeliverys(@Param("offset") Integer offset,
                                                 @Param("pageSize") Integer pageSize,
                                                 @Param("orderDetail") OrderDetail orderDetail);
north-glass-erp/src/main/java/com/example/erp/service/pp/FlowCardService.java
@@ -12,8 +12,14 @@
import com.example.erp.mapper.pp.FlowCardMapper;
import com.example.erp.mapper.sd.OrderGlassDetailMapper;
import com.example.erp.mapper.sd.OrderProcessDetailMapper;
import com.fasterxml.jackson.databind.JsonNode;
import com.fasterxml.jackson.databind.ObjectMapper;
import jdk.nashorn.internal.parser.JSONParser;
import org.springframework.stereotype.Service;
import java.io.StringReader;
import java.sql.Date;
import java.util.*;
@@ -207,6 +213,7 @@
    public Object selectPrintSv(String orderId, FlowCard flowCard) {
        Map<String, Object> map = new HashMap<>();
        map.put("data", flowCardMapper.selectPrintMp(orderId, flowCard));
        map.put("type", flowCardMapper.selectType());
        return map;
    }
@@ -256,11 +263,10 @@
                Integer count=flowCard.getQuantity();
                for (int i = 0; i < count; i++) {
                    map.put("data", flowCardMapper.getPrintLabel(flowCard.getProcessId(), flowCard.getTechnologyNumber()));
                    //System.out.println(flowCardMapper.getPrintLabel(flowCard.getProcessId(), flowCard.getTechnologyNumber()));
                    System.out.println(flowCardMapper.getPrintLabel(flowCard.getProcessId(), flowCard.getTechnologyNumber()));
                }
            }
        }
        return map;
    }
@@ -281,6 +287,27 @@
    }
    public Map<String, Object> getSelectPrintCustomLabelSv(String type, Map<String, Object> object) {
        Map<String, Object> map = new HashMap<>();
        List<Map<String, Object>> list = new ArrayList<Map<String, Object>>();//最终结果
        List<FlowCard> flowCardList = JSONArray.parseArray(JSONObject.toJSONString(object.get("printList")), FlowCard.class);
        if (!flowCardList.isEmpty()) {
            for (FlowCard flowCard : flowCardList) {
                map.put("data", flowCardMapper.getPrintCustomData(flowCard.getOrderId(),flowCard.getOrderNumber()));
                map.put("quantity", flowCard.getQuantity());
            }
        }
       map.put("title", flowCardMapper.getPrintTitle(type));
        return map;
    }
    public Object getCustomLabelDetailSv(String name, String form, String id, FlowCard flowCard) {
        Map<String, Object> map = new HashMap<>();
        map.put("data", flowCardMapper.getCustomLabelDetailMp(name, form,id, flowCard));
        return map;
    }
}
north-glass-erp/src/main/java/com/example/erp/service/sd/DeliveryService.java
@@ -366,6 +366,29 @@
    }
    public Map<String, Object> getSelectOrderPrinting(OrderDetail orderDetail) {
        Map<String, Object> map = new HashMap<>();
        List <Map<String, Object>> list=new ArrayList<Map<String, Object>>();//最终结果
        List<OrderDetail> orderDetailList=deliveryDetailMapper.getSelectOrderPrinting(orderDetail);
        for (OrderDetail detail : orderDetailList) {
            Map<String, Object> itemmap = new HashMap<>();
            List<Map<String, Object>> deliveryDetailList2 = deliveryDetailMapper.getSelectOrderDetailPrinting(
                    detail.getProductId(), detail.getOrderId());
            itemmap.put("DeliveryDetail", detail);
            itemmap.put("DeliveryDetailList", deliveryDetailList2);
            list.add(itemmap);
        }
        Order order=deliveryMapper.getSelectShippingOrderDetailPrinting(orderDetail);
        map.put("data", list);
        map.put("delivery", deliveryMapper.getSelectShippingOrderDetailPrinting(orderDetail));
        map.put("money", toChinese(order.getMoney().toString(), false));
        return map;
    }
    public List<DeliveryDetailDTO> exportDeliveryDetailReport(List<LocalDate> dates) {
        return deliveryDetailMapper.exportDeliveryDetailReport(dates);
    }
north-glass-erp/src/main/resources/mapper/pp/FolwCard.xml
@@ -49,6 +49,8 @@
        <result column="g_type" property="glassTypes.type"/>-->
    </resultMap>
    <!--    流程卡管理查询-->
    <select id="selectFlowCard" resultMap="flowCardMap">
        select
@@ -433,6 +435,7 @@
               fc.process_id,
               o.customer_name,
               o.project,
               fc.order_number,
               ogd.technology_number,
               ogd.glass_address,
               sum(od.quantity) as quantity,
@@ -463,7 +466,7 @@
               o.processing_note,
               fc.process_id,
               SUM( od.quantity) as quantity,
               SUM(ogd.total_area) as gross_area,
               round(SUM(ogd.total_area),2) as gross_area,
               SUM(od.weight) as weight,
               #{technologyNumber} as technologyNumber,
               concat(fc.process_id,'/',#{technologyNumber}) as  processIdNumber
@@ -480,7 +483,7 @@
    <select id="getDetailList">
        select fc.order_number,
               concat(ogd.child_width, "*", ogd.child_height) as child_width,
               concat(round(ogd.child_width), "*", round(ogd.child_height)) as child_width,
               od.quantity,
               round(ogd.total_area,2) as total_area,
               od.perimeter,
@@ -570,5 +573,68 @@
          and technology_number = #{technologyNumber}
    </update>
    <select id="selectType">
        select * from pp.tag_style
    </select>
<select id="getPrintTitle">
    select value from pp.tag_style as a where  a.name=#{type}
</select>
    <select id="getCustomLabelDetailMp">
        select #{name} from #{form} where order_id=#{id}
    </select>
    <resultMap id="orderDetial" type="com.example.erp.entity.sd.OrderDetail">
        <result column="width" property="width"/>
        <result column="height" property="height"/>
        <result column="order_id" property="order.orderId"/>
        <result column="project" property="order.project"/>
        <result column="customer_id" property="order.customerId"/>
        <result column="customer_name" property="order.customerName"/>
        <result column="order_type" property="order.orderType"/>
        <result column="order_classify" property="order.orderClassify"/>
        <result column="batch" property="order.batch"/>
        <result column="icon" property="order.icon"/>
        <result column="pack_type" property="order.packType"/>
        <result column="delivery_date" property="order.deliveryDate"/>
        <result column="al_type" property="order.alType"/>
        <result column="money" property="order.money"/>
        <result column="contract_id" property="order.contractId"/>
        <result column="customer_batch" property="order.customerBatch"/>
        <result column="contacts" property="order.contacts"/>
        <result column="delivery_address" property="order.deliveryAddress"/>
        <result column="processing_note" property="processingNote"/>
        <result column="quantity" property="quantity"/>
    </resultMap>
    <select id="getPrintCustomData" resultMap="orderDetial">
        select o.order_id,
               project,
               customer_id,
               customer_name,
               order_type,
               order_classify,
               batch,
               icon,
               pack_type,
               delivery_date,
               al_type,
               money,
               contract_id,
               customer_batch,
               contacts,
               delivery_address,
               od.processing_note,
               width,
               height,
               od.quantity
        from sd.order as o
                 left join sd.order_detail as od on o.order_id = od.order_id
        where o.order_id = #{orderId}
          and od.order_number = #{orderNumber}
    </select>
</mapper>
north-glass-erp/src/main/resources/mapper/sd/DeliveryDetailMapper.xml
@@ -887,6 +887,17 @@
        group by od.order_id,od.product_name,od.product_id
    </select>
    <select id="getSelectOrderPrinting"  >
        select od.order_id,od.product_id,od.product_name,sum(od.area) as area,sum(od.gross_amount) as money,sum(od.quantity) as quantity from
         order_detail od
        <where>
            <if test="orderDetail.orderId != null and orderDetail.orderId != ''">
                and od.order_id like concat('%',#{orderDetail.orderId},'%')
            </if>
        </where>
        group by od.product_name,od.product_id
    </select>
    <select id="getSelectDeliveryDetailPrinting" >
        select od.order_id,
               od.order_number,
@@ -906,6 +917,23 @@
          and od.product_id = #{productId}
    </select>
    <select id="getSelectOrderDetailPrinting" >
        select od.order_id,
               od.order_number,
               od.product_name,
               od.width,
               od.height,
               od.quantity,
               od.gross_amount,
               od.area,
               ifnull(od.processing_note,"") as processingNote,
               ifnull(od.remarks,"") as buildingNumber,
               od.price
        from  order_detail od
        where  od.order_id = #{orderId}
          and od.product_id = #{productId}
    </select>
    <select id="exportDeliveryDetailReport">
        select dd.id,
north-glass-erp/src/main/resources/mapper/sd/DeliveryMapper.xml
@@ -216,6 +216,19 @@
        </where>
    </select>
    <select id="getSelectShippingOrderDetailPrinting" >
        select
        d.order_id,d.quantity,d.money,d.area,d.project,
        d.customer_id,d.customer_name,d.creator,d.salesman,d.salesman_id
        from sd.`order` d
        <where>
            <if test="orderDetail.orderId != null and orderDetail.orderId != ''">
                and d.order_id like concat('%',#{orderDetail.orderId},'%')
            </if>
        </where>
    </select>
    <select id="getSelectShippingOrderDetailDeliverys" >
        select customer_id,customer_name,project,salesman,salesman_id,contacts,contact_number,delivery_address from sd.`order`