1
wwl
2025-01-22 c4d5a6dc8561f95b1736e4a052e512a2c5322fca
src/views/system/tijian/index.vue
@@ -351,6 +351,8 @@
                  </el-table-column>
                  <el-table-column prop="proName" label="明细项目" width="260px">
                  </el-table-column>
                  <el-table-column prop="sl" label="数量" width="56px">
                  </el-table-column>
                  <el-table-column prop="proPrice" label="原价" width="56px">
                  </el-table-column>
@@ -372,12 +374,10 @@
        </el-tab-pane>
        <el-tab-pane label="单项" name="second">
          <div class="tab8">
            <el-row :gutter="20">
              <el-col :span="6">
            <el-row :gutter="24">
              <el-col :span="8">
                <div style="
                    text-align: center;
                    margin-bottom: 10px;
                    margin-top: 10px;
                  ">
                  项目列表
                </div>
@@ -391,7 +391,7 @@
                  </el-tree>
                </div>
              </el-col>
              <el-col :span="6">
              <el-col :span="8">
                <div style="
                    text-align: center;
                    margin-bottom: 10px;
@@ -407,7 +407,7 @@
                  </el-tree>
                </div>
              </el-col>
              <el-col :span="11">
              <el-col :span="8">
                <div class="grid-content bg-purple">
                  <div style="
                      text-align: center;
