应用库搜索优化
This commit is contained in:
		| @@ -10,8 +10,8 @@ | ||||
|       </template> | ||||
|     </ai-search-bar> | ||||
|     <ai-table :tableData="tableData" :total="page.total" :current.sync="page.current" :colConfigs="columns" | ||||
|               :size.sync="page.size" border @getList="getTableData" tableSize="mini" :dict="dict"> | ||||
|       <el-table-column slot="chb" width="100px"> | ||||
|               :size.sync="page.size" @getList="getTableData" tableSize="mini" :dict="dict" v-bind="$attrs"> | ||||
|       <el-table-column slot="chb" width="100px" v-if="!disabled"> | ||||
|         <template #header> | ||||
|           <el-checkbox v-if="multiple" v-model="selectAll" @change="handleCheckAll"/> | ||||
|         </template> | ||||
| @@ -46,7 +46,9 @@ export default { | ||||
|     }, | ||||
|     nodeKey: {default: "id"}, | ||||
|     searchKey: {default: "name"}, | ||||
|     multiple: Boolean | ||||
|     multiple: Boolean, | ||||
|     disabled: Boolean, | ||||
|     meta: {default: () => []} | ||||
|   }, | ||||
|   data() { | ||||
|     return { | ||||
| @@ -73,25 +75,31 @@ export default { | ||||
|   }, | ||||
|   methods: { | ||||
|     getTableData() { | ||||
|       let {page, search, action, nodeKey} = this | ||||
|       this.instance?.post(action, null, { | ||||
|       const {page, search, action, meta, searchKey, dict} = this | ||||
|       if (meta.length > 0) { | ||||
|         const reg = new RegExp(search[searchKey]) | ||||
|         this.handleTableData(meta.filter(e => reg.test(e.label) || reg.test(e.name) || reg.test(dict.getLabel('appsCategory', e.category)))) | ||||
|       } else this.instance?.post(action, null, { | ||||
|         params: {...page, ...search} | ||||
|       }).then(res => { | ||||
|         if (res?.data) { | ||||
|           const list = res.data.records || res.data || [] | ||||
|           list.map(e => { | ||||
|             e.category = e.libPath.replace(/^\/[^\/]+\/([^\/]+)\/.+/, '$1') | ||||
|             if (/\/project\//.test(e.libPath)) { | ||||
|               e.project = e.libPath.replace(/.*project\/([^\/]+)\/.+/, '$1') | ||||
|             } else if (/\/core\//.test(e.libPath)) { | ||||
|               e.project = "core" | ||||
|             } else e.project = "standard" | ||||
|           }) | ||||
|           this.tableData = list.map(e => ({...e, checked: this.selected.includes(e[nodeKey])})) | ||||
|           this.page.total = res.data.total | ||||
|           this.handleTableData(res.data.records || res.data || []) | ||||
|         } | ||||
|       }) | ||||
|     }, | ||||
|     handleTableData(list) { | ||||
|       const {nodeKey} = this | ||||
|       list.map(e => { | ||||
|         e.category = e.libPath.replace(/^\/[^\/]+\/([^\/]+)\/.+/, '$1') | ||||
|         if (/\/project\//.test(e.libPath)) { | ||||
|           e.project = e.libPath.replace(/.*project\/([^\/]+)\/.+/, '$1') | ||||
|         } else if (/\/core\//.test(e.libPath)) { | ||||
|           e.project = "core" | ||||
|         } else e.project = "standard" | ||||
|       }) | ||||
|       this.tableData = list.map(e => ({...e, checked: this.selected.includes(e[nodeKey])})) | ||||
|     }, | ||||
|     handleCheck(row) { | ||||
|       const {nodeKey} = this | ||||
|       if (this.multiple) { | ||||
|   | ||||
| @@ -34,7 +34,7 @@ | ||||
|               <ai-card title="主库应用"> | ||||
|                 <template #content> | ||||
|                   <ai-lib-table v-if="form.type" v-model="form.apps" v-bind="$props" multiple searchKey="name" | ||||
|                                 :action="`/node/wechatapps/list?type=${form.type}&isMain=1`"/> | ||||
|                                 :action="`/node/wechatapps/list?type=${form.type}&isMain=1`" border/> | ||||
|                   <ai-empty v-else>请先选择系统类型</ai-empty> | ||||
|                 </template> | ||||
|               </ai-card> | ||||
| @@ -48,7 +48,7 @@ | ||||
|             </el-form> | ||||
|           </el-tab-pane> | ||||
|           <el-tab-pane label="方案应用" lazy> | ||||
|             <ai-table :tableData="appList" :colConfigs="colConfigs" :isShowPagination="false" :dict="dict"/> | ||||
|             <ai-lib-table :meta="appList" :isShowPagination="false" v-bind="$props" disabled/> | ||||
|           </el-tab-pane> | ||||
|         </el-tabs> | ||||
|       </template> | ||||
| @@ -95,12 +95,6 @@ export default { | ||||
|         customPath: {required: true, message: "请输入"}, | ||||
|         extra: {required: true, message: "请设置主页配置"}, | ||||
|       }, | ||||
|       colConfigs: [ | ||||
|         {prop: 'label', label: "应用名称"}, | ||||
|         {prop: 'project', label: "项目/框架"}, | ||||
|         {prop: 'category', label: "分类", dict: "appsCategory"}, | ||||
|         {prop: 'name', label: "模块名"}, | ||||
|       ] | ||||
|     } | ||||
|   }, | ||||
|   methods: { | ||||
|   | ||||
		Reference in New Issue
	
	Block a user