Commit d15dc085 authored by taosim's avatar taosim

应标功能

parent 4c36796a
This diff is collapsed.
No preview for this file type
......@@ -40,9 +40,7 @@
"vue-router": "3.4.9",
"vue-template-compiler": "^2.6.14",
"vue2-org-tree": "^1.3.5",
"vuex": "3.6.0",
"jwt-decode": "3.1.2"
"vuex": "3.6.0"
},
"devDependencies": {
"@vue/cli-plugin-babel": "4.4.6",
......
......@@ -5,7 +5,7 @@ import cookie from './cookie';
import httpErrorHandler from './httpErrorHandler';
const instance = axios.create({
baseURL: '/study',
baseURL: '/etl',
headers: {
post: {
'Content-Type': 'application/json;charset=UTF-8',
......
......@@ -70,7 +70,7 @@ export default {
const type = urlArray.pop();
group.unshift({
name: "政务在线考试学习系统"
name: "政务BIG DATA数据治理系统"
})
if(types[type]) {
group.push({
......
......@@ -9,7 +9,7 @@
<i class="el-icon-menu" @click='showMobileMenu=!showMobileMenu'> </i>
<router-link to="/">
<img src="../assets/images/logo.png" style="margin-bottom:5px" height="40" alt="">
<b style="color:white;font-size:18px;">&nbsp;&nbsp;&nbsp; 政务在线考试学习系统 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</b>
<b style="color:white;font-size:18px;">&nbsp;&nbsp;&nbsp; 政务BIG DATA数据治理系统 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</b>
</router-link>
</div>
......
......@@ -42,6 +42,14 @@ const router = new Router({
//模块配置
...restBuilder('dept', 'dept'),
...restBuilder('scheduled/task', 'scheduled/task'),
...restBuilder('database/rule', 'database/rule'),
...restBuilder('base/rule', 'base/rule'),
...restBuilder('data/source', 'data/source'),
...restBuilder('quality/analysis', 'quality/analysis'),
...restBuilder('line/analysis', 'line/analysis'),
//以下为基础路由配置
builder('blank', 'blank'),
......
<template>
<!-- 弹出框表单 -->
<el-dialog :title="title" :visible.sync="open" width="90%" append-to-body>
<el-form ref="form" :model="form" :rules="rules" label-width="120px">
<el-row>
<Field label="规则名称" prop="name" v-model="form.name" placeholder="请输入规则名称"/>
<Field label="检测对象" prop="testItem" v-model="form.testItem" placeholder="请输入检测对象"/>
<Field label="检测指标" prop="indicators" v-model="form.indicators" type="select" :enumData="dict.indicators" placeholder="请选择检测指标"/>
<Field label="规则类型" prop="type" v-model="form.type" type="select" :enumData="dict.type" placeholder="请选择规则类型"/>
<Field label="规则内容"><editor v-model="form.content" :min-height="256"/></Field>
<Field label="规则描述" prop="description" v-model="form.description" type="textarea" placeholder="请输入规则描述"/>
<Field label="备注" prop="remark" v-model="form.remark" type="textarea" placeholder="请输入备注"/>
</el-row>
</el-form>
<div slot="footer" class="dialog-footer">
<el-button type="primary" v-if="pageInfo.type !== 'view'" @click="submitForm">确 定</el-button>
<el-button @click="cancel">取 消</el-button>
</div>
</el-dialog>
</template>
<script>
import form from "@/assets/mixins/formdialog";
import dialogShow from "./dialogshow";
import Editor from '@/components/Editor';
export default {
mixins: [form],
components: {
dialogShow ,
Editor,
},
data() {
return {
// 遮罩层
loading: true,
// 弹出层标题
title: "数据公共规则",
// 是否显示弹出层
open: false,
toString:[
],
// 表单校验
rules: {
name: [
{required: true,message: "请输入规则名称", trigger: "blur" },
{max: 32,message: "最多只能录入32个字符",trigger: "blur",},
],
testItem: [
{required: true,message: "请输入检测对象", trigger: "blur" },
{max: 32,message: "最多只能录入32个字符",trigger: "blur",},
],
indicators: [
{required: true,message: "请输入检测指标", trigger: "blur" },
{max: 1,message: "最多只能录入1个字符",trigger: "blur",},
],
type: [
{required: true,message: "请输入规则类型", trigger: "blur" },
{max: 1,message: "最多只能录入1个字符",trigger: "blur",},
],
content: [
{required: true,message: "请输入规则内容", trigger: "blur" },
{max: 256,message: "最多只能录入256个字符",trigger: "blur",},
],
description: [
{required: true,message: "请输入规则描述", trigger: "blur" },
{max: 512,message: "最多只能录入512个字符",trigger: "blur",},
],
createTime: [
{required: true,message: "请选择创建时间" },
],
}
};
},
methods: {
/** 编辑 */
edit(row) {
this.reset()
this.query = { id: row.id };
this.urls.currUrl ="base/rule/edit";
this.getData();
this.pageInfo.type="edit"
this.title = "修改数据公共规则";
},
/** 新增 */
add(row) {
this.reset()
this.urls.currUrl = "base/rule/add";
this.getData();
this.pageInfo.type="add"
this.title = "新增数据公共规则";
},
/** 查看*/
view(row) {
this.reset()
this.query = { id: row.id };
this.urls.currUrl ="base/rule/view";
this.getData();
this.pageInfo.type="view"
this.title = "数据公共规则详细";
},
/**取消按钮 */
cancel() {
this.open = false;
},
/**获取数据后弹框 */
afterRender(data) {
this.open = true;
},
afterSubmit(data) {
this.open = false;
this.$emit("ok");
},
// 表单重置
reset() {
this.form = {
name : "",
testItem : "",
indicators : "",
type : "",
content : "",
description : "",
remark : "",
};
this.resetForm("form");
},
resetForm(refName) {
if (this.$refs[refName]) {
this.$refs[refName].resetFields();
}
},
},
};
</script>
<template>
<div class="page">
<LayoutTable :data="tableData" :config="tableConfig">
</LayoutTable>
<dialog-show ref="dialogform" @ok="getData" />
</div>
</template>
<script>
/** 表单弹出框模式需引入 */
import dialogShow from "./dialogshow";
import table from "@/assets/mixins/table";
export default {
name: "BaseRuleList",
components: {
dialogShow
},
mixins: [table],
created() {
},
methods: {
/** 重写新增方法 */
toAdd(row) {
this.$refs.dialogform.add(row);
},
/** 重写编辑方法 */
toEdit(row) {
this.$refs.dialogform.edit(row);
},
/** 重写查看方法 */
toView(row) {
this.$refs.dialogform.view(row);
},
},
data() {
return {
config: {
search: [
],
columns: [
{type: "selection", width: 60},
{type: "index",label: "序号",width: 50},
{label: "规则名称", prop: "name"},
{label: "检测对象", prop: "testItem"},
{label: "检测指标", prop: "indicators", formatter: this.formatter},
{label: "规则类型", prop: "type" , formatter: this.formatter},
{label: "规则描述", prop: "description"},
{label: "创建时间", prop: "createTime", formatter: this.formatterDate},
{
label: "操作",
width: 240,
formatter: row => {
return (
<table-buttons noAdd row={row} onEdit={this.toEdit} onView={this.toView} onDel={this.toDel} />
);
}
}
]
}
};
}
};
</script>
\ No newline at end of file
<template>
<layout-view>
<el-descriptions :title="title" :column="column" :size="size" :colon="false" border>
<template slot="title">
<i class="el-icon-tickets"></i>
基本详细信息
</template>
<template slot="extra">
<el-button type="primary" @click="$router.go(-1)" size="small">返回</el-button>
</template>
<el-descriptions-item label="规则名称" label-class-name="labelClass" content-class-name="contentClass">
{{form.name}}
</el-descriptions-item>
<el-descriptions-item label="检测对象" label-class-name="labelClass" content-class-name="contentClass">
{{form.testItem}}
</el-descriptions-item>
<el-descriptions-item label="检测指标" label-class-name="labelClass" content-class-name="contentClass">
{{ util_formatters("indicators", form.indicators) }}
</el-descriptions-item>
<el-descriptions-item label="规则类型" label-class-name="labelClass" content-class-name="contentClass">
{{ util_formatters("type", form.type) }}
</el-descriptions-item>
<el-descriptions-item label="规则内容" label-class-name="labelClass" content-class-name="contentClass">
<editor v-model="form.content" :min-height="256"/>
</el-descriptions-item>
<el-descriptions-item label="规则描述" label-class-name="labelClass" content-class-name="contentClass">
{{form.description}}
</el-descriptions-item>
<el-descriptions-item label="备注" label-class-name="labelClass" content-class-name="contentClass">
{{form.remark}}
</el-descriptions-item>
</el-descriptions>
</layout-view>
</template>
<script>
import view from "@/assets/mixins/view";
import Editor from '@/components/Editor';
export default {
mixins: [view],
components: {
Editor,
},
methods: {
},
data() {
return {
size:"small",
column:2,
toString:[
],
toArrays: [
],
toDate: [
]
}
}
}
</script>
<style lang="less">
.labelClass{
width: 200px;
}
.el-descriptions__body{
margin-left: 5px;
margin-right: 5px;
color: #606266;
background-color: #FFF;
}
.contentClass{
width: 600px;
}
</style>
\ No newline at end of file
<template>
<!-- 弹出框表单 -->
<el-dialog :title="title" :visible.sync="open" width="90%" append-to-body>
<el-form ref="form" :model="form" :rules="rules" label-width="120px">
<el-row>
<Field label="数据源名称" prop="name" v-model="form.name" placeholder="请输入数据源名称"/>
<Field label="来源系统" prop="sourceSystem" v-model="form.sourceSystem" placeholder="请输入来源系统"/>
<Field label="数据源类型" prop="type" v-model="form.type" type="select" :enumData="dict.type" placeholder="请选择数据源类型"/>
<Field label="ip" prop="ip" v-model="form.ip" placeholder="请输入ip"/>
<Field label="端口" prop="port" v-model="form.port" placeholder="请输入端口"/>
<Field label="服务名称" prop="serverName" v-model="form.serverName" placeholder="请输入服务名称"/>
<Field label="用户名" prop="userName" v-model="form.userName" placeholder="请输入用户名"/>
<Field label="密码" type="password" prop="password" v-model="form.password" placeholder="请输入密码"/>
<Field label="状态" prop="statuses" v-model="form.statuses" type="radio" :enumData="dict.statuses" />
<Field label="备注" prop="remark" v-model="form.remark" type="textarea" placeholder="请输入备注"/>
</el-row>
</el-form>
<div slot="footer" class="dialog-footer">
<el-button type="primary" v-if="pageInfo.type !== 'view'" @click="submitForm">确 定</el-button>
<el-button @click="cancel">取 消</el-button>
</div>
</el-dialog>
</template>
<script>
import form from "@/assets/mixins/formdialog";
import dialogShow from "./dialogshow";
export default {
mixins: [form],
components: {
dialogShow ,
},
data() {
return {
// 遮罩层
loading: true,
// 弹出层标题
title: "数据源",
// 是否显示弹出层
open: false,
toString:[
],
// 表单校验
rules: {
name: [
{required: true,message: "请输入数据源名称", trigger: "blur" },
{max: 32,message: "最多只能录入32个字符",trigger: "blur",},
],
sourceSystem: [
{required: true,message: "请输入来源系统", trigger: "blur" },
{max: 32,message: "最多只能录入32个字符",trigger: "blur",},
],
type: [
{required: true,message: "请输入数据源类型", trigger: "blur" },
{max: 1,message: "最多只能录入1个字符",trigger: "blur",},
],
ip: [
{required: true,message: "请输入ip", trigger: "blur" },
{max: 32,message: "最多只能录入32个字符",trigger: "blur",},
],
port: [
{required: true,message: "请输入端口", trigger: "blur" },
{max: 8,message: "最多只能录入8个字符",trigger: "blur",},
],
serverName: [
{required: true,message: "请输入服务名称", trigger: "blur" },
{max: 16,message: "最多只能录入16个字符",trigger: "blur",},
],
userName: [
{required: true,message: "请输入用户名", trigger: "blur" },
{max: 32,message: "最多只能录入32个字符",trigger: "blur",},
],
password: [
{required: true,message: "请输入密码", trigger: "blur" },
{max: 32,message: "最多只能录入32个字符",trigger: "blur",},
],
createTime: [
{required: true,message: "请选择创建时间" },
],
}
};
},
methods: {
/** 编辑 */
edit(row) {
this.reset()
this.query = { id: row.id };
this.urls.currUrl ="data/source/edit";
this.getData();
this.pageInfo.type="edit"
this.title = "修改数据源";
},
/** 新增 */
add(row) {
this.reset()
this.urls.currUrl = "data/source/add";
this.getData();
this.pageInfo.type="add"
this.title = "新增数据源";
},
/** 查看*/
view(row) {
this.reset()
this.query = { id: row.id };
this.urls.currUrl ="data/source/view";
this.getData();
this.pageInfo.type="view"
this.title = "数据源详细";
},
/**取消按钮 */
cancel() {
this.open = false;
},
/**获取数据后弹框 */
afterRender(data) {
this.open = true;
},
afterSubmit(data) {
this.open = false;
this.$emit("ok");
},
// 表单重置
reset() {
this.form = {
name : "",
sourceSystem : "",
type : "",
ip : "",
port : "",
serverName : "",
userName : "",
password : "",
statuses : "0",
remark : "",
};
this.resetForm("form");
},
resetForm(refName) {
if (this.$refs[refName]) {
this.$refs[refName].resetFields();
}
},
},
};
</script>
<template>
<div class="page">
<LayoutTable :data="tableData" :config="tableConfig">
</LayoutTable>
<dialog-show ref="dialogform" @ok="getData"/>
</div>
</template>
<script>
/** 表单弹出框模式需引入 */
import dialogShow from "./dialogshow";
import table from "@/assets/mixins/table";
export default {
name: "DataSourceList",
components: {
dialogShow
},
mixins: [table],
created() {
},
methods: {
/** 重写新增方法 */
toAdd(row) {
this.$refs.dialogform.add(row);
},
/** 重写编辑方法 */
toEdit(row) {
this.$refs.dialogform.edit(row);
},
/** 重写查看方法 */
toView(row) {
this.$refs.dialogform.view(row);
},
},
data() {
return {
value: true,
config: {
search: [],
columns: [
{type: "selection", width: 60},
{type: "index", label: "序号", width: 50},
{label: "数据源名称", prop: "name"},
{label: "来源系统", prop: "sourceSystem"},
{label: "数据源类型", prop: "type", formatter: this.formatter,},
{label: "ip", prop: "ip"},
{label: "端口", prop: "port"},
{label: "服务名称", prop: "serverName"},
{label: "用户名", prop: "userName"},
{
label: "状态", prop: "statuses", formatter: this.formatter
},
{label: "创建时间", prop: "createTime", formatter: this.formatterDate},
{
label: "操作",
width: 240,
formatter: row => {
return (
<table-buttons noAdd row={row} onEdit={this.toEdit} onView={this.toView}
onDel={this.toDel}/>
);
}
}
]
}
};
}
};
</script>
\ No newline at end of file
<template>
<layout-view>
<el-descriptions :title="title" :column="column" :size="size" :colon="false" border>
<template slot="title">
<i class="el-icon-tickets"></i>
基本详细信息
</template>
<template slot="extra">
<el-button type="primary" @click="$router.go(-1)" size="small">返回</el-button>
</template>
<el-descriptions-item label="数据源名称" label-class-name="labelClass" content-class-name="contentClass">
{{form.name}}
</el-descriptions-item>
<el-descriptions-item label="来源系统" label-class-name="labelClass" content-class-name="contentClass">
{{form.sourceSystem}}
</el-descriptions-item>
<el-descriptions-item label="数据源类型" label-class-name="labelClass" content-class-name="contentClass">
{{ util_formatters("type", form.type) }}
</el-descriptions-item>
<el-descriptions-item label="ip" label-class-name="labelClass" content-class-name="contentClass">
{{form.ip}}
</el-descriptions-item>
<el-descriptions-item label="端口" label-class-name="labelClass" content-class-name="contentClass">
{{form.port}}
</el-descriptions-item>
<el-descriptions-item label="服务名称" label-class-name="labelClass" content-class-name="contentClass">
{{form.serverName}}
</el-descriptions-item>
<el-descriptions-item label="用户名" label-class-name="labelClass" content-class-name="contentClass">
{{form.userName}}
</el-descriptions-item>
<el-descriptions-item label="密码" label-class-name="labelClass" content-class-name="contentClass">
{{form.password}}
</el-descriptions-item>
<el-descriptions-item label="任务状态" label-class-name="labelClass" content-class-name="contentClass">
{{ util_formatters("statuses", form.statuses) }}
</el-descriptions-item>
<el-descriptions-item label="备注" label-class-name="labelClass" content-class-name="contentClass">
{{form.remark}}
</el-descriptions-item>
</el-descriptions>
</layout-view>
</template>
<script>
import view from "@/assets/mixins/view";
export default {
mixins: [view],
components: {
},
methods: {
},
data() {
return {
size:"small",
column:2,
toString:[
],
toArrays: [
],
toDate: [
]
}
}
}
</script>
<style lang="less">
.labelClass{
width: 200px;
}
.el-descriptions__body{
margin-left: 5px;
margin-right: 5px;
color: #606266;
background-color: #FFF;
}
.contentClass{
width: 600px;
}
</style>
\ No newline at end of file
<template>
<!-- 弹出框表单 -->
<el-dialog :title="title" :visible.sync="open" width="90%" append-to-body>
<el-form ref="form" :model="form" :rules="rules" label-width="120px">
<el-row>
<Field label="规则名称" prop="name" v-model="form.name" placeholder="请输入规则名称"/>
<Field label="数据源名称" prop="source" v-model="form.source" placeholder="请输入数据源名称"/>
<Field label="源表" prop="sourceTable" v-model="form.sourceTable" type="textarea" placeholder="请输入源表"/>
<Field label="规则类型" prop="type" v-model="form.type" type="select" :enumData="dict.type" placeholder="请选择规则类型"/>
<Field label="SQL表达式" prop="expression" v-model="form.expression" type="textarea" placeholder="请输入SQL表达式"/>
<Field label="SQL过滤条件" prop="prerequisite" v-model="form.prerequisite" type="textarea" placeholder="请输入SQL过滤条件"/>
<Field label="等级" prop="level" v-model="form.level" type="select" :enumData="dict.level" placeholder="请选择等级"/>
<Field label="权重" prop="weights" v-model="form.weights" type="select" :enumData="dict.weights" placeholder="请选择权重"/>
<Field label="规则描述" prop="description" v-model="form.description" type="textarea" placeholder="请输入规则描述"/>
<Field label="类型" prop="dataType" v-model="form.dataType" type="select" :enumData="dict.dataType" placeholder="请选择类型"/>
<Field label="任务状态" prop="statuses" v-model="form.statuses" type="radio" :enumData="dict.statuses" />
<Field label="备注" prop="remark" v-model="form.remark" type="textarea" placeholder="请输入备注"/>
</el-row>
</el-form>
<div slot="footer" class="dialog-footer">
<el-button type="primary" v-if="pageInfo.type !== 'view'" @click="submitForm">确 定</el-button>
<el-button @click="cancel">取 消</el-button>
</div>
</el-dialog>
</template>
<script>
import form from "@/assets/mixins/formdialog";
import dialogShow from "./dialogshow";
export default {
mixins: [form],
components: {
dialogShow ,
},
data() {
return {
// 遮罩层
loading: true,
// 弹出层标题
title: "数据库规则",
// 是否显示弹出层
open: false,
toString:[
],
// 表单校验
rules: {
name: [
{required: true,message: "请输入规则名称", trigger: "blur" },
{max: 32,message: "最多只能录入32个字符",trigger: "blur",},
],
source: [
{required: true,message: "请输入数据源名称", trigger: "blur" },
{max: 32,message: "最多只能录入32个字符",trigger: "blur",},
],
sourceTable: [
{required: true,message: "请输入源表", trigger: "blur" },
{max: 256,message: "最多只能录入256个字符",trigger: "blur",},
],
type: [
{required: true,message: "请输入规则类型", trigger: "blur" },
{max: 1,message: "最多只能录入1个字符",trigger: "blur",},
],
expression: [
{required: true,message: "请输入SQL表达式", trigger: "blur" },
{max: 256,message: "最多只能录入256个字符",trigger: "blur",},
],
prerequisite: [
{required: true,message: "请输入SQL过滤条件", trigger: "blur" },
{max: 256,message: "最多只能录入256个字符",trigger: "blur",},
],
level: [
{required: true,message: "请输入等级", trigger: "blur" },
{max: 1,message: "最多只能录入1个字符",trigger: "blur",},
],
weights: [
{required: true,message: "请输入权重", trigger: "blur" },
{max: 1,message: "最多只能录入1个字符",trigger: "blur",},
],
description: [
{required: true,message: "请输入规则描述", trigger: "blur" },
{max: 512,message: "最多只能录入512个字符",trigger: "blur",},
],
dataType: [
{required: true,message: "请输入类型", trigger: "blur" },
{max: 1,message: "最多只能录入1个字符",trigger: "blur",},
],
createTime: [
{required: true,message: "请选择创建时间" },
],
}
};
},
methods: {
/** 编辑 */
edit(row) {
this.reset()
this.query = { id: row.id };
this.urls.currUrl ="database/rule/edit";
this.getData();
this.pageInfo.type="edit"
this.title = "修改数据库规则";
},
/** 新增 */
add(row) {
this.reset()
this.urls.currUrl = "database/rule/add";
this.getData();
this.pageInfo.type="add"
this.title = "新增数据库规则";
},
/** 查看*/
view(row) {
this.reset()
this.query = { id: row.id };
this.urls.currUrl ="database/rule/view";
this.getData();
this.pageInfo.type="view"
this.title = "数据库规则详细";
},
/**取消按钮 */
cancel() {
this.open = false;
},
/**获取数据后弹框 */
afterRender(data) {
this.open = true;
},
afterSubmit(data) {
this.open = false;
this.$emit("ok");
},
// 表单重置
reset() {
this.form = {
name : "",
source : "",
sourceTable : "",
type : "",
expression : "",
prerequisite : "",
level : "",
weights : "",
description : "",
dataType : "1",
statuses : "0",
remark : "",
};
this.resetForm("form");
},
resetForm(refName) {
if (this.$refs[refName]) {
this.$refs[refName].resetFields();
}
},
},
};
</script>
<template>
<div class="page">
<LayoutTable :data="tableData" :config="tableConfig">
</LayoutTable>
<dialog-show ref="dialogform" @ok="getData" />
</div>
</template>
<script>
/** 表单弹出框模式需引入 */
import dialogShow from "./dialogshow";
import table from "@/assets/mixins/table";
export default {
name: "DatabaseRuleList",
components: {
dialogShow
},
mixins: [table],
created() {
},
methods: {
/** 重写新增方法 */
toAdd(row) {
this.$refs.dialogform.add(row);
},
/** 重写编辑方法 */
toEdit(row) {
this.$refs.dialogform.edit(row);
},
/** 重写查看方法 */
toView(row) {
this.$refs.dialogform.view(row);
},
},
data() {
return {
config: {
search: [
],
columns: [
{type: "selection", width: 60},
{type: "index",label: "序号",width: 50},
{label: "规则名称", prop: "name"},
{label: "数据源名称", prop: "source"},
{label: "源表", prop: "sourceTable"},
{label: "规则类型", prop: "type", formatter: this.formatter},
{label: "等级", prop: "level", formatter: this.formatter},
{label: "权重", prop: "weights", formatter: this.formatter},
{label: "规则描述", prop: "description"},
{label: "任务状态", prop: "statuses", formatter: this.formatter},
{label: "创建时间", prop: "createTime", formatter: this.formatterDate},
{
label: "操作",
width: 240,
formatter: row => {
return (
<table-buttons noAdd row={row} onEdit={this.toEdit} onView={this.toView} onDel={this.toDel} />
);
}
}
]
}
};
}
};
</script>
\ No newline at end of file
<template>
<layout-view>
<el-descriptions :title="title" :column="column" :size="size" :colon="false" border>
<template slot="title">
<i class="el-icon-tickets"></i>
基本详细信息
</template>
<template slot="extra">
<el-button type="primary" @click="$router.go(-1)" size="small">返回</el-button>
</template>
<el-descriptions-item label="规则名称" label-class-name="labelClass" content-class-name="contentClass">
{{form.name}}
</el-descriptions-item>
<el-descriptions-item label="数据源名称" label-class-name="labelClass" content-class-name="contentClass">
{{form.source}}
</el-descriptions-item>
<el-descriptions-item label="源表" label-class-name="labelClass" content-class-name="contentClass">
{{form.sourceTable}}
</el-descriptions-item>
<el-descriptions-item label="规则类型" label-class-name="labelClass" content-class-name="contentClass">
{{ util_formatters("type", form.type) }}
</el-descriptions-item>
<el-descriptions-item label="SQL表达式" label-class-name="labelClass" content-class-name="contentClass">
{{form.expression}}
</el-descriptions-item>
<el-descriptions-item label="SQL过滤条件" label-class-name="labelClass" content-class-name="contentClass">
{{form.prerequisite}}
</el-descriptions-item>
<el-descriptions-item label="等级" label-class-name="labelClass" content-class-name="contentClass">
{{ util_formatters("level", form.level) }}
</el-descriptions-item>
<el-descriptions-item label="权重" label-class-name="labelClass" content-class-name="contentClass">
{{ util_formatters("weights", form.weights) }}
</el-descriptions-item>
<el-descriptions-item label="规则描述" label-class-name="labelClass" content-class-name="contentClass">
{{form.description}}
</el-descriptions-item>
<el-descriptions-item label="类型" label-class-name="labelClass" content-class-name="contentClass">
{{ util_formatters("dataType", form.dataType) }}
</el-descriptions-item>
<el-descriptions-item label="任务状态" label-class-name="labelClass" content-class-name="contentClass">
{{ util_formatters("statuses", form.statuses) }}
</el-descriptions-item>
<el-descriptions-item label="备注" label-class-name="labelClass" content-class-name="contentClass">
{{form.remark}}
</el-descriptions-item>
</el-descriptions>
</layout-view>
</template>
<script>
import view from "@/assets/mixins/view";
export default {
mixins: [view],
components: {
},
methods: {
},
data() {
return {
size:"small",
column:2,
toString:[
],
toArrays: [
],
toDate: [
]
}
}
}
</script>
<style lang="less">
.labelClass{
width: 200px;
}
.el-descriptions__body{
margin-left: 5px;
margin-right: 5px;
color: #606266;
background-color: #FFF;
}
.contentClass{
width: 600px;
}
</style>
\ No newline at end of file
<template>
<!-- 弹出框表单 -->
<el-dialog :title="title" :visible.sync="open" width="90%" append-to-body>
<el-form ref="form" :model="form" :rules="rules" label-width="120px">
<el-row>
<Field label="任务名称" prop="taskName" v-model="form.taskName" type="textarea" placeholder="请输入任务名称"/>
<Field label="任务描述" prop="taskDescription" v-model="form.taskDescription" type="textarea" placeholder="请输入任务描述"/>
<Field label="数据源名称" prop="dataSourceName" v-model="form.dataSourceName" type="textarea" placeholder="请输入数据源名称"/>
<Field label="源表" prop="sourceTable" v-model="form.sourceTable" type="textarea" placeholder="请输入源表"/>
<Field label="分析对象" prop="analysisObject" v-model="form.analysisObject" type="textarea" placeholder="请输入分析对象"/>
<Field label="任务状态" prop="statuses" v-model="form.statuses" type="select" :enumData="dict.statuses" placeholder="请选择任务状态"/>
<Field label="执行次数" prop="executionsNumber" v-model="form.executionsNumber" placeholder="请输入执行次数"/>
<Field label="备注" prop="remark" v-model="form.remark" type="textarea" placeholder="请输入备注"/>
</el-row>
</el-form>
<div slot="footer" class="dialog-footer">
<el-button type="primary" v-if="pageInfo.type !== 'view'" @click="submitForm">确 定</el-button>
<el-button @click="cancel">取 消</el-button>
</div>
</el-dialog>
</template>
<script>
import form from "@/assets/mixins/formdialog";
import dialogShow from "./dialogshow";
export default {
mixins: [form],
components: {
dialogShow ,
},
data() {
return {
// 遮罩层
loading: true,
// 弹出层标题
title: "数据质量分析",
// 是否显示弹出层
open: false,
toString:[
],
// 表单校验
rules: {
taskName: [
{required: true,message: "请输入任务名称", trigger: "blur" },
{max: 256,message: "最多只能录入256个字符",trigger: "blur",},
],
taskDescription: [
{required: true,message: "请输入任务描述", trigger: "blur" },
{max: 512,message: "最多只能录入512个字符",trigger: "blur",},
],
dataSourceName: [
{required: true,message: "请输入数据源名称", trigger: "blur" },
{max: 256,message: "最多只能录入256个字符",trigger: "blur",},
],
sourceTable: [
{required: true,message: "请输入源表", trigger: "blur" },
{max: 256,message: "最多只能录入256个字符",trigger: "blur",},
],
executionsNumber: [
{required: true,message: "请输入执行次数", trigger: "blur" },
],
createTime: [
{required: true,message: "请选择创建时间" },
],
}
};
},
methods: {
/** 编辑 */
edit(row) {
this.reset()
this.query = { id: row.id };
this.urls.currUrl ="line/analysis/edit";
this.getData();
this.pageInfo.type="edit"
this.title = "修改数据质量分析";
},
/** 新增 */
add(row) {
this.reset()
this.urls.currUrl = "line/analysis/add";
this.getData();
this.pageInfo.type="add"
this.title = "新增数据质量分析";
},
/** 查看*/
view(row) {
this.reset()
this.query = { id: row.id };
this.urls.currUrl ="line/analysis/view";
this.getData();
this.pageInfo.type="view"
this.title = "数据质量分析详细";
},
/**取消按钮 */
cancel() {
this.open = false;
},
/**获取数据后弹框 */
afterRender(data) {
this.open = true;
},
afterSubmit(data) {
this.open = false;
this.$emit("ok");
},
// 表单重置
reset() {
this.form = {
taskName : "",
taskDescription : "",
dataSourceName : "",
sourceTable : "",
analysisObject : "",
statuses : "0",
executionsNumber : 0,
remark : "",
};
this.resetForm("form");
},
resetForm(refName) {
if (this.$refs[refName]) {
this.$refs[refName].resetFields();
}
},
},
};
</script>
<template>
<div class="page">
<LayoutTable :data="tableData" :config="tableConfig">
</LayoutTable>
<dialog-show ref="dialogform" @ok="getData" />
</div>
</template>
<script>
/** 表单弹出框模式需引入 */
import dialogShow from "./dialogshow";
import table from "@/assets/mixins/table";
export default {
name: "LineAnalysisList",
components: {
dialogShow
},
mixins: [table],
created() {
},
methods: {
/** 重写新增方法 */
toAdd(row) {
this.$refs.dialogform.add(row);
},
/** 重写编辑方法 */
toEdit(row) {
this.$refs.dialogform.edit(row);
},
/** 重写查看方法 */
toView(row) {
this.$refs.dialogform.view(row);
},
},
data() {
return {
config: {
search: [
],
columns: [
{type: "selection", width: 60},
{type: "index",label: "序号",width: 50},
{label: "任务名称", prop: "taskName"},
{label: "数据源名称", prop: "dataSourceName"},
{label: "源表", prop: "sourceTable"},
{label: "任务状态", prop: "statuses", formatter: this.formatter},
{label: "执行次数", prop: "executionsNumber"},
{label: "创建时间", prop: "createTime", formatter: this.formatterDate},
{
label: "操作",
width: 240,
formatter: row => {
return (
<table-buttons noAdd row={row} onEdit={this.toEdit} onView={this.toView} onDel={this.toDel} />
);
}
}
]
}
};
}
};
</script>
\ No newline at end of file
<template>
<layout-view>
<el-descriptions :title="title" :column="column" :size="size" :colon="false" border>
<template slot="title">
<i class="el-icon-tickets"></i>
基本详细信息
</template>
<template slot="extra">
<el-button type="primary" @click="$router.go(-1)" size="small">返回</el-button>
</template>
<el-descriptions-item label="任务名称" label-class-name="labelClass" content-class-name="contentClass">
{{form.taskName}}
</el-descriptions-item>
<el-descriptions-item label="任务描述" label-class-name="labelClass" content-class-name="contentClass">
{{form.taskDescription}}
</el-descriptions-item>
<el-descriptions-item label="数据源名称" label-class-name="labelClass" content-class-name="contentClass">
{{form.dataSourceName}}
</el-descriptions-item>
<el-descriptions-item label="源表" label-class-name="labelClass" content-class-name="contentClass">
{{form.sourceTable}}
</el-descriptions-item>
<el-descriptions-item label="分析对象" label-class-name="labelClass" content-class-name="contentClass">
{{form.analysisObject}}
</el-descriptions-item>
<el-descriptions-item label="任务状态" label-class-name="labelClass" content-class-name="contentClass">
{{ util_formatters("statuses", form.statuses) }}
</el-descriptions-item>
<el-descriptions-item label="执行次数" label-class-name="labelClass" content-class-name="contentClass">
{{form.executionsNumber}}
</el-descriptions-item>
<el-descriptions-item label="备注" label-class-name="labelClass" content-class-name="contentClass">
{{form.remark}}
</el-descriptions-item>
</el-descriptions>
</layout-view>
</template>
<script>
import view from "@/assets/mixins/view";
export default {
mixins: [view],
components: {
},
methods: {
},
data() {
return {
size:"small",
column:2,
toString:[
],
toArrays: [
],
toDate: [
]
}
}
}
</script>
<style lang="less">
.labelClass{
width: 200px;
}
.el-descriptions__body{
margin-left: 5px;
margin-right: 5px;
color: #606266;
background-color: #FFF;
}
.contentClass{
width: 600px;
}
</style>
\ No newline at end of file
......@@ -4,7 +4,7 @@
<div class="page page-login flex flex-v">
<div class="form-wrap flex flex-1">
<el-form @submit.prevent='onSubmit' ref="form" :model="form" label-width="80px" size="small">
<h1>政务学习平台</h1>
<h1>数据治理系统</h1>
<el-form-item label="用户名">
<el-input v-model="form.loginName"></el-input>
</el-form-item>
......
<template>
<!-- 弹出框表单 -->
<el-dialog :title="title" :visible.sync="open" width="90%" append-to-body>
<el-form ref="form" :model="form" :rules="rules" label-width="120px">
<el-row>
<Field label="任务名称" prop="taskName" v-model="form.taskName" type="textarea" placeholder="请输入任务名称"/>
<Field label="任务描述" prop="taskDescription" v-model="form.taskDescription" type="textarea" placeholder="请输入任务描述"/>
<Field label="数据源名称" prop="dataSourceName" v-model="form.dataSourceName" type="textarea" placeholder="请输入数据源名称"/>
<Field label="源表" prop="sourceTable" v-model="form.sourceTable" type="textarea" placeholder="请输入源表"/>
<Field label="源字段" prop="sourceField" v-model="form.sourceField" type="textarea" placeholder="请输入源字段"/>
<Field label="目标表" prop="targetTable" v-model="form.targetTable" type="textarea" placeholder="请输入目标表"/>
<Field label="目标字段" prop="targetField" v-model="form.targetField" type="textarea" placeholder="请输入目标字段"/>
<Field label="任务状态" prop="statuses" v-model="form.statuses" type="select" :enumData="dict.statuses" placeholder="请选择任务状态"/>
<Field label="执行次数" prop="executionsNumber" v-model="form.executionsNumber" placeholder="请输入执行次数"/>
<Field label="备注" prop="remark" v-model="form.remark" type="textarea" placeholder="请输入备注"/>
</el-row>
</el-form>
<div slot="footer" class="dialog-footer">
<el-button type="primary" v-if="pageInfo.type !== 'view'" @click="submitForm">确 定</el-button>
<el-button @click="cancel">取 消</el-button>
</div>
</el-dialog>
</template>
<script>
import form from "@/assets/mixins/formdialog";
import dialogShow from "./dialogshow";
export default {
mixins: [form],
components: {
dialogShow ,
},
data() {
return {
// 遮罩层
loading: true,
// 弹出层标题
title: "数据质量分析",
// 是否显示弹出层
open: false,
toString:[
],
// 表单校验
rules: {
taskName: [
{required: true,message: "请输入任务名称", trigger: "blur" },
{max: 256,message: "最多只能录入256个字符",trigger: "blur",},
],
taskDescription: [
{required: true,message: "请输入任务描述", trigger: "blur" },
{max: 512,message: "最多只能录入512个字符",trigger: "blur",},
],
dataSourceName: [
{required: true,message: "请输入数据源名称", trigger: "blur" },
{max: 256,message: "最多只能录入256个字符",trigger: "blur",},
],
sourceTable: [
{required: true,message: "请输入源表", trigger: "blur" },
{max: 256,message: "最多只能录入256个字符",trigger: "blur",},
],
sourceField: [
{required: true,message: "请输入源字段", trigger: "blur" },
{max: 256,message: "最多只能录入256个字符",trigger: "blur",},
],
targetTable: [
{required: true,message: "请输入目标表", trigger: "blur" },
{max: 256,message: "最多只能录入256个字符",trigger: "blur",},
],
targetField: [
{required: true,message: "请输入目标字段", trigger: "blur" },
{max: 256,message: "最多只能录入256个字符",trigger: "blur",},
],
executionsNumber: [
{required: true,message: "请输入执行次数", trigger: "blur" },
],
createTime: [
{required: true,message: "请选择创建时间" },
],
}
};
},
methods: {
/** 编辑 */
edit(row) {
this.reset()
this.query = { id: row.id };
this.urls.currUrl ="quality/analysis/edit";
this.getData();
this.pageInfo.type="edit"
this.title = "修改数据质量分析";
},
/** 新增 */
add(row) {
this.reset()
this.urls.currUrl = "quality/analysis/add";
this.getData();
this.pageInfo.type="add"
this.title = "新增数据质量分析";
},
/** 查看*/
view(row) {
this.reset()
this.query = { id: row.id };
this.urls.currUrl ="quality/analysis/view";
this.getData();
this.pageInfo.type="view"
this.title = "数据质量分析详细";
},
/**取消按钮 */
cancel() {
this.open = false;
},
/**获取数据后弹框 */
afterRender(data) {
this.open = true;
},
afterSubmit(data) {
this.open = false;
this.$emit("ok");
},
// 表单重置
reset() {
this.form = {
taskName : "",
taskDescription : "",
dataSourceName : "",
sourceTable : "",
sourceField : "",
targetTable : "",
targetField : "",
statuses : "0",
executionsNumber : 0,
remark : "",
};
this.resetForm("form");
},
resetForm(refName) {
if (this.$refs[refName]) {
this.$refs[refName].resetFields();
}
},
},
};
</script>
<template>
<div class="page">
<LayoutTable :data="tableData" :config="tableConfig">
</LayoutTable>
<dialog-show ref="dialogform" @ok="getData" />
</div>
</template>
<script>
/** 表单弹出框模式需引入 */
import dialogShow from "./dialogshow";
import table from "@/assets/mixins/table";
export default {
name: "QualityAnalysisList",
components: {
dialogShow
},
mixins: [table],
created() {
},
methods: {
/** 重写新增方法 */
toAdd(row) {
this.$refs.dialogform.add(row);
},
/** 重写编辑方法 */
toEdit(row) {
this.$refs.dialogform.edit(row);
},
/** 重写查看方法 */
toView(row) {
this.$refs.dialogform.view(row);
},
},
data() {
return {
config: {
search: [
],
columns: [
{type: "selection", width: 60},
{type: "index",label: "序号",width: 50},
{label: "任务名称", prop: "taskName"},
{label: "数据源名称", prop: "dataSourceName"},
{label: "源表", prop: "sourceTable"},
{label: "源字段", prop: "sourceField"},
{label: "目标表", prop: "targetTable"},
{label: "目标字段", prop: "targetField"},
{label: "任务状态", prop: "statuses",formatter: this.formatter},
{label: "执行次数", prop: "executionsNumber"},
{label: "创建时间", prop: "createTime", formatter: this.formatterDate},
{
label: "操作",
width: 240,
formatter: row => {
return (
<table-buttons noAdd row={row} onEdit={this.toEdit} onView={this.toView} onDel={this.toDel} />
);
}
}
]
}
};
}
};
</script>
\ No newline at end of file
<template>
<layout-view>
<el-descriptions :title="title" :column="column" :size="size" :colon="false" border>
<template slot="title">
<i class="el-icon-tickets"></i>
基本详细信息
</template>
<template slot="extra">
<el-button type="primary" @click="$router.go(-1)" size="small">返回</el-button>
</template>
<el-descriptions-item label="任务名称" label-class-name="labelClass" content-class-name="contentClass">
{{form.taskName}}
</el-descriptions-item>
<el-descriptions-item label="任务描述" label-class-name="labelClass" content-class-name="contentClass">
{{form.taskDescription}}
</el-descriptions-item>
<el-descriptions-item label="数据源名称" label-class-name="labelClass" content-class-name="contentClass">
{{form.dataSourceName}}
</el-descriptions-item>
<el-descriptions-item label="源表" label-class-name="labelClass" content-class-name="contentClass">
{{form.sourceTable}}
</el-descriptions-item>
<el-descriptions-item label="源字段" label-class-name="labelClass" content-class-name="contentClass">
{{form.sourceField}}
</el-descriptions-item>
<el-descriptions-item label="目标表" label-class-name="labelClass" content-class-name="contentClass">
{{form.targetTable}}
</el-descriptions-item>
<el-descriptions-item label="目标字段" label-class-name="labelClass" content-class-name="contentClass">
{{form.targetField}}
</el-descriptions-item>
<el-descriptions-item label="任务状态" label-class-name="labelClass" content-class-name="contentClass">
{{ util_formatters("statuses", form.statuses) }}
</el-descriptions-item>
<el-descriptions-item label="执行次数" label-class-name="labelClass" content-class-name="contentClass">
{{form.executionsNumber}}
</el-descriptions-item>
<el-descriptions-item label="备注" label-class-name="labelClass" content-class-name="contentClass">
{{form.remark}}
</el-descriptions-item>
</el-descriptions>
</layout-view>
</template>
<script>
import view from "@/assets/mixins/view";
export default {
mixins: [view],
components: {
},
methods: {
},
data() {
return {
size:"small",
column:2,
toString:[
],
toArrays: [
],
toDate: [
]
}
}
}
</script>
<style lang="less">
.labelClass{
width: 200px;
}
.el-descriptions__body{
margin-left: 5px;
margin-right: 5px;
color: #606266;
background-color: #FFF;
}
.contentClass{
width: 600px;
}
</style>
\ No newline at end of file
<template>
<!-- 弹出框表单 -->
<el-dialog :title="title" :visible.sync="open" width="90%" append-to-body>
<el-form ref="form" :model="form" :rules="rules" label-width="120px">
<el-row>
<Field label="任务主键" prop="taskId" v-model="form.taskId" placeholder="请输入任务主键"/>
<Field label="开始时间" prop="startTime" v-model="form.startTime" placeholder="请输入开始时间"/>
<Field label="结束时间" prop="endTime" v-model="form.endTime" placeholder="请输入结束时间"/>
<Field label="数据量" prop="number" v-model="form.number" placeholder="请输入数据量"/>
<Field label="备注" prop="remark" v-model="form.remark" type="textarea" placeholder="请输入备注"/>
</el-row>
</el-form>
<div slot="footer" class="dialog-footer">
<el-button type="primary" v-if="pageInfo.type !== 'view'" @click="submitForm">确 定</el-button>
<el-button @click="cancel">取 消</el-button>
</div>
</el-dialog>
</template>
<script>
import form from "@/assets/mixins/formdialog";
import dialogShow from "./dialogshow";
export default {
mixins: [form],
components: {
dialogShow ,
},
data() {
return {
// 遮罩层
loading: true,
// 弹出层标题
title: "数据定时查探详情",
// 是否显示弹出层
open: false,
toString:[
],
// 表单校验
rules: {
startTime: [
{required: true,message: "请输入开始时间", trigger: "blur" },
{max: 32,message: "最多只能录入32个字符",trigger: "blur",},
],
endTime: [
{required: true,message: "请输入结束时间", trigger: "blur" },
{max: 32,message: "最多只能录入32个字符",trigger: "blur",},
],
number: [
{required: true,message: "请输入数据量", trigger: "blur" },
],
createTime: [
{required: true,message: "请选择创建时间" },
],
}
};
},
methods: {
/** 编辑 */
edit(row) {
this.reset()
this.query = { id: row.id };
this.urls.currUrl ="scheduled/task/detail/edit";
this.getData();
this.pageInfo.type="edit"
this.title = "修改数据定时查探详情";
},
/** 新增 */
add(row) {
this.reset()
this.urls.currUrl = "scheduled/task/detail/add";
this.getData();
this.pageInfo.type="add"
this.title = "新增数据定时查探详情";
},
/** 查看*/
view(row) {
this.reset()
this.query = { id: row.id };
this.urls.currUrl ="scheduled/task/detail/view";
this.getData();
this.pageInfo.type="view"
this.title = "数据定时查探详情详细";
},
/**取消按钮 */
cancel() {
this.open = false;
},
/**获取数据后弹框 */
afterRender(data) {
this.open = true;
},
afterSubmit(data) {
this.open = false;
this.$emit("ok");
},
// 表单重置
reset() {
this.form = {
taskId : null,
startTime : "",
endTime : "",
number : null,
remark : "",
};
this.resetForm("form");
},
resetForm(refName) {
if (this.$refs[refName]) {
this.$refs[refName].resetFields();
}
},
},
};
</script>
<template>
<div class="page">
<LayoutTable :data="tableData" :config="tableConfig">
</LayoutTable>
<dialog-show ref="dialogform" @ok="getData" />
</div>
</template>
<script>
/** 表单弹出框模式需引入 */
import dialogShow from "./dialogshow";
import table from "@/assets/mixins/table";
export default {
name: "ScheduledTaskDetailList",
components: {
dialogShow
},
mixins: [table],
created() {
},
methods: {
/** 重写新增方法 */
toAdd(row) {
this.$refs.dialogform.add(row);
},
/** 重写编辑方法 */
toEdit(row) {
this.$refs.dialogform.edit(row);
},
/** 重写查看方法 */
toView(row) {
this.$refs.dialogform.view(row);
},
},
data() {
return {
config: {
search: [
],
columns: [
{type: "selection", width: 60},
{type: "index",label: "序号",width: 50},
{label: "开始时间", prop: "startTime"},
{label: "结束时间", prop: "endTime"},
{label: "创建时间", prop: "createTime", formatter: this.formatterDate},
{
label: "操作",
width: 240,
formatter: row => {
return (
<table-buttons noAdd row={row} onEdit={this.toEdit} onView={this.toView} onDel={this.toDel} />
);
}
}
]
}
};
}
};
</script>
\ No newline at end of file
<template>
<layout-view>
<el-descriptions :title="title" :column="column" :size="size" :colon="false" border>
<template slot="title">
<i class="el-icon-tickets"></i>
基本详细信息
</template>
<template slot="extra">
<el-button type="primary" @click="$router.go(-1)" size="small">返回</el-button>
</template>
<el-descriptions-item label="任务主键" label-class-name="labelClass" content-class-name="contentClass">
{{form.taskId}}
</el-descriptions-item>
<el-descriptions-item label="开始时间" label-class-name="labelClass" content-class-name="contentClass">
{{form.startTime}}
</el-descriptions-item>
<el-descriptions-item label="结束时间" label-class-name="labelClass" content-class-name="contentClass">
{{form.endTime}}
</el-descriptions-item>
<el-descriptions-item label="数据量" label-class-name="labelClass" content-class-name="contentClass">
{{form.number}}
</el-descriptions-item>
<el-descriptions-item label="备注" label-class-name="labelClass" content-class-name="contentClass">
{{form.remark}}
</el-descriptions-item>
</el-descriptions>
</layout-view>
</template>
<script>
import view from "@/assets/mixins/view";
export default {
mixins: [view],
components: {
},
methods: {
},
data() {
return {
size:"small",
column:2,
toString:[
],
toArrays: [
],
toDate: [
]
}
}
}
</script>
<style lang="less">
.labelClass{
width: 200px;
}
.el-descriptions__body{
margin-left: 5px;
margin-right: 5px;
color: #606266;
background-color: #FFF;
}
.contentClass{
width: 600px;
}
</style>
\ No newline at end of file
<template>
<!-- 弹出框表单 -->
<el-dialog :title="title" :visible.sync="open" width="90%" append-to-body>
<el-form ref="form" :model="form" :rules="rules" label-width="120px">
<el-row>
<Field label="任务名称" prop="taskName" v-model="form.taskName" type="textarea" placeholder="请输入任务名称"/>
<Field label="任务描述" prop="taskDescription" v-model="form.taskDescription" type="textarea" placeholder="请输入任务描述"/>
<Field label="数据源名称" prop="dataSourceName" v-model="form.dataSourceName" type="textarea" placeholder="请输入数据源名称"/>
<Field label="源表" prop="sourceTable" v-model="form.sourceTable" type="textarea" placeholder="请输入源表"/>
<Field label="依据字段" prop="sourceField" v-model="form.sourceField" type="textarea" placeholder="请输入依据字段"/>
<Field label="定时类型" prop="type" v-model="form.type" type="select" :enumData="dict.type" placeholder="请选择定时类型"/>
<Field label="开始时间" prop="startTime" v-model="form.startTime" placeholder="请输入开始时间"/>
<Field label="结束时间" prop="endTime" v-model="form.endTime" placeholder="请输入结束时间"/>
<Field label="任务状态" prop="statuses" v-model="form.statuses" type="select" :enumData="dict.statuses" placeholder="请选择任务状态"/>
<Field label="备注" prop="remark" v-model="form.remark" type="textarea" placeholder="请输入备注"/>
</el-row>
</el-form>
<div slot="footer" class="dialog-footer">
<el-button type="primary" v-if="pageInfo.type !== 'view'" @click="submitForm">确 定</el-button>
<el-button @click="cancel">取 消</el-button>
</div>
</el-dialog>
</template>
<script>
import form from "@/assets/mixins/formdialog";
import dialogShow from "./dialogshow";
export default {
mixins: [form],
components: {
dialogShow ,
},
data() {
return {
// 遮罩层
loading: true,
// 弹出层标题
title: "数据定时查探",
// 是否显示弹出层
open: false,
toString:[
],
// 表单校验
rules: {
taskName: [
{required: true,message: "请输入任务名称", trigger: "blur" },
{max: 256,message: "最多只能录入256个字符",trigger: "blur",},
],
taskDescription: [
{required: true,message: "请输入任务描述", trigger: "blur" },
{max: 512,message: "最多只能录入512个字符",trigger: "blur",},
],
dataSourceName: [
{required: true,message: "请输入数据源名称", trigger: "blur" },
{max: 256,message: "最多只能录入256个字符",trigger: "blur",},
],
sourceTable: [
{required: true,message: "请输入源表", trigger: "blur" },
{max: 256,message: "最多只能录入256个字符",trigger: "blur",},
],
sourceField: [
{required: true,message: "请输入依据字段", trigger: "blur" },
{max: 256,message: "最多只能录入256个字符",trigger: "blur",},
],
type: [
{required: true,message: "请输入定时类型", trigger: "blur" },
{max: 1,message: "最多只能录入1个字符",trigger: "blur",},
],
startTime: [
{required: true,message: "请输入开始时间", trigger: "blur" },
{max: 32,message: "最多只能录入32个字符",trigger: "blur",},
],
endTime: [
{required: true,message: "请输入结束时间", trigger: "blur" },
{max: 32,message: "最多只能录入32个字符",trigger: "blur",},
],
createTime: [
{required: true,message: "请选择创建时间" },
],
}
};
},
methods: {
/** 编辑 */
edit(row) {
this.reset()
this.query = { id: row.id };
this.urls.currUrl ="scheduled/task/edit";
this.getData();
this.pageInfo.type="edit"
this.title = "修改数据定时查探";
},
/** 新增 */
add(row) {
this.reset()
this.urls.currUrl = "scheduled/task/add";
this.getData();
this.pageInfo.type="add"
this.title = "新增数据定时查探";
},
/** 查看*/
view(row) {
this.reset()
this.query = { id: row.id };
this.urls.currUrl ="scheduled/task/view";
this.getData();
this.pageInfo.type="view"
this.title = "数据定时查探详细";
},
/**取消按钮 */
cancel() {
this.open = false;
},
/**获取数据后弹框 */
afterRender(data) {
this.open = true;
},
afterSubmit(data) {
this.open = false;
this.$emit("ok");
},
// 表单重置
reset() {
this.form = {
taskName : "",
taskDescription : "",
dataSourceName : "",
sourceTable : "",
sourceField : "",
type : "",
startTime : "",
endTime : "",
statuses : "0",
remark : "",
};
this.resetForm("form");
},
resetForm(refName) {
if (this.$refs[refName]) {
this.$refs[refName].resetFields();
}
},
},
};
</script>
<template>
<div class="page">
<LayoutTable :data="tableData" :config="tableConfig">
</LayoutTable>
<dialog-show ref="dialogform" @ok="getData" />
</div>
</template>
<script>
/** 表单弹出框模式需引入 */
import dialogShow from "./dialogshow";
import table from "@/assets/mixins/table";
export default {
name: "ScheduledTaskList",
components: {
dialogShow
},
mixins: [table],
created() {
},
methods: {
/** 重写新增方法 */
toAdd(row) {
this.$refs.dialogform.add(row);
},
/** 重写编辑方法 */
toEdit(row) {
this.$refs.dialogform.edit(row);
},
/** 重写查看方法 */
toView(row) {
this.$refs.dialogform.view(row);
},
},
data() {
return {
config: {
search: [
],
columns: [
{type: "selection", width: 60},
{type: "index",label: "序号",width: 50},
{label: "任务名称", prop: "taskName"},
{label: "数据源名称", prop: "dataSourceName"},
{label: "源表", prop: "sourceTable"},
{label: "依据字段", prop: "sourceField"},
{label: "定时类型", prop: "type", formatter: this.formatter},
{label: "开始时间", prop: "startTime"},
{label: "结束时间", prop: "endTime"},
{label: "任务状态", prop: "statuses", formatter: this.formatter},
{label: "创建时间", prop: "createTime", formatter: this.formatterDate},
{
label: "操作",
width: 240,
formatter: row => {
return (
<table-buttons noAdd row={row} onEdit={this.toEdit} onView={this.toView} onDel={this.toDel} />
);
}
}
]
}
};
}
};
</script>
\ No newline at end of file
<template>
<layout-view>
<el-descriptions :title="title" :column="column" :size="size" :colon="false" border>
<template slot="title">
<i class="el-icon-tickets"></i>
基本详细信息
</template>
<template slot="extra">
<el-button type="primary" @click="$router.go(-1)" size="small">返回</el-button>
</template>
<el-descriptions-item label="任务名称" label-class-name="labelClass" content-class-name="contentClass">
{{form.taskName}}
</el-descriptions-item>
<el-descriptions-item label="任务描述" label-class-name="labelClass" content-class-name="contentClass">
{{form.taskDescription}}
</el-descriptions-item>
<el-descriptions-item label="数据源名称" label-class-name="labelClass" content-class-name="contentClass">
{{form.dataSourceName}}
</el-descriptions-item>
<el-descriptions-item label="源表" label-class-name="labelClass" content-class-name="contentClass">
{{form.sourceTable}}
</el-descriptions-item>
<el-descriptions-item label="依据字段" label-class-name="labelClass" content-class-name="contentClass">
{{form.sourceField}}
</el-descriptions-item>
<el-descriptions-item label="定时类型" label-class-name="labelClass" content-class-name="contentClass">
{{ util_formatters("type", form.type) }}
</el-descriptions-item>
<el-descriptions-item label="开始时间" label-class-name="labelClass" content-class-name="contentClass">
{{form.startTime}}
</el-descriptions-item>
<el-descriptions-item label="结束时间" label-class-name="labelClass" content-class-name="contentClass">
{{form.endTime}}
</el-descriptions-item>
<el-descriptions-item label="任务状态" label-class-name="labelClass" content-class-name="contentClass">
{{ util_formatters("statuses", form.statuses) }}
</el-descriptions-item>
<el-descriptions-item label="备注" label-class-name="labelClass" content-class-name="contentClass">
{{form.remark}}
</el-descriptions-item>
</el-descriptions>
</layout-view>
</template>
<script>
import view from "@/assets/mixins/view";
export default {
mixins: [view],
components: {
},
methods: {
},
data() {
return {
size:"small",
column:2,
toString:[
],
toArrays: [
],
toDate: [
]
}
}
}
</script>
<style lang="less">
.labelClass{
width: 200px;
}
.el-descriptions__body{
margin-left: 5px;
margin-right: 5px;
color: #606266;
background-color: #FFF;
}
.contentClass{
width: 600px;
}
</style>
\ No newline at end of file
......@@ -16,8 +16,8 @@ module.exports = {
port: 8086,
hot: true,//自动保存
proxy: {
'/attendance': {
target: 'http://127.0.0.1:17500',
'/etl': {
target: 'http://127.0.0.1:17300',
changeOrigin: true,
secure: false,
cookieDomainRewrite: 'localhost',
......
......@@ -24,14 +24,14 @@
<profiles.active>develop</profiles.active>
<profiles.server.port>17600</profiles.server.port>
<profiles.server.path>/etl</profiles.server.path>
<profiles.nacos.server-addr>127.0.0.1:8848</profiles.nacos.server-addr>
<profiles.nacos.server-addr>nacos.scsmile.cn:80</profiles.nacos.server-addr>
<profiles.nacos.group>DEFAULT_GROUP</profiles.nacos.group>
<profiles.nacos.namespace>smart-gov</profiles.nacos.namespace>
<profiles.log.path>/mortals/app/logs</profiles.log.path>
<profiles.log.level>info</profiles.log.level>
<profiles.publish.path>/home/publish</profiles.publish.path>
<package.environment>serve</package.environment>
<skipUi>false</skipUi>
<skipUi>true</skipUi>
</properties>
</profile>
<profile>
......
......@@ -122,19 +122,6 @@ public class UploadController extends BaseController {
}
}
/**
* 通用文件删除
*
* @param fileName 文件名称
*/
@GetMapping("fileupload/{fileName}")
public void fileDel(@PathVariable(value="fileName") String fileName, HttpServletResponse response) {
try {
//uploadService.uploadDownload(fileName, response);
} catch (Exception e) {
log.error("下载文件失败:", e);
}
}
}
\ No newline at end of file
package com.mortals.xhx.common.code;
import java.util.LinkedHashMap;
import java.util.Map;
/**
* 检测指标(1.规范性,2.一致性,3.正确性,4.及时性)枚举类
*
* @author zxfei
*/
public enum IndicatorsEnum {
规范性("1", "规范性"),
一致性("2", "一致性"),
正确性("3", "正确性"),
及时性("4", "及时性");
private String value;
private String desc;
IndicatorsEnum(String value, String desc) {
this.value = value;
this.desc = desc;
}
public String getValue() {
return this.value;
}
public String getDesc() {
return this.desc;
}
public static IndicatorsEnum getByValue(String value) {
for (IndicatorsEnum indicatorsEnum : IndicatorsEnum.values()) {
if (indicatorsEnum.getValue() == value) {
return indicatorsEnum;
}
}
return null;
}
/**
* 获取Map集合
*
* @param eItem 不包含项
* @return
*/
public static Map<String, String> getEnumMap(String... eItem) {
Map<String, String> resultMap = new LinkedHashMap<>();
for (IndicatorsEnum item : IndicatorsEnum.values()) {
try {
boolean hasE = false;
for (String e : eItem) {
if (item.getValue() == e) {
hasE = true;
break;
}
}
if (!hasE) {
resultMap.put(item.getValue() + "", item.getDesc());
}
} catch (Exception ex) {
}
}
return resultMap;
}
}
\ No newline at end of file
package com.mortals.xhx.common.code;
import java.util.LinkedHashMap;
import java.util.Map;
/**
* 等级(1.一般,2.重要,3.严重)枚举类
*
* @author zxfei
*/
public enum LevelEnum {
一般("1", "一般"),
重要("2", "重要"),
严重("3", "严重");
private String value;
private String desc;
LevelEnum(String value, String desc) {
this.value = value;
this.desc = desc;
}
public String getValue() {
return this.value;
}
public String getDesc() {
return this.desc;
}
public static LevelEnum getByValue(String value) {
for (LevelEnum levelEnum : LevelEnum.values()) {
if (levelEnum.getValue() == value) {
return levelEnum;
}
}
return null;
}
/**
* 获取Map集合
*
* @param eItem 不包含项
* @return
*/
public static Map<String, String> getEnumMap(String... eItem) {
Map<String, String> resultMap = new LinkedHashMap<>();
for (LevelEnum item : LevelEnum.values()) {
try {
boolean hasE = false;
for (String e : eItem) {
if (item.getValue() == e) {
hasE = true;
break;
}
}
if (!hasE) {
resultMap.put(item.getValue() + "", item.getDesc());
}
} catch (Exception ex) {
}
}
return resultMap;
}
}
\ No newline at end of file
package com.mortals.xhx.common.code;
import java.util.LinkedHashMap;
import java.util.Map;
/**
* 任务状态(0.新建,1.执行中,2.执行成功,3.执行失败)枚举类
*
* @author zxfei
*/
public enum StatusesEnum {
新建("0", "新建"),
执行中("1", "执行中"),
执行成功("2", "执行成功"),
执行失败("3", "执行失败");
private String value;
private String desc;
StatusesEnum(String value, String desc) {
this.value = value;
this.desc = desc;
}
public String getValue() {
return this.value;
}
public String getDesc() {
return this.desc;
}
public static StatusesEnum getByValue(String value) {
for (StatusesEnum statusesEnum : StatusesEnum.values()) {
if (statusesEnum.getValue() == value) {
return statusesEnum;
}
}
return null;
}
/**
* 获取Map集合
*
* @param eItem 不包含项
* @return
*/
public static Map<String, String> getEnumMap(String... eItem) {
Map<String, String> resultMap = new LinkedHashMap<>();
for (StatusesEnum item : StatusesEnum.values()) {
try {
boolean hasE = false;
for (String e : eItem) {
if (item.getValue() == e) {
hasE = true;
break;
}
}
if (!hasE) {
resultMap.put(item.getValue() + "", item.getDesc());
}
} catch (Exception ex) {
}
}
return resultMap;
}
}
\ No newline at end of file
package com.mortals.xhx.common.code;
import java.util.LinkedHashMap;
import java.util.Map;
/**
* 分析类型(0.对比分析,1.列分析,11.列基本分析)枚举类
*
* @author zxfei
*/
public enum TypeEnum {
比分析("0", "对比分析"),
分析("1", "列分析"),
列基本分析("11", "列基本分析");
private String value;
private String desc;
TypeEnum(String value, String desc) {
this.value = value;
this.desc = desc;
}
public String getValue() {
return this.value;
}
public String getDesc() {
return this.desc;
}
public static TypeEnum getByValue(String value) {
for (TypeEnum typeEnum : TypeEnum.values()) {
if (typeEnum.getValue() == value) {
return typeEnum;
}
}
return null;
}
/**
* 获取Map集合
*
* @param eItem 不包含项
* @return
*/
public static Map<String, String> getEnumMap(String... eItem) {
Map<String, String> resultMap = new LinkedHashMap<>();
for (TypeEnum item : TypeEnum.values()) {
try {
boolean hasE = false;
for (String e : eItem) {
if (item.getValue() == e) {
hasE = true;
break;
}
}
if (!hasE) {
resultMap.put(item.getValue() + "", item.getDesc());
}
} catch (Exception ex) {
}
}
return resultMap;
}
}
\ No newline at end of file
package com.mortals.xhx.common.code;
import java.util.LinkedHashMap;
import java.util.Map;
/**
* 权重(1.一般,2.重要,3.关键指标,4.重要指标)枚举类
*
* @author zxfei
*/
public enum WeightsEnum {
一般("1", "一般"),
重要("2", "重要"),
关键指标("3", "关键指标"),
重要指标("4", "重要指标");
private String value;
private String desc;
WeightsEnum(String value, String desc) {
this.value = value;
this.desc = desc;
}
public String getValue() {
return this.value;
}
public String getDesc() {
return this.desc;
}
public static WeightsEnum getByValue(String value) {
for (WeightsEnum weightsEnum : WeightsEnum.values()) {
if (weightsEnum.getValue() == value) {
return weightsEnum;
}
}
return null;
}
/**
* 获取Map集合
*
* @param eItem 不包含项
* @return
*/
public static Map<String, String> getEnumMap(String... eItem) {
Map<String, String> resultMap = new LinkedHashMap<>();
for (WeightsEnum item : WeightsEnum.values()) {
try {
boolean hasE = false;
for (String e : eItem) {
if (item.getValue() == e) {
hasE = true;
break;
}
}
if (!hasE) {
resultMap.put(item.getValue() + "", item.getDesc());
}
} catch (Exception ex) {
}
}
return resultMap;
}
}
\ No newline at end of file
package com.mortals.xhx.module.base.dao;
import com.mortals.framework.dao.ICRUDDao;
import com.mortals.xhx.module.base.model.BaseRuleEntity;
import java.util.List;
/**
* 数据公共规则Dao
* 数据公共规则 DAO接口
*
* @author zxfei
* @date 2023-07-15
*/
public interface BaseRuleDao extends ICRUDDao<BaseRuleEntity,Long>{
}
package com.mortals.xhx.module.base.dao.ibatis;
import org.springframework.stereotype.Repository;
import com.mortals.xhx.module.base.dao.BaseRuleDao;
import com.mortals.xhx.module.base.model.BaseRuleEntity;
import java.util.Date;
import com.mortals.framework.dao.ibatis.BaseCRUDDaoMybatis;
import java.util.List;
/**
* 数据公共规则DaoImpl DAO接口
*
* @author zxfei
* @date 2023-07-15
*/
@Repository("baseRuleDao")
public class BaseRuleDaoImpl extends BaseCRUDDaoMybatis<BaseRuleEntity,Long> implements BaseRuleDao {
}
package com.mortals.xhx.module.base.model;
import java.util.List;
import java.util.ArrayList;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.mortals.framework.annotation.Excel;
import com.mortals.framework.model.BaseEntityLong;
import com.mortals.xhx.module.base.model.vo.BaseRuleVo;
import lombok.Data;
/**
* 数据公共规则实体对象
*
* @author zxfei
* @date 2023-07-15
*/
@Data
public class BaseRuleEntity extends BaseRuleVo {
private static final long serialVersionUID = 1L;
/**
* 规则名称
*/
@Excel(name = "规则名称")
private String name;
/**
* 检测对象
*/
@Excel(name = "检测对象")
private String testItem;
/**
* 检测指标(1.规范性,2.一致性,3.正确性,4.及时性)
*/
@Excel(name = "检测指标", readConverterExp = "1=规范性,2.一致性,3.正确性,4.及时性")
private String indicators;
/**
* 规则类型(1.SQL规则,2.正则规则,3.值域规则,4.标准包)
*/
@Excel(name = "规则类型", readConverterExp = "1=SQL规则,2.正则规则,3.值域规则,4.标准包")
private String type;
/**
* 规则内容
*/
@Excel(name = "规则内容")
private String content;
/**
* 规则描述
*/
@Excel(name = "规则描述")
private String description;
/**
* 备注
*/
private String remark;
@Override
public int hashCode() {
return this.getId().hashCode();
}
@Override
public boolean equals(Object obj) {
if (obj == null) return false;
if (obj instanceof BaseRuleEntity) {
BaseRuleEntity tmp = (BaseRuleEntity) obj;
if (this.getId() == tmp.getId()) {
return true;
}
}
return false;
}
public void initAttrValue(){
this.name = "";
this.testItem = "";
this.indicators = "";
this.type = "";
this.content = "";
this.description = "";
this.remark = "";
}
}
\ No newline at end of file
package com.mortals.xhx.module.base.model.vo;
import com.mortals.framework.model.BaseEntityLong;
import com.mortals.xhx.module.base.model.BaseRuleEntity;
import java.util.ArrayList;
import java.util.List;
import lombok.Data;
import com.mortals.framework.annotation.Excel;
import java.math.BigDecimal;
import java.util.Date;
/**
* 数据公共规则视图对象
*
* @author zxfei
* @date 2023-07-15
*/
@Data
public class BaseRuleVo extends BaseEntityLong {
}
\ No newline at end of file
package com.mortals.xhx.module.base.service;
import com.mortals.framework.service.ICRUDService;
import com.mortals.xhx.module.base.model.BaseRuleEntity;
import com.mortals.xhx.module.base.dao.BaseRuleDao;
/**
* BaseRuleService
*
* 数据公共规则 service接口
*
* @author zxfei
* @date 2023-07-15
*/
public interface BaseRuleService extends ICRUDService<BaseRuleEntity,Long>{
BaseRuleDao getDao();
}
\ No newline at end of file
package com.mortals.xhx.module.base.service.impl;
import org.springframework.stereotype.Service;
import com.mortals.framework.service.impl.AbstractCRUDServiceImpl;
import com.mortals.framework.exception.AppException;
import com.mortals.framework.model.Context;
import com.mortals.xhx.module.base.dao.BaseRuleDao;
import com.mortals.xhx.module.base.model.BaseRuleEntity;
import com.mortals.xhx.module.base.service.BaseRuleService;
import lombok.extern.slf4j.Slf4j;
/**
* BaseRuleService
* 数据公共规则 service实现
*
* @author zxfei
* @date 2023-07-15
*/
@Service("baseRuleService")
@Slf4j
public class BaseRuleServiceImpl extends AbstractCRUDServiceImpl<BaseRuleDao, BaseRuleEntity, Long> implements BaseRuleService {
}
\ No newline at end of file
package com.mortals.xhx.module.base.web;
import com.mortals.framework.web.BaseCRUDJsonBodyMappingController;
import com.mortals.xhx.base.system.param.service.ParamService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.bind.annotation.*;
import com.mortals.framework.model.Context;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import com.mortals.framework.web.BaseCRUDJsonBodyMappingController;
import com.mortals.xhx.module.base.model.BaseRuleEntity;
import com.mortals.xhx.module.base.service.BaseRuleService;
import org.apache.commons.lang3.ArrayUtils;
import com.mortals.framework.util.StringUtils;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.stream.Collectors;
import com.alibaba.fastjson.JSONObject;
import java.util.Arrays;
import org.springframework.web.bind.annotation.*;
import org.springframework.web.multipart.MultipartFile;
import static com.mortals.framework.ap.SysConstains.*;
/**
*
* 数据公共规则
*
* @author zxfei
* @date 2023-07-15
*/
@RestController
@RequestMapping("base/rule")
public class BaseRuleController extends BaseCRUDJsonBodyMappingController<BaseRuleService,BaseRuleEntity,Long> {
@Autowired
private ParamService paramService;
public BaseRuleController(){
super.setModuleDesc( "数据公共规则");
}
@Override
protected void init(Map<String, Object> model, Context context) {
this.addDict(model, "indicators", paramService.getParamBySecondOrganize("BaseRule","indicators"));
this.addDict(model, "type", paramService.getParamBySecondOrganize("BaseRule","type"));
super.init(model, context);
}
}
\ No newline at end of file
package com.mortals.xhx.module.data.dao;
import com.mortals.framework.dao.ICRUDDao;
import com.mortals.xhx.module.data.model.DataSourceEntity;
import java.util.List;
/**
* 数据源Dao
* 数据源 DAO接口
*
* @author zxfei
* @date 2023-07-15
*/
public interface DataSourceDao extends ICRUDDao<DataSourceEntity,Long>{
}
package com.mortals.xhx.module.data.dao.ibatis;
import org.springframework.stereotype.Repository;
import com.mortals.xhx.module.data.dao.DataSourceDao;
import com.mortals.xhx.module.data.model.DataSourceEntity;
import java.util.Date;
import com.mortals.framework.dao.ibatis.BaseCRUDDaoMybatis;
import java.util.List;
/**
* 数据源DaoImpl DAO接口
*
* @author zxfei
* @date 2023-07-15
*/
@Repository("dataSourceDao")
public class DataSourceDaoImpl extends BaseCRUDDaoMybatis<DataSourceEntity,Long> implements DataSourceDao {
}
package com.mortals.xhx.module.data.model;
import java.util.List;
import java.util.ArrayList;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.mortals.framework.annotation.Excel;
import com.mortals.framework.model.BaseEntityLong;
import com.mortals.xhx.module.data.model.vo.DataSourceVo;
import lombok.Data;
/**
* 数据源实体对象
*
* @author zxfei
* @date 2023-07-15
*/
@Data
public class DataSourceEntity extends DataSourceVo {
private static final long serialVersionUID = 1L;
/**
* 数据源名称
*/
@Excel(name = "数据源名称")
private String name;
/**
* 来源系统
*/
@Excel(name = "来源系统")
private String sourceSystem;
/**
* 数据源类型(1.MySQL,2.SQLServer,3.Oracle,4.PostgreSQL,5.MongoDB,6.Redis,7.其他)
*/
@Excel(name = "数据源类型", readConverterExp = "1=MySQL,2.SQLServer,3.Oracle,4.PostgreSQL,5.MongoDB,6.Redis,7.其他")
private String type;
/**
* ip
*/
@Excel(name = "ip")
private String ip;
/**
* 端口
*/
@Excel(name = "端口")
private String port;
/**
* 服务名称
*/
@Excel(name = "服务名称")
private String serverName;
/**
* 用户名
*/
@Excel(name = "用户名")
private String userName;
/**
* 密码
*/
@Excel(name = "密码")
private String password;
/**
* 任务状态(0.停用,1.启用)
*/
@Excel(name = "任务状态", readConverterExp = "0=停用,1.启用")
private String statuses;
/**
* 备注
*/
private String remark;
@Override
public int hashCode() {
return this.getId().hashCode();
}
@Override
public boolean equals(Object obj) {
if (obj == null) return false;
if (obj instanceof DataSourceEntity) {
DataSourceEntity tmp = (DataSourceEntity) obj;
if (this.getId() == tmp.getId()) {
return true;
}
}
return false;
}
public void initAttrValue(){
this.name = "";
this.sourceSystem = "";
this.type = "";
this.ip = "";
this.port = "";
this.serverName = "";
this.userName = "";
this.password = "";
this.statuses = "0";
this.remark = "";
}
}
\ No newline at end of file
package com.mortals.xhx.module.data.model.vo;
import com.mortals.framework.model.BaseEntityLong;
import com.mortals.xhx.module.data.model.DataSourceEntity;
import java.util.ArrayList;
import java.util.List;
import lombok.Data;
import com.mortals.framework.annotation.Excel;
import java.math.BigDecimal;
import java.util.Date;
/**
* 数据源视图对象
*
* @author zxfei
* @date 2023-07-15
*/
@Data
public class DataSourceVo extends BaseEntityLong {
}
\ No newline at end of file
package com.mortals.xhx.module.data.service;
import com.mortals.framework.service.ICRUDService;
import com.mortals.xhx.module.data.model.DataSourceEntity;
import com.mortals.xhx.module.data.dao.DataSourceDao;
/**
* DataSourceService
*
* 数据源 service接口
*
* @author zxfei
* @date 2023-07-15
*/
public interface DataSourceService extends ICRUDService<DataSourceEntity,Long>{
DataSourceDao getDao();
}
\ No newline at end of file
package com.mortals.xhx.module.data.service.impl;
import org.springframework.stereotype.Service;
import com.mortals.framework.service.impl.AbstractCRUDServiceImpl;
import com.mortals.framework.exception.AppException;
import com.mortals.framework.model.Context;
import com.mortals.xhx.module.data.dao.DataSourceDao;
import com.mortals.xhx.module.data.model.DataSourceEntity;
import com.mortals.xhx.module.data.service.DataSourceService;
import lombok.extern.slf4j.Slf4j;
/**
* DataSourceService
* 数据源 service实现
*
* @author zxfei
* @date 2023-07-15
*/
@Service("dataSourceService")
@Slf4j
public class DataSourceServiceImpl extends AbstractCRUDServiceImpl<DataSourceDao, DataSourceEntity, Long> implements DataSourceService {
}
\ No newline at end of file
package com.mortals.xhx.module.data.web;
import com.mortals.framework.web.BaseCRUDJsonBodyMappingController;
import com.mortals.xhx.base.system.param.service.ParamService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.bind.annotation.*;
import com.mortals.framework.model.Context;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import com.mortals.framework.web.BaseCRUDJsonBodyMappingController;
import com.mortals.xhx.module.data.model.DataSourceEntity;
import com.mortals.xhx.module.data.service.DataSourceService;
import org.apache.commons.lang3.ArrayUtils;
import com.mortals.framework.util.StringUtils;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.stream.Collectors;
import com.alibaba.fastjson.JSONObject;
import java.util.Arrays;
import org.springframework.web.bind.annotation.*;
import org.springframework.web.multipart.MultipartFile;
import static com.mortals.framework.ap.SysConstains.*;
/**
*
* 数据源
*
* @author zxfei
* @date 2023-07-15
*/
@RestController
@RequestMapping("data/source")
public class DataSourceController extends BaseCRUDJsonBodyMappingController<DataSourceService,DataSourceEntity,Long> {
@Autowired
private ParamService paramService;
public DataSourceController(){
super.setModuleDesc( "数据源");
}
@Override
protected void init(Map<String, Object> model, Context context) {
this.addDict(model, "type", paramService.getParamBySecondOrganize("DataSource","type"));
this.addDict(model, "statuses", paramService.getParamBySecondOrganize("DataSource","statuses"));
super.init(model, context);
}
}
\ No newline at end of file
package com.mortals.xhx.module.database.dao;
import com.mortals.framework.dao.ICRUDDao;
import com.mortals.xhx.module.database.model.DatabaseRuleEntity;
import java.util.List;
/**
* 数据库规则Dao
* 数据库规则 DAO接口
*
* @author zxfei
* @date 2023-07-15
*/
public interface DatabaseRuleDao extends ICRUDDao<DatabaseRuleEntity,Long>{
}
package com.mortals.xhx.module.database.dao.ibatis;
import org.springframework.stereotype.Repository;
import com.mortals.xhx.module.database.dao.DatabaseRuleDao;
import com.mortals.xhx.module.database.model.DatabaseRuleEntity;
import java.util.Date;
import com.mortals.framework.dao.ibatis.BaseCRUDDaoMybatis;
import java.util.List;
/**
* 数据库规则DaoImpl DAO接口
*
* @author zxfei
* @date 2023-07-15
*/
@Repository("databaseRuleDao")
public class DatabaseRuleDaoImpl extends BaseCRUDDaoMybatis<DatabaseRuleEntity,Long> implements DatabaseRuleDao {
}
package com.mortals.xhx.module.database.model.vo;
import com.mortals.framework.model.BaseEntityLong;
import com.mortals.xhx.module.database.model.DatabaseRuleEntity;
import java.util.ArrayList;
import java.util.List;
import lombok.Data;
import com.mortals.framework.annotation.Excel;
import java.math.BigDecimal;
import java.util.Date;
/**
* 数据库规则视图对象
*
* @author zxfei
* @date 2023-07-15
*/
@Data
public class DatabaseRuleVo extends BaseEntityLong {
}
\ No newline at end of file
package com.mortals.xhx.module.database.service;
import com.mortals.framework.service.ICRUDService;
import com.mortals.xhx.module.database.model.DatabaseRuleEntity;
import com.mortals.xhx.module.database.dao.DatabaseRuleDao;
/**
* DatabaseRuleService
*
* 数据库规则 service接口
*
* @author zxfei
* @date 2023-07-15
*/
public interface DatabaseRuleService extends ICRUDService<DatabaseRuleEntity,Long>{
DatabaseRuleDao getDao();
}
\ No newline at end of file
package com.mortals.xhx.module.database.service.impl;
import org.springframework.stereotype.Service;
import com.mortals.framework.service.impl.AbstractCRUDServiceImpl;
import com.mortals.framework.exception.AppException;
import com.mortals.framework.model.Context;
import com.mortals.xhx.module.database.dao.DatabaseRuleDao;
import com.mortals.xhx.module.database.model.DatabaseRuleEntity;
import com.mortals.xhx.module.database.service.DatabaseRuleService;
import lombok.extern.slf4j.Slf4j;
/**
* DatabaseRuleService
* 数据库规则 service实现
*
* @author zxfei
* @date 2023-07-15
*/
@Service("databaseRuleService")
@Slf4j
public class DatabaseRuleServiceImpl extends AbstractCRUDServiceImpl<DatabaseRuleDao, DatabaseRuleEntity, Long> implements DatabaseRuleService {
}
\ No newline at end of file
package com.mortals.xhx.module.line.dao;
import com.mortals.framework.dao.ICRUDDao;
import com.mortals.xhx.module.line.model.LineAnalysisEntity;
import java.util.List;
/**
* 数据质量分析Dao
* 数据质量分析 DAO接口
*
* @author zxfei
* @date 2023-07-15
*/
public interface LineAnalysisDao extends ICRUDDao<LineAnalysisEntity,Long>{
}
This diff is collapsed.
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