generanView.vue 6.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182
  1. <template>
  2. <div class="generanView">
  3. <el-form v-model="form" label-width="100">
  4. <el-row :gutter="20">
  5. <el-col :span="8">
  6. <el-form-item label="业务员">
  7. <el-input placeholder="请输入" v-model="form.salesman"></el-input>
  8. </el-form-item>
  9. </el-col>
  10. <el-col :span="8">
  11. <el-form-item label="业务员类型">
  12. <el-select v-model="form.attrType">
  13. <el-option value="1" label="前线人员"></el-option>
  14. <el-option value="2" label="后线人员"></el-option>
  15. <el-option value="3" label="合伙人"></el-option>
  16. <el-option value="4" label="工作室管理员"></el-option>
  17. <el-option value="5" label="团队"></el-option>
  18. <el-option value="6" label="个代"></el-option>
  19. <el-option value="7" label="电销"></el-option>
  20. <el-option value="8" label="渠道"></el-option>
  21. </el-select>
  22. </el-form-item>
  23. </el-col>
  24. <el-col :span="8">
  25. <el-form-item label="统计日期">
  26. <el-date-picker
  27. v-model="form.createTime"
  28. type="daterange"
  29. range-separator="至"
  30. start-placeholder="开始时间"
  31. end-placeholder="结束时间"
  32. format="YYYY-MM-DD"
  33. value-format="YYYY-MM-DD"
  34. />
  35. </el-form-item>
  36. </el-col>
  37. <el-col :span="8"></el-col>
  38. <el-col :span="8"></el-col>
  39. <el-col :span="8" style="display: flex; align-items: center; justify-content: flex-end">
  40. <el-button type="primary" @click="handleSearch">查询</el-button>
  41. <el-button type="primary" plain @click="handleReset">重置</el-button>
  42. </el-col>
  43. </el-row>
  44. </el-form>
  45. <el-row :gutter="20" justify="space-between" style="padding: 0 40px; margin-top: 20px">
  46. <el-col :span="6">
  47. <div class="count">{{ formData.salespersonCount }}人</div>
  48. <div class="name">业务员</div>
  49. </el-col>
  50. <el-col :span="6">
  51. <div class="count">¥{{ formData.payableSum }}</div>
  52. <div class="name">应付总计</div>
  53. </el-col>
  54. <el-col :span="6">
  55. <div class="count">{{ formData.paidSum }}</div>
  56. <div class="name">已付总计</div>
  57. </el-col>
  58. <el-col :span="6">
  59. <div class="count">¥{{ formData.notPaidSum }}</div>
  60. <div class="name">未付总计</div>
  61. </el-col>
  62. </el-row>
  63. <el-table
  64. :data="tableData"
  65. style="margin-top: 20px"
  66. >
  67. <el-table-column prop="name" label="业务员姓名"></el-table-column>
  68. <el-table-column prop="mobile" label="业务员手机号"></el-table-column>
  69. <el-table-column prop="workNumber" label="业务员工号"></el-table-column>
  70. <el-table-column prop="attrType" label="业务员类型">
  71. <template #default="scope">
  72. {{ scope.row.attrType == '1'?'前线人员':scope.row.attrType == '2'?'后线人员':scope.row.attrType == '3'?'合伙人':scope.row.attrType == '4'?'工作室管理员':scope.row.attrType == '5'?'团队':scope.row.attrType == '6'?'个代':scope.row.attrType == '7'?'电销':scope.row.attrType == '8'?'渠道':'' }}
  73. </template>
  74. </el-table-column>
  75. <el-table-column prop="organizationName" label="归属"></el-table-column>
  76. <el-table-column prop="deptName" label="所属机构"></el-table-column>
  77. <el-table-column prop="sumAmount" label="应付总计"></el-table-column>
  78. <el-table-column prop="sumAmountPaid" label="已付金额"></el-table-column>
  79. <el-table-column prop="sumAmountUnpaid" label="未付金额"></el-table-column>
  80. </el-table>
  81. <div class="pagination">
  82. <el-pagination
  83. v-model:current-page="pages"
  84. v-model:page-size="size"
  85. :page-sizes="[10, 20, 30, 40]"
  86. layout="total, sizes, prev, pager, next, jumper"
  87. :total="total"
  88. @size-change="handleSizeChange"
  89. @current-change="handleCurrentChange"
  90. ></el-pagination>
  91. </div>
  92. </div>
  93. </template>
  94. <script setup lang="ts">
  95. import api from '@/api'
  96. let form = ref({
  97. salesman: '',
  98. attrType: '',
  99. createTime: []
  100. })
  101. let formData = ref({})
  102. let tableData = ref([])
  103. // 分页
  104. let pages = ref(1)
  105. let size = ref(10)
  106. let total = ref(0)
  107. const handleSizeChange = (e) => {
  108. size.value = e
  109. initData()
  110. }
  111. const handleCurrentChange = (e) => {
  112. pages.value = e
  113. initData()
  114. }
  115. const handleSearch = () => {
  116. pages.value = 1
  117. size.value = 10
  118. initData()
  119. }
  120. const handleReset = () => {
  121. pages.value = 1
  122. size.value = 10
  123. form.value = {
  124. salesman: '',
  125. attrType: '',
  126. createTime: []
  127. }
  128. initData()
  129. }
  130. const initData = () => {
  131. api.financeApi.getPayableStatistics({
  132. salesman: form.value.salesman,
  133. attrType: form.value.attrType,
  134. createTimeStart: form.value.createTime?.[0],
  135. createTimeEnd: form.value.createTime?.[1]
  136. }).then((res: any) => {
  137. formData.value = res.data
  138. })
  139. api.financeApi.userAccountList({
  140. salesman: form.value.salesman,
  141. attrType: form.value.attrType,
  142. createTimeStart: form.value.createTime?.[0],
  143. createTimeEnd: form.value.createTime?.[1]
  144. }).then((res: any) => {
  145. if(res.code == 200) {
  146. tableData.value = res.data.records
  147. total.value = res.data.total
  148. }
  149. })
  150. }
  151. onMounted(() => {
  152. initData();
  153. })
  154. </script>
  155. <style scoped lang="scss">
  156. .generanView{
  157. height: calc(100vh - 134px);
  158. width: calc(100% - 24px);
  159. margin: 12px auto;
  160. padding: 12px;
  161. background: #FFFFFF;
  162. overflow-y: auto;
  163. .pagination{
  164. margin-top: 20px;
  165. display: flex;
  166. justify-content: flex-end;
  167. }
  168. .count{
  169. font-size: 30px;
  170. }
  171. .name{
  172. color: #666666;
  173. }
  174. }
  175. </style>