<template> 
 | 
  <div class="collectionPlan"> 
 | 
    <div v-if="isDetail" class="detail-top"> 
 | 
      <DetailListCommonBtn :query-class-options="queryClassOptions" /> 
 | 
    </div> 
 | 
    <div v-else class="filter"> 
 | 
      <div class="filter-card"> 
 | 
        <CommonSearch 
 | 
          ref="searchCommonView" 
 | 
          :query-class-options="queryClassOptions" 
 | 
          :search-options="searchOptions" 
 | 
          :search-sel="searchSel" 
 | 
          @searchClick="searchClick" 
 | 
          @resetClick="resetClick" 
 | 
        > 
 | 
          <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" 
 | 
            v-loading="loading" 
 | 
            :table-list="tableList" 
 | 
            @getSelectArray="getSelectArray" 
 | 
          > 
 | 
            <!-- <template slot="tableButton"> 
 | 
        <el-table-column label="操作" width="60" fixed="right"> 
 | 
          <template slot-scope="scope"> 
 | 
            <el-button @click="handleClick(scope.row)" type="text" size="small">编辑</el-button> 
 | 
          </template> 
 | 
        </el-table-column> 
 | 
      </template> --> 
 | 
          </TableCommonView> 
 | 
        </div> 
 | 
      </div> 
 | 
    </div> 
 | 
    <!-- 新建/编辑 --> 
 | 
    <AddCollectionPlan v-if="editConfig.visible" :edit-common-config="editConfig" /> 
 | 
  </div> 
 | 
</template> 
 | 
  
 | 
<script> 
 | 
import { getCollectionPlanList } from "@/api/common/payment" 
 | 
import pageMixin from "@/components/makepager/pager/mixin/pageMixin" 
 | 
import AddCollectionPlan from "@/views/other/payment/collectionPlan/AddCollectionPlan" 
 | 
  
 | 
export default { 
 | 
  name: "CollectionPlan", 
 | 
  props: { 
 | 
    isDetail: { 
 | 
      type: Boolean, 
 | 
      default: false 
 | 
    }, 
 | 
    addConfig: { 
 | 
      type: Object, 
 | 
      default: () => { 
 | 
        return {} 
 | 
      } 
 | 
    }, 
 | 
    sourceType: { 
 | 
      type: Number, 
 | 
      default: 1 
 | 
    } 
 | 
  }, 
 | 
  mixins: [pageMixin], 
 | 
  components: { AddCollectionPlan }, 
 | 
  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: "", 
 | 
      contactsDeail: { 
 | 
        visible: false, 
 | 
        infomation: {} 
 | 
      }, 
 | 
      clientDeail: { 
 | 
        visible: false, 
 | 
        infomation: {} 
 | 
      }, 
 | 
      selValueList: [], 
 | 
      searchSel: { 
 | 
        value: "topic", 
 | 
        label: "" 
 | 
      }, 
 | 
      search_map: {}, 
 | 
      serviceContractId: 0, 
 | 
      tableColumn: [ 
 | 
        { label: "收款计划编号", prop: "number", default: true }, 
 | 
        { label: "客户名称", prop: "client_name" }, 
 | 
        { label: "期次", prop: "term" }, 
 | 
        { label: "计划收款日期", prop: "collectionDate" }, 
 | 
        { label: "金额", prop: "amount" }, 
 | 
        { label: "已收金额", prop: "amountReceived" }, 
 | 
        { label: "应收金额", prop: "amountReceivable" }, 
 | 
        { label: "负责人", prop: "member_name" } 
 | 
      ], 
 | 
      showCol: ["收款计划编号", "客户名称", "期次", "计划收款日期", "金额", "已收金额", "应收金额", "负责人"] 
 | 
    } 
 | 
  }, 
 | 
  created() { 
 | 
    this.setTable() 
 | 
    console.log(this.addConfig) 
 | 
    if (!this.isDetail) { 
 | 
      this.serviceContractId = 0 
 | 
    } else { 
 | 
      this.serviceContractId = this.addConfig.id 
 | 
    } 
 | 
    this.getData() 
 | 
  }, 
 | 
  methods: { 
 | 
    setTable() { 
 | 
      this.tableList = { 
 | 
        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) 
 | 
      await getCollectionPlanList({ 
 | 
        sourceType: this.addConfig.keywordType === "销售明细单" ? 1 : 2, 
 | 
        sourceId: this.addConfig.id 
 | 
      }) 
 | 
        .then((res) => { 
 | 
          if (res.code === 200) { 
 | 
            if (res.data.data && res.data.data.length > 0) { 
 | 
              const list = res.data.data.map((item) => { 
 | 
                item.client_name=this.addConfig.client_name 
 | 
                item.number=item.term 
 | 
                return { 
 | 
                  ...item, 
 | 
                } 
 | 
              }) 
 | 
              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.serviceContractId = content 
 | 
      // this.keywordType = val.label 
 | 
      this.getData() 
 | 
    }, 
 | 
    resetClick() { 
 | 
      this.serviceContractId = "" 
 | 
      // this.keywordType = "" 
 | 
      this.getData() 
 | 
    }, 
 | 
    getSelectArray(val) { 
 | 
      console.log(val) 
 | 
      this.selValueList = [] 
 | 
      const list = val.map((item) => { 
 | 
        return item.id 
 | 
      }) 
 | 
      this.selValueList = list 
 | 
    }, 
 | 
    // 新建 
 | 
    addBtnClick() { 
 | 
      if (this.tableList.tableInfomation && this.tableList.tableInfomation.length > 0) { 
 | 
        this.$confirm("该订单已创建收款计划", "提示", { 
 | 
          confirmButtonText: "确定", 
 | 
          cancelButtonText: "取消", 
 | 
          type: "warning" 
 | 
        }) 
 | 
          .then(() => {}) 
 | 
          .catch(() => {}) 
 | 
      } else { 
 | 
        this.editConfig.visible = true 
 | 
        this.editConfig.title = "新建" 
 | 
        this.editConfig.sourceType = this.sourceType 
 | 
        this.editConfig.infomation = { ...this.addConfig } 
 | 
      } 
 | 
    } 
 | 
  } 
 | 
} 
 | 
</script> 
 | 
  
 | 
<!-- Add "scoped" attribute to limit CSS to this component only --> 
 | 
<style lang="scss" scoped> 
 | 
.collectionPlan { 
 | 
  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; 
 | 
      } 
 | 
    } 
 | 
  } 
 | 
} 
 | 
</style> 
 |