首页
layer动态配置参数

layer动态配置参数

04-15 14:12:31
95
2

自 simplepro 3.5+ 版本开始支持动态配置

文档地址:https://simpleui.72wo.com/docs/simplepro/layer.html#%E5%8A%A8%E6%80%81%E9%85%8D%E7%BD%AE

@admin.register(Layer)
class LayerAdmin(AjaxAdmin):
    actions = ('async_layer_action')

    # 这是点击按钮执行的代码
    def async_layer_action(self, request, queryset):
        """
        异步执行的方法,可以动态返回layer的配置,自simplepro 3.5版本开始
        """
        return JsonResponse({'status': 'success', 'msg': '操作成功'})
    # 按钮显示的名称
    async_layer_action.short_description = '异步获取Layer配置'
    # 按钮显示的图标
    async_layer_action.icon = 'el-icon-view'
    # 设置不选择数据也可以执行配置
    async_layer_action.enable = True

    # 这里的layer配置是动态的,可以根据需求返回不同的配置
    # 这里的queryset 或根据搜索条件来过滤数据
    def async_get_layer_config(self, request, queryset):
        """
        这个方法只有一个request参数,没有其他的入参
        """
        # 模拟处理业务耗时
        time.sleep(2)
        # 可以根据request的用户,来动态设置返回哪些字段,每次点击都会来获取配置显示
        return {
            # 弹出层中的输入框配置

            # 这里指定对话框的标题
            'title': '异步获取配置的输入框',
            # 提示信息
            'tips': '异步获取配置' + datetime.now().strftime("%Y-%m-%d %H:%M:%S"),
            # 确认按钮显示文本
            'confirm_button': '确认提交',
            # 取消按钮显示文本
            'cancel_button': '取消',

            # 弹出层对话框的宽度,默认50%
            'width': '40%',

            # 表单中 label的宽度,对应element-ui的 label-width,默认80px
            'labelWidth': "80px",
            'params': [{
                # 这里的type 对应el-input的原生input属性,默认为input
                'type': 'input',
                # key 对应post参数中的key
                'key': 'name',
                # 显示的文本
                'label': '名称',
                # 为空校验,默认为False
                'require': True,
                'value': random.randint(0, 100)
            }, {
                'type': 'select',
                'key': 'type',
                'label': '类型',
                'width': '200px',
                # size对应elementui的size,取值为:medium / small / mini
                'size': 'small',
                # value字段可以指定默认值
                'value': '0',
                'options': [{
                    'key': '0',
                    'label': '收入'
                }]
            }]
        }

    # 这里的layer 配置下方法名就可以了,不需要写圆括号(),不然不生效
    async_layer_action.layer = async_get_layer_config
评论(2)