loulijun2021
2022-08-05 d33eacc1f85ac3a736b33ba4713a19aae466d711
src/views/scgl/sckbg.vue
@@ -1,7 +1,6 @@
<template>
  <div>
    <div class="body" style="padding: 0;height: 100%" :style="{height:mainHeight+'px'}">
      <el-tabs ref="elTabs" v-model="activeName" type="border-card" @tab-click="tabClick">
        <el-tab-pane label="生产列表">
          <div style="margin-left: 10px;margin-top:10px;display: flex;justify-content: space-between">
@@ -31,7 +30,7 @@
          <div class="elTableDiv">
            <el-table
              :data="tableData"
              :height="tableHeight+'px'"
              :height="isIpad? (tableHeight+50):tableHeight"
              border
              stripe
              :style="{width: 100+'%',height:tableHeight+'px',}"
@@ -57,6 +56,7 @@
                prop="RowNum"
                width="50"
                label="序号"
                fixed
              />
              <el-table-column
                prop="status"
@@ -74,32 +74,37 @@
              <el-table-column
                prop="wo_code"
                label="工单号"
                min-width="160"
                sortable="custom"
              />
              <el-table-column
                prop="partcode"
                label="产品编码"
                min-width="110"
                sortable="custom"
              />
              <el-table-column
                prop="partname"
                min-width="110"
                label="产品名称"
                sortable="custom"
              />
              <el-table-column
                prop="stepname"
                label="工序"
                min-width="80"
                sortable="custom"
              />
              <el-table-column
                prop="descr"
                label="工序描述"
                width="150"
                min-width="150"
                sortable="custom"
              />
              <el-table-column
                prop="plan_qty"
                label="任务数量"
                width="110"
                sortable="custom"
              />
              <el-table-column
@@ -187,7 +192,7 @@
          <div class="elTableDiv">
            <el-table
              :data="WXtableData"
              :height="tableHeight+'px'"
              :height="isIpad? (tableHeight+50):tableHeight"
              border
              stripe
              :style="{width: 100+'%',height:tableHeight+'px',}"
@@ -213,6 +218,7 @@
                prop="RowNum"
                width="50"
                label="序号"
                fixed
              />
              <el-table-column
                prop="status"
@@ -230,32 +236,37 @@
              <el-table-column
                prop="wo_code"
                label="工单号"
                min-width="160"
                sortable="custom"
              />
              <el-table-column
                prop="partcode"
                label="产品编码"
                min-width="110"
                sortable="custom"
              />
              <el-table-column
                prop="partname"
                label="产品名称"
                min-width="110"
                sortable="custom"
              />
              <el-table-column
                prop="stepname"
                label="工序"
                min-width="80"
                sortable="custom"
              />
              <el-table-column
                prop="descr"
                label="工序描述"
                width="150"
                min-width="150"
                sortable="custom"
              />
              <el-table-column
                prop="plan_qty"
                label="任务数量"
                width="110"
                sortable="custom"
              />
              <el-table-column
@@ -268,7 +279,6 @@
                prop="ng_qty"
                label="不良数量"
                width="150"
                sortable="custom"
              />
              <el-table-column
