Просмотр исходного кода

update views/disk DiskShare.vue

reghao 6 месяцев назад
Родитель
Сommit
ae8c0f0809
5 измененных файлов с 106 добавлено и 29 удалено
  1. 15 0
      src/api/disk.js
  2. 5 0
      src/api/user.js
  3. 64 4
      src/views/disk/DiskAlbumIndex.vue
  4. 2 0
      src/views/disk/DiskFile.vue
  5. 20 25
      src/views/disk/DiskShare.vue

+ 15 - 0
src/api/disk.js

@@ -17,6 +17,9 @@ const diskApi = {
   getAlbumDetailApi: '/api/content/disk/album/detail',
   getCamKeyValueApi: '/api/content/disk/cam/kv',
   getCamDetailApi: '/api/content/disk/cam/detail',
+  createShareApi: '/api/content/disk/share/create',
+  getShareListApi: '/api/content/disk/share/list',
+  getShareToListApi: '/api/content/disk/share/user_list',
   submitUserActivityApi: '/api/content/disk/cam/activity',
   getCamRecordByMonthAPi: '/api/content/disk/cam/record/month',
   getRecordUrlAPi: '/api/content/disk/cam/record/url',
@@ -83,6 +86,18 @@ export function getAlbumDetail(albumId, pn) {
   return get(diskApi.getAlbumDetailApi + '/' + albumId + '?pn=' + pn)
 }
 
+export function createShare(payload) {
+  return post(diskApi.createShareApi, payload)
+}
+
+export function getShareList(pn) {
+  return get(diskApi.getShareListApi + '?pn=' + pn)
+}
+
+export function getShareToList(shareId) {
+  return get(diskApi.getShareToListApi + '?shareId=' + shareId)
+}
+
 export function getCamKeyValue() {
   return get(diskApi.getCamKeyValueApi)
 }

+ 5 - 0
src/api/user.js

@@ -9,6 +9,7 @@ const userApi = {
   checkRelationApi: '/api/user/relation/check',
   userFollowerApi: '/api/user/relation/follower',
   userFollowingApi: '/api/user/relation/following',
+  userContactApi: '/api/user/contact/list',
   unreadMessageApi: '/api/user/message/unread',
   unreadMessagesApi: '/api/user/message/unread/list',
   setReadMessageApi: '/api/user/message/detail'
@@ -48,6 +49,10 @@ export function getUserFollowing(userId) {
   return get(userApi.userFollowingApi + '/' + userId)
 }
 
+export function getUserContact(pn) {
+  return get(userApi.userContactApi + '?pn=' + pn)
+}
+
 export function getUnreadCount() {
   return get(userApi.unreadMessageApi)
 }

+ 64 - 4
src/views/disk/DiskAlbumIndex.vue

@@ -38,7 +38,7 @@
               </span>
             </el-row>
             <el-row style="padding: 1px">
-              <el-button style="float: right; padding: 5px;" icon="el-icon-share" type="text" @click="onShareAlbum">分享</el-button>
+              <el-button style="float: right; padding: 5px;" icon="el-icon-share" type="text" @click="onShareAlbum(album.albumId)">分享</el-button>
               <router-link style="text-decoration-line: none" target="_blank" :to="`/disk/album/${album.albumId}`">
                 <el-button style="float: right; padding: 5px" icon="el-icon-view" type="text" @click="true">查看</el-button>
               </router-link>
@@ -91,11 +91,44 @@
         </el-form>
       </div>
     </el-dialog>
+    <el-dialog
+      :visible.sync="showCreateShareDialog"
+      width="100%"
+      center
+    >
+      <div>
+        <el-form ref="createAlbumForm" :model="createShareForm">
+          <el-form-item label="过期时间" label-width="120px" prop="title">
+            <el-input
+              v-model="createShareForm.expireAt"
+              style="margin-left: 5px"
+              clearable
+            />
+          </el-form-item>
+          <el-form-item label="选择用户" label-width="120px" prop="title">
+            <el-checkbox-group v-model="createShareForm.shareToList">
+              <el-checkbox v-for="user in userContactList" :key="user.userIdStr" :label="user.username" />
+            </el-checkbox-group>
+          </el-form-item>
+          <el-button
+            type="primary"
+            plain
+            size="small"
+            icon="el-icon-plus"
+            style="margin-left: 10px"
+            @click="createShare"
+          >
+            分享相册
+          </el-button>
+        </el-form>
+      </div>
+    </el-dialog>
   </div>
 </template>
 
 <script>
-import { createAlbum, getAlbumList } from '@/api/disk'
+import { createAlbum, createShare, getAlbumList } from '@/api/disk'
+import { getUserContact } from '@/api/user'
 
 export default {
   name: 'DiskAlbumIndex',
@@ -112,6 +145,13 @@ export default {
       createAlbumForm: {
         albumName: null,
         fileType: 1001
+      },
+      userContactList: [],
+      // ****************************************************************************************************************
+      showCreateShareDialog: false,
+      createShareForm: {
+        albumId: null,
+        shareToList: []
       }
     }
   },
@@ -152,8 +192,28 @@ export default {
         this.$message.info(resp.msg)
       })
     },
