index.vue 3.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168
  1. <template>
  2. <div class="page">
  3. <div class="jp-table">
  4. <vxe-toolbar
  5. ref="reportsToolbar"
  6. :refresh="{ query: refreshList }"
  7. export
  8. print
  9. custom
  10. >
  11. <template #buttons>
  12. <el-button type="primary" icon="plus" @click="add()"
  13. >新建</el-button
  14. >
  15. </template>
  16. </vxe-toolbar>
  17. <div class="jp-table-body">
  18. <vxe-table
  19. border="inner"
  20. auto-resize
  21. resizable
  22. height="auto"
  23. :loading="loading"
  24. size="small"
  25. ref="reportsTable"
  26. show-header-overflow
  27. show-overflow
  28. highlight-hover-row
  29. :menu-config="{}"
  30. :print-config="{}"
  31. :import-config="{}"
  32. :export-config="{}"
  33. :data="dataList"
  34. :checkbox-config="{}"
  35. >
  36. <vxe-column type="seq" width="40"></vxe-column>
  37. <vxe-column title="报表名" field="name" sortable>
  38. </vxe-column>
  39. <vxe-column title="更新日期" field="updateTime" sortable>
  40. <template #default="scope">
  41. {{
  42. moment(scope.row.updateTime).format(
  43. "YYYY-MM-DD HH:mm:ss"
  44. )
  45. }}
  46. </template>
  47. </vxe-column>
  48. <vxe-column
  49. title="操作"
  50. width="200px"
  51. fixed="right"
  52. align="center"
  53. >
  54. <template #default="scope">
  55. <el-button
  56. type="primary"
  57. text
  58. @click="pre(scope.row)"
  59. >预览</el-button
  60. >
  61. <el-divider direction="vertical"></el-divider>
  62. <el-button
  63. type="primary"
  64. text
  65. @click="design(scope.row)"
  66. >设计</el-button
  67. >
  68. <el-divider direction="vertical"></el-divider>
  69. <el-button
  70. type="danger"
  71. text
  72. @click="del(scope.row)"
  73. >删除</el-button
  74. >
  75. <el-divider direction="vertical"></el-divider>
  76. <el-button
  77. type="primary"
  78. text
  79. @click="createMenu(scope.row)"
  80. >发布</el-button
  81. >
  82. </template>
  83. </vxe-column>
  84. </vxe-table>
  85. </div>
  86. </div>
  87. <gen-menu-form ref="genMenuForm"></gen-menu-form>
  88. </div>
  89. </template>
  90. <script>
  91. import GenMenuForm from "@/components/menu/GenMenuForm";
  92. import reportService from "@/api/reports/reportService";
  93. export default {
  94. data() {
  95. return {
  96. dataList: [],
  97. loading: false,
  98. };
  99. },
  100. components: {
  101. GenMenuForm,
  102. },
  103. activated() {
  104. this.$nextTick(() => {
  105. // 将表格和工具栏进行关联
  106. const $table = this.$refs.reportsTable;
  107. const $toolbar = this.$refs.reportsToolbar;
  108. $table.connect($toolbar);
  109. });
  110. this.refreshList();
  111. },
  112. methods: {
  113. // 获取数据列表
  114. refreshList() {
  115. this.loading = true;
  116. reportService.list().then((data) => {
  117. this.dataList = data.reports;
  118. this.loading = false;
  119. });
  120. },
  121. add() {
  122. this.$router.push({ path: "/ureport/designer" });
  123. },
  124. pre(report) {
  125. this.$router.push({
  126. path: `/ureport/preview`,
  127. query: {
  128. _u: `file:${report.name}`,
  129. title: `预览报表${report.name}`,
  130. },
  131. });
  132. },
  133. design(report) {
  134. this.$router.push({
  135. path: `/ureport/designer`,
  136. query: {
  137. _u: `file:${report.name}`,
  138. title: `编辑报表${report.name}`,
  139. },
  140. });
  141. },
  142. // 删除
  143. del(report) {
  144. this.$confirm(`确定删除所选项吗?`, "提示", {
  145. confirmButtonText: "确定",
  146. cancelButtonText: "取消",
  147. type: "warning",
  148. }).then(() => {
  149. this.loading = true;
  150. reportService.delete(`file:${report.name}`).then((data) => {
  151. this.loading = false;
  152. this.$message.success(data);
  153. this.refreshList();
  154. });
  155. });
  156. },
  157. // 创建菜单
  158. createMenu(report) {
  159. this.$refs.genMenuForm.init(
  160. `/ureport/preview?_u=file:${report.name}`,
  161. report.name,
  162. "iframe"
  163. );
  164. },
  165. },
  166. };
  167. </script>