@@ -303,192 +313,6 @@
            @pagination="getMesOrderStepSearch"
          />
        </el-tab-pane>
        <el-tab-pane label="工序检验">
          <div style="margin-left: 10px;margin-top:10px;display: flex;flex-direction: column">
            <div style="margin-bottom: 10px;font-size: 14px">
              <i class="el-icon-s-operation" style="color:#42b983; margin-right: 5px" />扫码信息
            </div>
            <div style="display: flex;align-items: center">
              <div style="width: 90px">扫描条码:</div>
              <el-input
                v-model="GXform.orderstepqrcode"
                name="GXproduceCode"
                style="width: 300px"
                @keyup.enter.native="val=>enterNative(val,'GXproduceCode')"
              />
            </div>
            <!--        六项信息      -->
            <div style="display:flex;margin-top: 10px;align-items: center">
              <div style="display: flex;">
                <div style="display: flex;margin-right: 50px">
                  <div style="width: 90px">工单编码:</div>
                  <div style="width: 100px">PX00120012312</div>
                </div>
                <div style="display: flex;">
                  <div style="width: 90px">产品编码:</div>
                  <div style="width: 100px">123-446-789</div>
                </div>
              </div>
              <div style="display: flex;margin-left: 30px;">
                <div style="display: flex;margin-right: 50px">
                  <div style="width: 90px">产品名称:</div>
                  <div style="width: 100px">PX00120012312</div>
                </div>
                <div style="display: flex;">
                  <div style="width: 90px">产品规格:</div>
                  <div style="width: 100px">123-446-789</div>
                </div>
              </div>
              <div style=" display: flex;margin-left: 30px;">
                <div style="display: flex;margin-right: 50px">
                  <div style="width: 90px">工序编码:</div>
                  <div>PX00120012312</div>
                </div>
                <div style="display: flex;">
                  <div style="width: 90px">工序名称:</div>
                  <div>123-446-789</div>
                </div>
              </div>
            </div>
            <div style="margin: 10px 0;font-size: 14px">
              <i class="el-icon-s-operation" style="color:#42b983; margin-right: 5px" />检验标准信息
            </div>
            <div style="display: flex;align-items: center">
              <div style="width: 90px">检验标准:</div>
              <el-select
                v-model="dialogForm.aaa"
                style="width: 200px;"
                placeholder="请选择"
                filterable
              >
                <el-option
                  v-for="item in ARR"
                  :key="item.code"
                  :label="item.name"
                  :value="item.code"
                />
              </el-select>
              <div style="width: 90px;margin-left: 50px;">检验人员:</div>
              <el-select
                v-model="dialogForm.aaa"
                style="width: 200px;"
                placeholder="请选择"
                filterable
              >
                <el-option
                  v-for="item in ARR"
                  :key="item.code"
                  :label="item.name"
                  :value="item.code"
                />
              </el-select>
            </div>
            <div style="margin: 10px 0;font-size: 14px">
              <i class="el-icon-s-operation" style="color:#42b983; margin-right: 5px" />检验项信息
            </div>
            <div>
              <el-button type="primary" @click="add">新增</el-button>
            </div>
            <div style="margin-top: 10px">
              <el-table
                :data="JYTableData"
                :height="(tableHeight-195)+'px'"
                border
                stripe
                :style="{width: 100+'%',height:tableHeight+'px',}"
                highlight-current-row
                :header-cell-style="this.$headerCellStyle"
                :cell-style="this.$cellStyle"
                @sort-change="JYsortChange"
              >
                <el-table-column
                  prop="RowNum"
                  label="序号"
                />
                <!--                <el-table-column-->
                <!--                  prop="bm"-->
                <!--                  label="检验项目编码"-->
                <!--                  sortable="custom"-->
                <!--                />-->
                <el-table-column
                  prop="mc"
                  sortable="custom"
                  label="检验项目名称"
                >
                  <!--                  <template slot-scope="{row}">-->
                  <!--                    <el-input v-if="row.isVisible===1" v-model="row.group_code" placeholder="请输入" />-->
                  <!--                    <div v-else> {{ row.group_code }}</div>-->
                  <!--                  </template>-->
                </el-table-column>
                <el-table-column
                  prop="ms"
                  label="检验标准描述"
                  sortable="custom"
                >
                  <!--                  <template slot-scope="{row}">-->
                  <!--                    <el-input v-if="row.isVisible===1" v-model="row.group_code" placeholder="请输入" />-->
                  <!--                    <div v-else> {{ row.group_code }}</div>-->
                  <!--                  </template>-->
                </el-table-column>
                <el-table-column
                  prop="jg"
                  label="检验结果"
                  sortable="custom"
                >
                  <template slot-scope="{row}">
                    <div style="justify-content: flex-start ;">
                      <el-radio v-model="radio" label="1">备选项</el-radio>
                      <el-radio v-model="radio" label="2">备选项</el-radio>
                    </div>
                  </template>
                </el-table-column>
                <el-table-column
                  label="操作"
                >
                  <template slot-scope="{row}">
                    <div class="operationClass">
                      <el-button v-if="row.isVisible===0" type="text" @click="del(row)">删除</el-button>
                      <el-button v-if="row.isVisible===1" type="text" @click="confirm(row)">确认</el-button>
                      <el-button v-if="row.isVisible===1" type="text" @click="cancel(row)">取消</el-button>
                    </div>
                  </template>
                </el-table-column>
              </el-table>
            </div>
            <!--   检验结果   和  检验备注      -->
            <div style="display: flex;margin-top: 20px;align-items: center">
              <div style="display: flex;margin-right: 50px;align-items: center">
                <div style="width: 90px">检验结果:</div>
                <el-select
                  v-model="dialogForm.aaa"
                  style="width: 200px;"
                  placeholder="请选择"
                  filterable
                >
                  <el-option
                    v-for="item in ARR"
                    :key="item.code"
                    :label="item.name"
                    :value="item.code"
                  />
                </el-select>
              </div>
              <div style="display: flex;">
                <div style="width: 90px">检验备注:</div>
                <!--                <el-input v-model="row.group_code" placeholder="请输入" />-->
              </div>
            </div>
            <div style="display: flex;margin: 20px 0;align-items: center">
              <el-button type="primary">首检保存</el-button>
              <el-button type="primary" style="margin-left: 50px">巡检保存</el-button>
              <el-button type="primary" style="margin-left: 50px">完工检保存</el-button>
              <el-button type="info" style="margin-left: 50px">取消</el-button>
            </div>
          </div>
        </el-tab-pane>
      </el-tabs>
    </div>
