src/views/purchaseManage/purchase/index.vue
@@ -9,20 +9,22 @@
          :show-download="false"
          :amount-view="false"
          :show-action-btn="false"
          :placeholder="'请输入供应商名称/物料名称/采购单名称'"
          :placeholder="'请输入供应商名称/物料名称/采购单名称/采购单号等..'"
          @searchClick="onFilterSearch"
        />
      </div>
    </div>
    <div class="body">
      <div class="body-card">
      <div class="content-top">
        <div class="list-view">
          <TableCommonView
            ref="tableListRef"
            :table-list="tableList"
            @selCommonClick="selCommonClick"
            @selTableCol="selTableCol"
            @tableRowClick="tableRowClick"
            :selectClassRow="selectRow"
          >
            <template slot="tableButton">
              <el-table-column label="状态" width="120">
@@ -52,6 +54,22 @@
                    >查看</el-button
                  >
                  <el-button
                    v-if="scope.row.status === 6 || scope.row.status === 7"
                    type="text"
                    size="small"
                    @click="confirmation(scope.row)"
                    style="margin-right: 5px"
                    >到货确认</el-button
                  >
                  <el-button
                    v-if="scope.row.status === 7 || scope.row.status === 8"
                    type="text"
                    size="small"
                    @click="TestingAllClick(scope.row)"
                    style="margin-right: 5px"
                    >去质检</el-button
                  >
                  <el-button
                    v-if="scope.row.status === 1"
                    type="text"
                    size="small"
@@ -72,6 +90,51 @@
          <PagerView class="page" :pager-options="pagerOptions" v-on="pagerEvents" />
        </div>
      </div>
      <div class="content-bottom">
        <div class="bottom-tabs">
          <div
            class="tab-pane"
            @click="getTab(0)"
            :style="{
              background: TabsIndex == 0 ? '#2a78fb' : '#F1F3F8',
              color: TabsIndex == 0 ? '#fff' : '#666'
            }"
          >
            产品信息
          </div>
          <div
            class="tab-pane"
            @click="getTab(1)"
            :style="{
              background: TabsIndex == 1 ? '#2a78fb' : '#F1F3F8',
              color: TabsIndex == 1 ? '#fff' : '#666'
            }"
          >
            收货信息
          </div>
          <div
            class="tab-pane"
            @click="getTab(2)"
            :style="{
              background: TabsIndex == 2 ? '#2a78fb' : '#F1F3F8',
              color: TabsIndex == 2 ? '#fff' : '#666'
            }"
          >
            入库信息
          </div>
        </div>
        <div class="list-view">
          <TableCommonView :loading="loading" :table-list="productTableList" @selTableCol="selBottomTableCol">
            <!-- <template slot="tableButton">
              <el-table-column label="操作" width="160" fixed="right">
                <template slot-scope="scope">
                  <el-button @click="viewClick(scope.row)" type="text" size="small">查看</el-button>
                </template>
              </el-table-column>
            </template> -->
          </TableCommonView>
        </div>
      </div>
    </div>
    <!-- 新建/编辑销售线索 -->
@@ -80,25 +143,74 @@
    <DetailSupplier v-if="commonDetail.visible" :common-detail="commonDetail" />
    <!-- 新建/编辑 -->
    <AddPurchase ref="addDialog" v-if="editConfig.visible" :edit-common-config="editConfig" />
    <!-- 到货通知 -->
    <ArrivalConfirmation v-if="editAffirmConfig.visible" :edit-common-config="editAffirmConfig" />
    <!-- 批量质检 -->
    <TestingAll v-if="editTestingAllConfig.visible" :edit-common-config="editTestingAllConfig" />
  </div>
