Commit 3ac4aabe authored by LiXuyang's avatar LiXuyang

落标检查-任务配置

parent 1fbdfe5e
...@@ -219,7 +219,7 @@ export const DataWarehousePlanningRoute: AppRouteRecordRaw = { ...@@ -219,7 +219,7 @@ export const DataWarehousePlanningRoute: AppRouteRecordRaw = {
component: () => component: () =>
import('@/views/dataWarehousePlanning/logicalModel/upload/index.vue'), import('@/views/dataWarehousePlanning/logicalModel/upload/index.vue'),
meta: { meta: {
title: '实体关系图', title: '申请发布',
icon: '', icon: '',
}, },
}, },
......
<template>
<BasicModal
width="40%"
v-bind="$attrs"
@register="registerModal"
:title="getTitle"
@ok="handleSubmit"
>
<Alert
message="以下资源树仅展示已关联标准的元数据,如没有找到所需的元数据请至标准或元数据页面查看关联信息."
show-icon
/>
<BasicTree :treeData="addMetadataTreeData" :checkable="true" defaultExpandLevel="1" />
</BasicModal>
</template>
<script lang="ts" setup>
import { ref, unref } from 'vue';
import { BasicModal, useModalInner } from '@/components/Modal';
import { BasicTree } from '@/components/Tree';
import { Alert } from 'ant-design-vue';
import { addMetadataTreeData } from './detailData';
const isUpdate = ref(true);
const isMove = ref(false);
const rowId = ref('');
//初始化弹框
const [registerModal, { setModalProps, closeModal }] = useModalInner(async (data) => {
setModalProps({ confirmLoading: false });
isUpdate.value = !!data?.isUpdate;
isMove.value = !!data?.isMove;
if (unref(isUpdate)) {
// 获取行数据的id
rowId.value = data.record.businessId;
// 塞值
}
});
// const getTitle = computed(() => '新建文件');
const getTitle = '添加元数据';
/**确定按钮*/
async function handleSubmit() {
closeModal();
}
</script>
import { FormSchema } from '@/components/Form'; import { FormSchema } from '@/components/Form';
import {BasicColumn} from "@/components/Table"; import {BasicColumn} from "@/components/Table";
import {TableColumn} from "ant-design-vue";
export const detailFormSchema: FormSchema[] = [ export const detailFormSchema: FormSchema[] = [
{ {
...@@ -11,7 +12,7 @@ export const detailFormSchema: FormSchema[] = [ ...@@ -11,7 +12,7 @@ export const detailFormSchema: FormSchema[] = [
{ {
field: 'basicType', field: 'basicType',
label: '标准类型', label: '标准类型',
slot: 'type', slot: 'basicType',
}, },
{ {
field: 'describe', field: 'describe',
...@@ -49,7 +50,7 @@ export const detailFormSchema: FormSchema[] = [ ...@@ -49,7 +50,7 @@ export const detailFormSchema: FormSchema[] = [
{ {
field: 'type', field: 'type',
label: '规则选择方式', label: '规则选择方式',
component: 'RadioGroup', slot: 'type',
componentProps: { componentProps: {
options: [ options: [
{ {
...@@ -84,7 +85,8 @@ export const detailDataColumn: BasicColumn[] = [ ...@@ -84,7 +85,8 @@ export const detailDataColumn: BasicColumn[] = [
{ {
title: '字段名称', title: '字段名称',
dataIndex: 'field', dataIndex: 'field',
width: 150, slots: { customRender: 'field' },
width: 200,
}, },
]; ];
export const detailDataFormSchema: FormSchema[] = [ export const detailDataFormSchema: FormSchema[] = [
...@@ -104,4 +106,199 @@ export const detailDataFormSchema: FormSchema[] = [ ...@@ -104,4 +106,199 @@ export const detailDataFormSchema: FormSchema[] = [
}, },
colProps: { lg: 4 }, colProps: { lg: 4 },
}, },
{
field: 'change',
label: '是否运行质量检查',
labelWidth: '180',
helpMessage: '是否运行质量检查',
defaultValue: '否',
component: 'RadioGroup',
componentProps: {
options: [
{
label: '是',
value: '是',
},
{
label: '否',
value: '否',
},
],
},
colProps: { lg: 8 },
},
];
export const metadataColumns: BasicColumn[] = [
{
title: '字段名称',
dataIndex: 'name',
width: 200,
slots: { customRender: 'name' },
},
{
title: '质量模板',
dataIndex: 'model',
width: 100,
},
{
title: '标准',
dataIndex: 'standard',
width: 100,
},
{
title: '落标状态',
dataIndex: 'flag',
width: 100,
},
{
title: '开启检查',
dataIndex: 'check',
width: 100,
slots: { customRender: 'check' },
},
];
export const metadataFormSchema: FormSchema[] = [
{
field: 'name',
component: 'Input',
colProps: { lg: 4 },
},
{
field: 'change',
label: '是否运行质量检查',
labelWidth: '180',
helpMessage: '是否运行质量检查',
defaultValue: '否',
component: 'RadioGroup',
componentProps: {
options: [
{
label: '是',
value: '是',
},
{
label: '否',
value: '否',
},
],
},
colProps: { lg: 8 },
},
];
export const metadataData = [
{
businessId: 1,
name: 'identity',
nameTxt: '数据中台ArgoDB/dmp/landing_graduates_info/identity',
model: '非空检查(不为NULL)',
standard: '身份标识',
flag: '',
check: true,
children: [
{
businessId: 1,
name: '',
nameTxt: '',
model: '非空检查(不为NULL)',
standard: '身份标识',
flag: '',
check: true,
},
{
businessId: 1,
name: '',
nameTxt: '',
model: '长度检查[0,50]',
standard: '身份标识',
flag: '',
check: true,
},
{
businessId: 1,
name: '',
nameTxt: '',
model: '公民身份号码',
standard: '身份标识',
flag: '',
check: true,
},
{
businessId: 1,
name: '',
nameTxt: '',
model: '重复',
standard: '身份标识',
flag: '',
check: true,
},
{
businessId: 1,
name: '',
nameTxt: '',
model: '元数据检查',
standard: '身份标识',
flag: '',
check: true,
},
{
businessId: 1,
name: '',
nameTxt: '',
model: '非空检查(不为NULL)',
standard: '身份标识',
flag: '',
check: true,
},
{
businessId: 1,
name: '',
nameTxt: '',
model: '长度检查[0,50]',
standard: '身份标识',
flag: '',
check: true,
},
{
businessId: 1,
name: '',
nameTxt: '',
model: '重复',
standard: '身份标识',
flag: '',
check: true,
},
{
businessId: 1,
name: '',
nameTxt: '',
model: '元数据检查',
standard: '身份标识',
flag: '',
check: true,
},
],
},
];
export const importFormSchema: FormSchema[] = [
{
field: 'methods',
label: '导入文件选择',
helpMessage: '导入文件选择',
labelWidth: 120,
slot: 'fileMethods',
colProps: { lg: 24, md: 24 },
},
{
field: 'type',
label: '导入策略',
defaultValue: '增量添加',
slot: 'type',
colProps: { lg: 24, md: 24 },
componentProps: {
options: [
{ label: '增量添加', value: '增量添加' },
{ label: '全量覆盖', value: '全量覆盖' },
],
},
},
]; ];
...@@ -16,3 +16,157 @@ export const detailCycleOptions = [ ...@@ -16,3 +16,157 @@ export const detailCycleOptions = [
value: '无周期', value: '无周期',
}, },
]; ];
export const detailData = [
{
businessId: 1,
standard: '客户详细地址',
path: 'admin-个人工作区/客户通用信息/联系信息/物理地址/客户详细地址',
model: '元数据检查',
field: 'address',
fieldTxt: 'inceptor-1/demo/table4/address',
children: [
{
businessId: 1,
// standard: '客户详细地址',
path: 'admin-个人工作区/客户通用信息/联系信息/物理地址/客户详细地址',
model: '长度[4,80]',
field: 'address',
fieldTxt: 'inceptor-1/demo/table4/address',
},
],
},
{
businessId: 2,
standard: '客户详细地址',
path: 'admin-个人工作区/客户通用信息/联系信息/物理地址/客户详细地址',
model: '元数据检查',
field: 'address',
fieldTxt: 'inceptor-1/demo/table4/address',
children: [
{
businessId: 2,
// standard: '客户详细地址',
path: 'admin-个人工作区/客户通用信息/联系信息/物理地址/客户详细地址',
model: '长度[4,80]',
field: 'address',
fieldTxt: 'inceptor-1/demo/table4/address',
},
],
},
];
export const addMetadataTreeData = [
{
key: '0-0',
title: '表',
icon: 'ant-design:table-outlined',
children: [
{
key: '0-0-1',
title: 'app_acct_inst_his_2',
icon: 'ant-design:table-outlined',
children: [
{
key: '0-0-1-0',
title: 'acct_id',
icon: 'ant-design:insert-row-left-outlined',
},
{
key: '0-0-1-1',
title: 'ccrc_acct_id',
icon: 'ant-design:insert-row-left-outlined',
},
],
},
{
key: '0-0-2',
title: 'app_acct_txn_stat_day',
icon: 'ant-design:table-outlined',
children: [
{
key: '0-0-2-0',
title: 'acct_id',
icon: 'ant-design:insert-row-left-outlined',
},
{
key: '0-0-2-1',
title: 'ccrc_acct_id',
icon: 'ant-design:insert-row-left-outlined',
},
],
},
{
key: '0-0-3',
title: 'app_acct_type_bond_his',
icon: 'ant-design:table-outlined',
children: [
{
key: '0-0-3-0',
title: 'acct_id',
icon: 'ant-design:insert-row-left-outlined',
},
{
key: '0-0-3-1',
title: 'ccrc_acct_id',
icon: 'ant-design:insert-row-left-outlined',
},
],
},
{
key: '0-0-4',
title: 'app_acct_type_bond_his_d',
icon: 'ant-design:table-outlined',
children: [
{
key: '0-0-4-0',
title: 'acct_id',
icon: 'ant-design:insert-row-left-outlined',
},
{
key: '0-0-4-1',
title: 'ccrc_acct_id',
icon: 'ant-design:insert-row-left-outlined',
},
],
},
{
key: '0-0-5',
title: 'app_acct_type_bond_his_i',
icon: 'ant-design:table-outlined',
children: [
{
key: '0-0-5-0',
title: 'acct_id',
icon: 'ant-design:insert-row-left-outlined',
},
{
key: '0-0-5-1',
title: 'ccrc_acct_id',
icon: 'ant-design:insert-row-left-outlined',
},
],
},
{
key: '0-0-6',
title: 'app_acct_type_bond_his_t',
icon: 'ant-design:table-outlined',
children: [
{
key: '0-0-6-0',
title: 'acct_id',
icon: 'ant-design:insert-row-left-outlined',
},
{
key: '0-0-6-1',
title: 'ccrc_acct_id',
icon: 'ant-design:insert-row-left-outlined',
},
],
},
],
},
{
key: '0-1',
title: '视图',
icon: 'ant-design:table-outlined',
},
];
<template>
<BasicModal
width="40%"
v-bind="$attrs"
@register="registerModal"
:title="getTitle"
@ok="handleSubmit"
>
<BasicForm @register="registerForm">
<template #fileMethods="{ model, field }">
<div style="display: flex">
<div>
<a-button>下载模板</a-button>
<a-button type="primary" style="margin-left: 5px">添加文件</a-button>
</div>
</div>
</template>
<template #type="{ model, field }">
<RadioGroup v-model:value="model[field]">
<Radio :value="item" v-for="item in ['增量添加', '全量覆盖']" :key="item"
>{{ item }}<QuestionCircleOutlined style="z-index: 2"
/></Radio>
</RadioGroup>
</template>
</BasicForm>
</BasicModal>
</template>
<script lang="ts" setup>
import { ref, unref } from 'vue';
import { Radio } from 'ant-design-vue';
import { QuestionCircleOutlined } from '@ant-design/icons-vue';
import { BasicModal, useModalInner } from '@/components/Modal';
import { BasicForm, useForm } from '@/components/Form';
import { importFormSchema } from '@/views/dataStandards/labelDropInspection/labelDetail/detail.data';
const RadioGroup = Radio.Group;
const isUpdate = ref(true);
const isMove = ref(false);
const rowId = ref('');
//初始化表单
const [registerForm, { setFieldsValue, updateSchema, resetFields, validate }] = useForm({
labelWidth: 100,
baseColProps: { lg: 12, md: 24 },
schemas: importFormSchema,
showActionButtonGroup: false,
actionColOptions: {
span: 23,
},
});
//初始化弹框
const [registerModal, { setModalProps, closeModal }] = useModalInner(async (data) => {
resetFields();
setModalProps({ confirmLoading: false });
isUpdate.value = !!data?.isUpdate;
isMove.value = !!data?.isMove;
if (unref(isUpdate)) {
// 获取行数据的id
rowId.value = data.record.businessId;
// 塞值
setFieldsValue({
...data.record,
});
}
});
// const getTitle = computed(() => '新建文件');
const getTitle = 'Excel导入元数据';
/**确定按钮*/
async function handleSubmit() {
closeModal();
}
</script>
...@@ -12,7 +12,7 @@ ...@@ -12,7 +12,7 @@
<template #name="{ model, field }"> <template #name="{ model, field }">
<span>{{ model[field] }}</span> <span>{{ model[field] }}</span>
</template> </template>
<template #type="{ model, field }"> <template #basicType="{ model, field }">
<span>{{ model[field] }}</span> <span>{{ model[field] }}</span>
</template> </template>
<template #updateTime="{ model, field }"> <template #updateTime="{ model, field }">
...@@ -25,40 +25,103 @@ ...@@ -25,40 +25,103 @@
<a-input style="width: 200px" v-model:value="model[field]" /> <a-input style="width: 200px" v-model:value="model[field]" />
<a-button type="link">Cron表达式</a-button> <a-button type="link">Cron表达式</a-button>
</template> </template>
<template #type="{ model, field }">
<RadioGroup v-model:value="model[field]" @change="changeTableType(model[field])">
<Radio :value="item" v-for="item in ['数据标准', '元数据']" :key="item">{{
item
}}</Radio>
</RadioGroup>
</template>
</BasicForm> </BasicForm>
<span class="table-title" style="font-size: 18px; margin: 12px 10px 0">检查规则</span> <span class="table-title" style="font-size: 18px; margin: 12px 10px 0">检查规则</span>
<BasicTable @register="registerTable" :searchInfo="searchInfo" /> <BasicTable
v-if="tableType === '数据标准'"
@register="registerTable"
:searchInfo="searchInfo"
>
<template #toolbar>
<a-button><DeleteOutlined /></a-button>
<a-button type="primary">添加数据标准</a-button>
</template>
<template #standard="{ text, record }">
<a @click="handleTableName">{{ text }}</a>
</template>
<template #field="{ text, record }">
<div>{{ text }}</div>
<div style="color: #9195a4">{{ record.fieldTxt }}</div>
</template>
</BasicTable>
<BasicTable v-if="tableType === '元数据'" @register="metadataTable" :searchInfo="searchInfo">
<template #toolbar>
<a-button><DeleteOutlined /></a-button>
<!-- <a-button type="primary">添加元数据</a-button>-->
<a-button type="primary" @click="handleExcel">Excel导入</a-button>
<a-button type="primary" @click="handleAdd">手动添加</a-button>
</template>
<template #name="{ text, record }">
<div>{{ text }}</div>
<div style="color: #9195a4">{{ record.nameTxt }}</div>
</template> </template>
<template #check="{ text, record }">
<Switch v-model:checked="record['check']" />
</template>
</BasicTable>
</template>
<ExcelModel @register="excelModel" />
<AddMetadataModel @register="addMetadataModel" />
</PageWrapper> </PageWrapper>
</template> </template>
<script lang="ts" setup> <script lang="ts" setup>
import { Radio, Select, Switch } from 'ant-design-vue';
import { PageWrapper } from '@/components/Page'; import { PageWrapper } from '@/components/Page';
import { Select } from 'ant-design-vue'; import { DeleteOutlined } from '@ant-design/icons-vue';
import { BasicTable, useTable, TableAction } from '@/components/Table'; import { BasicTable, useTable } from '@/components/Table';
import BasicForm from '../../../../components/Form/src/BasicForm.vue'; import BasicForm from '../../../../components/Form/src/BasicForm.vue';
import { useForm } from '../../../../components/Form/index.js'; import { useForm } from '@/components/Form';
import { useModal } from '@/components/Modal';
import { onMounted, reactive, ref } from 'vue'; import { onMounted, reactive, ref } from 'vue';
import { useRoute } from 'vue-router'; import { useRoute } from 'vue-router';
import { import {
detailDataColumn, detailDataFormSchema, detailDataColumn,
detailFormSchema detailDataFormSchema,
detailFormSchema,
metadataColumns,
metadataData,
metadataFormSchema,
} from '@/views/dataStandards/labelDropInspection/labelDetail/detail.data'; } from '@/views/dataStandards/labelDropInspection/labelDetail/detail.data';
import { import {
detailFormData, detailFormData,
detailCycleOptions, detailCycleOptions,
detailData,
} from '@/views/dataStandards/labelDropInspection/labelDetail/detailData'; } from '@/views/dataStandards/labelDropInspection/labelDetail/detailData';
import { labelTableData } from '@/views/dataStandards/labelDropInspection/labelData'; import ExcelModel from './excelModel.vue';
import { import AddMetadataModel from './addMetadataModel.vue';
labelColumn,
labelFormSchemas, const RadioGroup = Radio.Group;
} from '@/views/dataStandards/labelDropInspection/label.data';
//初始化表单
const route = useRoute(); const route = useRoute();
const modelName = ref(route.query.name); const modelName = ref(route.query.name);
const searchInfo = reactive<Recordable>({}); const searchInfo = reactive<Recordable>({});
const infoData = route.query; const infoData = route.query;
const [registerForm, { setFieldsValue, updateSchema, resetFields, validate }] = useForm({ let tableType = ref('数据标准');
function handleTableName() {}
function changeTableType(type) {
tableType.value = type;
}
function handleExcel() {
openExcelModal(true, {
isUpdate: false,
});
}
function handleAdd() {
openAddMetadataModel(true, {
isUpdate: false,
});
}
const [excelModel, { openModal: openExcelModal }] = useModal();
const [addMetadataModel, { openModal: openAddMetadataModel }] = useModal();
const [registerForm, { setFieldsValue, getFieldsValue, updateSchema, resetFields, validate }] =
useForm({
labelWidth: 100, labelWidth: 100,
baseColProps: { lg: 12, md: 12 }, baseColProps: { lg: 12, md: 12 },
schemas: detailFormSchema, schemas: detailFormSchema,
...@@ -72,25 +135,21 @@ ...@@ -72,25 +135,21 @@
{ reload, updateTableDataRecord, getSearchInfo, getForm, getRowSelection }, { reload, updateTableDataRecord, getSearchInfo, getForm, getRowSelection },
] = useTable({ ] = useTable({
title: '', title: '',
isTreeTable: true,
// 数据 // 数据
api: async (params) => { // api: async (params) => {
console.log('params:', params); // console.log('params:', params);
const response = { // const response = {
pageNu: '1', // dataSource: detailData,
pageSize: '10', // };
pages: '1', // return { ...response };
total: [].length, // },
code: '', dataSource: detailData,
message: '',
data: [],
};
return { ...response };
},
rowKey: 'businessId', rowKey: 'businessId',
// 列 // 列
columns: detailDataColumn, columns: detailDataColumn,
showIndexColumn: false, showIndexColumn: false,
rowSelection: true, rowSelection: {},
striped: false, striped: false,
// 搜索 // 搜索
formConfig: { formConfig: {
...@@ -101,14 +160,26 @@ ...@@ -101,14 +160,26 @@
useSearchForm: true, useSearchForm: true,
showTableSetting: false, showTableSetting: false,
bordered: true, bordered: true,
handleSearchInfoFn(info) { });
return info; const [metadataTable, {}] = useTable({
}, title: '',
actionColumn: { isTreeTable: true,
width: 150, dataSource: metadataData,
title: '操作', rowKey: 'businessId',
dataIndex: 'action', // 列
columns: metadataColumns,
showIndexColumn: false,
rowSelection: {},
striped: false,
// 搜索
formConfig: {
labelWidth: 120,
schemas: metadataFormSchema,
autoSubmitOnEnter: true,
}, },
useSearchForm: true,
showTableSetting: false,
bordered: true,
}); });
onMounted(() => { onMounted(() => {
setFieldsValue({ ...detailFormData, ...infoData }); setFieldsValue({ ...detailFormData, ...infoData });
......
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