haoxuan
2023-12-26 eed27d3000e127c433fd45609d0d5e5d06b7868c
src/views/sales/salesDetails/index.vue
@@ -62,8 +62,8 @@
            class="tab-pane"
            @click="getTab(0)"
            :style="{
              background: isClickProduct ? '#2a78fb' : '#F1F3F8',
              color: isClickProduct ? '#fff' : '#666'
              background: TabsIndex==0 ? '#2a78fb' : '#F1F3F8',
              color: TabsIndex==0 ? '#fff' : '#666'
            }"
          >
            产品信息
@@ -72,8 +72,8 @@
            class="tab-pane"
            @click="getTab(1)"
            :style="{
              background: isClickInventory ? '#2a78fb' : '#F1F3F8',
              color: isClickInventory ? '#fff' : '#666'
              background: TabsIndex==1 ? '#2a78fb' : '#F1F3F8',
              color: TabsIndex==1 ? '#fff' : '#666'
            }"
          >
            库存信息
@@ -82,11 +82,21 @@
            class="tab-pane"
            @click="getTab(2)"
            :style="{
              background: isClickMake ? '#2a78fb' : '#F1F3F8',
              color: isClickMake ? '#fff' : '#666'
              background: TabsIndex==2 ? '#2a78fb' : '#F1F3F8',
              color: TabsIndex==2 ? '#fff' : '#666'
            }"
          >
            制造信息
          </div>
          <div
            class="tab-pane"
            @click="getTab(3)"
            :style="{
              background: TabsIndex==3 ? '#2a78fb' : '#F1F3F8',
              color: TabsIndex==3 ? '#fff' : '#666'
            }"
          >
            采购信息
          </div>
        </div>
        <div class="list-view">
