llj
2026-01-27 373a695602d097ebfeab50ed14dc0bbf96c691a1
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,9 +544,48 @@
    }
  },
  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", {})
        .get(this.$baseUrl + "/Web/GetOrganizations", {})
        .then((response) => {
          if (response.data.count == 1) {
            this.organizationList = response.data.data.map((item) => {
@@ -561,7 +616,7 @@
        for (var i = 0; i < data.length; i++) {
          // this.getPushSourceBillInit(data[i].hmainid, data[i].hsubid);
          axios
            .get(this.baseURL + "/Xs_SeOutStockBill/cx", {
            .get(this.$baseUrl + "/Xs_SeOutStockBill/cx", {
              params: {
                HInterID: data[i].hmainid,
              },
@@ -684,7 +739,7 @@
    //根据主内码与子内码获取源单销售订单数据
    getPushSourceBillInit(HSourceInterID, HSourceEntryID) {
      axios
        .get(this.baseURL + "/Xs_SeOrderBill/loadXs_SeOrderBill_Push", {
        .get(this.$baseUrl + "/Xs_SeOrderBill/loadXs_SeOrderBill_Push", {
          params: {
            HInterID: HSourceInterID,
            HSubID: HSourceEntryID,
@@ -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 = {};
@@ -835,8 +907,10 @@
    //退出
    close() {
      this.reset();
      if (!this.OperationType2 && !this.copyType) {
      if (window.top != window.self) {
        // iframe 页面 调用父页面的函数关闭弹窗
        window.parent.editGyClose();
      } else if (!this.OperationType2 && !this.copyType) {
        // this.$router.back()
        window.close();
      } else {
@@ -847,7 +921,7 @@
    //根据用户获取对应职员、部门、销售主管
    getCzyglByUser() {
      axios
        .get(this.baseURL + "/Xs_SeOrderBill/getCzyglByUser", {
        .get(this.$baseUrl + "/Xs_SeOrderBill/getCzyglByUser", {
          params: { CurUserName: sessionStorage["HUserName"] },
        })
        .then((response) => {
@@ -880,7 +954,7 @@
    },
    getHBillNo() {
      axios
        .get(this.baseURL + "/WEBSController/GetMaxBillNoAndID_Json", {
        .get(this.$baseUrl + "/WEBSController/GetMaxBillNoAndID_Json", {
          params: {
            HBillType: "1402",
          },
@@ -899,7 +973,7 @@
    //获取销售出库单对应的条码明细
    getBarCodeNoteBySellOutBill(rowHmainid) {
      axios
        .get(this.baseURL + "/Kf_SellOutBill/BarCodeNote", {
        .get(this.$baseUrl + "/Kf_SellOutBill/BarCodeNote", {
          params: { HInterID: rowHmainid },
        })
        .then((response) => {
@@ -918,7 +992,7 @@
    //#region 根据客户获取客户余额
    getCustomerBalance(HCusID) {
      axios
        .get(this.baseURL + "/Xs_CusRatingChangeBill/getCustomerBalance", {
        .get(this.$baseUrl + "/Xs_CusRatingChangeBill/getCustomerBalance", {
          params: { HCusID: HCusID, CurUserName: sessionStorage["HUserName"] },
        })
        .then((response) => {
@@ -936,7 +1010,7 @@
      this.reset();
      let rowHmainid = this.HInterID2;
      axios
        .get(this.baseURL + "/Xs_SeOutStockBill/cx", {
        .get(this.$baseUrl + "/Xs_SeOutStockBill/cx", {
          params: { HInterID: rowHmainid },
        })
        .then((response) => {
@@ -944,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();
@@ -1044,7 +1120,7 @@
    //根据客户带出联系人、联系电话
    getCustomerByCusID(HCusID) {
      axios
        .get(this.baseURL + "/Xs_SeOrderBill/getCustomerByCusID", {
        .get(this.$baseUrl + "/Xs_SeOrderBill/getCustomerByCusID", {
          params: {
            HCusID: HCusID,
          },
@@ -1197,7 +1273,7 @@
      var sql = `exec h_p_Xt_GetMaxBillNo_SubType '1205','${this.form.HDate}',0,0,0,'${Type}','${this.form.HDeptID}'`;
      axios({
        method: "get",
        url: this.baseURL + "/CommonModel/searchMethod",
        url: this.$baseUrl + "/CommonModel/searchMethod",
        params: { sql: sql, user: sessionStorage["HUserName"], ModRightNameCheck: "" },
      })
        .then((response) => {
@@ -1236,7 +1312,7 @@
                this.OperationType;
              axios({
                method: "post",
                url: this.baseURL + "/Kf_SellOutBill/SaveSellOutBillList",
                url: this.$baseUrl + "/Kf_SellOutBill/SaveSellOutBillList",
                data: {
                  msg: sMainSub,
                },
@@ -1266,7 +1342,7 @@
      var InterID = form.hmainid || form.HInterID;
      //逻辑审核方法
      axios
        .get(this.baseURL + "/Kf_SellOutBill/AuditKf_SellOutBill", {
        .get(this.$baseUrl + "/Kf_SellOutBill/AuditKf_SellOutBill", {
          params: {
            HInterID: InterID,
            IsAudit: num,
@@ -1292,6 +1368,7 @@
    },
    //  打开数据列表弹窗
    openDataDialog(num, row) {
      this.dialogEnabledNum = num;
      if (row) {
        this.zbIndex = row.index - 1;
      }
@@ -1306,6 +1383,7 @@
        this.openData = true;
      } else if (num == 3) {
        this.dialogTitle = "物料列表";
        this.iframeUrl = `/iframe/GyMaterial?openType=2`;
        this.materialShow = true;
        this.openData = true;
      }
@@ -1317,4 +1395,8 @@
.xsckdBox .el-date-editor.el-input {
  width: 100%;
}
.zy-hidden {
  display: none;
}
</style>