From b308877a14a8ae3bd249c39701884f9d438106db Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=9D=8E=E5=BC=BA?= <1206709430@qq.com> Date: Fri, 4 Nov 2022 15:51:11 +0800 Subject: [PATCH] =?UTF-8?q?=E5=8A=9F=E8=83=BD=E5=8F=98=E5=8C=96:=20?= =?UTF-8?q?=E4=BC=98=E5=8C=96=E7=94=A8=E6=88=B7=E7=AE=A1=E7=90=86=E4=B8=AD?= =?UTF-8?q?=E9=83=A8=E9=97=A8=E4=B8=8B=E6=8B=89=E6=97=A0=E6=95=B0=E6=8D=AE?= =?UTF-8?q?bug?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- web/src/components/index.js | 1 + web/src/components/tree-selector/README.md | 27 ++ web/src/components/tree-selector/index.js | 13 + .../tree-selector/lib/tree-selector.vue | 424 ++++++++++++++++++ web/src/components/tree-selector/types.js | 6 + web/src/config/d2p-extends/types.js | 4 + web/src/install.js | 7 +- web/src/views/system/user/crud.js | 2 +- 8 files changed, 479 insertions(+), 5 deletions(-) create mode 100644 web/src/components/tree-selector/README.md create mode 100644 web/src/components/tree-selector/index.js create mode 100644 web/src/components/tree-selector/lib/tree-selector.vue create mode 100644 web/src/components/tree-selector/types.js diff --git a/web/src/components/index.js b/web/src/components/index.js index 6f42469..8338d7a 100644 --- a/web/src/components/index.js +++ b/web/src/components/index.js @@ -9,4 +9,5 @@ Vue.component('d2-icon-svg', () => import('./d2-icon-svg/index.vue')) Vue.component('importExcel', () => import('./importExcel/index.vue')) Vue.component('foreignKey', () => import('./foreign-key/index.vue')) Vue.component('manyToMany', () => import('./many-to-many/index.vue')) +Vue.component('d2p-tree-selector', () => import('./tree-selector/lib/tree-selector.vue')) Vue.component('dept-format', () => import('./dept-format/lib/dept-format.vue')) diff --git a/web/src/components/tree-selector/README.md b/web/src/components/tree-selector/README.md new file mode 100644 index 0000000..6200316 --- /dev/null +++ b/web/src/components/tree-selector/README.md @@ -0,0 +1,27 @@ +## 树形选择组件 +示例地址:http://preview.d2-crud-plus.docmirror.cn/D2CrudPlusExample/index.html#/demo/form/area +### 1. 引入 +```javascript +// 先引入d2-crud,d2-crud-plus +// 参考 https://github.com/greper/d2-crud-plus/blob/master/packages/d2-crud-plus-example/src/business/lib/index.js +// 然后引入树形组件 +import { D2pTreeSelector } from 'd2p-extends' +Vue.use(D2pTreeSelector) +``` +### 2. crud +```javascript +export const crudOptions = { + columns: [ + { + title: '树形选择', + key: 'pcaTree', + type: 'tree-selector', + dict: {url:'xxx',isTree:true} + } + ] +} +``` +### 3. 效果 + http://preview.d2-crud-plus.docmirror.cn/D2CrudPlusExample/index.html#/demo/form/area + + diff --git a/web/src/components/tree-selector/index.js b/web/src/components/tree-selector/index.js new file mode 100644 index 0000000..c8d4db2 --- /dev/null +++ b/web/src/components/tree-selector/index.js @@ -0,0 +1,13 @@ +import { d2CrudPlus } from 'd2-crud-plus' +import types from './types' + +function install (Vue) { + Vue.component('d2p-tree-selector', () => import('./lib/tree-selector')) + if (d2CrudPlus != null) { + d2CrudPlus.util.columnResolve.addTypes(types) + } +} + +export default { + install +} diff --git a/web/src/components/tree-selector/lib/tree-selector.vue b/web/src/components/tree-selector/lib/tree-selector.vue new file mode 100644 index 0000000..8afb985 --- /dev/null +++ b/web/src/components/tree-selector/lib/tree-selector.vue @@ -0,0 +1,424 @@ + + + + + + + + + + + + + + + {{ getValueLabel(item) }} + + + + + + + + + + + + + + + + + + + + {{cancelText}} + {{confirmText}} + + + + + + + diff --git a/web/src/components/tree-selector/types.js b/web/src/components/tree-selector/types.js new file mode 100644 index 0000000..c2e1d2a --- /dev/null +++ b/web/src/components/tree-selector/types.js @@ -0,0 +1,6 @@ +export default { + 'tree-selector': { + form: { component: { name: 'd2p-tree-selector', props: { } } }, + component: { name: 'values-format', props: {} } + } +} diff --git a/web/src/config/d2p-extends/types.js b/web/src/config/d2p-extends/types.js index 1488415..593327a 100644 --- a/web/src/config/d2p-extends/types.js +++ b/web/src/config/d2p-extends/types.js @@ -147,5 +147,9 @@ export default { }) } } + }, + 'tree-selector': { + form: { component: { name: 'd2p-tree-selector', props: { } } }, + component: { name: 'values-format', props: {} } } } diff --git a/web/src/install.js b/web/src/install.js index 2fab2ec..0a42378 100644 --- a/web/src/install.js +++ b/web/src/install.js @@ -8,7 +8,6 @@ import { D2pFileUploader, D2pFullEditor, D2pIconSelector, - D2pTreeSelector, D2pUploader } from 'd2p-extends' // 源码方式引入,上传组件支持懒加载 // http请求 @@ -51,9 +50,9 @@ Vue.use(d2CrudPlus, { method: 'get' }).then(ret => { if (dict.isTree) { - return XEUtils.toArrayTree(ret.data.data, { parentKey: 'parent', strict: true }) + return XEUtils.toArrayTree(ret.data.data || ret.data, { parentKey: 'parent', strict: false }) } else { - return ret.data.data + return ret.data.data || ret.data } }) }, @@ -101,7 +100,7 @@ Vue.use(d2CrudPlus, { }) // 安装扩展插件 -Vue.use(D2pTreeSelector) +// Vue.use(D2pTreeSelector) Vue.use(D2pAreaSelector) Vue.use(D2pIconSelector) Vue.use(D2pFullEditor, { diff --git a/web/src/views/system/user/crud.js b/web/src/views/system/user/crud.js index 90c73b8..59939e4 100644 --- a/web/src/views/system/user/crud.js +++ b/web/src/views/system/user/crud.js @@ -179,7 +179,7 @@ export const crudOptions = (vm) => { minWidth: 140, type: 'tree-selector', dict: { - cache: false, + cache: true, isTree: true, url: '/api/system/dept/all_dept/', value: 'id', // 数据字典中value字段的属性名