<template> 
 | 
  <div class="saleInvoice"> 
 | 
    <div v-if="isDetail" class="detail-top"> 
 | 
      <DetailListCommonBtn :query-class-options="queryClassOptions" /> 
 | 
    </div> 
 | 
    <div v-else class="filter"> 
 | 
      <div class="filter-card"> 
 | 
        <CommonSearch 
 | 
          :show-add="false" 
 | 
          :show-download="false" 
 | 
          :amount-view="false" 
 | 
          :show-action-btn="false" 
 | 
          placeholder="请输入销售发票编号" 
 | 
          @searchClick="onFilterSearch" 
 | 
        > 
 | 
          <template slot="leftButton"> 
 | 
            <el-button size="small" type="primary" @click="addBtnClick">新建</el-button> 
 | 
            <!--            <el-button size="small"  @click="delClick">删除</el-button>--> 
 | 
          </template> 
 | 
        </CommonSearch> 
 | 
      </div> 
 | 
    </div> 
 | 
    <div class="body"> 
 | 
      <div class="body-card"> 
 | 
        <div class="list-view"> 
 | 
          <TableCommonView ref="tableListRef" :table-list="tableList" @selTableCol="selTableCol"> </TableCommonView> 
 | 
        </div> 
 | 
        <div class="btn-pager"> 
 | 
          <PagerView class="page" :pager-options="pagerOptions" v-on="pagerEvents" /> 
 | 
        </div> 
 | 
      </div> 
 | 
    </div> 
 | 
    <!-- 新建/编辑 --> 
 | 
    <AddSaleInvoice v-if="editConfig.visible" :edit-common-config="editConfig" /> 
 | 
    <!-- 客户详情 --> 
 | 
    <DetailClientManage v-if="clientDeail.visible" :client-manage-detail="clientDeail" /> 
 | 
  </div> 
 | 
</template> 
 | 
  
 | 
<script> 
 | 
import { getInvoiceList } from "@/api/common/payment" 
 | 
import pageMixin from "@/components/makepager/pager/mixin/pageMixin" 
 | 
import AddSaleInvoice from "@/views/other/payment/saleInvoice/addSaleInvoice.vue" 
 | 
  
 | 
