scorpio 3 jaren geleden
bovenliggende
commit
fa50c27201

+ 4 - 4
src/components/basic-form/index.vue

@@ -49,7 +49,7 @@
       <!--row-->
       <el-col v-if='item.type === "row" ' :span='24' class='flex full-width '>
         <div class='flex full-width'>
-          <div v-for='sub in item.column' :key='sub.label' class='full-width sub-item'>
+          <div v-for='sub in item.children' :key='sub.label' class='full-width sub-item'>
             <el-col :span='24'>
               <div class='full-width item '>
                 <el-form-item class='full-width'>
@@ -84,19 +84,19 @@ export default {
   },
   watch: {
     data: {
-      handler(val) {
+      handler (val) {
         this.form = val
       },
       immediate: true
     },
     option: {
-      handler(val) {
+      handler (val) {
         this.$emit('change', this.form)
       },
       deep: true
     }
   },
-  data() {
+  data () {
     return {
       form: {},
       disable: true

+ 36 - 38
src/layout/top.vue

@@ -1,57 +1,55 @@
 <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 :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'>
+      <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'>
                 <span class="flex flex-center">
-                  {{ user.info.nikeName }} / ({{ user.info.typeName }})
+                  {{user.info.nikeName}} / {{user.info.deptName}}
                   <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') {
@@ -71,7 +69,7 @@ export default {
 </script>
 
 <style lang='scss' scoped>
-.top {
+.top{
   height: 60px;
   z-index: 1;
   background-color: white;
@@ -83,7 +81,7 @@ export default {
   box-shadow: 0 5px 10px -5px rgba(0, 0, 0, 0.1);
 }
 
-.avatar {
+.avatar{
   background-color: #c4c3c3;
   width: 30px;
   height: 30px;

+ 1 - 2
src/router/index.js

@@ -13,11 +13,10 @@ const router = createRouter({
 })
 
 router.beforeEach((to, from, next) => {
-  console.log(routes)
   if (to.path !== '/login') {
+    console.log(to)
     const nav = navStore()
     nav.updateMenu(to)
-    console.log(to.name)
   }
   if (to.meta.keepAlive) {
     const keepAlive = keepAliveStore()

+ 155 - 0
src/views/home/component/authorize.vue

@@ -0,0 +1,155 @@
+<template>
+  <div class='flex flex-justify-between flex-col  full-width '>
+    <div class='flex full-width full-height border-bottom padding-bottom bold '>
+      <span class='flex-child-average text-center'>文件/文件夹名称</span>
+      <span class='flex-child-average text-center'>更新(上传)时间</span>
+      <span class='flex-child-average text-center'>权限设置</span>
+    </div>
+    <div class='border-bottom padding-right padding-left mt-10' style='height: 500px'>
+      <div class='flex flex-align-center mb-10 flex-justify-between border-bottom'>
+        <div class='bold'>文件夹相关权限</div>
+        <el-radio-group v-model="check" @change='allChange'>
+          <el-radio label="3" size="large">不可查看</el-radio>
+          <el-radio label="1" size="large">可见</el-radio>
+          <el-radio label="2" size="large">可编辑</el-radio>
+        </el-radio-group>
+      </div>
+      <div style='overflow-y: scroll; height: 450px'>
+        <div v-for='(item,index) in fileList' :key='item.id'>
+          <item1 :check='item.type' :data='item' :index='index' @change='change'/>
+        </div>
+      </div>
+    </div>
+    <div class='full-width flex flex-align-center mt-10'>
+      <span class='font-14 bold'>授权时长</span>
+      <el-date-picker
+          v-model="authorizeDate"
+          class='ml-20'
+          end-placeholder="截止日期"
+          range-separator="至"
+          start-placeholder="开始日期"
+          type="daterange"
+          value-format='YYYY-MM-DD'
+      />
+    </div>
+    <div class='full-width flex flex-align-center mt-10'>
+      <span class='font-14 bold'>生成授权连接</span>
+      <el-button circle class='ml-20' icon="Picture" type="danger" @click='initCode'/>
+      <el-button circle icon="Paperclip" type="danger"/>
+    </div>
+    <div class='full-width mt-20 border-top padding-top flex flex-justify-end'>
+      <el-button @click='close'>取消</el-button>
+      <el-button type='primary' @click='close'>关闭</el-button>
+    </div>
+    <el-dialog v-model='qrCodeShow' top='20%' width='400px'>
+      <div class='flex flex-col flex-center' style='height: 400rpx;width: 400rpx'>
+        <vue-qr :currentLevel='3' :logoCornerRadius='4' :logoScale='0.25' :logoSrc='logoSrc' :text='qrCodeText'
+                size='340'/>
+        <span>复制二维码,通过微信进行分享</span>
+      </div>
+    </el-dialog>
+  </div>
+</template>
+
+<script>
+import item1 from '@/views/home/component/item1.vue'
+import VueQr from 'vue-qr/src/packages/vue-qr.vue'
+export default {
+  name: 'authorize',
+  components: { item1, VueQr },
+  props: {
+    list: {
+      type: Array,
+      default: null
+    },
+    folderId: {
+      type: String,
+      default: ''
+    }
+  },
+  watch: {
+    list: {
+      handler (val) {
+        this.fileList = val
+        this.fileList.map(sub => {
+          sub.type = this.check
+          return sub
+        })
+      },
+      immediate: true
+    }
+  },
+  data () {
+    return {
+      check: '2',
+      authorizeDate: [],
+      fileData: null,
+      qrCodeShow: false,
+      fileList: []
+    }
+  },
+  methods: {
+    close () {
+      this.$emit('close')
+    },
+    initCode () {
+      if (this.authorizeDate.length === 0) {
+        this.$message.error('请设置授权时间')
+        return
+      }
+      this.startTime = this.authorizeDate[0]
+      this.endTime = this.authorizeDate[1]
+      const tmps = this.fileList.map(sub => {
+        const item = { fileId: sub.id, startTime: this.startTime, endTime: this.endTime, status: sub.type }
+        return item
+      })
+      const folder = [{
+        folderId: this.folderId,
+        startTime: this.startTime,
+        endTime: this.endTime,
+        status: this.check
+      }]
+      this.$api.project.initCode({ files: tmps, folders: folder, type: 1 }).then(res => {
+        if (res.code === 200) {
+          this.qrCodeText = 'https://dev.wutongresearch.club/apply?id=' + res.data.qrcode.qrcodeId
+          this.qrCodeShow = true
+        } else {
+          this.$message.error(res.msg)
+        }
+      })
+    },
+    allChange (res) {
+      this.fileList.forEach(sub => {
+        sub.type = res
+        return sub
+      })
+    },
+    change (res) {
+      this.fileList[res.index] = res
+      let seeCount = 0
+      let editCount = 0
+      let notCount = 0
+      this.fileList.forEach(sub => {
+        if (sub.type === '1') {
+          seeCount = seeCount + 1
+        } else if (sub.type === '2') {
+          editCount = editCount + 1
+        } else {
+          notCount = notCount + 1
+        }
+      })
+      if (editCount >= seeCount || editCount > 0) {
+        this.check = '2'
+      } else if (seeCount > 0) {
+        this.check = '1'
+      } else {
+        this.check = '3'
+      }
+    }
+  }
+}
+</script>
+
+<style scoped>
+
+</style>

+ 34 - 11
src/views/home/component/current.vue

@@ -5,11 +5,11 @@
         <span>当前数据({{ data.total }})</span>
       </div>
       <div class="flex flex-center flex-child-average flex-justify-end" style="margin-right: 50px">
-        <base-button class="mr-20" icon="User" title="授权查看" type="0"/>
+        <base-button class="mr-20" icon="User" title="授权查看" type="0" @click='showClick'/>
         <base-button icon="Upload" title="上传文件" @click="show = true"/>
       </div>
     </div>
-    <files_list :data="data" class="mt-20"/>
+    <files-list :data="data" class="mt-20"/>
     <el-dialog v-model="show"
                append-to-body
                center
@@ -18,31 +18,53 @@
                   @close='show = false'
                   @success='success'/>
     </el-dialog>
+
+    <el-dialog v-model='authorizeShow' :show-close='false' append-to-body center >
+      <template #header="{ close, titleId, titleClass }">
+        <div class="flex flex-justify-between">
+          <h4 :id="titleId" :class="titleClass">{{data.folderName}}</h4>
+          <el-button text type="danger" @click="close">
+            <el-icon class="el-icon--left">
+              <CircleCloseFilled/>
+            </el-icon>
+          </el-button>
+        </div>
+      </template>
+      <authorize :list='data.records' :folder-id='id' :project-id='projectId' @close='authorizeShow = false'/>
+    </el-dialog>
   </div>
 </template>
 
 <script>
-import files_list from './files_list.vue'
+import filesList from './files_list.vue'
 import baseButton from '../../../components/base-button.vue'
 import uploadFile from '../../../components/upload-file.vue'
-
+import authorize from '@/views/home/component/authorize.vue'
 export default {
   name: 'current',
-  components: {files_list, baseButton, uploadFile},
+  components: { filesList, baseButton, uploadFile, authorize },
   props: {
     id: String,
-    data: Object,
+    data: Object
   },
-  data() {
+  data () {
     return {
+      authorizeShow: false,
       show: false,
       fileList: [],
       saveCount: 0,
       libraryList: [],
+      projectId: ''
     }
   },
+  created () {
+    this.projectId = this.$route.query.projectId
+  },
   methods: {
-    success(res) {
+    showClick () {
+      this.authorizeShow = true
+    },
+    success (res) {
       this.fileList = res.fileList.map(res => {
         const item = {}
         item.title = res.response.data.originalFileName
@@ -50,14 +72,15 @@ export default {
         item.volume = res.response.data.volume
         item.fileId = res.response.data.id
         item.fileFolderId = this.id
+        item.projectId = this.projectId
         return item
       })
       this.fileList.forEach(sub => {
         this.saveLibrary(sub)
       })
     },
-    saveLibrary(sub) {
-      let 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++
@@ -71,7 +94,7 @@ export default {
         }
       })
     },
-    addFile() {
+    addFile () {
       this.$api.project.fileAdd(this.fileList).then(res => {
         if (res.code === 200) {
           this.show = false

+ 20 - 20
src/views/home/component/files_list.vue

@@ -40,17 +40,17 @@
 
 <script>
 import mainButton from '../../../components/main-button.vue'
-import {bytesToSize} from '../../../utils/tools.js'
+import { bytesToSize } from '../../../utils/tools.js'
 
 export default {
   name: 'files_list',
-  components: {mainButton},
+  components: { mainButton },
   props: {
     data: Object
   },
   watch: {
     data: {
-      handler(val) {
+      handler (val) {
         if (val === '' || val === null) {
           return
         }
@@ -67,34 +67,34 @@ export default {
       immediate: true
     }
   },
-  data() {
+  data () {
     return {
       files: []
     }
   },
   methods: {
-    View(item) {
+    View (item) {
       this.$router.push('/home/file_detail?id=' + item.fileId)
     },
-    downFile(item) {
+    downFile (item) {
       window.open('/api/wutong-file/minio/file/downFile/' + item.dowloadFileId, '')
     },
-    removeFile(item) {
-      this.$confirm("确认是否删除该文件?", {
-        confirmButtonText: "确定",
-        cancelButtonText: "取消",
-        type: "warning"
+    removeFile (item) {
+      this.$confirm('确认是否删除该文件?', {
+        confirmButtonText: '确定',
+        cancelButtonText: '取消',
+        type: 'warning'
       })
-          .then(() => {
-            this.$api.project.fileRemove({ids: item.id}).then(res => {
-              if (res.code === 200) {
-                this.$bus.emit('delete')
-                this.$message.success(res.msg)
-              } else {
-                this.$message.error(res.msg)
-              }
-            })
+        .then(() => {
+          this.$api.project.fileRemove({ ids: item.id }).then(res => {
+            if (res.code === 200) {
+              this.$bus.emit('delete')
+              this.$message.success(res.msg)
+            } else {
+              this.$message.error(res.msg)
+            }
           })
+        })
     }
 
   }

+ 13 - 15
src/views/home/component/folder_info.vue

@@ -20,7 +20,7 @@
     <!------tab------>
     <div class="flex flex-center mt-15">
       <div class="flex flex-center" style="flex: 3.8">
-        <div v-for="(item,index) in folderType" class="flex flex-center tab">
+        <div v-for="(item,index) in folderType" :key='item.id' class="flex flex-center tab">
           <div :class="active === index ? 'tab-active' : ''"
                @click="change(index,item.dictKey)">{{ item.dictValue }}
           </div>
@@ -32,7 +32,7 @@
       </div>
     </div>
     <div class="mt-20">
-      <folder_list :folder="folderList" :total="total" @delFolder="getFolderList"/>
+      <folder-list :folder="folderList" :total="total" :project-id='id' @delFolder="getFolderList"/>
     </div>
     <el-dialog v-model='addShow' append-to-body width='40%'>
       <div class="flex flex-col">
@@ -73,13 +73,12 @@
 
 <script>
 import baseButton from '../../../components/base-button.vue'
-// eslint-disable-next-line camelcase
-import folder_list from './folder_list.vue'
+import folderList from './folder_list.vue'
+import authorize from '@/views/home/component/authorize.vue'
 
 export default {
   name: 'right2',
-  // eslint-disable-next-line camelcase
-  components: {baseButton, folder_list},
+  components: { baseButton, folderList },
   props: {
     data: {
       type: Object,
@@ -90,7 +89,7 @@ export default {
   },
   watch: {
     projectStageId: {
-      handler(val) {
+      handler (val) {
         if (val) {
           this.getDict()
         }
@@ -98,7 +97,7 @@ export default {
       immediate: true
     }
   },
-  data() {
+  data () {
     return {
       addShow: false,
       folderInfo: {
@@ -116,26 +115,25 @@ export default {
       dictKey: ''
     }
   },
-
   methods: {
-    getDict() {
-      this.$api.common.dicList({'code': 'pc-folder-type'}).then(res => {
+    getDict () {
+      this.$api.common.dicList({ code: 'pc-folder-type' }).then(res => {
         if (res.code === 200) {
           this.folderType = res.data
           this.change(0, this.folderType[0].dictKey)
         }
       })
     },
-    change(index, key) {
+    change (index, key) {
       this.active = index
       this.dictKey = key
       this.getFolderList()
     },
-    clear() {
+    clear () {
       this.keyWords = ''
       this.getFolderList()
     },
-    getFolderList() {
+    getFolderList () {
       this.$api.project.folderList({
         projectStageId: this.projectStageId,
         folderName: this.keyWords,
@@ -147,7 +145,7 @@ export default {
         }
       })
     },
-    folderAdd() {
+    folderAdd () {
       this.folderInfo.projectId = this.id
       this.folderInfo.projectStageId = this.projectStageId
       this.folderInfo.dictKey = this.dictKey

+ 31 - 112
src/views/home/component/folder_list.vue

@@ -2,7 +2,7 @@
   <div class="full-width full-height mb-10">
     <div class="flex flex-col">
       <div class="flex flex-align-center padding border-bottom bold title-sp">
-        <span v-if="type === 0" class="flex-1"></span>
+        <span v-if="type === 0" class="flex-1">谋划阶段</span>
         <span v-else class="flex-1"></span>
         <span style="flex: 2">文件/文件夹名称</span>
         <span style="flex: 1">更新(上传)时间</span>
@@ -11,7 +11,7 @@
       </div>
 
       <el-empty v-if="folder && folder.length === 0" description="暂无数据"/>
-      <div v-for="item in folder" v-else :key='item.id' class="flex flex-center border-bottom padding content-sp">
+      <div v-for="item in folder" :key='item.id' v-else 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">
@@ -52,63 +52,7 @@
           </el-button>
         </div>
       </template>
-      <div class='flex flex-justify-between flex-col  full-width '>
-        <div class='flex full-width full-height border-bottom padding-bottom bold '>
-          <span class='flex-child-average text-center'>文件/文件夹名称</span>
-          <span class='flex-child-average text-center'>更新(上传)时间</span>
-          <span class='flex-child-average text-center'>权限设置</span>
-        </div>
-        <div class='border-bottom padding-right padding-left mt-10' style='height: 500px'>
-          <div class='flex flex-align-center mb-10 flex-justify-between border-bottom'>
-            <div class='bold'>相关操作</div>
-            <el-radio-group v-model="check">
-              <el-radio label="3" size="large">全部不可查看</el-radio>
-              <el-radio label="1" size="large">全部可见</el-radio>
-              <el-radio label="2" size="large">全部可编辑</el-radio>
-            </el-radio-group>
-          </div>
-          <div v-for='(item,index) in fileData.records' :key='item'>
-            <item1 :check='check' :data='item' :index='index' @change='change'/>
-          </div>
-        </div>
-        <div class='full-width flex flex-align-center mt-10'>
-          <span class='font-14 bold'>授权时长</span>
-          <el-date-picker
-              v-model="authorizeDate"
-              class='ml-20'
-              end-placeholder="截止日期"
-              range-separator="至"
-              start-placeholder="开始日期"
-              type="daterange"
-              value-format='YYYY-MM-DD'
-          />
-        </div>
-        <div class='full-width flex flex-align-center mt-10'>
-          <span class='font-14 bold'>生成授权连接</span>
-          <el-button circle class='ml-20' icon="Picture" type="danger" @click='initCode'/>
-          <el-button circle icon="Paperclip" type="danger"/>
-        </div>
-        <div class='full-width mt-20 border-top padding-top flex flex-justify-end'>
-          <el-button @click='authorizeShow = false'>取消</el-button>
-          <el-button type='primary' @click='authorizeShow = false'>关闭</el-button>
-        </div>
-      </div>
-    </el-dialog>
-    <el-dialog v-model='qrCodeShow' top='20%' width='400px'>
-      <div class='flex flex-col flex-center light-purple-bg' style='height: 400rpx;width: 400rpx'>
-        <vue-qr :currentLevel='3' :logoCornerRadius='4' :logoScale='0.25' :logoSrc='logoSrc' :text='qrCodeText'
-                size='340'/>
-        <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>
+      <authorize :list='fileData.records' :folder-id='currentRow.id' :project-id='projectId' @close='authorizeShow = false'/>
     </el-dialog>
   </div>
 </template>
@@ -116,21 +60,21 @@
 <script>
 import mainButton from '../../../components/main-button.vue'
 import uploadFile from '../../../components/upload-file.vue'
-import item1 from '@/views/home/component/item1.vue'
-import VueQr from 'vue-qr/src/packages/vue-qr.vue'
+import authorize from '@/views/home/component/authorize.vue'
 
 export default {
   name: 'file_list',
-  components: {mainButton, uploadFile, item1, VueQr},
+  components: { mainButton, uploadFile, authorize },
   props: {
     folder: Array,
     total: String,
+    projectId: String,
     type: {
       type: Number,
       default: 0
     }
   },
-  data() {
+  data () {
     return {
       show: false,
       sendMsg: false,
@@ -154,47 +98,48 @@ export default {
     }
   },
   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
         item.suffix = res.response.data.suffix
         item.volume = res.response.data.volume
         item.fileId = res.response.data.id
+        item.projectId = this.projectId
         if (this.type === 0) {
           item.fileFolderId = this.currentRow.fileFolderId
         } else {
@@ -206,8 +151,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++
@@ -221,12 +166,12 @@ 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)
@@ -246,9 +191,9 @@ export default {
         }
       })
     },
-    getFileList(item) {
+    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
@@ -262,34 +207,8 @@ export default {
         }
       })
     },
-    initCode() {
-      if (this.authorizeDate.length === 0) {
-        this.$message.error('请设置授权时间')
-        return
-      }
-      this.startTime = this.authorizeDate[0]
-      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}
-        return item
-      })
-      const folder = [{
-        folderId: this.currentRow.fileFolderId,
-        startTime: this.startTime,
-        endTime: this.endTime,
-        status: this.check
-      }]
-      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
-        } else {
-          this.$message.error(res.msg)
-        }
-      })
-    },
-    change(res) {
+
+    change (res) {
       this.fileData[res.index] = res
     }
   }

+ 3 - 1
src/views/home/component/item1.vue

@@ -9,6 +9,7 @@
         <el-radio label="2" size="large">可编辑</el-radio>
       </el-radio-group>
     </div>
+    <div>{{item.type}}</div>
   </div>
 </template>
 
@@ -39,7 +40,8 @@ export default {
   methods: {
     change (res) {
       this.item.type = res
-      this.$emit('change', { ...this.item, index: this.index })
+      this.item.index = this.index
+      this.$emit('change', this.item)
     }
   }
 }

+ 20 - 9
src/views/home/component/proinfo.vue

@@ -23,7 +23,7 @@
           <span class="flex-child-average">发行期限</span>
           <span class="flex-child-average">发行利率</span>
         </div>
-        <div v-for="item in issue"
+        <div v-for="item in issue" :key='item.id'
              class="flex flex-center grey full-width border-bottom border-right border-left mr-10"
              style="height: 50px">
           <span class="flex-child-average">{{ item.issueDate }}</span>
@@ -72,12 +72,23 @@ import baseButton from '../../../components/base-button.vue'
 import basicForm from '../../../components/basic-form/index.vue'
 
 export default {
-  components: {baseButton, basicForm},
+  components: { baseButton, basicForm },
   props: {
     data: Object,
-    issue: Array,
+    issue: Array
   },
-  data() {
+  watch: {
+    data: {
+      handler (val) {
+        if (val && val.hasOwnProperty('property')) {
+          const config = JSON.parse(val.property)
+          this.option.column = config
+        }
+      },
+      immediate: true
+    }
+  },
+  data () {
     return {
       showAdd: false,
       keyWords: '',
@@ -281,7 +292,7 @@ export default {
                 span: 24
               }
             ]
-          },
+          }
         ]
       },
       issueInfo: {
@@ -294,7 +305,7 @@ export default {
     }
   },
   methods: {
-    edit() {
+    edit () {
       if (this.btnTips === '编辑') {
         this.option.detail = false
         this.btnTips = '保存'
@@ -311,11 +322,11 @@ export default {
         this.btnTips = '编辑'
       }
     },
-    cancel() {
+    cancel () {
       this.option.detail = true
       this.btnTips = '编辑'
     },
-    issueAdd() {
+    issueAdd () {
       this.issueInfo.projectId = this.data.id
       this.$api.project.issueAdd(this.issueInfo).then(res => {
         if (res.code === 200) {
@@ -326,7 +337,7 @@ export default {
           this.$message.error(res.msg)
         }
       })
-    },
+    }
   }
 }
 </script>