ServiceProviderManagement.vue 5.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191
  1. <template>
  2. <div class="app-container">
  3. <div class="filter-container">
  4. <div class="filter-view">
  5. <div class="flex1" style="min-width: 200px; max-width: 350px;">
  6. <el-input
  7. v-model="filter.criteria"
  8. prefix-icon="el-icon-search"
  9. placeholder="Search by Provider Name"
  10. @keyup.enter.native="handleFilter"
  11. @change="handleFilter"
  12. clearable/>
  13. </div>
  14. <div>
  15. <el-button
  16. type="primary"
  17. icon="el-icon-search"
  18. @click="handleFilter">
  19. Search
  20. </el-button>
  21. </div>
  22. <div class="filter-flex-button">
  23. <el-button
  24. v-if="!$route.meta.onlyView"
  25. type="primary"
  26. icon="el-icon-plus"
  27. @click="addProvider">
  28. Add Provider
  29. </el-button>
  30. </div>
  31. </div>
  32. </div>
  33. <el-table
  34. v-loading="listLoading"
  35. :data="tableList"
  36. style="width: 100%;">
  37. <el-table-column
  38. label="Provider ID"
  39. align="center"
  40. min-width="120">
  41. <template slot-scope="{row}">
  42. <span>{{ row.providerPk }}</span>
  43. </template>
  44. </el-table-column>
  45. <el-table-column
  46. label="Provider Name"
  47. align="center"
  48. min-width="150">
  49. <template slot-scope="{row}">
  50. <span>{{ row.providerName }}</span>
  51. </template>
  52. </el-table-column>
  53. <el-table-column
  54. label="No.of Sites"
  55. align="center"
  56. prop="siteCount"
  57. min-width="120"/>
  58. <el-table-column
  59. label="No.of Stations"
  60. align="center"
  61. min-width="120">
  62. <template slot-scope="{row}">
  63. <span>{{ row.boxCount }}</span>
  64. </template>
  65. </el-table-column>
  66. <el-table-column
  67. v-if="!$route.meta.onlyView"
  68. label="Action"
  69. align="center"
  70. min-width="70">
  71. <template slot-scope="{row}">
  72. <!-- <TableAction
  73. @edit="editProvider(row)"
  74. @delete="deleteProvider(row)"/> -->
  75. <el-dropdown
  76. class="action-dropdown"
  77. @command="(v) => handleCommand(v, row)">
  78. <i class="el-icon-more icon-action"></i>
  79. <el-dropdown-menu slot="dropdown">
  80. <el-dropdown-item
  81. command="editProvider">
  82. Edit
  83. </el-dropdown-item>
  84. <el-dropdown-item
  85. command="deleteProvider">
  86. Delete
  87. </el-dropdown-item>
  88. </el-dropdown-menu>
  89. </el-dropdown>
  90. </template>
  91. </el-table-column>
  92. </el-table>
  93. <div class="right">
  94. <pagination
  95. v-show="total > 0"
  96. :total="total"
  97. :page.sync="listQuery.page"
  98. :limit.sync="listQuery.limit"
  99. @pagination="handlePageChange" />
  100. </div>
  101. </div>
  102. </template>
  103. <script>
  104. import Pagination from '@/components/Pagination'
  105. import TableAction from '@/components/TableAction.vue'
  106. import provider from '../../http/api/provider'
  107. export default {
  108. components: { Pagination, TableAction },
  109. data() {
  110. return {
  111. filter: {
  112. criteria: ''
  113. },
  114. listLoading: true,
  115. tableList: [],
  116. total: 0,
  117. listQuery: {
  118. page: 1,
  119. limit: 10,
  120. },
  121. }
  122. },
  123. created() {
  124. this.getList();
  125. },
  126. methods: {
  127. handleFilter() {
  128. this.listLoading = true;
  129. this.listQuery.page = 1;
  130. this.getList();
  131. },
  132. handlePageChange() {
  133. this.listLoading = true;
  134. this.getList();
  135. },
  136. getList() {
  137. const params = {
  138. pageSize: this.listQuery.limit,
  139. pageNo: this.listQuery.page,
  140. pageVo: this.filter
  141. }
  142. provider.getServiceProviderPages(params).then(res => {
  143. this.listLoading = false;
  144. this.total = res.total;
  145. this.tableList = res.data;
  146. }).catch(err => {
  147. this.listLoading = false;
  148. this.total = 0;
  149. this.tableList = [];
  150. })
  151. },
  152. addProvider() {
  153. this.$router.push({path: '/partnership-management/service-provider-management/add'})
  154. },
  155. handleCommand(cb, item) {
  156. this[cb](item)
  157. },
  158. editProvider(row) {
  159. //this.$store.commit('provider/SET_ProviderInfo', row)
  160. this.$router.push({
  161. path: '/partnership-management/service-provider-management/edit/' + row.providerPk,
  162. });
  163. },
  164. deleteProvider(row) {
  165. this.$confirm('Are you sure you want to delete this service provider?', 'Delete', {
  166. confirmButtonText: 'OK',
  167. cancelButtonText: 'Cancel',
  168. type: 'warning'
  169. }).then(res => {
  170. this.handleDeleteProvider(row.providerPk)
  171. })
  172. },
  173. handleDeleteProvider(id) {
  174. provider.deleteProviderInfo({providerPk: id}).then(res => {
  175. this.$message({
  176. message: 'Delete service provider successfully',
  177. type: 'success'
  178. });
  179. this.listLoading = true;
  180. this.getList();
  181. }).catch(err => {
  182. this.$message({
  183. message: err,
  184. type: 'error'
  185. })
  186. })
  187. }
  188. }
  189. }
  190. </script>