Browse Source

容器文件筛选

Alfyn 5 days ago
parent
commit
ce96e3d445
3 changed files with 96 additions and 35 deletions
  1. 0 1
      src/permission.js
  2. 56 26
      src/views/document/comp/searchFileOrFolder.vue
  3. 40 8
      src/views/document/dashboard.vue

+ 0 - 1
src/permission.js

@@ -122,7 +122,6 @@ router.beforeEach(async (to, from, next) => {
       if (window.location.href.startsWith('http://localhost')) {
         next({ path: '/user/login' })
       } else {
-        console.log(to);
         if(to.fullPath !== '/'){
           window.location.href = `https://dev.autocde.com/login?redirect=${to.fullPath}`
         }else{

+ 56 - 26
src/views/document/comp/searchFileOrFolder.vue

@@ -2,37 +2,43 @@
   <a-form layout="inline">
     <a-row>
       <a-form-item :label="$t('global.Name')">
-        <a-input placeholder="Search File or Folder" v-model="formInline.Name"></a-input>
+        <a-input placeholder="Search File or Folder" v-model="formInline.name"></a-input>
       </a-form-item>
       <template v-if="!type">
-        <a-form-item :label="$t('namingRule.Doc-Stage')">
-          <a-input v-model="formInline.doc_stage"></a-input>
-        </a-form-item>
-        <a-form-item :label="$t('namingRule.Doc-Type')">
-          <a-input v-model="formInline.doc_type"></a-input>
+        <a-form-item v-for="dictionaryItem in dictionary" :key="dictionaryItem.key" :label="dictionaryItem.key" >
+          <a-select placeholder="please select" style="width: 250px" v-model="formInline[dictionaryItem.key]" allowClear mode="multiple"  :maxTagCount='2'>
+            <a-select-option v-for="(item, i) in dictionaryItem.options" :key="i" :value="item.value">{{
+              item.lang.en
+            }}</a-select-option>
+          </a-select>
         </a-form-item>
         <a-form-item :label="$t('global.Name-Rule')">
-          <a-input v-model="formInline.naming_rule"></a-input>
+          <a-select :placeholder="$t('global.Placeholder-select')" style="width: 250px" v-model="formInline.naming_rule_id" allowClear mode="multiple" :maxTagCount='2'> 
+            <a-select-option v-for="item in namingRuleTable" :key="item.id" :value="item.id">{{
+              item.name
+            }}</a-select-option>
+          </a-select>
         </a-form-item>
       </template>
       <a-form-item>
-      <div class="flex-start">
-        <a @click="type = !type" style="margin-right: 20px">
-          {{ type ? $t('global.Expand') : $t('global.Collapse') }}
-          <a-icon type="down" v-if="type" />
-          <a-icon type="up" v-else />
-        </a>
-        <span>
-          <a-button type="primary">{{ $t('global.Search') }}</a-button>
-          <a-button style="margin-left: 8px">{{ $t('global.Reset') }}</a-button>
-        </span>
-      </div>
-       </a-form-item>
+        <div class="flex-start">
+          <a @click="type = !type" style="margin-right: 20px">
+            {{ type ? $t('global.Expand') : $t('global.Collapse') }}
+            <a-icon type="down" v-if="type" />
+            <a-icon type="up" v-else />
+          </a>
+          <span>
+            <a-button type="primary" @click="handleSubmit">{{ $t('global.Search') }}</a-button>
+            <a-button style="margin-left: 8px" @click="handleReset">{{ $t('global.Reset') }}</a-button>
+          </span>
+        </div>
+      </a-form-item>
     </a-row>
   </a-form>
 </template>
 
 <script>
+import { enabledDictionaryList, customFieldt } from '@/api/setting'
 export default {
   name: 'searchFileOrFolder',
   props: {},
@@ -40,21 +46,45 @@ export default {
   data() {
     return {
       formInline: {
-        Name: '',
-        doc_stage: '',
-        doc_type: '',
-        naming_rule: '',
+        name: '',
       },
       type: true,
+      dictionary: null,
+      namingRuleTable: null,
     }
   },
-  created() {},
+  created() {
+    this.getTaskList()
+    this.getNamingRuleList()
+  },
   methods: {
     handleSubmit(e) {
-      console.log(this.formInline)
+      this.$emit('SearchFile',this.formInline)
+    },
+    handleReset(){
+      this.formInline = {
+        name: '',
+      }
+      this.$emit('SearchFile',null)
+    },
+    //字典
+    getTaskList() {
+      customFieldt({ group: 'Folder' }).then((res) => {
+        this.dictionary = res.data
+      })
+    },
+    //命名规则
+    getNamingRuleList() {
+      enabledDictionaryList().then((res) => {
+        this.namingRuleTable = res.data
+      })
     },
   },
 }
 </script>
 
-<style lang="less" scoped></style>
+<style lang="less" scoped>
+/deep/.ant-select-selection--multiple .ant-select-selection__choice{
+  max-width: 31%;
+}
+</style>

+ 40 - 8
src/views/document/dashboard.vue

@@ -325,7 +325,7 @@
                     </a-space>
                   </a>
                   <template v-if="currentType == 'container'">
-                    <searchFileOrFolder/>
+                    <searchFileOrFolder @SearchFile="SearchFile"/>
                   </template>
                   <div v-if="show == 'transverse'">
                     <a-table
@@ -1379,7 +1379,6 @@ export default {
       folderId: null,
       folderObj: {},
       folderList: [],
-      order_by: 'desc',
       searchVisible: false,
       searchName: null,
       searchColumns: [
@@ -1762,6 +1761,8 @@ export default {
       folderNamingRuleForm: {
         naming_rule_id: undefined,
       },
+      //容器筛选
+      filterParams:null,
     }
   },
   computed: {
@@ -2407,7 +2408,8 @@ export default {
         const params = {
           object_type: obj.type,
           object_id: obj.id,
-          order_by: this.order_by,
+          order_by_column: 'updated_at',
+          order_by_direction: 'desc',
           page: 1,
           page_size: 10,
         }
@@ -2495,7 +2497,8 @@ export default {
       if (obj.isEnd === undefined || obj.isEnd === true) {
         const params = {
           id: obj.id,
-          order_by: this.order_by,
+          order_by_column: 'updated_at',
+          order_by_direction: 'desc',
           page: 1,
           page_size: 10,
         }
@@ -3111,7 +3114,8 @@ export default {
       const params = {
         object_type: this.containerObj.type,
         object_id: this.containerObj.id,
-        order_by: this.order_by,
+        order_by_column: 'updated_at',
+        order_by_direction: 'desc',
         page: 1,
         page_size: 10,
       }
@@ -3768,7 +3772,8 @@ export default {
       } else if (this.rightTitleId === 'Folders And Files') {
         const params = {
           id: this.folderObj.id,
-          order_by: this.order_by,
+          order_by_column: 'updated_at',
+          order_by_direction: 'desc',
           page: current,
           page_size: 10,
         }
@@ -3778,13 +3783,17 @@ export default {
           this.spinning = false
         })
       } else if (this.rightTitleId === 'Container') {
-        const params = {
+        let params = {
           object_type: this.containerObj.type,
           object_id: this.containerObj.id,
-          order_by: this.order_by,
+          order_by_column: 'updated_at',
+          order_by_direction: 'desc',
           page: current,
           page_size: 10,
         }
+        if(this.filterParams){
+          params = {...params,...this.filterParams}
+        }
         docContainerFolderOpen(params).then((res) => {
           this.docTable = [...res.data.folders, ...res.data.files]
           this.total = res.data.total
@@ -3884,6 +3893,29 @@ export default {
       this.approvalFileList = [...this.approvalFileList, file]
       return false
     },
+    //容器筛选
+    SearchFile(filterParams){
+      this.filterParams = filterParams
+      this.current = 1
+      let params = {
+        object_type: 'container',
+        object_id: this.containerObj.id,
+        order_by_column: 'updated_at',
+        order_by_direction: 'desc',
+        page: 1,
+        page_size: 10,
+      }
+      params = {...params,...filterParams}
+      docContainerFolderOpen(params).then((res) => {
+        this.docTable = []
+        this.folderList = res.data.folders
+        this.docTable = [...res.data.folders, ...res.data.files]
+        this.folder_parent_id = res.data.folder_parent_id
+        this.folder_parent_name = res.data.folder_parent_name
+        this.total = res.data.total
+        this.parseObj = res.object
+      })
+    }
   },
 }
 </script>