export default { 
 | 
  name: "SaleInvoice", 
 | 
  props: { 
 | 
    isDetail: { 
 | 
      type: Boolean, 
 | 
      default: false 
 | 
    }, 
 | 
    addConfig: { 
 | 
      type: Object, 
 | 
      default: () => { 
 | 
        return {} 
 | 
      } 
 | 
    }, 
 | 
    sourceType: { 
 | 
      type: Number, 
 | 
      default: 1 
 | 
    } 
 | 
  }, 
 | 
  mixins: [pageMixin], 
 | 
  components: { AddSaleInvoice, DetailClientManage: () => import("@/views/client/client/DetailClientManage") }, 
 | 
  computed: {}, 
 | 
  data() { 
 | 
    return { 
 | 
      tableList: {}, 
 | 
      loading: false, 
 | 
      activeName: "second", 
 | 
      queryClassValue: "1", 
 | 
      queryClassOptions: [ 
 | 
        { value: "1", label: "全部" }, 
 | 
        { value: "2", label: "今日联系" }, 
 | 
        { value: "3", label: "本周联系" }, 
 | 
        { value: "4", label: "本月联系" } 
 | 
      ], 
 | 
      searchOptions: [], 
 | 
      operatesList: [ 
 | 
        { id: "1", name: "共享" }, 
 | 
        { id: "2", name: "批量编辑" }, 
 | 
        { id: "3", name: "导出" }, 
 | 
        { id: "4", name: "下载全部附件" }, 
 | 
        { id: "5", name: "更改创建人" }, 
 | 
        { id: "6", name: "树结构设置" }, 
 | 
        { id: "7", name: "审批设置" }, 
 | 
        { id: "8", name: "回访预设列宽" } 
 | 
      ], 
 | 
      editConfig: { 
 | 
        visible: false, 
 | 
        title: "新建", 
 | 
        infomation: {} 
 | 
      }, 
 | 
      saleChanceName: "", 
 | 
      clientDeail: { 
 | 
        visible: false, 
 | 
        infomation: {} 
 | 
      }, 
 | 
      selValueList: [], 
 | 
      search_map: {}, 
 | 
      keyword: "", 
 | 
      keywordType: "", 
 | 
      tableColumn: [ 
 | 
        { label: "发票编号", prop: "number", default: true }, 
 | 
        { label: "主题", prop: "subject" }, 
 | 
        { label: "客户名称", prop: "client_name" }, 
 | 
        { label: "票据类型", prop: "invoiceType_name" }, 
 | 
        { label: "开票日期", prop: "invoiceDate" }, 
 | 
        { label: "销售负责人", prop: "principalId" }, 
 | 
        { label: "产品名称", prop: "name", isProductName: true }, 
 | 
        { label: "数量", prop: "amount", isProductAmount: true }, 
 | 
        { label: "含税单价", prop: "price", isProductPrice: true }, 
 | 
        { label: "价税合计", prop: "total", isProductTotal: true } 
 | 
      ], 
 | 
      showCol: [ 
 | 
        "发票编号", 
 | 
        "主题", 
 | 
        "客户名称", 
 | 
        "票据类型", 
 | 
        "开票日期", 
 | 
        "销售负责人", 
 | 
        "产品名称", 
 | 
        "数量", 
 | 
        "含税单价", 
 | 
        "价税合计" 
 | 
      ] 
 | 
    } 
 | 
  }, 
 | 
  created() { 
 | 
    this.setTable() 
 | 
    if (!this.isDetail) { 
 | 
      this.keyword = "" 
 | 
      this.keywordType = "" 
 | 
    } else { 
 | 
      this.keyword = this.addConfig.keyword 
 | 
      this.keywordType = this.addConfig.keywordType 
 | 
    } 
 | 
    this.getData() 
 | 
  }, 
 | 
  methods: { 
 | 
    setTable() { 
 | 
      this.tableList = { 
 | 
        selectIndex: true, 
 | 
        tableInfomation: [], 
 | 
        allcol: [], 
 | 
        showcol: this.showCol, 
 | 
        tableColumn: this.setColumnVisible(this.showCol) 
 | 
      } 
 | 
      this.tableList.allcol = this.tableList.tableColumn.filter((ele) => !ele.default).map((ele) => ele.label) 
 | 
      this.searchOptions = [] 
 | 
      for (let i = 0; i < this.tableList.tableColumn.length; i++) { 
 | 
        const label = this.tableList.tableColumn[i].label 
 | 
        const value = this.tableList.tableColumn[i].prop 
 | 
        this.searchOptions.push({ value: value, label: label }) 
 | 
      } 
 | 
    }, 
 | 
    setColumnVisible(showCol) { 
 | 
      return this.tableColumn.map((ele) => { 
 | 
        return { 
 | 
          ...ele, 
 | 
          isShowColumn: showCol.includes(ele.label) 
 | 
        } 
 | 
      }) 
 | 
    }, 
 | 
    selTableCol(val) { 
 | 
      this.showcol = val 
 | 
      this.tableList.tableColumn = this.setColumnVisible(val) 
 | 
    }, 
 | 
    // 请求数据 
 | 
    async getData() { 
 | 
      this.loading = true 
 | 
      console.log(this.addConfig) 
 | 
      let params = {} 
 | 
      let sourceTyle = this.addConfig.keywordType === "销售明细单" ? 1 : 2 
 | 
      if (this.addConfig.id) { 
 | 
        params = { 
 | 
          sourceId: this.addConfig.id, 
 | 
          sourceType: sourceTyle, 
 | 
          page: this.pagerOptions.currPage, 
 | 
          pageSize: this.pagerOptions.pageSize 
 | 
        } 
 | 
      } else { 
 | 
        params = { 
 | 
          keyword: this.keyword, 
 | 
          keywordType: this.keywordType, 
 | 
          page: this.pagerOptions.currPage, 
 | 
          pageSize: this.pagerOptions.pageSize 
 | 
        } 
 | 
      } 
 | 
      await getInvoiceList(params) 
 | 
        .then((res) => { 
 | 
          if (res.code === 200) { 
 | 
            if (res.data.data && res.data.data.length > 0) { 
 | 
              const list = res.data.data.map((item) => { 
 | 
                return { 
 | 
                  ...item, 
 | 
                  client_name: item.Client.name, 
 | 
                  invoiceType_name: item.InvoiceType.name 
 | 
                  // principalId: item.member.name 
 | 
                } 
 | 
              }) 
 | 
              this.tableList.tableInfomation = list || [] 
 | 
              this.pagerOptions.totalCount = res.data.count 
 | 
            } else { 
 | 
              this.tableList.tableInfomation = [] 
 | 
            } 
 | 
          } else { 
 | 
            this.tableList.tableInfomation = [] 
 | 
          } 
 | 
          this.loading = false 
 | 
        }) 
 | 
        .catch((err) => { 
 | 
          console.log(err) 
 | 
          this.tableList.tableInfomation = [] 
 | 
          this.loading = false 
 | 
        }) 
 | 
    }, 
 | 
    // 搜索 
 | 
    searchClick(val, content) { 
 | 
      this.keyword = content 
 | 
      this.keywordType = val.label 
 | 
      this.getData() 
 | 
    }, 
 | 
    resetClick() { 
 | 
      this.keyword = "" 
 | 
      this.keywordType = "" 
 | 
      this.getData() 
 | 
    }, 
 | 
    getSelectArray(val) { 
 | 
      console.log(val) 
 | 
      this.selValueList = [] 
 | 
      const list = val.map((item) => { 
 | 
        return item.id 
 | 
      }) 
 | 
      this.selValueList = list 
 | 
    }, 
 | 
    // 新建 
 | 
    addBtnClick() { 
 | 
      this.editConfig.visible = true 
 | 
      this.editConfig.title = "新建" 
 | 
      this.editConfig.sourceType = this.sourceType 
 | 
      this.editConfig.infomation = { ...this.addConfig, number: "" } 
 | 
    }, 
 | 
    // 客户名称详情 
 | 
    selClientClick(row) { 
 | 
      console.log(row) 
 | 
      this.clientDeail.visible = true 
 | 
      this.clientDeail.infomation = { 
 | 
        ...row.Client, 
 | 
        client_name: row.Client.name, 
 | 
        client_level: row.Client.client_level.name, 
 | 
        client_status: row.Client.client_status.name, 
 | 
        contact_name: row.contact.name 
 | 
      } 
 | 
    } 
 | 
  } 
 | 
} 
 | 
