scorpioyq 3 年 前
コミット
2e9dad6d57

ファイルの差分が大きいため隠しています
+ 0 - 0
src/assets/svg/folder/other.svg


+ 3 - 2
src/components/basic-form/index.vue

@@ -4,8 +4,6 @@
     <el-form v-else v-for='item in option.column' :key='item.label' :class='option.detail ? "grey-fa-bg" : "white-bg" '
              :label-width='option.hasOwnProperty("labelWidth") ? option.labelWidth : "150px" '
              class='form'>
-      <!--      input-->
-      <xsub :option='option' :item='item' :form='form' :disable='option.detail'/>
       <!--row-->
       <el-col v-if='item.type === "row" ' :span='24' class='flex full-width '>
         <div class='flex full-width'>
@@ -18,12 +16,15 @@
           </div>
         </div>
       </el-col>
+      <!--      input-->
+      <xsub v-else :option='option' :item='item' :form='form' :disable='option.detail'/>
     </el-form>
   </div>
 </template>
 
 <script>
 import sub from './sub.vue'
+
 export default {
   name: 'index',
   props: {

+ 20 - 0
src/components/basic-form/sub.vue

@@ -95,6 +95,26 @@
         </el-form-item>
       </div>
     </el-col>
+    <el-col v-if='item.type ==="area" ' :style='`height:` + item.rows * 35 + `px`' class='full-width'>
+      <div class='flex item full-width'>
+        <el-form-item class='full-width '>
+          <template v-slot:label>
+            <div :style='`height:` + item.rows * 35 + `px`'
+                 class='label white-bg full-width text-left padding-left bold'>
+              {{ item.label }}
+            </div>
+          </template>
+          <div class='full-width flex flex-align-start full-height text-left full-width'
+               style='white-space: pre-wrap;text-overflow: ellipsis;'>
+            <el-cascader :options="item.data" class="m-2" :placeholder="`请选择${item.label}`" @change='change'>
+            </el-cascader>
+            <el-icon v-if='!disable' class="padding-right padding-top">
+              <edit/>
+            </el-icon>
+          </div>
+        </el-form-item>
+      </div>
+    </el-col>
   </div>
 </template>
 

+ 3 - 3
src/components/main-button.vue

@@ -1,9 +1,9 @@
 <template>
-  <div :style='`width:${width}px`' class="flex flex-center mr-5 mt-5 font-12 main pointer">
+  <div :style='`width:${width}px`' class="flex flex-center mr-10 mt-5 font-12 main pointer">
     <el-icon v-if="type === '1'" class="mr-5" color="#E9A956">
       <component :is="icon"></component>
     </el-icon>
-    <div class="nowrap"> {{ title }}</div>
+    <div class="nowrap bold" style="color: #707070"> {{ title }}</div>
   </div>
 </template>
 
@@ -29,7 +29,7 @@ export default {
     }
   },
   methods: {
-    click() {
+    click () {
       this.$emit('click')
     }
   }

+ 28 - 27
src/page/login.vue

@@ -6,7 +6,6 @@
           <img
               src="https://wutong-1302848345.cos.ap-chengdu.myqcloud.com/wtzx/373e3ccd35be4ba2a72376050027612e.png"
               style="height: 560px;object-fit: contain;border-bottom-left-radius: 10px;border-top-left-radius: 10px"/>
-
         </div>
 
         <div class='right  flex flex-col flex-child-average'>
@@ -27,7 +26,8 @@
                 <vue-qr :currentLevel='3' :logoCornerRadius='4' :logoScale='0.25' :logoSrc='logoSrc' :text='qrCodeText'
                         size='260'/>
               </div>
-              <span class='mt-10 bold main-color font-16' style="margin-top: -20px">打开微信扫描二维码登陆梧桐树云平台</span>
+              <span class='mt-10 bold main-color font-16'
+                    style="margin-top: -20px">打开微信扫描二维码登陆梧桐树云平台</span>
             </div>
             <div v-else class=' flex flex-col flex-center'>
               <span class='font-24 black bold'>欢迎来到梧桐树云平台👏</span>
@@ -108,17 +108,17 @@ layout: 'empty',
 
 <script>
 import md5 from 'js-md5'
-import {useStore} from '@/store/user.js'
-import {removeToken, setToken} from '../utils/auth.js'
+import { useStore } from '@/store/user.js'
+import { removeToken, setToken } from '../utils/auth.js'
 import permissionStore from '@/store/permission.js'
 import VueQr from 'vue-qr/src/packages/vue-qr.vue'
 
 export default {
   name: 'login',
-  components: {VueQr},
+  components: { VueQr },
   watch: {
     qrCodeLogin: {
-      handler(val) {
+      handler (val) {
         if (val) {
           this.qrCode()
           this.checkLogin()
@@ -127,12 +127,12 @@ export default {
       immediate: true
     }
   },
-  setup() {
+  setup () {
     const user = useStore()
     const permission = permissionStore()
-    return {user, permission}
+    return { user, permission }
   },
-  data() {
+  data () {
     return {
       flag: false,
       form: {
@@ -141,16 +141,16 @@ export default {
       },
       rules: {
         name: [
-          {required: true, message: '请输入手机号码', trigger: 'blur'},
-          {min: 11, max: 11, message: '请输入11位手机号', trigger: 'blur'}
+          { required: true, message: '请输入手机号码', trigger: 'blur' },
+          { min: 11, max: 11, message: '请输入11位手机号', trigger: 'blur' }
         ],
         pass: [
-          {required: true, message: '请输入密码', trigger: 'blur'},
-          {min: 3, max: 12, message: '长度在 3 到 12 个字符', trigger: 'blur'}
+          { required: true, message: '请输入密码', trigger: 'blur' },
+          { min: 3, max: 12, message: '长度在 3 到 12 个字符', trigger: 'blur' }
         ],
         code: [
-          {required: true, message: '请输入验证码', trigger: 'blur'},
-          {min: 5, max: 5, message: '验证码不正确', trigger: 'blur'}
+          { required: true, message: '请输入验证码', trigger: 'blur' },
+          { min: 5, max: 5, message: '验证码不正确', trigger: 'blur' }
         ]
       },
       code: '',
@@ -162,22 +162,22 @@ export default {
       logoSrc: new URL('../assets/img/logo.png', import.meta.url).href
     }
   },
-  created() {
+  created () {
     this.permission.cleanPermission()
     removeToken()
     this.init()
   },
-  unmounted() {
+  unmounted () {
     clearInterval(this.time)
   },
   methods: {
-    init() {
+    init () {
       this.$api.login.captcha().then(res => {
         this.code = res.image
         this.header = res.key
       })
     },
-    submint() {
+    submint () {
       this.$refs.loginForm.validate((res) => {
         if (res) {
           const params = {
@@ -188,7 +188,7 @@ export default {
             scope: 'all',
             type: 'account'
           }
-          const header = {captchaKey: this.header, captchaCode: this.form.code}
+          const header = { captchaKey: this.header, captchaCode: this.form.code }
           this.$api.login.login(params, header).then(res => {
             if (res.error_description) {
               this.$message.error(res.error_description)
@@ -204,11 +204,11 @@ export default {
         }
       })
     },
-    loginAdmin() {
+    loginAdmin () {
       this.form.name = 'admin'
       this.form.pass = 'admin'
     },
-    getInfo() {
+    getInfo () {
       this.getPermission()
       this.$api.login.getUserInfo().then(res => {
         if (res.code === 200) {
@@ -222,14 +222,14 @@ export default {
         }
       })
     },
-    getPermission() {
+    getPermission () {
       this.$api.login.getPermission().then(res => {
         if (res.code === 200) {
           this.permission.addPermission(res.data)
         }
       })
     },
-    checkLogin() {
+    checkLogin () {
       let count = 0
       this.time = setInterval(() => {
         count = count + 1
@@ -247,7 +247,7 @@ export default {
         }
       }, 1000)
     },
-    qrCode() {
+    qrCode () {
       this.$api.login.qrCode().then(res => {
         if (res.code === 200) {
           this.sessionId = res.data
@@ -255,8 +255,8 @@ export default {
         }
       })
     },
-    codeLogin() {
-      this.$api.login.qrCodeLogin({sessionId: this.sessionId}).then(res => {
+    codeLogin () {
+      this.$api.login.qrCodeLogin({ sessionId: this.sessionId }).then(res => {
         if (res.code === 200) {
           const tmp = res.data
           console.log(Object.prototype.hasOwnProperty.call(tmp, 'phone'))
@@ -288,6 +288,7 @@ export default {
 </script>
 
 <style lang='scss' scoped>
+//noinspection ALL
 .bg {
   background-image: url("https://wutong-1302848345.cos.ap-chengdu.myqcloud.com/wtzx/7667edec62f44063a50c66e8654eaa87.png");
 }

+ 49 - 3
src/views/home/component/current.vue

@@ -5,7 +5,9 @@
         <span>当前数据({{ data.total }})</span>
       </div>
       <div class="flex flex-center flex-child-average flex-justify-end" style="margin-right: 50px">
-        <base-button  v-if='permissions.permissions.home_folder_authorize' class="mr-20" icon="User" title="授权" type="0" @click='showClick'/>
+        <base-button v-if='permissions.permissions.home_folder_authorize' class="mr-5" icon="User" title="授权"
+                     type="0" @click='showClick'/>
+        <base-button icon="Plus" title="添加文件夹" class="mr-5" @click="addShow = true"/>
         <base-button icon="Upload" title="上传文件" @click="show = true"/>
       </div>
     </div>
@@ -19,10 +21,10 @@
                   @success='success'/>
     </el-dialog>
 
-    <el-dialog v-model='authorizeShow' :show-close='false' append-to-body center >
+    <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>
+          <h4 :id="titleId" :class="titleClass">{{ data.folderName }}</h4>
           <el-button text type="danger" @click="close">
             <el-icon class="el-icon--left">
               <CircleCloseFilled/>
@@ -32,6 +34,26 @@
       </template>
       <authorize :list='data.records' :folder-id='id' :project-id='projectId' @close='authorizeShow = false'/>
     </el-dialog>
+    <el-dialog v-model='addShow' append-to-body width='40%'>
+      <div class="flex flex-col">
+        <el-form ref="ruleFormRef"
+                 :model="folderInfo"
+                 class="demo-ruleForm"
+                 label-width="120px"
+                 status-icon>
+          <el-form-item label="文件夹名称">
+            <el-input
+                v-model="folderInfo.title"
+                placeholder="填写文件夹名称"
+                style="width: 100%"
+            />
+          </el-form-item>
+        </el-form>
+        <div class="full-width flex flex-center mt-10">
+          <base-button icon="Lock" title="保存" type="1" @click="folderAdd"/>
+        </div>
+      </div>
+    </el-dialog>
   </div>
 </template>
 
@@ -42,6 +64,7 @@ import uploadFile from '../../../components/upload-file.vue'
 import authorize from '@/views/home/component/authorize.vue'
 import permissionStore from '@/store/permission.js'
 import { useStore } from '@/store/user.js'
+
 export default {
   name: 'current',
   components: { filesList, baseButton, uploadFile, authorize },
@@ -52,7 +75,15 @@ export default {
   data () {
     return {
       authorizeShow: false,
+      addShow: false,
       show: false,
+      folderInfo: {
+        title: '',
+        projectStageId: '',
+        projectId: '',
+        parentId: '',
+        dictKey: ''
+      },
       fileList: [],
       saveCount: 0,
       libraryList: [],
@@ -72,6 +103,8 @@ export default {
   created () {
     this.projectId = this.$route.query.projectId
     this.sendParams.ownerId = this.$route.query.ownerId
+    this.folderInfo.dictKey = this.$route.query.dictKey
+    this.folderInfo.projectStageId = this.$route.query.projectStageId
   },
   methods: {
     showClick () {
@@ -144,6 +177,19 @@ export default {
           this.$message.error(res.msg)
         }
       })
+    },
+    folderAdd () {
+      this.folderInfo.projectId = this.projectId
+      this.folderInfo.parentId = this.id
+      this.$api.project.folderAdd(this.folderInfo).then(res => {
+        if (res.code === 200) {
+          this.addShow = false
+          this.$message.success(res.msg)
+          this.$emit('reFiles')
+        } else {
+          this.$message.error(res.msg)
+        }
+      })
     }
   }
 }

+ 39 - 12
src/views/home/component/files_list.vue

@@ -12,20 +12,29 @@
       </div>
       <el-empty v-if="files && files.length === 0"/>
       <div v-for="item in files" v-else :key='item.id' class="flex flex-center border-bottom padding content-sp">
-        <div class="flex-1">
+        <div v-if="item.type === '1'" class="flex-1">
           <img v-if="item.suffix === 'docx'" class="icon" src="../../../assets/svg/folder/doc.svg">
           <img v-else-if="item.suffix === 'pdf'" class="icon" src="../../../assets/svg/folder/pdf.svg">
           <img v-else-if="item.suffix === 'xlsx'" class="icon" src="../../../assets/svg/folder/xls.svg">
           <img v-else class="icon" src="../../../assets/svg/folder/other.svg">
         </div>
+        <div v-else class="flex-1">
+          <img class="icon" src="../../../assets/svg/folder/see.svg" style="width: 50px;height: 46px">
+          <!--          <img v-else-if="item.suffix === 'pdf'" class="icon" src="../../../assets/svg/folder/pdf.svg">-->
+          <!--          <img v-else-if="item.suffix === 'xlsx'" class="icon" src="../../../assets/svg/folder/xls.svg">-->
+          <!--          <img v-else class="icon" src="../../../assets/svg/folder/other.svg">-->
+        </div>
         <span style="flex: 2">{{ item.title }}</span>
-        <span style="flex: 1">{{ item.updateTime }}</span>
-        <span class="flex-1">{{ item.size }}</span>
-        <span class="flex-1">{{ item.status }}</span>
-        <span class="flex-1">{{ item.author }}</span>
+        <span style="flex: 1">{{ item.createTime.substring(0, 10) }}</span>
+        <span v-if="item.type === '1'" class="flex-1">{{ item.size }}</span>
+        <span v-if="item.type === '2'" class="flex-1">-</span>
+        <span v-if="item.type === '1'" class="flex-1">{{ item.status }}</span>
+        <span v-if="item.type === '2'" class="flex-1">-</span>
+        <span v-if="item.type === '1'" class="flex-1">{{ item.createUserName }}</span>
+        <span v-if="item.type === '2'" class="flex-1">-</span>
         <div class="flex flex-center" style="flex: 3">
           <main-button icon="View" title="详情" width="85" @click="View(item)"/>
-          <main-button icon="Download" title="下载" width="85" @click="downFile(item)"/>
+          <main-button v-if="item.type === '1'" icon="Download" title="下载" width="85" @click="downFile(item)"/>
           <!--          <main-button icon="UploadFilled" title="同步" width="85"/>-->
           <main-button v-if='item.del' icon="Delete" title="删除" width="85" @click="removeFile(item)"/>
         </div>
@@ -95,17 +104,35 @@ export default {
     return {
       files: [],
       showImage: false,
-      imgList: []
+      imgList: [],
+      query: null
     }
   },
+  created () {
+    this.query = this.$route.query
+  },
   methods: {
     View (item) {
-      if (['png', 'jpg'].includes(item.suffix)) {
-        this.showImage = true
-        this.imgList.push(item.url)
-        return
+      if (item.type === '1') {
+        if (['png', 'jpg'].includes(item.suffix)) {
+          this.showImage = true
+          this.imgList.push(item.url)
+          return
+        }
+        this.$router.push('/home/file_detail?id=' + item.fileId)
+      } else if (item.type === '2') {
+        this.query.id = item.id
+        this.$router.push({
+          path: '/home/files',
+          query: {
+            id: item.id,
+            projectId: this.query.projectId,
+            projectStageId: this.query.projectStageId,
+            dictKey: this.query.dictKey,
+            parentId: item.id
+          }
+        })
       }
-      this.$router.push('/home/file_detail?id=' + item.fileId)
     },
     downFile (item) {
       window.open(item.url, '')

+ 5 - 4
src/views/home/component/folder_info.vue

@@ -27,12 +27,14 @@
         </div>
       </div>
       <div class="flex flex-center mr-5 " style="flex: 1.2">
-        <base-button v-if='permissions.permissions.home_folder_new' icon="Plus" title="添加文件夹" type="0" @click="addShow = true"/>
-<!--        <base-button v-if='permissions.permissions.home_folders_apply' class="ml-10" icon="User" title="批量授权"/>-->
+        <base-button v-if='permissions.permissions.home_folder_new' icon="Plus" title="添加文件夹" type="0"
+                     @click="addShow = true"/>
+        <!--        <base-button v-if='permissions.permissions.home_folders_apply' class="ml-10" icon="User" title="批量授权"/>-->
       </div>
     </div>
     <div class="mt-20">
-      <folder-list :folder="folderList" :total="total" :project-id='id' :owner-id='data.createUser'  @delFolder="getFolderList"/>
+      <folder-list :folder="folderList" :total="total" :project-id='id' :owner-id='data.createUser' :dict-key="dictKey"
+                   @delFolder="getFolderList"/>
     </div>
     <el-dialog v-model='addShow' append-to-body width='40%'>
       <div class="flex flex-col">
@@ -75,7 +77,6 @@
 import baseButton from '../../../components/base-button.vue'
 import folderList from './folder_list.vue'
 import permissionStore from '@/store/permission.js'
-import { useStore } from '@/store/user.js'
 
 export default {
   name: 'right2',

+ 24 - 10
src/views/home/component/folder_list.vue

@@ -18,11 +18,16 @@
         <span style="flex: 1">{{ item.updateTime }}</span>
         <span style="flex: 1.5">{{ item.fileNumber }}</span>
         <div class="flex flex-center" style="flex: 3">
-          <main-button v-if='[1,2].includes(item.isAccess)' icon="View" title="详情" width="85" @click="fileView(item)"/>
-          <main-button v-if='permissions.permissions.home_folder_add  && item.isAccess === 2 ' icon="Upload" title="上传文件" width="85" @click="uploadFiles(item)"/>
-          <main-button v-if="permissions.permissions.home_folder_authorize" icon="Pointer" title="授权操作" width="85" @click='getFileList(item)'/>
-          <main-button v-if="permissions.permissions.home_folder_apply && item.isAccess === 3" icon="Position" title="授权申请" width="85" @click="folderApply(item)"/>
-          <main-button v-if="permissions.permissions.home_folder_del" icon="Delete" title="删除" width="85" @click="folderRemove(item)"/>
+          <main-button v-if='[1,2].includes(item.isAccess)' icon="View" title="详情" width="85"
+                       @click="fileView(item)"/>
+          <main-button v-if='permissions.permissions.home_folder_add  && item.isAccess === 2 ' icon="Upload"
+                       title="上传文件" width="85" @click="uploadFiles(item)"/>
+          <main-button v-if="permissions.permissions.home_folder_authorize" icon="Pointer" title="授权操作" width="85"
+                       @click='getFileList(item)'/>
+          <main-button v-if="permissions.permissions.home_folder_apply && item.isAccess === 3" icon="Position"
+                       title="授权申请" width="85" @click="folderApply(item)"/>
+          <main-button v-if="permissions.permissions.home_folder_del" icon="Delete" title="删除" width="85"
+                       @click="folderRemove(item)"/>
         </div>
       </div>
     </div>
@@ -52,7 +57,8 @@
           </el-button>
         </div>
       </template>
-      <authorize :list='fileData.records' :folder-id='currentRow.fileFolderId' :project-id='projectId' @close='authorizeShow = false'/>
+      <authorize :list='fileData.records' :folder-id='currentRow.fileFolderId' :project-id='projectId'
+                 @close='authorizeShow = false'/>
     </el-dialog>
     <el-dialog v-model='sendMsg' top='20%' width='400px'>
       <div class="flex flex-col flex-center">
@@ -63,10 +69,11 @@
         </div>
       </div>
     </el-dialog>
-<!--    申请授权-->
+    <!--    申请授权-->
     <el-dialog title='申请授权' v-model='applyShow' width='30%'>
       <div class='full-width flex flex-center flex-col'>
-        <text class='full-width black text-left font-14 bold'>确认向业主申请{{currentFolder.folderName}}的管理权限?</text>
+        <text class='full-width black text-left font-14 bold'>确认向业主申请{{ currentFolder.folderName }}的管理权限?
+        </text>
         <div class='full-width flex flex-align-center mt-20'>
           <span class='font-14 bold'>授权时长</span>
           <el-date-picker
@@ -82,7 +89,7 @@
         <el-divider/>
         <div class='full-width flex flex-center'>
           <el-button type='danger' plain>取 消</el-button>
-          <el-button type='primary' @click='submit' >确 定</el-button>
+          <el-button type='primary' @click='submit'>确 定</el-button>
         </div>
       </div>
     </el-dialog>
@@ -105,6 +112,7 @@ export default {
     return { permissions, user }
   },
   props: {
+    dictKey: String,
     folder: Array,
     total: String,
     projectId: String,
@@ -150,7 +158,13 @@ export default {
       if (this.type === 0) {
         this.$router.push({
           path: '/home/files',
-          query: { id: item.fileFolderId, projectId: this.projectId, ownerId: this.ownerId }
+          query: {
+            id: item.fileFolderId,
+            projectId: this.projectId,
+            ownerId: this.ownerId,
+            dictKey: this.dictKey,
+            projectStageId: item.projectStageId
+          }
         })
       } else {
         this.$router.push({

+ 6 - 6
src/views/home/track.vue

@@ -9,7 +9,7 @@
           <!------tab------>
           <div class="flex flex-center mt-15 full-width mb-20">
             <div class="flex flex-center" style="flex: 3">
-              <div v-for="(item,index) in tab" class="flex flex-center tab">
+              <div v-for="(item,index) in tab" :key="item.id" class="flex flex-center tab">
                 <div :class="active === index ? 'tab-active' : ''"
                      @click="change(index)">{{ item.name }}
                 </div>
@@ -37,15 +37,15 @@ name:'跟踪审计',
 </route>
 
 <script>
-import leftBar from "./component/left_bar.vue";
+import leftBar from './component/left_bar.vue'
 import folder_list from './component/folder_list.vue'
 import files_list from './component/files_list.vue'
 import baseButton from '../../components/base-button.vue'
 
 export default {
-  name: "track",
-  components: {leftBar, folder_list, files_list, baseButton},
-  data() {
+  name: 'track',
+  components: { leftBar, folder_list, files_list, baseButton },
+  data () {
     return {
       type: 1,
       active: 0,
@@ -66,7 +66,7 @@ export default {
     }
   },
   methods: {
-    change(index) {
+    change (index) {
       this.active = index
     }
   }

この差分においてかなりの量のファイルが変更されているため、一部のファイルを表示していません