licp
2024-03-29 f48478135272fa9c3b60ac53434097d225820fa3
src/views/quality/Packaging_ledger/index.vue
@@ -8,18 +8,18 @@
            :isShowHide="true"
            :prelang="prelang"
            :ajaxFun="ajaxFun"
            :options="options"
            @handleSelectionChange="handleCurrentChange"
            :options="options"
            @handleSelectionChange="handleSelectionChange"
            ref="processconfiguration"
            >
        <template #toolbar></template>
              <template #toolbar></template>
            </ttable>
            </el-col>
            <el-col :span="13" style="padding-left: 10px">
                <el-card>
                <div slot="header">
                <el-row>
                    <el-col :span="8">
                    <el-col :span="6">
                    <span>装箱明细</span>
                    </el-col>
                    <el-col :span="8" :offset="4">
@@ -33,6 +33,16 @@
                    </el-col>
                    <el-col :span="2">
                    <el-button
                        v-if="!isCheck && permissions.quality_packaging_ledger_info_add"
                        style="float: right; padding: 3px 6px;color:#fff;background-color: #9f7b95;"
                        type="text"
                        @click="handleCheck"
                        >核对
                    </el-button>
                    </el-col>
                    <el-col :span="2">
                    <el-button
                        v-if="!isCheck && permissions.quality_packaging_ledger_info_add"
                        style="float: right; padding: 3px 0"
                        type="text"
                        @click="addpreserve"
@@ -41,6 +51,7 @@
                    </el-col>
                    <el-col :span="2">
                    <el-button
                        v-if="!isCheck && permissions.quality_packaging_ledger_info_add"
                        style="float: right; padding: 3px 0"
                        type="text"
                        @click="relateOperationParam()"
@@ -50,67 +61,75 @@
                </el-row>
                </div>
                <el-table
              :data="testStandardParams"
              id="testStandardParamTable"
              ref="testStandardParam"
              :default-sort="{ prop: 'index' }"
              highlight-current-row
              height="700"
              style="width: 100%"
              class="l-mes-table"
              border
              stripe
            >
              <el-table-column
                prop="index"
                label="序号"
                align="center"
                width="50"
              />
              <el-table-column
                label="产品"
                prop="product"
                align="center"
              />
              <el-table-column
                label="产品编号"
                prop="productNo"
                align="center"
              >
              </el-table-column>
              <el-table-column
                label="规格型号"
                prop="specs"
                align="center"
              >
              </el-table-column>
              <el-table-column
                label="单位"
                prop="unit"
                align="center"
              >
              </el-table-column>
              <el-table-column
                label="数量"
                prop="parameterFormat"
                align="center"
                width="80"
              >
                <template slot-scope="scope">
                  <el-input v-model="scope.row.parameterFormat"></el-input>
                </template>
              </el-table-column>
              <el-table-column label="单位" prop="unit" align="center" />
              <el-table-column
                fixed="right"
                label="操作"
                align="center"
                width="80">
                <template slot-scope="scope">
                  <el-button @click="deleteadd(scope.row)"  size="small">删除</el-button>
                </template>
              </el-table-column>
            </el-table>
                    :data="testStandardParams"
                    id="testStandardParamTable"
                    ref="testStandardParam"
                    highlight-current-row
                    height="700"
                    style="width: 100%"
                    class="l-mes-table"
                    border
                    stripe
                  >
                    <el-table-column
                      type ="index"
                      label="序号"
                      align="center"
                      width="50"
                    />
                    <el-table-column
                      label="产品"
                      prop="product"
                      show-overflow-tooltip
                      align="center"
                    />
                    <el-table-column
                      label="产品编号"
                      prop="productNo"
                      show-overflow-tooltip
                      align="center"
                    >
                    </el-table-column>
                    <el-table-column
                      label="批次号"
                      prop="outBatchNo"
                      show-overflow-tooltip
                      align="center"
                    >
                    </el-table-column>
                    <el-table-column
                      label="规格型号"
                      prop="specs"
                      show-overflow-tooltip
                      align="center"
                    >
                    </el-table-column>
                    <el-table-column
                      label="单位"
                      prop="unit"
                      show-overflow-tooltip
                      align="center"
                    >
                    </el-table-column>
                    <el-table-column
                      label="数量"
                      prop="number"
                      align="center"
                      show-overflow-tooltip
                      width="80"
                    ></el-table-column>
                    <el-table-column
                      v-if="permissions.quality_packaging_ledger_info_operate"
                      fixed="right"
                      label="操作"
                      align="center"
                      width="80">
                      <template slot-scope="scope">
                        <el-button type="text" @click="deleteadd(scope.row)" icon="el-icon-delete"  size="small">删除</el-button>
                      </template>
                    </el-table-column>
                  </el-table>
                </el-card>
            </el-col>
        </el-row>
