一、导入
1、标准导入
背景:直接配上标准的导入按钮即可使用,将excel文件中的数据导入系统或将系统内数据导出成excel文件
(1)标准导入按钮配置
若新建弹性模型或标准模型无导入导出按钮,需要导入 导出功能。
第一种:简单配置按钮,即配即用,则可在当前列表元数据配置的 "actions": []里配置标准的导入导出按钮,COMMON_IMPORT和COMMON_EXPORT
{"action": "COMMON_IMPORT", "left": true, "data": {}, "key": "common_import", "label": "标准导入" }, {"action": "COMMON_EXPORT", "left": true, "data": {}, "key": "common_export", "label": "标准导出" }
第二种:在标准按钮基础上配置参数,如指定导出的文件名、控制按钮的使用角色等,具体参数及释义如下
注:仅使用平台标准导入模板时,"is_from_config"只能设置成flase
{ "action": "COMMON_IMPORT", #【必填】按钮调用的方法,COMMON_IMPORT是框架通用导入。 "label" : "模版型导入", #【必填】按钮名称。 "key" : "common_import", #【必填】按钮的key,即唯一键,与其他按钮区分的唯一标识。 "data":{ #【选填】导入按钮的一些个性设置,以下均为选填。 "is_from_config": false, # 是否使用个性化模板,false为否。 "category": "whatever", # 模型名或者个性化模板的common_imp_setting.json映射名称。不用个性化模板最好别设置。 "file_name": "自己想怎么命名怎么命名.xlsx", # 自定义下载的导入模板文件名 "import_class": "", # 使用的导入类。业务老师提供了,则使用业务老师提供的,否则不写。是固定的,不要自己瞎写。 "role": "", # 导入角色。 "use_column_defs": false, # 多表头导入 "data_row": "3", # 导入时,数据从excel文件的哪一行开始读取。默认是:导入文件有描述行,则从第三行开始读取,否则从第二行开始。 "imp_tips": ["1、今天简单说以下几点", "。", "。。"], # 自定义导入提示 "show_business_key": false, # 显示导入依据 "choose_method": false, # 是否展示导入模式选择 "imp_method": 0, # 默认导入模式(0:仅新增,1:仅编辑,2:有则编辑无则新增) "empty_selector": false, # 是否展示选择器(默认为true) false: 不展示, true: 展示 "empty_mode": 1, # 默认值(默认为1) 0: 正常导入(编辑时覆盖), 1: 跳过 "action_state": "", # 弹窗内部按钮的场景,修改ImpActionVirtual不同场景的list元数据来配置不同的弹窗内按钮,详见【导入导出小案例-9】 "filter_org": [], # 过滤组织(需要配合charge_role使用,进一步控制权限范围内的部门) "extend_property": { "map_warn": false, # 当导入文件中的列名与info元数据中的列名不匹配时,是否直接拦截导入。默认为否(false)。 "data_plugins": {}, # 自定义导入插件,详见【3.自定义配置导入插件】 "charge_role": [{ # 用于校验权限。 "field": "dept_id", # 需要校验部门权限的字段 "role": "cm-org-emp", # 权限范围 "type": "dept" # 类型(部门校验) }, { "field": "employee", # 需要校验人员权限的字段 "role": "cm-org-emp", # 权限范围 "type": "emp" # 类型(人员校验) }], "extra_property": { "field_state": {"字段1的key": "想要的场景"}, # 字典类型。当一个字段为关联对象类型时,可以设置他关联对象的场景进行下拉选项的过滤。详见【导入导出案例】 "state": "imp", # 导入场景。自定义是以哪个场景的info元数据为依据。 } } } },
(2)导入弹窗中导入模式、导入依据介绍
导入弹窗中会有三种导入模式,模式名称及解释如图
导入的时候怎么知道是原来已有的数据导入进行编辑,还是原来没有数据导入进行新增呢,这就是根据我们是否设置业务主键去判断,导入的业务主键如果系统已有则编辑,否则进行新增
配置业务主键有两种方法,一是在“弹性字段”设置中勾选,另一种是在“模型.json”元数据里配置,如下图所示。
(3)标准导入模板中展示的是哪些字段,导出又展示哪些字段呢?
标准导入: 导入模板根据info元数据中字段显示,即info场景中没有设置隐藏或只读的都会显示在模板中,顺序是按照list层的元数据
标准导出: 根据list层显示的字段
(5)导入导出文件里是否带描述行
导入模板默认时带描述行(橙色那一行),作为对该列数据填写规范的解释。如果不想要,可以在服务器参数里关掉。关掉的效果见下图。
(6)导入映射
2、个性化导入
背景:标准的导入导出不符合用户需求,需要配置个性化的导入导出模板
第一步:在导入按钮元数据配置的data中添加is_from_config:true,以使用个性化模板,若需要使用其他参数,参考上述标准按钮参数配置。
|
第二步:配置公司级模板
在扩展管理-公司级模板查询common_imp_setting.json
1)可以先过滤【是否全局模板】为否,直接可查询说明已新增过公司级模板
2)若查询不到,则切换过滤条件为是,再次查询,复制模板key后点击新增,将复制的key粘贴到新增的公司级模板key中,则会新增一个公司级非全局模板。公司级模板中一般会自动复制原全局模板已有参数内容,则只需要配置本次自定义模板参数,若新增公司级模板无参数内容,则需先将全局模板所有参数复制后,粘贴至公司级模板中,再配置本次自定义导入模板的参数。
配置参数解析:(//双斜杠之后的是注释)
|
第四步:根据上一步中配置的"imp"的公司级模板名,新建一个公司级模板。本例中是AttendLocation_import.json。
模板中配置的内容和释义:
个性化模板配置
{
"alias"
:
"考勤点"
, #【选填】备注
"category"
:
"AttendLocation"
, #【必填】注意,这个要写要导入的模型名,即按钮中配置的category是什么。
"import_class"
:
"core.base.imp_exp.services_dynamic_model.CommonDynamicImport"
, #【必填】标准导入配置,不需要改直接复制
"export_class"
:
"core.base.imp_exp.services_dynamic_model.CommonDynamicExport"
, #【必填】标准导出配置。注意,和导入的不一样。
"filters"
: [],
"orders"
: [],
"fields"
: [{ # 【必填】模板中展示的列
"key"
:
"address"
, #【必填】
"name"
:
"名称"
, #【必填】
"width"
:
20
, #【选填】旧版列宽,要使用的话需要特别配置,否则控制不了。
"excel_width"
:
10
, #【选填】新版列宽,配置了就可以直接控制列宽。
"comment"
:
"请输入考勤点名称"
, #【选填】描述行
"require"
:
true
#【选填】是否必填
}, {
"key"
:
"number"
,
"name"
:
"编号"
,
"width"
:
20
,
"comment"
:
"请输入考勤点编号"
,
"require"
:
true
}, {
"key"
:
"province"
,
"name"
:
"省份"
,
"width"
:
20
,
"comment"
:
"\n关联型,请选择考勤点所在省份"
,
"drop_down_filter"
: {
"enabled"
:
true
},
"require"
:
true
}, {
"key"
:
"city"
,
"name"
:
"市(区)"
,
"width"
:
20
,
"comment"
:
"\n关联型,请选择考勤点所在市(区)"
,
"require"
:
true
}, {
"key"
:
"address_note"
,
"name"
:
"详细地址"
,
"width"
:
20
,
"comment"
:
"请输入考勤点详细地址"
,
"require"
:
true
}, {
"key"
:
"depart_id"
,
"name"
:
"所属组织"
,
"width"
:
20
,
"comment"
:
"文本型,请输入考勤点所属组织"
,
"require"
:
true
}, {
"key"
:
"area_type"
,
"name"
:
"区域类型"
,
"width"
:
20
,
"comment"
:
"参照型,选择考勤点区域类型"
}, {
"key"
:
"radius"
,
"name"
:
"有效打卡距离(米)"
,
"width"
:
20
,
"comment"
:
"文本型,请输入考勤点有效打卡距离(米)"
,
"require"
:
true
}, {
"key"
:
"location_usable"
,
"name"
:
"可用范围"
,
"width"
:
20
,
"comment"
:
"参照型,选择考勤点可用范围(适用于哪个组织)"
}, {
"key"
:
"enabled"
,
"name"
:
"是否启用"
,
"width"
:
20
,
"comment"
:
"请输入该考勤点是否可用"
,
"require"
:
true
}],
"charge_role"
: [{ #【选填】用于校验权限。
"field"
:
"dept_id"
, # 需要校验部门权限的字段
"role"
:
"cm-org-emp"
, # 权限范围
"type"
:
"dept"
# 类型(部门校验)
}, {
"field"
:
"employee"
, # 需要校验人员权限的字段
"role"
:
"cm-org-emp"
, # 权限范围
"type"
:
"emp"
# 类型(人员校验)
}],
"check_items"
: { #【选填】
"imp"
: [],
"exp"
: []
},
"data_plugins"
:[{ #【选填】
"key"
:
"before_imp_data_xxx"
, // 【必填】注: 作为before_imp_data的插件须以before_imp_data开头,after_imp_data的插件则以after_imp_data开头。
"name"
:
""
, // 【必填】云函数名
"plugin_type"
:
"standard"
// 【选填】不填时使用云函数。填写为standard时为使用标准代码,上面的name也应为对应class路径。
}]
}
3、子表导入
4、主子集导入
5、附件导入
二、导出
1、标准导出
背景:标准的导出文件不符合用户需求,需要配置个性化的导出模板