index.vue 4.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167
  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.pageCriteria.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 class="filter-flex-button">
  15. <el-button
  16. v-if="!$route.meta.onlyView"
  17. type="primary"
  18. icon="el-icon-plus"
  19. @click="addProvider">
  20. Add Provider
  21. </el-button>
  22. </div>
  23. </div>
  24. </div>
  25. <el-table
  26. v-loading="table.loading"
  27. :data="table.data">
  28. <el-table-column
  29. label="Provider ID"
  30. align="center"
  31. min-width="100">
  32. <template slot-scope="{row}">
  33. <span v-if="$route.meta.onlyView">{{ row.providerPk }}</span>
  34. <div v-else class="link-type" @click="editProvider(row)">{{row.providerPk}}</div>
  35. </template>
  36. </el-table-column>
  37. <el-table-column
  38. label="Provider Name"
  39. prop="providerName"
  40. align="center"
  41. min-width="150"/>
  42. <el-table-column
  43. label="No.of Sites"
  44. align="center"
  45. prop="siteCount"
  46. min-width="120"/>
  47. <el-table-column
  48. label="No.of Stations"
  49. prop="boxCount"
  50. align="center"
  51. min-width="150"/>
  52. <el-table-column
  53. v-if="!$route.meta.onlyView"
  54. label="Action"
  55. align="center"
  56. min-width="80">
  57. <template slot-scope="{row}">
  58. <el-dropdown
  59. class="action-dropdown"
  60. @command="(v) => handleCommand(v, row)">
  61. <i class="el-icon-more icon-action"></i>
  62. <el-dropdown-menu slot="dropdown">
  63. <el-dropdown-item
  64. command="editProvider">
  65. Edit
  66. </el-dropdown-item>
  67. <el-dropdown-item
  68. command="deleteProvider">
  69. Delete
  70. </el-dropdown-item>
  71. </el-dropdown-menu>
  72. </el-dropdown>
  73. </template>
  74. </el-table-column>
  75. </el-table>
  76. </div>
  77. </template>
  78. <script>
  79. import Pagination from '@/components/Pagination'
  80. import TableAction from '@/components/TableAction.vue'
  81. import provider from '../../api/provider'
  82. export default {
  83. data() {
  84. return {
  85. filter: {
  86. pageNum: 1,
  87. pageSize: 10,
  88. pageCriteria: {
  89. criteria: ""
  90. }
  91. },
  92. table: {
  93. loading: false,
  94. data: [],
  95. total: 0
  96. }
  97. };
  98. },
  99. created() {
  100. this.handleFilter()
  101. },
  102. methods: {
  103. handleFilter() {
  104. this.table.pageNum = 1;
  105. this.getTableData();
  106. },
  107. getTableData() {
  108. this.table.loading = true;
  109. provider.getServiceProviderPages(this.filter).then(res => {
  110. this.table.loading = false;
  111. if (res.data.records && res.data.totalRow) {
  112. this.table.total = res.data.totalRow;
  113. this.table.data = res.data.records;
  114. } else {
  115. this.table.total = 0;
  116. this.table.data = [];
  117. }
  118. }).catch(err => {
  119. this.table.loading = false;
  120. this.table.total = 0;
  121. this.table.data = [];
  122. })
  123. },
  124. addProvider() {
  125. this.$router.push({
  126. path: '/partnership-management/service-provider-mgmt/add',
  127. })
  128. },
  129. handleCommand(cb, item) {
  130. this[cb](item)
  131. },
  132. editProvider(row) {
  133. this.$router.push({
  134. path: '/partnership-management/service-provider-mgmt/edit/' + row.providerPk
  135. })
  136. },
  137. deleteProvider(row) {
  138. this.$confirm('Are you sure you want to delete this service provider?', 'Delete', {
  139. confirmButtonText: 'OK',
  140. cancelButtonText: 'Cancel',
  141. type: 'warning'
  142. }).then(res => {
  143. this.handleDeleteProvider(row.providerPk)
  144. })
  145. },
  146. handleDeleteProvider(id) {
  147. provider.deleteProviderInfo(id).then(res => {
  148. this.$message({
  149. message: 'Delete service provider successfully',
  150. type: 'success'
  151. });
  152. this.getTableData();
  153. }).catch(err => {
  154. this.$message({
  155. message: err,
  156. type: 'error'
  157. })
  158. })
  159. }
  160. }
  161. }
  162. </script>
  163. <style scoped>
  164. </style>