scorpioyq пре 3 година
родитељ
комит
2d8ef35511
3 измењених фајлова са 104 додато и 66 уклоњено
  1. 10 1
      src/api/project/index.js
  2. 38 36
      src/layout/top.vue
  3. 56 29
      src/views/home/component/folder_list.vue

+ 10 - 1
src/api/project/index.js

@@ -67,7 +67,16 @@ export default {
      * @param params
      * @returns {Promise | Promise<unknown>}
      */
-    initCode (params) {
+    initCode(params) {
         return fetch('/blade-project-manage/qrcode/v1/getGrantQrcode', params, 'post', 'json')
+    },
+    /**
+     * 服务商触发消息发送
+     * @param params
+     * @returns {Promise | Promise<unknown>}
+     */
+    send(params) {
+        return fetch('/blade-project-manage/frontMessage/v1/sendMessage', params)
     }
+
 }

+ 38 - 36
src/layout/top.vue

@@ -1,55 +1,57 @@
 <template>
-      <el-row class='flex flex-align-center flex-justify-between top '>
-        <el-col  :span='12'>
-          <div class='flex flex-justify-start flex-align-center padding'>
-           <img class="ml-10" src="../assets/svg/top.svg"/>
-            <el-breadcrumb class='ml-10' separator="/">
-              <el-breadcrumb-item v-for='item in nav.menus' :key='item.id'>
-                <a :href="item.path">{{ item.name }}</a>
-              </el-breadcrumb-item>
-            </el-breadcrumb>
-          </div>
-        </el-col>
-        <el-col :span='12'>
-          <div class='flex-child-average flex-justify-end flex padding-right '>
-            <div class='padding flex flex-align-center'>
-              <el-avatar class='mr-10' :size="30" :src="user.info.avatarUrl.length > 0 ?  user.info.avatarUrl : 'https://cube.elemecdn.com/3/7c/3ea6beec64369c2642b92c6726f1epng.png'" />
-              <el-dropdown @command='dropDown'>
+  <el-row class='flex flex-align-center flex-justify-between top '>
+    <el-col :span='12'>
+      <div class='flex flex-justify-start flex-align-center padding'>
+        <img class="ml-10" src="../assets/svg/top.svg"/>
+        <el-breadcrumb class='ml-10' separator="/">
+          <el-breadcrumb-item v-for='item in nav.menus' :key='item.id'>
+            <a :href="item.path">{{ item.name }}</a>
+          </el-breadcrumb-item>
+        </el-breadcrumb>
+      </div>
+    </el-col>
+    <el-col :span='12'>
+      <div class='flex-child-average flex-justify-end flex padding-right '>
+        <div class='padding flex flex-align-center'>
+          <el-avatar :size="30"
+                     :src="user.info && user.info.avatarUrl ?  user.info.avatarUrl : 'https://cube.elemecdn.com/3/7c/3ea6beec64369c2642b92c6726f1epng.png'"
+                     class='mr-10'/>
+          <el-dropdown @command='dropDown'>
                 <span class="flex flex-center">
-                  {{user.info.nikeName}} / ({{user.info.typeName}})
+                  {{ user.info.nikeName }} / ({{ user.info.typeName }})
                   <el-icon class="el-icon--right">
-                    <arrow-down />
+                    <arrow-down/>
                   </el-icon>
                 </span>
-                <template #dropdown>
-                  <el-dropdown-menu>
-                    <el-dropdown-item command='info'>个人中心</el-dropdown-item>
-                    <el-dropdown-item command='logout'>退出登录</el-dropdown-item>
-                  </el-dropdown-menu>
-                </template>
-              </el-dropdown>
-            </div>
-          </div>
-        </el-col>
-      </el-row>
+            <template #dropdown>
+              <el-dropdown-menu>
+                <el-dropdown-item command='info'>个人中心</el-dropdown-item>
+                <el-dropdown-item command='logout'>退出登录</el-dropdown-item>
+              </el-dropdown-menu>
+            </template>
+          </el-dropdown>
+        </div>
+      </div>
+    </el-col>
+  </el-row>
 </template>
 
 <script>
 import navStore from '../store/nav.js'
-import { useStore } from '../store/user.js'
+import {useStore} from '../store/user.js'
 
 export default {
   name: 'top',
-  setup () {
+  setup() {
     const nav = navStore()
     const user = useStore()
-    return { nav, user }
+    return {nav, user}
   },
-  created () {
+  created() {
 
   },
   methods: {
-    dropDown (res) {
+    dropDown(res) {
       if (res === 'info') {
         this.$message.success('个人中心')
       } else if (res === 'logout') {
@@ -69,7 +71,7 @@ export default {
 </script>
 
 <style lang='scss' scoped>
-.top{
+.top {
   height: 60px;
   z-index: 1;
   background-color: white;
@@ -81,7 +83,7 @@ export default {
   box-shadow: 0 5px 10px -5px rgba(0, 0, 0, 0.1);
 }
 
-.avatar{
+.avatar {
   background-color: #c4c3c3;
   width: 30px;
   height: 30px;

+ 56 - 29
src/views/home/component/folder_list.vue

@@ -11,7 +11,7 @@
       </div>
 
       <el-empty v-if="folder && folder.length === 0" description="暂无数据"/>
-      <div v-for="item in folder" :key='item.id' v-else class="flex flex-center border-bottom padding content-sp">
+      <div v-for="item in folder" v-else :key='item.id' class="flex flex-center border-bottom padding content-sp">
         <img v-if="item.isAccess === 1" class="icon" src="../../../assets/svg/folder/see.svg">
         <img v-else-if="item.isAccess === 2" class="icon" src="../../../assets/svg/folder/edit.svg">
         <img v-else class="icon" src="../../../assets/svg/folder/invisible.svg">
@@ -101,6 +101,15 @@
         <span>复制二维码,通过微信进行分享</span>
       </div>
     </el-dialog>
+    <el-dialog v-model='sendMsg' top='20%' width='400px'>
+      <div class="flex flex-col flex-center">
+        <span class="font-15">是否给业主发送提醒消息?</span>
+        <div class="flex flex-center mt-20">
+          <main-button class="mr-15" title="取消" type="0" @click="sendMsg = false"/>
+          <main-button title="发送" type="0" @click="SendMsg"/>
+        </div>
+      </div>
+    </el-dialog>
   </div>
 </template>
 
@@ -112,7 +121,7 @@ import VueQr from 'vue-qr/src/packages/vue-qr.vue'
 
 export default {
   name: 'file_list',
-  components: { mainButton, uploadFile, item1, VueQr },
+  components: {mainButton, uploadFile, item1, VueQr},
   props: {
     folder: Array,
     total: String,
@@ -121,9 +130,10 @@ export default {
       default: 0
     }
   },
-  data () {
+  data() {
     return {
       show: false,
+      sendMsg: false,
       authorizeShow: false,
       currentRow: null,
       libraryList: [],
@@ -136,45 +146,49 @@ export default {
       logoSrc: new URL('../../../assets/img/logo.png', import.meta.url).href,
       qrCodeText: '',
       startTime: '',
-      endTime: ''
+      endTime: '',
+      sendParams: {
+        ids: '',
+        ownerId: ''
+      }
     }
   },
   methods: {
-    fileView (item) {
+    fileView(item) {
       if (this.type === 0) {
         this.$router.push({
           path: '/home/files',
-          query: { id: item.fileFolderId }
+          query: {id: item.fileFolderId}
         })
       } else {
         this.$router.push({
           path: '/home/his_files',
-          query: { id: item.id }
+          query: {id: item.id}
         })
       }
     },
-    uploadFiles (item) {
+    uploadFiles(item) {
       this.currentRow = item
       this.show = true
     },
-    folderRemove (item) {
+    folderRemove(item) {
       this.$confirm('确认是否删除该文件夹及所包含的文件?', {
         confirmButtonText: '确定',
         cancelButtonText: '取消',
         type: 'warning'
       })
-        .then(() => {
-          this.$api.project.folderRemove({ ids: item.fileFolderId }).then(res => {
-            if (res.code === 200) {
-              this.$message.success(res.msg)
-              this.$emit('delFolder')
-            } else {
-              this.$message.error(res.msg)
-            }
+          .then(() => {
+            this.$api.project.folderRemove({ids: item.fileFolderId}).then(res => {
+              if (res.code === 200) {
+                this.$message.success(res.msg)
+                this.$emit('delFolder')
+              } else {
+                this.$message.error(res.msg)
+              }
+            })
           })
-        })
     },
-    success (res) {
+    success(res) {
       this.fileList = res.fileList.map(res => {
         const item = {}
         item.title = res.response.data.originalFileName
@@ -192,8 +206,8 @@ export default {
         this.saveLibrary(sub)
       })
     },
-    saveLibrary (sub) {
-      const data = { category: 4, content: '' }
+    saveLibrary(sub) {
+      const data = {category: 4, content: ''}
       this.$api.common.submit(Object.assign(sub, data)).then(res => {
         if (res.code === 200) {
           this.saveCount++
@@ -207,21 +221,34 @@ export default {
         }
       })
     },
-    addFile () {
+    addFile() {
       this.$api.project.fileAdd(this.fileList).then(res => {
         if (res.code === 200) {
           this.show = false
-          this.$bus.emit('reFolder')
           this.$message.success(res.msg)
+          this.sendMsg = true
         } else {
           this.show = false
           this.$message.error(res.msg)
         }
       })
     },
-    getFileList (item) {
+    SendMsg() {
+      this.sendParams.ownerId = this.folder[0].createUser
+      this.sendParams.ids = this.fileList.map(e => e.fileId).join(',')
+      this.$api.project.send(this.sendParams).then(res => {
+        if (res.code === 200) {
+          this.$message.success('消息已经发送成功!')
+          this.$bus.emit('reFolder')
+          this.sendMsg = false
+        } else {
+          this.$message.error(res.msg)
+        }
+      })
+    },
+    getFileList(item) {
       this.currentRow = item
-      this.$api.project.fileList({ folderId: item.fileFolderId }).then(res => {
+      this.$api.project.fileList({folderId: item.fileFolderId}).then(res => {
         if (res.code === 200) {
           this.authorizeShow = true
           this.fileData = res.data
@@ -235,7 +262,7 @@ export default {
         }
       })
     },
-    initCode () {
+    initCode() {
       if (this.authorizeDate.length === 0) {
         this.$message.error('请设置授权时间')
         return
@@ -244,7 +271,7 @@ export default {
       this.endTime = this.authorizeDate[1]
       console.log(this.fileData.records)
       const tmps = this.fileData.records.map(sub => {
-        const item = { fileId: sub.id, startTime: this.startTime, endTime: this.endTime, status: sub.type }
+        const item = {fileId: sub.id, startTime: this.startTime, endTime: this.endTime, status: sub.type}
         return item
       })
       const folder = [{
@@ -253,7 +280,7 @@ export default {
         endTime: this.endTime,
         status: this.check
       }]
-      this.$api.project.initCode({ files: tmps, folders: folder }).then(res => {
+      this.$api.project.initCode({files: tmps, folders: folder}).then(res => {
         if (res.code === 200) {
           this.qrCodeText = 'https://dev.wutongresearch.club/apply?id=' + res.data.qrcode.qrcodeId
           this.qrCodeShow = true
@@ -262,7 +289,7 @@ export default {
         }
       })
     },
-    change (res) {
+    change(res) {
       this.fileData[res.index] = res
     }
   }