guoyuji
2024-10-12 543a7e2d5ccf1c6b4622d369be13bb03c860da3c
设置新增 添加队列打印程序
1个文件已修改
1个文件已添加
62 ■■■■ 已修改文件
north-glass-erp/northglass-erp/src/components/pp/TagStyleDesigner.vue 28 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
north-glass-erp/northglass-erp/src/hook/queue.js 34 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
north-glass-erp/northglass-erp/src/components/pp/TagStyleDesigner.vue
@@ -10,8 +10,9 @@
import companyInfo from "@/stores/sd/companyInfo"
import PrintCustomLabel from '@/components/pp/PrintCustomLabelDetails.vue'
import PrintCustomLabelSemi from '@/components/pp/PrintCustomLabelSemi.vue'
import {Printer} from "@element-plus/icons-vue/global";
import {View} from "@element-plus/icons-vue";
import {Printer} from "@element-plus/icons-vue/global"
import {View} from "@element-plus/icons-vue"
import QueuePrinter from "@/hook/queue"
const { t } = useI18n()
const company = companyInfo()
@@ -609,7 +610,6 @@
  await getTags()
  await  hiprint.init({
    //host: 'http://10.153.19.26:17521',
    providers: [new TagStyleSet(TgaStyleSet.value)]
  });
@@ -635,8 +635,10 @@
  // 构建一个设计模板,指定容器,是否开启网格展示
  hiprintTemplate.value.design("#hiprint-printTemplate",{grid:true});
  //document.querySelector(".hiprint-option-item-field .auto-submit").appendChild('<option value="Arial">Arial</option>')
  //未连接 则进行连接打印服务器
  if (!hiprint.hiwebSocket.opened) {
    hiprint.hiwebSocket.setHost("http://localhost:17521")
  }
};
@@ -669,7 +671,9 @@
  }).then(({ value }) => {
    tag.value.name = value
    let json = $ref(hiprintTemplate.value.getJson())
    if(json.panels[0].printElements[0].options.field==='table' && json.panels[0].printElements.length===1){
    const tableFlag = json.panels[0].printElements.filter(item => item.options.field==='table')
    if(tableFlag.length===1 && json.panels[0].printElements.length===1){
      let funct = "function(value,row,index,options){return `"
      json.panels[0].printElements[0].options.columns[0].forEach(item => {
          if(item.field){
@@ -678,7 +682,7 @@
      })
      funct+='`}'
      json.panels[0].printElements[0].options.columns[0][0].renderFormatter = funct
    }else{
    }else if(json.panels[0].printElements.length>1 && tableFlag.length>0){
      ElMessage.warning('保存失败,请检查是否只有一个表格')
      return
    }
@@ -776,17 +780,20 @@
const printOrder = (type) => {
  const list = hiprintTemplate.value.getJson()
  list.panels[0].printElements.forEach(element => {
    element.options.fontFamily = 'Arial'
  })
  let object =  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(type===1){
    hiprintTemplate.value.print2(object)
    const queuePrinter = new QueuePrinter( object,hiprintTemplate,columnsNum)
    queuePrinter.tick
  }else{
    hiprintTemplate.value.print(object)
  }
@@ -883,8 +890,9 @@
      destroy-on-close
      style="width: 80%;height:75% ">
    <template #header="{ close, titleId, titleClass }">
      <el-button @click="printOrder(1)" :icon="Printer" circle/>
      <el-button @click="printOrder(2)" :icon="View" circle/>
      <el-button @click="printOrder(1)" :icon="Printer" circle/>
    </template>
    <print-custom-label id="childLabel"
                        destroy-on-close
north-glass-erp/northglass-erp/src/hook/queue.js
New file
@@ -0,0 +1,34 @@
/**
 * Queue hook
 * 打印队列方法
 */
export default function QueuePrinter(list,hiprintTemplate,columnsNum){
    const queue = JSON.parse(JSON.stringify(list));
    // 添加打印任务
    this.printJob = function(job) {
        queue.push(job);
    };
    // 模拟打印
    this.tick = setInterval(()=>{
                if(typeof queue === 'object' && Array.isArray(queue)){
                    if (queue.length > 0) {
                        hiprintTemplate.value.print2(queue[0])
                        queue.shift(); // 打印任务,并从队列中移除
                    }else{
                        clearInterval(this.tick)
                    }
                }else{
                    if (queue.table.length > 0) {
                        hiprintTemplate.value.print2({table:queue.table.slice(0, columnsNum)})
                        queue.table.splice(0, columnsNum);
                    }else{
                        clearInterval(this.tick)
                    }
                }
        },
        5000)
};