Browse Source

PostList.vue 添加分页

reghao 2 năm trước cách đây
mục cha
commit
755ceca37d
1 tập tin đã thay đổi với 249 bổ sung221 xóa
  1. 249 221
      src/views/post/PostList.vue

+ 249 - 221
src/views/post/PostList.vue

@@ -13,233 +13,250 @@
       </el-menu>
     </el-col>
     <el-col :md="22">
-      <el-tabs v-model="activeName" @tab-click='tabClick'>
-        <el-tab-pane label="视频" name="video">
-          <el-row :md="6" :sm="12" :xs="12">
-            <el-table
-              :data="dataList"
-              style="width: 100%"
-            >
-              <el-table-column
-                type="index">
-              </el-table-column>
-              <el-table-column
-                prop="pubDate"
-                label="发布时间">
-              </el-table-column>
-              <el-table-column
-                prop="coverUrl"
-                label="封面"
-                width="80">
-                <template   slot-scope="scope">
-                  <el-image :src="scope.row.coverUrl" min-width="40" height="30" />
-                </template>
-              </el-table-column>
-              <el-table-column
-                prop="videoId"
-                label="视频 ID">
-                <template slot-scope="scope">
-                  <router-link target="_blank" :to="`/video/${scope.row.videoId}`">
-                    <span>{{scope.row.videoId}}</span>
-                  </router-link>
-                </template>
-              </el-table-column>
-              <el-table-column
-                prop="title"
-                label="标题">
-              </el-table-column>
-              <el-table-column
-                prop="description"
-                label="描述">
-              </el-table-column>
-              <el-table-column
-                prop="scope"
-                label="可见范围">
-                <template slot-scope="scope">
-                  <el-tooltip class="item" effect="dark" content="点击修改视频可见范围" placement="top-end">
+      <el-row>
+        <el-tabs v-model="activeName" @tab-click='tabClick'>
+          <el-tab-pane label="视频" name="video">
+            <el-row :md="6" :sm="12" :xs="12">
+              <el-table
+                :data="dataList"
+                style="width: 100%"
+              >
+                <el-table-column
+                  type="index">
+                </el-table-column>
+                <el-table-column
+                  prop="pubDate"
+                  label="发布时间">
+                </el-table-column>
+                <el-table-column
+                  prop="coverUrl"
+                  label="封面"
+                  width="80">
+                  <template   slot-scope="scope">
+                    <el-image :src="scope.row.coverUrl" min-width="40" height="30" />
+                  </template>
+                </el-table-column>
+                <el-table-column
+                  prop="videoId"
+                  label="视频 ID">
+                  <template slot-scope="scope">
+                    <router-link target="_blank" :to="`/video/${scope.row.videoId}`">
+                      <span>{{scope.row.videoId}}</span>
+                    </router-link>
+                  </template>
+                </el-table-column>
+                <el-table-column
+                  prop="title"
+                  label="标题">
+                </el-table-column>
+                <el-table-column
+                  prop="description"
+                  label="描述">
+                </el-table-column>
+                <el-table-column
+                  prop="scope"
+                  label="可见范围">
+                  <template slot-scope="scope">
+                    <el-tooltip class="item" effect="dark" content="点击修改视频可见范围" placement="top-end">
+                      <el-button
+                        v-if="scope.row.scope === 1"
+                        size="mini"
+                        @click="handleScope(scope.$index, scope.row)">所有人可见</el-button>
+                      <el-button
+                        v-else-if="scope.row.scope === 2"
+                        size="mini"
+                        type="success"
+                        @click="handleScope(scope.$index, scope.row)">VIP 可见</el-button>
+                      <el-button
+                        v-else-if="scope.row.scope === 3"
+                        size="mini"
+                        type="warning"
+                        @click="handleScope(scope.$index, scope.row)">验证码可见</el-button>
+                      <el-button
+                        v-else
+                        size="mini"
+                        type="danger"
+                        @click="handleScope(scope.$index, scope.row)">本人可见</el-button>
+                    </el-tooltip>
+                  </template>
+                </el-table-column>
+                <el-table-column
+                  prop="scope"
+                  label="审核状态">
+                  <template slot-scope="scope">
+                    <el-tag v-if="scope.row.status === 1" :type="'warning'" disable-transitions>
+                      审核中
+                    </el-tag>
+                    <el-tag v-else-if="scope.row.status === 2" :type="'success'" disable-transitions>
+                      审核通过
+                    </el-tag>
+                    <el-tag v-else :type="'danger'" disable-transitions>
+                      审核未通过
+                    </el-tag>
+                  </template>
+                </el-table-column>
+                <el-table-column label="操作" width="210">
+                  <template slot-scope="scope">
                     <el-button
