|
@@ -1,3 +1,7 @@
|
|
|
+import _ from 'lodash'
|
|
|
+import {Lib, lookupScope} from './lib'
|
|
|
+import {ajax} from "./config";
|
|
|
+
|
|
|
/**
|
|
|
* 对某个表达式进行求值
|
|
|
* @param viewModel 数据对象
|
|
@@ -64,4 +68,180 @@ export function calcObject(viewModel, paramObject) {
|
|
|
viewModel,
|
|
|
{single: true})
|
|
|
})
|
|
|
+}
|
|
|
+
|
|
|
+/**
|
|
|
+ * 调用服务器 Ajax
|
|
|
+ */
|
|
|
+export function invokeServer(url: string, ...args: any[]) {
|
|
|
+ // @ts-ignore
|
|
|
+ return ajax.func({
|
|
|
+ url: url,
|
|
|
+ method: 'invoke',
|
|
|
+ args: args
|
|
|
+ })
|
|
|
+}
|
|
|
+
|
|
|
+export function clearViewModelValues(viewModel, propertyName) {
|
|
|
+ const dd = _.get(viewModel.getData(), propertyName)
|
|
|
+ _.forOwn(dd, (value, key) => {
|
|
|
+ viewModel.set(propertyName + '.' + key, '')
|
|
|
+ })
|
|
|
+}
|
|
|
+
|
|
|
+export function reloadGrid(scope, gridRefName) {
|
|
|
+ scope.refs[gridRefName]?.reload()
|
|
|
+}
|
|
|
+
|
|
|
+/**
|
|
|
+ * 将 Ext.data.Model 对象 (及子属性) 转换为 js.object 对象
|
|
|
+ */
|
|
|
+export function toPlainObject(obj) {
|
|
|
+ if (obj.isModel) {
|
|
|
+ obj = obj.data
|
|
|
+ }
|
|
|
+ _.forOwn(obj, (v, k) => {
|
|
|
+ // Ext.data.Model.constructor
|
|
|
+ if (!v) {
|
|
|
+ return
|
|
|
+ }
|
|
|
+
|
|
|
+ if (v.isModel) {
|
|
|
+ v = v.data
|
|
|
+ }
|
|
|
+
|
|
|
+ if (typeof v === 'object') {
|
|
|
+ obj[k] = toPlainObject(v)
|
|
|
+ } else {
|
|
|
+ obj[k] = v
|
|
|
+ }
|
|
|
+ })
|
|
|
+ return obj
|
|
|
+}
|
|
|
+
|
|
|
+class SystemEventFu {
|
|
|
+
|
|
|
+ @Lib({
|
|
|
+ title: '清空 viewModel 某个属性',
|
|
|
+ author: '罗一帆',
|
|
|
+ createAt: '2021-07-02',
|
|
|
+ updateAt: '2021-07-02',
|
|
|
+ type: 'system',
|
|
|
+ category: '表单',
|
|
|
+ args: [
|
|
|
+ {
|
|
|
+ type: 'viewModel',
|
|
|
+ title: 'propertyName 属性路径',
|
|
|
+ name: 'propertyName',
|
|
|
+ }
|
|
|
+ ]
|
|
|
+ })
|
|
|
+ clearViewModelValues(propertyName: string) {
|
|
|
+ return function (sender) {
|
|
|
+ const scope = lookupScope(sender)
|
|
|
+ clearViewModelValues(scope.viewModel, propertyName)
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ @Lib({
|
|
|
+ title: '清空 viewModel 某个属性,并刷新表格',
|
|
|
+ author: '罗一帆',
|
|
|
+ createAt: '2021-07-02',
|
|
|
+ updateAt: '2021-07-02',
|
|
|
+ type: 'system',
|
|
|
+ category: '表单',
|
|
|
+ args: [
|
|
|
+ {
|
|
|
+ type: 'viewModel',
|
|
|
+ title: 'propertyName 属性路径',
|
|
|
+ name: 'propertyName',
|
|
|
+ },
|
|
|
+ {
|
|
|
+ type: 'refs',
|
|
|
+ title: 'gridRef 表格引用名',
|
|
|
+ allowEmpty: true,
|
|
|
+ name: 'gridRefName',
|
|
|
+ }
|
|
|
+ ]
|
|
|
+ })
|
|
|
+ clearViewModelReloadGrid(propertyName: string, gridRefName?: string) {
|
|
|
+ return function (sender) {
|
|
|
+ const scope = lookupScope(sender)
|
|
|
+ clearViewModelValues(scope.viewModel, propertyName)
|
|
|
+ if (!gridRefName) {
|
|
|
+ scope.down('grid')?.reload()
|
|
|
+
|
|
|
+ } else {
|
|
|
+ scope.refs[gridRefName]?.reload()
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ @Lib({
|
|
|
+ title: '刷新表格',
|
|
|
+ author: '罗一帆',
|
|
|
+ createAt: '2021-07-02',
|
|
|
+ updateAt: '2021-07-02',
|
|
|
+ type: 'system',
|
|
|
+ category: '表单',
|
|
|
+ args: [
|
|
|
+ {
|
|
|
+ type: 'refs',
|
|
|
+ title: 'gridRef 表格引用名, 不填写的情况下刷新所有',
|
|
|
+ allowEmpty: true,
|
|
|
+ name: 'gridRefName',
|
|
|
+ }
|
|
|
+ ]
|
|
|
+ })
|
|
|
+ reloadGrid(gridRefName: string) {
|
|
|
+ return function (sender) {
|
|
|
+ const scope = lookupScope(sender)
|
|
|
+ if (!gridRefName) {
|
|
|
+ scope.down('grid')?.reload()
|
|
|
+
|
|
|
+ } else {
|
|
|
+ scope.refs[gridRefName]?.reload()
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ @Lib({
|
|
|
+ title: '显示对话框',
|
|
|
+ author: '罗一帆',
|
|
|
+ createAt: '2021-07-02',
|
|
|
+ updateAt: '2021-07-02',
|
|
|
+ type: 'system',
|
|
|
+ category: '对话框',
|
|
|
+ args: [
|
|
|
+ {
|
|
|
+ type: 'module',
|
|
|
+ title: '业务模块名',
|
|
|
+ name: 'url',
|
|
|
+ },
|
|
|
+ {
|
|
|
+ type: 'object',
|
|
|
+ title: '参数数据',
|
|
|
+ name: 'dataParam',
|
|
|
+ allowEmpty: true,
|
|
|
+ }
|
|
|
+ ]
|
|
|
+ })
|
|
|
+ showDialog(url: string, dataParam: any) {
|
|
|
+ return function (sender) {
|
|
|
+ const scope = lookupScope(sender)
|
|
|
+
|
|
|
+ calcObject(scope.viewModel, dataParam).then((param) => {
|
|
|
+
|
|
|
+ // 从 Ext.data.Model 对象转换为 js-object 对象
|
|
|
+ param = toPlainObject(param)
|
|
|
+
|
|
|
+ // @ts-ignore
|
|
|
+ require([url], (module) => {
|
|
|
+ const ScopeClass = module.default
|
|
|
+ const scope = new ScopeClass()
|
|
|
+ scope.showDialog(sender, {}, {data: param})
|
|
|
+ })
|
|
|
+ })
|
|
|
+ }
|
|
|
+ }
|
|
|
}
|