chenlu
8 天以前 4b2d55c8bde56676b4afdb41436a24763e0f8cca
north-glass-erp/northglass-erp/src/views/pp/processCard/PrintFlowCardDetails.vue
@@ -2,7 +2,7 @@
import request from "@/utils/request"
import deepClone from "@/utils/deepClone"
import {ElDatePicker, ElMessage} from "element-plus"
import {ElCheckbox, ElDatePicker, ElMessage} from "element-plus"
import {nextTick, onMounted, onUnmounted, reactive, ref, watch} from "vue"
import {useRouter} from 'vue-router'
import {useI18n} from 'vue-i18n'
@@ -21,6 +21,7 @@
import {CircleCheck, Download, Printer} from "@element-plus/icons-vue/global";
import TagStyleDesigner from "@/components/pp/TagStyleDesigner.vue";
import {hiprint} from "vue-plugin-hiprint";
import {createTemplate} from "@/hook/createTemplateTag"
const company = companyInfo()
@@ -50,7 +51,8 @@
  technologyNumber: null,
  process: null
})
//落架顺序
let landingSequence= ref(1)
//打印
let printRow = ref({
  list: null,
@@ -64,7 +66,8 @@
  faceOrientation: null,//内外面
  type: null,//标签模板
  lableType: null,//标签类型
  dataType: null//标签类型
  dataType: null,
  landingSequence:null
})
@@ -178,12 +181,14 @@
const data = ref({
  printList: []
})
let hiprintTemplate = ref(null)
onMounted(async () => {
  await getTags();
  await hiprint.init();
})
let hiprintTemplate = ref()
const tags = ref([])
@@ -199,30 +204,55 @@
const changeTag = () => {
  hiprintTemplate.value = new hiprint.PrintTemplate({});
  const json = JSON.parse(tag.value.value)
  hiprintTemplate.value.design("#hiprint-printTemplate1",{grid:true});
  const json = tag.value.value
  hiprintTemplate.value.update(json)
}
const getTags = () => {
  request.get('tagStyle/getTagList').then(res => {
    res.data.forEach(item => {
      item.value = JSON.parse(item.value)
    })
    tags.value = res.data
  })
}
const printOrder = (type) => {
  const list = hiprintTemplate.value.getJson()
  printNumber()
  const list = tag.value.value
  list.panels[0].printElements.forEach(element => {
    element.options.fontFamily = 'Arial'
    if( element.options.field !== undefined){
      if(type===3 ){
        element.options.hideTitle = true
      }
    }
    if(type!==3){
      element.options.hideTitle = false
      if( element.options.field === undefined){
        element.options.hideTitle = true
      }
    }
  })
  let object =  lastList.value
  //hiprintTemplate.value.update(list)
  let object =  JSON.parse(JSON.stringify(lastList.value))
  //判断是否为表格
  let columnsNum = null
  if(list.panels[0].printElements[0].options.field==='table'){
    object = {table:lastList.value}
    columnsNum = (list.panels[0].printElements[0].options.gridColumns || 1)
  }
  //判断是否有 嵌套自定义纸张
  if(tag.value.tagHeight && tag.value.tagWidth){
    const print =createTemplate(list,object,tag.value.tagWidth,tag.value.tagHeight)
    hiprintTemplate.value.update(print.template)
    object = print.printData
  }
  hiprintTemplate.value.print(object)
}
const orderOtherMoney = ref(null)
const {currentRoute} = useRouter()
const route = currentRoute.value
@@ -241,7 +271,21 @@
        newDataCollection.push(item);
      })
    }
    orderOtherMoney.value = res.data.orderOtherMoney
    orderOtherMoney.value.forEach(item => {
      let column = {
        field: `${item.column}`,
        width: 100,
        title: item.alias,
        filters: [{data: ''}],
        slots: {filter: 'num1_filter'},
        filterMethod: filterChanged,
        sortable: true
      }
      gridOptions.columns.push(column)
    })
    titleSelectJson.value.dataType = res.data.type
    xGrid.value.reloadData(newDataCollection)
    gridOptions.loading = false