-                      v-if="scope.row.scope === 1"
                       size="mini"
-                      @click="handleScope(scope.$index, scope.row)">所有人可见</el-button>
+                      @click="handlePreview(scope.$index, scope.row)">预览</el-button>
                     <el-button
-                      v-else-if="scope.row.scope === 2"
                       size="mini"
-                      type="success"
-                      @click="handleScope(scope.$index, scope.row)">VIP 可见</el-button>
+                      @click="handleEdit(scope.$index, scope.row)">编辑</el-button>
                     <el-button
-                      v-else-if="scope.row.scope === 3"
                       size="mini"
-                      type="warning"
-                      @click="handleScope(scope.$index, scope.row)">验证码可见</el-button>
+                      type="danger"
+                      @click="handleDelete(scope.$index, scope.row)">删除</el-button>
+                  </template>
+                </el-table-column>
+              </el-table>
+            </el-row>
+          </el-tab-pane>
+          <el-tab-pane label="相册" name="image">
+            <el-row :md="6" :sm="12" :xs="12">
+              <el-table
+                :data="dataList"
+                style="width: 100%"
+              >
+                <el-table-column
+                  type="index">
+                </el-table-column>
+                <el-table-column
+                  prop="coverUrl"
+                  label="相册封面"
+                  width="150">
+                  <template   slot-scope="scope">
+                    <el-image :src="scope.row.coverUrl" min-width="40" height="30" />
+                  </template>
+                </el-table-column>
+                <el-table-column
+                  prop="pubDate"
+                  label="发布时间">
+                </el-table-column>
+                <el-table-column
+                  prop="albumName"
+                  label="相册名字"
+                  width="180">
+                </el-table-column>
+                <el-table-column
+                  prop="total"
+                  label="图片数量">
+                </el-table-column>
+                <el-table-column
+                  prop="scope"
+                  label="可见范围">
+                  <template slot-scope="scope">
+                    <el-tag v-if="scope.row.viewCount === 1" disable-transitions>
+                      全部可见
+                    </el-tag>
+                    <el-tag v-else-if="scope.row.viewCount === 2" :type="'success'" disable-transitions>
+                      VIP 可见
+                    </el-tag>
+                    <el-tag v-else-if="scope.row.viewCount === 3" :type="'warning'" disable-transitions>
+                      验证码可见
+                    </el-tag>
+                    <el-tag v-else :type="'danger'" disable-transitions>
+                      本人可见
+                    </el-tag>
+                  </template>
+                </el-table-column>
+                <el-table-column label="操作">
+                  <template slot-scope="scope">
+                    <el-button
+                      size="mini"
+                      @click="handleEditImage(scope.$index, scope.row)">编辑</el-button>
+                    <el-button
+                      size="mini"
+                      type="danger"
+                      @click="handleDeleteImage(scope.$index, scope.row)">删除</el-button>
+                  </template>
+                </el-table-column>
+              </el-table>
+            </el-row>
+          </el-tab-pane>
+          <el-tab-pane label="音频" name="audio">
+            <el-row :md="6" :sm="12" :xs="12">
+              <el-table
+                :data="dataList"
+                style="width: 100%"
+              >
+                <el-table-column
+                  type="index">
+                </el-table-column>
+                <el-table-column
+                  prop="coverUrl"
+                  label="音频封面"
+                  width="150">
+                  <template   slot-scope="scope">
+                    <el-image :src="scope.row.coverUrl" min-width="40" height="30" />
+                  </template>
+                </el-table-column>
+                <el-table-column
+                  prop="pubDate"
+                  label="发布时间">
+                </el-table-column>
+                <el-table-column
+                  prop="title"
+                  label="音频名字">
+                </el-table-column>
+                <!--                <el-table-column
+                                  prop="description"
+                                  label="音频简介">
+                                </el-table-column>-->
+                <el-table-column
+                  prop="scope"
+                  label="可见范围">
+                  <template slot-scope="scope">
+                    <el-tag v-if="scope.row.viewCount === 1" disable-transitions>
+                      全部可见
+                    </el-tag>
+                    <el-tag v-else-if="scope.row.viewCount === 2" :type="'success'" disable-transitions>
+                      VIP 可见
+                    </el-tag>
+                    <el-tag v-else-if="scope.row.viewCount === 3" :type="'warning'" disable-transitions>
+                      验证码可见
+                    </el-tag>
+                    <el-tag v-else :type="'danger'" disable-transitions>
+                      本人可见
+                    </el-tag>
+                  </template>
+                </el-table-column>
+                <el-table-column label="操作">
+                  <template slot-scope="scope">
+                    <el-button
+                      size="mini"
+                      @click="handleEditAudio(scope.$index, scope.row)">编辑</el-button>
                     <el-button