@@ -496,7 +320,7 @@
    <el-dialog
      :title="dialogTitle"
      :visible.sync="dialogVisible"
      width="800"
      width="850px"
      class="dialogVisible"
      :top="dialogTitle==='自制报工'?'5vh':'15vh'"
      :close-on-click-modal="false"
@@ -831,6 +655,69 @@
        </div>
      </span>
    </el-dialog>
    <!--打印预览页面-->
    <el-dialog
      title="预览"
      :visible.sync="dialogVisible2"
      width="1140"
      :close-on-click-modal="false"
      @close="dialogVisible2Close"
    >
      <!-- 要打印的区域 -->
      <div id="printMe2" style="padding: 30px;">
        <div
          style="display: flex;width: 250px;height: 150px;border: 1px solid #000;text-align: center;font-size: 10px;"
        >
          <div style="width: 60px;display: flex;flex-direction: column;border-right: 1px solid #000">
            <div
              style="display: flex;height: 75%;border-bottom:1px solid #000;justify-content: center;align-items: center "
            >
              <div id="qrCode2" ref="qrCodeDiv2" />
            </div>
            <div style="display: flex;height: 25%;justify-content: flex-start;align-items: center">
              <div style="margin-left: 5px;width: 40px">数量:</div>
              {{ qrForm.startqty }}
            </div>
          </div>
          <div style="width:190px;display: flex;flex-direction: column">
            <div
              style="display: flex;height: 25%;border-bottom:1px solid #000;justify-content: flex-start;align-items: center;text-align: left"
            >
              <div style="width: 60px;margin-left: 5px;">工单编号:</div>
              <div>{{ qrForm.wo_code }}</div>
            </div>
            <div
              style="display: flex;height: 25%;border-bottom:1px solid #000;justify-content: flex-start;align-items: center ;text-align: left"
            >
              <div style="width: 60px;margin-left: 5px;">产品编码:</div>
              <div>{{ qrForm.partcode }}</div>
            </div>
            <div
              style="display: flex;height: 25%;border-bottom:1px solid #000 ;justify-content: flex-start;align-items: center;text-align: left"
            >
              <div style="width:60px;margin-left: 5px;">产品名称:</div>
              <div>{{ qrForm.partname }}</div>
            </div>
            <div style="display: flex;height: 25%;justify-content: flex-start;align-items: center;text-align: left">
              <div style="width: 60px;margin-left: 5px;">下道工序:</div>
              <div>{{ qrForm.nextstepname }}</div>
            </div>
          </div>
        </div>
      </div>
      <span slot="footer" class="dialog-footer">
        <div class="footerButton">
          <el-button @click="dialogVisible2 = false">取 消</el-button>
          <el-button v-print="printObj2" type="primary">确 定</el-button>
        </div>
      </span>
    </el-dialog>
  </div>