@@ -303,6 +347,9 @@
    {title: t('basicData.operate'), width: 55, slots: {default: 'button_slot'}, fixed: "left"},
    {type: 'checkbox', fixed: "left", title: t('basicData.check'), width: 80},
    {type: 'seq', fixed: "left", title: t('basicData.Number'), width: 50},
    {field: 'printQuantity', title: t('processCard.printQuantity'), width: 90,
      editRender: {name: 'input', attrs: {placeholder: ''}},
    },
    {
      field: 'order_id',
      title: t('order.orderId'),
@@ -338,14 +385,24 @@
      title: t('order.OrderNum'),
      filters: [{data: ''}],
      slots: {filter: 'num1_filter'},
      filterMethod: filterChanged, width: 100
      filterMethod: filterChanged, width: 120
      , sortable: true
    },
    {
      field: 'technology_number',
      title: t('processCard.technologyNumber'),
      filters: [{data: ''}],
      slots: {filter: 'num1_filter'},
      filterMethod: filterChanged, width: 100
      filterMethod: filterChanged, width: 120
      , sortable: true
    },
    {
      field: 'building_number',
      title: t('processCard.buildingNumber'),
      filters: [{data: ''}],
      slots: {filter: 'num1_filter'},
      filterMethod: filterChanged, width: 120
      , sortable: true
    },
    {
      field: 'width',
@@ -369,9 +426,7 @@
      filterMethod: filterChanged, width: 100
    },
    {field: 'quantity', title: t('order.quantity'), width: 90},
    {field: 'printQuantity', title: t('processCard.printQuantity'), width: 90,
      editRender: {name: 'input', attrs: {placeholder: ''}},
    },
    {field: 'total_area', title: t('order.area'), width: 90},
    {
      field: 'product_name', title: t('order.product'), width: 120,
@@ -698,7 +753,7 @@
              id += selectRecords[i].id + "|"
            }
          }
          labelRow.value.landingSequence = landingSequence
          labelRow.value.list = JSON.stringify(selectRecords)
          labelRow.value.faceOrientation = faceOrientation
          labelRow.value.type = type
@@ -794,7 +849,7 @@
const printNumber = () => {
  selectRecordsData.value.printList = selectRecords
  request.post(`/processCard/updatePrintNumber`, selectRecordsData.value).then((res) => {
  request.post(`/tagStyle/updatePrintNumber`, selectRecordsData.value).then((res) => {
    if (res.code == 200 && res.data === true) {
    } else {
@@ -802,6 +857,10 @@
    }
  })
}
function onlandingSequenceChange(checked) {
  landingSequence.value = checked ? 0 : 1
}
</script>
@@ -830,7 +889,7 @@
        />
      </el-select>
      &nbsp;
      <el-select v-model="stateValue" :placeholder="$t('processCard.pleaseSelect')" allow-create class="m-2" clearable
      <el-select v-model="stateValue" v-show="false" :placeholder="$t('processCard.pleaseSelect')" allow-create class="m-2" clearable
                 filterable style="width: 140px">
        <el-option
            v-for="item in stateOptions"
@@ -839,6 +898,13 @@
            :value="item.value"
        />
      </el-select>
      &nbsp;
      <el-checkbox
          :model-value="landingSequence === 0"
          @change="onlandingSequenceChange"
      >
        {{ t('processCard.landingSequence') }}
      </el-checkbox>
    </div>
    <div class="main-table">
@@ -902,7 +968,7 @@
        destroy-on-close
        style="width: 75%;height:75% ">
      <template #header="{ close, titleId, titleClass }">
        <el-button v-print="printContent" :icon="Printer" circle @click="printNumber"/>
        <el-button v-print="printContent" :icon="Printer" circle />
      </template>
      <print-process
          id="child"
@@ -939,7 +1005,7 @@
        destroy-on-close
        style="width: 80%;height:75% ">
      <template #header="{ close, titleId, titleClass }">
        <el-button v-print="printContentLabelSemi" :icon="Printer" circle/>
        <el-button v-print="printContentLabelSemi" :icon="Printer" circle @click="printNumber"/>
      </template>
      <print-custom-label-semi id="childLabelSemi"
                               :faceOrientation="labelRow.faceOrientation"
@@ -968,12 +1034,13 @@
        :close-on-press-escape="false"
        :title="$t('processCard.labelStyle')"
        destroy-on-close
        style="width: 90%;height:93%;margin-top: 3vh ">
        style="width: 90%;height:91%;margin-top: 3vh ">
      <!--      <tag-style style="width: 100%;height: 100%"/>-->
      <tag-style-designer :faceOrientation="labelRow.faceOrientation"
                          :lableType="labelRow.lableType"
                          :list="labelRow.list"
                          :type="labelRow.type"
                          :landingSequence="labelRow.landingSequence"
                          style="width: 100%;height: 100%"/>
    </el-dialog>
@@ -985,7 +1052,24 @@
        destroy-on-close
        style="width: 80%;height:75% ">
      <template #header="{ close, titleId, titleClass }">
        <el-button :icon="Printer" circle @click="printOrder(1)"/>
        <el-tooltip
            class="box-item"
            effect="dark"
            :content="$t('processCard.yesTitle')"
            placement="top"
        >
          <el-button :icon="Printer" circle @click="printOrder(1)"/>
        </el-tooltip>
        <el-tooltip
            class="box-item"
            effect="dark"
            :content="$t('processCard.noTitle')"
            placement="top"
        >
          <el-button @click="printOrder(3)">
            <i class="vxe-icon-print"></i>
          </el-button>
        </el-tooltip>
      </template>
      <print-custom-label-x-j id="childLabel"
                              :faceOrientation="labelRow.faceOrientation"