|
@@ -71,6 +71,92 @@ export function calcObject(viewModel, paramObject) {
|
|
|
}
|
|
|
|
|
|
/**
|
|
|
+ * 用于任意组件 Ext.Component 构造时,获取当前组件对应的表格(如果不是 grid.columns 对象就会返回 undefined)
|
|
|
+ * @param config 组件构造函数传入的 config 配置文件
|
|
|
+ */
|
|
|
+export function getParentGrid(config) {
|
|
|
+ return config.$initParent?.grid
|
|
|
+}
|
|
|
+
|
|
|
+/**
|
|
|
+ * 动态的为 combo 或 columns.combo 设置下拉框的值
|
|
|
+ * @param sender 目标对象
|
|
|
+ * @param config 目标对象的配置(在构造函数之前也可以)
|
|
|
+ * @param getDictFn 获取字典的方法
|
|
|
+ * @param bizKey 传入字典的参数
|
|
|
+ */
|
|
|
+export function setComboStore(sender, config, getDictFn, bizKey) {
|
|
|
+
|
|
|
+ if (sender.$className === 'Ext.form.field.ComboBox') {
|
|
|
+ getDictFn(bizKey, (r) => {
|
|
|
+ if (sender.el?.dom) {
|
|
|
+ // 异步回传
|
|
|
+ sender.setStore(new Ext.data.Store(r))
|
|
|
+ } else {
|
|
|
+ // 同步回传
|
|
|
+ config.store = new Ext.data.Store(r)
|
|
|
+ }
|
|
|
+ })
|
|
|
+ return
|
|
|
+
|
|
|
+ } else if (sender.xtype === 'gridcolumn') {
|
|
|
+ const grid = getParentGrid(config)
|
|
|
+ const {editor, renderer} = config
|
|
|
+ getDictFn(bizKey, (r) => {
|
|
|
+ if (sender.rendered) {
|
|
|
+ // 已经渲染出来了, 用方法进行修改
|
|
|
+ const editor = sender.getEditor()
|
|
|
+ if (editor.xtype === 'combo') {
|
|
|
+ const valueField = r.field[0]
|
|
|
+ const displayField = r.field[1]
|
|
|
+ editor.valueField = valueField
|
|
|
+ editor.setDisplayField(displayField)
|
|
|
+ editor.setStore(new Ext.data.Store({
|
|
|
+ field: ['id', 'text'],
|
|
|
+ data: [
|
|
|
+ {id: "Y", text: "启用"},
|
|
|
+ {id: "N", text: "禁用"},
|
|
|
+ {id: "D", text: "删除"},
|
|
|
+ ]
|
|
|
+ }))
|
|
|
+ }
|
|
|
+
|
|
|
+ } else {
|
|
|
+ // 没有渲染之前,修改 config 即可
|
|
|
+ if (editor && editor.xtype === 'combo') {
|
|
|
+ // 带编辑模式
|
|
|
+ editor.store = new Ext.data.Store(r)
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ const renderer = (value, metaData) => {
|
|
|
+ const valueField = r.field[0]
|
|
|
+ const displayField = r.field[1]
|
|
|
+ _.each(r.data, row => {
|
|
|
+ // 从 valueField 找到要显示的 displayField
|
|
|
+ if (row[valueField] === value) {
|
|
|
+ value = row[displayField]
|
|
|
+ return false
|
|
|
+ }
|
|
|
+ })
|
|
|
+
|
|
|
+ return value
|
|
|
+ }
|
|
|
+
|
|
|
+ if (sender.rendered) {
|
|
|
+ // 已经渲染出来了, 对列进行渲染
|
|
|
+ sender.renderer = renderer
|
|
|
+ sender.getView().refresh()
|
|
|
+ } else {
|
|
|
+ config.renderer = renderer
|
|
|
+ }
|
|
|
+ })
|
|
|
+ return
|
|
|
+ }
|
|
|
+ throw new TypeError("无法识别的组件类型")
|
|
|
+}
|
|
|
+
|
|
|
+/**
|
|
|
* 调用服务器 Ajax
|
|
|
*/
|
|
|
export function invokeServer(url: string, ...args: any[]) {
|