scorpio 2 年之前
父节点
当前提交
7b0c2fde27

+ 8 - 0
src/api/resource/index.js

@@ -157,5 +157,13 @@ export default {
    */
   queryCreateFolder(params) {
     return fetch('/blade-project-manage-v2/folder/v2/queryFolderGrant', params)
+  },
+  /**
+   * 分享文件
+   * @param params
+   * @returns {Promise | Promise<unknown>}
+   */
+  shareFiles(params) {
+    return fetch('/blade-project-manage-v2/file-share/v2/save', params, 'post')
   }
 }

+ 3 - 0
src/config/website.js

@@ -10,6 +10,9 @@ export default {
   wss: import.meta.env.DEV
     ? 'wss://dev.wutongshucloud.com/ws/websocket/'
     : 'wss://prod.wutongshucloud.com/ws/websocket/',
+  baseUrl: import.meta.env.DEV
+    ? 'https://dev.wutongshucloud.com/'
+    : 'https://prod.wutongshucloud.com/',
   reportTypes: [
     {
       label: '未备案/批复',

+ 0 - 1
src/views/resource/component/authorize.vue

@@ -102,7 +102,6 @@ export default {
   },
   methods: {
     showDialog() {
-      console.log(this.list.length)
       if (this.list.length === 0) {
         this.$message.error('请先选择要授权的文件夹、文件')
         return

+ 5 - 1
src/views/resource/component/preview.vue

@@ -33,7 +33,7 @@
           <el-button type="primary" icon="Download" @click="downloadClick"
             >下 载</el-button
           >
-          <el-button type="primary" icon="Share">分享</el-button>
+          <share class="ml-20" :row="info" />
         </div>
       </div>
     </el-drawer>
@@ -42,8 +42,12 @@
 
 <script>
 import api from '@/api/index.js'
+import share from '@/views/resource/component/share.vue'
 
 export default {
+  components: {
+    share
+  },
   props: {
     info: {
       type: Object,

+ 77 - 0
src/views/resource/component/share.vue

@@ -0,0 +1,77 @@
+<template>
+  <div>
+    <el-button type="primary" icon="Share" @click="show = true"
+      >分 享</el-button
+    >
+    <el-dialog v-model="show" title="分享" width="450px" :show-close="false">
+      <div>
+        <el-empty
+          v-if="qrCodeText.length === 0"
+          description="正在生成二维码,请稍后..."
+        />
+        <div v-else class="flex flex-center flex-col">
+          <vue-qr
+            :currentLevel="3"
+            :logoCornerRadius="4"
+            :logoScale="0.25"
+            :logoSrc="logoSrc"
+            :text="qrCodeText"
+            size="360"
+          />
+          <el-input disabled v-model="qrCodeText" class="mt-20">
+            <template #append>
+              <el-button>复 制</el-button>
+            </template>
+          </el-input>
+        </div>
+      </div>
+    </el-dialog>
+  </div>
+</template>
+
+<script>
+import VueQr from 'vue-qr/src/packages/vue-qr.vue'
+import website from '@/config/website.js'
+export default {
+  components: {
+    VueQr
+  },
+  props: {
+    row: {
+      type: Object,
+      default: null
+    }
+  },
+  watch: {
+    show: {
+      handler(val) {
+        if (val) {
+          this.getQrCode()
+        }
+      },
+      immediate: true
+    }
+  },
+  data() {
+    return {
+      show: false,
+      url: 'http://localhost:5173/resource?id=64b79edd8ce2593744685a3e&type=0',
+      logoSrc: new URL('@/assets/img/logo.png', import.meta.url).href,
+      qrCodeText: ''
+    }
+  },
+  methods: {
+    getQrCode() {
+      this.$api.resource.shareFiles({ ids: this.row.id }).then(res => {
+        if (res.code === 200) {
+          this.qrCodeText = website.baseUrl + 'resource?shareId=' + res.data
+        } else {
+          this.$message.error(res.msg)
+        }
+      })
+    }
+  }
+}
+</script>
+
+<style lang="scss" scoped></style>

+ 2 - 1
src/views/user/manage.vue

@@ -529,9 +529,10 @@ export default {
     restPwd(row) {
       console.log(row)
       this.$prompt('', '更改 (' + row.name + ') 的密码', {
-        inputPattern: /\w{6,16}/,
+        inputPattern: /^(?=.*\w).{6,16}$/,
         inputErrorMessage: '密码长度在 6 到 16 个字符'
       }).then(({ value }) => {
+        console.log(value)
         if (value.length === 0) {
           return
         }