</template>
<script>
import pageMixin from "@/components/makepager/pager/mixin/pageMixin"
import { getPurchaseList, getPurchaseInfo, submitPurchase, deletePurchase } from "@/api/purchaseManage/purchase"
import {
  getPurchaseList,
  getPurchaseInfo,
  newSubmitPurchase,
  deletePurchase,
  getPurchaseQualityInspectionInfo,
  getOperationInfo
} from "@/api/purchaseManage/purchase"
import DetailSupplier from "@/views/purchaseManage/purchase/DetailSupplier"
import AddPurchase from "@/views/purchaseManage/purchase/components/AddPurchase"
import ArrivalConfirmation from "@/views/purchaseManage/purchase/components/ArrivalConfirmation"
import TestingAll from "@/views/purchaseManage/purchase/components/TestingAll"
import { getSupplierList } from "@/api/supplierManage/supplier"
import { getDataByType } from "@/api/data"
export default {
  name: "SupplierManage",
  props: {},
  components: { DetailSupplier, AddPurchase },
  components: { DetailSupplier, AddPurchase, ArrivalConfirmation, TestingAll },
  mixins: [pageMixin],
  computed: {},
  data() {
    // 产品信息
    const productColumn = [
      { label: "产品编号", prop: "number", default: true },
      { label: "产品名称", prop: "name" },
      { label: "规格", prop: "specifications" },
      { label: "型号", prop: "modelNumber" },
      { label: "采购数量", prop: "amount" },
      { label: "已收货数量", prop: "sendAmount" },
      { label: "已入库数量", prop: "overAmount" },
      { label: "单位", prop: "unit" },
      { label: "采购单价", prop: "purchasePrice", price: true },
      { label: "价税合计", prop: "total", price: true }
    ]
    // 收货信息
    const recriveColumn = [
      { label: "收货时间", prop: "createTime", default: true },
      { label: "收货人", prop: "principal" },
      { label: "产品名称", prop: "productName" },
      { label: "产品编码", prop: "productId" },
      { label: "规格", prop: "specs" },
      { label: "数量", prop: "amount" },
      { label: "单位", prop: "unit" },
      { label: "状态", prop: "status", isCallMethod: true, getCallMethod: this.getreceiveStatusStatus }
    ]
    // 入库信息
    const inLibraryColumn = [
      { label: "入库单号", prop: "operationNumber", default: true },
      { label: "收货仓库", prop: "warehouseName" },
      { label: "产品名称", prop: "name" },
      { label: "产品编码", prop: "number" },
      { label: "数量", prop: "overAmount" },
      { label: "入库时间", prop: "overTime" },
      { label: "收货人", prop: "principal" },
      { label: "状态", prop: "status", isCallMethod: true, getCallMethod: this.getWarehouseStatus }
    ]
    return {
      purchaseStatusList: getDataByType("purchaseStatus"),
      receiveStatusList: getDataByType("receiveStatus"),
      tableLoading: false,
      tableList: {}, // 列表
      selValueList: [],
@@ -117,9 +229,24 @@
          supplierList: []
        }
      },
      editAffirmConfig: {
        visible: false,
        isDisabled: false,
        detailEnter: false,
        infomation: {
          // supplierList: []
        }
      },
      editTestingAllConfig: {
        visible: false,
        isDisabled: false,
        detailEnter: false,
        infomation: {}
      },
      tableColumn: [
        { label: "单据类型", prop: "orderType", min: 130 },
        { label: "采购单号", prop: "number", min: 150, isCommonClick: true, default: true },
        { label: "销售明细单", prop: "sourceOrder", min: 130 },
        { label: "采购单名称", prop: "name", min: 130, isCommonClick: true },
        { label: "供应商名称", prop: "supplierName", min: 130 },
        { label: "采购数量", prop: "quantity", min: 130 },
@@ -127,7 +254,33 @@
        { label: "经办人", prop: "handledBy", min: 130 },
        { label: "制单人", prop: "creator", min: 130 }
      ],
      showCol: ["采购单号", "采购单名称", "单据类型", "供应商名称", "采购数量", "收货仓库", "经办人", "制单人"]
      showCol: ["采购单号","销售明细单", "采购单名称", "单据类型", "供应商名称", "采购数量", "收货仓库", "经办人", "制单人"],
      tableBottomColumn: [],
      showBottomCol: [],
      TabsIndex: 0,
      productTableList: {},
      // 产品信息
      productColumn: productColumn,
      showProductCol: [
        "产品编号",
        "产品名称",
        "规格",
        "型号",
        "采购数量",
        "已收货数量",
        "已入库数量",
        "单位",
        "采购单价",
        "价税合计"
      ],
      // 收货信息
      recriveColumn: recriveColumn,
      // 入库信息
      inLibraryColumn: inLibraryColumn,
      showReceiveCol: ["收货时间", "收货人", "产品名称", "产品编码", "规格", "数量", "单位", "状态"],
      inLibraryCol: ["入库单号", "收货仓库", "产品名称", "产品编码", "数量", "入库时间", "收货人", "状态"],
      loading: false,
      selectRow: {}
    }
  },
  created() {
@@ -169,8 +322,19 @@
        return "--"
      }
    },
    setColumnVisible(showCol) {
      return this.tableColumn.map((ele) => {
    getreceiveStatusStatus(val) {
      if (val) {
        for (let i in this.receiveStatusList) {
          if (this.receiveStatusList[i].id == val) {
            return this.receiveStatusList[i].name
          }
        }
      } else {
        return "--"
      }
    },
    setColumnVisible(showCol, tableColumn) {
      return tableColumn.map((ele) => {
        return {
          ...ele,
          isShowColumn: showCol.includes(ele.label)
@@ -183,9 +347,13 @@
        selectIndex: true,
        showcol: this.showCol,
        allcol: [],
        tableColumn: this.setColumnVisible(this.showCol)
        tableColumn: this.setColumnVisible(this.showCol, this.tableColumn)
      }
      this.tableList.allcol = this.tableList.tableColumn.filter((ele) => !ele.default).map((ele) => ele.label)
      // bottom 产品信息/收货信息
      this.tableBottomColumn = this.productColumn
      this.showBottomCol = this.showProductCol
      this.setBottomList()
    },
    selTableCol(val) {
      this.showcol = val
@@ -206,6 +374,11 @@
            })
            this.tableList.tableInfomation = list || []
            this.pagerOptions.totalCount = res.data.total
            if (res.data.total > 0) {
              this.selectRow = this.tableList.tableInfomation.length > 0 ? this.tableList.tableInfomation[0] : {}
              // this.tableRowClick(this.selectRow)
              this.getProductInventoryInfo(this.selectRow)
            }
          }
        })
        .catch((err) => {
@@ -249,7 +422,7 @@
        number: "",
        contact: "",
        phone: "",
        signingDate: "",
        signingDate: this.getCurrentDate(),
        deliveryDate: "",
        remark: "",
        wholeDiscountType: null,
@@ -259,13 +432,20 @@
        realTotalPrice: 0
      }
    },
    // 获取当前日期
    getCurrentDate() {
      let now = new Date()
      let year = now.getFullYear()
      let month = now.getMonth() + 1
      let day = now.getDate()
      return year + "-" + month + "-" + day
    },
    // 编辑
    btnEdit(row) {
      this.editConfig.detailEnter = false
      this.editConfig.isDisabled = false
      this.tableLoading = true
      getPurchaseInfo({ id: row.id }).then((res) => {
      getPurchaseInfo({ id: Number(row.id) }).then((res) => {
        if (res.code == 200) {
          this.tableLoading = false
          this.editConfig.visible = true
@@ -285,9 +465,8 @@
      setTimeout(() => {
        this.tableLoading = false
      }, 3000)
      // this.editRow = row;
      // this.$refs.add.islook = true;
    },
    // 确认发货
    btnConfirm(row) {
      let string = "是否提交?"
@@ -303,7 +482,10 @@
          if (!row.supplierName) {
            this.btnEdit(row)
          } else {
            submitPurchase({ id: row.ID, status: 2 }).then((response) => {
            newSubmitPurchase({
              id: Number(row.id),
              status: 4
            }).then((response) => {
              if (response.code === 200) {
                this.$message.success("提交成功")
                this.getData()
@@ -326,7 +508,10 @@
        type: "warning"
      }).then(
        () => {
          submitPurchase({ id: row.ID, status: 5 }).then((response) => {
          newSubmitPurchase({
            id: Number(row.id),
            status: 5
          }).then((response) => {
            if (response.code === 200) {
              this.$message.success("已取消")
              this.getData()
@@ -348,7 +533,7 @@
        type: "warning"
      })
        .then(() => {
          deletePurchase({ id: row.ID }).then((response) => {
          deletePurchase({ id: Number(row.id) }).then((response) => {
            if (response.code === 200) {
              this.$message.success("删除成功")
              this.getData()
@@ -387,6 +572,17 @@
        this.tableLoading = false
      }, 3000)
    },
    // 到货确认
    confirmation(row) {
      console.log(row, "row")
      this.editAffirmConfig.infomation = row
      this.editAffirmConfig.visible = true
    },
    // 去质检
    TestingAllClick(row) {
      this.editTestingAllConfig.infomation = row
      this.editTestingAllConfig.visible = true
    },
    // 详情
    selCommonClick(row) {
      this.tableLoading = true
@@ -406,6 +602,172 @@
      setTimeout(() => {
        this.tableLoading = false
      }, 3000)
    },
    // top 行点击
    tableRowClick(row) {
      this.selectRow = row
      if (this.TabsIndex == 0) {
        getOperationInfo({ id: row.id }).then((res) => {
          if (res.code == 200) {
            this.productTableList.tableInfomation = res.data.productInfos
          } else {
            this.$message.error(res.msg ? res.msg + "," : "" + "获取信息失败!")
          }
        })
      } else if (
        (this.TabsIndex == 1 && row.status == 7) ||
        row.status == 8 ||
        (this.TabsIndex == 1 && row.status == 2) ||
        (this.TabsIndex == 1 && row.status == 3)
      ) {
        this.productTableList.tableInfomation = []
        getPurchaseQualityInspectionInfo({
          purchaseNumber: row.number
        }).then((res) => {
          if (res.code == 200) {
            this.productTableList.tableInfomation = res.data
          } else {
            this.$message.error(res.msg ? res.msg + "," : "" + "获取信息失败!")
          }
        })
      } else if (
        (this.TabsIndex == 2 && row.status == 8) ||
        (this.TabsIndex == 2 && row.status == 2) ||
        (this.TabsIndex == 2 && row.status == 3)
      ) {
        getOperationInfo({ id: row.id }).then((res) => {
          if (res.code == 200) {
            this.productTableList.tableInfomation = res.data.inWarehouseInfos
          } else {
            this.$message.error(res.msg ? res.msg + "," : "" + "获取信息失败!")
          }
        })
      } else {
        this.productTableList.tableInfomation = []
      }
    },
    // bom 列表
    setBottomList() {
      this.productTableList = {
        selectIndex: true,
        tableInfomation: [],
        allcol: [],
        showcol: this.showBottomCol,
        tableColumn: this.setColumnVisible(this.showBottomCol, this.tableBottomColumn)
      }
      this.setTableList(this.productTableList)
    },
    setTableList(tableList) {
      tableList.allcol = tableList.tableColumn.filter((ele) => !ele.default).map((ele) => ele.label)
      this.searchOptions = []
      for (let i = 0; i < tableList.tableColumn.length; i++) {
        const label = tableList.tableColumn[i].label
        const value = tableList.tableColumn[i].prop
        this.searchOptions.push({ value: value, label: label })
      }
    },
    // bottom 产品信息
    selBottomTableCol(val) {
      this.showcol = val
      this.productTableList.tableColumn = this.setColumnVisible(val, this.tableBottomColumn)
    },
    //获取当前选中资源的id
    getTab(tab) {
      this.TabsIndex = tab
      if (this.TabsIndex == 0) {
        // 产品信息列表
        this.tableBottomColumn = this.productColumn
        this.showBottomCol = this.showProductCol
        this.setBottomList()
        this.getProductInventoryInfo(this.selectRow)
      } else if (this.TabsIndex == 1) {
        // 收货信息列表
        this.tableBottomColumn = this.recriveColumn
        this.showBottomCol = this.showReceiveCol
        this.setBottomList()
        this.getProductInventoryInfo(this.selectRow)
      } else if (this.TabsIndex == 2) {
        console.log("入库")
        // 入库信息列表
        this.tableBottomColumn = this.inLibraryColumn
        this.showBottomCol = this.inLibraryCol
        this.setBottomList()
        this.getProductInventoryInfo(this.selectRow)
      }
    },
    // 状态
    getStatus(val) {
      return val === 1
        ? "待确认"
        : val === 2
        ? "待入库"
        : val === 3
        ? "已入库"
        : val === 4
        ? "已完成"
        : val === 5
        ? "已取消"
        : val === 6
        ? "待收货"
        : val === 7
        ? "部分收货"
        : val === 8
        ? "待质检"
        : "--"
    },
    // 获取产品/收货信息
    async getProductInventoryInfo(row) {
      // if (this.TabsIndex == 0) {
      //   getPurchaseInfo({ id: row.id }).then((res) => {
      //     if (res.code == 200) {
      //       this.productTableList.tableInfomation = res.data.productList
      //     } else {
      //       this.$message.error(res.msg ? res.msg + "," : "" + "获取信息失败!")
      //     }
      //   })
      // } else
      if (this.TabsIndex == 1 && row.status == 1) {
        this.productTableList.tableInfomation = []
      } else if (
        (this.TabsIndex == 1 && row.status == 7) ||
        (this.TabsIndex == 1 && row.status == 8) ||
        (this.TabsIndex == 1 && row.status == 2) ||
        (this.TabsIndex == 1 && row.status == 3)
      ) {
        getPurchaseQualityInspectionInfo({
          purchaseNumber: row.number
        }).then((res) => {
          if (res.code == 200) {
            this.productTableList.tableInfomation = res.data
          } else {
            this.$message.error(res.msg ? res.msg + "," : "" + "获取信息失败!")
          }
        })
      } else if (
        this.TabsIndex == 0 ||
        (this.TabsIndex == 2 && row.status == 8) ||
        (this.TabsIndex == 2 && row.status == 2) ||
        (this.TabsIndex == 2 && row.status == 3)
      ) {
        getOperationInfo({ id: row.id }).then((res) => {
          if (res.code == 200) {
            if(this.TabsIndex == 0){
              this.productTableList.tableInfomation = res.data.productInfos
            }else if(this.TabsIndex == 2){
              this.productTableList.tableInfomation = res.data.inWarehouseInfos
            }
          } else {
            this.$message.error(res.msg ? res.msg + "," : "" + "获取信息失败!")
          }
        })
      } else {
        this.productTableList.tableInfomation = []
      }
    },
    // 入库状态
    getWarehouseStatus(val) {
      let newVal = Number(val)
      return newVal === 1 ? "草稿" : newVal === 3 ? "就绪" : newVal === 4 ? "完成" : newVal === 5 ? "已取消" : " "
    }
  }
}
@@ -438,15 +800,51 @@
    padding: 10px 20px;
    border-radius: 12px;
    height: calc(100% - 92px);
    &-card {
    .content-top {
      background-color: #fff;
      border-radius: 12px;
      height: 100%;
      overflow: hidden;
      min-height: 70px;
      height: 48%;
      position: relative;
      .list-view {
        height: calc(100% - 60px);
      }
    }
    .list-view {
      height: calc(100% - 60px);
      overflow: hidden;
    .content-bottom {
      .bottom-tabs {
        height: 40px;
        line-height: 40px;
        background: #e6ecf2;
        display: flex;
        .tab-pane {
          width: 100px;
          margin-right: 20px;
          font-size: 14px !important;
          text-align: center;
          cursor: pointer;
          background: #2a78fb;
          border-top-left-radius: 20px;
          border-top-right-radius: 20px;
        }
      }
      .lable-view {
        background: #e6ecf2;
        height: 40px;
        line-height: 40px;
        .name {
          border-left: 4px solid #2a78fb;
          padding-left: 10px;
        }
      }
      background-color: #fff;
      border-radius: 12px;
      min-height: 70px;
      height: calc(52% - 60px);
      margin-top: 10px;
      // padding: 10px 20px;
      .list-view {
        height: calc(100% - 10px);
      }
    }
    .btn-pager {
      display: flex;