ServiceProviderManagement.vue 4.8 KB

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