Merge branch 'dev' into v1.17

This commit is contained in:
taojinlong 2022-11-28 23:10:49 +08:00
commit 9234c9d02d
18 changed files with 156 additions and 133 deletions

View File

@ -12,4 +12,6 @@ public class AccountLockStatus {
private Long unlockTime;
private Integer relieveTimes;
private Integer remainderTimes;
}

View File

@ -81,8 +81,8 @@ public class AuthServer implements AuthApi {
ValidateResult<XpackLdapUserEntity> validateResult = ldapXpackService.login(request);
if (!validateResult.isSuccess()) {
authUserService.recordLoginFail(username, 1);
DataEaseException.throwException(validateResult.getMsg());
AccountLockStatus lockStatus = authUserService.recordLoginFail(username, 1);
DataEaseException.throwException(appendLoginErrorMsg(validateResult.getMsg(), lockStatus));
}
XpackLdapUserEntity ldapUserEntity = validateResult.getData();
if (StringUtils.isBlank(ldapUserEntity.getEmail())) {
@ -120,19 +120,19 @@ public class AuthServer implements AuthApi {
SysUserEntity user = authUserService.getUserByName(username);
if (ObjectUtils.isEmpty(user)) {
authUserService.recordLoginFail(username, 0);
DataEaseException.throwException(Translator.get("i18n_user_do_not_exist"));
AccountLockStatus lockStatus = authUserService.recordLoginFail(username, 0);
DataEaseException.throwException(appendLoginErrorMsg(Translator.get("i18n_id_or_pwd_error"), lockStatus));
}
// 验证登录类型是否与用户类型相同
if (!sysUserService.validateLoginType(user.getFrom(), loginType)) {
authUserService.recordLoginFail(username, 0);
DataEaseException.throwException(Translator.get("i18n_login_type_error"));
AccountLockStatus lockStatus = authUserService.recordLoginFail(username, 0);
DataEaseException.throwException(appendLoginErrorMsg(Translator.get("i18n_login_type_error"), lockStatus));
}
if (user.getEnabled() == 0) {
authUserService.recordLoginFail(username, 0);
DataEaseException.throwException(Translator.get("i18n_user_is_disable"));
AccountLockStatus lockStatus = authUserService.recordLoginFail(username, 0);
DataEaseException.throwException(appendLoginErrorMsg(Translator.get("i18n_user_is_disable"), lockStatus));
}
String realPwd = user.getPassword();
@ -144,8 +144,8 @@ public class AuthServer implements AuthApi {
pwd = CodingUtil.md5(pwd);
if (!StringUtils.equals(pwd, realPwd)) {
authUserService.recordLoginFail(username, 0);
DataEaseException.throwException(Translator.get("i18n_id_or_pwd_error"));
AccountLockStatus lockStatus = authUserService.recordLoginFail(username, 0);
DataEaseException.throwException(appendLoginErrorMsg(Translator.get("i18n_id_or_pwd_error"), lockStatus));
}
}
@ -161,6 +161,15 @@ public class AuthServer implements AuthApi {
return result;
}
private String appendLoginErrorMsg(String msg, AccountLockStatus lockStatus) {
if (ObjectUtils.isEmpty(lockStatus)) return msg;
if (ObjectUtils.isNotEmpty(lockStatus.getRemainderTimes())) {
String i18n = Translator.get("i18n_login_remainder_times");
msg += String.format(i18n, lockStatus.getRemainderTimes());
}
return msg;
}
@Override
public CurrentUserDto userInfo() {
CurrentUserDto userDto = (CurrentUserDto) SecurityUtils.getSubject().getPrincipal();

View File

@ -55,7 +55,7 @@ public interface AuthUserService {
void checkAdmin(String uname, String pwd);
void recordLoginFail(String username, Integer logintype);
AccountLockStatus recordLoginFail(String username, Integer logintype);
void unlockAccount(String username, Integer logintype);

View File

@ -277,14 +277,16 @@ public class AuthUserServiceImpl implements AuthUserService {
}
@Override
public void recordLoginFail(String username, Integer logintype) {
if (!supportLoginLimit()) return;
public AccountLockStatus recordLoginFail(String username, Integer logintype) {
if (!supportLoginLimit()) return null;
long now = System.currentTimeMillis();
SysLoginLimit sysLoginLimit = new SysLoginLimit();
sysLoginLimit.setUsername(username);
sysLoginLimit.setLoginType(logintype);
sysLoginLimit.setRecordTime(now);
sysLoginLimitMapper.insert(sysLoginLimit);
return lockStatus(username, logintype);
}
@Override
@ -312,13 +314,16 @@ public class AuthUserServiceImpl implements AuthUserService {
SysLoginLimitExample example = new SysLoginLimitExample();
example.createCriteria().andUsernameEqualTo(username).andLoginTypeEqualTo(logintype).andRecordTimeGreaterThan(dividingPointTime);
List<SysLoginLimit> sysLoginLimits = sysLoginLimitMapper.selectByExample(example);
accountLockStatus.setRemainderTimes(limitTimes);
if (CollectionUtils.isNotEmpty(sysLoginLimits)) {
boolean needLock = sysLoginLimits.size() >= limitTimes;
accountLockStatus.setRemainderTimes(limitTimes - sysLoginLimits.size());
accountLockStatus.setLocked(needLock);
if (needLock) {
long unlockTime = now + (longRelieveTimes * 60L * 1000L);
accountLockStatus.setUnlockTime(unlockTime);
accountLockStatus.setRelieveTimes(relieveTimes);
accountLockStatus.setRemainderTimes(0);
}
}

View File

@ -364,10 +364,11 @@ public class DorisQueryProvider extends QueryProvider {
@Override
public String getSQLWithPage(boolean isTable, String table, List<ChartViewFieldDTO> xAxis, List<ChartFieldCustomFilterDTO> fieldCustomFilter, List<DataSetRowPermissionsTreeDTO> rowPermissionsTree, List<ChartExtFilterRequest> extFilterRequestList, Datasource ds, ChartViewWithBLOBs view, PageInfo pageInfo) {
String limit = ((pageInfo.getGoPage() != null && pageInfo.getPageSize() != null) ? " LIMIT " + (pageInfo.getGoPage() - 1) * pageInfo.getPageSize() + "," + pageInfo.getPageSize() : "");
if (isTable) {
return originalTableInfo(table, xAxis, fieldCustomFilter, rowPermissionsTree, extFilterRequestList, ds, view) + " LIMIT " + (pageInfo.getGoPage() - 1) * pageInfo.getPageSize() + "," + pageInfo.getPageSize();
return originalTableInfo(table, xAxis, fieldCustomFilter, rowPermissionsTree, extFilterRequestList, ds, view) + limit;
} else {
return originalTableInfo("(" + sqlFix(table) + ")", xAxis, fieldCustomFilter, rowPermissionsTree, extFilterRequestList, ds, view) + " LIMIT " + (pageInfo.getGoPage() - 1) * pageInfo.getPageSize() + "," + pageInfo.getPageSize();
return originalTableInfo("(" + sqlFix(table) + ")", xAxis, fieldCustomFilter, rowPermissionsTree, extFilterRequestList, ds, view) + limit;
}
}

View File

@ -364,10 +364,11 @@ public class MysqlQueryProvider extends QueryProvider {
@Override
public String getSQLWithPage(boolean isTable, String table, List<ChartViewFieldDTO> xAxis, List<ChartFieldCustomFilterDTO> fieldCustomFilter, List<DataSetRowPermissionsTreeDTO> rowPermissionsTree, List<ChartExtFilterRequest> extFilterRequestList, Datasource ds, ChartViewWithBLOBs view, PageInfo pageInfo) {
String limit = ((pageInfo.getGoPage() != null && pageInfo.getPageSize() != null) ? " LIMIT " + (pageInfo.getGoPage() - 1) * pageInfo.getPageSize() + "," + pageInfo.getPageSize() : "");
if (isTable) {
return originalTableInfo(table, xAxis, fieldCustomFilter, rowPermissionsTree, extFilterRequestList, ds, view) + " LIMIT " + (pageInfo.getGoPage() - 1) * pageInfo.getPageSize() + "," + pageInfo.getPageSize();
return originalTableInfo(table, xAxis, fieldCustomFilter, rowPermissionsTree, extFilterRequestList, ds, view) + limit;
} else {
return originalTableInfo("(" + sqlFix(table) + ")", xAxis, fieldCustomFilter, rowPermissionsTree, extFilterRequestList, ds, view) + " LIMIT " + (pageInfo.getGoPage() - 1) * pageInfo.getPageSize() + "," + pageInfo.getPageSize();
return originalTableInfo("(" + sqlFix(table) + ")", xAxis, fieldCustomFilter, rowPermissionsTree, extFilterRequestList, ds, view) + limit;
}
}

View File

@ -381,10 +381,11 @@ public class MysqlQueryProvider extends QueryProvider {
@Override
public String getSQLWithPage(boolean isTable, String table, List<ChartViewFieldDTO> xAxis, List<ChartFieldCustomFilterDTO> fieldCustomFilter, List<DataSetRowPermissionsTreeDTO> rowPermissionsTree, List<ChartExtFilterRequest> extFilterRequestList, Datasource ds, ChartViewWithBLOBs view, PageInfo pageInfo) {
if(isTable){
return originalTableInfo(table, xAxis, fieldCustomFilter, rowPermissionsTree, extFilterRequestList, ds, view) + " LIMIT " + (pageInfo.getGoPage() - 1) * pageInfo.getPageSize() + "," + pageInfo.getPageSize();
}else {
return originalTableInfo("(" + sqlFix(table) + ")", xAxis, fieldCustomFilter, rowPermissionsTree, extFilterRequestList, ds, view) + " LIMIT " + (pageInfo.getGoPage() - 1) * pageInfo.getPageSize() + "," + pageInfo.getPageSize();
String limit = ((pageInfo.getGoPage() != null && pageInfo.getPageSize() != null) ? " LIMIT " + (pageInfo.getGoPage() - 1) * pageInfo.getPageSize() + "," + pageInfo.getPageSize() : "");
if (isTable) {
return originalTableInfo(table, xAxis, fieldCustomFilter, rowPermissionsTree, extFilterRequestList, ds, view) + limit;
} else {
return originalTableInfo("(" + sqlFix(table) + ")", xAxis, fieldCustomFilter, rowPermissionsTree, extFilterRequestList, ds, view) + limit;
}
}

View File

@ -1011,7 +1011,7 @@ public class ChartDataBuild {
} else {
switch (columnPermissionItem.getDesensitizationRule().getCustomBuiltInRule()) {
case RetainBeforeMAndAfterN:
if (StringUtils.isEmpty(originStr) || originStr.length() < columnPermissionItem.getDesensitizationRule().getM() + columnPermissionItem.getDesensitizationRule().getN() + 1) {
if (StringUtils.isEmpty(originStr) || originStr.length() <= columnPermissionItem.getDesensitizationRule().getM() + columnPermissionItem.getDesensitizationRule().getN() + 1) {
desensitizationStr = String.join("", Collections.nCopies(columnPermissionItem.getDesensitizationRule().getM(), "X")) + "***" + String.join("", Collections.nCopies(columnPermissionItem.getDesensitizationRule().getN(), "X"));
} else {
desensitizationStr = StringUtils.substring(originStr, 0, columnPermissionItem.getDesensitizationRule().getM() - 1) + "***" + StringUtils.substring(originStr, originStr.length() - columnPermissionItem.getDesensitizationRule().getN(), originStr.length() - 1);

View File

@ -13,6 +13,7 @@ import io.dataease.plugins.common.dto.chart.ChartCustomFilterItemDTO;
import io.dataease.plugins.common.dto.chart.ChartFieldCustomFilterDTO;
import io.dataease.plugins.config.SpringContextUtil;
import io.dataease.plugins.xpack.auth.dto.request.*;
import io.dataease.plugins.xpack.auth.dto.response.Item;
import io.dataease.plugins.xpack.auth.service.ColumnPermissionService;
import io.dataease.plugins.xpack.auth.service.RowPermissionService;
import org.apache.commons.collections4.CollectionUtils;
@ -112,14 +113,14 @@ public class PermissionService {
}
if (CollectionUtils.isNotEmpty(fieldRoleColumnPermissionItems)) {
if (fieldRoleColumnPermissionItems.stream().map(ColumnPermissionItem::getOpt).collect(Collectors.toList()).contains(ColumnPermissionConstants.Desensitization)) {
desensitizationList.put(field.getDataeaseName(), fieldUserColumnPermissionItems.get(0));
desensitizationList.put(field.getDataeaseName(), fieldRoleColumnPermissionItems.get(0));
result.add(field);
}
return;
}
if (CollectionUtils.isNotEmpty(fieldDeptColumnPermissionItems)) {
if (fieldDeptColumnPermissionItems.stream().map(ColumnPermissionItem::getOpt).collect(Collectors.toList()).contains(ColumnPermissionConstants.Desensitization)) {
desensitizationList.put(field.getDataeaseName(), fieldUserColumnPermissionItems.get(0));
desensitizationList.put(field.getDataeaseName(), fieldDeptColumnPermissionItems.get(0));
result.add(field);
}
return;
@ -209,6 +210,12 @@ public class PermissionService {
dataSetColumnPermissionsDTO.setAuthTargetType("user");
datasetColumnPermissions.addAll(columnPermissionService.searchPermissions(dataSetColumnPermissionsDTO));
if (CollectionUtils.isNotEmpty(roleIds)) {
DataSetColumnPermissionsDTO request = new DataSetColumnPermissionsDTO();
request.setDatasetId(datasetId);
request.setAuthTargetType("role");
List<Item> items = (List<Item>)columnPermissionService.authObjs(request);
roleIds = roleIds.stream().filter(id -> {return items.stream().map(Item::getId).collect(Collectors.toList()).contains(id);}).collect(Collectors.toList());
if(CollectionUtils.isNotEmpty(roleIds)){
dataSetColumnPermissionsDTO.setAuthTargetIds(roleIds);
dataSetColumnPermissionsDTO.setAuthTargetType("role");
List<DataSetColumnPermissionsDTO> roleColumnPermissionsDTOS = new ArrayList<>();
@ -222,8 +229,14 @@ public class PermissionService {
}
datasetColumnPermissions.addAll(roleColumnPermissionsDTOS);
}
}
if (deptId != null) {
DataSetColumnPermissionsDTO request = new DataSetColumnPermissionsDTO();
request.setDatasetId(datasetId);
request.setAuthTargetType("dept");
List<Item> items = (List<Item>)columnPermissionService.authObjs(request);
if(items.stream().map(Item::getId).collect(Collectors.toList()).contains(deptId)){
dataSetColumnPermissionsDTO.setAuthTargetIds(Collections.singletonList(deptId));
dataSetColumnPermissionsDTO.setAuthTargetType("dept");
List<DataSetColumnPermissionsDTO> deptColumnPermissionsDTOS = new ArrayList<>();
@ -236,7 +249,7 @@ public class PermissionService {
}
datasetColumnPermissions.addAll(deptColumnPermissionsDTOS);
}
}
return datasetColumnPermissions;
}

View File

@ -73,28 +73,7 @@ dataease.sqlinjection.whitelists=/dataset/table/sqlPreview,/dataset/table/update
server.compression.enabled=true
server.compression.mime-types=application/javascript,text/css,application/json,application/xml,text/html,text/xml,text/plain
server.compression.min-response-size=1024
#\u4E0B\u9762\u7684\u914D\u7F6E\u65B0\u589E\u5230/opt/dataease/conf/dataease/properties
#\u7F13\u5B58\u7C7B\u578B
##spring.cache.type=redis
#spring.cache.type=ehcache
#redis\u516C\u5171\u914D\u7F6E
#spring.redis.timeout=10000
#spring.redis.lettuce.pool.max-active=8
#spring.redis.lettuce.pool.max-wait=-1
#spring.redis.lettuce.pool.max-idle=8
#\u5355\u673A\u6A21\u5F0Fredis\u914D\u7F6E
#spring.redis.database=0
#spring.redis.host=192.168.0.110
#spring.redis.port=6379
#spring.redis.password=DataEase_ZNB@REDIS
#\u54E8\u5175\u6A21\u5F0Fredis\u914D\u7F6E
#spring.redis.sentinel.master=mymaster
#spring.redis.sentinel.nodes=192.168.0.110:26379,192.168.0.110:26380,192.168.0.110:26381
#spring.redis.sentinel.password=
#cluster\u6A21\u5F0Fredis\u914D\u7F6E
#spring.redis.cluster.nodes=192.168.0.110:7001,192.168.0.110:7002,192.168.0.110:7003,192.168.0.110:7004,192.168.0.110:7005,192.168.0.110:7006
#spring.redis.cluster.max-redirects=3
#spring.redis.password=DataEase_ZNB@REDIS
server.servlet.context-parameters.configurationStrategy=SYSTEM_PROPERTIES
server.servlet.session.cookie.http-only=true
server.servlet.session.tracking-modes=cookie

View File

@ -75,6 +75,7 @@ i18n_sql_not_empty=SQL can not be empty.
i18n_datasource_not_allow_delete_msg=datasets are using this data source and cannot be deleted
i18n_task_name_repeat=Name is used in same data set
i18n_id_or_pwd_error=Invalid ID or password
i18n_login_remainder_times=(You can still enter %s times)
i18n_user_do_not_exist=User do not exist
i18n_user_is_disable=User is disabled
i18n_login_type_error=Login type error

View File

@ -75,6 +75,7 @@ i18n_sql_not_empty=SQL \u4E0D\u80FD\u4E3A\u7A7A
i18n_datasource_not_allow_delete_msg=\u4E2A\u6570\u636E\u96C6\u6B63\u5728\u4F7F\u7528\u6B64\u6570\u636E\u6E90\uFF0C\u65E0\u6CD5\u5220\u9664
i18n_task_name_repeat=\u540C\u4E00\u6570\u636E\u96C6\u4E0B\u4EFB\u52A1\u540D\u79F0\u5DF2\u88AB\u4F7F\u7528
i18n_id_or_pwd_error=\u65E0\u6548\u7684ID\u6216\u5BC6\u7801
i18n_login_remainder_times=(\u8FD8\u80FD\u8F93\u5165%s\u6B21)
i18n_user_do_not_exist=\u7528\u6237\u4E0D\u5B58\u5728
i18n_user_is_disable=\u7528\u6237\u72B6\u6001\u65E0\u6548
i18n_login_type_error=\u767B\u5F55\u65B9\u5F0F\u9519\u8BEF

View File

@ -75,6 +75,7 @@ i18n_sql_not_empty=SQL \u4E0D\u80FD\u70BA\u7A7A
i18n_datasource_not_allow_delete_msg=\u500B\u6578\u64DA\u96C6\u6B63\u5728\u4F7F\u7528\u6B64\u6578\u64DA\u6E90\uFF0C\u7121\u6CD5\u522A\u9664
i18n_task_name_repeat=\u540C\u4E00\u6578\u64DA\u96C6\u4E0B\u4EFB\u52D9\u540D\u7A31\u5DF2\u88AB\u4F7F\u7528
i18n_id_or_pwd_error=\u7121\u6548\u7684ID\u6216\u5BC6\u78BC
i18n_login_remainder_times=(\u9084\u80FD\u8F38\u5165%s\u6B21)
i18n_user_do_not_exist=\u7528\u6236\u4E0D\u5B58\u5728
i18n_user_is_disable=\u7528\u6236\u72C0\u614B\u7121\u6548
i18n_login_type_error=\u767B\u9304\u65B9\u5F0F\u932F\u8AA4

View File

@ -136,7 +136,7 @@
key="__operation"
:label="$t('commons.operating')"
fixed="right"
min-width="100"
min-width="180"
>
<template slot-scope="scope">
<el-button
@ -147,6 +147,15 @@
>{{
$t(disableEdit(scope.row) ? 'auth.view' : 'commons.edit')
}}</el-button>
<el-button
class="de-text-btn mar3 mar6"
:disabled="disableExec(scope.row)"
type="text"
@click="execTask(scope.row)"
>{{ $t("emailtask.execute_now") }}
</el-button>
<el-dropdown
size="medium"
trigger="click"
@ -164,12 +173,6 @@
<template
v-if="!['Exec'].includes(scope.row.status)"
>
<el-dropdown-item
:disabled="disableExec(scope.row)"
command="exec"
>
{{ $t('components.run_once') }}
</el-dropdown-item>
<el-dropdown-item
v-if="scope.row.status === 'Pending'"
command="continue"
@ -858,8 +861,7 @@ export default {
},
disableExec(task) {
return (
task.status === 'Pending' ||
!hasDataPermission('manage', task.privileges)
task.status === 'Pending' || task.status ==='Exec' || !hasDataPermission('manage', task.privileges)
)
},
disableDelete(task) {

View File

@ -462,12 +462,8 @@ export default {
tabClick() {
if (this.tabActive === 'dataPreview') {
const reload = localStorage.getItem('reloadDsData')
if (reload === 'true') {
localStorage.setItem('reloadDsData', 'false')
this.initTable(this.param.id)
}
}
},
exportDataset() {

View File

@ -385,8 +385,8 @@ export default {
desc: [
{
min: 0,
max: 200,
message: i18n.t('datasource.input_limit', { num: '0~200' }),
max: 50,
message: i18n.t('datasource.input_limit', { num: '0~50' }),
trigger: 'blur'
}
],

View File

@ -391,7 +391,6 @@ export default {
width: 40px;
height: 40px;
background: #ffffff;
border: 1px solid #dee0e3;
border-radius: 4px;
display: flex;

View File

@ -6,12 +6,14 @@
type="primary"
icon="el-icon-plus"
@click="() => selectDataset()"
>{{ $t("dataset.add_task") }}</deBtn>
>{{ $t("dataset.add_task") }}
</deBtn>
<deBtn
:disabled="!multipleSelection.length"
secondary
@click="confirmDelete"
>{{ $t("organization.delete") }}</deBtn>
>{{ $t("organization.delete") }}
</deBtn>
</el-col>
<el-col
:span="14"
@ -33,8 +35,10 @@
:plain="!!filterTexts.length"
icon="iconfont icon-icon-filter"
@click="filterShow"
>{{ $t("user.filter")
}}<template v-if="filterTexts.length">
>{{
$t("user.filter")
}}
<template v-if="filterTexts.length">
({{ filterTexts.length }})
</template>
</deBtn>
@ -45,7 +49,8 @@
<deBtn
secondary
icon="el-icon-setting"
>{{ $t("user.list") }}</deBtn>
>{{ $t("user.list") }}
</deBtn>
<el-dropdown-menu
slot="dropdown"
class="list-columns-select"
@ -55,7 +60,8 @@
v-model="checkAll"
:indeterminate="isIndeterminate"
@change="handleCheckAllChange"
>{{ $t("dataset.check_all") }}</el-checkbox>
>{{ $t("dataset.check_all") }}
</el-checkbox>
<el-checkbox-group
v-model="checkedColumnNames"
@change="handleCheckedColumnNamesChange"
@ -64,7 +70,8 @@
v-for="column in columnNames"
:key="column.props"
:label="column.props"
>{{ $t(column.label) }}</el-checkbox>
>{{ $t(column.label) }}
</el-checkbox>
</el-checkbox-group>
</el-dropdown-menu>
</el-dropdown>
@ -76,7 +83,7 @@
>
<span class="sum">{{ paginationConfig.total }}</span>
<span class="title">{{ $t("user.result_one") }}</span>
<el-divider direction="vertical" />
<el-divider direction="vertical"/>
<i
v-if="showScroll"
class="el-icon-arrow-left arrow-filter"
@ -104,7 +111,8 @@
class="clear-btn"
icon="el-icon-delete"
@click="clearFilter"
>{{ $t("user.clear_filter") }}</el-button>
>{{ $t("user.clear_filter") }}
</el-button>
</div>
<div
id="resize-for-filter"
@ -244,16 +252,22 @@
key="__operation"
:label="$t('commons.operating')"
fixed="right"
width="100"
width="160"
>
<template slot-scope="scope">
<el-button
class="de-text-btn mar3 mar6"
type="text"
@click="selectDataset(scope.row)"
>{{
$t(disableEdit(scope.row) ? "auth.view" : "commons.edit")
}}</el-button>
>{{ $t(disableEdit(scope.row) ? "auth.view" : "commons.edit") }}
</el-button>
<el-button
class="de-text-btn mar3 mar6"
:disabled="disableExec(scope.row)"
type="text"
@click="execTask(scope.row)"
>{{ $t("emailtask.execute_now") }}
</el-button>
<el-dropdown
size="medium"
trigger="click"
@ -270,12 +284,6 @@
<template
v-if="!['Exec'].includes(scope.row.status)"
>
<el-dropdown-item
:disabled="disableExec(scope.row)"
command="exec"
>
{{ $t("components.run_once") }}
</el-dropdown-item>
<el-dropdown-item
v-if="scope.row.status === 'Pending'"
command="continue"
@ -333,10 +341,10 @@
</template>
<script>
import { columnOptions } from './options'
import { formatOrders } from '@/utils/index'
import { datasetTaskList, post } from '@/api/dataset/dataset'
import { hasDataPermission } from '@/utils/permission'
import {columnOptions} from './options'
import {formatOrders} from '@/utils/index'
import {datasetTaskList, post} from '@/api/dataset/dataset'
import {hasDataPermission} from '@/utils/permission'
import GridTable from '@/components/gridTable/index.vue'
import filterUser from './FilterUser.vue'
import msgCfm from '@/components/msgCfm/index'
@ -345,12 +353,13 @@ import keyEnter from '@/components/msgCfm/keyEnter.js'
export default {
name: 'DatasetTaskList',
components: { GridTable, filterUser },
components: {GridTable, filterUser},
mixins: [msgCfm, keyEnter],
props: {
transCondition: {
type: Object,
default: () => {}
default: () => {
}
}
},
data() {
@ -387,7 +396,7 @@ export default {
}
},
created() {
const { taskId, name } = this.transCondition
const {taskId, name} = this.transCondition
if (taskId) {
this.nickName = name
}
@ -418,7 +427,7 @@ export default {
document.querySelector('#resize-for-filter')
)
},
layoutResize: _.debounce(function() {
layoutResize: _.debounce(function () {
this.getScrollStatus()
}, 200),
scrollPre() {
@ -492,7 +501,7 @@ export default {
this.handleCurrentChange(1)
},
search(showLoading = true) {
const { taskId, name } = this.transCondition
const {taskId, name} = this.transCondition
const param = {
orders: formatOrders(this.orderConditions),
conditions: [...this.cacheCondition]
@ -511,7 +520,7 @@ export default {
field: 'dataset_table_task.id'
})
}
const { currentPage, pageSize } = this.paginationConfig
const {currentPage, pageSize} = this.paginationConfig
datasetTaskList(currentPage, pageSize, param, showLoading).then(
(response) => {
const multipleSelection = this.multipleSelection.map(ele => ele.id)
@ -559,7 +568,7 @@ export default {
})
},
changeTaskStatus(task) {
const { status } = task
const {status} = task
if (!['Pending', 'Underway'].includes(status)) {
return
}
@ -599,11 +608,12 @@ export default {
this.initSearch(true)
})
})
.catch(() => {})
.catch(() => {
})
},
selectDataset(row) {
if (row) {
const { datasetName, id, tableId } = row
const {datasetName, id, tableId} = row
this.$router.push({
path: '/task-ds-form',
query: {
@ -624,9 +634,7 @@ export default {
)
},
disableExec(task) {
return (task.status === 'Pending' ||
!hasDataPermission('manage', task.privileges)
)
return (task.status === 'Pending' || task.status ==='Exec' || !hasDataPermission('manage', task.privileges))
},
disableDelete(task) {
return false
@ -661,6 +669,7 @@ export default {
height: 100px;
overflow-y: auto;
}
.codemirror ::v-deep .CodeMirror-scroll {
height: 100px;
overflow-y: auto;
@ -708,6 +717,7 @@ export default {
border-radius: 4px;
}
}
.table-container {
height: calc(100% - 50px);
@ -744,8 +754,10 @@ export default {
width: 100%;
}
}
.de-card-dropdown {
margin-top: 0 !important;
.popper__arrow {
display: none !important;
}