zuozhengqing
2023-12-01 7bb888c439e16b656286124ae2c84583f3308899
出入库明细打印-跳转新窗口
3个文件已修改
291 ■■■■■ 已修改文件
src/router/index.js 6 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/overview/AddOverviewDialog.vue 270 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/overview/previewExcel.vue 15 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/router/index.js
@@ -119,6 +119,12 @@
    // document.title = to.meta.title
  }
})
router.beforeEach((to, from, next) => {
  if(from.name==="overview"){
    localStorage.removeItem('pdfParams');
  }
  next();
});
// router.beforeEach((to, from, next) => {
// must call `next`
// console.log(to, from)
src/views/overview/AddOverviewDialog.vue
@@ -1,11 +1,7 @@
<template>
  <div class="add-common">
    <el-dialog
      :title="editCommonConfig.title + '采购入库'"
      :visible.sync="editConfig.visible"
      :width="dialogWidth"
      :before-close="handleClose"
    >
    <el-dialog :title="editCommonConfig.title + '采购入库'" :visible.sync="editConfig.visible" :width="dialogWidth"
      :before-close="handleClose">
      <!-- 头 -->
      <div slot="title" class="dialog-header">
        <span>{{ editCommonConfig.title === "查看" ? editCommonConfig.title : editCommonConfig.title + addName }}</span>
@@ -18,31 +14,18 @@
            <i class="el-icon-s-tools"></i>
            <span>动作</span>
          </span>
          <el-button v-if="showEdit" :disabled="this.editConfig.infomation.status===5" plain size="mini" style="margin-left: 15px" @click="editClick">编辑</el-button>
          <el-button v-if="showEdit" :disabled="this.editConfig.infomation.status === 5" plain size="mini"
            style="margin-left: 15px" @click="editClick">编辑</el-button>
        </div>
      </div>
      <!-- 内容 -->
      <el-form
        ref="form"
        :model="editConfig.infomation"
        :rules="rules"
        label-position="right"
        label-width="120px"
        size="mini"
      >
      <el-form ref="form" :model="editConfig.infomation" :rules="rules" label-position="right" label-width="120px"
        size="mini">
        <div>
          <!-- <div>aaa</div> -->
          <StatusCommonView
            :showButton="showButton"
            :isValidateClick="isValidateClick"
            :isDelClick="isDelClick"
            :isCancel="isCancel"
            :list="list"
            :showCancel="showCancel"
            @delClick="delClick"
            @validateClick="validateClick"
            @btnCancel="btnCancel"
          />
          <StatusCommonView :showButton="showButton" :isValidateClick="isValidateClick" :isDelClick="isDelClick"
            :isCancel="isCancel" :list="list" :showCancel="showCancel" @delClick="delClick" @validateClick="validateClick"
            @btnCancel="btnCancel" />
        </div>
        <div class="basic-info">
          <div class="basic-info-view">
@@ -51,55 +34,22 @@
                <el-form-item prop="companyName">
                  <span slot="label">{{ workType === 1 ? "供应商" : workType === 2 ? "客户" : "联系人" }}</span>
                  
                  <el-select
                    v-if="workType === 1"
                    v-model="editConfig.infomation.companyName"
                    placeholder="请选择"
                    size="mini"
                    style="width: 90%"
                    :disabled="!showFooter"
                    @change="companyChange"
                  >
                    <el-option
                      v-for="item in supplierOptions"
                      :key="item.SupplierId"
                      :label="item.SupplierName"
                      :value="{ value: item.SupplierId, label: item.SupplierName }"
                    >
                  <el-select v-if="workType === 1" v-model="editConfig.infomation.companyName" placeholder="请选择"
                    size="mini" style="width: 90%" :disabled="!showFooter" @change="companyChange">
                    <el-option v-for="item in supplierOptions" :key="item.SupplierId" :label="item.SupplierName"
                      :value="{ value: item.SupplierId, label: item.SupplierName }">
                    </el-option>
                  </el-select>
                  <el-select
                    v-else-if="workType === 2"
                    v-model="editConfig.infomation.companyName"
                    placeholder="请选择"
                    size="mini"
                    style="width: 90%"
                    :disabled="!showFooter"
                    @change="companyChange"
                  >
                    <el-option
                      v-for="item in clientOptions"
                      :key="item.ClientId"
                      :label="item.ClientName"
                      :value="{ value: item.ClientId, label: item.ClientName }"
                    >
                  <el-select v-else-if="workType === 2" v-model="editConfig.infomation.companyName" placeholder="请选择"
                    size="mini" style="width: 90%" :disabled="!showFooter" @change="companyChange">
                    <el-option v-for="item in clientOptions" :key="item.ClientId" :label="item.ClientName"
                      :value="{ value: item.ClientId, label: item.ClientName }">
                    </el-option>
                  </el-select>
                  <el-select
                    v-else
                    v-model="editConfig.infomation.companyName"
                    placeholder="请选择"
                    size="mini"
                    style="width: 90%"
                    :disabled="!showFooter"
                    @change="companyChange"
                  >
                   <el-option
                      v-for="item in companyOptions"
                      :key="item.id"
                      :label="item.name"
                      :value="{ value: item.id, label: item.name }"
                    >
                  <el-select v-else v-model="editConfig.infomation.companyName" placeholder="请选择" size="mini"
                    style="width: 90%" :disabled="!showFooter" @change="companyChange">
                    <el-option v-for="item in companyOptions" :key="item.id" :label="item.name"
                      :value="{ value: item.id, label: item.name }">
                    </el-option>
                  </el-select>
                  