</template>
@@ -852,8 +739,8 @@
  SavaMesOrderStepStart,
  SavaMesOrderStepReport
} from '@/api/scgl'
import { urlAddRandomNo, webapp_urlprotocol_startup, webapp_ws_ajax_run, webapp_ws_autoupdate } from '@/utils/grwebapp'
import { UserGroupDelete } from '@/api/jcsz'
import { urlAddRandomNo, webapp_ws_ajax_run, webapp_ws_autoupdate } from '@/utils/grwebapp'
import QRCode from 'qrcodejs2'
const SER_HZ = /^[\u4e00-\u9fa5]+$/
export default {
@@ -883,6 +770,7 @@
    return {
      mainHeight: 0,
      tableHeight: 0,
      isIpad: false,
      // produceCode: '', // 工序码
      // WXproduceCode: '', // 外协工序码
      radioSelected: '', // 工序选中
@@ -991,19 +879,52 @@
        ]
      },
      activeName: '',
      GXform: { // 工序
        orderstepqrcode: '' // 扫描的二维码信息
        // prop: 'wo_code', // 排序字段z
        // order: 'asc', // 排序字段
        // page: 1, // 第几页
        // rows: 20 // 每页多少条
      dialogVisible2: false,
      printObj2: {
        id: 'printMe2',
        popTitle: '打印模板',
        preview: false,
        extraHead: '<meta http-equiv="Content-Language" content="zh-cn"/>',
        closeCallback(vue) { // 关闭打印的回调事件(无法确定点击的是确认还是取消)
          console.log('11212', vue)
          // vue.dialogVisible = false
          vue.dialogVisible2 = false
          vue.dialogVisible = false
        },
        beforeOpenCallback(vue) {
          vue.printLoading = true
          console.log('打开之前')
          console.log()
        },
        openCallback(vue) {
          vue.printLoading = false
          console.log('执行了打印')
        }
      },
      JYTableData: [
        { RowNum: 1, bm: '001', mc: '尺寸', ms: '无', jg: '我是结果', isVisible: 0 }
      ], // 检验项信息表格
      radio: ''
      qrForm: {
        qrvalue: '',
        startqty: '',
        wo_code: '',
        partcode: '',
        partname: '',
        nextstepname: ''
      }
    }
  },
  // computed: {
  //   qrLink: function() {
  //     return this.$store.getters.getPreviewUrl
  //   }
  // },
  // watch: {
  //   qrLink: function(newVal, oldNew) {
  //     if (newVal !== oldNew) {
  //       this.$nextTick(() => {
  //         this.bindQRCode(newVal)
  //       })
  //     }
  //   }
  // },
  created() {
    this.getMesOrderStepSearch()
    this.tabClick()
@@ -1014,9 +935,10 @@
    this.$nextTick(() => {
      $("input[name='produceCode']")[0].focus()
      // this.bindQRCode('10001;001')
    })
    // webapp_urlprotocol_startup()
    webapp_ws_autoupdate(true)
    // webapp_ws_autoupdate(true)
  },
  methods: {
    async getMesOrderStepSearch() {
@@ -1083,11 +1005,6 @@
          this.form.orderstepqrcode = ''
        })
      }
      if (this.$refs.elTabs.currentName === '2') {
        this.$nextTick(() => {
          $("input[name='GXproduceCode']")[0].focus()
        })
      }
    },
    // 扫码键盘回车事件
    async enterNative(val, belong) {
@@ -1126,10 +1043,6 @@
        if (res.code === '200' && res.count === 3) {
          await this.WXback(res.data)
        }
      }
      if (belong === 'GXproduceCode') {
        console.log('GXproduceCode')
      }
    },
    // 查询
