Commit 40d820f6 by yuwei

2.0.0项目初始化

parent 2242e541
......@@ -88,7 +88,7 @@ public class DataWebResponseExceptionTranslator implements WebResponseExceptionT
message = "用户名或密码错误";
}
}
return new ResponseEntity<>(new DataOauthException(message), headers, HttpStatus.valueOf(HttpServletResponse.SC_INTERNAL_SERVER_ERROR));
return new ResponseEntity<>(new DataOauthException(message), headers, HttpStatus.valueOf(status));
}
public void setThrowableAnalyzer(ThrowableAnalyzer throwableAnalyzer) {
......
package cn.datax.common.core;
public interface RedisConstant {
String FACTORY_SOURCE_KEY = "data:factory:sources";
String FACTORY_SET_KEY = "data:factory:sets";
String MARKET_API_KEY = "data:market:apis";
String MARKET_API_MASK_KEY = "data:market:api:masks";
String SYSTEM_DICT_KEY = "data:system:dicts";
String SYSTEM_CONFIG_KEY = "data:system:configs";
}
package cn.datax.common.dictionary.utils;
import cn.datax.common.core.RedisConstant;
import cn.datax.common.redis.service.RedisService;
import cn.datax.common.utils.SpringContextHolder;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
import lombok.extern.slf4j.Slf4j;
import java.util.Optional;
@Slf4j
public class ConfigUtil {
......@@ -32,14 +32,8 @@ public class ConfigUtil {
* @param code
*/
public Object getConfig(String code) {
String key = "data:system:configs";
Object object = redisService.get(key);
if (null == object) {
return null;
}
JSONArray jsonArray = JSONArray.parseArray(JSON.toJSONString(object));
Object o = jsonArray.stream().filter(obj -> ((JSONObject) obj).get("configKey").equals(code))
.findFirst().orElse(null);
return o;
String key = RedisConstant.SYSTEM_CONFIG_KEY;
Object o = redisService.hget(key, code);
return Optional.ofNullable(o).orElse(null);
}
}
package cn.datax.common.dictionary.utils;
import cn.datax.common.core.RedisConstant;
import cn.datax.common.redis.service.RedisService;
import cn.datax.common.utils.SpringContextHolder;
import com.alibaba.fastjson.JSON;
......@@ -35,7 +36,7 @@ public class DictUtil {
* @param code
*/
public Object getDictItemList(String code) {
String key = "data:system:dicts";
String key = RedisConstant.SYSTEM_DICT_KEY;
Object object = redisService.get(key);
if (null == object) {
return null;
......@@ -53,7 +54,7 @@ public class DictUtil {
* @return
*/
public Object getDictItemValue(String code, String text) {
String key = "data:system:dicts";
String key = RedisConstant.SYSTEM_DICT_KEY;
Object object = redisService.get(key);
if (null == object) {
return null;
......
package cn.datax.common.mybatis.config;
import cn.datax.common.core.DataConstant;
import cn.datax.common.utils.SecurityUtil;
import com.baomidou.mybatisplus.core.handlers.MetaObjectHandler;
import org.apache.ibatis.reflection.MetaObject;
......@@ -12,7 +13,7 @@ public class DataMetaObjectHandler implements MetaObjectHandler {
public void insertFill(MetaObject metaObject) {
this.strictInsertFill(metaObject, "createTime", LocalDateTime.class, LocalDateTime.now());
this.strictInsertFill(metaObject, "updateTime", LocalDateTime.class, LocalDateTime.now());
this.strictInsertFill(metaObject, "status", String.class, "1");
this.strictInsertFill(metaObject, "status", String.class, DataConstant.EnableState.ENABLE);
String userId = getUserId();
this.strictInsertFill(metaObject, "createBy", String.class, userId);
this.strictInsertFill(metaObject, "updateBy", String.class, userId);
......
package cn.datax.service.data.factory.config;
import cn.datax.common.core.RedisConstant;
import cn.datax.common.redis.serializer.DataRedisSerializer;
import org.springframework.cache.CacheManager;
import org.springframework.cache.annotation.CachingConfigurerSupport;
......@@ -27,6 +28,7 @@ public class RedisCacheConfig extends CachingConfigurerSupport {
* @return
*/
@Bean
@Override
public KeyGenerator keyGenerator() {
return new KeyGenerator() {
@Override
......@@ -53,8 +55,8 @@ public class RedisCacheConfig extends CachingConfigurerSupport {
private Map<String, RedisCacheConfiguration> redisCacheConfigurationMap() {
Map<String, RedisCacheConfiguration> redisCacheConfigurationMap = new HashMap<>();
redisCacheConfigurationMap.put("data:factory:sources", redisCacheConfigurationWithTtl(30));
redisCacheConfigurationMap.put("data:factory:sets", redisCacheConfigurationWithTtl(30));
redisCacheConfigurationMap.put(RedisConstant.FACTORY_SOURCE_KEY, redisCacheConfigurationWithTtl(30));
redisCacheConfigurationMap.put(RedisConstant.FACTORY_SET_KEY, redisCacheConfigurationWithTtl(30));
return redisCacheConfigurationMap;
}
......
package cn.datax.service.data.factory.controller;
import cn.datax.common.core.DataConstant;
import cn.datax.common.core.JsonPage;
import cn.datax.common.core.R;
import cn.datax.common.validate.ValidationGroups;
......@@ -35,7 +36,7 @@ import java.util.stream.Collectors;
*/
@Api(tags = {"数据集信息表"})
@RestController
@RequestMapping("/dataSet")
@RequestMapping("/dataSets")
public class DataSetController extends BaseController {
@Autowired
......@@ -58,6 +59,16 @@ public class DataSetController extends BaseController {
return R.ok().setData(dataSetMapper.toVO(dataSetEntity));
}
@ApiOperation(value = "获取列表", notes = "")
@GetMapping("/list")
public R getDataSetList() {
QueryWrapper<DataSetEntity> queryWrapper = new QueryWrapper<>();
queryWrapper.eq("status", DataConstant.EnableState.ENABLE);
List<DataSetEntity> list = dataSetService.list(queryWrapper);
List<DataSetVo> collect = list.stream().map(dataSetMapper::toVO).collect(Collectors.toList());
return R.ok().setData(collect);
}
/**
* 分页查询信息
*
......@@ -118,4 +129,12 @@ public class DataSetController extends BaseController {
dataSetService.deleteDataSetById(id);
return R.ok();
}
@ApiOperation(value = "批量删除", notes = "根据url的ids来批量删除对象")
@ApiImplicitParam(name = "ids", value = "ID集合", required = true, dataType = "List", paramType = "path")
@DeleteMapping("/batch/{ids}")
public R deleteDataSetBatch(@PathVariable List<String> ids) {
dataSetService.deleteDataSetBatch(ids);
return R.ok();
}
}
package cn.datax.service.data.factory.controller;
import cn.datax.common.core.DataConstant;
import cn.datax.common.core.JsonPage;
import cn.datax.common.core.R;
import cn.datax.common.database.DbQuery;
......@@ -41,7 +42,7 @@ import java.util.stream.Collectors;
*/
@Api(tags = {"数据源信息表"})
@RestController
@RequestMapping("/dataSource")
@RequestMapping("/dataSources")
public class DataSourceController extends BaseController {
@Autowired
......@@ -64,6 +65,16 @@ public class DataSourceController extends BaseController {
return R.ok().setData(dataSourceMapper.toVO(dataSourceEntity));
}
@ApiOperation(value = "获取列表", notes = "")
@GetMapping("/list")
public R getDataSourceList() {
QueryWrapper<DataSourceEntity> queryWrapper = new QueryWrapper<>();
queryWrapper.eq("status", DataConstant.EnableState.ENABLE);
List<DataSourceEntity> list = dataSourceService.list(queryWrapper);
List<DataSourceVo> collect = list.stream().map(dataSourceMapper::toVO).collect(Collectors.toList());
return R.ok().setData(collect);
}
/**
* 分页查询信息
*
......@@ -125,6 +136,14 @@ public class DataSourceController extends BaseController {
return R.ok();
}
@ApiOperation(value = "批量删除", notes = "根据url的ids来批量删除对象")
@ApiImplicitParam(name = "ids", value = "ID集合", required = true, dataType = "List", paramType = "path")
@DeleteMapping("/batch/{ids}")
public R deleteDataSourceBatch(@PathVariable List<String> ids) {
dataSourceService.deleteDataSourceBatch(ids);
return R.ok();
}
/**
* 检测数据库连通性
* @param dataSource
......
......@@ -4,6 +4,8 @@ import cn.datax.service.data.factory.api.entity.DataSetEntity;
import cn.datax.service.data.factory.api.dto.DataSetDto;
import cn.datax.common.base.BaseService;
import java.util.List;
/**
* <p>
* 数据集信息表 服务类
......@@ -21,4 +23,6 @@ public interface DataSetService extends BaseService<DataSetEntity> {
DataSetEntity getDataSetById(String id);
void deleteDataSetById(String id);
void deleteDataSetBatch(List<String> ids);
}
......@@ -5,6 +5,8 @@ import cn.datax.service.data.factory.api.dto.DataSourceDto;
import cn.datax.service.data.factory.api.entity.DataSourceEntity;
import cn.datax.common.base.BaseService;
import java.util.List;
/**
* <p>
* 数据源信息表 服务类
......@@ -23,6 +25,8 @@ public interface DataSourceService extends BaseService<DataSourceEntity> {
void deleteDataSourceById(String id);
void deleteDataSourceBatch(List<String> ids);
DbQuery checkConnection(DataSourceDto dataSource);
DbQuery getDbQuery(String id);
......
package cn.datax.service.data.factory.service.impl;
import cn.datax.common.core.RedisConstant;
import cn.datax.service.data.factory.api.dto.DataSetDto;
import cn.datax.service.data.factory.api.entity.DataSetEntity;
import cn.datax.service.data.factory.service.DataSetService;
......@@ -15,6 +16,8 @@ import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Propagation;
import org.springframework.transaction.annotation.Transactional;
import java.util.List;
/**
* <p>
* 数据集信息表 服务实现类
......@@ -23,7 +26,7 @@ import org.springframework.transaction.annotation.Transactional;
* @author yuwei
* @since 2020-03-20
*/
@CacheConfig(cacheNames = "data:factory:sets")
@CacheConfig(cacheNames = RedisConstant.FACTORY_SET_KEY)
@Service
@Transactional(propagation = Propagation.SUPPORTS, readOnly = true, rollbackFor = Exception.class)
public class DataSetServiceImpl extends BaseServiceImpl<DataSetDao, DataSetEntity> implements DataSetService {
......@@ -62,4 +65,10 @@ public class DataSetServiceImpl extends BaseServiceImpl<DataSetDao, DataSetEntit
public void deleteDataSetById(String id) {
dataSetDao.deleteById(id);
}
@Override
@Transactional(rollbackFor = Exception.class)
public void deleteDataSetBatch(List<String> ids) {
dataSetDao.deleteBatchIds(ids);
}
}
package cn.datax.service.data.factory.service.impl;
import cn.datax.common.core.RedisConstant;
import cn.datax.common.database.DataSourceFactory;
import cn.datax.common.database.DbQuery;
import cn.datax.common.database.constants.DbQueryProperty;
......@@ -19,6 +20,8 @@ import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Propagation;
import org.springframework.transaction.annotation.Transactional;
import java.util.List;
/**
* <p>
* 数据源信息表 服务实现类
......@@ -27,7 +30,7 @@ import org.springframework.transaction.annotation.Transactional;
* @author yuwei
* @since 2020-03-14
*/
@CacheConfig(cacheNames = "data:factory:sources")
@CacheConfig(cacheNames = RedisConstant.FACTORY_SOURCE_KEY)
@Service
@Transactional(propagation = Propagation.SUPPORTS, readOnly = true, rollbackFor = Exception.class)
public class DataSourceServiceImpl extends BaseServiceImpl<DataSourceDao, DataSourceEntity> implements DataSourceService {
......@@ -71,6 +74,12 @@ public class DataSourceServiceImpl extends BaseServiceImpl<DataSourceDao, DataSo
}
@Override
@Transactional(rollbackFor = Exception.class)
public void deleteDataSourceBatch(List<String> ids) {
dataSourceDao.deleteBatchIds(ids);
}
@Override
public DbQuery checkConnection(DataSourceDto dataSourceDto) {
DataSourceEntity dataSource = dataSourceMapper.toEntity(dataSourceDto);
DbSchema dbSchema = dataSource.getDbSchema();
......
package cn.datax.service.data.market.config;
import cn.datax.common.core.RedisConstant;
import cn.datax.common.redis.serializer.DataRedisSerializer;
import org.springframework.cache.CacheManager;
import org.springframework.cache.annotation.CachingConfigurerSupport;
......@@ -27,6 +28,7 @@ public class RedisCacheConfig extends CachingConfigurerSupport {
* @return
*/
@Bean
@Override
public KeyGenerator keyGenerator() {
return new KeyGenerator() {
@Override
......@@ -53,8 +55,8 @@ public class RedisCacheConfig extends CachingConfigurerSupport {
private Map<String, RedisCacheConfiguration> redisCacheConfigurationMap() {
Map<String, RedisCacheConfiguration> redisCacheConfigurationMap = new HashMap<>();
redisCacheConfigurationMap.put("data:market:apis", redisCacheConfigurationWithTtl(30));
redisCacheConfigurationMap.put("data:market:api:masks", redisCacheConfigurationWithTtl(30));
redisCacheConfigurationMap.put(RedisConstant.MARKET_API_KEY, redisCacheConfigurationWithTtl(30));
redisCacheConfigurationMap.put(RedisConstant.MARKET_API_MASK_KEY, redisCacheConfigurationWithTtl(30));
return redisCacheConfigurationMap;
}
......
package cn.datax.service.data.market.service.impl;
import cn.datax.common.base.BaseServiceImpl;
import cn.datax.common.core.RedisConstant;
import cn.datax.service.data.market.api.dto.ApiMaskDto;
import cn.datax.service.data.market.api.entity.ApiMaskEntity;
import cn.datax.service.data.market.api.vo.ApiMaskVo;
import cn.datax.service.data.market.dao.ApiMaskDao;
import cn.datax.service.data.market.mapstruct.ApiMaskMapper;
import cn.datax.service.data.market.service.ApiMaskService;
......@@ -25,7 +25,7 @@ import org.springframework.transaction.annotation.Transactional;
* @author yuwei
* @since 2020-04-14
*/
@CacheConfig(cacheNames = "data:api:masks")
@CacheConfig(cacheNames = RedisConstant.MARKET_API_MASK_KEY)
@Service
@Transactional(propagation = Propagation.SUPPORTS, readOnly = true, rollbackFor = Exception.class)
public class ApiMaskServiceImpl extends BaseServiceImpl<ApiMaskDao, ApiMaskEntity> implements ApiMaskService {
......
package cn.datax.service.data.market.service.impl;
import cn.datax.common.core.DataConstant;
import cn.datax.common.core.RedisConstant;
import cn.datax.common.exception.DataException;
import cn.datax.common.utils.ThrowableUtil;
import cn.datax.service.data.market.api.dto.*;
......@@ -48,7 +49,7 @@ import java.util.stream.Collectors;
* @author yuwei
* @since 2020-03-31
*/
@CacheConfig(cacheNames = "data:market:apis")
@CacheConfig(cacheNames = RedisConstant.MARKET_API_KEY)
@Slf4j
@Service
@Transactional(propagation = Propagation.SUPPORTS, readOnly = true, rollbackFor = Exception.class)
......
package cn.datax.service.quartz.controller;
import cn.datax.common.core.DataConstant;
import cn.datax.common.core.JsonPage;
import cn.datax.common.core.R;
import cn.datax.common.validate.ValidationGroups;
......@@ -59,6 +60,16 @@ public class QrtzJobController extends BaseController {
return R.ok().setData(qrtzJobMapper.toVO(qrtzJobEntity));
}
@ApiOperation(value = "获取列表", notes = "")
@GetMapping("/list")
public R getQrtzJobList() {
QueryWrapper<QrtzJobEntity> queryWrapper = new QueryWrapper<>();
queryWrapper.eq("status", DataConstant.EnableState.ENABLE);
List<QrtzJobEntity> list = qrtzJobService.list(queryWrapper);
List<QrtzJobVo> collect = list.stream().map(qrtzJobMapper::toVO).collect(Collectors.toList());
return R.ok().setData(collect);
}
/**
* 分页查询信息
*
......
package cn.datax.service.system.config;
import cn.datax.common.core.DataConstant;
import cn.datax.common.core.RedisConstant;
import cn.datax.common.redis.service.RedisService;
import cn.datax.service.system.api.entity.ConfigEntity;
import cn.datax.service.system.api.entity.DictEntity;
......@@ -17,6 +18,8 @@ import org.springframework.stereotype.Component;
import java.time.LocalDateTime;
import java.time.format.DateTimeFormatter;
import java.util.List;
import java.util.Map;
import java.util.stream.Collectors;
@Component
@RequiredArgsConstructor
......@@ -43,17 +46,18 @@ public class StartedUpRunner implements ApplicationRunner {
System.out.println(banner);
// 项目启动时,初始化缓存
String dictKey = "data:system:dicts";
String dictKey = RedisConstant.SYSTEM_DICT_KEY;
Boolean hasDictKey = redisService.hasKey(dictKey);
if (!hasDictKey) {
List<DictEntity> dictEntityList = dictDao.queryDictList(DataConstant.EnableState.ENABLE.getKey());
redisService.set(dictKey, dictEntityList);
}
String configKey = "data:system:configs";
String configKey = RedisConstant.SYSTEM_CONFIG_KEY;
Boolean hasConfigKey = redisService.hasKey(configKey);
if (!hasConfigKey) {
List<ConfigEntity> configEntityList = configDao.queryConfigList(DataConstant.EnableState.ENABLE.getKey());
redisService.set(configKey, configEntityList);
Map<String, Object> map = configEntityList.stream().collect(Collectors.toMap(ConfigEntity::getConfigKey, ConfigEntity::getConfigValue));
redisService.hmset(configKey, map);
}
}
}
......
package cn.datax.service.system.service.impl;
import cn.datax.common.core.DataConstant;
import cn.datax.common.core.RedisConstant;
import cn.datax.common.redis.service.RedisService;
import cn.datax.service.system.api.dto.ConfigDto;
import cn.datax.service.system.api.entity.ConfigEntity;
......@@ -14,6 +15,8 @@ import org.springframework.transaction.annotation.Propagation;
import org.springframework.transaction.annotation.Transactional;
import java.util.List;
import java.util.Map;
import java.util.stream.Collectors;
/**
* <p>
......@@ -72,12 +75,13 @@ public class ConfigServiceImpl extends BaseServiceImpl<ConfigDao, ConfigEntity>
@Override
public void refreshConfig() {
String key = "data:system:configs";
String key = RedisConstant.SYSTEM_CONFIG_KEY;
Boolean hasKey = redisService.hasKey(key);
if (hasKey) {
redisService.del(key);
}
List<ConfigEntity> configEntityList = configDao.queryConfigList(DataConstant.EnableState.ENABLE.getKey());
redisService.set(key, configEntityList);
Map<String, Object> map = configEntityList.stream().collect(Collectors.toMap(ConfigEntity::getConfigKey, ConfigEntity::getConfigValue));
redisService.hmset(key, map);
}
}
package cn.datax.service.system.service.impl;
import cn.datax.common.core.DataConstant;
import cn.datax.common.core.RedisConstant;
import cn.datax.common.exception.DataException;
import cn.datax.common.redis.service.RedisService;
import cn.datax.service.system.api.entity.DictEntity;
......@@ -72,7 +73,7 @@ public class DictServiceImpl extends BaseServiceImpl<DictDao, DictEntity> implem
@Override
public void refreshDict() {
String key = "data:system:dicts";
String key = RedisConstant.SYSTEM_DICT_KEY;
Boolean hasKey = redisService.hasKey(key);
if (hasKey) {
redisService.del(key);
......
......@@ -133,7 +133,7 @@ public class UserServiceImpl extends BaseServiceImpl<UserDao, UserEntity> implem
@Transactional(rollbackFor = Exception.class)
public void updateUserPassword(UserPasswordDto userPasswordDto) {
UserEntity userEntity = userDao.selectById(userPasswordDto.getId());
if(!StrUtil.equals(userEntity.getPassword(), new BCryptPasswordEncoder().encode(userPasswordDto.getOldPassword()))){
if(!new BCryptPasswordEncoder().matches(userPasswordDto.getOldPassword(), userEntity.getPassword())){
throw new DataException("旧密码不正确");
}
String passwordEncode = new BCryptPasswordEncoder().encode(userPasswordDto.getPassword());
......
import request from '@/utils/request'
export function listDataSet (data) {
return request({
url: '/factory/dataSets/list',
method: 'get',
params: data
})
}
export function pageDataSet (data) {
return request({
url: '/factory/dataSets/page',
method: 'get',
params: data
})
}
export function getDataSet (id) {
return request({
url: '/factory/dataSets/' + id,
method: 'get'
})
}
export function delDataSet (id) {
return request({
url: '/factory/dataSets/' + id,
method: 'delete'
})
}
export function delDataSets (ids) {
return request({
url: '/factory/dataSets/batch/' + ids,
method: 'delete'
})
}
export function addDataSet (data) {
return request({
url: '/factory/dataSets',
method: 'post',
data: data
})
}
export function updateDataSet (data) {
return request({
url: '/factory/dataSets/' + data.id,
method: 'put',
data: data
})
}
import request from '@/utils/request'
export function listDataSource (data) {
return request({
url: '/factory/dataSources/list',
method: 'get',
params: data
})
}
export function pageDataSource (data) {
return request({
url: '/factory/dataSources/page',
method: 'get',
params: data
})
}
export function getDataSource (id) {
return request({
url: '/factory/dataSources/' + id,
method: 'get'
})
}
export function delDataSource (id) {
return request({
url: '/factory/dataSources/' + id,
method: 'delete'
})
}
export function delDataSources (ids) {
return request({
url: '/factory/dataSources/batch/' + ids,
method: 'delete'
})
}
export function addDataSource (data) {
return request({
url: '/factory/dataSources',
method: 'post',
data: data
})
}
export function updateDataSource (data) {
return request({
url: '/factory/dataSources/' + data.id,
method: 'put',
data: data
})
}
import request from '@/utils/request'
export function listJob (data) {
return request({
url: '/quartz/jobs/list',
method: 'get',
params: data
})
}
export function pageJob (data) {
return request({
url: '/quartz/jobs/page',
......
......@@ -17,9 +17,11 @@ import '@/icons'
import perms from '@/directive/permission'
import { getDicts } from '@/api/system/dict'
import { getConfigKey } from '@/api/system/config'
// 全局方法挂载
Vue.prototype.getDicts = getDicts
Vue.prototype.getConfigKey = getConfigKey
Vue.use(ElementUI)
......
......@@ -69,9 +69,7 @@ instance.interceptors.response.use(
setTimeout(() => {
router.replace({
path: '/login',
query: {
redirect: router.currentRoute.fullPath
}
query: { redirect: router.currentRoute.fullPath }
})
}, 1000)
break
......
<template>
<div>
<el-card class="box-card" shadow="always" :body-style="{ height: bodyHeight }" style="overflow-y: auto;">
<div slot="header" class="clearfix">
<span>{{ title }}</span>
<el-button-group style="float: right;">
<el-button size="mini" icon="el-icon-plus" round @click="submitForm" :loading="loadingOptions.loading" :disabled="loadingOptions.isDisabled">{{loadingOptions.loadingText}}</el-button>
<el-button size="mini" icon="el-icon-back" round @click="showCard">返回</el-button>
</el-button-group>
</div>
<el-form ref="form" :model="form" :rules="rules" label-width="80px">
<el-form-item label="数据源" prop="sourceId">
<el-select v-model="form.sourceId" placeholder="请选择数据源">
<el-option
v-for="source in sourceOptions"
:key="source.id"
:label="source.sourceName"
:value="source.id"
:disabled="source.status === '0'"
></el-option>
</el-select>
</el-form-item>
<el-form-item label="数据集名称" prop="setName">
<el-input v-model="form.setName" placeholder="请输入数据集名称" />
</el-form-item>
<el-form-item label="数据集sql" prop="setSql">
<el-input v-model="form.setSql" placeholder="请输入数据集sql" />
</el-form-item>
<el-form-item label="状态" prop="status">
<el-radio-group v-model="form.status">
<el-radio
v-for="dict in statusOptions"
:key="dict.id"
:label="dict.itemText"
>{{dict.itemValue}}</el-radio>
</el-radio-group>
</el-form-item>
<el-form-item label="备注" prop="remark">
<el-input v-model="form.remark" type="textarea" placeholder="请输入内容" />
</el-form-item>
</el-form>
</el-card>
</div>
</template>
<script>
import { addDataSet } from '@/api/factory/dataset'
import { listDataSource } from '@/api/factory/datasource'
export default {
name: 'DataSetAdd',
props: {
data: {
type: Object,
default: function () {
return {}
}
}
},
data () {
return {
bodyHeight: document.body.offsetHeight - 130 + 'px',
title: '数据集新增',
// 展示切换
showOptions: {
data: {},
showList: true,
showAdd: false,
showEdit: false,
showDetail: false
},
// 保存按钮
loadingOptions: {
loading: false,
loadingText: '保存',
isDisabled: false
},
// 表单参数
form: {
status: '1'
},
// 表单校验
rules: {
setName: [
{ required: true, message: '数据集名称不能为空', trigger: 'blur' }
]
},
// 状态数据字典
statusOptions: [],
// 数据源数据字典
sourceOptions: []
}
},
created () {
this.getDicts('sys_common_status').then(response => {
if (response.success) {
this.statusOptions = response.data
}
})
this.getDataSourceList()
},
methods: {
showCard () {
this.$emit('showCard', this.showOptions)
},
getDataSourceList () {
listDataSource().then(response => {
if (response.success) {
this.sourceOptions = response.data
}
})
},
/** 提交按钮 */
submitForm: function () {
this.$refs['form'].validate(valid => {
if (valid) {
this.loadingOptions.loading = true
this.loadingOptions.loadingText = '保存中...'
this.loadingOptions.isDisabled = true
addDataSet(this.form).then(response => {
if (response.success) {
this.$message.success('保存成功')
setTimeout(() => {
// 2秒后跳转列表页
this.$emit('showCard', this.showOptions)
}, 2000)
} else {
this.$message.error('保存失败')
this.loadingOptions.loading = false
this.loadingOptions.loadingText = '保存'
this.loadingOptions.isDisabled = false
}
})
}
})
}
}
}
</script>
<style lang="scss" scoped>
</style>
<template>
<div>
<el-card class="box-card" shadow="always" :body-style="{ height: bodyHeight }" style="overflow-y: auto;">
<div slot="header" class="clearfix">
<span>{{ title }}</span>
<el-button-group style="float: right;">
<el-button size="mini" icon="el-icon-back" round @click="showCard">返回</el-button>
</el-button-group>
</div>
<el-form ref="form" :model="form" label-width="80px" disabled>
<el-form-item label="数据源" prop="sourceId">
<el-select v-model="form.sourceId" placeholder="请选择数据源">
<el-option
v-for="source in sourceOptions"
:key="source.id"
:label="source.sourceName"
:value="source.id"
:disabled="source.status === '0'"
></el-option>
</el-select>
</el-form-item>
<el-form-item label="数据集名称" prop="setName">
<el-input v-model="form.setName" placeholder="请输入数据集名称" />
</el-form-item>
<el-form-item label="数据集sql" prop="setSql">
<el-input v-model="form.setSql" placeholder="请输入数据集sql" />
</el-form-item>
<el-form-item label="状态" prop="status">
<el-radio-group v-model="form.status">
<el-radio
v-for="dict in statusOptions"
:key="dict.id"
:label="dict.itemText"
>{{dict.itemValue}}</el-radio>
</el-radio-group>
</el-form-item>
<el-form-item label="备注" prop="remark">
<el-input v-model="form.remark" type="textarea" placeholder="请输入内容" />
</el-form-item>
</el-form>
</el-card>
</div>
</template>
<script>
import { getDataSet } from '@/api/factory/dataset'
import { listDataSource } from '@/api/factory/datasource'
export default {
name: 'DataSetDetail',
props: {
data: {
type: Object,
default: function () {
return {}
}
}
},
data () {
return {
bodyHeight: document.body.offsetHeight - 130 + 'px',
title: '数据集详情',
// 展示切换
showOptions: {
data: {},
showList: true,
showAdd: false,
showEdit: false,
showDetail: false
},
// 表单参数
form: {},
// 状态数据字典
statusOptions: [],
// 数据源数据字典
sourceOptions: []
}
},
created () {
console.log('id:' + this.data.id)
this.getDicts('sys_common_status').then(response => {
if (response.success) {
this.statusOptions = response.data
}
})
this.getDataSourceList()
this.getDataSet(this.data.id)
},
methods: {
showCard () {
this.$emit('showCard', this.showOptions)
},
getDataSourceList () {
listDataSource().then(response => {
if (response.success) {
this.sourceOptions = response.data
}
})
},
/** 获取详情 */
getDataSet: function (id) {
getDataSet(id).then(response => {
if (response.success) {
this.form = response.data
}
})
}
}
}
</script>
<style lang="scss" scoped>
</style>
<template>
<div>
<el-card class="box-card" shadow="always" :body-style="{ height: bodyHeight }" style="overflow-y: auto;">
<div slot="header" class="clearfix">
<span>{{ title }}</span>
<el-button-group style="float: right;">
<el-button size="mini" icon="el-icon-plus" round @click="submitForm" :loading="loadingOptions.loading" :disabled="loadingOptions.isDisabled">{{loadingOptions.loadingText}}</el-button>
<el-button size="mini" icon="el-icon-back" round @click="showCard">返回</el-button>
</el-button-group>
</div>
<el-form ref="form" :model="form" :rules="rules" label-width="80px">
<el-form-item label="数据源" prop="sourceId">
<el-select v-model="form.sourceId" placeholder="请选择数据源">
<el-option
v-for="source in sourceOptions"
:key="source.id"
:label="source.sourceName"
:value="source.id"
:disabled="source.status === '0'"
></el-option>
</el-select>
</el-form-item>
<el-form-item label="数据集名称" prop="setName">
<el-input v-model="form.setName" placeholder="请输入数据集名称" />
</el-form-item>
<el-form-item label="数据集sql" prop="setSql">
<el-input v-model="form.setSql" placeholder="请输入数据集sql" />
</el-form-item>
<el-form-item label="状态" prop="status">
<el-radio-group v-model="form.status">
<el-radio
v-for="dict in statusOptions"
:key="dict.id"
:label="dict.itemText"
>{{dict.itemValue}}</el-radio>
</el-radio-group>
</el-form-item>
<el-form-item label="备注" prop="remark">
<el-input v-model="form.remark" type="textarea" placeholder="请输入内容" />
</el-form-item>
</el-form>
</el-card>
</div>
</template>
<script>
import { getDataSet, updateDataSet } from '@/api/factory/dataset'
import { listDataSource } from '@/api/factory/datasource'
export default {
name: 'DataSetEdit',
props: {
data: {
type: Object,
default: function () {
return {}
}
}
},
data () {
return {
bodyHeight: document.body.offsetHeight - 130 + 'px',
title: '数据集编辑',
// 展示切换
showOptions: {
data: {},
showList: true,
showAdd: false,
showEdit: false,
showDetail: false
},
// 保存按钮
loadingOptions: {
loading: false,
loadingText: '保存',
isDisabled: false
},
// 表单参数
form: {},
// 表单校验
rules: {
setName: [
{ required: true, message: '数据集名称不能为空', trigger: 'blur' }
]
},
// 状态数据字典
statusOptions: [],
// 数据源数据字典
sourceOptions: []
}
},
created () {
console.log('id:' + this.data.id)
this.getDicts('sys_common_status').then(response => {
if (response.success) {
this.statusOptions = response.data
}
})
this.getDataSourceList()
this.getDataSet(this.data.id)
},
methods: {
showCard () {
this.$emit('showCard', this.showOptions)
},
getDataSourceList () {
listDataSource().then(response => {
if (response.success) {
this.sourceOptions = response.data
}
})
},
/** 获取详情 */
getDataSet: function (id) {
getDataSet(id).then(response => {
if (response.success) {
this.form = response.data
}
})
},
/** 提交按钮 */
submitForm: function () {
this.$refs['form'].validate(valid => {
if (valid) {
this.loadingOptions.loading = true
this.loadingOptions.loadingText = '保存中...'
this.loadingOptions.isDisabled = true
updateDataSet(this.form).then(response => {
if (response.success) {
this.$message.success('保存成功')
setTimeout(() => {
// 2秒后跳转列表页
this.$emit('showCard', this.showOptions)
}, 2000)
} else {
this.$message.error('保存失败')
this.loadingOptions.loading = false
this.loadingOptions.loadingText = '保存'
this.loadingOptions.isDisabled = false
}
})
}
})
}
}
}
</script>
<style lang="scss" scoped>
</style>
<template>
<div class="app-container">
<transition name="el-zoom-in-center">
<data-set-list v-if="options.showList" @showCard="showCard"></data-set-list>
</transition>
<transition name="el-zoom-in-top">
<data-set-add v-if="options.showAdd" :data="options.data" @showCard="showCard"></data-set-add>
</transition>
<transition name="el-zoom-in-top">
<data-set-edit v-if="options.showEdit" :data="options.data" @showCard="showCard"></data-set-edit>
</transition>
<transition name="el-zoom-in-bottom">
<data-set-detail v-if="options.showDetail" :data="options.data" @showCard="showCard"></data-set-detail>
</transition>
</div>
</template>
<script>
import DataSetList from './DataSetList'
import DataSetAdd from './DataSetAdd'
import DataSetEdit from './DataSetEdit'
import DataSetDetail from './DataSetDetail'
export default {
name: 'DataSet',
components: { DataSetList, DataSetAdd, DataSetEdit, DataSetDetail },
data () {
return {
options: {
data: {},
showList: true,
showAdd: false,
showEdit: false,
showDetail: false
}
}
},
methods: {
showCard (data) {
Object.assign(this.options, data)
}
}
}
</script>
<style lang="scss" scoped>
</style>
<template>
<div>
<el-card class="box-card" shadow="always" :body-style="{ height: bodyHeight }" style="overflow-y: auto;">
<div slot="header" class="clearfix">
<span>{{ title }}</span>
<el-button-group style="float: right;">
<el-button size="mini" icon="el-icon-plus" round @click="submitForm" :loading="loadingOptions.loading" :disabled="loadingOptions.isDisabled">{{loadingOptions.loadingText}}</el-button>
<el-button size="mini" icon="el-icon-back" round @click="showCard">返回</el-button>
</el-button-group>
</div>
<el-form ref="form" :model="form" :rules="rules" label-width="80px">
<el-form-item label="岗位名称" prop="postName">
<el-input v-model="form.postName" placeholder="请输入岗位名称" />
</el-form-item>
<el-form-item label="状态" prop="status">
<el-radio-group v-model="form.status">
<el-radio
v-for="dict in statusOptions"
:key="dict.id"
:label="dict.itemText"
>{{dict.itemValue}}</el-radio>
</el-radio-group>
</el-form-item>
<el-form-item label="备注" prop="remark">
<el-input v-model="form.remark" type="textarea" placeholder="请输入内容" />
</el-form-item>
</el-form>
</el-card>
</div>
</template>
<script>
import { addDataSource } from '@/api/factory/datasource'
export default {
name: 'DataSourceAdd',
props: {
data: {
type: Object,
default: function () {
return {}
}
}
},
data () {
return {
bodyHeight: document.body.offsetHeight - 130 + 'px',
title: '数据源新增',
// 展示切换
showOptions: {
data: {},
showList: true,
showAdd: false,
showEdit: false,
showDetail: false
},
// 保存按钮
loadingOptions: {
loading: false,
loadingText: '保存',
isDisabled: false
},
// 表单参数
form: {
status: '1'
},
// 表单校验
rules: {
postName: [
{ required: true, message: '岗位名称不能为空', trigger: 'blur' }
]
},
// 状态数据字典
statusOptions: []
}
},
created () {
this.getDicts('sys_common_status').then(response => {
if (response.success) {
this.statusOptions = response.data
}
})
},
methods: {
showCard () {
this.$emit('showCard', this.showOptions)
},
/** 提交按钮 */
submitForm: function () {
this.$refs['form'].validate(valid => {
if (valid) {
this.loadingOptions.loading = true
this.loadingOptions.loadingText = '保存中...'
this.loadingOptions.isDisabled = true
addPost(this.form).then(response => {
if (response.success) {
this.$message.success('保存成功')
setTimeout(() => {
// 2秒后跳转列表页
this.$emit('showCard', this.showOptions)
}, 2000)
} else {
this.$message.error('保存失败')
this.loadingOptions.loading = false
this.loadingOptions.loadingText = '保存'
this.loadingOptions.isDisabled = false
}
})
}
})
}
}
}
</script>
<style lang="scss" scoped>
</style>
<template>
<div>
<el-card class="box-card" shadow="always" :body-style="{ height: bodyHeight }" style="overflow-y: auto;">
<div slot="header" class="clearfix">
<span>{{ title }}</span>
<el-button-group style="float: right;">
<el-button size="mini" icon="el-icon-back" round @click="showCard">返回</el-button>
</el-button-group>
</div>
<el-form ref="form" :model="form" label-width="80px" disabled>
<el-form-item label="岗位名称" prop="postName">
<el-input v-model="form.postName" />
</el-form-item>
<el-form-item label="岗位状态" prop="status">
<el-radio-group v-model="form.status">
<el-radio
v-for="dict in statusOptions"
:key="dict.id"
:label="dict.itemText"
>{{dict.itemValue}}</el-radio>
</el-radio-group>
</el-form-item>
<el-form-item label="备注" prop="remark">
<el-input v-model="form.remark" type="textarea" />
</el-form-item>
</el-form>
</el-card>
</div>
</template>
<script>
import { getDataSource } from '@/api/factory/datasource'
export default {
name: 'DataSourceDetail',
props: {
data: {
type: Object,
default: function () {
return {}
}
}
},
data () {
return {
bodyHeight: document.body.offsetHeight - 130 + 'px',
title: '数据源详情',
// 展示切换
showOptions: {
data: {},
showList: true,
showAdd: false,
showEdit: false,
showDetail: false
},
// 表单参数
form: {},
// 状态数据字典
statusOptions: []
}
},
created () {
console.log('id:' + this.data.id)
this.getDicts('sys_common_status').then(response => {
if (response.success) {
this.statusOptions = response.data
}
})
this.getPost(this.data.id)
},
methods: {
showCard () {
this.$emit('showCard', this.showOptions)
},
/** 获取详情 */
getPost: function (id) {
getPost(id).then(response => {
if (response.success) {
this.form = response.data
}
})
}
}
}
</script>
<style lang="scss" scoped>
</style>
<template>
<div>
<el-card class="box-card" shadow="always" :body-style="{ height: bodyHeight }" style="overflow-y: auto;">
<div slot="header" class="clearfix">
<span>{{ title }}</span>
<el-button-group style="float: right;">
<el-button size="mini" icon="el-icon-plus" round @click="submitForm" :loading="loadingOptions.loading" :disabled="loadingOptions.isDisabled">{{loadingOptions.loadingText}}</el-button>
<el-button size="mini" icon="el-icon-back" round @click="showCard">返回</el-button>
</el-button-group>
</div>
<el-form ref="form" :model="form" :rules="rules" label-width="80px">
<el-form-item label="岗位名称" prop="postName">
<el-input v-model="form.postName" placeholder="请输入岗位名称" />
</el-form-item>
<el-form-item label="岗位状态" prop="status">
<el-radio-group v-model="form.status">
<el-radio
v-for="dict in statusOptions"
:key="dict.id"
:label="dict.itemText"
>{{dict.itemValue}}</el-radio>
</el-radio-group>
</el-form-item>
<el-form-item label="备注" prop="remark">
<el-input v-model="form.remark" type="textarea" placeholder="请输入内容" />
</el-form-item>
</el-form>
</el-card>
</div>
</template>
<script>
import { getDataSource, updateDataSource } from '@/api/factory/datasource'
export default {
name: 'DataSourceEdit',
props: {
data: {
type: Object,
default: function () {
return {}
}
}
},
data () {
return {
bodyHeight: document.body.offsetHeight - 130 + 'px',
title: '数据源编辑',
// 展示切换
showOptions: {
data: {},
showList: true,
showAdd: false,
showEdit: false,
showDetail: false
},
// 保存按钮
loadingOptions: {
loading: false,
loadingText: '保存',
isDisabled: false
},
// 表单参数
form: {},
// 表单校验
rules: {
postName: [
{ required: true, message: '岗位名称不能为空', trigger: 'blur' }
]
},
// 状态数据字典
statusOptions: []
}
},
created () {
console.log('id:' + this.data.id)
this.getDicts('sys_common_status').then(response => {
if (response.success) {
this.statusOptions = response.data
}
})
this.getPost(this.data.id)
},
methods: {
showCard () {
this.$emit('showCard', this.showOptions)
},
/** 获取详情 */
getPost: function (id) {
getPost(id).then(response => {
if (response.success) {
this.form = response.data
}
})
},
/** 提交按钮 */
submitForm: function () {
this.$refs['form'].validate(valid => {
if (valid) {
this.loadingOptions.loading = true
this.loadingOptions.loadingText = '保存中...'
this.loadingOptions.isDisabled = true
updatePost(this.form).then(response => {
if (response.success) {
this.$message.success('保存成功')
setTimeout(() => {
// 2秒后跳转列表页
this.$emit('showCard', this.showOptions)
}, 2000)
} else {
this.$message.error('保存失败')
this.loadingOptions.loading = false
this.loadingOptions.loadingText = '保存'
this.loadingOptions.isDisabled = false
}
})
}
})
}
}
}
</script>
<style lang="scss" scoped>
</style>
<template>
<div class="app-container">
<transition name="el-zoom-in-center">
<data-source-list v-if="options.showList" @showCard="showCard"></data-source-list>
</transition>
<transition name="el-zoom-in-top">
<data-source-add v-if="options.showAdd" :data="options.data" @showCard="showCard"></data-source-add>
</transition>
<transition name="el-zoom-in-top">
<data-source-edit v-if="options.showEdit" :data="options.data" @showCard="showCard"></data-source-edit>
</transition>
<transition name="el-zoom-in-bottom">
<data-source-detail v-if="options.showDetail" :data="options.data" @showCard="showCard"></data-source-detail>
</transition>
</div>
</template>
<script>
import DataSourceList from './DataSourceList'
import DataSourceAdd from './DataSourceAdd'
import DataSourceEdit from './DataSourceEdit'
import DataSourceDetail from './DataSourceDetail'
export default {
name: 'DataSource',
components: { DataSourceList, DataSourceAdd, DataSourceEdit, DataSourceDetail },
data () {
return {
options: {
data: {},
showList: true,
showAdd: false,
showEdit: false,
showDetail: false
}
}
},
methods: {
showCard (data) {
Object.assign(this.options, data)
}
}
}
</script>
<style lang="scss" scoped>
</style>
......@@ -64,9 +64,7 @@ export default {
showList: true,
showAdd: false,
showEdit: false,
showDetail: false,
showLogList: false,
showLogDetail: false
showDetail: false
},
// 保存按钮
loadingOptions: {
......
......@@ -63,9 +63,7 @@ export default {
showList: true,
showAdd: false,
showEdit: false,
showDetail: false,
showLogList: false,
showLogDetail: false
showDetail: false
},
// 表单参数
form: {},
......
......@@ -64,9 +64,7 @@ export default {
showList: true,
showAdd: false,
showEdit: false,
showDetail: false,
showLogList: false,
showLogDetail: false
showDetail: false
},
// 保存按钮
loadingOptions: {
......
......@@ -149,12 +149,6 @@
size="mini"
type="text"
icon="el-icon-edit-outline"
@click="handleLog(scope.row)"
>日志</el-button>
<el-button
size="mini"
type="text"
icon="el-icon-edit-outline"
@click="handleEdit(scope.row)"
v-hasPerm="['scheduler:job:edit']"
>修改</el-button>
......@@ -225,9 +219,7 @@ export default {
showList: true,
showAdd: false,
showEdit: false,
showDetail: false,
showLogList: false,
showLogDetail: false
showDetail: false
},
// 遮罩层
loading: true,
......@@ -319,25 +311,12 @@ export default {
this.single = selection.length !== 1
this.multiple = !selection.length
},
/** 日志按钮操作 */
handleLog (row) {
this.showOptions.data = {}
this.showOptions.data.jobId = row.id
this.showOptions.showList = false
this.showOptions.showAdd = false
this.showOptions.showEdit = false
this.showOptions.showDetail = false
this.showOptions.showLogList = true
this.$emit('showCard', this.showOptions)
},
/** 新增按钮操作 */
handleAdd () {
this.showOptions.data = {}
this.showOptions.showList = false
this.showOptions.showAdd = true
this.showOptions.showEdit = false
this.showOptions.showDetail = false
this.showOptions.showLogList = false
this.$emit('showCard', this.showOptions)
},
/** 修改按钮操作 */
......@@ -346,8 +325,6 @@ export default {
this.showOptions.showList = false
this.showOptions.showAdd = false
this.showOptions.showEdit = true
this.showOptions.showDetail = false
this.showOptions.showLogList = false
this.$emit('showCard', this.showOptions)
},
/** 详情按钮操作 */
......@@ -356,8 +333,6 @@ export default {
this.showOptions.showList = false
this.showOptions.showAdd = false
this.showOptions.showEdit = false
this.showOptions.showDetail = true
this.showOptions.showLogList = false
this.$emit('showCard', this.showOptions)
},
/** 暂停任务按钮操作 */
......@@ -441,9 +416,9 @@ export default {
let status = row.status
let status_dictText = row.status_dictText
if (status === '0') {
return <el-tag type="warning">{status_dictText}</el-tag>
return `<el-tag type="warning">{status_dictText}</el-tag>`
} else {
return <el-tag type="success">{status_dictText}</el-tag>
return `<el-tag type="success">{status_dictText}</el-tag>`
}
}
}
......
......@@ -12,12 +12,6 @@
<transition name="el-zoom-in-bottom">
<job-detail v-if="options.showDetail" :data="options.data" @showCard="showCard"></job-detail>
</transition>
<transition name="el-zoom-in-center">
<job-log-list v-if="options.showLogList" :data="options.data" @showCard="showCard"></job-log-list>
</transition>
<transition name="el-zoom-in-bottom">
<job-log-detail v-if="options.showLogDetail" :data="options.data" @showCard="showCard"></job-log-detail>
</transition>
</div>
</template>
......@@ -26,12 +20,10 @@ import JobList from './JobList'
import JobAdd from './JobAdd'
import JobEdit from './JobEdit'
import JobDetail from './JobDetail'
import JobLogList from '../log/JobLogList'
import JobLogDetail from '../log/JobLogDetail'
export default {
name: 'Job',
components: { JobList, JobAdd, JobEdit, JobDetail, JobLogList, JobLogDetail },
components: { JobList, JobAdd, JobEdit, JobDetail },
data () {
return {
options: {
......@@ -39,9 +31,7 @@ export default {
showList: true,
showAdd: false,
showEdit: false,
showDetail: false,
showLogList: false,
showLogDetail: false
showDetail: false
}
}
},
......
......@@ -49,11 +49,7 @@ export default {
showOptions: {
data: {},
showList: true,
showAdd: false,
showEdit: false,
showDetail: false,
showLogList: false,
showLogDetail: false
showDetail: false
},
// 表单参数
form: {},
......
......@@ -2,19 +2,25 @@
<div>
<el-card class="box-card" shadow="always" :body-style="{ height: bodyHeight }" style="overflow-y: auto;">
<el-form :model="queryParams" ref="queryForm" :inline="true">
<el-form-item label="参数名称" prop="configName">
<el-input
v-model="queryParams.configName"
placeholder="请输入参数名称"
<el-form-item label="定时任务" prop="jobId">
<el-select
v-model="queryParams.jobId"
placeholder="定时任务"
clearable
size="small"
@keyup.enter.native="handleQuery"
style="width: 240px"
>
<el-option
v-for="job in jobOptions"
:key="job.id"
:label="job.jobName"
:value="job.id"
/>
</el-select>
</el-form-item>
<el-form-item>
<el-button type="primary" icon="el-icon-search" size="mini" @click="handleQuery">搜索</el-button>
<el-button icon="el-icon-refresh" size="mini" @click="resetQuery">重置</el-button>
<el-button size="mini" icon="el-icon-back" round @click="showCard">返回主表</el-button>
</el-form-item>
</el-form>
......@@ -140,17 +146,10 @@
<script>
import { pageLog, delLog } from '@/api/scheduler/log'
import { listJob } from '@/api/scheduler/job'
export default {
name: 'LogList',
props: {
data: {
type: Object,
default: function () {
return {}
}
}
},
data () {
return {
bodyHeight: document.body.offsetHeight - 130 + 'px',
......@@ -159,11 +158,7 @@ export default {
showOptions: {
data: {},
showList: true,
showAdd: false,
showEdit: false,
showDetail: false,
showLogList: false,
showLogDetail: false
showDetail: false
},
// 遮罩层
loading: true,
......@@ -195,19 +190,24 @@ export default {
queryParams: {
pageNum: 1,
pageSize: 20,
configName: ''
}
jobId: ''
},
// 定时任务数据字典
jobOptions: []
}
},
created () {
console.log('data:' + JSON.stringify(this.data))
this.queryParams.jobId = this.data.jobId
this.getList()
this.initCols()
this.getJobList()
},
methods: {
showCard () {
this.$emit('showCard', this.showOptions)
getJobList () {
listJob().then(response => {
if (response.success) {
this.jobOptions = response.data
}
})
},
/** 查询参数列表 */
getList () {
......@@ -260,11 +260,7 @@ export default {
handleDetail (row) {
this.showOptions.data.id = row.id || this.ids[0]
this.showOptions.showList = false
this.showOptions.showAdd = false
this.showOptions.showEdit = false
this.showOptions.showDetail = false
this.showOptions.showLogList = false
this.showOptions.showLogDetail = true
this.$emit('showCard', this.showOptions)
},
/** 删除按钮操作 */
......@@ -305,9 +301,9 @@ export default {
statusFormatter (row, column, cellValue, index) {
let status = row.status
if (status === '0') {
return <el-tag type="warning">失败</el-tag>
return `<el-tag type="warning">失败</el-tag>`
} else {
return <el-tag type="success">成功</el-tag>
return `<el-tag type="success">成功</el-tag>`
}
}
}
......
<template>
<div class="app-container">
<transition name="el-zoom-in-center">
<job-log-list v-if="options.showList" @showCard="showCard"></job-log-list>
</transition>
<transition name="el-zoom-in-bottom">
<job-log-detail v-if="options.showDetail" :data="options.data" @showCard="showCard"></job-log-detail>
</transition>
</div>
</template>
<script>
import JobLogList from './JobLogList'
import JobLogDetail from './JobLogDetail'
export default {
name: 'Job',
components: { JobLogList, JobLogDetail },
data () {
return {
options: {
data: {},
showList: true,
showDetail: false
}
}
},
methods: {
showCard (data) {
Object.assign(this.options, data)
}
}
}
</script>
<style lang="scss" scoped>
</style>
......@@ -15,9 +15,6 @@
<el-form-item label="用户昵称" prop="nickname">
<el-input v-model="form.nickname" placeholder="请输入用户昵称" />
</el-form-item>
<el-form-item label="用户密码" prop="password">
<el-input type="password" v-model="form.password" placeholder="请输入用户密码" />
</el-form-item>
<el-form-item label="电子邮箱" prop="email">
<el-input v-model="form.email" placeholder="请输入电子邮箱" />
</el-form-item>
......@@ -126,9 +123,6 @@ export default {
nickname: [
{ required: true, message: '用户昵称不能为空', trigger: 'blur' }
],
password: [
{ required: true, message: '用户密码不能为空', trigger: 'blur' }
],
email: [
{ required: true, message: '电子邮箱不能为空', trigger: 'blur' },
{
......@@ -156,7 +150,9 @@ export default {
// 岗位选项
postOptions: [],
// 角色选项
roleOptions: []
roleOptions: [],
// 默认密码
initPassword: undefined
}
},
created () {
......@@ -165,6 +161,12 @@ export default {
this.statusOptions = response.data
}
})
this.getConfigKey("sys.user.initPassword").then(response => {
if (response.success) {
this.initPassword = response.data
this.form.password = this.initPassword
}
})
this.getDeptTreeSelect()
this.getPostList()
this.getRoleList()
......
......@@ -118,9 +118,6 @@ export default {
nickname: [
{ required: true, message: '用户昵称不能为空', trigger: 'blur' }
],
password: [
{ required: true, message: '用户密码不能为空', trigger: 'blur' }
],
email: [
{ required: true, message: '电子邮箱不能为空', trigger: 'blur' },
{
......@@ -237,12 +234,6 @@ export default {
})
}
})
},
change1 () {
console.log(this.form.postList)
},
change2 () {
console.log(this.form.roleList)
}
}
}
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment