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

Merge remote-tracking branch 'origin/master'

parents 1e425877 f506e403
......@@ -102,6 +102,15 @@ export const mainBodyRoute: AppRouteRecordRaw = {
currentActiveMenu: '/mainBody/index',
},
children: [
{
path: 'index',
name: 'mainBody',
component: () => import('@/views/mainBody/index.vue'),
meta: {
title: '主体管理',
icon: '',
},
},
{
path: '/mainBody/details',
name: 'details',
......@@ -147,6 +156,7 @@ export const DataSourceRoute: AppRouteRecordRaw = {
],
};
/**用户管理*/
export const UserRoute: AppRouteRecordRaw = {
path: '/user',
name: 'User',
......
import {FormSchema} from "@/components/Form";
export const createHeaderFormSchema: FormSchema[] = [
{
label: '标签类型',
field: 'labelType',
required: true,
component: 'Select',
componentProps: {
options: [
{
label: '衍生标签',
value: '衍生标签',
},
{
label: '衍生标签',
value: '衍生标签',
},
],
},
},
{
label: '标签分层',
field: 'labelLayered',
required: true,
component: 'Select',
componentProps: {
options: [
{
label: '分层',
value: '分层',
},
],
},
},
{
label: '配置方式',
field: 'configWay',
required: true,
component: 'Select',
componentProps: {
options: [
{
label: '规则表达式',
value: '规则表达式',
},
],
},
},
{
label: '更新频率',
field: 'labelType',
required: true,
component: 'Select',
componentProps: {
options: [
{
label: '随主体更新',
value: '随主体更新',
},
],
},
},
];
export const createBodyFormSchema: FormSchema[] = [
{
label: '英文名称',
field: 'enName',
component: 'Input',
},
{
label: '逻辑说明',
field: 'des',
component: 'Input',
},
];
export const tabList = [
{
id: 1,
name: '全职员工',
},
{
id: 2,
name: '兼职员工',
},
{
id: 3,
name: '其他',
},
];
<template>
<PageWrapper :title="title" dense contentFullHeight fixedHeight>
<template #extra>
<a-button type="primary">关联名单</a-button>
<Divider type="vertical" style="height: 32px; background-color: #eff2f9" />
<a-button type="primary">基本信息</a-button>
<a-button type="primary">保存</a-button>
<a-button type="primary">发布版本</a-button>
<a-button type="primary">版本管理</a-button>
<a-button type="primary">更新记录</a-button>
</template>
<template #footer>
<BasicForm @register="headerForm" />
<div class="flex" style="margin: 0 -24px; border-top: 1px solid #eaecf6">
<!-- 标签分层 -->
<div class="w-1/7" style="padding: 10px">
<div class="flex justify-between">
<span>标签分层</span>
<a-button type="link"><PlusOutlined /></a-button>
</div>
<div>
<List>
<template v-for="item in tabList" :key="item.id">
<List.Item
style="cursor: pointer"
:class="clickId === item.id ? 'select-item' : null"
@click="handleClick(item)"
>
<List.Item.Meta>
<template #avatar>
<Icon icon="ion:layers-outline" style="color: #f6c79a" />
</template>
<template #title>
<div :class="clickId === item.id ? 'select-item' : null">
<span>{{ item.name }}</span>
</div>
</template>
</List.Item.Meta>
</List.Item>
</template>
</List>
</div>
</div>
<div class="w-6/7" style="border-left: 1px solid #eaecf6">
<!-- 标题 -->
<div class="flex" style="padding: 5px 24px">
<Icon style="font-size: 22px; color: #f6c79a" icon="ion:layers-outline" />
<span style="font-size: 18px">{{ clickItem.name }}</span>
</div>
<BasicForm @register="bodyForm" />
<div style="margin: 40px 25px">
<div class="flex" v-for="group in groupList" :key="group.key">
<Select
v-model:value="group.logic"
style="width: 65px; height: 32px"
:options="logicOptions"
/>
<div style="border-top: 1px solid #d4d9e6; width: 15px; margin-top: 15px"></div>
<div>
<div
class="flex"
v-for="item in group.fieldList"
:key="item.key"
style="margin-bottom: 20px"
>
<div
style="border-left: 1px solid #d4d9e6; margin-top: 15px; margin-bottom: -36px"
></div>
<div
style="border-bottom: 1px solid #d4d9e6; width: 15px; margin-bottom: 16px"
></div>
<div class="flex" style="gap: 10px">
<Select
v-model:value="item.field"
style="width: 300px"
:options="fieldOptions"
/>
<Select
v-model:value="item.operator"
style="width: 200px"
:options="operatorOptions"
/>
<Input
v-if="!['是NULL', '不是NULL', null, undefined].includes(item.operator)"
v-model:value="item.des"
/>
<CloseOutlined @click="handleDel(item, item.key)" />
</div>
</div>
<div class="flex">
<div
style="border-bottom: 1px solid #d4d9e6; width: 15px; margin-bottom: 16px"
></div>
<div class="flex">
<a-button
style="padding-left: 0"
type="link"
@click="handleAddField(group.fieldList)"
>添加条件</a-button
>
<a-button type="link" @click="handleAddGroup">添加组</a-button>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</template>
</PageWrapper>
</template>
<script lang="ts" setup>
import PageWrapper from '../../../../components/Page/src/PageWrapper.vue';
import { Divider, List, Select, Input } from 'ant-design-vue';
import { PlusOutlined, CloseOutlined } from '@ant-design/icons-vue';
import { tabList } from './createData';
import Icon from '@/components/Icon/Icon.vue';
import BasicForm from '@/components/Form/src/BasicForm.vue';
import { useForm } from '@/components/Form';
import {
createBodyFormSchema,
createHeaderFormSchema,
} from '@/views/mallResourceDevelopment/labelDevelop/createLabel/create.data';
import { reactive, ref } from 'vue';
import { useRoute } from 'vue-router';
const route = useRoute();
const title = route.query.name;
const [headerForm] = useForm({
labelWidth: 100,
baseColProps: { lg: 5, md: 5 },
schemas: createHeaderFormSchema,
showActionButtonGroup: false,
actionColOptions: {
span: 23,
},
});
const clickId = ref(tabList[0].id);
const clickItem = ref(tabList[0]);
function handleClick(item) {
clickId.value = item.id;
clickItem.value = { ...item };
}
const [bodyForm] = useForm({
labelWidth: 100,
baseColProps: { span: 11 },
schemas: createBodyFormSchema,
showActionButtonGroup: false,
actionColOptions: {
span: 23,
},
});
const logicOptions = [
{
label: '或',
value: '或',
},
{
label: '且',
value: '且',
},
{
label: '非',
value: '非',
},
];
const fieldOptions = [
{
label: '编号',
value: '编号',
},
{
label: '工作类型',
value: '工作类型',
},
];
const operatorOptions = [
{
label: '等于',
value: '等于',
},
{
label: '不等于',
value: '不等于',
},
{
label: '不是NULL',
value: '不是NULL',
},
{
label: '是NULL',
value: '是NULL',
},
];
const groupList = reactive([
{
key: 0,
fieldList: [
{
key: 0,
},
],
},
]);
function handleAddField(fieldList) {
fieldList.push({
key: fieldList.length,
});
}
function handleAddGroup() {
groupList.push({
key: groupList.length,
fieldList: [
{
key: 0,
},
],
});
}
function handleDel(fieldList, item) {
fieldList.splice(item, 1);
}
</script>
<style scoped>
/*点击后样式*/
.select-item {
background-color: #338bfe;
color: #ffffff;
border-radius: 8px;
}
</style>
<template>
<PageWrapper dense>
<PageWrapper dense contentFullHeight fixedHeight>
<template #footer>
<div class="flex">
<!--树-->
......@@ -18,8 +18,8 @@
<a-button type="primary">下架商城</a-button>
<a-button type="primary">上架商城</a-button>
<a-button type="primary">导入</a-button>
<a-button type="primary" :disabled="true">导出</a-button>
<a-button type="primary" :disabled="true">移动</a-button>
<a-button type="primary" :disabled="selectDisabled">导出</a-button>
<a-button type="primary" :disabled="selectDisabled">移动</a-button>
<a-button type="primary">新建文件夹</a-button>
<a-button type="primary" @click="handleAtomLabel">生成原子标签</a-button>
</template>
......@@ -27,7 +27,9 @@
<BasicTable @register="tabTable" ref="tabTableRef">
<template #toolbar>
<a-button type="primary">批量创建</a-button>
<a-button type="primary">新建标签</a-button>
<a-button type="primary" @click="handleAddLabel" :disabled="!tabName"
>新建标签</a-button
>
</template>
<template #bodyCell="{ column, record }">
<template v-if="column.key === 'action'">
......@@ -38,7 +40,7 @@
icon: 'ant-design:line-chart-outlined',
},
{
//关系<DeploymentUnitOutlined />
//关系
icon: 'ant-design:deployment-unit-outlined',
},
]"
......@@ -71,16 +73,24 @@
import PageWrapper from '../../../components/Page/src/PageWrapper.vue';
import BasicTable from '../../../components/Table/src/BasicTable.vue';
import BasicTree from '../../../components/Tree/src/BasicTree.vue';
import { useTree } from '@/components/Tree/src/hooks/useTree';
import { ref, unref } from 'vue';
import {computed, ref, unref} from 'vue';
import { labelTreeData } from './labelData';
import TableAction from '@/components/Table/src/components/TableAction.vue';
import { BasicTableProps, useTable } from '@/components/Table';
import { tabTableColumn, tabTableFormSchema } from './label.data';
import { useMessage } from '@/hooks/web/useMessage';
import { useRouter } from 'vue-router';
import { cloneDeep } from 'lodash-es';
const treeData = ref(null);
const tabTableRef = ref(null);
const selectDisabled = computed(() => {
if (tabTableRef.value) {
return tabGetRowSelection().selectedRowKeys <= 0;
} else {
return true;
}
});
function handleSelect() {
const keys = unref(treeData).getSelectedKeys();
const node = unref(treeData).getSelectedNode(keys[0]);
......@@ -88,7 +98,7 @@
// 获取标题
tabName.value = node.title;
if (node.children) {
const list = JSON.parse(JSON.stringify(node.children));
const list = cloneDeep(node.children);
list.forEach((item) => {
item.children = null;
});
......@@ -110,6 +120,14 @@
path: '/mallResourceDevelopment/labelDevelop/atomLabel',
});
}
function handleAddLabel() {
router.push({
path: '/mallResourceDevelopment/labelDevelop/createLabel',
query: {
name: tabName.value,
},
});
}
function handleRemove(record) {
createMessage.success('删除成功!');
}
......@@ -131,7 +149,7 @@
return { ...response };
},
rowKey: 'businessId',
rowKey: 'key',
columns: tabTableColumn,
rowSelection: true,
showIndexColumn: false,
......
......@@ -22,8 +22,8 @@
<a-button type="primary">文件选择</a-button>
<p style="margin: 5px">仅允许导入单个.jar文件</p>
</div>
<div style="margin-top: 10px">
<a-input style="width: 342px; margin-right: auto" allowClear />
<div style="margin-top: 10px;">
<a-input style="width: 342px; margin-right: auto" allowClear />
</div>
</template>
......@@ -35,20 +35,50 @@
</template>
<script lang="ts" setup>
import {ref, } from 'vue';
import {PageWrapper} from "@/components/Page";
import {tableList} from "./mock";
import {personSchema} from "./mainBody.data";
import {BasicForm, useForm} from "@/components/Form";
import SaveSettingsModal from "./saveSettingsModal.vue";
import {useModal} from "@/components/Modal";
import {computed, onMounted} from "vue";
// 初始化 info 为一个响应式对象
const info = ref({...tableList[0]});
const [saveSettings, { openModal: openModal }] =
useModal(); // 新建质量主体弹窗
const pros = defineProps({
deptId: {
type: Number,
default: 0,
}
})
// 初始化 info 为一个响应式对象
const info = computed(() => {
const list = tableList;
const index = list.findIndex((item) => {
return item.selectedDeptId === pros.deptId; // 添加 return 关键字
});
console.log('list', list);
console.log('index', index);
console.log('deptId', pros.deptId);
if (index !== -1) {
return list[index];
}
return {};
});
function palyStart() {
setFieldsValue(info.value);
}
onMounted(() => {
console.log('tableList', tableList)
palyStart();
});
function preservation() {
openModal(true, {
......@@ -56,7 +86,7 @@ function preservation() {
});
}
const [registerGuideModeForm] = useForm({
const [registerGuideModeForm,{setFieldsValue}] = useForm({
labelWidth: 100,
schemas: personSchema,
showActionButtonGroup: false,
......
<template >
<PageWrapper dense contentFullHeight fixedHeight contentClass="flex" >
<PageWrapper dense contentFullHeight fixedHeight contentClass="flex flex-col" class="toolbar" style="width: 910px; ">
<PageWrapper dense contentFullHeight fixedHeight contentClass="flex flex-col" class="toolbar">
<div class="toolbar" style="background: white; " >
<div class="tools" >
<a-button type="primary" style="float: right; margin: 10px 15px 10px 0" >保存</a-button>
......@@ -29,9 +29,17 @@
<BasicTable
@register="registerTable"
style="width: 960px; height: 160px; overflow: hidden;"
class="w-3/4 xl:w-4/5"
style="width: 100%; height: 160px; overflow: hidden;"
>
<template #sort>
<Icon icon="material-symbols:holder" />
</template>
<template #nonEmpty>
<checkbox />
</template>
<template #bodyCell="{ column }">
<template v-if="column.key === 'action'">
<TableAction
......@@ -59,6 +67,7 @@
@register="partitionConfigurationTemplate"
>
<template #tableConfiguration>
<h1 class="title-text" style="width: 525px;margin-bottom:-30px;margin-top: 3px;">分区配置</h1>
<h1 class="title-text" style="margin-bottom:-30px; margin-top: 10px; margin-left: 520px;">分桶配置</h1>
......@@ -91,6 +100,8 @@ import {useModal} from "@/components/Modal";
import generateTableBuildingStatementsMode from './generateTableBuildingStatementsMode.vue';
import addFieldsModal from './addFieldsModal.vue';
let fieldConfigurationL = ref(fieldConfigurationList);
// 初始化 info 为一个响应式对象
const info = ref({...fieldConfigurationList[0]});
......@@ -104,7 +115,7 @@ const [
api: async (params) => {
const response = {
total: fieldConfigurationList.length,
total: fieldConfigurationL.value.length,
data: [],
};
......@@ -126,6 +137,7 @@ const [
showTableSetting: false,
bordered: false,
pagination:false,
customRow: customRow,
handleSearchInfoFn(info) {
console.log('handleSearchInfoFn', info);
return info;
......@@ -137,6 +149,61 @@ const [
},
});
let source = 0; // 源目标数据序号
let target = 0; // 目标数据序号
function customRow(record, index) {
console.log(record, index); // 这里输出是表格全部的数据
return {
props: {
// draggable: 'true'
},
style: {
cursor: 'pointer',
},
// 鼠标移入
onMouseenter: (event) => {
// 兼容IE
let ev = event || window.event;
ev.target.draggable = true; // 让你要拖动的行可以拖动,默认不可以
},
// 开始拖拽
onDragstart: (event) => {
// 兼容IE
let ev = event || window.event;
// 阻止冒泡
ev.stopPropagation();
// 得到源目标数据序号
source = index;
console.log(record, index, 'source');
},
// 拖动元素经过的元素
onDragover: (event) => {
// 兼容 IE
let ev = event || window.event;
// 阻止默认行为
ev.preventDefault();
},
// 鼠标松开
onDrop: (event) => {
// 兼容IE
let ev = event || window.event;
// 阻止冒泡
ev.stopPropagation();
// 得到目标数据序号
target = index;
// 这里就是让数据位置互换,让视图更新 你们可以看record,index的输出,看是什么
console.log(fieldConfigurationL);
// [tableData.value[source], tableData.value[target]] = [tableData.value[target], tableData.value[source]];
const temp = ref();
temp.value = fieldConfigurationL.value[source];
fieldConfigurationL.value[source] = fieldConfigurationL.value[target];
fieldConfigurationL.value[target] = temp.value;
console.log(record, index, 'target', source, target);
},
};
}
function sqlStatement() {
openModal(true, {
isUpdate: false,
......
......@@ -48,6 +48,7 @@ export const fieldConfiguration: BasicColumn[] = [
title: '排序',
dataIndex: 'sort',
width: 50,
slots:{ customRender:'sort'}
},
{
......@@ -99,10 +100,10 @@ export const fieldConfiguration: BasicColumn[] = [
{
title: '非空',
dataIndex: 'nonEmpty',
width: 60,
edit: true,
width: 100,
editComponent: 'Checkbox',
slots:{ customRender:'nonEmpty'}
},
];
......
......@@ -26,13 +26,12 @@ export const tableList: any[] = [
export const fieldConfigurationList: any[] = [
{
fieldChineseName: '用户ID',
fieldEnglishName: 'ID',
tableType: 'string',
fieldType: '',
fieldAccuracy: '',
nonEmpty: true,
nonEmpty:'1',
},
{
......@@ -41,7 +40,8 @@ export const fieldConfigurationList: any[] = [
tableType: 'varchar',
fieldType: '255',
fieldAccuracy: '',
nonEmpty: true,
nonEmpty:'1',
},
];
......
......@@ -40,7 +40,7 @@
</template>
<script lang="ts" setup>
import {computed, onMounted, ref,} from 'vue';
import {computed, onMounted} from 'vue';
import {PageWrapper} from "@/components/Page";
import {tableList} from "@/views/scriptDevelopment/sqlAudit/mock";
import {personSchema} from "@/views/scriptDevelopment/sqlAudit/mainBody.data";
......
<template>
<PageWrapper>
</PageWrapper>
</template>
<script lang="ts" setup>
</script>
<style lang="scss" scoped>
</style>
<template>
<div class="m-4 mr-0 overflow-hidden bg-white">
<BasicTree
ref="treeRef"
treeWrapperClassName="h-[calc(100%-35px)] overflow-auto"
:defaultExpandAll="true"
:fieldNames="{ key: 'key', title: 'title' }"
:treeData="taskTreeData"
@select="handleSelect"
/>
</div>
</template>
<script lang="ts" setup>
import { nextTick, onMounted, ref, unref } from 'vue';
import { BasicTree, TreeActionType, TreeItem } from '@/components/Tree';
import { Nullable } from '@vben/types';
import { taskTreeData } from './taskFlow.data';
defineOptions({ name: 'DeptTree' });
const emit = defineEmits(['select']);
const treeRef = ref<Nullable<TreeActionType>>(null);
function handleSelect(keys) {
emit('select', keys[0]);
}
</script>
<template>
<PageWrapper title="任务流" contentBackground headerSticky>
<template #extra>
<div style="display: flex;">
<div>
<a-button style="border-color:transparent">
<Icon icon="ant-design:caret-right-outlined" style="color: blue" size="24"/>
<p>运行</p>
</a-button>
</div>
<div>
<a-button style="border-color:transparent ">
<Icon icon="ant-design:send-outlined" style="color: blue" size="24"/>
<p>发布</p>
</a-button>
</div>
<div>
<a-button style="border-color:transparent ">
<Icon icon="ant-design:cloud-download-outlined" style="color: blue" size="24"/>
<p>下线</p>
</a-button>
</div>
<div>
<a-button style="border-color:transparent ">
<Icon icon="ant-design:tag-outlined" style="color: blue" size="24"/>
<p>设置业务标签</p>
</a-button>
</div>
<div>
<a-button style="border-color:transparent ">
<Icon icon="ant-design:reconciliation-outlined" style="color: blue" size="24"/>
<p>复制到</p>
</a-button>
</div>
<div>
<a-button style="border-color:transparent ">
<Icon icon="ant-design:clear-outlined" style="color: red" size="24"/>
<p>删除</p>
</a-button>
</div>
<div>
<a-button style="border-color:transparent ">
<Icon icon="ant-design:folder-open-outlined" style="color: blue" size="24"/>
<p>移动</p>
</a-button>
</div>
<div>
<a-button style="border-color:transparent ">
<Icon icon="ant-design:arrow-up-outlined" style="color: blue" size="24"/>
<p>导出</p>
</a-button>
</div>
<div>
<a-button style="border-color:transparent ">
<Icon icon="ant-design:arrow-down-outlined" style="color: blue" size="24"/>
<p>导入</p>
</a-button>
</div>
<div>
<a-button style="border-color:transparent ">
<Icon icon="ant-design:folder-add-outlined" style="color: blue" size="24"/>
<p>新建文件夹</p>
</a-button>
</div>
<div>
<a-button style="border-color:transparent ">
<Icon icon="ant-design:plus-square-outlined" style="color: blue" size="24"/>
<p>新建文件</p>
</a-button>
</div>
</div>
</template>
<template #footer>
<div class="flex">
<ModelTree class="w-1/4" @select="handleSelect"/>
<BasicTable
class="w-3/4"
@register="registerTable"
:searchInfo="searchInfo">
<template #tableTitle>
<div style="display: flex;align-items: center">
<BasicForm @register="registerForm" style="margin-bottom: -20px"/>
</div>
</template>
<template #bodyCell="{ column, record }">
<template v-if="column.key === 'action'">
<TableAction
:actions="[
{
icon:'ant-design:exclamation-circle-outlined',
tooltip:'详情',
/*label: '血缘',*/
onClick: handleConsanguinity.bind(null, record),
},
{
icon:'ant-design:caret-right-outlined',
tooltip:'运行',
onClick: other.bind(null, record),
},
{
icon:'ant-design:cloud-download-outlined',
tooltip:'下线',
onClick: handleOnline.bind(null, record),
},
{
icon:'ant-design:send-outlined',
tooltip:'发布',
onClick: apiDetail.bind(null, record),
},
{
icon:'ant-design:android-outlined',
tooltip:'检查?',
onClick: handleOffline.bind(null, record),
},
]"
:dropDownActions="[
{
icon:'ant-design:reconciliation-outlined',
label: '复制',
onClick: apiDetail.bind(null, record),
},
{
icon:'ant-design:clear-outlined',
label: '删除',
onClick: apiDetail.bind(null, record),
},
{
icon:'ant-design:folder-open-outlined',
label: '移动',
onClick: apiDetail.bind(null, record),
},
]"
/>
</template>
</template>
<template #name="{ text, record }">
<a @click="seeApi(record)">
<Icon icon="ant-design:node-index-outlined" :size="15" style="color:#0000ff;"/>
{{ text }}</a>
</template>
</BasicTable>
</div>
</template>
</PageWrapper>
</template>
<script lang="ts" setup>
import {reactive, onMounted, ref} from 'vue';
import {BasicTable, useTable, TableAction} from '@/components/Table';
import {PageWrapper} from '@/components/Page';
import {useMessage} from '@/hooks/web/useMessage';
import {columns, searchFormSchema} from './taskFlow.data';
import {tableList} from "./mock";
import {useRoute, onBeforeRouteLeave} from 'vue-router';
import {router} from '@/router';
import Icon from "@/components/Icon/Icon.vue";
import BasicForm from "@/components/Form/src/BasicForm.vue";
import ModelTree from "@/views/taskScheduling/taskFlowDesign/ModelTree.vue";
import {designData} from "@/views/taskScheduling/taskFlowDesign/designData";
defineOptions({name: 'safetyLevelManage'});
const {createMessage, createConfirm} = useMessage();
const route = useRoute();
let modelLevel = ref(1);
const tableData = ref([]);
const searchInfo = reactive<Recordable>({});
const [registerTable, {getRowSelection, setTableData}] = useTable({
/* title: '任务流',*/
api: async (params) => {
const response = {
pageNu: "1",
pageSize: "10",
pages: "1",
total: tableData.value.length,
code: '',
message: '',
data: [],
};
//按照部门筛选 如果有进行过滤相应部门的 没有就赋值全部
let data = [];
data = tableData.value.filter((item) => item.type === 'theme');
return {...response, data: data};
},
rowKey: 'businessId',
rowSelection: true,
showIndexColumn: false,
columns,
showTableSetting: false,
bordered: true,
striped: false,
handleSearchInfoFn(info) {
console.log('handleSearchInfoFn', info);
return info;
},
actionColumn: {
width: 220,
title: '操作',
dataIndex: 'action',
},
});
/**右上*/
const [registerForm] = useTable({
schemas: searchFormSchema,
//在 input 中输入时按回车自动提交
autoSubmitOnEnter: true,
//是否显示操作按钮(重置/提交)
showActionButtonGroup: false,
rowSelection: true,
pagination: false,
showIndexColumn: false,
scroll: {y: 300},
showSummary: true,
});
onMounted(() => {
tableData.value = tableList;
});
/** 部门树的select*/
function handleSelect(key) {
console.log('asd');
if (key !== null && key !== undefined) {
modelLevel.value = key.split('-').length - 1;
} else {
modelLevel.value = 0;
}
if (modelLevel.value === 2) {
const regex = new RegExp(key, 'i');
const data = tableData.value.filter(
(item) => item.type === 'model' && regex.test(item.themeId),
);
setTableData(data);
}
if (modelLevel.value === 1) {
const regex = new RegExp(key, 'i');
const data = tableData.value.filter(
(item) => item.type === 'twoLevel' && regex.test(item.themeId),
);
setTableData(data);
}
if (modelLevel.value === 0) {
const regex = new RegExp(key, 'i');
const data = tableData.value.filter(
(item) => item.type === 'theme' && regex.test(item.themeId),
);
setTableData(data);
}
}
/**查看API*/
function seeApi(record) {
router.push({
path: '/taskScheduling/taskFlowDesign',
query: {},
})
}
/**查看详情*/
function detailButton(record) {
router.push({
path: '/dataStandards/publicCode/detailPublicCode',
query: {
businessId: record.businessId,
},
});
}
/**血缘按钮跳转路由以及传值*/
function handleConsanguinity(record: Recordable) {
router.push({
path: '/dataService/serviceManage/onlineManage/handleConsanguinity',
query: {
id: record.businessId,
},
});
}
/**设置按钮*/
function Settings() {
}
/**按钮*/
function other() {
}
/**api详情按钮*/
function apiDetail() {
}
/**下线按钮*/
function handleOffline(record) {
// 修改 record 对象的 flag 值为 "未上线"
record.flag = '未上线';
}
/**上线按钮*/
function handleOnline() {
router.push({
path: '/dataService/serviceManage/onlineManage/productionData',
query: {},
});
}
/** 删除按钮*/
function handleDelete(record: Recordable) {
const rowSelection = getRowSelection().selectedRowKeys;
console.log('11111111111', rowSelection);
createMessage.success('删除成功!');
reload();
}
onMounted(() => {
});
</script>
<style lang="scss" scoped>
</style>
/**列表数据*/
export const tableList: any[] = [
{
businessId: 1,
name:'1_1_1',
ownershipWorkgroup: 'admin-个人工作区',
createDate: '2023/07/10 10:34:30',
updateDate: '2023/07/10 10:49:38',
businessTag: '_',
owner: 'admin',
releaseStatus: '已发布',
type: 'model',
themeId: '1-1-1',
},
{
businessId: 2,
name:'1_1_2',
ownershipWorkgroup: 'admin-个人工作区',
createDate: '2023/07/10 10:34:30',
updateDate: '2023/07/10 10:49:38',
businessTag: '_',
owner: 'admin',
releaseStatus: '已发布',
type: 'model',
themeId: '1-1-1',
},
{
businessId: 3,
name:'1_2_1',
ownershipWorkgroup: 'admin-个人工作区',
createDate: '2023/07/10 10:34:30',
updateDate: '2023/07/10 10:49:38',
businessTag: '_',
owner: 'admin',
releaseStatus: '已发布',
type: 'model',
themeId: '1-1-2',
},
{
businessId: 4,
name:'1_2_2',
ownershipWorkgroup: 'admin-个人工作区',
createDate: '2023/07/10 10:34:30',
updateDate: '2023/07/10 10:49:38',
businessTag: '_',
owner: 'admin',
releaseStatus: '已发布',
type: 'model',
themeId: '1-1-2',
},
{
businessId: 5,
name:'1_3_1',
ownershipWorkgroup: 'admin-个人工作区',
createDate: '2023/07/10 10:34:30',
updateDate: '2023/07/10 10:49:38',
businessTag: '_',
owner: 'admin',
releaseStatus: '已发布',
type: 'model',
themeId: '1-1-3',
},
{
businessId: 6,
name:'1_3_2',
ownershipWorkgroup: 'admin-个人工作区',
createDate: '2023/07/10 10:34:30',
updateDate: '2023/07/10 10:49:38',
businessTag: '_',
owner: 'admin',
releaseStatus: '已发布',
type: 'model',
themeId: '1-1-3',
},
{
businessId: 7,
name: 'admin-个人工作区',
ownershipWorkgroup: 'admin-个人工作区',
createDate: '2023/07/10 10:34:30',
updateDate: '2023/07/10 10:49:38',
businessTag: '_',
owner: 'admin',
releaseStatus: '已发布',
type: 'theme',
themeId: '1-1',
},
{
businessId: 8,
name: 'SLA场景验证',
ownershipWorkgroup: 'admin-个人工作区',
createDate: '2023/07/10 10:34:30',
updateDate: '2023/07/10 10:49:38',
businessTag: '_',
owner: 'admin',
releaseStatus: '已发布',
type: 'theme',
themeId: '1-2',
},
{
businessId: 9,
name: '超时',
ownershipWorkgroup: 'admin-个人工作区',
createDate: '2023/07/10 10:34:30',
updateDate: '2023/07/10 10:49:38',
businessTag: '_',
owner: 'admin',
releaseStatus: '已发布',
type: 'twoLevel',
themeId: '1-1-1',
},
{
businessId: 10,
name: 'test',
ownershipWorkgroup: 'SLA-实时指标计算',
createDate: '2023/07/10 10:34:30',
updateDate: '2023/07/10 10:49:38',
businessTag: '_',
owner: 'admin',
releaseStatus: '已发布',
type: 'twoLevel',
themeId: '1-1-2',
},
{
businessId: 11,
name: 'sql',
ownershipWorkgroup: 'admin-个人工作区',
createDate: '2023/07/10 10:34:30',
updateDate: '2023/07/10 10:49:38',
businessTag: '_',
owner: 'admin',
releaseStatus: '已发布',
type: 'twoLevel',
themeId: '1-1-3',
},
{
businessId: 13,
name: 'SLA-沟通流水',
ownershipWorkgroup: 'SLA-实时指标计算',
createDate: '2023/07/10 10:34:30',
updateDate: '2023/07/10 10:49:38',
businessTag: '_',
owner: 'admin',
releaseStatus: '已发布',
type: 'twoLevel',
themeId: '1-2-2',
},
{
businessId: 14,
name: 'SLA-实时指标计算',
ownershipWorkgroup: 'SLA-实时指标计算',
createDate: '2023/07/10 10:34:30',
updateDate: '2023/07/10 10:49:38',
businessTag: '_',
owner: 'admin',
releaseStatus: '已发布',
type: 'twoLevel',
themeId: '1-2-3',
},
{
businessId: 15,
name: 'sla分组件指标日批统计历史',
ownershipWorkgroup: 'SLA-实时指标计算',
createDate: '2023/07/10 10:34:30',
updateDate: '2023/07/10 10:49:38',
businessTag: '_',
owner: 'admin',
releaseStatus: '已发布',
type: 'twoLevel',
themeId: '1-2-4',
},
{
businessId: 16,
name: 'SLA',
ownershipWorkgroup: 'SLA-实时指标计算',
createDate: '2023/07/10 10:34:30',
updateDate: '2023/07/10 10:49:38',
businessTag: '_',
owner: 'admin',
releaseStatus: '已发布',
type: 'twoLevel',
themeId: '1-2-5',
},
];
import {BasicColumn, FormSchema} from "@/components/Table";
import {TreeItem} from "@/components/Tree";
/** 列表展示字段*/
export const columns: BasicColumn[] = [
{
title: '名称',
dataIndex: 'name',
width: 180,
slots: { customRender: 'name' },
},
{
title: '权属工作组',
dataIndex: 'ownershipWorkgroup',
width: 120,
},
{
title: '创建时间',
dataIndex: 'createDate',
width: 120,
},
{
title: '更新时间',
dataIndex: 'updateDate',
width: 120,
},
{
title: '业务标签',
dataIndex: 'businessTag',
width: 80,
},
{
title: '拥有者',
dataIndex: 'owner',
width: 120,
},
{
title: '发布状态',
dataIndex: 'releaseStatus',
width: 120,
},
];
/** 列表筛选项*/
export const searchFormSchema: FormSchema[] = [
{
field: 'name',
label: '',
component: 'InputSearch',
colProps: { span: 20},
componentProps: {
placeholder: '输入关键字搜索',
onChange: (e: any) => {
console.log(e);
},
},
},
];
export const taskTreeData: TreeItem[] = [
{
key: '1',
title: '所有任务流',
level: '0',
children: [
{
title: 'admin-个人工作区',
key: '1-1',
level: '1',
icon: 'ion:desktop-outline',
children: [
{ title: '超时', level: '2', key: '1-1-1', icon: 'ion:git-branch-outline' },
{ title: 'test', level: '2', key: '1-1-2', icon: 'ion:git-branch-outline' },
{ title: 'sql', level: '2', key: '1-1-3', icon: 'ion:git-branch-outline' },
],
},
{
title: 'SLA场景验证',
key: '1-2',
level: '1',
icon: 'ion:desktop-outline',
children: [
{ title: 'test', key: '1-2-1', icon: 'ion:git-branch-outline' },
{ title: 'SLA-沟通流水', key: '1-2-2', icon: 'ion:git-branch-outline' },
{ title: 'SLA-实时指标计算', key: '1-2-3', icon: 'ion:git-branch-outline' },
{ title: 'sla分组件指标日批统计历史', key: '1-2-4', icon: 'ion:git-branch-outline' },
{ title: 'SLA', key: '1-2-5', icon: 'ion:git-branch-outline' },
],
},
],
},
];
<template>
<BasicModal
width="50%"
v-bind="$attrs"
@register="registerModal"
:title="getTitle"
@ok="handleSubmit"
>
<BasicForm @register="registerForm">
</BasicForm>
</BasicModal>
</template>
<script lang="ts" setup>
import { ref, unref, reactive } from 'vue';
import { BasicModal, useModalInner } from '@/components/Modal';
import {BasicForm, useForm} from "@/components/Form";
import {defineEvent} from "@/views/taskScheduling/taskFlowDesign/design.data";
const getTitle = '定义事件';
//初始化弹框
const [registerModal, { setModalProps, closeModal }] = useModalInner(async (data) => {
setModalProps({
confirmLoading: false,
okText: '选中并自动更新',
});
await resetFields();
});
//初始化列表
const [registerForm, { setFieldsValue, updateSchema, resetFields, validate }] = useForm({
labelWidth: 100,
baseColProps: { lg: 12, md: 24 },
schemas: defineEvent,
showActionButtonGroup: false,
actionColOptions: {
span: 23,
},
});
/**确定按钮*/
async function handleSubmit() {
closeModal();
}
</script>
......@@ -1015,3 +1015,82 @@ export const delTableColumn1: BasicColumn[] = [
width: 150,
},
];
export const defineEvent: FormSchema[] = [
{
label: '检查频率',
field: 'name',
component: 'Input',
colProps: { lg: 24, md: 24 },
},
{
label: '触发类型',
field: 'depend',
defaultValue: '不依赖',
component: 'RadioGroup',
componentProps: {
options: [
{
label: '文件到达',
value: '文件到达',
},
{
label: 'SQL结果检查',
value: 'SQL结果检查',
},
{
label: '脚本自定义',
value: '脚本自定义',
},
],
},
colProps: { lg: 24, md: 24 },
},
{
label: '文件系统源',
field: 'priority',
component: 'Select',
componentProps: {
options: [
{
label: 'HDFS',
value: 'HDFS',
},
{
label: 'FTP',
value: 'FTP',
},
{
label: 'SFTP',
value: 'SFTP',
},
],
},
colProps: { lg: 24, md: 24 },
},
{
label: '文件路径',
field: 'name',
component: 'Input',
colProps: { lg: 24, md: 24 },
},
{
label: '目标对象',
field: 'name',
component: 'Input',
colProps: { lg: 24, md: 24 },
},
{
label: '超时设置',
field: 'name',
component: 'Input',
colProps: { lg: 24, md: 24 },
},
{
label: '保存结果',
field: 'name',
component: 'Input',
colProps: { lg: 24, md: 24 },
},
];
......@@ -3,42 +3,42 @@ import { TreeItem } from '@/components/Tree';
export const designData = [
{
businessId: 1,
name: 'new task',
name:'1_1_1',
task: 'new task1',
type: 'model',
themeId: '1-1-1',
},
{
businessId: 2,
name: 'new task1',
name:'1_1_2',
task: null,
type: 'model',
themeId: '1-1-1',
},
{
businessId: 3,
name: 'test task',
name:'1_2_1',
task: 'test task1',
type: 'model',
themeId: '1-1-2',
},
{
businessId: 4,
name: 'test task1',
name:'1_2_2',
task: null,
type: 'model',
themeId: '1-1-2',
},
{
businessId: 5,
name: 'sql task',
name:'1_3_1',
task: 'sql task1',
type: 'model',
themeId: '1-1-3',
},
{
businessId: 6,
name: 'sql task1',
name:'1_3_2',
task: null,
type: 'model',
themeId: '1-1-3',
......
<template>
<PageWrapper title="任务流" contentBackground headerSticky>
<PageWrapper title="任务流设计" contentBackground headerSticky>
<template #extra>
<!--历史版本-->
<span v-if="versionFlag">版本:</span>
......@@ -13,8 +13,13 @@
<a-button v-if="versionFlag" type="primary" danger @click="handleExit"
><CloseOutlined />退出</a-button
>
<a-button v-if="!versionFlag" type="primary">跳转运维</a-button>
<a-button v-if="!versionFlag" :disabled="debugFlag" type="primary">运行</a-button>
<a-button v-if="!versionFlag" style="border-color:transparent">
<Icon icon="ant-design:field-time-outlined" style="color: blue" size="24"/>
<p>跳转运维</p></a-button>
<a-button v-if="!versionFlag" :disabled="debugFlag" style="border-color:transparent">
<Icon icon="ant-design:caret-right-outlined" style="color: blue" size="24"/>
<p>运行</p>
</a-button>
<a-button v-if="!versionFlag" :disabled="debugFlag" type="primary">运行当前及下游</a-button>
<a-button v-if="!versionFlag && !debugFlag" type="primary" @click="handleDebug">调试</a-button>
<a-button v-if="!versionFlag && debugFlag" type="primary">调试全部任务</a-button>
......@@ -208,6 +213,7 @@
import TaskFlowConfig from './taskFlowConfig.vue';
import ModelTree from './ModelTree.vue';
import { logicalData } from '@/views/dataWarehousePlanning/logicalModel/modelData';
import Icon from "@/components/Icon/Icon.vue";
const [taskModel, { openModal: openTaskModel }] = useModal();
const filterStore = useFilterStore();
......
......@@ -11,11 +11,20 @@
<Select v-model:value="model[field]" :options="cycleOptions" />
<a-button
type="link"
style="padding: 0"
v-if="model.group === 'default group'"
v-if="model[field] === '事件触发器'"
@click="handleCycle"
>批量调整直接下游配置</a-button
>
>批量调整直接下游配置</a-button>
<!-- 当选中 '事件触发器' 时,显示事件定义和两个按钮 -->
<div v-if="model[field] === '事件触发器'">
<div style="display: flex;margin-left: -62px;margin-top: 15px">
<div style="margin-right: 20px">事件定义</div>
<a-button @click="handleSetConfig" style="color: red;border-color: red">定义事件</a-button>
<a-button @click="viewLogs" style="margin-left: 30px">查看日志</a-button>
</div>
<a-button type="link" style="color: red">
<Icon icon="ant-design:exclamation-circle-outlined"/>
请定义触发事件详情</a-button>
</div>
</template>
<template #cron="{ field, model }">
<Input v-model:value="model[field]" />
......@@ -33,45 +42,58 @@
</template>
</BasicForm>
<EditDownStreamModel @register="editModal" />
<DefineEvent @register="defineEvent" />
</BasicModal>
</template>
<script lang="ts" setup>
import { useTable, TableAction } from '@/components/Table';
import { ref, computed, unref, reactive } from 'vue';
import { CloseOutlined } from '@ant-design/icons-vue';
import Icon from '@/components/Icon/Icon.vue';
import { Input, CheckboxGroup, Select, InputNumber } from 'ant-design-vue';
import { BasicModal, useModal, useModalInner } from '@/components/Modal';
import { BasicForm, useForm } from '@/components/Form';
import BasicTable from '@/components/Table/src/BasicTable.vue';
import { connectionData } from '@/views/dataWarehousePlanning/logicalModel/modelDetail/modelData';
import {
connectionFormSchema,
connectionTable,
} from '@/views/dataWarehousePlanning/logicalModel/modelDetail/model.data';
import {
taskOverallConfig,
upstreamTaskColumn,
} from '@/views/taskScheduling/taskFlowDesign/design.data';
import { useMessage } from '@/hooks/web/useMessage';
import EditDownStreamModel from './editDownStreamModel.vue';
import DefineEvent from "./defineEvent.vue";
const getTitle = '任务流全局配置';
const [editModal, { openModal: openEditModel }] = useModal();
const [defineEvent, { openModal: openDefineEvent }] = useModal();
function handleCycle() {
openEditModel(true, {
isUpdate: false,
});
}
/**定义事件*/
function handleSetConfig() {
openDefineEvent(true, {
isUpdate: false,
});
}
/**查看日志*/
function viewLogs() {
}
//初始化弹框
const [registerModal, { setModalProps, closeModal }] = useModalInner(async (data) => {
setModalProps({ confirmLoading: false });
});
const cycleOptions = [
{
label: '每天一次',
value: '每天一次',
},
{
label: 'Cron表达式',
value: 'Cron表达式',
},
{
label: '事件触发器',
value: '事件触发器',
},
{
label: '无周期',
value: '无周期',
},
];
const overTimeOptions = [
{
......
// vite.config.ts
import { defineApplicationConfig } from "file:///D:/workapace/vue_workspace/bigdatasystem1/internal/vite-config/dist/index.mjs";
var vite_config_default = defineApplicationConfig({
overrides: {
optimizeDeps: {
include: [
"echarts/core",
"echarts/charts",
"echarts/components",
"echarts/renderers",
"qrcode",
"@iconify/iconify",
"ant-design-vue/es/locale/zh_CN",
"ant-design-vue/es/locale/en_US"
]
},
server: {
proxy: {
"/basic-api": {
// target: 'http://localhost:3000',
target: "http://106.3.97.198:20062/",
// target: `http://192.168.0.9:8082/`,
changeOrigin: true,
ws: true,
rewrite: (path) => path.replace(new RegExp(`^/basic-api`), "")
// only https
// secure: false
},
"/upload": {
target: "http://localhost:3300/upload",
changeOrigin: true,
ws: true,
rewrite: (path) => path.replace(new RegExp(`^/upload`), "")
}
},
open: true,
// 项目启动后,自动打开
warmup: {
clientFiles: ["./index.html", "./src/{views,components}/*"]
}
}
}
});
export {
vite_config_default as default
};
//# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsidml0ZS5jb25maWcudHMiXSwKICAic291cmNlc0NvbnRlbnQiOiBbImNvbnN0IF9fdml0ZV9pbmplY3RlZF9vcmlnaW5hbF9kaXJuYW1lID0gXCJEOlxcXFx3b3JrYXBhY2VcXFxcdnVlX3dvcmtzcGFjZVxcXFxiaWdkYXRhc3lzdGVtMVwiO2NvbnN0IF9fdml0ZV9pbmplY3RlZF9vcmlnaW5hbF9maWxlbmFtZSA9IFwiRDpcXFxcd29ya2FwYWNlXFxcXHZ1ZV93b3Jrc3BhY2VcXFxcYmlnZGF0YXN5c3RlbTFcXFxcdml0ZS5jb25maWcudHNcIjtjb25zdCBfX3ZpdGVfaW5qZWN0ZWRfb3JpZ2luYWxfaW1wb3J0X21ldGFfdXJsID0gXCJmaWxlOi8vL0Q6L3dvcmthcGFjZS92dWVfd29ya3NwYWNlL2JpZ2RhdGFzeXN0ZW0xL3ZpdGUuY29uZmlnLnRzXCI7aW1wb3J0IHsgZGVmaW5lQXBwbGljYXRpb25Db25maWcgfSBmcm9tICdAdmJlbi92aXRlLWNvbmZpZyc7XG5cbmV4cG9ydCBkZWZhdWx0IGRlZmluZUFwcGxpY2F0aW9uQ29uZmlnKHtcbiAgb3ZlcnJpZGVzOiB7XG4gICAgb3B0aW1pemVEZXBzOiB7XG4gICAgICBpbmNsdWRlOiBbXG4gICAgICAgICdlY2hhcnRzL2NvcmUnLFxuICAgICAgICAnZWNoYXJ0cy9jaGFydHMnLFxuICAgICAgICAnZWNoYXJ0cy9jb21wb25lbnRzJyxcbiAgICAgICAgJ2VjaGFydHMvcmVuZGVyZXJzJyxcbiAgICAgICAgJ3FyY29kZScsXG4gICAgICAgICdAaWNvbmlmeS9pY29uaWZ5JyxcbiAgICAgICAgJ2FudC1kZXNpZ24tdnVlL2VzL2xvY2FsZS96aF9DTicsXG4gICAgICAgICdhbnQtZGVzaWduLXZ1ZS9lcy9sb2NhbGUvZW5fVVMnLFxuICAgICAgXSxcbiAgICB9LFxuICAgIHNlcnZlcjoge1xuICAgICAgcHJveHk6IHtcbiAgICAgICAgJy9iYXNpYy1hcGknOiB7XG4gICAgICAgICAgLy8gdGFyZ2V0OiAnaHR0cDovL2xvY2FsaG9zdDozMDAwJyxcbiAgICAgICAgICB0YXJnZXQ6ICdodHRwOi8vMTA2LjMuOTcuMTk4OjIwMDYyLycsXG4gICAgICAgICAgLy8gdGFyZ2V0OiBgaHR0cDovLzE5Mi4xNjguMC45OjgwODIvYCxcbiAgICAgICAgICBjaGFuZ2VPcmlnaW46IHRydWUsXG4gICAgICAgICAgd3M6IHRydWUsXG4gICAgICAgICAgcmV3cml0ZTogKHBhdGgpID0+IHBhdGgucmVwbGFjZShuZXcgUmVnRXhwKGBeL2Jhc2ljLWFwaWApLCAnJyksXG4gICAgICAgICAgLy8gb25seSBodHRwc1xuICAgICAgICAgIC8vIHNlY3VyZTogZmFsc2VcbiAgICAgICAgfSxcbiAgICAgICAgJy91cGxvYWQnOiB7XG4gICAgICAgICAgdGFyZ2V0OiAnaHR0cDovL2xvY2FsaG9zdDozMzAwL3VwbG9hZCcsXG4gICAgICAgICAgY2hhbmdlT3JpZ2luOiB0cnVlLFxuICAgICAgICAgIHdzOiB0cnVlLFxuICAgICAgICAgIHJld3JpdGU6IChwYXRoKSA9PiBwYXRoLnJlcGxhY2UobmV3IFJlZ0V4cChgXi91cGxvYWRgKSwgJycpLFxuICAgICAgICB9LFxuICAgICAgfSxcbiAgICAgIG9wZW46IHRydWUsIC8vIFx1OTg3OVx1NzZFRVx1NTQyRlx1NTJBOFx1NTQwRVx1RkYwQ1x1ODFFQVx1NTJBOFx1NjI1M1x1NUYwMFxuICAgICAgd2FybXVwOiB7XG4gICAgICAgIGNsaWVudEZpbGVzOiBbJy4vaW5kZXguaHRtbCcsICcuL3NyYy97dmlld3MsY29tcG9uZW50c30vKiddLFxuICAgICAgfSxcbiAgICB9LFxuICB9LFxufSk7XG4iXSwKICAibWFwcGluZ3MiOiAiO0FBQXFULFNBQVMsK0JBQStCO0FBRTdWLElBQU8sc0JBQVEsd0JBQXdCO0FBQUEsRUFDckMsV0FBVztBQUFBLElBQ1QsY0FBYztBQUFBLE1BQ1osU0FBUztBQUFBLFFBQ1A7QUFBQSxRQUNBO0FBQUEsUUFDQTtBQUFBLFFBQ0E7QUFBQSxRQUNBO0FBQUEsUUFDQTtBQUFBLFFBQ0E7QUFBQSxRQUNBO0FBQUEsTUFDRjtBQUFBLElBQ0Y7QUFBQSxJQUNBLFFBQVE7QUFBQSxNQUNOLE9BQU87QUFBQSxRQUNMLGNBQWM7QUFBQTtBQUFBLFVBRVosUUFBUTtBQUFBO0FBQUEsVUFFUixjQUFjO0FBQUEsVUFDZCxJQUFJO0FBQUEsVUFDSixTQUFTLENBQUMsU0FBUyxLQUFLLFFBQVEsSUFBSSxPQUFPLGFBQWEsR0FBRyxFQUFFO0FBQUE7QUFBQTtBQUFBLFFBRy9EO0FBQUEsUUFDQSxXQUFXO0FBQUEsVUFDVCxRQUFRO0FBQUEsVUFDUixjQUFjO0FBQUEsVUFDZCxJQUFJO0FBQUEsVUFDSixTQUFTLENBQUMsU0FBUyxLQUFLLFFBQVEsSUFBSSxPQUFPLFVBQVUsR0FBRyxFQUFFO0FBQUEsUUFDNUQ7QUFBQSxNQUNGO0FBQUEsTUFDQSxNQUFNO0FBQUE7QUFBQSxNQUNOLFFBQVE7QUFBQSxRQUNOLGFBQWEsQ0FBQyxnQkFBZ0IsNEJBQTRCO0FBQUEsTUFDNUQ7QUFBQSxJQUNGO0FBQUEsRUFDRjtBQUNGLENBQUM7IiwKICAibmFtZXMiOiBbXQp9Cg==
// vite.config.ts
import { defineApplicationConfig } from "file:///D:/workapace/vue_workspace/bigdatasystem1/internal/vite-config/dist/index.mjs";
var vite_config_default = defineApplicationConfig({
overrides: {
optimizeDeps: {
include: [
"echarts/core",
"echarts/charts",
"echarts/components",
"echarts/renderers",
"qrcode",
"@iconify/iconify",
"ant-design-vue/es/locale/zh_CN",
"ant-design-vue/es/locale/en_US"
]
},
server: {
proxy: {
"/basic-api": {
// target: 'http://localhost:3000',
target: "http://106.3.97.198:20062/",
// target: `http://192.168.0.9:8082/`,
changeOrigin: true,
ws: true,
rewrite: (path) => path.replace(new RegExp(`^/basic-api`), "")
// only https
// secure: false
},
"/upload": {
target: "http://localhost:3300/upload",
changeOrigin: true,
ws: true,
rewrite: (path) => path.replace(new RegExp(`^/upload`), "")
}
},
open: true,
// 项目启动后,自动打开
warmup: {
clientFiles: ["./index.html", "./src/{views,components}/*"]
}
}
}
});
export {
vite_config_default as default
};
//# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsidml0ZS5jb25maWcudHMiXSwKICAic291cmNlc0NvbnRlbnQiOiBbImNvbnN0IF9fdml0ZV9pbmplY3RlZF9vcmlnaW5hbF9kaXJuYW1lID0gXCJEOlxcXFx3b3JrYXBhY2VcXFxcdnVlX3dvcmtzcGFjZVxcXFxiaWdkYXRhc3lzdGVtMVwiO2NvbnN0IF9fdml0ZV9pbmplY3RlZF9vcmlnaW5hbF9maWxlbmFtZSA9IFwiRDpcXFxcd29ya2FwYWNlXFxcXHZ1ZV93b3Jrc3BhY2VcXFxcYmlnZGF0YXN5c3RlbTFcXFxcdml0ZS5jb25maWcudHNcIjtjb25zdCBfX3ZpdGVfaW5qZWN0ZWRfb3JpZ2luYWxfaW1wb3J0X21ldGFfdXJsID0gXCJmaWxlOi8vL0Q6L3dvcmthcGFjZS92dWVfd29ya3NwYWNlL2JpZ2RhdGFzeXN0ZW0xL3ZpdGUuY29uZmlnLnRzXCI7aW1wb3J0IHsgZGVmaW5lQXBwbGljYXRpb25Db25maWcgfSBmcm9tICdAdmJlbi92aXRlLWNvbmZpZyc7XG5cbmV4cG9ydCBkZWZhdWx0IGRlZmluZUFwcGxpY2F0aW9uQ29uZmlnKHtcbiAgb3ZlcnJpZGVzOiB7XG4gICAgb3B0aW1pemVEZXBzOiB7XG4gICAgICBpbmNsdWRlOiBbXG4gICAgICAgICdlY2hhcnRzL2NvcmUnLFxuICAgICAgICAnZWNoYXJ0cy9jaGFydHMnLFxuICAgICAgICAnZWNoYXJ0cy9jb21wb25lbnRzJyxcbiAgICAgICAgJ2VjaGFydHMvcmVuZGVyZXJzJyxcbiAgICAgICAgJ3FyY29kZScsXG4gICAgICAgICdAaWNvbmlmeS9pY29uaWZ5JyxcbiAgICAgICAgJ2FudC1kZXNpZ24tdnVlL2VzL2xvY2FsZS96aF9DTicsXG4gICAgICAgICdhbnQtZGVzaWduLXZ1ZS9lcy9sb2NhbGUvZW5fVVMnLFxuICAgICAgXSxcbiAgICB9LFxuICAgIHNlcnZlcjoge1xuICAgICAgcHJveHk6IHtcbiAgICAgICAgJy9iYXNpYy1hcGknOiB7XG4gICAgICAgICAgLy8gdGFyZ2V0OiAnaHR0cDovL2xvY2FsaG9zdDozMDAwJyxcbiAgICAgICAgICB0YXJnZXQ6ICdodHRwOi8vMTA2LjMuOTcuMTk4OjIwMDYyLycsXG4gICAgICAgICAgLy8gdGFyZ2V0OiBgaHR0cDovLzE5Mi4xNjguMC45OjgwODIvYCxcbiAgICAgICAgICBjaGFuZ2VPcmlnaW46IHRydWUsXG4gICAgICAgICAgd3M6IHRydWUsXG4gICAgICAgICAgcmV3cml0ZTogKHBhdGgpID0+IHBhdGgucmVwbGFjZShuZXcgUmVnRXhwKGBeL2Jhc2ljLWFwaWApLCAnJyksXG4gICAgICAgICAgLy8gb25seSBodHRwc1xuICAgICAgICAgIC8vIHNlY3VyZTogZmFsc2VcbiAgICAgICAgfSxcbiAgICAgICAgJy91cGxvYWQnOiB7XG4gICAgICAgICAgdGFyZ2V0OiAnaHR0cDovL2xvY2FsaG9zdDozMzAwL3VwbG9hZCcsXG4gICAgICAgICAgY2hhbmdlT3JpZ2luOiB0cnVlLFxuICAgICAgICAgIHdzOiB0cnVlLFxuICAgICAgICAgIHJld3JpdGU6IChwYXRoKSA9PiBwYXRoLnJlcGxhY2UobmV3IFJlZ0V4cChgXi91cGxvYWRgKSwgJycpLFxuICAgICAgICB9LFxuICAgICAgfSxcbiAgICAgIG9wZW46IHRydWUsIC8vIFx1OTg3OVx1NzZFRVx1NTQyRlx1NTJBOFx1NTQwRVx1RkYwQ1x1ODFFQVx1NTJBOFx1NjI1M1x1NUYwMFxuICAgICAgd2FybXVwOiB7XG4gICAgICAgIGNsaWVudEZpbGVzOiBbJy4vaW5kZXguaHRtbCcsICcuL3NyYy97dmlld3MsY29tcG9uZW50c30vKiddLFxuICAgICAgfSxcbiAgICB9LFxuICB9LFxufSk7XG4iXSwKICAibWFwcGluZ3MiOiAiO0FBQXFULFNBQVMsK0JBQStCO0FBRTdWLElBQU8sc0JBQVEsd0JBQXdCO0FBQUEsRUFDckMsV0FBVztBQUFBLElBQ1QsY0FBYztBQUFBLE1BQ1osU0FBUztBQUFBLFFBQ1A7QUFBQSxRQUNBO0FBQUEsUUFDQTtBQUFBLFFBQ0E7QUFBQSxRQUNBO0FBQUEsUUFDQTtBQUFBLFFBQ0E7QUFBQSxRQUNBO0FBQUEsTUFDRjtBQUFBLElBQ0Y7QUFBQSxJQUNBLFFBQVE7QUFBQSxNQUNOLE9BQU87QUFBQSxRQUNMLGNBQWM7QUFBQTtBQUFBLFVBRVosUUFBUTtBQUFBO0FBQUEsVUFFUixjQUFjO0FBQUEsVUFDZCxJQUFJO0FBQUEsVUFDSixTQUFTLENBQUMsU0FBUyxLQUFLLFFBQVEsSUFBSSxPQUFPLGFBQWEsR0FBRyxFQUFFO0FBQUE7QUFBQTtBQUFBLFFBRy9EO0FBQUEsUUFDQSxXQUFXO0FBQUEsVUFDVCxRQUFRO0FBQUEsVUFDUixjQUFjO0FBQUEsVUFDZCxJQUFJO0FBQUEsVUFDSixTQUFTLENBQUMsU0FBUyxLQUFLLFFBQVEsSUFBSSxPQUFPLFVBQVUsR0FBRyxFQUFFO0FBQUEsUUFDNUQ7QUFBQSxNQUNGO0FBQUEsTUFDQSxNQUFNO0FBQUE7QUFBQSxNQUNOLFFBQVE7QUFBQSxRQUNOLGFBQWEsQ0FBQyxnQkFBZ0IsNEJBQTRCO0FBQUEsTUFDNUQ7QUFBQSxJQUNGO0FBQUEsRUFDRjtBQUNGLENBQUM7IiwKICAibmFtZXMiOiBbXQp9Cg==
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