wangyi
2026-01-15 a09b902158cbeea0c17b1d1f16a0697a176d56bf
src/views/purchase/cgPoInStockBill/cgPoInStockBillEdit.vue
@@ -1,13 +1,13 @@
<template>
  <div v-loading="formLoading" v-if="formShow" style="padding: 20px">
    <div style="margin-bottom: 10px; border-bottom: 1px solid #f6f6f6">
      <el-button type="primary" @click="handleAdd((OperationType = 1))" v-if="addBtnShow"
      <!-- <el-button type="primary" @click="handleAdd((OperationType = 1))" v-if="addBtnShow"
        >新增</el-button
      >
      <el-button type="primary" @click="submitForm" :disabled="subDisabled"
        >保 存</el-button
      >
      <el-button type="primary" @click="set_CheckBill(0, form)">审 核</el-button>
      <el-button type="primary" @click="set_CheckBill(0, form)">审 核</el-button> -->
      <el-button type="primary" @click="close">退 出</el-button>
      <!-- <el-button @click="cancel">取 消</el-button> -->
    </div>
@@ -20,7 +20,7 @@
          <el-row>
            <el-col :span="6">
              <el-form-item label="单据号" prop="HBillNo">
                <el-input v-model="form.HBillNo" placeholder="请输入单据编号" />
                <el-input v-model="form.HBillNo" placeholder="请输入单据编号" disabled />
              </el-form-item>
            </el-col>
            <el-col :span="6">
@@ -35,15 +35,15 @@
              </el-form-item>
            </el-col>
            <el-col :span="6">
              <el-form-item label="采购员" prop="HEmpName">
                <el-input v-model="form.HEmpName" placeholder="请选择采购员" disabled>
              <el-form-item label="业务员" prop="HEmpName">
                <el-input v-model="form.HEmpName" placeholder="请选择业务员" disabled>
                  <el-button slot="append" icon="el-icon-search"></el-button>
                </el-input>
              </el-form-item>
            </el-col>
            <el-col :span="6">
              <el-form-item label="部门" prop="HDeptName">
                <el-input v-model="form.HCusName" placeholder="请选择采购部门" disabled>
                <el-input v-model="form.HDeptName" placeholder="请选择部门" disabled>
                  <el-button slot="append" icon="el-icon-search"></el-button>
                </el-input>
              </el-form-item>
@@ -52,39 +52,33 @@
          <el-row>
            <el-col :span="6">
              <el-form-item label="供应商" prop="HSupName">
                <el-input v-model="form.HWHName" placeholder="请选择供应商" disabled>
                  <el-button
                    slot="append"
                    icon="el-icon-search"
                    @click="openDataDialog(1)"
                  ></el-button>
                <el-input v-model="form.HSupName" placeholder="请选择供应商" disabled>
                  <el-button slot="append" icon="el-icon-search"></el-button>
                </el-input>
              </el-form-item>
            </el-col>
            <el-col :span="6">
              <el-form-item label="币别" prop="HCurName">
                <el-input v-model="form.HCurName" placeholder="请输入联系电话">
                <el-input v-model="form.HCurName" placeholder="请选择币别" disabled>
                  <el-button slot="append" icon="el-icon-search"></el-button>
                </el-input>
              </el-form-item>
            </el-col>
            <el-col :span="6">
              <el-form-item label="汇率" prop="HRemarHExRatek">
              <el-form-item label="汇率" prop="HExRate">
                <el-input-number v-model="form.HExRate" placeholder="请输入汇率" />
              </el-form-item>
            </el-col>
            <el-col :span="6">
              <el-form-item label="发票编号" prop="HWHName">
                <el-input v-model="form.HWHName" placeholder="请选择仓库">
                  <el-button slot="append" icon="el-icon-search"></el-button>
                </el-input>
              <el-form-item label="发票编号" prop="HInvoiceBillNo">
                <el-input v-model="form.HInvoiceBillNo" placeholder=""> </el-input>
              </el-form-item>
            </el-col>
          </el-row>
          <el-row>
            <el-col :span="6">
              <el-form-item label="仓库" prop="HWHName">
                <el-input v-model="form.HWHName" placeholder="请选择仓库">
                <el-input v-model="form.HWHName" placeholder="请选择仓库" disabled>
                  <el-button slot="append" icon="el-icon-search"></el-button>
                </el-input>
              </el-form-item>
