王震
2023-12-19 5fcfed0c9e6dac85f680c705c9b20abad79e1324
src/views/plan/manufacturingorder/index.vue
@@ -22,8 +22,9 @@
            </el-button>
            <el-dropdown-menu slot="dropdown">
              <el-dropdown-item
                :key="index"
                :command="item.command"
                v-for="item in taskTypeArr"
                v-for="(item,index) in taskTypeArr"
                :disabled="canCreateTask"
                >{{ item.label }}</el-dropdown-item
              >
@@ -40,8 +41,9 @@
            </el-button>
            <el-dropdown-menu slot="dropdown">
              <el-dropdown-item
                :key="i"
                :command="item.command"
                v-for="item in stateTagArr"
                v-for="(item,i) in stateTagArr"
                :disabled="item.disabled"
                >{{ item.label }}</el-dropdown-item
              >
@@ -105,12 +107,18 @@
            :loading="loadingExcel"
            >导出
          </el-button>
          <el-button
            @click="labelPrint"
            type="primary"
            style="margin-left:10px;"
            >标签打印
          </el-button>
          <!-- <el-button
            v-if="permissions.manufacturingorder_update_orderno"
            @click="updateOrderNo"
            type="primary"
            style="margin-left:10px;"
            >更新订单号
            >更新订单号
          </el-button>-->
        </template>
      </ttable>
@@ -190,6 +198,100 @@
        </span>
      </el-dialog>
    </basic-container>
    <!-- 标签打印 -->
    <el-dialog title="标签列表" :visible.sync="diaPrintTab" width="28%" top="5vh">
      <div style="width:100%;height: 400px;overflow-y: auto;">
        <div class="dia_body">
          <el-checkbox
          style="margin: 10px 5px;"
          :indeterminate="isIndeterminate"
          v-model="checkAll"
          @change="handleCheckAllChange">全选</el-checkbox>
          <el-checkbox-group @change="changePrintCode()" v-model="checkIndexList">
            <el-card class="box-card" v-for="(item, i) in qrData" :key="i" style="margin-bottom: 15px; font-size: 16px !important;">
                  <el-checkbox :label="i" :key="i" style="position: relative;top:-20px;left:5px"><br></el-checkbox>
                  <!-- <el-row>
                    <el-col :span="10" :offset="3">批次号</el-col>
                    <el-col :span="10" style="font-weight: bold;">{{ item.code.moNo2 }}</el-col>
                  </el-row>
                  <el-row>
                    <el-col :span="10" :offset="3">订单号:</el-col>
                    <el-col :span="10" style="font-weight: bold;">{{ item.orderNo }}</el-col>
                  </el-row>
                  <el-row>
                    <el-col :span="10" :offset="3">客户名称:</el-col>
                    <el-col :span="10" style="font-weight: bold;">{{ item.cName }}</el-col>
                  </el-row>
                  <el-row>
                    <el-col :span="10" :offset="3">零件名称:</el-col>
                    <el-col :span="10" style="font-weight: bold;">{{ item.pName }}</el-col>
                  </el-row>
                  <el-row>
                    <el-col :span="10" :offset="3">车间订单二维码:</el-col>
                    <el-col :span="10">
                      <vueQr :text="JSON.stringify(item.code)" :size="80" :margin="2"></vueQr>
                    </el-col>
                  </el-row> -->
                   <div>
                    <el-row style="font-size: 14px;padding-left: 20px;">
                          <el-col  style="font-weight: bold;">{{ item.pName }}</el-col>
                    </el-row>
                  <div style="display: flex;">
                      <div>
                        <el-col :span="8" :offset="4">
                          <vueQr :text="JSON.stringify(item.code)" :size="120" :margin="2"></vueQr>
                        </el-col>
                      </div>
                      <div style="margin-left: 50px;width: 100%;">
                        <el-row style="margin-top: 10px;">
                          <el-col  style="font-weight: bold;font-size: 14px;"><span>批&nbsp; 次&nbsp;号:&nbsp; </span>{{ item.code.moNo2 }}</el-col>
                        </el-row>
                        <el-row style="margin-top: 9px;font-size: 14px;">
                          <el-col  style="font-weight: bold;"><span>订&nbsp; 单&nbsp;号:&nbsp; </span>{{ item.orderNo }}</el-col>
                        </el-row>
                        <el-row style="margin-top: 9px;font-size: 14px;">
                          <el-col  style="font-weight: bold;"><span>客户名称:&nbsp; </span>{{ item.cName }}</el-col>
                        </el-row>
                      </div>
                  </div>
                  </div>
            </el-card>
          </el-checkbox-group>
        </div>
      </div>
      <span slot="footer" class="dialog-footer">
        <el-button @click="diaPrintTab = false">取 消</el-button>
        <el-button type="primary" @click="printFun">打 印</el-button>
      </span>
    </el-dialog>
    <div class="el-dialog__body" style="width:448.8px;overflow-y: auto;position: absolute;top:9999px;margin-top: 0;">
        <div id="printMOrder">
          <el-card class="box-card" v-for="(item, i) in checkDataList" :key="i" style="margin-top-top:0px;margin-bottom:10px;font-size: 16px !important;">
            <el-row style="font-size:12px;">
              <el-col :span="10" :offset="3">批次号</el-col>
              <el-col :span="10" style="font-weight: bold;">{{ item.code.moNo2 }}</el-col>
            </el-row>
            <el-row style="font-size:12px;">
              <el-col :span="10" :offset="3">订单号:</el-col>
              <el-col :span="10" style="font-weight: bold;">{{ item.orderNo }}</el-col>
            </el-row>
            <el-row style="font-size:12px;">
              <el-col :span="10" :offset="3">客户名称:</el-col>
              <el-col :span="10" style="font-weight: bold;">{{ item.cName }}</el-col>
            </el-row>
            <el-row style="font-size:12px;">
              <el-col :span="10" :offset="3">零件名称:</el-col>
              <el-col :span="10" style="font-weight: bold;">{{ item.pName }}</el-col>
            </el-row>
            <el-row style="font-size:12px;">
              <el-col :span="10" :offset="3">订单二维码:</el-col>
              <el-col :span="10">
                <vueQr :text="JSON.stringify(item.code)" :size="80" :margin="2"></vueQr>
              </el-col>
            </el-row>
          </el-card>
        </div>
      </div>
  </div>
