index.vue 5.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208
  1. <!-- 内容管理 文章管理 -->
  2. <template>
  3. <div class="app-container">
  4. <!-- 搜索 -->
  5. <el-form inline size="mini">
  6. <el-form-item label="文章标题:">
  7. <el-input v-model="form.title" placeholder="请输入文章标题" clearable />
  8. </el-form-item>
  9. <el-form-item label="创建时间">
  10. <el-date-picker
  11. v-model="form.listDate"
  12. type="datetimerange"
  13. start-placeholder="开始日期"
  14. end-placeholder="结束日期"
  15. />
  16. </el-form-item>
  17. <el-form-item>
  18. <el-button type="primary" icon="el-icon-search" @click="getSearch"
  19. >搜索</el-button
  20. >
  21. <el-button icon="el-icon-refresh" @click="getRefresh">重置</el-button>
  22. <el-button
  23. type="primary"
  24. plain
  25. icon="el-icon-plus"
  26. @click="getDetail()"
  27. v-hasPermi="['content:article:add']"
  28. >新增</el-button
  29. >
  30. </el-form-item>
  31. </el-form>
  32. <!-- 列表 -->
  33. <el-table :data="tableData" v-loading="loading">
  34. <el-table-column label="序号" type="index" align="center" />
  35. <el-table-column
  36. label="文章ID"
  37. prop="id"
  38. align="center"
  39. show-overflow-tooltip
  40. />
  41. <el-table-column
  42. label="文章标题"
  43. prop="title"
  44. align="center"
  45. show-overflow-tooltip
  46. />
  47. <el-table-column
  48. label="分享标题"
  49. prop="shareTitle"
  50. align="center"
  51. show-overflow-tooltip
  52. />
  53. <el-table-column label="分享图片" align="center" width="100px">
  54. <template slot-scope="scope">
  55. <el-image :src="scope.row.shareIcon" />
  56. </template>
  57. </el-table-column>
  58. <el-table-column label="浏览数" prop="viewCount" align="center" />
  59. <el-table-column
  60. label="创建时间"
  61. prop="createTime"
  62. align="center"
  63. show-overflow-tooltip
  64. />
  65. <el-table-column
  66. label="更新时间"
  67. prop="updateTime"
  68. align="center"
  69. show-overflow-tooltip
  70. />
  71. <el-table-column label="操作" align="center">
  72. <template slot-scope="scope">
  73. <el-popover trigger="click">
  74. <vue-qr :text="getUrl(scope.row)" :ref="`qrcode` + scope.row.id" />
  75. <el-button type="text" slot="reference" style="margin-right: 10px"
  76. >预览</el-button
  77. >
  78. </el-popover>
  79. <el-button type="text" @click="getDetail(scope.row.id, true)"
  80. >查看</el-button
  81. >
  82. <el-button
  83. type="text"
  84. @click="getDetail(scope.row.id)"
  85. v-hasPermi="['content:article:edit']"
  86. >编辑</el-button
  87. >
  88. <el-button
  89. type="delete"
  90. @click="getDelete(scope.row)"
  91. v-hasPermi="['content:article:delete']"
  92. >删除</el-button
  93. >
  94. <el-button
  95. type="text"
  96. v-clipboard:copy="getUrl(scope.row)"
  97. v-clipboard:success="copySuccess"
  98. >复制</el-button
  99. >
  100. </template>
  101. </el-table-column>
  102. </el-table>
  103. <pagination
  104. v-show="total > 0"
  105. :total="total"
  106. :page.sync="form.pageNum"
  107. :limit.sync="form.pageSize"
  108. @pagination="getList"
  109. />
  110. </div>
  111. </template>
  112. <script>
  113. import { change, list } from "@/api/content/article";
  114. import { dialogCallBack } from "@/utils/DialogUtil";
  115. import VueQr from "vue-qr";
  116. export default {
  117. components: {
  118. VueQr,
  119. },
  120. data() {
  121. return {
  122. // 遮罩层
  123. loading: false,
  124. // 表单
  125. form: {
  126. pageNum: 1,
  127. pageSize: 10,
  128. },
  129. // 列表
  130. tableData: [],
  131. // 总数据
  132. total: 0,
  133. };
  134. },
  135. mounted() {
  136. this.getList();
  137. },
  138. methods: {
  139. // 列表
  140. getList() {
  141. this.loading = true;
  142. list(this.form).then((res) => {
  143. if (res.code === 0) {
  144. this.tableData = res.data.records;
  145. this.total = res.data.total;
  146. this.loading = false;
  147. }
  148. });
  149. },
  150. // 搜索
  151. getSearch() {
  152. this.form.pageNum = 1;
  153. this.getList();
  154. },
  155. // 重置
  156. getRefresh() {
  157. this.form = {
  158. pageNum: 1,
  159. pageSize: 10,
  160. };
  161. this.getList();
  162. },
  163. // 详情
  164. getDetail(id, boolean) {
  165. this.$router.push({
  166. path: `/content/articleList/detail`,
  167. query: {
  168. id: id,
  169. boolean: boolean,
  170. },
  171. });
  172. },
  173. // 删除
  174. getDelete(row) {
  175. var that = this;
  176. dialogCallBack(that, function () {
  177. that
  178. .$confirm(`是否删除${row.title}?`, "提示:", {
  179. type: "warning",
  180. })
  181. .then(() => {
  182. change(row.id, 2).then((res) => {
  183. if (res.code === 0) {
  184. that.$message.success("删除成功!");
  185. that.getList();
  186. }
  187. });
  188. })
  189. .catch(() => {});
  190. });
  191. },
  192. // 复制地址
  193. getUrl(e) {
  194. return `${e.copyUrl}pages/content/index?articleId=${e.id}`;
  195. },
  196. copySuccess() {
  197. this.$message.success("复制成功!");
  198. },
  199. },
  200. };
  201. </script>