-    onShareAlbum() {
-      this.$message.info('share album')
+    onShareAlbum(albumId) {
+      this.createShareForm.albumId = albumId
+      getUserContact(1).then(resp => {
+        if (resp.code === 0) {
+          this.userContactList = resp.data
+          this.showCreateShareDialog = true
+        } else {
+          this.$message.error(resp.msg)
+        }
+      })
+    },
+    createShare() {
+      createShare(this.createShareForm).then(resp => {
+        this.$message.info(resp.msg)
+      }).finally(() => {
+        this.showCreateShareDialog = false
+        this.createShareForm = {
+          albumId: null,
+          expireAt: null,
+          shareToList: []
+        }
+      })
     }
   }
 }

+ 2 - 0
src/views/disk/DiskFile.vue

@@ -541,6 +541,8 @@ export default {
               this.pathList.push({ path: '/disk?path=' + namePath.path, name: namePath.filename })
             }
           }
+        } else {
+          this.$message.error(resp.msg)
         }
       })
     },

+ 20 - 25
src/views/disk/DiskShare.vue

@@ -14,18 +14,13 @@
         prop="shareAt"
         label="分享时间"
       />
-      <el-table-column
-        prop="expireAt"
-        label="有效期"
-      />
       <el-table-column
         label="被分享用户"
       >
         <template slot-scope="scope">
           <span style="color: red">{{ scope.row.num }} 位</span>
           <el-button
-            type="primary"
-            size="small"
+            type="text"
             @click="getShareToList(scope.row)"
           >
             查看
@@ -60,14 +55,6 @@
           prop="username"
           label="用户名"
         />
-        <el-table-column label="操作">
-          <template slot-scope="scope">
-            <el-button
-              size="mini"
-              @click="onCancelShare(scope.row)"
-            >取消分享</el-button>
-          </template>
-        </el-table-column>
       </el-table>
     </el-dialog>
   </div>
@@ -75,6 +62,8 @@
 
 <script>
 
+import { getShareList, getShareToList } from '@/api/disk'
+
 export default {
   name: 'DiskShare',
   data() {
@@ -87,11 +76,8 @@ export default {
       dataList: [],
       // ****************************************************************************************************************
       showShareToDialog: false,
-      shareToList: [],
-      createFolderForm: {
-        pid: '0',
-        folderName: null
-      }
+      currentShareId: null,
+      shareToList: []
     }
   },
   created() {
@@ -104,14 +90,23 @@ export default {
       this.getData()
     },
     getData() {
+      getShareList(this.currentPage).then(resp => {
+        if (resp.code === 0) {
+          this.dataList = resp.data.list
+          this.totalSize = resp.data.totalSize
+        } else {
+          this.$message.error(resp.msg)
+        }
+      })
     },
     getShareToList(row) {
-      const shareId = row.shareId
-    },
-    onCancelShare(row) {
-      const jsonData = {}
-      jsonData.shareId = row.shareId
-      jsonData.userId = row.userId
+      this.shareId = row.shareId
+      getShareToList(this.shareId).then(resp => {
+        if (resp.code === 0) {
+          this.shareToList = resp.data
+          this.showShareToDialog = true
+        }
+      })
     }
   }
 }