commit
065ce3dafb
@ -14,6 +14,7 @@ import io.dataease.i18n.Translator;
|
||||
import io.dataease.service.dataset.DataSetFieldService;
|
||||
import io.dataease.service.dataset.DataSetTableFieldsService;
|
||||
import io.dataease.service.dataset.DataSetTableService;
|
||||
import io.dataease.service.dataset.PermissionService;
|
||||
import io.swagger.annotations.Api;
|
||||
import io.swagger.annotations.ApiOperation;
|
||||
import org.apache.commons.lang3.ObjectUtils;
|
||||
@ -47,13 +48,17 @@ public class DataSetTableFieldController {
|
||||
|
||||
@Resource
|
||||
private DataSetTableService dataSetTableService;
|
||||
@Resource
|
||||
private PermissionService permissionService;
|
||||
|
||||
@ApiOperation("查询表下属字段")
|
||||
@PostMapping("list/{tableId}")
|
||||
public List<DatasetTableField> list(@PathVariable String tableId) {
|
||||
DatasetTableField datasetTableField = DatasetTableField.builder().build();
|
||||
datasetTableField.setTableId(tableId);
|
||||
return dataSetTableFieldsService.list(datasetTableField);
|
||||
List<DatasetTableField> fields = dataSetTableFieldsService.list(datasetTableField);
|
||||
fields = permissionService.filterColumnPermissons(fields, new ArrayList<>(), tableId, null);
|
||||
return fields;
|
||||
}
|
||||
|
||||
@ApiOperation("分组查询表下属字段")
|
||||
@ -63,8 +68,10 @@ public class DataSetTableFieldController {
|
||||
datasetTableField.setTableId(tableId);
|
||||
datasetTableField.setGroupType("d");
|
||||
List<DatasetTableField> dimensionList = dataSetTableFieldsService.list(datasetTableField);
|
||||
dimensionList = permissionService.filterColumnPermissons(dimensionList, new ArrayList<>(), tableId, null);
|
||||
datasetTableField.setGroupType("q");
|
||||
List<DatasetTableField> quotaList = dataSetTableFieldsService.list(datasetTableField);
|
||||
quotaList = permissionService.filterColumnPermissons(quotaList, new ArrayList<>(), tableId, null);
|
||||
|
||||
DatasetTableField4Type datasetTableField4Type = new DatasetTableField4Type();
|
||||
datasetTableField4Type.setDimensionList(dimensionList);
|
||||
|
||||
@ -193,33 +193,31 @@ public class ChartViewService {
|
||||
return calcData(view, request, request.isCache());
|
||||
}
|
||||
|
||||
private void checkPermissions(List<? extends ChartViewFieldBaseDTO> chartViewFieldDTOS, List<DatasetTableField> fields, List<String> desensitizationList, Boolean alowDesensitization) throws Exception{
|
||||
String filedName = "";
|
||||
for (ChartViewFieldBaseDTO chartViewFieldDTO : chartViewFieldDTOS) {
|
||||
if(alowDesensitization){
|
||||
if (!fields.stream().map(DatasetTableField::getDataeaseName).collect(Collectors.toList()).contains(chartViewFieldDTO.getDataeaseName())) {
|
||||
filedName = filedName + chartViewFieldDTO.getName() + " ,";
|
||||
}
|
||||
}else {
|
||||
if (desensitizationList.contains(chartViewFieldDTO.getDataeaseName()) || !fields.stream().map(DatasetTableField::getDataeaseName).collect(Collectors.toList()).contains(chartViewFieldDTO.getDataeaseName())) {
|
||||
filedName = filedName + chartViewFieldDTO.getName() + " ,";
|
||||
}
|
||||
}
|
||||
}
|
||||
filedName = filedName.endsWith(",") ? filedName.substring(0, filedName.length() - 1) : filedName;
|
||||
if(StringUtils.isNotEmpty(filedName)){
|
||||
throw new Exception("以下字段没有权限: " + filedName);
|
||||
}
|
||||
}
|
||||
// private void checkPermissions(List<? extends ChartViewFieldBaseDTO> chartViewFieldDTOS, List<DatasetTableField> fields, List<String> desensitizationList, Boolean alowDesensitization) throws Exception {
|
||||
// String filedName = "";
|
||||
// for (ChartViewFieldBaseDTO chartViewFieldDTO : chartViewFieldDTOS) {
|
||||
// if (alowDesensitization) {
|
||||
// if (!fields.stream().map(DatasetTableField::getDataeaseName).collect(Collectors.toList()).contains(chartViewFieldDTO.getDataeaseName())) {
|
||||
// filedName = filedName + chartViewFieldDTO.getName() + " ,";
|
||||
// }
|
||||
// } else {
|
||||
// if (desensitizationList.contains(chartViewFieldDTO.getDataeaseName()) || !fields.stream().map(DatasetTableField::getDataeaseName).collect(Collectors.toList()).contains(chartViewFieldDTO.getDataeaseName())) {
|
||||
// filedName = filedName + chartViewFieldDTO.getName() + " ,";
|
||||
// }
|
||||
// }
|
||||
// }
|
||||
// filedName = filedName.endsWith(",") ? filedName.substring(0, filedName.length() - 1) : filedName;
|
||||
// if (StringUtils.isNotEmpty(filedName)) {
|
||||
// throw new Exception("以下字段没有权限: " + filedName);
|
||||
// }
|
||||
// }
|
||||
|
||||
public ChartViewDTO calcData(ChartViewDTO view, ChartExtRequest requestList, boolean cache) throws Exception {
|
||||
if (ObjectUtils.isEmpty(view)) {
|
||||
throw new RuntimeException(Translator.get("i18n_chart_delete"));
|
||||
}
|
||||
List<ChartViewFieldDTO> xAxis = new Gson().fromJson(view.getXAxis(), new TypeToken<List<ChartViewFieldDTO>>() {
|
||||
}.getType());
|
||||
List<ChartViewFieldDTO> yAxis = new Gson().fromJson(view.getYAxis(), new TypeToken<List<ChartViewFieldDTO>>() {
|
||||
}.getType());
|
||||
List<ChartViewFieldDTO> xAxis = new Gson().fromJson(view.getXAxis(), new TypeToken<List<ChartViewFieldDTO>>() {}.getType());
|
||||
List<ChartViewFieldDTO> yAxis = new Gson().fromJson(view.getYAxis(), new TypeToken<List<ChartViewFieldDTO>>() {}.getType());
|
||||
if (StringUtils.equalsIgnoreCase(view.getType(), "chart-mix")) {
|
||||
List<ChartViewFieldDTO> yAxisExt = new Gson().fromJson(view.getYAxisExt(), new TypeToken<List<ChartViewFieldDTO>>() {
|
||||
}.getType());
|
||||
@ -241,8 +239,15 @@ public class ChartViewService {
|
||||
|
||||
//列权限
|
||||
List<String> desensitizationList = new ArrayList<>();
|
||||
fields = permissionService.filterColumnPermissons(fields, desensitizationList, datasetTable, null);
|
||||
checkPermissions(fieldCustomFilter, fields, desensitizationList, false);
|
||||
fields = permissionService.filterColumnPermissons(fields, desensitizationList, datasetTable.getId(), requestList.getUser());
|
||||
//将没有权限的列删掉
|
||||
List<String> dataeaseNames = fields.stream().map(DatasetTableField::getDataeaseName).collect(Collectors.toList());
|
||||
fieldCustomFilter = fieldCustomFilter.stream().filter(item -> !desensitizationList.contains(item.getDataeaseName()) && dataeaseNames.contains(item.getDataeaseName())).collect(Collectors.toList());
|
||||
extStack = extStack.stream().filter(item -> !desensitizationList.contains(item.getDataeaseName()) && dataeaseNames.contains(item.getDataeaseName())).collect(Collectors.toList());
|
||||
extBubble = extBubble.stream().filter(item -> !desensitizationList.contains(item.getDataeaseName()) && dataeaseNames.contains(item.getDataeaseName())).collect(Collectors.toList());
|
||||
drill = drill.stream().filter(item -> !desensitizationList.contains(item.getDataeaseName()) && dataeaseNames.contains(item.getDataeaseName())).collect(Collectors.toList());
|
||||
|
||||
|
||||
//行权限
|
||||
List<ChartFieldCustomFilterDTO> permissionFields = permissionService.getCustomFilters(fields, datasetTable, requestList.getUser());
|
||||
fieldCustomFilter.addAll(permissionFields);
|
||||
@ -255,30 +260,30 @@ public class ChartViewService {
|
||||
return emptyChartViewDTO(view);
|
||||
}
|
||||
|
||||
switch (view.getType()){
|
||||
switch (view.getType()) {
|
||||
case "text":
|
||||
case "gauge":
|
||||
case "liquid":
|
||||
xAxis = new ArrayList<>();
|
||||
checkPermissions(yAxis, fields, desensitizationList, false);
|
||||
yAxis = yAxis.stream().filter(item -> !desensitizationList.contains(item.getDataeaseName()) && dataeaseNames.contains(item.getDataeaseName())).collect(Collectors.toList());
|
||||
if (CollectionUtils.isEmpty(yAxis)) {
|
||||
return emptyChartViewDTO(view);
|
||||
}
|
||||
break;
|
||||
case "table-info":
|
||||
yAxis = new ArrayList<>();
|
||||
checkPermissions(xAxis, fields, desensitizationList, true);
|
||||
xAxis = xAxis.stream().filter(item -> dataeaseNames.contains(item.getDataeaseName())).collect(Collectors.toList());
|
||||
if (CollectionUtils.isEmpty(xAxis)) {
|
||||
return emptyChartViewDTO(view);
|
||||
}
|
||||
break;
|
||||
case "table-normal":
|
||||
checkPermissions(xAxis, fields, desensitizationList, true);
|
||||
checkPermissions(yAxis, fields, desensitizationList, true);
|
||||
xAxis = xAxis.stream().filter(item -> dataeaseNames.contains(item.getDataeaseName())).collect(Collectors.toList());
|
||||
yAxis = yAxis.stream().filter(item -> dataeaseNames.contains(item.getDataeaseName())).collect(Collectors.toList());
|
||||
break;
|
||||
default:
|
||||
checkPermissions(xAxis, fields, desensitizationList, false);
|
||||
checkPermissions(yAxis, fields, desensitizationList, false);
|
||||
xAxis = xAxis.stream().filter(item -> !desensitizationList.contains(item.getDataeaseName()) && dataeaseNames.contains(item.getDataeaseName())).collect(Collectors.toList());
|
||||
yAxis = yAxis.stream().filter(item -> !desensitizationList.contains(item.getDataeaseName()) && dataeaseNames.contains(item.getDataeaseName())).collect(Collectors.toList());
|
||||
}
|
||||
|
||||
// 过滤来自仪表板的条件
|
||||
@ -1570,14 +1575,14 @@ public class ChartViewService {
|
||||
data.forEach(ele -> {
|
||||
Map<String, Object> d = new HashMap<>();
|
||||
for (int i = 0; i < fields.size(); i++) {
|
||||
if(CollectionUtils.isNotEmpty(desensitizationList) && desensitizationList.contains(fields.get(i).getDataeaseName())){
|
||||
if (CollectionUtils.isNotEmpty(desensitizationList) && desensitizationList.contains(fields.get(i).getDataeaseName())) {
|
||||
d.put(fields.get(i).getDataeaseName(), ColumnPermissionConstants.Desensitization_desc);
|
||||
continue;
|
||||
}
|
||||
|
||||
ChartViewFieldDTO chartViewFieldDTO = fields.get(i);
|
||||
if (chartViewFieldDTO.getDeType() == 0 || chartViewFieldDTO.getDeType() == 1) {
|
||||
d.put(fields.get(i).getDataeaseName(), StringUtils.isEmpty(ele[i]) ? "" : ele[i]);
|
||||
d.put(fields.get(i).getDataeaseName(), StringUtils.isEmpty(ele[i]) ? "" : ele[i]);
|
||||
} else if (chartViewFieldDTO.getDeType() == 2 || chartViewFieldDTO.getDeType() == 3) {
|
||||
d.put(fields.get(i).getDataeaseName(), StringUtils.isEmpty(ele[i]) ? null : new BigDecimal(ele[i]).setScale(2, RoundingMode.HALF_UP));
|
||||
}
|
||||
|
||||
@ -399,7 +399,7 @@ public class DataSetTableService {
|
||||
datasetTableField.setTableId(dataSetTableRequest.getId());
|
||||
datasetTableField.setChecked(Boolean.TRUE);
|
||||
List<DatasetTableField> fields = dataSetTableFieldsService.list(datasetTableField);
|
||||
|
||||
fields = permissionService.filterColumnPermissons(fields, new ArrayList<>(), dataSetTableRequest.getId(), null);
|
||||
List<DatasetTableField> dimension = new ArrayList<>();
|
||||
List<DatasetTableField> quota = new ArrayList<>();
|
||||
|
||||
@ -450,7 +450,7 @@ public class DataSetTableService {
|
||||
DatasetTable datasetTable = datasetTableMapper.selectByPrimaryKey(dataSetTableRequest.getId());
|
||||
//列权限
|
||||
List<String> desensitizationList = new ArrayList<>();
|
||||
fields = permissionService.filterColumnPermissons(fields, desensitizationList, datasetTable, null);
|
||||
fields = permissionService.filterColumnPermissons(fields, desensitizationList, datasetTable.getId(), null);
|
||||
//行权限
|
||||
List<ChartFieldCustomFilterDTO> customFilter = permissionService.getCustomFilters(fields, datasetTable, null);
|
||||
String[] fieldArray = fields.stream().map(DatasetTableField::getDataeaseName).toArray(String[]::new);
|
||||
|
||||
@ -64,10 +64,10 @@ public class PermissionService {
|
||||
return customFilter;
|
||||
}
|
||||
|
||||
public List<DatasetTableField> filterColumnPermissons(List<DatasetTableField> fields, List<String>desensitizationList, DatasetTable datasetTable, Long user){
|
||||
public List<DatasetTableField> filterColumnPermissons(List<DatasetTableField> fields, List<String> desensitizationList, String datasetTableId, Long user){
|
||||
List<DatasetTableField> result = new ArrayList<>();
|
||||
List<ColumnPermissionItem> allColumnPermissionItems = new ArrayList<>();
|
||||
for (DataSetColumnPermissionsDTO dataSetColumnPermissionsDTO : columnPermissions(datasetTable.getId(), user)) {
|
||||
for (DataSetColumnPermissionsDTO dataSetColumnPermissionsDTO : columnPermissions(datasetTableId, user)) {
|
||||
ColumnPermissions columnPermissions = JSONObject.parseObject(dataSetColumnPermissionsDTO.getPermissions(), ColumnPermissions.class);
|
||||
if(!columnPermissions.getEnable()){continue;}
|
||||
allColumnPermissionItems.addAll(columnPermissions.getColumns().stream().filter(columnPermissionItem -> columnPermissionItem.getSelected()).collect(Collectors.toList()));
|
||||
|
||||
@ -54,7 +54,7 @@ public class DirectFieldService implements DataSetFieldService {
|
||||
|
||||
//列权限
|
||||
List<String> desensitizationList = new ArrayList<>();
|
||||
fields = permissionService.filterColumnPermissons(fields, desensitizationList, datasetTable, userId);
|
||||
fields = permissionService.filterColumnPermissons(fields, desensitizationList, datasetTable.getId(), userId);
|
||||
|
||||
if (CollectionUtils.isNotEmpty(desensitizationList) && desensitizationList.contains(field.getDataeaseName())) {
|
||||
List<Object> results = new ArrayList<>();
|
||||
|
||||
@ -11,3 +11,6 @@ CREATE TABLE `dataset_column_permissions` (
|
||||
INSERT INTO `sys_menu` (`menu_id`, `pid`, `sub_count`, `type`, `title`, `name`, `component`, `menu_sort`, `icon`, `path`, `i_frame`, `cache`, `hidden`, `permission`, `create_by`, `update_by`, `create_time`, `update_time`) VALUES (61, 0, 0, 1, '首页', 'wizard', 'wizard/index', 0, '', '/wizard', b'1', b'0', b'0', NULL, NULL, NULL, NULL, 1614915491036);
|
||||
INSERT INTO `system_parameter` (`param_key`, `param_value`, `type`, `sort`) VALUES ('ui.openHomePage', 'true', 'boolean', 13);
|
||||
|
||||
UPDATE `dataset_table_function` SET `desc` = '如果expr等于某个vn,则返回对应位置THEN后面的结果,如果与所有值都不相等,则返回ELSE后面的rn' WHERE `id` = 47;
|
||||
UPDATE `dataset_table_function` SET `desc` = '如果expr等于某个vn,则返回对应位置THEN后面的结果,如果与所有值都不相等,则返回ELSE后面的rn' WHERE `id` = 96;
|
||||
|
||||
|
||||
@ -1,189 +1,3 @@
|
||||
#commons
|
||||
error_lang_invalid=Invalid language parameter
|
||||
file_cannot_be_null=File cannot be empty!
|
||||
cannot_be_null=\tCannot be empty
|
||||
number=Number
|
||||
row=row
|
||||
error=error
|
||||
connection_failed=Connection failed
|
||||
delete_fail=Delete fail
|
||||
start_engine_fail=Start fail
|
||||
upload_fail=Upload fail
|
||||
#user related
|
||||
user_email_already_exists=User email already exists
|
||||
user_id_is_null=User ID cannot be null
|
||||
user_name_is_null=User name cannot be null
|
||||
user_email_is_null=User email cannot be null
|
||||
password_is_null=Password cannot be null
|
||||
user_id_already_exists=User ID already exists
|
||||
password_modification_failed=The old password is wrong. Please re-enter it
|
||||
cannot_delete_current_user=Cannot delete the user currently logged in
|
||||
user_already_exists=The user already exists in the current member list
|
||||
cannot_remove_current=Unable to remove the currently logged in user
|
||||
password_is_incorrect=Incorrect password or username
|
||||
user_not_exist=user does not exist:
|
||||
user_has_been_disabled=the user has been disabled.
|
||||
excessive_attempts=Excessive attempts
|
||||
user_locked=the user has been locked.
|
||||
user_expires=user expires.
|
||||
not_authorized=not authorized.
|
||||
login_fail=Login fail
|
||||
user_apikey_limit=Can have up to 5 api keys
|
||||
#load test
|
||||
edit_load_test_not_found=Cannot edit test, test not found=
|
||||
run_load_test_not_found=Cannot run test, test not found=
|
||||
run_load_test_file_not_found=Unable to run test, unable to get test file meta information, test ID=
|
||||
run_load_test_file_content_not_found=Cannot run test, cannot get test file content, test ID=
|
||||
run_load_test_file_init_error=Failed to run test, please check current end point configuration
|
||||
load_test_is_running=Load test is running, please wait.
|
||||
load_test_kafka_invalid=Kafka is not available, please check the configuration
|
||||
cannot_edit_load_test_running=Cannot modify the running test
|
||||
test_not_found=Test cannot be found:
|
||||
test_not_running=Test is not running
|
||||
load_test_already_exists=Duplicate load test name
|
||||
no_nodes_message=No node message
|
||||
duplicate_node_ip=Duplicate IPs
|
||||
duplicate_node_port=Duplicate Ports
|
||||
duplicate_node_ip_port=Duplicate IPs & Ports
|
||||
max_thread_insufficient=The number of concurrent users exceeds
|
||||
related_case_del_fail_prefix=Connected to
|
||||
related_case_del_fail_suffix=TestCase, please disassociate first
|
||||
jmx_content_valid=JMX content is invalid
|
||||
container_delete_fail=The container failed to stop, please try again
|
||||
load_test_report_file_not_exist=There is no JTL file in the current report, please wait or execute it again to get it
|
||||
#workspace
|
||||
workspace_name_is_null=Workspace name cannot be null
|
||||
workspace_name_already_exists=The workspace name already exists
|
||||
workspace_does_not_belong_to_user=The current workspace does not belong to the current user
|
||||
workspace_not_exists=Workspace is not exists
|
||||
#test resource pool
|
||||
test_resource_pool_id_is_null=Test Resource Pool ID cannot be null
|
||||
test_resource_pool_name_is_null=Test Resource Pool name cannot be null
|
||||
test_resource_pool_name_already_exists=The test resource pool name already exists
|
||||
load_test=Load Test
|
||||
test_resource_pool_is_use=This resource pool is in use and cannot be deleted
|
||||
only_one_k8s=Only one K8S can be added
|
||||
#project
|
||||
project_name_is_null=Project name cannot be null
|
||||
project_name_already_exists=The project name already exists
|
||||
#organization
|
||||
organization_name_is_null=organization name cannot be null
|
||||
organization_name_already_exists=The organization name already exists
|
||||
organization_does_not_belong_to_user=The current organization does not belong to the current user
|
||||
organization_id_is_null=Organization ID cannot be null
|
||||
#api
|
||||
api_load_script_error=Load script error
|
||||
api_report_is_null="Report is null, can't update"
|
||||
api_test_environment_already_exists="Api test environment already exists"
|
||||
#test case
|
||||
test_case_node_level=level
|
||||
test_case_node_level_tip=The node tree maximum depth is
|
||||
test_case_module_not_null=The owned module cannot be empty
|
||||
test_case_create_module_fail=Failed to create module
|
||||
test_case_import_template_name=Test_case_templates
|
||||
test_case_import_template_sheet=Template
|
||||
module_not_null=The module must not be blank
|
||||
user_not_exists=The user in this workspace is not exists
|
||||
test_case_already_exists=The test case in this project is exists
|
||||
parse_data_error=Parse data error
|
||||
missing_header_information=Missing header information
|
||||
test_case_exist=A test case already exists under this project:
|
||||
node_deep_limit=The node depth does not exceed 8 layers!
|
||||
before_delete_plan=There is an associated test case under this plan, please unlink it first!
|
||||
incorrect_format=\tincorrect format
|
||||
test_case_type_validate=\tmust be functional, performance, api
|
||||
test_case_priority_validate=\tmust be P0, P1, P2, P3
|
||||
test_case_method_validate=\tmust be manual, auto
|
||||
test_case_name=Name
|
||||
test_case_type=Type
|
||||
test_case_maintainer=Maintainer
|
||||
test_case_priority=Priority
|
||||
test_case_method=method
|
||||
test_case_prerequisite=Prerequisite
|
||||
test_case_remark=Remark
|
||||
test_case_step_desc=Step description
|
||||
test_case_step_result=Step result
|
||||
test_case_module=Module
|
||||
test_case=Test case
|
||||
module=Module
|
||||
preconditions_optional=Preconditions optional
|
||||
step_tip_separate=Each step is separated by a new line
|
||||
step_tip_order=The serial number can be marked before the step
|
||||
step_tip_optional=Test steps and results optional
|
||||
result_tip_separate=Each result is separated by a new line
|
||||
result_tip_order=The sequence number can be marked before the result
|
||||
result_tip_optional=Test steps and results optional
|
||||
remark_optional=Remark optional
|
||||
do_not_modify_header_order=Do not modify the header order
|
||||
module_created_automatically=If there is no such module, will be created automatically
|
||||
options=options
|
||||
please_input_workspace_member=Please input workspace merber
|
||||
test_case_report_template_repeat=The workspace has the same name template
|
||||
plan_name_already_exists=Test plan name already exists
|
||||
test_case_already_exists_excel=There are duplicate test cases in the import file
|
||||
test_case_module_already_exists=The module name already exists at the same level
|
||||
api_test_name_already_exists=Test name already exists
|
||||
functional_method_tip=Functional test not support auto method
|
||||
#ldap
|
||||
ldap_url_is_null=LDAP address is empty
|
||||
ldap_dn_is_null=LDAP binding DN is empty
|
||||
ldap_ou_is_null=LDAP parameter OU is empty
|
||||
ldap_password_is_null=LDAP password is empty
|
||||
ldap_connect_fail=Connection LDAP failed
|
||||
ldap_connect_fail_user=Connection LDAP failed, wrong DN or password bound
|
||||
ldap_user_filter_is_null=LDAP user filter is empty
|
||||
ldap_user_mapping_is_null=LDAP user mapping is empty
|
||||
authentication_failed=User authentication failed,wrong user name or password
|
||||
user_not_found_or_not_unique=User does not exist or is not unique
|
||||
find_more_user=Multiple users found
|
||||
ldap_authentication_not_enabled=LDAP authentication is not enabled
|
||||
login_fail_email_null=Login failed, user mailbox is empty
|
||||
login_fail_ou_error=Login failed, please check the user OU
|
||||
login_fail_filter_error=Login failed, please check the user filter
|
||||
check_ldap_mapping=Check LDAP attribute mapping
|
||||
ldap_mapping_value_null=LDAP user attribute mapping field is empty
|
||||
#quota
|
||||
quota_workspace_excess_org_api=The total number of interface tests in the workspace cannot exceed the organization's quota
|
||||
quota_workspace_excess_org_performance=The total number of performance tests for the workspace cannot exceed the organization's quota
|
||||
quota_workspace_excess_org_max_threads=The maximum concurrent number of workspaces cannot exceed the quota of the organization
|
||||
quota_workspace_excess_org_max_duration=The stress test duration of the workspace cannot exceed the organization's quota
|
||||
quota_workspace_excess_org_resource_pool=The resource pool of the workspace cannot exceed the resource pool of the organization
|
||||
quota_api_excess_workspace=The number of interface tests exceeds the workspace quota
|
||||
quota_api_excess_organization=The number of interface tests exceeds the organization quota
|
||||
quota_performance_excess_workspace=The number of performance tests exceeds the workspace quota
|
||||
quota_performance_excess_organization=The number of performance tests exceeds the organization quota
|
||||
quota_max_threads_excess_workspace=The maximum number of concurrent threads exceeds the workspace quota
|
||||
quota_max_threads_excess_organization=The maximum number of concurrent threads exceeds the organization quota
|
||||
quota_duration_excess_workspace=The stress test duration exceeds the work space quota
|
||||
quota_duration_excess_organization=The stress test duration exceeds the organization quota
|
||||
import_xmind_count_error=The number of use cases imported into the mind map cannot exceed 500
|
||||
import_xmind_not_found=Test case not found
|
||||
license_valid_license_error=Authorization authentication failed
|
||||
test_review_task_notice=Test review task notice
|
||||
test_track.length_less_than=The title is too long, the length must be less than
|
||||
# check owner
|
||||
check_owner_project=The current user does not have permission to operate this project
|
||||
check_owner_test=The current user does not have permission to operate this test
|
||||
check_owner_case=The current user does not have permission to operate this use case
|
||||
check_owner_plan=The current user does not have permission to operate this plan
|
||||
check_owner_review=The current user does not have permission to operate this review
|
||||
check_owner_comment=The current user does not have permission to manipulate this comment
|
||||
check_owner_read_only=The current user in this workspace is a read-only user
|
||||
upload_content_is_null=Imported content is empty
|
||||
test_plan_notification=Test plan notification
|
||||
task_defect_notification=Task defect notification
|
||||
task_notification_=Timing task result notification
|
||||
api_definition_url_not_repeating=The interface request address already exists
|
||||
task_notification_jenkins=Jenkins Task notification
|
||||
task_notification=Result notification
|
||||
message_task_already_exists=Task recipient already exists
|
||||
#automation
|
||||
automation_name_already_exists=the scenario already exists in the project and the module
|
||||
automation_exec_info=There are no test steps to execute
|
||||
#authsource
|
||||
authsource_name_already_exists=Authentication source name already exists
|
||||
authsource_name_is_null=Authentication source name cannot be empty
|
||||
authsource_configuration_is_null=Authentication source configuration cannot be empty
|
||||
个人信息=Personal Information
|
||||
仪表板=Dashboard
|
||||
修改密码=Change Password
|
||||
|
||||
@ -1,189 +1,3 @@
|
||||
#commons
|
||||
error_lang_invalid=语言参数错误
|
||||
file_cannot_be_null=文件不能为空!
|
||||
cannot_be_null=不能为空
|
||||
number=第
|
||||
row=行
|
||||
error=出错
|
||||
delete_fail=删除失败
|
||||
start_engine_fail=启动失败
|
||||
upload_fail=文件上传失败
|
||||
#user related
|
||||
user_email_already_exists=用户邮箱已存在
|
||||
user_id_is_null=用户ID不能为空
|
||||
user_name_is_null=用户名不能为空
|
||||
user_email_is_null=用户邮箱不能为空
|
||||
password_is_null=密码不能为空
|
||||
user_id_already_exists=用户id已存在
|
||||
password_modification_failed=旧密码输入错误,请重新输入
|
||||
cannot_delete_current_user=无法删除当前登录用户
|
||||
connection_failed=连接失败
|
||||
user_already_exists=该用户已存在于当前成员列表中
|
||||
cannot_remove_current=无法移除当前登录用户
|
||||
login_fail=登录失败
|
||||
password_is_incorrect=用户名或密码不正确
|
||||
user_not_exist=用户不存在:
|
||||
user_has_been_disabled=用户已被禁用
|
||||
excessive_attempts=操作频繁
|
||||
user_locked=用户被锁定
|
||||
user_expires=用户过期
|
||||
not_authorized=未经授权
|
||||
user_apikey_limit=最多能有5个Api key
|
||||
#load test
|
||||
edit_load_test_not_found=无法编辑测试,未找到测试:
|
||||
run_load_test_not_found=无法运行测试,未找到测试:
|
||||
run_load_test_file_not_found=无法运行测试,无法获取测试文件元信息,测试ID:
|
||||
run_load_test_file_content_not_found=无法运行测试,无法获取测试文件内容,测试ID:
|
||||
run_load_test_file_init_error=无法运行测试,请检查当前站点配置
|
||||
load_test_is_running=测试正在运行, 请等待
|
||||
load_test_kafka_invalid=Kafka 不可用,请检查配置
|
||||
cannot_edit_load_test_running=不能修改正在运行的测试
|
||||
test_not_found=测试不存在:
|
||||
test_not_running=测试未运行
|
||||
load_test_already_exists=测试名称不能重复
|
||||
no_nodes_message=没有节点信息
|
||||
duplicate_node_ip=节点 IP 重复
|
||||
duplicate_node_port=节点 Port 重复
|
||||
duplicate_node_ip_port=节点 IP、Port 重复
|
||||
max_thread_insufficient=并发用户数超额
|
||||
related_case_del_fail_prefix=已关联到
|
||||
related_case_del_fail_suffix=测试用例,请先解除关联
|
||||
jmx_content_valid=JMX 内容无效,请检查
|
||||
container_delete_fail=容器由于网络原因停止失败,请重试
|
||||
load_test_report_file_not_exist=当前报告没有JTL文件,请等待或重新执行以便获取
|
||||
#workspace
|
||||
workspace_name_is_null=工作空间名不能为空
|
||||
workspace_name_already_exists=工作空间名已存在
|
||||
workspace_does_not_belong_to_user=当前工作空间不属于当前用户
|
||||
workspace_not_exists=工作空间不存在
|
||||
#test resource pool
|
||||
test_resource_pool_id_is_null=资源池ID不能为空
|
||||
test_resource_pool_name_is_null=资源池名称不能为空
|
||||
test_resource_pool_name_already_exists=资源池名称已存在
|
||||
load_test=性能测试
|
||||
test_resource_pool_is_use=正在使用此资源池,无法删除
|
||||
only_one_k8s=只能添加一个 K8S
|
||||
#project
|
||||
project_name_is_null=项目名称不能为空
|
||||
project_name_already_exists=项目名称已存在
|
||||
#organization
|
||||
organization_name_is_null=组织名不能为空
|
||||
organization_name_already_exists=组织名已存在
|
||||
organization_does_not_belong_to_user=当前组织不属于当前用户
|
||||
organization_id_is_null=组织 ID 不能为空
|
||||
#api
|
||||
api_load_script_error=读取脚本失败
|
||||
api_report_is_null="测试报告是未生成,无法更新"
|
||||
api_test_environment_already_exists="已存在该名称的环境配置"
|
||||
#test case
|
||||
test_case_node_level=层
|
||||
test_case_node_level_tip=模块树最大深度为
|
||||
test_case_module_not_null=所属模块不能为空
|
||||
test_case_create_module_fail=创建模块失败
|
||||
test_case_import_template_name=测试用例模版
|
||||
test_case_import_template_sheet=模版
|
||||
module_not_null=所属模块不能为空格
|
||||
user_not_exists=该工作空间下无该用户
|
||||
test_case_already_exists=该项目下已存在该测试用例
|
||||
parse_data_error=解析数据出错
|
||||
missing_header_information=缺少头部信息
|
||||
test_case_exist=该项目下已存在用例:
|
||||
node_deep_limit=节点深度不超过8层!
|
||||
before_delete_plan=该计划下存在关联测试用例,请先取消关联!
|
||||
incorrect_format=格式错误
|
||||
test_case_type_validate=必须为functional、performance、api
|
||||
test_case_priority_validate=必须为P0、P1、P2、P3
|
||||
test_case_method_validate=必须为manual、auto
|
||||
test_case_name=用例名称
|
||||
test_case_type=用例类型
|
||||
test_case_maintainer=维护人
|
||||
test_case_priority=用例等级
|
||||
test_case_method=测试方式
|
||||
test_case_prerequisite=前置条件
|
||||
test_case_remark=备注
|
||||
test_case_step_desc=步骤描述
|
||||
test_case_step_result=预期结果
|
||||
test_case_module=所属模块
|
||||
test_case=测试用例
|
||||
module=模块
|
||||
preconditions_optional=前置条件选填
|
||||
step_tip_separate=每个步骤以换行分隔
|
||||
step_tip_order=步骤前可标序号
|
||||
step_tip_optional=步骤前可标序号
|
||||
result_tip_separate=每条结果以换行分隔
|
||||
result_tip_order=结果前可标序号
|
||||
result_tip_optional=测试步骤和结果选填
|
||||
remark_optional=备注选填
|
||||
do_not_modify_header_order=请勿修改表头顺序
|
||||
module_created_automatically=若无该模块将自动创建
|
||||
options=选项
|
||||
please_input_workspace_member=请填写该工作空间相关人员
|
||||
test_case_report_template_repeat=同一工作空间下不能存在同名模版
|
||||
plan_name_already_exists=测试计划名称已存在
|
||||
test_case_already_exists_excel=导入文件中存在重复用例
|
||||
test_case_module_already_exists=同层级下已存在该模块名称
|
||||
api_test_name_already_exists=测试名称已经存在
|
||||
functional_method_tip=功能测试不支持自动方式
|
||||
#ldap
|
||||
ldap_url_is_null=LDAP地址为空
|
||||
ldap_dn_is_null=LDAP绑定DN为空
|
||||
ldap_ou_is_null=LDAP参数OU为空
|
||||
ldap_password_is_null=LDAP密码为空
|
||||
ldap_connect_fail=连接LDAP失败
|
||||
ldap_connect_fail_user=连接LDAP失败,绑定的DN或密码错误
|
||||
ldap_user_filter_is_null=LDAP用户过滤器为空
|
||||
ldap_user_mapping_is_null=LDAP用户属性映射为空
|
||||
authentication_failed=用户认证失败,用户名或密码错误
|
||||
user_not_found_or_not_unique=用户不存在或者不唯一
|
||||
find_more_user=查找到多个用户
|
||||
ldap_authentication_not_enabled=LDAP认证未启用
|
||||
login_fail_email_null=登录失败,用户邮箱为空
|
||||
login_fail_ou_error=登录失败,请检查用户OU
|
||||
login_fail_filter_error=登录失败,请检查用户过滤器
|
||||
check_ldap_mapping=检查LDAP属性映射
|
||||
ldap_mapping_value_null=LDAP用户属性映射字段为空值
|
||||
#quota
|
||||
quota_workspace_excess_org_api=工作空间的接口测试数量总和不能超过组织的配额
|
||||
quota_workspace_excess_org_performance=工作空间的性能测试数量总和不能超过组织的配额
|
||||
quota_workspace_excess_org_max_threads=工作空间的最大并发数不能超过组织的配额
|
||||
quota_workspace_excess_org_max_duration=工作空间的压测时长不能超过组织的配额
|
||||
quota_workspace_excess_org_resource_pool=工作空间的资源池不能超过组织的资源池范围
|
||||
quota_api_excess_workspace=接口测试数量超过工作空间限额
|
||||
quota_api_excess_organization=接口测试数量超过组织限额
|
||||
quota_performance_excess_workspace=性能测试数量超过工作空间限额
|
||||
quota_performance_excess_organization=性能测试数量超过组织限额
|
||||
quota_max_threads_excess_workspace=最大并发数超过工作空间限额
|
||||
quota_max_threads_excess_organization=最大并发数超过组织限额
|
||||
quota_duration_excess_workspace=压测时长超过工作空间限额
|
||||
quota_duration_excess_organization=压测时长超过组织限额
|
||||
import_xmind_count_error=思维导图导入用例数量不能超过 500 条
|
||||
license_valid_license_error=授权认证失败
|
||||
import_xmind_not_found=未找到测试用例
|
||||
test_review_task_notice=测试评审任务通知
|
||||
test_track.length_less_than=标题过长,字数必须小于
|
||||
# check owner
|
||||
check_owner_project=当前用户没有操作此项目的权限
|
||||
check_owner_test=当前用户没有操作此测试的权限
|
||||
check_owner_case=当前用户没有操作此用例的权限
|
||||
check_owner_plan=当前用户没有操作此计划的权限
|
||||
check_owner_review=当前用户没有操作此评审的权限
|
||||
check_owner_comment=当前用户没有操作此评论的权限
|
||||
check_owner_read_only=当前用户在此工作空间为只读用户
|
||||
upload_content_is_null=导入内容为空
|
||||
test_plan_notification=测试计划通知
|
||||
task_defect_notification=缺陷任务通知
|
||||
task_notification_=定时任务结果通知
|
||||
api_definition_url_not_repeating=接口请求地址已经存在
|
||||
task_notification_jenkins=jenkins任务通知
|
||||
task_notification=任务通知
|
||||
message_task_already_exists=任务接收人已经存在
|
||||
#automation
|
||||
automation_name_already_exists=同一个项目和模块下,场景名称不能重复
|
||||
automation_exec_info=没有测试步骤,无法执行
|
||||
#authsource
|
||||
authsource_name_already_exists=认证源名称已经存在
|
||||
authsource_name_is_null=认证源名称不能为空
|
||||
authsource_configuration_is_null=认证源配置不能为空
|
||||
个人信息=个人信息
|
||||
仪表板=仪表板
|
||||
修改密码=修改密码
|
||||
|
||||
@ -1,191 +1,3 @@
|
||||
#commons
|
||||
error_lang_invalid=語言參數錯誤
|
||||
file_cannot_be_null=文件不能為空!
|
||||
cannot_be_null=不能為空
|
||||
number=第
|
||||
row=行
|
||||
error=出錯
|
||||
connection_failed=連接失敗
|
||||
delete_fail=刪除失敗
|
||||
start_engine_fail=啟動失敗
|
||||
upload_fail=文件上傳失敗
|
||||
#user related
|
||||
user_email_already_exists=用戶郵箱已存在
|
||||
user_id_is_null=用戶ID不能為空
|
||||
user_name_is_null=用戶名不能為空
|
||||
user_email_is_null=用戶郵箱不能為空
|
||||
password_is_null=密碼不能為空
|
||||
user_id_already_exists=用戶id已存在
|
||||
password_modification_failed=舊密碼輸入錯誤,請重新輸入
|
||||
cannot_delete_current_user=無法刪除當前登錄用戶
|
||||
user_already_exists=該用戶已存在於當前成員列表中
|
||||
cannot_remove_current=無法移除當前登錄用戶
|
||||
password_is_incorrect=用戶名或密碼不正確
|
||||
user_not_exist=用戶不存在:
|
||||
user_has_been_disabled=用戶已被禁用
|
||||
excessive_attempts=操作頻繁
|
||||
user_locked=用戶被鎖定
|
||||
user_expires=用戶過期
|
||||
not_authorized=未經授權。
|
||||
login_fail=登入失敗
|
||||
user_apikey_limit=最多能有5個Api key
|
||||
#load test
|
||||
edit_load_test_not_found=無法編輯測試,未找到測試:
|
||||
run_load_test_not_found=無法運行測試,未找到測試:
|
||||
run_load_test_file_not_found=無法運行測試,無法獲取測試文件元信息,測試ID:
|
||||
run_load_test_file_content_not_found=無法運行測試,無法獲取測試文件內容,測試ID:
|
||||
run_load_test_file_init_error=無法運行測試,請檢查當前站點配置
|
||||
load_test_is_running=測試正在運行, 請等待
|
||||
load_test_kafka_invalid=Kafka 不可用,請檢查配置
|
||||
cannot_edit_load_test_running=不能修改正在運行的測試
|
||||
test_not_found=測試不存在:
|
||||
test_not_running=測試未運行
|
||||
load_test_already_exists=測試名稱不能重復
|
||||
no_nodes_message=沒有節點信息
|
||||
duplicate_node_ip=節點 IP 重復
|
||||
duplicate_node_port=節點 Port 重復
|
||||
duplicate_node_ip_port=節點 IP、Port 重復
|
||||
max_thread_insufficient=並發用戶數超額
|
||||
related_case_del_fail_prefix=已關聯到
|
||||
related_case_del_fail_suffix=測試用例,請先解除關聯
|
||||
jmx_content_valid=JMX 內容無效,請檢查
|
||||
container_delete_fail=容器由於網絡原因停止失敗,請重試
|
||||
load_test_report_file_not_exist=當前報告沒有JTL文件,請等待或重新執行以便獲取
|
||||
#workspace
|
||||
workspace_name_is_null=工作空間名不能為空
|
||||
workspace_name_already_exists=工作空間名已存在
|
||||
workspace_does_not_belong_to_user=當前工作空間不屬於當前用戶
|
||||
workspace_not_exists=工作空間不存在
|
||||
#test resource pool
|
||||
test_resource_pool_id_is_null=資源池ID不能為空
|
||||
test_resource_pool_name_is_null=資源池名稱不能為空
|
||||
test_resource_pool_name_already_exists=資源池名稱已存在
|
||||
load_test=性能測試
|
||||
test_resource_pool_is_use=正在使用此資源池,無法刪除
|
||||
only_one_k8s=只能添加一個 K8S
|
||||
#project
|
||||
project_name_is_null=項目名稱不能為空
|
||||
project_name_already_exists=項目名稱已存在
|
||||
#organization
|
||||
organization_name_is_null=組織名不能為空
|
||||
organization_name_already_exists=組織名已存在
|
||||
organization_does_not_belong_to_user=當前組織不屬於當前用戶
|
||||
organization_id_is_null=組織 ID 不能為空
|
||||
#api
|
||||
api_load_script_error=讀取腳本失敗
|
||||
api_report_is_null="測試報告是未生成,無法更新"
|
||||
api_test_environment_already_exists="已存在該名稱的環境配置"
|
||||
#test case
|
||||
test_case_node_level=層
|
||||
test_case_node_level_tip=模塊樹最大深度為
|
||||
test_case_module_not_null=所屬模塊不能為空
|
||||
test_case_create_module_fail=創建模塊失敗
|
||||
test_case_import_template_name=測試用例模版
|
||||
test_case_import_template_sheet=模版
|
||||
module_not_null=所屬模塊不能為空格
|
||||
user_not_exists=該工作空間下無該用戶
|
||||
test_case_already_exists=該項目下已存在該測試用例
|
||||
parse_data_error=解析數據出錯
|
||||
missing_header_information=缺少頭部信息
|
||||
test_case_exist=該項目下已存在用例:
|
||||
node_deep_limit=節點深度不超過8層!
|
||||
before_delete_plan=該計劃下存在關聯測試用例,請先取消關聯!
|
||||
incorrect_format=格式錯誤
|
||||
test_case_type_validate=必須為functional、performance、api
|
||||
test_case_priority_validate=必須為P0、P1、P2、P3
|
||||
test_case_method_validate=必須為manual、auto
|
||||
test_case_name=用例名稱
|
||||
test_case_type=用例類型
|
||||
test_case_maintainer=維護人
|
||||
test_case_priority=用例等級
|
||||
test_case_method=測試方式
|
||||
test_case_prerequisite=前置條件
|
||||
test_case_remark=備註
|
||||
test_case_step_desc=步驟描述
|
||||
test_case_step_result=預期結果
|
||||
test_case_module=所屬模塊
|
||||
test_case=測試用例
|
||||
module=模塊
|
||||
preconditions_optional=前置條件選填
|
||||
step_tip_separate=每個步驟以換行分隔
|
||||
step_tip_order=步驟前可標序號
|
||||
step_tip_optional=步驟前可標序號
|
||||
result_tip_separate=每條結果以換行分隔
|
||||
result_tip_order=結果前可標序號
|
||||
result_tip_optional=測試步驟和結果選填
|
||||
remark_optional=備註選填
|
||||
do_not_modify_header_order=請勿修改表頭順序
|
||||
module_created_automatically=若無該模塊將自動創建
|
||||
options=選項
|
||||
please_input_workspace_member=請填寫該工作空間相關人員
|
||||
test_case_report_template_repeat=同壹工作空間下不能存在同名模版
|
||||
plan_name_already_exists=測試計劃名稱已存在
|
||||
test_case_already_exists_excel=導入文件中存在重復用例
|
||||
test_case_module_already_exists=同層級下已存在該模塊名稱
|
||||
api_test_name_already_exists=測試名稱已經存在
|
||||
functional_method_tip=功能測試不支持自動方式
|
||||
#ldap
|
||||
ldap_url_is_null=LDAP地址為空
|
||||
ldap_dn_is_null=LDAP綁定DN為空
|
||||
ldap_ou_is_null=LDAP參數OU為空
|
||||
ldap_password_is_null=LDAP密碼為空
|
||||
ldap_connect_fail=連接LDAP失敗
|
||||
ldap_connect_fail_user=連接LDAP失敗,綁定的DN或密碼錯誤
|
||||
ldap_user_filter_is_null=LDAP用戶過濾器為空
|
||||
ldap_user_mapping_is_null=LDAP用戶屬性映射為空
|
||||
authentication_failed=用戶認證失敗,用戶名或密碼錯誤
|
||||
user_not_found_or_not_unique=用戶不存在或者不唯一
|
||||
find_more_user=查找到多個用戶
|
||||
ldap_authentication_not_enabled=LDAP認證未啟用
|
||||
login_fail_email_null=登錄失敗,用戶郵箱為空
|
||||
login_fail_ou_error=登錄失敗,請檢查用戶OU
|
||||
login_fail_filter_error=登錄失敗,請檢查用戶過濾器
|
||||
check_ldap_mapping=檢查LDAP屬性映射
|
||||
ldap_mapping_value_null=LDAP用戶屬性映射預設為空值
|
||||
#quota
|
||||
quota_workspace_excess_org_api=工作空間的接口測試數量總和不能超過組織的配額
|
||||
quota_workspace_excess_org_performance=工作空間的性能測試數量總和不能超過組織的配額
|
||||
quota_workspace_excess_org_max_threads=工作空間的最大並發數不能超過組織的配額
|
||||
quota_workspace_excess_org_max_duration=工作空間的壓測時長不能超過組織的配額
|
||||
quota_workspace_excess_org_resource_pool=工作空間的資源池不能超過組織的資源池範圍
|
||||
quota_api_excess_workspace=接口測試數量超過工作空間限額
|
||||
quota_api_excess_organization=接口測試數量超過組織限額
|
||||
quota_performance_excess_workspace=性能測試數量超過工作空間限額
|
||||
quota_performance_excess_organization=性能測試數量超過組織限額
|
||||
quota_max_threads_excess_workspace=最大並發數超過工作空間限額
|
||||
quota_max_threads_excess_organization=最大並發數超過組織限額
|
||||
quota_duration_excess_workspace=壓測時長超過工作空間限額
|
||||
quota_duration_excess_organization=壓測時長超過組織限額
|
||||
license_valid_license_error=授權驗證失敗
|
||||
license_valid_license_code=授權碼已經存在
|
||||
import_xmind_count_error=思維導圖導入用例數量不能超過 500 條
|
||||
import_xmind_not_found=未找到測試用例
|
||||
|
||||
test_review_task_notice=測試評審任務通知
|
||||
test_track.length_less_than=標題過長,字數必須小於
|
||||
# check owner
|
||||
check_owner_project=當前用戶沒有操作此項目的權限
|
||||
check_owner_test=當前用戶沒有操作此測試的權限
|
||||
check_owner_case=當前用戶沒有操作此用例的權限
|
||||
check_owner_plan=當前用戶沒有操作此計劃的權限
|
||||
check_owner_review=當前用戶沒有操作此評審的權限
|
||||
check_owner_comment=當前用戶沒有操作此評論的權限
|
||||
check_owner_read_only=當前用戶在此工作空間為只讀用戶
|
||||
upload_content_is_null=導入內容為空
|
||||
test_plan_notification=測試計畫通知
|
||||
task_defect_notification=缺陷任務通知
|
||||
task_notification_jenkins=jenkins任務通知
|
||||
task_notification=任務通知
|
||||
task_notification_=定時任務通知
|
||||
api_definition_url_not_repeating=接口請求地址已經存在
|
||||
message_task_already_exists=任務接收人已經存在
|
||||
#automation
|
||||
automation_name_already_exists=同一個項目和模塊下,場景名稱不能重複
|
||||
automation_exec_info=沒有測試步驟,無法執行
|
||||
#authsource
|
||||
authsource_name_already_exists=認證源名稱已經存在
|
||||
authsource_name_is_null=認證源名稱不能為空
|
||||
authsource_configuration_is_null=認證源配置不能為空
|
||||
个人信息=個人信息
|
||||
仪表板=儀表板
|
||||
修改密码=修改密碼
|
||||
|
||||
@ -1215,7 +1215,8 @@ export default {
|
||||
column_permission_not_empty: 'Please select authorization target',
|
||||
auth_type: 'Authorization type',
|
||||
auth_obj: 'Authorized object',
|
||||
enable: 'Enable column permissions',
|
||||
enable: 'Enable',
|
||||
disable: 'Disable',
|
||||
prohibit: 'Prohibit',
|
||||
desensitization: 'Desensitization'
|
||||
},
|
||||
|
||||
@ -1215,7 +1215,8 @@ export default {
|
||||
column_permission_not_empty: '列權限不能為空',
|
||||
auth_type: '授權類型',
|
||||
auth_obj: '授權對象',
|
||||
enable: '啟用列權限',
|
||||
enable: '啟用',
|
||||
disable: '禁用',
|
||||
prohibit: '禁用',
|
||||
desensitization: '脫敏'
|
||||
},
|
||||
|
||||
@ -1218,7 +1218,8 @@ export default {
|
||||
column_permission_not_empty: '列权限不能为空',
|
||||
auth_type: '授权类型',
|
||||
auth_obj: '授权对象',
|
||||
enable: '启用列权限',
|
||||
enable: '启用',
|
||||
disable: '禁用',
|
||||
prohibit: '禁用',
|
||||
desensitization: '脱敏'
|
||||
},
|
||||
|
||||
Loading…
Reference in New Issue
Block a user