@@ -135,26 +85,15 @@
              </el-col> -->
              <el-col :span="12">
                <el-form-item label="日期" prop="operationDate">
                  <el-date-picker
                    v-model="editConfig.infomation.operationDate"
                    value-format="yyyy-MM-dd"
                    type="date"
                    placeholder="选择日期"
                    style="width: 90%"
                    :disabled="!showFooter"
                  >
                  <el-date-picker v-model="editConfig.infomation.operationDate" value-format="yyyy-MM-dd" type="date"
                    placeholder="选择日期" style="width: 90%" :disabled="!showFooter">
                  </el-date-picker>
                </el-form-item>
              </el-col>
              <el-col v-if="showOperationType" :span="12">
                <el-form-item label="入库类型" prop="operationTypeId">
                  <el-select
                    v-model="editConfig.infomation.operationTypeId"
                    placeholder="请选择"
                    size="mini"
                    style="width: 90%"
                    :disabled="!showFooter"
                  >
                  <el-select v-model="editConfig.infomation.operationTypeId" placeholder="请选择" size="mini"
                    style="width: 90%" :disabled="!showFooter">
                    <el-option v-for="item in operationTypeOptions" :key="item.id" :label="item.name" :value="item.id">
                    </el-option>
                  </el-select>
@@ -167,68 +106,34 @@
              </el-col>
              <el-col :span="12">
                <el-form-item label="来源单据" prop="sourceNumber">
                  <el-input
                    v-model="editConfig.infomation.sourceNumber"
                    placeholder="例如:PO0032"
                    style="width: 90%"
                    :disabled="!showFooter"
                  ></el-input>
                  <el-input v-model="editConfig.infomation.sourceNumber" placeholder="例如:PO0032" style="width: 90%"
                    :disabled="!showFooter"></el-input>
                </el-form-item>
              </el-col>
              <el-col :span="12">
                <el-form-item v-if="workType !== 1" label="源位置" prop="fromLocationId">
                  <el-select
                    v-model="editConfig.infomation.fromLocationId"
                    placeholder="请选择"
                    size="mini"
                    style="width: 90%"
                    :disabled="!showFooter"
                  >
                    <el-option
                      v-for="item in toLocationOptions"
                      :key="item.id"
                      :label="item.jointName"
                      :value="item.id"
                    >
                  <el-select v-model="editConfig.infomation.fromLocationId" placeholder="请选择" size="mini"
                    style="width: 90%" :disabled="!showFooter">
                    <el-option v-for="item in toLocationOptions" :key="item.id" :label="item.jointName" :value="item.id">
                    </el-option>
                  </el-select>
                </el-form-item>
              </el-col>
              <el-col :span="12">
                <el-form-item v-if="workType !== 2" label="仓库位置" prop="toLocationId">
                  <el-select
                    v-model="editConfig.infomation.toLocationId"
                    placeholder="请选择"
                    size="mini"
                    style="width: 90%"
                    :disabled="!showFooter"
                  >
                    <el-option
                      v-for="item in toLocationOptions"
                      :key="item.id"
                      :label="item.jointName"
                      :value="item.id"
                    >
                  <el-select v-model="editConfig.infomation.toLocationId" placeholder="请选择" size="mini" style="width: 90%"
                    :disabled="!showFooter">
                    <el-option v-for="item in toLocationOptions" :key="item.id" :label="item.jointName" :value="item.id">
                    </el-option>
                  </el-select>
                </el-form-item>
              </el-col>
              <el-col :span="12">
                <el-form-item label="负责人" prop="contacterName">
                  <el-select
                    v-model="editConfig.infomation.contacterName"
                    placeholder="请选择"
                    size="mini"
                    style="width: 90%"
                    :disabled="!showFooter"
                    @change="contacterChange"
                  >
                    <el-option
                      v-for="item in memberOptions"
                      :key="item.id"
                      :label="item.name"
                      :value="{ value: item.id, label: item.name }"
                    >
                  <el-select v-model="editConfig.infomation.contacterName" placeholder="请选择" size="mini"
                    style="width: 90%" :disabled="!showFooter" @change="contacterChange">
                    <el-option v-for="item in memberOptions" :key="item.id" :label="item.name"
                      :value="{ value: item.id, label: item.name }">
                    </el-option>
                  </el-select>
                </el-form-item>
