waitPayment.vue 7.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177
  1. <script setup>
  2. import { getSellerTeamList } from '@/api/crm'
  3. import {getWaitPaymentList} from '@/api/financialStatistics'
  4. import currencyAmountBox from './components/currencyAmountBox.vue'
  5. import {downloadByFlow} from '@/utils/common-methods'
  6. const searchParams = reactive({
  7. keyword: '',
  8. list_param: '',
  9. seller_ids: '',
  10. current: 1,
  11. page_size: 10,
  12. sort_type: '',
  13. is_export:0
  14. })
  15. const tableData = reactive({
  16. list: [],
  17. total: 0,
  18. currencyList: [],
  19. currencyTotal: 0,
  20. })
  21. // ---------------------------------销售模块
  22. const sellerArray = ref([])
  23. const sellerChange = (value) => {
  24. searchParams.seller_ids = value.join(',')
  25. searchList()
  26. }
  27. // 获取销售列表
  28. const getSellerListFun=()=>{
  29. getSellerTeamList().then(res=>{
  30. sellerArray.value = res.data?.all_list || []
  31. })
  32. }
  33. const searchList = () => {
  34. searchParams.current=1
  35. getList()
  36. }
  37. const sortChange = ({ prop, order }) => {
  38. searchParams.sort_type = order == 'descending' ? 'desc' : order == 'ascending' ? 'asc' : ''
  39. getList()
  40. }
  41. const getList = () => {
  42. getWaitPaymentList(searchParams).then(res=>{
  43. tableData.total = res.data.page?.total || 0
  44. let dataTemp=res.data?.list?.data_list||[]
  45. tableData.list=[]
  46. dataTemp.map((item,index) =>{
  47. tableData.list.push({
  48. serial_number:searchParams.page_size*(searchParams.current-1)+index+1,
  49. ...item,...(item.invoice_payment_list?item.invoice_payment_list[0]:{})
  50. })
  51. })
  52. tableData.currencyList = res.data?.list?.not_payment_currency_total || []
  53. tableData.currencyTotal = res.data?.list?.not_payment_total||0
  54. })
  55. }
  56. const changePageSize = (pageSize) => {
  57. searchParams.page_size = pageSize
  58. getList()
  59. }
  60. const changePageNo = (pageNo) => {
  61. searchParams.current = pageNo
  62. getList()
  63. }
  64. // 导出
  65. const watiPlacementExport = () => {
  66. getWaitPaymentList({...searchParams,is_export:1}).then(res=>{
  67. downloadByFlow(res,'xlsx',`开票未到款统计表`)
  68. })
  69. }
  70. // --------------------------------
  71. getSellerListFun()
  72. getList()
  73. </script>
  74. <template>
  75. <div class="wait-placement-container" id="wait-placement-container">
  76. <div class="wait-placement-searchZone">
  77. <el-input v-model="searchParams.keyword" placeholder="请输入客户名称/合同编号" clearable @input="searchList"
  78. class="statistics-search-item" style="width: 308px;"></el-input>
  79. <el-cascader :options="sellerArray" style="margin-left: 30px;margin-bottom: 8px;z-index: 100;width: 308px;" filterable collapse-tags-tooltip
  80. @change="sellerChange" placeholder="请选择销售" clearable collapse-tags :show-all-levels="false"
  81. :props="{ multiple: true, label: 'seller_name', value: 'seller_id', children: 'child', emitPath: false }" key="seller">
  82. </el-cascader>
  83. <el-select v-model="searchParams.list_param" placeholder="请选择套餐类型" @change="searchList"
  84. class="statistics-search-item" clearable style="width: 308px;">
  85. <el-option label="FICC套餐" :value="1"></el-option>
  86. <el-option label="权益套餐" :value="2"></el-option>
  87. </el-select>
  88. </div>
  89. <div class="iandP-table-top">
  90. <currencyAmountBox :currnecyData="{currencyList:tableData.currencyList,currencyTotal:tableData.currencyTotal}">
  91. 开票未到款统计(换算后)
  92. </currencyAmountBox>
  93. <el-button class="element-common-button" style="margin-bottom: 10px;" size="large"
  94. @click="watiPlacementExport">导出</el-button>
  95. </div>
  96. <el-table :data="tableData.list" border max-height="579px" @sort-change="sortChange">
  97. <el-table-column label="序号" prop="serial_number" width="70px" align="center"></el-table-column>
  98. <el-table-column label="客户名称" align="center" prop="company_name" show-overflow-tooltip></el-table-column>
  99. <el-table-column label="合同编号" align="center" prop="contract_code" show-overflow-tooltip></el-table-column>
  100. <el-table-column label="合同起始日期" align="center" prop="start_date"></el-table-column>
  101. <el-table-column label="合同结束日期" align="center" prop="end_date"></el-table-column>
  102. <el-table-column label="套餐类型" align="center" prop="service_type">
  103. <template #header>
  104. <el-tooltip content="开票套餐类型" placement="top">
  105. <span style="display: inline-flex;align-items: center;">套餐类型
  106. <svg-Icon name="svgIcon-financial-info" size="18" style="margin-left: 5px;color: white;" />
  107. </span>
  108. </el-tooltip>
  109. </template>
  110. <template #default="{row}">
  111. {{ row.service_product_id==1?'FICC套餐':row.service_product_id==2?'权益套餐':'--' }}
  112. </template>
  113. </el-table-column>
  114. <el-table-column label="开票金额" align="center" prop="not_payment_origin_amount">
  115. <template #header>
  116. <el-tooltip content="开票未到款金额" placement="top">
  117. <span style="display: inline-flex;align-items: center;">开票金额
  118. <svg-Icon name="svgIcon-financial-info" size="18" style="margin-left: 5px;color: white;" />
  119. </span>
  120. </el-tooltip>
  121. </template>
  122. </el-table-column>
  123. <el-table-column label="金额单位" align="center" prop="unit_name"></el-table-column>
  124. <el-table-column label="开票换算金额(元)" align="center" prop="not_payment_amount"></el-table-column>
  125. <el-table-column label="开票日" align="center" prop="invoice_time" sortable="custom"></el-table-column>
  126. <el-table-column label="开票销售" align="center" prop="seller_name"></el-table-column>
  127. <el-table-column label="销售组别" align="center" prop="seller_group_name"></el-table-column>
  128. <el-table-column label="销售类型" align="center" prop="seller_type">
  129. <template #default="{row}">
  130. {{ row.seller_type==1?'FICC销售':row.seller_type==2?'权益销售':'--' }}
  131. </template>
  132. </el-table-column>
  133. <template #empty>
  134. <div class="table-no-data">
  135. <img src="@/assets/img/icon/empty-data.png" />
  136. <span>暂无数据</span>
  137. </div>
  138. </template>
  139. </el-table>
  140. <!-- 分页 -->
  141. <m-page :pageSize="searchParams.page_size" :page_no="searchParams.current"
  142. style="display: flex;justify-content: flex-end;margin-top: 20px;" :total="tableData.total"
  143. @handleCurrentChange="changePageNo" @handleSizeChange="changePageSize" />
  144. </div>
  145. </template>
  146. <style lang="scss" scoped>.wait-placement-container {
  147. min-height: 100%;
  148. .wait-placement-searchZone {
  149. display: flex;
  150. flex-wrap: wrap;
  151. margin-left: -30px;
  152. margin-bottom: 20px;
  153. .statistics-search-item {
  154. margin-bottom: 8px;
  155. margin-left: 30px;
  156. }
  157. }
  158. .iandP-table-top {
  159. display: flex;
  160. align-items: flex-end;
  161. justify-content: space-between;
  162. margin-bottom: 20px;
  163. }
  164. }</style>