activityMember-list.vue 4.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190
  1. <template>
  2. <el-dialog
  3. :visible.sync="showDialog"
  4. :title="title"
  5. :modal-append-to-body="true"
  6. append-to-body
  7. style="text-align:left;"
  8. width="800px"
  9. :close-on-click-modal="false"
  10. @close="closeDialog"
  11. >
  12. <div class="user-panel" v-loading="loading">
  13. <el-row class="button-group">
  14. <el-button
  15. type="primary"
  16. size="small"
  17. plain
  18. icon="el-icon-upload"
  19. @click="exportXls"
  20. >导出数据</el-button>
  21. </el-row>
  22. <el-table
  23. ref="formTable"
  24. :data="tableData"
  25. v-loading="loading"
  26. stripe
  27. >
  28. <el-table-column
  29. prop="realName"
  30. label="会员姓名"
  31. width="150"
  32. ></el-table-column>
  33. <el-table-column
  34. prop="phone"
  35. label="电话"
  36. width="150"
  37. ></el-table-column>
  38. <el-table-column
  39. prop="idCard"
  40. label="身份证"
  41. ></el-table-column>
  42. <el-table-column
  43. prop="createTime"
  44. label="报名时间"
  45. width="160"
  46. ></el-table-column>
  47. </el-table>
  48. <el-pagination
  49. style="text-align: center"
  50. :current-page.sync="pageIndex"
  51. :total="totalElements"
  52. :page-sizes="pageSizeList"
  53. @current-change="changePage"
  54. @size-change="pageSizeChange"
  55. layout="total, sizes, prev, pager, next, jumper"
  56. ></el-pagination>
  57. </div>
  58. <span slot="footer" class="dialog-footer">
  59. <el-button @click="closeDialog">取 消</el-button>
  60. </span>
  61. </el-dialog>
  62. </template>
  63. <script>
  64. import activityMemberApi from "@/api/base/activityMember";
  65. export default {
  66. props: ["businessKey", "title"],
  67. computed: {
  68. ruleValidate (){
  69. var rules = null;
  70. rules = {
  71. address: [
  72. { required: true, message: "活动地址不能为空", trigger: "blur" }
  73. ],
  74. title: [
  75. { required: true, message: "活动名称不能为空", trigger: "blur" }
  76. ],
  77. };
  78. return rules;
  79. }
  80. },
  81. data() {
  82. return {
  83. showDialog: true,
  84. loading: false,
  85. submitting: false,
  86. formModel: {
  87. id:"",
  88. titel:"",
  89. content:"",
  90. images:"",
  91. author:"",
  92. isShow:false
  93. },
  94. tableData: [],
  95. treeData: [],
  96. pageIndex: 1,
  97. pageSize: 10,
  98. totalPages: 0,
  99. totalElements: 0,
  100. field: "",
  101. direction: "",
  102. pageSizeList: [10, 20, 30],
  103. multipleSelection: [],
  104. };
  105. },
  106. methods: {
  107. closeDialog() {
  108. this.$emit("close", false);
  109. },
  110. pageSizeChange(pageSize) {
  111. this.pageSize = pageSize;
  112. },
  113. changePage(pageIndex,exportFlag) {
  114. var self = this;
  115. self.loading = true;
  116. self.pageIndex = pageIndex;
  117. var formData = new FormData();
  118. formData.append("pageIndex", self.pageIndex);
  119. if(exportFlag!=null){
  120. formData.append("exportFlag", exportFlag);
  121. formData.append("pageSize", 10000);
  122. }
  123. else{
  124. formData.append("pageSize", self.pageSize);
  125. }
  126. formData.append("activityId", self.businessKey);
  127. activityMemberApi
  128. .pageList(formData)
  129. .then(function (response) {
  130. self.loading = false;
  131. var jsonData = response.data;
  132. if(exportFlag){
  133. //导出
  134. self.$message({
  135. showClose: true,
  136. type: "success",
  137. message: `报表已生成,<a href="${jsonData.data}">请点击链接下载</a>`,
  138. dangerouslyUseHTMLString: true,
  139. duration: 30000
  140. });
  141. }
  142. else{
  143. //分页查看
  144. var page = jsonData.data;
  145. self.tableData = page.data;
  146. self.totalPages = page.totalPages;
  147. self.totalElements = page.recordsTotal;
  148. }
  149. })
  150. .catch((error) => {
  151. self.loading = false;
  152. // self.$message.error(error + "");
  153. });
  154. },
  155. exportXls() {
  156. this.changePage(1,true);
  157. },
  158. },
  159. created() {
  160. },
  161. mounted: function () {
  162. this.changePage(1);
  163. },
  164. };
  165. </script>
  166. <style rel="stylesheet/scss" lang="scss" scoped>
  167. .user-panel {
  168. margin: 10px auto;
  169. }
  170. .input-form-main{
  171. width: 300px;
  172. }
  173. .link-span{
  174. margin-right: 20px;
  175. }
  176. .el-form-item{
  177. margin-bottom: 25px;
  178. }
  179. </style>