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,21 +72,31 @@
            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'
            }"
          >
            库存信息
            发货信息
          </div>
          <div
            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: {
@@ -185,17 +195,20 @@
      { label: "产品名称", prop: "name" },
      { label: "数量", prop: "amount" },
      { label: "单位", prop: "unit" },
      { label: "发货单", prop: "invoice" },
      { label: "承运商", prop: "carrier" },
      { label: "运单号", prop: "waybillNumber" },
      { label: "销售单价", prop: "salePrice", price: true },
      { label: "价税合计", prop: "valorem", price: true }
      { label: "成本单价", prop: "cost" },
      { label: "毛利", prop: "profit" },
      { label: "毛利率(%)", prop: "margin" },
      { label: "价税合计", prop: "total", price: true }
    ]
    // 库存信息
    const inventoryColumn = [
      { label: "产品编号", prop: "number", default: true },
      { label: "产品名称", prop: "name" },
      { label: "订单数量", prop: "orderAmount" },
      { label: "发货单", prop: "invoice" },
      { label: "承运商", prop: "carrier" },
      { label: "运单号", prop: "waybill" },
      { label: "仓库", prop: "warehouse" },
      { label: "在库数量", prop: "amount" },
      { label: "可用库存", prop: "availableNumber" },
@@ -210,6 +223,32 @@
      { label: "工单状态", prop: "workOrderStatus" },
      { 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: {},
@@ -267,17 +306,28 @@
      showCol: ["订单编号", "销售负责人", "签约日期", "交付日期", "订单来源", "合计", "状态"],
      tableBottomColumn: [],
      showBottomCol: [],
      isClickProduct: true, // 产品信息
      isClickInventory: false, // 库存信息
      isClickMake: false, // 制造信息
      TabsIndex: "0",
      productTableList: {},
      productColumn: productColumn,
      showProductCol: ["产品编号", "产品名称", "数量", "单位", "发货单", "承运商", "运单号", "销售单价", "价税合计"],
      showProductCol: ["产品编号", "产品名称", "数量", "单位", "销售单价", "成本单价", "毛利", "毛利率(%)", "价税合计"],
      inventoryColumn: inventoryColumn,
      showInventoryCol: ["产品编号", "产品名称", "订单数量", "仓库", "在库数量", "可用库存", "单位"],
      showInventoryCol: [
        "产品编号",
        "产品名称",
        "订单数量",
        "发货单",
        "承运商",
        "运单号",
        "仓库",
        "在库数量",
        "可用库存",
        "单位"
      ],
      makeColumn: makeColumn,
      showMakeCol: ["生产订单", "产品名称", "订单状态", "工单编号", "工单状态", "计划开始时间", "计划结束时间"],
      // 采购
      purchaseColumn: purchaseColumn,
      showPurchaseCol: ["采购单号", "采购单名称", "供应商名称", "采购数量", "状态"],
      selectRow: {},
      projectList: [],
      projectListShow: false,
@@ -287,7 +337,9 @@
      thatRow: {},
      rules: {
        projectId: [{ required: true, message: "请选择项目", trigger: "change" }]
      }
      },
      purchaseStatusList: getDataByType("purchaseStatus"),
      loading: false
    }
  },
  created() {
@@ -303,6 +355,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 +422,6 @@
    },
    // 请求数据
    async getData() {
      this.loading = true
      let params = {}
      console.log(this.addConfig)
      if (this.addConfig.keywordType === "客户名称") {
@@ -388,9 +450,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 +467,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 = []
@@ -424,22 +485,41 @@
    },
    // 获取产品/库存信息
    async getProductInventoryInfo(row) {
      console.log(row.status, "状态", row)
      if (row.status === 1) {
        this.productTableList.tableInfomation = row.products
      if (this.TabsIndex == 0 || row.status == 1) {
        this.productTableList.tableInfomation = row.products || []
      } else {
        await getProductInventoryInfo(row.number).then((res) => {
          console.log(res)
          this.productTableList.tableInfomation = res.data
        })
        if (row.number) {
          this.loading = true
          await getProductInventoryInfo(row.number)
            .then((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
      })
      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) {
@@ -464,16 +544,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) {
@@ -571,30 +651,31 @@
    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)
        if (this.selectRow.status == 1) {
          this.productTableList.tableInfomation = []
        } else {
          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)
      }
@@ -604,14 +685,20 @@
      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)
        if (this.selectRow.status == 1) {
          this.productTableList.tableInfomation = []
        } else {
          this.getProductInventoryInfo(this.selectRow)
        }
      } else if (this.TabsIndex == 2) {
        this.getProductOrderInfo(this.selectRow.number)
      } else if (this.TabsIndex == 3) {
        // 采购信息
        this.getProductOrderInfo(this.selectRow.number)
      }
    },
@@ -621,8 +708,7 @@
        page: 1,
        pageSize: 100
      }).then((res) => {
        console.log(res.data, "项目列表信息")
        this.projectList = res.data
        this.projectList = res.data ? res.data : []
      })
    },
    handleClose(done) {
@@ -734,6 +820,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;