@@ -105,7 +99,12 @@
            <el-col :span="6">
              <el-form-item label="组织" prop="HOrgID">
                <el-select v-model="form.HOrgID">
                  <el-option></el-option>
                  <el-option
                    v-for="(item, index) in organizationList"
                    :key="index"
                    :label="item.Name"
                    :value="item.ID"
                  ></el-option>
                </el-select>
              </el-form-item> </el-col
          ></el-row>
@@ -281,6 +280,11 @@
            <span>{{ scope.row.计量单位 }}</span>
          </template>
        </el-table-column>
        <el-table-column align="center" label="收料仓库" width="120">
          <template slot-scope="scope">
            <span>{{ scope.row.收料仓库 }}</span>
          </template>
        </el-table-column>
        <el-table-column align="center" label="数量" width="120">
          <template slot-scope="scope">
            <span>{{ scope.row.HQty }}</span>
@@ -289,6 +293,31 @@
        <el-table-column align="center" label="单价" width="120">
          <template slot-scope="scope">
            <span>{{ scope.row.HPrice }}</span>
          </template>
        </el-table-column>
        <el-table-column align="center" label="含税单价" width="120">
          <template slot-scope="scope">
            <span>{{ scope.row.HTaxPrice }}</span>
          </template>
        </el-table-column>
        <el-table-column align="center" label="金额" width="120">
          <template slot-scope="scope">
            <span>{{ scope.row.HMoney }}</span>
          </template>
        </el-table-column>
         <el-table-column align="center" label="收料仓库" width="120">
          <template slot-scope="scope">
            <span>{{ scope.row['收料仓库'] }}</span>
          </template>
        </el-table-column>
        <el-table-column align="center" label="税率" width="120">
          <template slot-scope="scope">
            <span>{{ scope.row.HTaxRate }}</span>
          </template>
        </el-table-column>
        <el-table-column align="center" label="价税合计" width="120">
          <template slot-scope="scope">
            <span>{{ scope.row.HTaxMoney }}</span>
          </template>
        </el-table-column>
        <el-table-column align="center" label="备注" width="120">
@@ -316,9 +345,18 @@
      width="1280px"
      append-to-body
    >
      <Dept @deptEmitDb="dbEmitData" @deptEmit="emitData" v-if="deptShow" />
      <!-- <Dept @deptEmitDb="dbEmitData" @deptEmit="emitData" v-if="deptShow" />
      <Warehouse @deptEmitDb="dbEmitData" @deptEmit="emitData" v-if="warehouseShow" />
      <Material @deptEmitDb="dbEmitData" @deptEmit="emitData" v-if="materialShow" />
      <Material @deptEmitDb="dbEmitData" @deptEmit="emitData" v-if="materialShow" /> -->
      <div style="height: 70vh" v-if="openData">
        <iframe
          :src="iframeUrl"
          frameborder="0"
          width="100%"
          height="100%"
          ref="iframeInstance"
        ></iframe>
      </div>
      <div slot="footer" class="dialog-footer">
        <el-button type="primary" @click="deptClickSub">确 定</el-button>
        <el-button @click="deptClose">取 消</el-button>