@@ -1075,6 +1075,9 @@
  },
  watch: {
    filterText(val) {
      this.$refs.tree.filter(val);
    },
    filterage(val) {
      this.$refs.treas.filter(val);
    },
@@ -1088,8 +1091,11 @@
    // this.getData();
  },
  mounted() { },
  mounted() {
  this.TreedataList = [];
  this.DataList = [];
  this.marryall = 0;
},
  methods: {
    debounceNumberChange(currentValue, oldValue) {
      clearTimeout(this.debounceTimer);
@@ -2227,12 +2233,15 @@
    // 取消按钮
    cancel() {
      this.Seachopen = false;
      this.taocan = false;
      this.malldisble = false;
      this.defaultKeys = [];
      this.DataLists = [];
    },
  this.TreedataList = [];
  this.DataList = [];
  this.marryall = 0; // 重置合计
  this.Seachopen = false;
  this.taocan = false;
  this.malldisble = false;
  this.defaultKeys = [];
  this.DataLists = [];
},
    cancell() {
      if (this.addAddress.address) {
@@ -2486,21 +2495,25 @@
      }
    },
    handleClick(tab, event) {
      if (this.activeNames == "second") {
        this.DataList = [];
        this.checkedkey = [];
        this.getDataList();
      } else if (this.activeNames == "third") {
        this.DataLists = [];
        this.checkedkeys = [];
        getZhList().then((response) => {
          if (response.data) {
            this.packageList = response.data;
          }
          this.loading = false;
        });
  if (this.activeNames == "second") {
    this.DataList = [];
    this.checkedkey = [];
    this.TreedataList = [];
    this.marryall = 0; // 重置合计
    this.getDataList();
  } else if (this.activeNames == "third") {
    this.DataLists = [];
    this.checkedkeys = [];
    this.TreedataList = [];
    this.marryall = 0; // 重置合计
    getZhList().then((response) => {
      if (response.data) {
        this.packageList = response.data;
      }
    },
      this.loading = false;
    });
  }
},
    // gaibian(val){
    //   let pname = val;
    //   getProParentIdDxList(pname).then(response=>{
@@ -2512,6 +2525,16 @@
      getProParentIdDxList().then((response) => {
        this.Treedata = response.data.list;
        // 回显 TreedataList 到 DataList
        if (this.TreedataList && this.TreedataList.length > 0) {
          this.DataList = this.TreedataList;
          this.marryall = this.DataList.reduce((sum, item) => sum + (item.proPrice || 0) * (item.sl || 1), 0);
          this.checkedListkey = this.DataList.map(item => item.proId);
          this.$nextTick(() => {
            this.$refs.tree.setCheckedKeys(this.checkedListkey);
          });
        }
        if (this.tableData[0]) {
          this.tableData[0].tjProjectList.forEach((selectionitem) => {
            this.Treedata.forEach((item) => {
@@ -2521,8 +2544,63 @@
            });
          });
        }
        // 回显 packageList 的选中态
        this.handlePackageSelection();
        this.loading = false;
      });
    },
    handlePackageSelection() {
      // 假设你有之前保存的选中状态或从某个地方获取这些数据
      let selectedPackageIds = this.getPreviouslySelectedPackages(); // 这是一个假设的函数,实际使用时替换为实际的逻辑
      // 设置 packageList 的选中状态
      this.$nextTick(() => {
        if (this.$refs.treas) { // 确保 treas 引用已经存在
          this.$refs.treas.setCheckedKeys(selectedPackageIds, true);
        }
        // 更新 checkedkeys 以反映当前选中的包
        this.checkedkeys = selectedPackageIds;
      });
      // 根据选中状态更新 DataLists 或其他需要更新的内容
      this.updateDataListsBasedOnSelection(selectedPackageIds);
    },
    getPreviouslySelectedPackages() {
      // 返回之前保存的选中包ID数组
      // 例如,从 localStorage 或者 Vuex store 获取
      return []; // 这里是示例,替换为实际获取数据的逻辑
    },
    updateDataListsBasedOnSelection(selectedPackageIds) {
      // 根据选中的包ID更新 DataLists
      this.DataLists = [];
      selectedPackageIds.forEach(id => {
        let packageItem = this.packageList.find(item => item.id === id);
        if (packageItem) {
          // 这里假设每个包项目都有一个 proId 数组或者类似的结构,用来获取包中的项目
          if (packageItem.proIds) { // 假设 packageItem 包含一个 proId 数组
            packageItem.proIds.forEach(proId => {
              let project = this.findProjectById(proId); // 假设有一个函数来找到项目
              if (project) {
                this.DataLists.push(project);
              }
            });
          }
        }
      });
      // 计算合计
      this.marryalls = this.DataLists.reduce((sum, item) => sum + item.proPrice, 0);
    },
    findProjectById(proId) {
      // 此函数假设你有一个全局的项目列表或者可以从某个API获取
      // 这里只是一个示例,实际应用中应该根据你的数据结构来实现
      return this.allpackageList.find(item => item.proId === proId) || null;
    },
    handlepackage(data, checked, checkedNodes) {
@@ -2552,7 +2630,7 @@
                if (this.DataLists.length >= 1) {
                  this.marryalls = 0;
                  this.DataLists.forEach((item1) => {
                    this.marryalls += item1.proPrice;
                    this.marryalls += item1.proPrice * item1.sl;
                    this.packagedataList.forEach((item3) => {
                      if (item1.proParentId == item3.proId) {
@@ -2626,30 +2704,36 @@
        });
      }
    },
    // 点击获取每个树节点
    handleCurrentChecked(data, checked, checkedNodes) {
      this.dataObj = data;
      if (checked.checkedNodes.length != 0) {
        let proId = data.proId;
        getProSonDxList(proId).then((res) => {
          this.TreedataList = res.data.list;
      if (checked.checkedNodes.length > 0) {
        const promises = checked.checkedNodes.map(node => getProSonDxList(node.proId));
        Promise.all(promises).then(results => {
          this.TreedataList = results.flatMap(res => res.data.list);
          this.checkedListkey = [];
          this.DataList = [];
          this.TreedataList.forEach((item) => {
            this.checkedListkey.push(item.proId);
            this.DataList.push(item);
            this.spliceData();
            this.DataList.forEach((item1) => {
              if (item1.proParentId == data.proId) {
                item1.propinName = data.proName;
              }
            });
          });
          this.spliceData(); // 假设这个方法是你定义的其他地方处理数据的
          // 更新名称和计算总价
          this.DataList.forEach((item1) => {
            const parent = checked.checkedNodes.find(node => node.proId === item1.proParentId);
            if (parent) {
              item1.propinName = parent.proName;
            }
          });
          this.TotalPrice1 = 0;
          this.marryall = 0;
          if (this.DataList.length != 0) {
            this.list1 = false;
            this.DataList.forEach((item) => {
              this.marryall = item.proPrice * item.sl;
              this.marryall += Number(item.proPrice) * Number(item.sl);
            });
          }
        });
@@ -2830,13 +2914,11 @@
      this.DataLists = [];
    },
    // 处理订单项目
    processOrderItems(cusId) {
      getTransitionList1(cusId).then((response) => {
        this.tableData1 = response.data;
        if (this.tableData1) {
          let totalOrdPrice = new Big(0);
          let totalNowPrice = new Big(0);
          this.tableData1.forEach((item) => {
            if (item.tjCategory != null) {
              this.tjCategory = item.tjCategory;
@@ -2846,18 +2928,9 @@
                this.treeList.push(item9.proId);
              });
            }
            // 使用Big.js进行加法以避免精度丢失
            totalOrdPrice = totalOrdPrice.plus(new Big(item.ordPrice || 0));
            totalNowPrice = totalNowPrice.plus(new Big(item.nowPrice || 0));
            this.TotalPrice1 += item.ordPrice || 0; // 累加应收金额
            this.TotalPrice += item.nowPrice || 0; // 累加实收金额
          });
          // 将Big数转换回数值并保留两位小数
          this.TotalPrice1 = totalOrdPrice.toNumber().toFixed(2);
          this.TotalPrice = totalNowPrice.toNumber().toFixed(2);
          // 确保TotalPrice是一个字符串,防止后续操作导致精度丢失
          this.TotalPrice = this.TotalPrice.toString();
          // 计算折扣
          this.discount = this.TotalPrice1 > 0 ?
            (Math.floor((this.TotalPrice / this.TotalPrice1) * 100) / 100) * 10 : 0;