-                      v-else
                       size="mini"
                       type="danger"
-                      @click="handleScope(scope.$index, scope.row)">本人可见</el-button>
-                  </el-tooltip>
-                </template>
-              </el-table-column>
-              <el-table-column
-                prop="scope"
-                label="审核状态">
-                <template slot-scope="scope">
-                  <el-tag v-if="scope.row.status === 1" :type="'warning'" disable-transitions>
-                    审核中
-                  </el-tag>
-                  <el-tag v-else-if="scope.row.status === 2" :type="'success'" disable-transitions>
-                    审核通过
-                  </el-tag>
-                  <el-tag v-else :type="'danger'" disable-transitions>
-                    审核未通过
-                  </el-tag>
-                </template>
-              </el-table-column>
-              <el-table-column label="操作" width="210">
-                <template slot-scope="scope">
-                  <el-button
-                    size="mini"
-                    @click="handlePreview(scope.$index, scope.row)">预览</el-button>
-                  <el-button
-                    size="mini"
-                    @click="handleEdit(scope.$index, scope.row)">编辑</el-button>
-                  <el-button
-                    size="mini"
-                    type="danger"
-                    @click="handleDelete(scope.$index, scope.row)">删除</el-button>
-                </template>
-              </el-table-column>
-            </el-table>
-          </el-row>
-        </el-tab-pane>
-        <el-tab-pane label="相册" name="image">
-          <el-row :md="6" :sm="12" :xs="12">
-            <el-table
-              :data="dataList"
-              style="width: 100%"
-            >
-              <el-table-column
-                type="index">
-              </el-table-column>
-              <el-table-column
-                prop="coverUrl"
-                label="相册封面"
-                width="150">
-                <template   slot-scope="scope">
-                  <el-image :src="scope.row.coverUrl" min-width="40" height="30" />
-                </template>
-              </el-table-column>
-              <el-table-column
-                prop="pubDate"
-                label="发布时间">
-              </el-table-column>
-              <el-table-column
-                prop="albumName"
-                label="相册名字"
-                width="180">
-              </el-table-column>
-              <el-table-column
-                prop="total"
-                label="图片数量">
-              </el-table-column>
-              <el-table-column
-                prop="scope"
-                label="可见范围">
-                <template slot-scope="scope">
-                  <el-tag v-if="scope.row.viewCount === 1" disable-transitions>
-                    全部可见
-                  </el-tag>
-                  <el-tag v-else-if="scope.row.viewCount === 2" :type="'success'" disable-transitions>
-                    VIP 可见
-                  </el-tag>
-                  <el-tag v-else-if="scope.row.viewCount === 3" :type="'warning'" disable-transitions>
-                    验证码可见
-                  </el-tag>
-                  <el-tag v-else :type="'danger'" disable-transitions>
-                    本人可见
-                  </el-tag>
-                </template>
-              </el-table-column>
-              <el-table-column label="操作">
-                <template slot-scope="scope">
-                  <el-button
-                    size="mini"
-                    @click="handleEditImage(scope.$index, scope.row)">编辑</el-button>
-                  <el-button
-                    size="mini"
-                    type="danger"
-                    @click="handleDeleteImage(scope.$index, scope.row)">删除</el-button>
-                </template>
-              </el-table-column>
-            </el-table>
-          </el-row>
-        </el-tab-pane>
-        <el-tab-pane label="音频" name="audio">
-          <el-row :md="6" :sm="12" :xs="12">
-            <el-table
-              :data="dataList"
-              style="width: 100%"
-            >
-              <el-table-column
-                type="index">
-              </el-table-column>
-              <el-table-column
-                prop="coverUrl"
-                label="音频封面"
-                width="150">
-                <template   slot-scope="scope">
-                  <el-image :src="scope.row.coverUrl" min-width="40" height="30" />
-                </template>
-              </el-table-column>
-              <el-table-column
-                prop="pubDate"
-                label="发布时间">
-              </el-table-column>
-              <el-table-column
-                prop="title"
-                label="音频名字">
-              </el-table-column>
-              <!--                <el-table-column
-                                prop="description"
-                                label="音频简介">
-                              </el-table-column>-->
-              <el-table-column
-                prop="scope"
-                label="可见范围">
-                <template slot-scope="scope">
-                  <el-tag v-if="scope.row.viewCount === 1" disable-transitions>
-                    全部可见
-                  </el-tag>
-                  <el-tag v-else-if="scope.row.viewCount === 2" :type="'success'" disable-transitions>
-                    VIP 可见
-                  </el-tag>
-                  <el-tag v-else-if="scope.row.viewCount === 3" :type="'warning'" disable-transitions>
-                    验证码可见
-                  </el-tag>
-                  <el-tag v-else :type="'danger'" disable-transitions>
-                    本人可见
-                  </el-tag>
-                </template>
-              </el-table-column>
-              <el-table-column label="操作">
-                <template slot-scope="scope">
-                  <el-button
-                    size="mini"
-                    @click="handleEditAudio(scope.$index, scope.row)">编辑</el-button>
-                  <el-button
-                    size="mini"
-                    type="danger"
-                    @click="handleDeleteAudio(scope.$index, scope.row)">删除</el-button>
-                </template>
-              </el-table-column>
-            </el-table>
-          </el-row>
-        </el-tab-pane>
-        <el-tab-pane label="文章" name="article">
+                      @click="handleDeleteAudio(scope.$index, scope.row)">删除</el-button>
+                  </template>
+                </el-table-column>
+              </el-table>
+            </el-row>
+          </el-tab-pane>
+          <el-tab-pane label="文章" name="article">
             <span>
               <h4>文章稿件</h4>
             </span>
