{ "widgettype":"VBox", "options":{"cheight":40,"width":"100%"}, "subwidgets":[{ "id":"users_tbl", "widgettype":"Tabular", "options":{ "width":"100%", "height":"100%", "title":"用户", "toolbar":{ "tools": [ { "selected_row": true, "name": "userrole", "icon": "{{entire_url('/imgs/userrole.svg')}}", "label": "用户角色" } ] }, "css":"card", "editable":{ "new_data_url": "{{entire_url('/rbac/api/add_user.dspy')}}", "delete_data_url":"{{entire_url('delete_users.dspy')}}", "update_data_url": "{{entire_url('/rbac/api/update_user.dspy')}}" }, "data_url":"{{entire_url('./get_users.dspy')}}", "data_method":"GET", "data_params":{{json.dumps(params_kw, indent=4, ensure_ascii=False)}}, "row_options":{ "browserfields": { "exclouded": [ "id", "password", "orgid", "nick_name" ], "cwidth": {}, "alters": null }, "editexclouded":[ "id", "nick_name", "orgid", "last_login_fail", "last_login", "sync_from", "login_fail_count", "created_at" ], "fields":[ { "name": "id", "title": "用户id", "type": "str", "length": 32, "cwidth": 18, "uitype": "str", "datatype": "str", "label": "用户id" }, { "name": "username", "title": "用户名", "type": "str", "length": 255, "cwidth": 18, "uitype": "str", "datatype": "str", "label": "用户名" }, { "name": "password", "title": "密码", "type": "str", "length": 255, "cwidth": 18, "uitype": "password", "datatype": "str", "label": "密码" }, { "name": "email", "title": "邮件地址", "type": "str", "length": 255, "cwidth": 18, "uitype": "str", "datatype": "str", "label": "邮件地址" }, { "name": "orgid", "title": "所属机构", "type": "str", "length": 32, "label": "所属机构", "uitype": "code", "valueField": "orgid", "textField": "orgid_text", "params": { "dbname": "{{get_module_dbname('rbac')}}", "table": "organization", "tblvalue": "id", "tbltext": "orgname", "valueField": "orgid", "textField": "orgid_text" }, "dataurl": "{{entire_url('/appbase/get_code.dspy')}}" }, { "name": "nick_name", "title": "显示名", "type": "str", "length": 255, "cwidth": 18, "uitype": "str", "datatype": "str", "label": "显示名" }, { "name": "address", "title": "地址", "type": "str", "length": 255, "cwidth": 18, "uitype": "str", "datatype": "str", "label": "地址" }, { "name": "mobile", "title": "手机", "type": "str", "length": 255, "cwidth": 18, "uitype": "str", "datatype": "str", "label": "手机" }, { "name": "user_status", "title": "用户状态", "type": "str", "length": 1, "default": "0", "label": "用户状态", "uitype": "code", "valueField": "user_status", "textField": "user_status_text", "params": { "dbname": "{{get_module_dbname('rbac')}}", "table": "appcodes_kv", "tblvalue": "k", "tbltext": "v", "valueField": "user_status", "textField": "user_status_text", "cond": "parentid='user_status'" }, "dataurl": "{{entire_url('/appbase/get_code.dspy')}}" }, { "name": "created_at", "title": "注册日期", "type": "date", "length": 0, "uitype": "date", "datatype": "date", "label": "注册日期" }, { "name": "last_login", "title": "最后登录", "type": "timestamp", "nullable": true, "length": 0, "uitype": "str", "datatype": "timestamp", "label": "最后登录" }, { "name": "login_fail_count", "title": "连续失败次数", "type": "short", "default": "0", "length": 0, "uitype": "int", "datatype": "short", "label": "连续失败次数" }, { "name": "last_login_fail", "title": "最后登录失败时间", "type": "timestamp", "nullable": true, "length": 0, "uitype": "str", "datatype": "timestamp", "label": "最后登录失败时间" }, { "name": "sync_from", "title": "同步应用id", "type": "str", "length": 32, "nullable": true, "label": "同步应用id", "uitype": "code", "valueField": "sync_from", "textField": "sync_from_text", "params": { "dbname": "{{get_module_dbname('rbac')}}", "table": "downapp", "tblvalue": "id", "tbltext": "name", "valueField": "sync_from", "textField": "sync_from_text" }, "dataurl": "{{entire_url('/appbase/get_code.dspy')}}" } ] }, "page_rows":160, "cache_limit":5 } ,"binds":[ { "wid": "self", "event": "enable_user", "actiontype": "script", "target": "self", "script": "var tid=bricks.getWidgetById('users_tbl');var d=tid.select_row.user_data;fetch('/rbac/users/enable_user.dspy?id='+d.id,{method:'POST'}).then(function(r){return r.json()}).then(function(r){if(r.widgettype==='Message'){tid.render({})}else{bricks.show_error(r.options)}})" }, { "wid": "self", "event": "disable_user", "actiontype": "script", "target": "self", "script": "var tid=bricks.getWidgetById('users_tbl');var d=tid.select_row.user_data;fetch('/rbac/users/disable_user.dspy?id='+d.id,{method:'POST'}).then(function(r){return r.json()}).then(function(r){if(r.widgettype==='Message'){tid.render({})}else{bricks.show_error(r.options)}})" }, { "wid": "self", "event": "userrole", "actiontype": "urlwidget", "target": "PopupWindow", "popup_options": { "title": "用户角色", "icon": "{{entire_url('/appbase/get_icon.dspy')}}?id=userrole", "resizable": true, "height": "70%", "width": "70%" }, "params_mapping": { "mapping": { "id": "userid", "referer_widget": "referer_widget" }, "need_other": false }, "options": { "method": "POST", "params": {}, "url": "{{entire_url('../userrole')}}" } } ] }] }