diff --git a/web/src/components/foreign-key-crud-form/demo.png b/web/src/components/foreign-key-crud-form/demo.png new file mode 100644 index 0000000..c7af991 Binary files /dev/null and b/web/src/components/foreign-key-crud-form/demo.png differ diff --git a/web/src/components/foreign-key-crud-form/foreign-key-crud-form.vue b/web/src/components/foreign-key-crud-form/foreign-key-crud-form.vue new file mode 100644 index 0000000..264aa5a --- /dev/null +++ b/web/src/components/foreign-key-crud-form/foreign-key-crud-form.vue @@ -0,0 +1,200 @@ + + + + + {{ elProps.index.name }} + + + {{ elProps.fields[key].name }} + + + 操作 + + + + + + + {{index+1}} + + + + + + + + + + + + + + + + + + + + + + + 新增 + + + + + + diff --git a/web/src/components/foreign-key-crud-form/group.js b/web/src/components/foreign-key-crud-form/group.js new file mode 100644 index 0000000..342e1af --- /dev/null +++ b/web/src/components/foreign-key-crud-form/group.js @@ -0,0 +1,19 @@ +export default { + // 字段类型配置,注册之后即可在crud.js中使用了 + 'foreign-key-crud-form': { + // 行组件配置 + form: { component: { name: 'foreign-key-crud-form', props: { color: 'danger' } } }, + component: { + name: 'values-popover', + props: { + elProps: { + type: 'list', + rowKey: 'name' + } + } + }, + // 行展示时居中 + align: 'center' + // 您还可以写更多默认配置 + } +} diff --git a/web/src/components/foreign-key-crud-form/index.js b/web/src/components/foreign-key-crud-form/index.js new file mode 100644 index 0000000..164688a --- /dev/null +++ b/web/src/components/foreign-key-crud-form/index.js @@ -0,0 +1,15 @@ +import { d2CrudPlus } from 'd2-crud-plus' +import group from './group' + +function install (Vue, options) { + Vue.component('foreign-key-crud-form', () => import('./foreign-key-crud-form')) + if (d2CrudPlus != null) { + // 注册字段类型`demo-extend` + d2CrudPlus.util.columnResolve.addTypes(group) + } +} + +// 导出install, 通过`vue.use(D2pDemoExtend)`安装后 ,`demo-extend` 就可以在`crud.js`中使用了 +export default { + install +} diff --git a/web/src/components/index.js b/web/src/components/index.js index 1b305be..756fcdd 100644 --- a/web/src/components/index.js +++ b/web/src/components/index.js @@ -5,6 +5,7 @@ import tableProgress from './table-progress/lib/table-progress.vue' import cardSelect from '@/components/card-select/index' import selectorTable from '@/components/selector-table/index' import valuesPopover from '@/components/values-popover/index' +import foreignKeyCrudForm from '@/components/foreign-key-crud-form/index' // 注意 有些组件使用异步加载会有影响 Vue.component('d2-container', d2Container) Vue.component('d2-icon', () => import('./d2-icon')) @@ -19,3 +20,4 @@ Vue.component('table-progress', tableProgress) Vue.use(selectorTable) Vue.use(cardSelect) Vue.use(valuesPopover) +Vue.use(foreignKeyCrudForm) diff --git a/web/src/components/values-popover/values-popover.vue b/web/src/components/values-popover/values-popover.vue index 436b31b..78b7bef 100644 --- a/web/src/components/values-popover/values-popover.vue +++ b/web/src/components/values-popover/values-popover.vue @@ -112,8 +112,17 @@ export default { }, getListData () { const params = {} - params[this.dict.value] = this.value + if (this.value.constructor === Array) { + const ids = [] + this.value.map(res => { + ids.push(res[this.dict.value]) + }) + params[this.dict.value] = ids + } else { + params[this.dict.value] = this.value + } params.query = `{${this.dict.value},${this.dict.label}}` + console.log(12, params) request({ url: this.dict.url, params: params }).then(ret => { this.data = ret.data.data || ret.data })