chenhaozhe
2025-11-27 cc33c00a94f0c74c769abf052f32709f56f222cd
src/views/sell/XsSeOutStockBillEdit.vue
@@ -4,10 +4,10 @@
      <el-button type="primary" @click="handleAdd((OperationType = 1))" v-if="addBtnShow"
        >新增</el-button
      >
      <el-button type="primary" @click="submitForm" :disabled="subDisabled"
      <!-- <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">
@@ -53,11 +53,7 @@
            <el-col :span="6">
              <el-form-item label="仓库" prop="HWHName">
                <el-input v-model="form.HWHName" placeholder="请选择仓库" disabled>
                  <el-button
                    slot="append"
                    icon="el-icon-search"
                    @click="openDataDialog(1)"
                  ></el-button>
                  <el-button slot="append" icon="el-icon-search"></el-button>
                </el-input>
              </el-form-item>
            </el-col>
@@ -87,22 +83,26 @@
                <el-input v-model="form.HLinkPhone" placeholder="请输入联系电话" />
              </el-form-item>
            </el-col>
          </el-row>
          <el-row>
            <el-col :span="6">
              <el-form-item label="备注" prop="HRemark">
                <el-input v-model="form.HRemark" placeholder="请输入备注" />
              </el-form-item>
            </el-col>
          </el-row>
          <el-row>
            <el-col :span="6">
              <el-form-item label="项目代码" prop="HProjectNumber">
                <el-input v-model="form.HProjectNumber" placeholder="请选择项目代码">
                <el-input
                  v-model="form.HProjectNumber"
                  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="HProjectName">
              <el-form-item label="项目名称" prop="HProjectName" class="zy-hidden">
                <el-input v-model="form.HProjectName" disabled> </el-input>
              </el-form-item>
            </el-col>
@@ -144,8 +144,8 @@
                  <el-option
                    v-for="(item, index) in HSourceBillTypeList"
                    :key="index"
                    :label="item"
                    :value="item"
                    :label="item.label"
                    :value="item.value"
                  >
                  </el-option>
                </el-select>
@@ -357,7 +357,7 @@
            ></el-input-number>
          </template>
        </el-table-column>
        <el-table-column align="center" label="当前库存" width="120">
        <el-table-column align="center" label="当前库存" width="120" v-if="false">
          <template slot-scope="scope">
            <span>{{ scope.row.HInventoryQty }}</span>
          </template>
@@ -397,9 +397,15 @@
      width="1280px"
      append-to-body
    >
      <Dept @deptEmitDb="dbEmitData" @deptEmit="emitData" v-if="deptShow" />
      <Warehouse @deptEmitDb="dbEmitData" @deptEmit="emitData" v-if="warehouseShow" />
      <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>
@@ -431,7 +437,7 @@
import dayjs from "dayjs";
export default {
  name: "SellOutBill",
  name: "XsSeOutStockBillEdit",
  components: { Dept, Warehouse, Material, RowSettings },
  props: {
    OperationType: { type: Number },
@@ -442,6 +448,9 @@
  },
  data() {
    return {
      dialogEnabledNum: -1,
      iframeUrl: "",
      iframeInstance: null,
      OperationType2: 1,
      HInterID2: 0,
      CopyType2: 1,
@@ -519,8 +528,15 @@
  created() {
    this.fetchData();
    this.getdata();
    this.getHSourceBillType();
  },
  mounted() {
    window.iFrameMaterialCallback = (data) => {
      this.iFrameMaterialCallback(data); // 组件内的方法绑定到windows
    };
  },
  beforeDestroy() {
    delete window.iFrameMaterialCallback;
    if (window.parent) {
      console.log(window.parent);
    } else {
@@ -528,6 +544,45 @@
    }
  },
  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();
    },
    getHSourceBillType() {
      axios
        .get(`${this.baseURL}/Web/GetHSourceBillType`, {
          params: {
            HName: "发货通知单",
            Num: 2,
          },
        })
        .then((res) => {
          let { data, count, Message } = res.data;
          if (count == 1) {
            // 获取成功
            this.HSourceBillTypeList = Array.from(data).map((e) => {
              return {
                label: e.HSourceBillTypeName,
                value: e.HSourceBillType,
              };
            });
          } else {
            this.$modal.msgError(`获取源单类型失败: ${Message}`);
          }
        })
        .catch((err) => {
          this.$modal.msgError(`获取源单类型失败: ${err}`);
        });
    },
    fetchData() {
      axios
        .get(this.baseURL + "/Web/GetOrganizations", {})
@@ -747,8 +802,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 = {};
@@ -946,49 +1018,51 @@
            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.项目名称,
            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.作废日期,
            });
                Box2: "",
                HRemark: data.表头备注,
                HMaker: data.制单人,
                HChecker: data.审核人,
                HCloseMan: data.关闭人,
                HMakeDate: data.制单日期,
                HCheckDate: data.审核日期,
                HCloseDate: data.关闭日期,
                HUpDateDate: data.修改日期,
                HDeleteDate: data.作废日期,
              },
            };
            if (this.copyType == 1) {
              this.getHBillNo();
              let date = new Date();
@@ -1294,6 +1368,7 @@
    },
    //  打开数据列表弹窗
    openDataDialog(num, row) {
      this.dialogEnabledNum = num;
      if (row) {
        this.zbIndex = row.index - 1;
      }
@@ -1308,6 +1383,7 @@
        this.openData = true;
      } else if (num == 3) {
        this.dialogTitle = "物料列表";
        this.iframeUrl = `/iframe/GyMaterial?openType=2`;
        this.materialShow = true;
        this.openData = true;
      }
@@ -1319,4 +1395,8 @@
.xsckdBox .el-date-editor.el-input {
  width: 100%;
}
.zy-hidden {
  display: none;
}
</style>