payService-list.vue 6.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234
  1. <template>
  2. <div>
  3. <el-breadcrumb separator=">">
  4. <el-breadcrumb-item :to="{ path: '/' }">首页</el-breadcrumb-item>
  5. <el-breadcrumb-item>
  6. <a href="#">基础信息管理</a>
  7. </el-breadcrumb-item>
  8. <el-breadcrumb-item>
  9. <a href="#">收费项目管理</a>
  10. </el-breadcrumb-item>
  11. </el-breadcrumb>
  12. <el-divider></el-divider>
  13. <el-row class="button-group">
  14. <el-button
  15. type="primary"
  16. size="small"
  17. plain
  18. icon="el-icon-circle-plus"
  19. @click="handleAdd(null)"
  20. >新增</el-button>
  21. </el-row>
  22. <el-table
  23. ref="formTable"
  24. :data="tableData"
  25. v-loading="loading"
  26. element-loading-text="拼命加载中"
  27. stripe
  28. >
  29. <el-table-column type="index" label="序号" width="60">
  30. <template slot-scope='scope'>
  31. {{(pageIndex - 1)*pageSize + scope.$index + 1}}
  32. </template>
  33. </el-table-column>
  34. <el-table-column prop="typeN" label="收费项目类型" ></el-table-column>
  35. <el-table-column prop="pic" label="" >
  36. <template slot-scope="{row}">
  37. <el-image v-if="row.pic"
  38. style="width: 100px; height: 100px"
  39. :src="row.pic"></el-image>
  40. </template>
  41. </el-table-column>
  42. <el-table-column prop="name" label="收费项目" ></el-table-column>
  43. <el-table-column prop="desc" label="收费项目说明" ></el-table-column>
  44. <el-table-column prop="unitPrice" label="单价" ></el-table-column>
  45. <el-table-column prop="unit" label="单位" ></el-table-column>
  46. <el-table-column prop="isActivation" label="激活开关" >
  47. <template slot-scope="{row}">
  48. <el-switch
  49. v-model="row.isActivation"
  50. active-color="#13ce66"
  51. inactive-color="#ff4949">
  52. </el-switch>
  53. </template>
  54. </el-table-column>
  55. <el-table-column label="操作">
  56. <template slot-scope="{row}">
  57. <el-button size="mini" type="warning" @click="handleEdit(row)">编辑</el-button>
  58. <el-button size="mini" type="danger" @click="handleDelete(row)">删除</el-button>
  59. </template>
  60. </el-table-column>
  61. </el-table>
  62. <div style="text-align:center;">
  63. <el-pagination
  64. :current-page.sync="pageIndex"
  65. :total="totalElements"
  66. :page-sizes="pageSizeList"
  67. @current-change="changePage"
  68. @size-change="pageSizeChange"
  69. layout="total, sizes, prev, pager, next, jumper"
  70. ></el-pagination>
  71. </div>
  72. <payService-detail
  73. v-if="showModal"
  74. :businessKey="businessKey"
  75. :parentId="selectedRecord.id"
  76. :title="modalTitle"
  77. @close="onDetailModalClose"
  78. ></payService-detail>
  79. </div>
  80. </template>
  81. <script>
  82. import Constant from "@/constant";
  83. import payServiceApi from "@/api/base/payService";
  84. import payServiceDetail from "./payService-detail";
  85. export default {
  86. name: 'basePayServiceList',
  87. data(){
  88. return{
  89. loading: false,
  90. showModal: false,
  91. tableData: [],
  92. multipleSelection: [],
  93. pageIndex: 1,
  94. pageSize: 10,
  95. totalElements: 0,
  96. tableHeight: 400,
  97. pageSizeList: [10,30,50,100],
  98. }
  99. },
  100. methods:{
  101. changePage(pageIndex) {
  102. this.loading = true;
  103. var formData = new FormData();
  104. formData.append("pageIndex", this.pageIndex);
  105. formData.append("pageSize", this.pageSize);
  106. payServiceApi.payServicePageList(formData).then(response => {
  107. this.loading = false;
  108. var jsonData = response.data;
  109. console.log(jsonData);
  110. this.tableData = jsonData.data.data;
  111. this.totalElements = jsonData.data.recordsTotal;
  112. this.pageIndex = pageIndex;
  113. });
  114. },
  115. pageSizeChange(pageSize) {
  116. this.pageSize = pageSize;
  117. this.$nextTick(()=>{
  118. this.changePage(1);
  119. });
  120. },
  121. handleReset(name) {
  122. this.$refs[name].resetFields();
  123. },
  124. onDetailModalClose(retObj) {
  125. //保存成功后回调
  126. this.showModal = false;
  127. if (retObj.result) {
  128. var retData = retObj.data;
  129. this.changePage(this.pageIndex);
  130. }
  131. },
  132. handleAdd(record) {
  133. this.modalTitle = "新增";
  134. this.operation = "add";
  135. this.businessKey = "";
  136. if(record!=null){
  137. this.selectedRecord = record;
  138. }
  139. else{
  140. this.selectedRecord = {};
  141. }
  142. this.showModal = true;
  143. },
  144. handleEdit(record) {
  145. this.modalTitle = "编辑";
  146. this.operation = "edit";
  147. this.businessKey = record.id;
  148. this.selectedRecord = record;
  149. this.showModal = true;
  150. },
  151. handleDelete(record) {
  152. var self = this;
  153. self.$confirm("是否确认删除?", "提示", {
  154. confirmButtonText: "确定",
  155. cancelButtonText: "取消",
  156. type: "warning"
  157. })
  158. .then(() => {
  159. payServiceApi.remove(record.id).then(function(response) {
  160. var jsonData = response.data;
  161. if (jsonData.result) {
  162. var rs = self.loopDelete(self.tableData,record.id);
  163. self.$message({
  164. type: "success",
  165. message: "删除成功!"
  166. });
  167. }
  168. });
  169. });
  170. },
  171. loopDelete(list,id){
  172. var rs = false;
  173. for(var i=0;i<list.length;i++){
  174. if(list[i].id == id){
  175. list.splice(i,1);
  176. rs = true;
  177. break;
  178. }
  179. if(list[i].children!=null){
  180. rs = this.loopDelete(list[i].children,id);
  181. if(rs){
  182. break;
  183. }
  184. }
  185. }
  186. return rs;
  187. },
  188. },
  189. mounted() {
  190. this.changePage(1);
  191. },
  192. components: {
  193. "payService-detail": payServiceDetail
  194. }
  195. }
  196. </script>
  197. <style scoped>
  198. .el-divider {
  199. margin: 5px 0;
  200. }
  201. .el-breadcrumb {
  202. margin: 10px;
  203. line-height: 20px;
  204. }
  205. .order-list{
  206. text-align: left;
  207. }
  208. .button-group {
  209. padding: 10px;
  210. text-align: left;
  211. }
  212. </style>