@@ -249,14 +154,8 @@
              </el-col> -->
              <el-col :span="24">
                <el-form-item label="备注" prop="comment">
                  <el-input
                    v-model.trim="editConfig.infomation.comment"
                    size="mini"
                    type="textarea"
                    style="width: 96%"
                    :autosize="{ minRows: 3 }"
                    :disabled="!showFooter"
                  ></el-input>
                  <el-input v-model.trim="editConfig.infomation.comment" size="mini" type="textarea" style="width: 96%"
                    :autosize="{ minRows: 3 }" :disabled="!showFooter"></el-input>
                </el-form-item>
              </el-col>
            </el-row>
@@ -269,12 +168,8 @@
            </el-tabs>
            <!-- 操作 -->
            <div v-if="activeName === 'first'">
              <CommonFormTableView
                :product-table-list="productTableList"
                :detail-enter="!showFooter"
                @inputContent="inputContent"
                @addProductClick="addProductClick('操作')"
              >
              <CommonFormTableView :product-table-list="productTableList" :detail-enter="!showFooter"
                @inputContent="inputContent" @addProductClick="addProductClick('操作')">
                <template v-if="showFooter" slot="tableButton">
                  <el-table-column label="操作" width="60" fixed="right" align="center">
                    <template slot-scope="scope">
@@ -288,54 +183,51 @@
            </div>
            <!-- 物流信息 -->
            <div v-if="activeName==='two'&&this.workType===2">
              <el-form
                label-position="right"
                :model="shipmentsInfo"
                label-width="120px"
                size="mini"
                style="margin-top: 20px;"
              >
              <el-form label-position="right" :model="shipmentsInfo" label-width="120px" size="mini"
                style="margin-top: 20px;">
                <el-col :span="12">
                  <el-form-item label="承运商" >
                    <el-select
                    size="mini"  :disabled="!showFooter" v-model="editConfig.infomation.logisticCompanyId" placeholder="请选择" style="width: 90%;">
                      <el-option
                        v-for="item in shipmentsInfo.carrier"
                        :key="item.id"
                        :label="item.name"
                        :value="item.id">
                    <el-select size="mini" :disabled="!showFooter" v-model="editConfig.infomation.logisticCompanyId"
                      placeholder="请选择" style="width: 90%;">
                      <el-option v-for="item in shipmentsInfo.carrier" :key="item.id" :label="item.name" :value="item.id">
                      </el-option>
                    </el-select>
                  </el-form-item>
                </el-col>
                <el-col :span="12">
                  <el-form-item label="运单号" >
                    <el-input style="width: 90%;" :disabled="!showFooter" v-model="editConfig.infomation.waybillNumber"></el-input>
                    <el-input style="width: 90%;" :disabled="!showFooter"
                      v-model="editConfig.infomation.waybillNumber"></el-input>
                  </el-form-item>
                </el-col>
                <el-col :span="12">
                  <el-form-item label="收货人">
                    <el-input style="width: 90%;" :disabled="!showFooter" v-model="editConfig.infomation.receiverName"></el-input>
                    <el-input style="width: 90%;" :disabled="!showFooter"
                      v-model="editConfig.infomation.receiverName"></el-input>
                  </el-form-item>
                </el-col>
                <el-col :span="12">
                  <el-form-item label="联系电话">
                    <el-input style="width: 90%;" :disabled="!showFooter" v-model="editConfig.infomation.receiverPhone"></el-input>
                    <el-input style="width: 90%;" :disabled="!showFooter"
                      v-model="editConfig.infomation.receiverPhone"></el-input>
                  </el-form-item>
                </el-col>
                <el-col :span="12">
                  <el-form-item label="收货地址">
                    <el-input style="width: 90%;" :disabled="!showFooter" v-model="editConfig.infomation.receiverAddr"></el-input>
                    <el-input style="width: 90%;" :disabled="!showFooter"
                      v-model="editConfig.infomation.receiverAddr"></el-input>
                  </el-form-item>
                </el-col>
                <el-col :span="12">
                  <el-form-item label="重量">
                    <el-input style="width: 90%;" :disabled="!showFooter" v-model="editConfig.infomation.weight"></el-input>
                    <el-input style="width: 90%;" :disabled="!showFooter"
                      v-model="editConfig.infomation.weight"></el-input>
                  </el-form-item>
                </el-col>
                <el-col :span="12">
                  <el-form-item label="物流重量">
                    <el-input  style="width: 90%;" :disabled="!showFooter" v-model="editConfig.infomation.logisticWeight"></el-input>
                    <el-input style="width: 90%;" :disabled="!showFooter"
                      v-model="editConfig.infomation.logisticWeight"></el-input>
                  </el-form-item>
                </el-col>
              </el-form>