@@ -361,6 +399,9 @@
  },
  data() {
    return {
      dialogEnabledNum: -1,
      iframeUrl: "",
      iframeInstance: null,
      OperationType2: 1,
      HInterID2: 0,
      CopyType2: 1,
@@ -381,7 +422,7 @@
      deptform: {}, //弹窗选中数据
      openData: false, //数据弹窗
      dialogTitle: "",
      organizationList: [], //组织列表
      organizationList: JSON.parse(sessionStorage["organizationList"]), // 组织列表
      subDisabled: false, //编辑页面保存按钮是否禁用(true禁用,false可用)
      // OperationType: this.$route.query.OperationType,//保存类型(新增1修改3)
      HInterID: null,
@@ -436,16 +477,36 @@
    };
  },
  created() {
    this.fetchData();
    // this.fetchData();
    this.getdata();
  },
  mounted() {
    window.iFrameMaterialCallback = (data) => {
      this.iFrameMaterialCallback(data); // 组件内的方法绑定到windows
    };
  },
  beforeDestroy() {
    if (window.parent) {
    delete window.iFrameMaterialCallback;
    if (window.parent != window.top) {
      // 通过IFrame打开
    } else {
      this.$destroy();
    }
  },
  methods: {
    iFrameMaterialCallback(data) {
      // 物料列表返回监听函数
      console.log("iFrameMaterialCallbackData: ", data);
      this.editData[this.zbIndex].HMaterID = data.HItemID;
      this.editData[this.zbIndex].物料代码 = data.物料代码;
      this.editData[this.zbIndex].物料名称 = data.物料名称;
      this.editData[this.zbIndex].HUnitID = data.HUnitID;
      this.editData[this.zbIndex].规格型号 = data.规格型号;
      this.editData[this.zbIndex].计量单位 = data.计量单位名称;
      this.editData[this.zbIndex].HTaxPrice = data.含税成本价;
      this.editData[this.zbIndex].HTaxRate = data.默认税率;
      this.deptClose();
    },
    fetchData() {
      axios
        .get(this.baseURL + "/Web/GetOrganizations", {})
@@ -530,7 +591,7 @@
                    HMoney: dataArray[i].金额.toFixed(2),
                    HTaxMoney: dataArray[i].价税合计.toFixed(2),
                    HWHID: dataArray[i].HWHID,
                    发货仓库: dataArray[i].HWHName,
                    收料仓库: dataArray[i].HWHName,
                    HRemark: "",
                    HQty_Full: "0",
                    HQty_Empty: "0",
@@ -646,7 +707,7 @@
        this.openData = false;
      } else if (num == 2) {
        this.editData[this.zbIndex].HWHID = deptRow.HItemID;
        this.editData[this.zbIndex].发货仓库 = deptRow.仓库名称;
        this.editData[this.zbIndex].收料仓库 = deptRow.仓库名称;
        this.openData = false;
      } else if (num == 3) {
        this.editData[this.zbIndex].HMaterID = deptRow.HItemID;
@@ -665,8 +726,25 @@
      this.deptform = deptRow;
    },
    deptClickSub() {
      this.dbEmitData(this.deptform, this.dialogTypeNum);
      this.deptform = {};
      // this.dbEmitData(this.deptform, this.dialogTypeNum);
      // this.deptform = {};
      let selectedRow = this.$refs.iframeInstance.contentWindow.selectedRow;
      console.log(selectedRow);
      if (this.dialogEnabledNum == 3) {
        // 修改选中物料对应子表数据
        this.editData[this.zbIndex].HMaterID = selectedRow.HItemID;
        this.editData[this.zbIndex].物料代码 = selectedRow.物料代码;
        this.editData[this.zbIndex].物料名称 = selectedRow.物料名称;
        this.editData[this.zbIndex].HUnitID = selectedRow.HUnitID;
        this.editData[this.zbIndex].规格型号 = selectedRow.规格型号;
        this.editData[this.zbIndex].计量单位 = selectedRow.计量单位名称;
        this.editData[this.zbIndex].HTaxPrice = selectedRow.含税成本价;
        this.editData[this.zbIndex].HTaxRate = selectedRow.默认税率;
      }
      selectedRow = null; // 手动置空,方便GC回收,防止泄露
      this.deptClose();
    },
    deptClose() {
      this.deptform = {};
@@ -753,8 +831,11 @@
    //退出
    close() {
      this.reset();
      if (!this.OperationType2 && !this.copyType) {
      if (window.self != window.top) {
        // iframe页面
        console.log(window.parent);
        window.parent.editGyClose();
      } else if (!this.OperationType2 && !this.copyType) {
        // this.$router.back()
        window.close();
      } else {
@@ -854,7 +935,7 @@
      this.reset();
      let rowHmainid = this.HInterID2;
      axios
        .get(this.baseURL + "/Xs_SeOutStockBill/cx", {
        .get(this.baseURL + "/Cg_POInStockBill/cx", {
          params: { HInterID: rowHmainid },
        })
        .then((response) => {
@@ -862,49 +943,60 @@
            var result = response.data;
            var data = response.data.data[0];
            this.form.BillType = data.HSourceBillType;
            Object.assign(this.form, {
              HBillNo: data.单据号,
              HInterID: data.hmainid,
              HDate: dayjs(data.日期).format("YYYY-MM-DD"),
              HSeOrderBillNo_M: data.销售订单号,
              HEmpID: data.HEmpID,
              HEmpName: data.业务员,
              HCusID: data.HCusID,
              HCusName: data.客户,
              HWHID: data.主仓库ID,
              HWHName: data.主发货仓库,
              HAddress: data.交货地址,
              HDeptName: data.部门,
              HDeptID: data.HDeptID,
              HCurID: data.HCurID,
              HCurName: data.币别,
              HSSID: data.HSSID,
              HSSName: data.结算方式,
              HExRate: data.汇率,
              HManagerName: data.主管,
              HManagerID: data.HManagerID,
              HSourceBillType: data.源单类型,
              HLinkMan: data.联系人,
              HLinkPhone: data.联系电话,
              //, "HConveyCompID": data.运输公司
              //, "HConveyTypeID": data.运输方式
              //, "HConveyMoney": data.运费
              //, "HDFflag": data.是否垫付
              HProjectID: data.HProjectID,
              HProjectNumber: data.项目编码,
              HProjectName: data.项目名称,
              Box2: "",
              HRemark: data.表头备注,
              HMaker: data.制单人,
              HChecker: data.审核人,
              HCloseMan: data.关闭人,
              HMakeDate: data.制单日期,
              HCheckDate: data.审核日期,
              HCloseDate: data.关闭日期,
              HUpDateDate: data.修改日期,
              HDeleteDate: data.作废日期,
            });
            this.form = {
              ...{
                HBillNo: data.单据号,
                HDate: dayjs(data.日期),
                HInnerBillNo: data.内部单据号,
                HEmpID: data.HEmpID,
                HEmpName: data.业务员,
                HSupID: data.HSupID,
                HSupName: data.供应商,
                HWHID: data.主表仓库ID,
                HWHName: data.主表仓库,
                HCurID: data.HCurID,
                HCurName: data.币别,
                HExRate: data.汇率,
                HDeptName: data.部门,
                HDeptID: data.HDeptID,
                HManagerName: data.主管,
                HManagerID: data.HManagerID,
                HSourceBillType: data.源单类型,
                HAddress: data.交货地点,
                HExRate: data.汇率,
                HProjectID: data.HProjectID,
                HProjectNumber: data.项目代码,
                HProjectName: data.项目名称,
                HInvoiceBillNo: data.发票编号,
                Box2: "",
                HRemark: data.表头备注,
                HMaker: data.制单人,
                HChecker: data.审核人,
                HCloseMan: data.关闭人,
                HUpDater: data.修改人,
                HDeleteMan: data.作废人,
                HMakeDate:
                  data.制单日期 == null
                    ? ""
                    : dayjs(data.制单日期).format("YYYY-MM-DD hh:mm:ss"),
                HCheckDate:
                  data.审核日期 == null
                    ? ""
                    : dayjs(data.审核日期).format("YYYY-MM-DD hh:mm:ss"),
                HCloseDate:
                  data.关闭日期 == null
                    ? ""
                    : dayjs(data.关闭日期).format("YYYY-MM-DD hh:mm:ss"),
                HUpDateDate:
                  data.修改日期 == null
                    ? ""
                    : dayjs(data.修改日期).format("YYYY-MM-DD hh:mm:ss"),
                HDeleteDate:
                  data.作废日期 == null
                    ? ""
                    : dayjs(data.作废日期).format("YYYY-MM-DD hh:mm:ss"),
              },
            };
            if (this.copyType == 1) {
              this.getHBillNo();
              let date = new Date();
@@ -924,7 +1016,7 @@
              this.form.HCloseDate = data.关闭日期;
              this.form.HDeleteDate = data.作废日期;
            }
            this.getCustomerByCusID(response.data.data[0].HCusID); //根据客户获取联系人,联系人电话
            // this.getCustomerByCusID(response.data.data[0].HCusID); //根据客户获取联系人,联系人电话
            let subdata = result.data;
            for (var i = 0; i < subdata.length; i++) {
              this.editData.push({
@@ -935,11 +1027,19 @@
                HUnitID: subdata[i].HUnitID,
                计量单位: subdata[i].计量单位,
                HWHID: subdata[i].HWHID,
                发货仓库: subdata[i].发货仓库,
                收料仓库: subdata[i].收料仓库,
                HSPID: subdata[i].HSPID,
                仓位名称: subdata[i].仓位名称,
                HSecUnitID: subdata[i].HSecUnitID,
                辅助单位: subdata[i].辅助单位,
                HQty: subdata[i].数量,
                HPrice: subdata[i].单价,
                HMoney: subdata[i].金额,
                HRemark: subdata[i].表体备注,
                HPrice: subdata[i].单价,
                HTaxPrice: subdata[i].含税单价,
                HMoney: subdata[i].金额,
                HDiscountRate: subdata[i].折扣率,
                HTaxRate: subdata[i].税率,
                HTaxMoney: subdata[i].税额,
                HSourceBillNo: subdata[i].源单单号, //源单号
                HSourceBillType: subdata[i].源单类型, //源单类型
                HSourceInterID: subdata[i].源单主内码, //源单主内码
@@ -957,23 +1057,6 @@
        .catch((error) => {
          this.$modal.msgError("接口请求失败! ");
          console.error(error);
        });
    },
    //根据客户带出联系人、联系电话
    getCustomerByCusID(HCusID) {
      axios
        .get(this.baseURL + "/Xs_SeOrderBill/getCustomerByCusID", {
          params: {
            HCusID: HCusID,
          },
        })
        .then((response) => {
          this.form.联系人 = response.data.data[0].HLinkMan;
          this.form.联系电话 = response.data.data[0].HLinkPhone;
          // this.form = response.data.data[0]
        })
        .catch((error) => {
          this.$modal.msgError("接口请求失败!");
        });
    },
    /** 销售出库子表明细序号 */
@@ -1001,7 +1084,7 @@
          HMoney: 0,
          HTaxMoney: 0,
          HWHID: 0,
          发货仓库: "",
          收料仓库: "",
          HRemark: "",
          HQty_Full: 0,
          HQty_Empty: 0,
@@ -1135,9 +1218,9 @@
        if (valid) {
          let fhck = false;
          this.editData.map((item, index) => {
            if (!item.发货仓库) {
            if (!item.收料仓库) {
              fhck = true;
              this.$modal.msgError("第" + (index + 1) + "行:发货仓库未选择!");
              this.$modal.msgError("第" + (index + 1) + "行:收料仓库未选择!");
            }
          });
          this.$nextTick(() => {
@@ -1210,6 +1293,7 @@
    },
    //  打开数据列表弹窗
    openDataDialog(num, row) {
      this.dialogEnabledNum = num;
      if (row) {
        this.zbIndex = row.index - 1;
      }
@@ -1224,6 +1308,7 @@
        this.openData = true;
      } else if (num == 3) {
        this.dialogTitle = "物料列表";
        this.iframeUrl = `/iframe/GyMaterial?openType=2`;
        this.materialShow = true;
        this.openData = true;
      }