@@ -151,7 +161,7 @@
import pageMixin from "@/components/makepager/pager/mixin/pageMixin"
import DetailSpecification from "@/views/sales/salesDetails/DetailSpecification"
import AddCollectionPlan from "@/views/other/payment/collectionPlan/AddCollectionPlan"
import { getDataByType } from "@/api/data"
export default {
  name: "SalesDetails",
  props: {
@@ -211,6 +221,32 @@
      { label: "计划开始时间", prop: "startTime" },
      { label: "计划结束时间", prop: "endTime" }
    ]
    // 采购信息
    const purchaseColumn=[
        {
          label: "采购单号",
          prop: "purchaseNumber",
          default: true
        },
        {
          label: "采购单名称",
          prop: "purchaseName",
        },
        {
          label: "供应商名称",
          prop: "supplierName",
        },
        {
          label: "采购数量",
          prop: "amount",
        },
        {
          label: "状态",
          prop: "status",
          isCallMethod: true,
          getCallMethod: this.getpurchaseStatus,
        },
      ];
    return {
      tableList: {},
      searchOptions: [],
@@ -267,9 +303,6 @@
      showCol: ["订单编号", "销售负责人", "签约日期", "交付日期", "订单来源", "合计", "状态"],
      tableBottomColumn: [],
      showBottomCol: [],
      isClickProduct: true, // 产品信息
      isClickInventory: false, // 库存信息
      isClickMake: false, // 制造信息
      TabsIndex: "0",
      productTableList: {},
      productColumn: productColumn,
@@ -278,6 +311,9 @@
      showInventoryCol: ["产品编号", "产品名称", "订单数量", "仓库", "在库数量", "可用库存", "单位"],
      makeColumn: makeColumn,
      showMakeCol: ["生产订单", "产品名称", "订单状态", "工单编号", "工单状态", "计划开始时间", "计划结束时间"],
      // 采购
      purchaseColumn: purchaseColumn,
      showPurchaseCol: ['采购单号','采购单名称',"供应商名称", "采购数量", "状态"],
      selectRow: {},
      projectList: [],
      projectListShow: false,
@@ -287,7 +323,9 @@
      thatRow: {},
      rules: {
        projectId: [{ required: true, message: "请选择项目", trigger: "change" }]
      }
      },
      purchaseStatusList: getDataByType("purchaseStatus"),
      loading:false,
    }
  },
  created() {
@@ -303,6 +341,17 @@
    this.getProjectList()
  },
  methods: {
    getpurchaseStatus(val) {
      if (val) {
        for (let i in this.purchaseStatusList) {
          if (this.purchaseStatusList[i].id == val) {
            return this.purchaseStatusList[i].name;
          }
        }
      } else {
        return "--";
      }
    },
    setTable() {
      // top 明细单列表
      this.tableList = {
@@ -359,7 +408,6 @@
    },
    // 请求数据
    async getData() {
      this.loading = true
      let params = {}
      console.log(this.addConfig)
      if (this.addConfig.keywordType === "客户名称") {
@@ -388,9 +436,9 @@
          pageSize: this.pagerOptions.pageSize
        }
      }
      this.loading = true
      await getSalesDetailsList(params)
        .then((res) => {
          console.log(res)
          if (res.code === 200) {
            if (res.data.list && res.data.list.length > 0) {
              const list = res.data.list.map((item) => {
@@ -405,8 +453,7 @@
              this.pagerOptions.totalCount = res.data.count
              if (res.data.count > 0) {
                this.selectRow = this.tableList.tableInfomation.length > 0 ? this.tableList.tableInfomation[0] : {}
                let row = this.tableList.tableInfomation[0]
                this.getProductInventoryInfo(row)
                this.tableRowClick(this.selectRow)
              }
            } else {
              this.tableList.tableInfomation = []
@@ -427,18 +474,32 @@
      if (row.status === 1) {
        this.productTableList.tableInfomation = row.products || []
      } else {
        this.loading = true
        await getProductInventoryInfo(row.number).then((res) => {
          console.log(res)
          this.productTableList.tableInfomation = res.data?.length > 0 ? res.data : []
          this.loading = false
        }).catch(() => {
          this.productTableList.tableInfomation = []
          this.loading = false
        })
      }
    },
    // 获取制造信息
    async getProductOrderInfo(number) {
      await getProductOrderInfo(number).then((res) => {
        console.log(res)
        this.productTableList.tableInfomation = res.data?.length > 0 ? res.data : []
      })
      if(number){
        this.loading = true
        await getProductOrderInfo(number).then((res) => {
          if(this.TabsIndex == 3){
            this.productTableList.tableInfomation = (res.data&&res.data.purchaseInfo) ? res.data.purchaseInfo : []
          }else{
            this.productTableList.tableInfomation = (res.data&&res.data.makeInfo) ? res.data.makeInfo : []
          }
          this.loading = false
        }).catch(() => {
          this.productTableList.tableInfomation = []
          this.loading = false
        })
      }
    },
    // 搜索
    onFilterSearch(searchText) {
@@ -463,16 +524,16 @@
    },
    // 查看 编辑
    handleClick(row, title) {
      console.log(row, title)
      this.editConfig.visible = true
      let params = JSON.parse(JSON.stringify(row));
      this.editConfig.title = title
      this.editConfig.infomation = {
        ...row,
        ...params,
        currency: "人民币",
        sale_chance_name: row.saleChance.name,
        deliverType: row.deliverType === 0 ? "" : row.deliverType,
        quotation_number: row.quotation.number
        sale_chance_name: params.saleChance.name,
        deliverType: params.deliverType === 0 ? "" : params.deliverType,
        quotation_number: params.quotation.number
      }
      this.editConfig.visible = true
    },
    // 确认提交
    async submitClick(row) {
@@ -570,30 +631,27 @@
    getTab(tab) {
      this.TabsIndex = tab
      if (this.TabsIndex == 0) {
        this.isClickProduct = true
        this.isClickInventory = false
        this.isClickMake = false
        // 产品信息列表
        this.tableBottomColumn = this.productColumn
        this.showBottomCol = this.showProductCol
        this.setBottomList()
        this.getProductInventoryInfo(this.selectRow)
      } else if (this.TabsIndex == 1) {
        this.isClickProduct = false
        this.isClickInventory = true
        this.isClickMake = false
        // 库存信息列表
        this.tableBottomColumn = this.inventoryColumn
        this.showBottomCol = this.showInventoryCol
        this.setBottomList()
        this.getProductInventoryInfo(this.selectRow)
      } else if (this.TabsIndex == 2) {
        this.isClickProduct = false
        this.isClickInventory = false
        this.isClickMake = true
        // 制造信息列表
        this.tableBottomColumn = this.makeColumn
        this.showBottomCol = this.showMakeCol
        this.setBottomList()
        this.getProductOrderInfo(this.selectRow.number)
      } else if (this.TabsIndex == 3) {
        // 采购信息列表
        this.tableBottomColumn = this.purchaseColumn
        this.showBottomCol = this.showPurchaseCol
        this.setBottomList()
        this.getProductOrderInfo(this.selectRow.number)
      }
@@ -603,14 +661,16 @@
      return val === 1 ? "待确认" : val === 2 ? "待出库" : val === 3 ? "出库完成" : val === 4 ? "已关闭" : "--"
    },
    // top 行点击
    tableRowClick(row, column, event) {
      console.log(row, column, event)
    tableRowClick(row) {
      this.selectRow = row
      if (this.TabsIndex == 0) {
        this.getProductInventoryInfo(this.selectRow)
      } else if (this.TabsIndex == 1) {
        this.getProductInventoryInfo(this.selectRow)
      } else if (this.TabsIndex == 2) {
        this.getProductOrderInfo(this.selectRow.number)
      }else if(this.TabsIndex == 3) {
        // 采购信息
        this.getProductOrderInfo(this.selectRow.number)
      }
    },
@@ -620,8 +680,7 @@
        page: 1,
        pageSize: 100
      }).then((res) => {
        console.log(res.data, "项目列表信息")
        this.projectList = res.data
        this.projectList = res.data?res.data:[]
      })
    },
    handleClose(done) {
@@ -733,6 +792,7 @@
          margin-right: 20px;
          font-size: 14px !important;
          text-align: center;
          cursor: pointer;
          background: #2a78fb;
          border-top-left-radius: 20px;
          border-top-right-radius: 20px;