@@ -126,19 +145,159 @@
        @handleSelectionChange = "preserve"
        >
        </packfromadd>
        </basic-container>
      </basic-container>
      <el-dialog title="标签列表" top="5vh" :visible.sync="diaPrintTab" width="500px">
        <div style="width:100%;height: 400px;overflow-y: auto;">
          <div class="dia_body" id="qrCard">
            <el-card v-for="(item, i) in qrData" :key="i" >
              <div>
                  <table border="2px" class="x1111116">
                      <tr class="x1111113">
                            <td class="x1111114" colspan=6>
                              <div style="height: 60px;display: flex;margin-top: 4px;">
                                  <div style="margin-top: 5px;">
                                  <img width="150" height="48"  src="../../../../public/img/image001.jpg" alt="IMG_256">
                                  </div>
                                  <div style="margin-left: 45px;margin-top: 15px ;">
                                    <span lang="EN-US" class="x1111111">中天海洋科技有限公司</span>
                                  </div>
                              </div>
                            </td>
                      </tr>
                      <tr class="x1111117">
                            <td class="x1111114">
                              <span style="font-family: 宋体;text-align: center;">包&nbsp;装&nbsp;人:</span>
                            </td>
                            <td class="x1111114"  colspan=4 >{{ item.createUser }} </td>
                            <td class="x1111114"  rowspan=3  >
                              <div style="padding: 1px;">
                              <vueQr :text=str+item.packageBoxId :size="110" :margin="1"></vueQr>
                              </div>
                            </td>
                      </tr>
                      <tr class="x1111117">
                            <td class="x1111114">
                              <span style="font-family: 宋体;text-align: center;">包 装 编号:</span>
                            </td>
                            <td class="x1111114" colspan=4>{{ item.packageNo }}</td>
                      </tr>
                      <tr class="x1111117">
                            <td class="x1111114">
                              <span style="font-family: 宋体;text-align: center;">合&nbsp;同&nbsp;号:</span>
                            </td>
                            <td class="x1111114" colspan=4>{{ item.contractNo }}</td>
                      </tr>
                      <tr class="x1111113">
                        <td class="x1111114" colspan=6>
                          <div style="height: 75px;" >
                                  <p><span lang="EN-US" class="x1111112">地址:江苏省南通经济技术开发区常兴路96号</span></p>
                                  <p><span lang="EN-US" class="x1111112">电话/传真:0513—89191125</span></p>
                          </div>
                        </td>
                      </tr>
                  </table>
              </div>
              <!-- <el-row>
                <el-col :span="10" :offset="3">序号:</el-col>
                <el-col :span="10" style="font-weight: bold;">{{ i + 1 }}</el-col>
              </el-row>
              <el-row>
                <el-col :span="10" :offset="3">包装编号:</el-col>
                <el-col :span="10" style="font-weight: bold;">{{ item.packageNo }}</el-col>
              </el-row>
              <el-row>
                <el-col :span="10" :offset="3">包装台账二维码:</el-col>
                <el-col :span="10">
                  <vueQr :text=str+item.packageBoxId :size="110" :margin="1"></vueQr>
                </el-col>
              </el-row>
              <div style="background-color: blueviolet;height: 80px;">
                        1111
              </div> -->
            </el-card>
          </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>
      <input type="password" id="ScanCodeInfo" v-model="codeInfo" @keyup.enter="keyup" style="opacity: 0;height: 0px;margin: 0px;padding: 0px;position: absolute;top: 0;"></input>
      <el-dialog title="核对列表" top="5vh" :visible.sync="checkShow" width="800px">
        <el-table
            :data="testStandardParams"
            id="testStandardParamTable"
            ref="testStandardParam"
            highlight-current-row
            height="700"
            style="width: 100%"
            class="l-mes-table"
            border
            stripe
            >
            <el-table-column
                type ="index"
                label="序号"
                align="center"
                width="50"
            />
            <el-table-column
                label="产品编号"
                prop="productNo"
                show-overflow-tooltip
                align="center"
            >
            </el-table-column>
            <el-table-column
                label="产品名称"
                prop="product"
                show-overflow-tooltip
                align="center"
            />
            <el-table-column
                label="批次号"
                prop="outBatchNo"
                show-overflow-tooltip
                align="center"
            >
            </el-table-column>
            <el-table-column
                label="核对"
                prop="isCheck"
                align="center"
                show-overflow-tooltip
                width="80"
            >
            <template slot-scope="scope">
                <i class="el-icon-check" v-if="scope.row.isCheck"></i>
                <i v-else></i>
            </template>
            </el-table-column>
            </el-table>
        </el-dialog>
    </div>