</script> 
 | 
  
 | 
<!-- Add "scoped" attribute to limit CSS to this component only --> 
 | 
<style lang="scss" scoped> 
 | 
.saleInvoice { 
 | 
  height: 100%; 
 | 
  overflow: hidden; 
 | 
  .filter { 
 | 
    height: 80px; 
 | 
    display: flex; 
 | 
    align-items: center; 
 | 
    padding: 12px 20px 0 20px; 
 | 
    &-card { 
 | 
      height: 80px; 
 | 
      display: flex; 
 | 
      align-items: center; 
 | 
      box-sizing: border-box; 
 | 
      padding: 10px 20px; 
 | 
      flex: 1; 
 | 
      border-radius: 12px; 
 | 
      background-color: #fff; 
 | 
    } 
 | 
  } 
 | 
  .body { 
 | 
    box-sizing: border-box; 
 | 
    padding: 10px 20px; 
 | 
    border-radius: 12px; 
 | 
    height: calc(100% - 92px); 
 | 
    .body-card { 
 | 
      background-color: #fff; 
 | 
      border-radius: 12px; 
 | 
      height: 100%; 
 | 
      overflow: hidden; 
 | 
    } 
 | 
    .list-view { 
 | 
      height: calc(100% - 60px); 
 | 
      overflow: hidden; 
 | 
    } 
 | 
    .btn-pager { 
 | 
      display: flex; 
 | 
      margin-top: 10px; 
 | 
      .page { 
 | 
        margin-left: auto; 
 | 
      } 
 | 
    } 
 | 
  } 
 | 
} 
 | 
::v-deep .el-table__body-wrapper .el-table .el-table__cell { 
 | 
  padding: 6px 0 !important; 
 | 
  height: 35px; 
 | 
  text-align: center; 
 | 
} 
 | 
</style> 
 |