@@ -1188,8 +1101,10 @@
        if (obj.nextstepname === null || obj.nextstepcode === '') {
          this.dialogForm.nextstepname = obj.stepname
          this.dialogForm.nextstepcode = obj.stepcode
        } else {
          this.dialogForm.nextstepname = obj.nextstepname
          this.dialogForm.nextstepcode = obj.nextstepcode
        }
        this.dialogForm.startqtySum = obj.noreportqty
@@ -1251,8 +1166,10 @@
        this.dialogForm.stepcode = obj.stepcode
        if (obj.nextstepname === null || obj.nextstepcode === '') {
          this.dialogForm.nextstepname = obj.stepname
          this.dialogForm.nextstepcode = obj.stepcode
        } else {
          this.dialogForm.nextstepname = obj.nextstepname
          this.dialogForm.nextstepcode = obj.nextstepcode
        }
        this.dialogForm.noputqty = obj.noputqty
        this.dialogForm.stepseq = obj.seq
@@ -1458,9 +1375,10 @@
            }
            SavaMesOrderStepIn(data).then(res => {
              if (res.code === '200') {
                this.WXprint()
                this.WXprint2()
                this.$message.success('收料成功!')
                this.dialogVisible = false
                this.dialogVisible2 = true
                this.tabClick()
              } else {
                this.$message.error('收料失败!')
@@ -1520,11 +1438,13 @@
              ngqty: this.dialogForm.noputqty === '' ? 0 : this.dialogForm.noputqty, // 不良数量
              badcode: this.dialogForm.badcode.length < 1 ? '' : this.dialogForm.badcode.join(';')// 不良原因
            }
            SavaMesOrderStepReport(data).then(res => {
              if (res.code === '200') {
                this.ZZprint()
                this.ZZprint2()
                this.$message.success('报工成功!')
                this.dialogVisible = false
                this.dialogVisible2 = true
                this.tabClick()
              } else {
                this.$message.error('报工失败!')
@@ -1534,112 +1454,63 @@
        }
      })
    },
    async ZZprint() {
      const obj = {
        recordset: [
          {
            wo_code: this.dialogForm.wo_code, // 工单编号
            partcode: this.dialogForm.partcode, // 产品编码
            partname: this.dialogForm.partname, // 产品名称
            next_stepname: this.dialogForm.nextstepname, // 下道工序
            qty: this.dialogForm.startqty, // 数量
            qrcode: this.form.orderstepqrcode// 二维码
          }
        ]
      }
      const args = {
        type: 'print', // preview  print
        showOptionDlg: false, // 如果不显示打印对话框而直接打印,将此行注释去掉即可
        report: urlAddRandomNo('./static/grf/报工产出标签.grf'),
        data: obj
      }
      webapp_ws_ajax_run(args)
    // 生成二维码
    bindQRCode(text) {
      new QRCode(this.$refs.qrCodeDiv2, {
        text: text,
        width: 50,
        height: 50,
        colorDark: '#000', // 二维码颜色
        colorLight: '#ffffff', // 二维码背景色
        correctLevel: QRCode.CorrectLevel.L// 容错率,L/M/H
      })
    },
    // 外协收料打印
    WXprint() {
      // 参数具体说明请参考帮助文档中的“WEB报表(B/S报表)->WEB报表客户端->启动参数说明”部分
      const obj = {
        recordset: [
          {
            wo_code: this.dialogForm.wo_code, // 工单编号
            partcode: this.dialogForm.partcode, // 产品编码
            partname: this.dialogForm.partname, // 产品名称
            next_stepname: this.dialogForm.nextstepname, // 下道工序
            qty: this.dialogForm.sqty, // 数量
            qrcode: this.WXform.orderstepqrcode// 二维码
          }
        ]
      }
      const args = {
        type: 'print', // preview  print
        showOptionDlg: false, // 如果不显示打印对话框而直接打印,将此行注释去掉即可
        report: urlAddRandomNo('./static/grf/外协收料标签.grf'),
        data: obj
      }
      webapp_ws_ajax_run(args)
    ZZprint2() {
      this.qrForm.qrvalue = this.dialogForm.wo_code + ';' + this.dialogForm.nextstepcode
      this.qrForm.startqty = this.dialogForm.startqty
      this.qrForm.wo_code = this.dialogForm.wo_code
      this.qrForm.partcode = this.dialogForm.partcode
      this.qrForm.partname = this.dialogForm.partname
      this.qrForm.nextstepname = this.dialogForm.nextstepname
      this.$nextTick(() => {
        this.bindQRCode(this.qrForm.qrvalue)
        console.log(this.$refs.qrCodeDiv2, 123)
        // console.log(this.$refs.qrCodeDiv2.querySelectorAll('#qrCode2>img'), 1)
        // console.log(this.$refs.qrCodeDiv2.querySelectorAll('#qrCode2>canvas'), 2)
      })
    },
    WXprint2() {
      this.qrForm.qrvalue = this.dialogForm.wo_code + ';' + this.dialogForm.nextstepcode
      this.qrForm.startqty = this.dialogForm.sqty
      this.qrForm.wo_code = this.dialogForm.wo_code
      this.qrForm.partcode = this.dialogForm.partcode
      this.qrForm.partname = this.dialogForm.partname
      this.qrForm.nextstepname = this.dialogForm.nextstepname
      this.$nextTick(() => {
        this.bindQRCode(this.qrForm.qrvalue)
      })
    },
    dialogVisible2Close() {
      this.qrForm.qrvalue = ''
      this.qrForm.startqty = ''
      this.qrForm.wo_code = ''
      this.qrForm.partcode = ''
      this.qrForm.partname = ''
      this.qrForm.nextstepname = ''
      this.$refs.qrCodeDiv2 = ''
    },
    // 获取页面高度
    getHeight() {
      this.$nextTick(() => {
        this.mainHeight = window.innerHeight - 250
        this.tableHeight = this.mainHeight - 80
        this.tableHeight = this.mainHeight - 50
        this.isIpad = window.innerHeight < 769
        if (window.innerHeight < 769) {
          this.tableHeight = this.tableHeight - 50
        }
      })
    },
    /*
  *检验项信息
  * */
    JYsortChange({ column, prop, order }) {
      if (order === 'descending') {
        order = 'desc'
      } else if (order === 'ascending') {
        order = 'asc'
      } else {
        order = 'desc'
      }
      this.GXform.order = order
      this.GXform.prop = prop
      // this.getOrganizationSearch()
    },
    // 获取工序列表
    // getList(){
    //
    // },
    //  新增
    add() {
      // this.JYTableData.forEach(item => {
      //   item.isVisible = 0
      // })
      // let number = Math.random() * Math.random()// 作为删除时的标识符
      // number = number === 0 ? (10 + Math.random()) : number
      // const data = { group_code: '', group_name: '', description: '', isVisible: 1, number: number }
      // this.JYTableData.unshift(data)
    },
    // 删除
    del() {
      this.$confirm('是否确认删除?', '提示', {
        confirmButtonText: '确定',
        cancelButtonText: '取消',
        type: 'warning'
      }).then(() => {
        // UserGroupDelete({ UserGrupCode: row.group_code }).then(res => {
        //   if (res.code === '200') {
        //     this.$message.success('删除成功!')
        //     this.getUserGroupSearch()
        //   }
        // })
      }).catch(() => {
        this.$message.info('已取消删除')
      })
    },
    //  确认
    confirm() {
    },
    //  取消
    cancel() {
    }
  }
}
@@ -1823,3 +1694,12 @@
  }
}
</style>
<style media="print">
/*@media print {*/
@page {
  size: auto;
  margin: 3mm;
  font-size: 10px;
}
</style>