-        </el-tab-pane>
-      </el-tabs>
+          </el-tab-pane>
+        </el-tabs>
+      </el-row>
+      <el-row>
+        <el-col :span="22" class="pagination">
+          <el-pagination
+            background
+            :small="screenWidth <= 768"
+            layout="prev, pager, next"
+            :page-size="pageSize"
+            :current-page="currentPage"
+            :total="totalSize"
+            @current-change="handleCurrentChange"
+            @prev-click="handleCurrentChange"
+            @next-click="handleCurrentChange"
+          />
+        </el-col>
+      </el-row>
     </el-col>
 
     <!-- 修改视频可见范围对话框 -->
@@ -296,6 +313,8 @@ export default {
   components: { VideoPreviewPlayer },
   data() {
     return {
+      // 屏幕宽度, 为了控制分页条的大小
+      screenWidth: document.body.clientWidth,
       navList: [
         { path: '/post/publish', name: '发布', icon: 'el-icon-upload' },
         { path: '/post/list', name: '稿件', icon: 'el-icon-files' },
@@ -303,6 +322,9 @@ export default {
       ],
       activeName: 'video',
       userId: 10001,
+      currentPage: 1,
+      pageSize: 12,
+      totalSize: 0,
       dataList: [],
       showPreviewDialog: false,
       videoProp: null,
@@ -339,6 +361,12 @@ export default {
     }
   },
   methods: {
+    handleCurrentChange(pageNumber) {
+      this.currentPage = pageNumber
+      this.getData()
+      // 回到顶部
+      scrollTo(0, 0)
+    },
     handleScope(index, row) {
       this.form.videoId = row.videoId
       this.form.scope = row.scope
@@ -413,14 +441,14 @@ export default {
     getData() {
       this.dataList = []
       if (this.activeName === 'video') {
-        userVideoPost(1, this.userId, 1).then(res => {
+        userVideoPost(this.currentPage).then(res => {
           if (res.code === 0) {
-            const resData = res.data.list
-            if (resData.length !== 0) {
+            const resData = res.data
+            this.dataList = resData.list
+            this.totalSize = resData.totalSize
+
+            if (this.totalSize !== 0) {
               this.showEmpty = false
-              for (const item of resData) {
-                this.dataList.push(item)
-              }
             } else {
               this.showEmpty = true
             }