customer.vue 5.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214
  1. <template>
  2. <div class="customer">
  3. <template v-if="!detailVisible">
  4. <el-form :inline="true" :model="dataForm" @keyup.enter.native="search()">
  5. <el-form-item label="名称">
  6. <el-input v-model="dataForm.customerName" placeholder="客户名称" clearable/>
  7. </el-form-item>
  8. <el-form-item label="客户级别">
  9. <el-select
  10. v-model="dataForm.level"
  11. remote
  12. placeholder="请选择">
  13. <el-option
  14. v-for="item in options"
  15. :key="item.code"
  16. :label="item.value"
  17. :value="item.code">
  18. </el-option>
  19. </el-select>
  20. </el-form-item>
  21. <el-form-item>
  22. <el-button @click="search()">查询</el-button>
  23. </el-form-item>
  24. </el-form>
  25. <el-table
  26. :data="dataList"
  27. border
  28. v-loading="dataListLoading"
  29. style="width: 100%;">
  30. <el-table-column
  31. label="序号"
  32. type="index"
  33. width="50"
  34. align="center">
  35. </el-table-column>
  36. <el-table-column
  37. prop="customerName"
  38. header-align="center"
  39. align="center"
  40. min-width="120"
  41. :show-tooltip-when-overflow="true"
  42. label="客户名称">
  43. </el-table-column>
  44. <el-table-column
  45. prop="level"
  46. :formatter="levelFormat"
  47. header-align="center"
  48. align="center"
  49. label="级别">
  50. </el-table-column>
  51. <el-table-column
  52. prop="bizManagerName"
  53. header-align="center"
  54. align="center"
  55. min-width="120"
  56. label="对接业务员">
  57. </el-table-column>
  58. <el-table-column
  59. prop="receivedAmount"
  60. header-align="center"
  61. align="center"
  62. min-width="120"
  63. label="已收金额">
  64. </el-table-column>
  65. <el-table-column
  66. prop="notReceivedAmount"
  67. header-align="center"
  68. align="center"
  69. width="200"
  70. :show-tooltip-when-overflow="true"
  71. label="待收金额">
  72. </el-table-column>
  73. <el-table-column
  74. prop="invoicedAmount"
  75. header-align="center"
  76. align="center"
  77. label="已开票金额">
  78. </el-table-column>
  79. <el-table-column
  80. prop="notes"
  81. header-align="center"
  82. align="center"
  83. min-width="180"
  84. :show-tooltip-when-overflow="true"
  85. label="备注">
  86. </el-table-column>
  87. <el-table-column
  88. fixed="right"
  89. header-align="center"
  90. align="center"
  91. width="150"
  92. label="操作">
  93. <template slot-scope="scope">
  94. <el-button v-if="true" type="text" size="small" @click="detailHandle(scope.row.customerId)">详情</el-button>
  95. </template>
  96. </el-table-column>
  97. </el-table>
  98. <el-pagination
  99. @size-change="sizeChangeHandle"
  100. @current-change="currentChangeHandle"
  101. :current-page="pageIndex"
  102. :page-sizes="[10, 20, 50, 100]"
  103. :page-size="pageSize"
  104. :total="totalPage"
  105. layout="total, sizes, prev, pager, next, jumper">
  106. </el-pagination>
  107. </template>
  108. <!-- 弹窗, 新增 / 修改 -->
  109. <customer-detail v-if="detailVisible" ref="detail" @onChose="onChose"/>
  110. </div>
  111. </template>
  112. <script>
  113. import customerDetail from './customer-detail'
  114. import { getLevel } from '@/api/cus'
  115. import { getCustomerList } from '@/api/finance'
  116. export default {
  117. name: 'customer',
  118. components: {
  119. customerDetail
  120. },
  121. data () {
  122. return {
  123. detailVisible: false,
  124. dataForm: {
  125. customerName: '',
  126. level: ''
  127. },
  128. options: [],
  129. dataList: [],
  130. pageIndex: 1,
  131. pageSize: 10,
  132. totalPage: 0,
  133. dataListLoading: false,
  134. dataListSelections: []
  135. }
  136. },
  137. created () {
  138. this.getLevel()
  139. this.getDataList()
  140. },
  141. methods: {
  142. onChose () {
  143. this.addOrUpdateVisible = false
  144. this.detailVisible = false
  145. },
  146. // 查询
  147. search () {
  148. this.pageIndex = 1
  149. this.getDataList()
  150. },
  151. getLevel () {
  152. getLevel().then(({data}) => {
  153. if (data && data.code === '200') {
  154. this.options = data.data
  155. }
  156. })
  157. },
  158. // 获取数据列表
  159. getDataList () {
  160. this.dataListLoading = true
  161. let params = {
  162. 'current': this.pageIndex,
  163. 'size': this.pageSize,
  164. 'customerName': this.dataForm.customerName,
  165. 'level': this.dataForm.level
  166. }
  167. getCustomerList(params).then(({data}) => {
  168. if (data && data.code === '200') {
  169. this.dataList = data.data.records
  170. this.totalPage = Number(data.data.total)
  171. } else {
  172. this.dataList = []
  173. this.totalPage = 0
  174. }
  175. this.dataListLoading = false
  176. })
  177. },
  178. // 每页数
  179. sizeChangeHandle (val) {
  180. this.pageSize = val
  181. this.pageIndex = 1
  182. this.getDataList()
  183. },
  184. // 当前页
  185. currentChangeHandle (val) {
  186. this.pageIndex = val
  187. this.getDataList()
  188. },
  189. // 多选
  190. selectionChangeHandle (val) {
  191. this.dataListSelections = val
  192. },
  193. // 转换属性“级别”
  194. levelFormat (row) {
  195. for (let i = 0; i < this.options.length; i++) {
  196. if (this.options[i].code === row.level) {
  197. return this.options[i].value
  198. }
  199. }
  200. },
  201. detailHandle (id) {
  202. this.detailVisible = true
  203. this.$nextTick(() => {
  204. this.$refs.detail.init(id)
  205. })
  206. }
  207. }
  208. }
  209. </script>
  210. <style scoped>
  211. </style>