</template>
@@ -218,9 +320,17 @@
import DelMatUnIssueVue from './DelMatUnIssue.vue'
import { getStore } from '@/util/store.js'
import { getObj as getSysParam } from '@/api/admin/sys-public-param'
import vueQr from 'vue-qr'
import PrintJS from 'print-js'
export default {
  data() {
    return {
      checkAll: false,
      isIndeterminate: true,
      checkDataList: [],
      checkIndexList: [],
      qrData: [],
      diaPrintTab:false,
      showCustomerorder: false,
      paramObj: { customerList: null },
      customerOrder: null,
@@ -408,7 +518,7 @@
            isSearch: true,
            searchInfoType: 'text'
          },
          {
          /* {
            minWidth: '120',
            prop: 'printRequirement',
            label: '印字要求',
@@ -421,6 +531,15 @@
            minWidth: '120',
            prop: 'lengthRequirement',
            label: '盘长要求',
            sort: true,
            isTrue: true,
            isSearch: true,
            searchInfoType: 'text'
          }, */
           {
            minWidth: '120',
            prop: 'scrapQty',
            label: '报废数量',
            sort: true,
            isTrue: true,
            isSearch: true,
@@ -491,7 +610,7 @@
            searchInfoType: 'text'
          },
          {
          /* {
            minWidth: '120',
            prop: 'outerColor',
            label: '外护颜色',
@@ -509,7 +628,7 @@
            isTrue: true,
            isSearch: true,
            searchInfoType: 'text'
          },
          }, */
          {
            minWidth: '120',
@@ -558,7 +677,7 @@
            searchInfoType: 'datetimerange',
            formatter: this.formatDutyDate
          },
          {
          /* {
            minWidth: '120',
            prop: 'bomConfirmStatus',
            label: 'BOM状态',
@@ -620,7 +739,7 @@
              }
              return formatVal
            }
          },
          }, */
          {
            minWidth: '200',
            prop: 'remark',
@@ -630,7 +749,7 @@
            isSearch: true,
            searchInfoType: 'text'
          },
          {
          /* {
            minWidth: '100',
            prop: 'oriIfsOrderNo',
            label: '原IFS订单号',
@@ -665,8 +784,8 @@
            isTrue: true,
            isSearch: true,
            searchInfoType: 'text'
          },
          {
          }, */
         /*  {
            minWidth: '100',
            prop: 'qtyApply',
            label: '申请数量',
@@ -674,7 +793,7 @@
            isTrue: true,
            isSearch: true,
            searchInfoType: 'text'
          },
          }, */
          {
            minWidth: '140',
            width: '120',
@@ -697,7 +816,7 @@
            searchInfoType: 'datetimerange',
            formatter: this.formatDutyDate
          },
          {
          /* {
            minWidth: '120',
            prop: 'ifsSync',
            label: '订单同步ERP',
@@ -771,7 +890,7 @@
              }
              return formatVal
            }
          },
          }, */
          {
            minWidth: '100',
            prop: 'factoryName',
@@ -823,14 +942,7 @@
          }
        ],
        toolbar: [],
        operator: [
          // {
          //   text: '查看库存',
          //   type: 'text',
          //   size: 'small',
          //   fun: this.searchStock
          // }
        ],
        operator: null,
        operatorConfig: {
          fixed: 'right',
          label: '操作',
@@ -902,7 +1014,8 @@
    AutoOperationtask,
    IssueMaterialForm,
    OrderMergeForm,
    DelMatUnIssueVue
    DelMatUnIssueVue,
    vueQr
  },
  created() {
    this.getManufactureAttrs()
@@ -1003,7 +1116,6 @@
      }
    })
  },
  computed: {
    ...mapGetters(['permissions'])
  },
@@ -1013,7 +1125,103 @@
  mounted() {
    // this.initQueryParams()
  },
  watch:{
    diaPrintTab(newVal){
      if(!newVal){
        this.qrData = []
        this.checkIndexList = []
        this.checkDataList = []
        this.isIndeterminate = true;
      }
    }
  },
  methods: {
    //全选
    handleCheckAllChange(val) {
      if(val){
        for(var i=0;i<this.qrData.length;i++){
          this.checkIndexList.push(i)
        }
        this.checkDataList = this.qrData
      }else{
        this.checkIndexList = []
        this.checkDataList = []
      }
      this.isIndeterminate = false;
    },
    //选择要打印的二维码
    changePrintCode(){
      let indexList = this.checkIndexList
      let arr = []
      indexList.forEach(i=>{
        arr.push(this.qrData[i])
      })
      this.checkDataList = arr
    },
    //打印方法
    printFun() {
        if(this.checkDataList.length < 1){
          this.$message.warning("请选择要打印的二维码")
          return
        }
        this.diaPrintTab = false;
        PrintJS({
            printable: 'printMOrder',//页面
            type: "html",//文档类型
              maxWidth:450,
              targetStyles:['*'],
              style: `@page {
                margin:0;
                size: 360px 175px;
              }
              html{
                zoom:100%;
              }
              @media print{
                width: 360px;
                height: 175px;
                margin:0;
              }`,
              onPrintDialogClose: this.erexcel=false,
              targetStyles: ["*"], // 使用dom的所有样式,很重要
              font_size: '',
        });
    },
    //初始化二维码标签数据
    initQrData(data){
      this.qrData = []
      if(data){
        console.log(data);
        let index = Number(data.qtyRequired) + Number(data.scrapQty)
        if(index>0){
          for(var i=1;i<= index;i++){
            let obj = {
              orderNo: data.customerOrderNo,
              cName: data.customerName,
              pName: data.partName,
              code: {
                moNo: data.moNo,
                moNo2: null,
              }
            }
            let no = (i+"").padStart(3,'0')
            obj.code.moNo2 = data.moNo + no
            this.qrData.push(obj)
          }
        }
      }
    },
    //标签打印按钮
    labelPrint(){
      if(this.multipleSelection.length==0){
          this.$message.warning('请选择一条数据')
          return
      }
      let selection = this.multipleSelection
      let lastRow = selection[ selection.length - 1 ]
      this.initQrData(lastRow)
      this.diaPrintTab = true
    },
    getManufactureAttr(row, column, cellValue) {
      this.manufactureAttrs.forEach((obj) => {
        if (obj.value === cellValue) {
@@ -1654,7 +1862,7 @@
      } else {
        this.$message.error('上传失败')
      }
    }
    },
  }
}
</script>
@@ -1662,4 +1870,4 @@
.gantt-info {
  display: none !important;
}
</style>
</style>