Commit d5a73392 authored by 罗林杰's avatar 罗林杰

Merge remote-tracking branch 'origin/master'

parents 4c1f1ce0 c4f06836
...@@ -688,3 +688,162 @@ export const partDataHandleFormSchema: FormSchema[] = [ ...@@ -688,3 +688,162 @@ export const partDataHandleFormSchema: FormSchema[] = [
component: 'Input', component: 'Input',
}, },
]; ];
export const headUploadModalSchema: FormSchema[] = [
{
field: 'remark',
label: '版本变更描述',
component: 'InputTextArea',
required: true,
colProps: { lg: 24, md: 24 },
},
];
export const headGlobalConfigSchema: FormSchema[] = [
{
field: 'name',
label: '名称',
component: 'Input',
componentProps: {
readonly: true,
style: {
border: 'none',
backgroundColor: 'transparent',
},
},
defaultValue: 'TDT1',
colProps: { lg: 24, md: 24 },
},
{
field: 'remark',
label: '描述',
component: 'InputTextArea',
colProps: { lg: 24, md: 24 },
},
{
field: 'period',
label: '调度周期',
component: 'Select',
componentProps: {
options: [
{ label: 'Cron表达式', value: '1' },
{ label: '每天一次', value: '2' },
{ label: '无周期', value: '3' },
],
},
colProps: { lg: 24, md: 24 },
},
{
field: 'cron',
label: 'Cron表达式',
component: 'Input',
colProps: { lg: 24, md: 24 },
ifShow: ({ model }) => model.period === '1',
},
{
field: 'periodTime',
label: '调度时间',
component: 'TimePicker',
colProps: { lg: 24, md: 24 },
ifShow: ({ model }) => model.period === '2',
},
{
field: 'timeoutType',
component: 'Checkbox',
label: '超时取消',
componentProps: ({ formModel, formActionType }) => ({
onChange: () => {
const flag = formModel.timeoutType;
formActionType.updateSchema([{ field: 'minute', ifShow: flag }]);
},
}),
renderComponentContent: '开启',
colProps: { lg: 12, md: 12 },
},
{
field: 'minute',
label: '分钟',
component: 'InputNumber',
componentProps: {
min: 0,
max: 1000,
},
ifShow: false,
labelWidth: 40,
colProps: { lg: 12, md: 12 },
},
{
field: 'DDLOption',
component: 'Checkbox',
label: 'DDL变化策略配置',
componentProps: ({ formModel, formActionType }) => ({
onChange: () => {
const flag = formModel.DDLOption;
formActionType.updateSchema([{ field: 'isDeleteTable', ifShow: flag }]);
formActionType.updateSchema([{ field: 'isDeleteTableField', ifShow: flag }]);
formActionType.updateSchema([{ field: 'addTableField', ifShow: flag }]);
formActionType.updateSchema([{ field: 'changeTableField', ifShow: flag }]);
formActionType.updateSchema([{ field: 'globalOptionsAlert', ifShow: flag }]);
},
}),
renderComponentContent: '开启',
colProps: { lg: 24, md: 24 },
},
{
field: 'globalOptionsAlert',
slot: 'globalOptionsAlert',
ifShow: false,
colProps: { lg: 24, md: 24 },
},
{
field: 'isDeleteTable',
label: '源端数据表被删除',
component: 'RadioGroup',
defaultValue: '1',
ifShow: false,
componentProps: {
options: [{ label: '取消运行子任务', value: '1' }],
},
colProps: { lg: 24, md: 24 },
},
{
field: 'isDeleteTableField',
label: '源端数据表字段被删除',
component: 'RadioGroup',
defaultValue: '1',
ifShow: false,
componentProps: {
options: [
{ label: '取消运行子任务', value: '1' },
{ label: '取消运行子任务并不能影响任务结果', value: '2' },
{ label: '空值填充', value: '3' },
],
},
colProps: { lg: 24, md: 24 },
},
{
field: 'addTableField',
label: '源端数据表新增字段',
component: 'RadioGroup',
defaultValue: '1',
ifShow: false,
componentProps: {
options: [
{ label: '取消运行子任务', value: '1' },
{ label: '取消运行子任务并不能影响任务结果', value: '2' },
{ label: '忽略新增字段', value: '3' },
{ label: '自动更新', value: '4' },
],
},
colProps: { lg: 24, md: 24 },
},
{
field: 'changeTableField',
label: '源端数据表字段或类型变更',
component: 'RadioGroup',
defaultValue: '1',
ifShow: false,
componentProps: {
options: [{ label: '取消运行子任务', value: '1' }],
},
colProps: { lg: 24, md: 24 },
},
];
<template>
<BasicModal
width="40%"
v-bind="$attrs"
@register="registerModal"
:title="title"
@ok="handleSubmit"
>
<BasicForm @register="registerForm">
<template #globalOptionsAlert>
<Alert
show-icon
style="font-size: 12px"
message="自定义SQL模式和数据出湖(tdh的数据到第三方数据库(mysql等))无法支持DDL变更处理且不会发变更通知。"
type="info"
/>
</template>
</BasicForm>
</BasicModal>
</template>
<script lang="ts" setup>
import { ref } from 'vue';
import { BasicModal, useModalInner } from '@/components/Modal';
import { useMessage } from '@/hooks/web/useMessage';
import { BasicForm, useForm } from '@/components/Form';
import { globalOptionsSchema } from '@/views/dataIntegration/dataLoading/dataEntryLake/dataEntry.data';
import {Alert} from "ant-design-vue";
import {headGlobalConfigSchema} from "./file.data";
defineOptions({ name: 'KnowledgeModal' });
const emit = defineEmits(['success', 'register']);
const { createMessage } = useMessage();
const title = ref();
//获取接口数据并放在下拉框里(这里是打开了一个弹框)
//初始化表单
const [registerForm, { resetFields }] = useForm({
labelAlign: 'left',
labelWidth: 180,
baseColProps: { lg: 12, md: 24 },
schemas: headGlobalConfigSchema,
showActionButtonGroup: false,
actionColOptions: {
span: 23,
},
});
//初始化弹框
const [registerModal, { setModalProps, closeModal }] = useModalInner(async (data) => {
await resetFields();
setModalProps({ confirmLoading: false });
title.value = data.title;
});
async function handleSubmit() {
closeModal();
createMessage.success('提交成功');
await resetFields();
}
</script>
<template>
<BasicModal
width="40%"
v-bind="$attrs"
@register="registerModal"
:title="title"
@ok="handleSubmit"
>
<BasicForm @register="registerForm" />
</BasicModal>
</template>
<script lang="ts" setup>
import { ref } from 'vue';
import { BasicModal, useModalInner } from '@/components/Modal';
import { useMessage } from '@/hooks/web/useMessage';
import { BasicForm, useForm } from '@/components/Form';
import { saveSchema } from '@/views/dataIntegration/dataLoading/dataEntryLake/dataEntry.data';
import {headUploadModalSchema} from "./file.data";
defineOptions({ name: 'KnowledgeModal' });
const emit = defineEmits(['success', 'register']);
const { createMessage } = useMessage();
const title = ref();
//获取接口数据并放在下拉框里(这里是打开了一个弹框)
//初始化表单
const [registerForm, { resetFields }] = useForm({
labelWidth: 120,
baseColProps: { lg: 12, md: 24 },
schemas: headUploadModalSchema,
showActionButtonGroup: false,
actionColOptions: {
span: 23,
},
});
//初始化弹框
const [registerModal, { setModalProps, closeModal }] = useModalInner(async (data) => {
await resetFields();
setModalProps({ confirmLoading: false });
title.value = data.title;
});
async function handleSubmit() {
closeModal();
emit('success');
createMessage.success('发布成功');
await resetFields();
}
</script>
...@@ -456,13 +456,13 @@ ...@@ -456,13 +456,13 @@
compareTableList, compareTableList,
tabularPresentationTableList, tabularPresentationTableList,
} from '@/views/dataIntegration/dataLoading/dataEntryLake/mock'; } from '@/views/dataIntegration/dataLoading/dataEntryLake/mock';
import ViewLogModal from '@/views/dataIntegration/dataLoading/dataEntryLake/ViewLogModal.vue'; import ViewLogModal from './listViewLogModal.vue';
import ClearConfigurationModal from '@/views/dataIntegration/dataLoading/dataEntryLake/ClearConfigurationModal.vue'; import ClearConfigurationModal from '@/views/dataIntegration/dataLoading/dataEntryLake/ClearConfigurationModal.vue';
import BatchScaleNameMappingModal from '@/views/dataIntegration/dataLoading/dataEntryLake/BatchScaleNameMappingModal.vue'; import BatchScaleNameMappingModal from '@/views/dataIntegration/dataLoading/dataEntryLake/BatchScaleNameMappingModal.vue';
import AddDataConversionRuleModal from '@/views/dataIntegration/dataLoading/fileLoading/addDataConversionRuleModal.vue'; import AddDataConversionRuleModal from '@/views/dataIntegration/dataLoading/fileLoading/addDataConversionRuleModal.vue';
import { router } from '@/router'; import { router } from '@/router';
import SaveModal from '@/views/dataIntegration/dataLoading/dataEntryLake/saveModal.vue'; import SaveModal from './headUploadModal.vue';
import GlobalOptionsModal from '@/views/dataIntegration/dataLoading/dataEntryLake/globalOptionsModal.vue'; import GlobalOptionsModal from './headGlobalConfigModal.vue';
import DataOptionsModal from '@/views/dataIntegration/dataLoading/dataEntryLake/dataOptionsModal.vue'; import DataOptionsModal from '@/views/dataIntegration/dataLoading/dataEntryLake/dataOptionsModal.vue';
import VersionManageModal from '@/views/dataIntegration/dataLoading/dataEntryLake/versionManageModal.vue'; import VersionManageModal from '@/views/dataIntegration/dataLoading/dataEntryLake/versionManageModal.vue';
import PartitionDataHandleModal from '@/views/dataIntegration/dataLoading/fileLoading/partitionDataHandleModal.vue'; import PartitionDataHandleModal from '@/views/dataIntegration/dataLoading/fileLoading/partitionDataHandleModal.vue';
......
<template>
<BasicModal
width="40%"
v-bind="$attrs"
@register="registerModal"
:title="getTitle"
@ok="handleSubmit"
>
<textarea class="textAreaClass" readonly rows="18" v-model="textAreaData"></textarea>
<a-button class="buttonClass" @click="downLoadButton">下载全部日志</a-button>
</BasicModal>
</template>
<script lang="ts" setup>
import { ref, computed } from 'vue';
import { BasicModal, useModalInner } from '@/components/Modal';
import { useMessage } from '@/hooks/web/useMessage';
import { exportRoleList } from '@/api/system/role/role';
import { downloadByData } from '@/utils/file/download';
const emit = defineEmits(['success', 'register']);
const { createMessage } = useMessage();
const getTitle = computed(() => '查看日志');
const textAreaData = ref(
'\n' +
'2023-07-05 15: 38: 11.224 [ForkJoinPool-2-worker-25] INFO i.t.t.web.schedule.SolutionWatcher - change sub job status to RUNNING, sub job id is 13ad3131-d07b-4f53-92b9-4f06447fe400\n' +
'2023-07-05 15: 38: 12.481 [ForkJoinPool-2-worker-25] INFO i.t.t.w.DataImportDyanConfMana - The maximum value of incremental identity column is not recorded. Try to get the maxium value of incremental identity column.\n' +
'2023-07-05 15: 38: 13.315 [ForkJoinPool-2-worker-25] INFO i.t.t.w.DataImportDyanConfMana - An exception occurred while getting the maximum value of the incremental identity column of the target table\n' +
'2023-07-05 15: 38: 13.323 [ForkJoinPool-2-worker-25] INFO i.t.t.w.DataImportDyanConfMana - The maximum value of incremental identification column null\n' +
"2023-07-05 15: 38: 13.331 [ForkJoinPool-2-worker-25] INFO i.t.t.w.DataImportDyanConfMana - get input query select id , age , person_name , gender , height , create_time , upda_to_time from asaoyan_test..table_1 where i=1 and id != '100'\n" +
'2023-07-05 15: 38: 13.337 [ForkJoinPool-2-worker-25] INFO i.t.t.w.DataImportDyanConfMana - Local drive file directory : /usr/lib/dtd/connector/server/mysql/sql/mysql-5.7\n' +
'2023-07-05 15: 38: 14.297 [ForkJoinPool-2-worker-25] INFO i.t.t.w.DataImportDyanConfMana - table [table_1] use [COUNT] split strategy\n' +
'2023-07-05 15: 38: 14.303 [ForkJoinPool-2-worker-25] INFO i.t.t.w.DataImportDyanConfMana - finish to get input query\n' +
'2023-07-05 15: 38: 14.309 [ForkJoinPool-2-worker-25] INFO i.t.t.w.DataImportDyanConfMana - <<<<<<<< finish to init solution config info\n' +
'2023-07-05 15: 38: 16.071 [ForkJoinPool-2-worker-25] INFO i.t.t.dylan.core.job.DylanJob - Job [13a63131-d07b-4f53-92b9-4f06447fe400] init finish\n' +
'2023-07-05 15: 38: 16.080 [ForkJoinPool-2-worker-25] INFO i.t.t.dylan.core.facade.Job - Job [13a63131-d07b-4f53-92b9-4f06447fe400] start\n' +
'2023-07-05 15: 38: 16.386 [ForkJoinPool-2-worker-25] INFO i.t.t.dylan.core.job.DylanJob - Job [13a63131-d07b-4f53-92b9-4f06447fe400] finish\n' +
'2023-07-05 15: 38: 16.392 [ForkJoinPool-2-worker-25] INFO i.t.t.web.schedule.SolutionWatcher - start recording temporary table[id: 61420, "uniqueid": "edba1ab6-6dad-48bb-bb75-z67d8655a", "colExecuted": "bd2b2441-1dde-4c09-be49-8cd3da91424", engineUuid: "62105b1388b240768800", "isTableExist": true, "isTableEmpty": false, "isTableFull": false, "isTableTruncate": false, "isTableTruncateFailed": false, "isTableTruncateSuccess": false, "isTableTruncateFailed": false, "isTableTruncateSuccess": false, "isTableTruncateFailed": false, "isTableTruncateSuccess": false, "isTableTruncateFailed": false, "isTableTruncateSuccess": false, "isTableTruncateFailed": false, "isTableTruncateSuccess": false, "isTableTruncateFailed": false, "isTableTruncateSuccess": false, "isTableTruncateFailed": false, "isTableTruncateSuccess": false, "isTableTruncateFailed": false, "isTableTruncateSuccess": false, "isTableTruncateFailed": false, "isTableTruncateSuccess": false, "isTableTruncateFailed": false, "isTableTruncateSuccess": false, "isTableTruncateFailed": false, "isTableTruncateSuccess": false, "isTableTruncateFailed": false, "isTableTruncateSuccess": false, "isTableTruncateFailed": false, "isTableTruncateSuccess": false, "isTableTruncateFailed": false, "isTableTruncateSuccess": false, "isTableTruncateFailed": false, "isTableTruncateSuccess": false, "isTableTruncateFailed": false, "isTableTruncateSuccess": false, "isTableTruncateFailed": false, "isTableTruncateSuccess": false, "isTableTruncateFailed": false, "isTableTruncateSuccess": false, "isTableTruncateFailed": false, "isTableTruncateSuccess": false, "isTableTruncateFailed": false, "isTableTruncateSuccess": false, "isTableTruncateFailed": false, "isTableTruncateSuccess": false, "isTableTruncateFailed": false, "isTableTruncateSuccess": false, "isTableTruncateFailed": false, "isTableTruncateSuccess": false, "isTableTruncateFailed": false, "isTableTruncateSuccess": false, "isTableTruncateFailed": false, "isTableTruncateSuccess": false, "isTableTruncateFailed": false, "isTableTruncateSuccess": false, "isTableTruncateFailed": false, "isTableTruncateSuccess": false, "isTableTruncateFailed": false, "isTableTruncateSuccess": false, "isTableTruncateFailed": false, "isTableTruncateSuccess": false, "isTableTruncateFailed": false, "isTableTruncateSuccess": false, "isTableTruncateFailed": false, "isTableTruncateSuccess": false, "isTableTruncateFailed": false, "isTableTruncateSuccess": false, "isTableTruncateFailed": false, "isTableTruncateSuccess": false, "isTableTruncateFailed": false, "isTableTruncateSuccess": false, "isTableTruncateFailed": false, "isTableTruncateSuccess": false, "isTableTruncateFailed": false, "isTableTruncateSuccess": false, "isTableTruncateFailed": false, "isTableTruncateSuccess": false, "isTableTruncateFailed": false, "isTableTruncateSuccess": false, "isTableTruncateFailed": false, "isTableTruncateSuccess": false, "isTableTruncateFailed": false, "isTableTruncateSuccess": false, "isTableTruncateFailed": false, "isTableTruncateSuccess": false, "isTableTruncateFailed": false, "isTableTruncateSuccess": false, "isTableTruncateFailed": false, "isTableTruncateSuccess": false, "isTableTruncateFailed": false, "isTableTruncateSuccess": false, "isTableTruncateFailed": false, "isTableTruncateSuccess": false, "isTableTruncateFailed": false,\n',
);
//初始化弹框
const [registerModal, { setModalProps, closeModal }] = useModalInner(async (data) => {
setModalProps({ confirmLoading: false, showOkBtn: false, cancelText: '关闭' });
});
/**确定按钮*/
async function handleSubmit() {
closeModal();
}
/**下载全部日志 按钮*/
async function downLoadButton() {
const params = Object.assign({}, {});
const data = await exportRoleList(params);
downloadByData(data, '全部日志' + '.xlsx');
}
</script>
<style lang="less" scoped>
.buttonClass {
margin-top: 10px;
border-color: rgb(41, 147, 249);
color: rgb(41, 147, 249);
}
.textAreaClass {
width: 100%;
margin-top: 20px;
background-color: rgb(138, 138, 138);
color: white;
}
</style>
...@@ -3,74 +3,73 @@ ...@@ -3,74 +3,73 @@
<template #extra> <template #extra>
<div style="display: flex"> <div style="display: flex">
<div> <div>
<a-button style="border-color: transparent"> <a-button type="link">
<Icon icon="ant-design:caret-right-outlined" style="color: blue" size="24" /> <Icon icon="ant-design:caret-right-outlined" size="24" />
<p>运行</p> <p style="color: black">运行</p>
</a-button> </a-button>
</div> </div>
<div> <div>
<a-button style="border-color: transparent"> <a-button type="link">
<Icon icon="ant-design:send-outlined" style="color: blue" size="24" /> <Icon icon="ant-design:send-outlined" size="24" />
<p>发布</p> <p style="color: black">发布</p>
</a-button> </a-button>
</div> </div>
<div> <div>
<a-button <a-button
style="border-color: transparent"
@click="batchOffline" @click="batchOffline"
:disabled="checkDisabled()" :disabled="checkDisabled()"
type="link" type="link"
> >
<Icon icon="ant-design:cloud-download-outlined" size="24" /> <Icon icon="ant-design:cloud-download-outlined" size="24" />
<p>下线</p> <p style="color: black">下线</p>
</a-button> </a-button>
</div> </div>
<div> <div>
<a-button style="border-color: transparent"> <a-button type="link">
<Icon icon="ant-design:tag-outlined" style="color: blue" size="24" /> <Icon icon="ant-design:tag-outlined" size="24" />
<p>设置业务标签</p> <p style="color: black">设置业务标签</p>
</a-button> </a-button>
</div> </div>
<div> <div>
<a-button style="border-color: transparent"> <a-button type="link">
<Icon icon="ant-design:reconciliation-outlined" style="color: blue" size="24" /> <Icon icon="ant-design:reconciliation-outlined" size="24" />
<p>复制到</p> <p style="color: black">复制到</p>
</a-button> </a-button>
</div> </div>
<div> <div>
<a-button style="border-color: transparent"> <a-button type="link">
<Icon icon="ant-design:delete-outlined" style="color: red" size="24" /> <Icon icon="ant-design:delete-outlined" style="color: red" size="24" />
<p>删除</p> <p style="color: black">删除</p>
</a-button> </a-button>
</div> </div>
<div> <div>
<a-button style="border-color: transparent"> <a-button type="link">
<Icon icon="ant-design:folder-open-outlined" style="color: blue" size="24" /> <Icon icon="ant-design:folder-open-outlined" size="24" />
<p>移动</p> <p style="color: black">移动</p>
</a-button> </a-button>
</div> </div>
<div> <div>
<a-button style="border-color: transparent"> <a-button type="link">
<Icon icon="ant-design:arrow-up-outlined" style="color: blue" size="24" /> <Icon icon="ant-design:arrow-up-outlined" size="24" />
<p>导出</p> <p style="color: black">导出</p>
</a-button> </a-button>
</div> </div>
<div> <div>
<a-button style="border-color: transparent"> <a-button type="link">
<Icon icon="ant-design:arrow-down-outlined" style="color: blue" size="24" /> <Icon icon="ant-design:arrow-down-outlined" size="24" />
<p>导入</p> <p style="color: black">导入</p>
</a-button> </a-button>
</div> </div>
<div> <div>
<a-button style="border-color: transparent"> <a-button type="link">
<Icon icon="ant-design:folder-add-outlined" style="color: blue" size="24" /> <Icon icon="ant-design:folder-add-outlined" size="24" />
<p>新建文件夹</p> <p style="color: black">新建文件夹</p>
</a-button> </a-button>
</div> </div>
<div> <div>
<a-button style="border-color: transparent"> <a-button type="link">
<Icon icon="ant-design:plus-square-outlined" style="color: blue" size="24" /> <Icon icon="ant-design:plus-square-outlined" size="24" />
<p>新建文件</p> <p style="color: black">新建文件</p>
</a-button> </a-button>
</div> </div>
</div> </div>
...@@ -194,7 +193,7 @@ ...@@ -194,7 +193,7 @@
const searchInfo = reactive<Recordable>({}); const searchInfo = reactive<Recordable>({});
const [copyModal, { openModal: openCopyModal }] = useModal(); const [copyModal, { openModal: openCopyModal }] = useModal();
const [checkModal, { openModal: openCheckModal }] = useModal(); const [checkModal, { openModal: openCheckModal }] = useModal();
const [registerTable, { getRowSelection, getSelectRows, setTableData }] = useTable({ const [registerTable, { getRowSelection, getSelectRows, setTableData,setSelectedRows, }] = useTable({
/* title: '任务流',*/ /* title: '任务流',*/
api: async (params) => { api: async (params) => {
const response = { const response = {
...@@ -274,6 +273,7 @@ ...@@ -274,6 +273,7 @@
); );
setTableData(data); setTableData(data);
} }
setSelectedRows([]);
} }
/**查看API*/ /**查看API*/
......
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