</template>
<script>
import { pagedata,dropById,list,saveList,deledata,sAuditstatus} from '@/api/quality/Packaging_ledger'
import { pagedata,dropById,list,saveList,deledata,sAuditstatus,qualityPackageBoxDetail,qualityPackageBox} from '@/api/quality/Packaging_ledger'
import ttable from '@/views/common/ztt-table.vue'
import packfrom from './pack-from.vue'
import packfromadd from './pack-fromadd.vue'
import vueQr from 'vue-qr'
import PrintJS from 'print-js'
import { mapGetters } from 'vuex'
export default {
    data(){
        return {
          goid:'',
          str:"https://ztms-mes.chinaztt.cn/#/pack?id=",
          qrData:[],
          diaPrintTab: false,
          checkShow:false,
          multipleSelection: [],
          isCheck: false,
          dataway:{},
          datalist:[],
          testStandardParams: [],
          packageBoxId:{},
            prelang: 'operation',
@@ -153,7 +312,7 @@
                border: true, // 是否有纵向边框
                lazy: false, // 是否需要懒加载
                fit: true, // 列的宽度是否自撑开
                multiSelect: false, //
                multiSelect: true, //
                isEdit:false,
                seqNo: true,
                isShowHide: true, // 是否显示显影按钮
@@ -228,28 +387,8 @@
                    searchInfoType: 'datetimerange',
                },
                ],
                toolbar: [
                    {
                      text: '新增',
                      type: 'primary',
                      fun: this.addOrUpdateHandle
                    },
                ],
                operator: [
                    {
                      text: '删除',
                      icon: 'el-icon-delete',
                      type: 'text',
                      size: 'small',
                      fun: this.deleteHandle
                    },{
                      text: '检验',
                      icon: 'el-icon-delete',
                      type: 'text',
                      size: 'small',
                      fun: this.check
                    }
                  ],
                toolbar: [],
                operator: null,
                  operatorConfig: {
                    fixed: 'right',
                    label: '操作',
@@ -257,20 +396,145 @@
                    minWidth: 120
                  }
            },
            codeInfo:null,
            startTime: null,
       }
    },
    components: {
        ttable,
        packfrom,
        packfromadd
        },
        watch: {
      ttable,
      packfrom,
      packfromadd,
      vueQr
    },
    created(){
      if(this.permissions.quality_packaging_ledger_add){
          this.table.toolbar.push({
            text: '新增',
            type: 'primary',
            fun: this.addOrUpdateHandle
          })
      }
      if(this.permissions.quality_packaging_ledger_labelprint){
          this.table.toolbar.push({
            text: '标签打印',
            type: 'primary',
            fun: this.printLabel
          })
          this.table.toolbar.push({
            text: '下载装箱清单',
            type: 'primary',
            fun: this.downOrder
          })
      }
      let arr = []
      if(this.permissions.quality_packaging_ledger_inspect){
        arr.push({
              text: '检验',
              icon: 'el-icon-position',
              type: 'text',
              size: 'small',
              fun: this.check,
              show: {
                val: [
                    '草稿',
                    '未报检',
                ],
                key: 'state'
              }
            })
      }
      if(this.permissions.quality_packaging_ledger_del){
        arr.push({
              text: '删除',
              icon: 'el-icon-delete',
              type: 'text',
              size: 'small',
              fun: this.deleteHandle
            })
      }
      this.table.operator = arr.length>0 ? arr : null
    },
    computed:{
      ...mapGetters(['permissions'])
    },
    watch: {
      diaPrintTab(newVal){
        if(!newVal){
          this.qrData = []
        }
      },
      checkShow(newVal){
        if(newVal){
            // this.$message.success('扫码:打开')
            let input = document.getElementById('ScanCodeInfo');
            input.focus();
            this.startTime = setInterval(()=>{
                input.focus()
            },1000)
        }else{
            this.$message.warning('扫码:关闭')
            clearInterval(this.startTime)
        }
      }
    },
    methods: {
      //包装详情
      //打印按钮
      printFun() {
          this.diaPrintTab = false;
          PrintJS({
              printable: 'qrCard',//页面
              type: "html",//文档类型
                maxWidth:450,
                targetStyles:['*'],
                style: `@page {
                  margin:0;
                  padding: 0;
                  size: 323px 210px landscape;
                }
                html{
                  zoom:100%;
                }
                @media print{
                  width: 323px;
                  height: 210px;
                  margin:7cm 0mm 0mm 0mm;
                  padding: 0mm 10mm;
                }`,
                onPrintDialogClose: this.erexcel=false,
                targetStyles: ["*"], // 使用dom的所有样式,很重要
                font_size: '',
          });
      },
      handleSelectionChange(val){
        this.multipleSelection = val
        let lastRow = val[val.length - 1]
        this.handleCurrentChange(lastRow)
      },
      printLabel(){
        if(this.multipleSelection.length==0){
          this.$message.warning('请选择一条数据')
          return
        }
        console.log(this.multipleSelection)
        this.diaPrintTab = true
        this.multipleSelection.forEach(item=>{
          const obj = {
            packageNo: item.packageNo,
            contractNo: item.contractNo,
            packageBoxId:item.id,
            createUser:item.createUser
          }
          this.qrData.push(obj)
        })
      },
       // 获取数据列表
      getData() {
        this.$refs.processconfiguration.refreshData()
      },
      wayRenovate(){
        this.getData()
      },
      //add
      addOrUpdateHandle(){
@@ -280,54 +544,101 @@
      deleteHandle(row){
        dropById({id:row.id}).then((res) =>{
          this.getData()
          this.$message.error('删除成功')
          this.$message.success('删除成功')
        })
      },
      handleCurrentChange(row){
        console.log(row,"id");
        this.packageBoxId = {
          packageBoxId:row[0].id
        if(row.state=='未报检'){
          this.isCheck = false
        }else{
          this.isCheck = true
        }
        this.goid = row[0].id
        list({packageBoxId:row[0].id}).then((res) =>{
          console.log(res,"nihaoa");
        this.dataway = row
        this.packageBoxId = {
          packageBoxId:row.id
        }
        this.rightquery()
      },
      rightquery(){
        list({packageBoxId:this.packageBoxId.packageBoxId}).then((res) =>{
          this.testStandardParams = res.data.data
        })
      },
      //详情添加
      relateOperationParam(){
        this.increase = true
        if (this.dataway.state == "未报检") {
            this.increase = true
        }else{
          this.$message.error('请先选择包装项目')
        }
      },
      preserve(datalist){
        console.log(datalist);
        this.testStandardParams = datalist
       this.testStandardParams = this.testStandardParams.concat(datalist);
       console.log(this.testStandardParams,"---------start");
       this.datalist = datalist
      },
      //右边保存
      addpreserve(){
        console.log(this.testStandardParams,"保存数据");
         this.testStandardParams.forEach(el => {
              el.packageBoxId =this.goid
         this.datalist.forEach(el => {
              el.packageBoxId =this.packageBoxId.packageBoxId
         });
        console.log(this.testStandardParams,"niaho");
        saveList(this.testStandardParams).then((res) =>{
          this.$message.success('保存成功')
          this.testStandardParams
         console.log(this.datalist);
  //       return
        saveList(this.datalist).then((res) =>{
          if(res.status===200){
            this.$message.success('保存成功')
            this.datalist = null
            this.rightquery()
          }
        }).catch(error=>{
          console.error(error);
        })
      },
    //   核对
      handleCheck(){
        if(this.testStandardParams.length>0){
            this.checkShow = true;
        }else{
            this.$message.warning('暂无核对明细')
        }
      },
      keyup(e){
        var code = ''
        var str = {}
        var that = this;
        try{
            code = JSON.parse(this.codeInfo)
            if(code.moNo2==null||code.moNo2==undefined||code.moNo2==''){
                this.$message.error('该二维码有误')
            }else{
                str = {
                    moNo2: code.moNo2,
                }
                qualityPackageBoxDetail({
                    outBatchNo:str.moNo2,
                    packageBoxId:that.packageBoxId.packageBoxId
                }).then(res=>{
                    if(res.data.data){
                        that.rightquery()
                    }else{
                        that.$message.error('该批次号不在装箱清单内')
                    }
                })
            }
        }catch(e){
            this.$message.error('该二维码有误')
        }
        this.codeInfo = null
      },
      //删除
      deleteadd(row){
          console.log(row,"");
          deledata({id:row.id}).then((res)=>{
          this.$message.success('删除成功')
          this.testStandardParams
          this.rightquery()
          })
      },
      //审核
      check(row){
        console.log(row,"审核");
        let packageBox = {
                id:row.id,
                packageNo:row.packageNo,
@@ -339,8 +650,65 @@
          this.$message.success('检验成功')
        })
      },
      downOrder(){
        if(this.multipleSelection.length==0){
          this.$message.warning('请选择一条数据')
          return
        }else{
            qualityPackageBox({id:this.multipleSelection[this.multipleSelection.length-1].id}).then(response=>{
                console.log(response)
                // 处理返回的文件流
                const blob = response.data
                const link = document.createElement('a')
                link.href = URL.createObjectURL(blob)
                const disposition = response.headers['content-disposition']
                let temp = disposition.substring(disposition.lastIndexOf('=') + 1)
                link.download = decodeURI(temp)
                document.body.appendChild(link)
                link.click()
                window.setTimeout(function () {
                    URL.revokeObjectURL(blob)
                    document.body.removeChild(link)
                }, 0)
            }).catch((error) => {
            console.error(error)
            })
        }
      }
    },
    computed: {
  },
}
</script>
</script>
<style>
.x1111111{
    color: black;
    font-size: 18pt;
    font-family: 黑体;
    justify-content: center;
    text-align: center;
}
.x1111113{
    border: 1px solid black;
    height: 40px;
}
.x1111117{
    border: 1px solid black;
    height: 40px;
}
.x1111116{
    border: 1px solid black;
    height: 200px;
    width: 445px;
}
.x1111114{
    border: 1px solid black;
    width: 80px;
}
.x1111115{
    border: 1px solid black;
}
.x1111112{
    color: black;
    font-size: 12pt;
    font-family: 宋体;
}
</style>