diff --git a/src/main/java/com/rebuild/web/admin/entityhub/ViewAddonsControll.java b/src/main/java/com/rebuild/web/admin/entityhub/ViewAddonsControll.java index 47696e180..dd873bd70 100644 --- a/src/main/java/com/rebuild/web/admin/entityhub/ViewAddonsControll.java +++ b/src/main/java/com/rebuild/web/admin/entityhub/ViewAddonsControll.java @@ -95,10 +95,10 @@ public class ViewAddonsControll extends BaseControll implements PortalsConfigura if (e.getMasterEntity() != null) { continue; } - refs.add(new String[] { e.getName(), EasyMeta.getLabel(e) }); } - +// refs.add(new String[] { "Feeds", "跟进" }); // 动态-跟进 + JSON ret = JSONUtils.toJSONObject( new String[] { "config", "refs" }, new Object[] { config == null ? null : config.getJSON("config"), refs }); diff --git a/src/main/resources/metadata-conf.xml b/src/main/resources/metadata-conf.xml index 1627a5505..b8666a489 100644 --- a/src/main/resources/metadata-conf.xml +++ b/src/main/resources/metadata-conf.xml @@ -334,7 +334,7 @@ - + diff --git a/src/main/webapp/assets/css/view-page.css b/src/main/webapp/assets/css/view-page.css index 9e08eab0c..76e373eda 100644 --- a/src/main/webapp/assets/css/view-page.css +++ b/src/main/webapp/assets/css/view-page.css @@ -137,11 +137,6 @@ body { margin-bottom: 9px; } -.related-list .card .float-right { - color: #aaa; - cursor: help; -} - .view-operating { padding-left: 30px; } diff --git a/src/main/webapp/assets/js/rb-datalist.jsx b/src/main/webapp/assets/js/rb-datalist.jsx index d71b0dd30..da6a4ed3b 100644 --- a/src/main/webapp/assets/js/rb-datalist.jsx +++ b/src/main/webapp/assets/js/rb-datalist.jsx @@ -46,7 +46,12 @@ class RbList extends React.Component { {this.props.uncheckbox !== true && -
+
+ +
} {this.state.fields.map((item) => { let cWidth = (item.width || that.__defaultColumnWidth) diff --git a/src/main/webapp/assets/js/rb-view.jsx b/src/main/webapp/assets/js/rb-view.jsx index 07bc08bd7..2f595a4ac 100644 --- a/src/main/webapp/assets/js/rb-view.jsx +++ b/src/main/webapp/assets/js/rb-view.jsx @@ -205,10 +205,53 @@ class SelectReport extends React.Component { return } let that = this - renderRbcomp(, null, function () { - that.__cached = this + renderRbcomp(, null, function () { that.__cached = this }) + } +} + +// ~ 相关项列表 +class RelatedList extends React.Component { + state = { ...this.props } + + render() { + let _list = this.state.list || [] + return
+ {!this.state.list && } + {(this.state.list && this.state.list.length === 0) &&

暂无相关数据

} + {_list.map((item) => { + return
+
+
+ {item[1]} +
+
+ {item[2]} +
+
+
+ })} + {this.state.showMores + &&
} +
+ } + + componentDidMount = () => this.loadList() + loadList(plus) { + this.__pageNo = this.__pageNo || 1 + if (plus) this.__pageNo += plus + const pageSize = 20 + $.get(`${rb.baseUrl}/app/entity/related-list?masterId=${this.props.master}&related=${this.props.entity}&pageNo=${this.__pageNo}&pageSize=${pageSize}`, (res) => { + let _data = res.data.data || [] + let _list = this.state.list || [] + _list = _list.concat(_data) + this.setState({ list: _list, showMores: _data.length >= pageSize }) }) } + + _handleView = (e) => { + e.preventDefault() + RbViewPage.clickView(e.currentTarget) + } } // 视图页操作类 @@ -296,90 +339,48 @@ const RbViewPage = { }, // 相关项 + + // 列表 initVTabs(config) { let that = this - let rs = [] + that.__vtabEntities = [] $(config).each(function () { let entity = this[0] - $('').appendTo('.nav-tabs') - let rl = $('
').appendTo('.tab-content') - rs.push(this[0]) - - let mores = $('
').appendTo(rl) - rl = rl.find('.related-list') - mores.find('.btn').on('click', function () { - let pno = ~~($(this).attr('data-pno') || 1) + 1 - $(this).attr('data-pno', pno) - that.renderRelatedGrid(rl, entity, pno) + that.__vtabEntities.push(entity) + let tabId = 'tab-' + entity + let tabNav = $('').appendTo('.nav-tabs') + let tabPane = $('
').appendTo('.tab-content') + tabNav.find('a').click(function () { + tabPane.find('.related-list').length === 0 && renderRbcomp(, tabPane) }) }) - this.__vtab_es = rs - - $('.nav-tabs li>a').on('click', function (e) { - e.preventDefault() - let $this = $(this) - let clickAgent = $this.attr('href') !== '#tab-rbview' && $(this).hasClass('show') - clickAgent = false - $this.tab('show') - - let pane = $($this.attr('href')).find('.related-list') - if (pane.hasClass('rb-loading-active') || clickAgent) { - ReactDOM.render(, pane[0]) - that.renderRelatedGrid(pane, $this.attr('href').substr(5)) - } - }) - - $('.J_view-addons').click(function () { - let type = $(this).data('type') - RbModal.create(`${rb.baseUrl}/p/admin/entityhub/view-addons?entity=${that.__entity[0]}&type=${type}`, '配置' + (type === 'TAB' ? '显示项' : '新建项')) - }) - this.updateVTabs() - }, - // 更新相关项记录数量 - updateVTabs(es) { - es = es || this.__vtab_es - if (!es || es.length === 0) return - $.get(rb.baseUrl + '/app/entity/related-counts?masterId=' + this.__id + '&relateds=' + es.join(','), function (res) { - for (let k in res.data) { - if (~~res.data[k] > 0) { - let tab = $('.nav-tabs a[href="#tab-' + k + '"]') - if (tab.find('.badge').length > 0) tab.find('.badge').text(res.data[k]) - else $('' + res.data[k] + '').appendTo(tab) - } - } - }) - }, - - // 加载相关项 - renderRelatedGrid(el, related, page) { - page = page || 1 - let psize = 20 - $.get(rb.baseUrl + '/app/entity/related-list?masterId=' + this.__id + '&related=' + related + '&pageNo=' + page + '&pageSize=' + psize, function (res) { - el.removeClass('rb-loading-active') - let _data = res.data.data - if (page === 1) { - el = el[0] - ReactDOM.unmountComponentAtNode(el) - if (!_data || _data.length === 0) { - ReactDOM.render(

暂无数据

, el) - return - } - } - - $(_data).each(function () { - let h = '#!/View/' + related + '/' + this[0] - $('
' + this[2] + '
').appendTo(el) + // for Admin + if (rb.isAdminUser) { + $('.J_view-addons').click(function () { + let type = $(this).data('type') + RbModal.create(`${rb.baseUrl}/p/admin/entityhub/view-addons?entity=${that.__entity[0]}&type=${type}`, '配置' + (type === 'TAB' ? '显示项' : '新建项')) }) + } + }, - let mores = $(el).next('.load-mores') - if (_data.length >= psize) mores.removeClass('hide') - else mores.find('.btn').attr({ disabled: true }).text('已加载全部') + // 记录数量 + updateVTabs(specEntities) { + specEntities = specEntities || this.__vtabEntities + if (!specEntities || specEntities.length === 0) return + $.get(`${rb.baseUrl}/app/entity/related-counts?masterId=${this.__id}&relateds=${specEntities.join(',')}`, function (res) { + for (let k in (res.data || {})) { + if (~~res.data[k] > 0) { + let tabNav = $('.nav-tabs a[href="#tab-' + k + '"]') + if (tabNav.find('.badge').length > 0) tabNav.find('.badge').text(res.data[k]) + else $('' + res.data[k] + '').appendTo(tabNav) + } + } }) }, - // 新建相关 + // 新建 initVAdds(config) { let that = this $(config).each(function () { diff --git a/src/main/webapp/general-entity/record-view.jsp b/src/main/webapp/general-entity/record-view.jsp index 14aa93740..c9a1f188d 100644 --- a/src/main/webapp/general-entity/record-view.jsp +++ b/src/main/webapp/general-entity/record-view.jsp @@ -22,7 +22,7 @@