index.vue 2.1 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788
  1. <template>
  2. <view class="file-info-container">
  3. <view class="u-page">
  4. <u-list
  5. v-if="indexList.length>0"
  6. @scrolltolower="scrolltolower"
  7. >
  8. <u-list-item
  9. v-for="(item, index) in indexList"
  10. :key="index"
  11. >
  12. <view class="file-info-item" @click="onItemClick(item)">
  13. <view class="file-info-item-img">
  14. <image :src="fileIcon(item.fileExt)" mode="aspectFill" />
  15. </view>
  16. <view class="file-info-item-content">
  17. <view class="file-info-item-title">{{ item.title }}</view>
  18. <view class="file-info-item-date">{{ item.date }}</view>
  19. </view>
  20. </view>
  21. </u-list-item>
  22. </u-list>
  23. <u-loadmore :status="loadStatus" />
  24. </view>
  25. </view>
  26. </template>
  27. <script>
  28. import { fetchFileList } from '@/common/api';
  29. import { ICON_CFG } from '@/common/EnumConst';
  30. import { fileIcon, getImageUrl, viewFileFn } from '@/util';
  31. let page = 1;
  32. export default {
  33. name: 'content',
  34. props: {},
  35. data() {
  36. return {
  37. ICON_CFG,
  38. indexList: [],
  39. loadStatus: 'loadmore', // loadmore,loading,nomore
  40. };
  41. },
  42. created() {
  43. },
  44. onLoad() {
  45. this.loadmore();
  46. },
  47. methods: {
  48. fileIcon,
  49. getImageUrl,
  50. onItemClick(item) {
  51. viewFileFn(getImageUrl(item.uri), item.title, `.${item.fileExt}`);
  52. },
  53. scrolltolower() {
  54. if (page > 1 && this.loadStatus === 'nomore') {
  55. return;
  56. }
  57. this.loadmore();
  58. },
  59. loadmore() {
  60. this.loadStatus = 'loading';
  61. fetchFileList({
  62. pageNum: page,
  63. pageSize: 10,
  64. fileType: 2,
  65. }).then(res => {
  66. page += 1;
  67. if (res.rows.length > 0) {
  68. this.indexList = this.indexList.concat(res.rows.map(item => {
  69. return {
  70. id: item.id,
  71. title: item.fileName,
  72. date: item.createTime,
  73. ...item,
  74. };
  75. }));
  76. }
  77. if (res.rows.length < 10) {
  78. this.loadStatus = 'nomore';
  79. }
  80. });
  81. },
  82. },
  83. };
  84. </script>
  85. <style lang="scss" src="./index.scss" />;