@@ -460,9 +352,11 @@
      },
      showCancel:false, // 取消是否可以显示
      list:[],
      pdfParams:{}
    }
  },
  created() {
    localStorage.removeItem('pdfParams');
    this.getCompanyList()
    this.setStatusList()
    this.setTableForm()
@@ -899,24 +793,27 @@
    },
    //打印
    async btnPrint(){
      await printReceipts(this.editCommonConfig.infomation.id).then((res) => {
        console.log(res)
      localStorage.removeItem('pdfParams');
      try {
        let res = await printReceipts(this.editCommonConfig.infomation.id);
        console.log(res);
        if (res.code === 200) {
          // this.$message.success("打印成功")
          // const link = document.createElement('a');
          // link.href = res.data;
          // link.download = '出库单.xlsx';
          // link.click();
          this.$router.push({
            name:"previewExcel",
            params:{
          console.log(this.editConfig.infomation.baseOperationType,"类型")
          let pdfParams = {
              url:res.data,
              baseOperationType:this.editConfig.infomation.baseOperationType||undefined,
              cutAfterWidth:this.editConfig.infomation.baseOperationType===2 ? 50.8 : 53.3
          };
          localStorage.setItem('pdfParams', JSON.stringify(pdfParams));
            }
          })
      } catch (error) {
        console.error(error);
      } finally {
        var { href } = this.$router.resolve({
            name: 'previewExcel',
        });
        window.open(href, '_blank');
        }
      })
    }
  }
}
@@ -929,20 +826,25 @@
  align-items: center;
  font-size: 14px;
  color: #333;
  .header_btns {
    margin-left: auto;
    margin-right: 60px;
    .btn {
      cursor: pointer;
    }
    .btn:nth-of-type(2){
      cursor: no-drop;
    }
  }
}
.content-status {
  display: flex;
}
.basic-info {
  height: calc(100% - 80px);
  overflow: auto;
@@ -955,34 +857,42 @@
  //   margin-top: 20px;
  // }
}
.purchase-view {
  display: flex;
  .left {
    width: 50%;
  }
  .right {
    width: 50%;
  }
}
.second-label {
  margin-left: 20px;
  border-bottom: 1px solid #d9d9d9;
  margin-bottom: 10px;
}
::v-deep {
  .el-dialog__headerbtn {
    position: absolute;
    top: 15px;
  }
  .el-button {
    &:hover {
      border: 1px solid #dcdfe6;
      color: #333;
    }
  }
  .el-tabs--card > .el-tabs__header {
    border-bottom: none;
  }
  // .el-tabs__item.is-active {
  //   color: #333;
  //   background: #f1f3f8;
@@ -993,15 +903,19 @@
    font-size: 13px;
    background: #f3f3f3;
  }
  .el-tabs__header {
    margin: 0 0 1px;
  }
  .bottom{
    .el-form{
      // border-top: 1px solid #EBEEF5;
    }
    .el-form-item{
      height: 28px;
      .el-input {
        input{
          height: 28px;
src/views/overview/previewExcel.vue
@@ -25,19 +25,16 @@
  },
  data() {
    return {
      excel: '',//excel文档地址
      cutAfterWidth:this.$route.params.cutAfterWidth,//裁剪后要减去的宽
      // cutAfterWidth:0,
      excel:'',
      cutAfterWidth:0,
      croppedImage: null, // 图片
    };
  },
  computed: {
  },
  created() {
    console.log(this.$route.params.baseOperationType,"看看")
    if(this.$route.params.baseOperationType!=undefined){
      this.excel=this.$route.params.url
    }
    this.excel=JSON.parse(localStorage.getItem('pdfParams', '[]')).url
    this.cutAfterWidth=JSON.parse(localStorage.getItem('pdfParams', '[]')).cutAfterWidth
  },
  mounted() {
  },
@@ -46,8 +43,8 @@
  methods: {
    rendered(){
      console.log("渲染完成")
      if(this.$route.params.baseOperationType!=undefined){
        this.excel=this.$route.params.url
      if(JSON.parse(localStorage.getItem('pdfParams', '[]')).url){
        this.excel=JSON.parse(localStorage.getItem('pdfParams', '[]')).url
        this.cropAndDownload()
      }
    },