Commit 210f5a3e authored by 罗林杰's avatar 罗林杰

Merge remote-tracking branch 'origin/master'

parents 416ffca3 dd96c911
......@@ -906,6 +906,26 @@ export const shellExecuteRoute: AppRouteRecordRaw = {
icon: '',
},
},
{
path: 'versionCompare',
name: 'VersionCompare',
component: () =>
import('@/views/scriptDevelopment/shellDevelopment/shellExecute/VersionCompare.vue'),
meta: {
title: '版本比较',
icon: '',
},
},
{
path: 'versionDetail',
name: 'versionDetail',
component: () =>
import('@/views/scriptDevelopment/shellDevelopment/shellExecute/VersionDetail.vue'),
meta: {
title: '查看详情',
icon: '',
},
},
],
};
......@@ -1027,7 +1047,7 @@ export const serviceDevelopmentRoute: AppRouteRecordRaw = {
{
path: 'serviceManage/onlineManage/productionData',
name: 'productionData',
component: () => import('@/views/dataService/serviceManage/onlineManage/productionData.vue'),
component: () => import('@/views/dataService/serviceManage/onlineManage/productionDrawer.vue'),
meta: {
title: '上线设置',
icon: '',
......@@ -1036,7 +1056,7 @@ export const serviceDevelopmentRoute: AppRouteRecordRaw = {
{
path: 'serviceManage/onlineManage/productionTest',
name: 'productionTest',
component: () => import('@/views/dataService/serviceManage/onlineManage/productionTest.vue'),
component: () => import('@/views/dataService/serviceManage/onlineManage/productionTestModal.vue'),
meta: {
title: '上线测试',
icon: '',
......
......@@ -29,13 +29,7 @@ export const deptMap = (() => {
}, {});
})();
export const columns: BasicColumn[] = [
// {
// title: '质量规则',
// dataIndex: 'name',
// width: 120,
// slots: { customRender: 'name' },
// },
export const columns: BasicColumn[any] = [
{
title: '质量规则',
dataIndex: 'qualityRule',
......@@ -228,11 +222,78 @@ export const searchFormSchema: FormSchema[] = [
field: 'name',
label: ' ',
component: 'Input',
colProps: { span: 8 },
colProps: { span: 4 },
componentProps: {
placeholder: '输入关键字搜索',
},
},
{
field: 'testMode',
label: ' ',
component: 'Select',
componentProps: {
placeholder: '检查方式',
options: [
{ label: '全量', value: '1' },
{ label: '增量', value: '2' },
],
},
colProps: { span: 3 },
},
{
field: 'ruleGroup',
label: ' ',
component: 'Select',
componentProps: {
placeholder: '规则组',
options: [
{ label: 'admin_个人工作区', value: '1' },
{ label: '共享工作区', value: '2' },
{ label: '商城工作区', value: '3' },
{ label: '指标工作区', value: '4' },
],
},
colProps: { span: 3 },
},
{
field: 'releaseStatus',
label: ' ',
component: 'Select',
componentProps: {
placeholder: '发布状态',
options: [
{ label: '已上线', value: '1' },
{ label: '未上线', value: '2' },
],
},
colProps: { span: 3 },
},
{
field: 'dateRange',
label: ' ',
component: 'RangePicker',
componentProps: {
format: 'YYYY-MM-DD', // 显示的日期格式
valueFormat: 'YYYY-MM-DD', // 提交的日期格式
placeholder: ['开始时间', '结束时间'], // 占位符
style: { width: '100%' }, // 控制宽度
},
colProps: { span: 5 },
},
{
field: 'businessLabel',
label: ' ',
component: 'Select',
componentProps: {
placeholder: '业务标签',
options: [
{ label: '生产', value: '1' },
{ label: '质量', value: '2' },
{ label: '人力', value: '3' },
],
},
colProps: { span: 3 },
},
// {
// field: 'flag',
// label: ' ',
......
<template>
<PageWrapper dense contentFullHeight fixedHeight contentClass="flex">
<!-- <template #headerContent>
<dicv style="display:flex;">
<Icon icon="ant-design:folder-open-outlined" :size="24" :color="'#1091FE'"/>
<h2 style="margin-left: 15px">API</h2>
</dicv>
<div type="primary" class="save-button" >
<Icon icon="ant-design:bug-outlined" :size="24" :color="'#1091FE'"/>
<p>测试</p>
</div>
<div type="primary" class="save-button1">
<Icon icon="ant-design:inbox-outlined" :size="24" :color="'#1091FE'"/>
<p>保存</p>
</div>
</template>-->
<BasicTable @register="registerTable" :rowSelection="rowSelection" :searchInfo="searchInfo">
<template #toolbar>
<a-button type="primary"
......@@ -43,9 +28,9 @@
},
{
icon:'ant-design:fund-projection-screen-outlined',
tooltip:'',
tooltip:'服务监控',
/*label: '详情',*/
onClick: other.bind(null, record),
onClick: monitorInfo.bind(null, record),
ifShow: () => {
return record.flag !== '开发中';
},
......@@ -137,6 +122,7 @@
</template>
</BasicTable>
<!-- <sensitiveTypeModal @register="registerModal" @success="handleSuccess"/>-->
<ProductionDrawer @register="productionDrawer" />
</PageWrapper>
</template>
<script lang="ts" setup>
......@@ -150,11 +136,15 @@ import {tableList} from "./mock";
import {useRoute, onBeforeRouteLeave} from 'vue-router';
import {router} from '@/router';
import Icon from "@/components/Icon/Icon.vue";
import ProductionDrawer from "./productionDrawer.vue";
import {useDrawer} from "@/components/Drawer";
defineOptions({name: 'safetyLevelManage'});
const {createMessage, createConfirm} = useMessage();
const route = useRoute();
const searchInfo = reactive<Recordable>({});
const [productionDrawer, { openDrawer: openProductionDrawer }] = useDrawer({
});
const [registerTable, {
reload,
updateTableDataRecord,
......@@ -178,6 +168,7 @@ const [registerTable, {
},
rowKey: 'businessId',
rowSelection: true,
showIndexColumn:false,
columns,
formConfig: {
labelWidth: 120,
......@@ -253,8 +244,13 @@ function Settings() {
}
/**按钮*/
function other() {
function monitorInfo(record) {
router.push({
path: '/dataService/serviceMonitor/monitorInfo',
query: {
id: record.businessId,
},
});
}
/**api详情按钮*/
function apiDetail() {
......@@ -267,10 +263,9 @@ function handleOffline(record) {
}
/**上线按钮*/
function handleOnline() {
router.push({
path: '/dataService/serviceManage/onlineManage/productionData',
query: {
},
openProductionDrawer(true, {
data: 'content',
info: 'Info',
});
}
/**创建商城API按钮*/
......
......@@ -35,7 +35,7 @@ export const tableList: any[] = [
owner: 'admin',
path: 'API/共享工作区/tuomin_demo',
},
{
/* {
businessId: 4,
name: 'tuo_api',
flag: '开发中',
......@@ -58,7 +58,7 @@ export const tableList: any[] = [
updateDate: '',
owner: '',
path: 'API/共享工作区/tuomin_demo',
},
},*/
];
/**上线设置-复合框数据*/
export const routeList:any[] =[
......
/*import { getAllRoleList } from '@/api/system/role/role';*/
import { BasicColumn, FormSchema } from '@/components/Table';
import {DescItem} from "@/components/Description";
import {InputProps} from "ant-design-vue";
// 引入开关组件
/*type CheckedType = boolean | string | number;*/
......@@ -88,6 +89,7 @@ export const Table1Schema: BasicColumn[] = [
title: '字段名称',
width: 150,
dataIndex: 'name',
slots: { customRender: 'name' },
},
{
title: '敏感状态',
......@@ -110,6 +112,7 @@ export const Table2Schema: BasicColumn[] = [
title: '字段名称',
width: 150,
dataIndex: 'name',
slots: { customRender: 'name' },
},
{
title: '敏感状态',
......@@ -221,7 +224,10 @@ export const schemas: FormSchema[] = [
component: 'BasicTitle',
label: '路由转发配置',
componentProps: {
// line: true,
style: {
fontsize: 16,
fontWeight: 'bold',
},
span: true,
},
colProps: {
......@@ -339,6 +345,7 @@ export const schemas: FormSchema[] = [
field: 'accessMethod',
component: 'RadioGroup',
label: '访问方式',
defaultValue:'2',
colProps: {
span: 20,
},
......@@ -359,12 +366,12 @@ export const schemas: FormSchema[] = [
{
field: 'dynamicRouting',
fields: ['dynamic'],
component: 'Input',
label: '动态路由',
colProps: {
span: 20,
},
colSlot: 'dynamicRouting'
slot: 'dynamicRouting',
required: true,
},
{
field: 'businessGrouping',
......@@ -403,7 +410,10 @@ export const schemas: FormSchema[] = [
component: 'BasicTitle',
label: '安全配置',
componentProps: {
// line: true,
style: {
fontsize: 16,
fontWeight: 'bold',
},
span: true,
},
colProps: {
......@@ -414,6 +424,7 @@ export const schemas: FormSchema[] = [
field: 'enableAllLogs',
component: 'RadioGroup',
label: '开启所有日志',
defaultValue:'2',
colProps: {
span: 20,
},
......@@ -456,6 +467,9 @@ export const schemas: FormSchema[] = [
field: 'cronExpression',
component: 'Input',
label: 'Cron表达式',
componentProps: {
placeholder: '0 0 0 ? * * *',
} as InputProps,
colProps: {
span: 20,
},
......@@ -560,6 +574,7 @@ export const schemas: FormSchema[] = [
field: 'associatedList',
component: 'RadioGroup',
label: '关联名单',
defaultValue:'2',
colProps: {
span: 23,
},
......
<template>
<PageWrapper :title="title" contentBackground @back="goBack" dense fixedHeight
contentClass="flex">
<template #headerContent>
<span>API / 验收 / SQL API</span>
<div type="primary" class="save-button" @click="handleTest">
<Icon icon="ant-design:bug-outlined" :size="24" :color="'#1091FE'"/>
<p>测试</p>
<BasicDrawer v-bind="$attrs" @register="register" :showDetailBack="false" width="50%">
<template #title>
<div style="display: flex; justify-content: space-between">
<div class="flex">
<Icon icon="ant-design:setting-outlined" :size="30" style="color:#0960BD;"/>
<div style="margin-left: 10px">
<span>上线设置</span>
<h4 style="color: #BFBFBF">API / 验收 / SAL API</h4>
</div>
</div>
<div class="flex" style="gap: 15px">
<a-button type="link" @click="handleTest">
<Icon icon="ant-design:bug-outlined" :size="24"/>
<p style="color: black">调试</p>
</a-button>
<a-button type="link" @click="handleSave">
<Icon icon="ant-design:inbox-outlined" :size="24"/>
<p style="color: black">保存</p>
</a-button>
</div>
<div type="primary" class="save-button1" @click="handleSave">
<Icon icon="ant-design:inbox-outlined" :size="24" :color="'#1091FE'"/>
<p>保存</p>
</div>
</template>
<div>
<BasicForm @register="register" @submit="handleSubmit" style="padding:15px 0 0 40px">
<BasicForm @register="registerForm" style="padding:0 0 0 40px">
<template #dynamicRouting="{ field,model, }">
<FormItem :name="field" label="动态路由"
:rules="[{ required: true, message: '请选择动态路由',type: 'string' }]"
style="margin-left: 45px">
<Input.Group>
<FormItemRest>
<Select style="width: 380px" placeholder="请选择"
<div>
<Select style="width: 30%" placeholder="请选择"
v-model:value="model['dynamic']" :options="routeList"/>
</FormItemRest>
<FormItemRest>
<Input style="width: calc(100% - 380px); margin-left: -1px;"
<Input style="width: 70%"
v-model:value="model[field]" placeholder="请输入"/>
</FormItemRest>
</Input.Group>
</FormItem>
</div>
</template>
<template #expirationDuration="{ field,model, }">
<FormItem :name="field" label="有效期持续时间"
......@@ -62,7 +63,8 @@
</template>
</BasicForm>
</div>
</PageWrapper>
</BasicDrawer>
<ProductionTestModal @register="productionTestModal" />
</template>
<script lang="ts" setup>
/**上线设置页面*/
......@@ -77,53 +79,45 @@ import {BasicForm, FormSchema, useForm} from "@/components/Form";
import {useMessage} from "@/hooks/web/useMessage";
import {FormItem, FormItemRest} from "ant-design-vue";
import {Select, Input} from "ant-design-vue";
import {BasicDrawer, useDrawerInner} from "@/components/Drawer";
import ProductionTestModal from "./productionTestModal.vue";
import {useModal} from "@/components/Modal";
const [productionTestModal, { openModal: openProductionTestModal }] = useModal();
const title = ref();
const route = useRoute();
/**上线设置表单配置*/
const {createMessage} = useMessage();
const [register, {getFieldsValue, resetFields, setFieldsValue}] =
const [registerForm, {getFieldsValue, resetFields, setFieldsValue}] =
useForm({
labelWidth: 120,
schemas,
showActionButtonGroup: false,
actionColOptions: {
span: 24,
},
});
/**返回上一级*/
function goBack() {
router.back();
}
const [register,{closeDrawer}] = useDrawerInner((data) => {
// 方式1
setFieldsValue({
field2: data.data,
field1: data.info,
});
});
/**测试按钮*/
function handleTest() {
router.push({
path: '/dataService/serviceManage/onlineManage/productionTest',
query: {},
openProductionTestModal(true, {
isUpdate: false,
});
}
/**保存按钮*/
function handleSave() {
router.back();
closeDrawer();
createMessage.success('保存成功!!');
}
/**表单按钮*/
function handleSubmit(values: any) {
createMessage.success('click search,values:' + JSON.stringify(values));
}
/**接入数据*/
onMounted(() => {
/* const data = tableList.filter((item) => item.businessId === route.query.id);*/
// formParams.value = data[0];
/*console.log('数据:', data)*/
title.value = '上线设置';
/* Object.assign(formParams, data[0]); // 使用 Object.assign 赋值*/
/* resetFields();*/
})
</script>
<style lang="scss" scoped>
.modal_top {
......
<template>
<PageWrapper :title="title" contentBackground @back="goBack" dense fixedHeight >
<template #headerContent>
<span>API / 验收 / SQL API</span>
<BasicModal
width="60%"
v-bind="$attrs"
@register="registerModal"
@ok="handleSubmit"
>
<template #title>
<div style="display: flex; justify-content: space-between">
<div class="flex">
<Icon icon="ant-design:bug-outlined" :size="30" style="color:#0960BD;"/>
<div style="margin-left: 10px">
<span>测试</span>
<h4 style="color: #BFBFBF">API / 验收 / SAL API</h4>
</div>
</div>
</div>
</template>
<BasicTable @register="registerTable" title="请求参数"/>
<div style="padding: 15px">
......@@ -11,8 +24,7 @@
<div style="margin-bottom: 15px;font-weight: bold;font-size: 16px">返回结果源码</div>
<CodeEditor v-model:value="value2" :mode="modeValue" />
</div>
</PageWrapper>
</BasicModal>
</template>
<script lang="ts" setup>
/**上线设置页面*/
......@@ -29,9 +41,17 @@ import BasicTable from "@/components/Table/src/BasicTable.vue";
import {testTableSchema} from "@/views/dataService/serviceManage/onlineManage/onlineManage.data";
import {useTable} from "@/components/Table";
import {CodeEditor, MODE} from "@/components/CodeEditor";
import {BasicModal, useModal, useModalInner} from '@/components/Modal';
const title = ref();
const route = useRoute();
//初始化弹框
const [registerModal, {setModalProps, closeModal}] = useModalInner(async (data) => {
setModalProps({
confirmLoading: false,
});
});
/**右-表(右上)*/
const [registerTable] = useTable({
dataSource: testTableData,
......@@ -82,15 +102,10 @@ function testButton() {
function handleSave() {
router.back();
}
/**接入数据*/
onMounted(() => {
const data = tableList.filter((item) => item.businessId === route.query.id);
// formParams.value = data[0];
console.log('数据:', data)
title.value = '测试';
/* Object.assign(formParams, data[0]); // 使用 Object.assign 赋值*/
/* resetFields();*/
})
/**确定按钮*/
async function handleSubmit() {
closeModal();
}
</script>
<style lang="scss" scoped>
......
import { FormSchema } from '@/components/Form';
import {BasicColumn} from "@/components/Table";
import { BasicColumn } from '@/components/Table';
export const detailFormSchema: FormSchema[] = [
{
......@@ -47,9 +47,10 @@ export const detailFormSchema: FormSchema[] = [
colProps: { lg: 18 },
},
{
field: 'type',
field: 'selectType',
label: '规则选择方式',
slot: 'type',
defaultValue: '数据标准',
slot: 'selectType',
componentProps: {
options: [
{
......@@ -282,35 +283,35 @@ export const dataStandardColumns: BasicColumn[any] = [
dataIndex: 'workGroup',
width: 150,
},
]
];
// 添加数据标准 弹窗列表数据
export const dataStandardListData: any[] = [
{
"id": 1,
"standardName": "对外投资出资方式",
"standardNumber": "BAS000004",
"businessDefinition": "对外投资出资方式",
"workGroup": "个人工作区",
id: 1,
standardName: '对外投资出资方式',
standardNumber: 'BAS000004',
businessDefinition: '对外投资出资方式',
workGroup: '个人工作区',
},
{
"id": 2,
"standardName": "对外投资控股标志",
"standardNumber": "BAS000005",
"businessDefinition": "对外投资控股标志",
"workGroup": "个人工作区",
id: 2,
standardName: '对外投资控股标志',
standardNumber: 'BAS000005',
businessDefinition: '对外投资控股标志',
workGroup: '个人工作区',
},
{
"id": 3,
"standardName": "对外投资企业证明",
"standardNumber": "BAS000006",
"businessDefinition": "对外投资企业证明",
"workGroup": "个人工作区",
id: 3,
standardName: '对外投资企业证明',
standardNumber: 'BAS000006',
businessDefinition: '对外投资企业证明',
workGroup: '个人工作区',
},
{
"id": 4,
"standardName": "zy_basic_standard",
"standardNumber": "BAS000007",
"businessDefinition": "zy_basic_standard",
"workGroup": "共享工作区",
id: 4,
standardName: 'zy_basic_standard',
standardNumber: 'BAS000007',
businessDefinition: 'zy_basic_standard',
workGroup: '共享工作区',
},
];
......@@ -4,7 +4,7 @@ export const detailFormData = {
describe: '',
updateTime: '',
cycle: '',
selectType: '',
selectType: '数据标准',
};
export const detailCycleOptions = [
{
......
<template>
<PageWrapper :title="modelName" contentBackground headerSticky>
<template #extra>
<PageWrapper contentBackground headerSticky>
<template #headerContent>
<div class="flex" style="gap: 10px">
<div class="flex-1 flex" style="gap: 10px">
<LeftOutlined style="font-size: 25px; cursor: pointer" @click="handleBack" />
<SearchOutlined style="font-size: 30px; color: #14b43e" />
<div>
<div style="font-weight: bolder; font-size: 16px">
{{ modelName }}
</div>
<div style="color: #b5b9c5">
{{ path }}
</div>
</div>
</div>
<a-button type="primary" @click="handleOperation">跳转运维</a-button>
<a-button type="primary">查看报告</a-button>
<a-button type="primary" :disabled="disabled">保存</a-button>
<a-button type="primary" :disabled="disabled" @click="handleSave">保存</a-button>
<a-button type="primary" @click="handleOnline">{{ isOnline ? '下线' : '上线' }}</a-button>
<a-button type="primary">运行</a-button>
<a-button type="primary" @click="handleRun">运行</a-button>
</div>
</template>
<template #footer>
<BasicForm :disabled="disabled" @register="registerForm">
......@@ -23,9 +37,8 @@
</template>
<template #formula="{ model, field }">
<a-input style="width: 200px" v-model:value="model[field]" />
<a-button :disabled="disabled" type="link">Cron表达式</a-button>
</template>
<template #type="{ model, field }">
<template #selectType="{ model, field }">
<RadioGroup v-model:value="model[field]" @change="changeTableType(model[field])">
<Radio :value="item" v-for="item in ['数据标准', '元数据']" :key="item">{{
item
......@@ -39,7 +52,13 @@
@register="registerTable"
:searchInfo="searchInfo"
>
<template #toolbar>
<template #headerTop>
<div class="flex">
<div class="flex-1 flex" style="gap: 10px">
<Input style="width: 200px" v-model:value="searchBasic" placeholder="搜索标准" />
<Input style="width: 200px" v-model:value="searchPath" placeholder="搜索路径" />
</div>
<div class="flex" style="gap: 10px">
<span>是否运行质量检查</span>
<QuestionCircleOutlined />
<RadioGroup :disabled="disabled" v-model:value="checkType">
......@@ -50,8 +69,13 @@
@click="handleDelete"
><DeleteOutlined
/></a-button>
<a-button :disabled="disabled" type="primary" @click="addDataStandard()">添加数据标准</a-button>
<a-button :disabled="disabled" type="primary" @click="addDataStandard()"
>添加数据标准</a-button
>
</div>
</div>
</template>
<template #toolbar> </template>
<template #standard="{ text, record }">
<a @click="handleTableName">{{ text }}</a>
</template>
......@@ -61,9 +85,14 @@
</template>
</BasicTable>
<BasicTable v-if="tableType === '元数据'" @register="metadataTable" :searchInfo="searchInfo">
<template #toolbar>
<span>是否运行质量检查</span>
<QuestionCircleOutlined />
<template #headerTop>
<div class="flex">
<div class="flex-1 flex" style="gap: 10px">
<Input style="width: 200px" v-model:value="searchBasic" placeholder="搜索标准" />
<Input style="width: 200px" v-model:value="searchPath" placeholder="搜索路径" />
</div>
<div class="flex" style="gap: 10px">
<div>是否运行质量检查<QuestionCircleOutlined style="margin-left: 10px" /></div>
<RadioGroup :disabled="disabled" v-model:value="checkType">
<QuestionCircleOutlined style="z-index: 2" />
<Radio :value="item" v-for="item in ['是', '否']" :key="item">{{ item }}</Radio>
......@@ -82,7 +111,10 @@
</Menu>
</template>
</Dropdown>
</div>
</div>
</template>
<template #toolbar> </template>
<template #name="{ text, record }">
<div>{{ text }}</div>
<div style="color: #9195a4">{{ record.nameTxt }}</div>
......@@ -99,9 +131,14 @@
</template>
<script lang="ts" setup>
import { Radio, Select, Switch, Dropdown, Menu, MenuItem } from 'ant-design-vue';
import { Radio, Select, Switch, Dropdown, Menu, MenuItem, Input } from 'ant-design-vue';
import { PageWrapper } from '@/components/Page';
import { DeleteOutlined, QuestionCircleOutlined } from '@ant-design/icons-vue';
import {
DeleteOutlined,
QuestionCircleOutlined,
LeftOutlined,
SearchOutlined,
} from '@ant-design/icons-vue';
import { BasicTable, useTable } from '@/components/Table';
import BasicForm from '../../../../components/Form/src/BasicForm.vue';
import { useForm } from '@/components/Form';
......@@ -130,12 +167,15 @@
const { createMessage, createConfirm } = useMessage();
const RadioGroup = Radio.Group;
const route = useRoute();
const modelName = ref(route.query.name);
const modelName = route.query.name;
const path = '落标检查 / admin-个人工作区 / ' + modelName;
const searchInfo = reactive<Recordable>({});
const infoData = route.query;
const isOnline = ref(false);
const disabled = computed(() => isOnline.value);
const checkType = ref('否');
const searchBasic = ref();
const searchPath = ref();
let tableType = ref('数据标准');
function handleTableName() {}
function changeTableType(type) {
......@@ -210,12 +250,7 @@
rowSelection: {},
striped: false,
// 搜索
formConfig: {
labelWidth: 120,
schemas: detailDataFormSchema,
autoSubmitOnEnter: true,
},
useSearchForm: true,
useSearchForm: false,
showTableSetting: false,
bordered: true,
});
......@@ -230,15 +265,19 @@
rowSelection: {},
striped: false,
// 搜索
formConfig: {
labelWidth: 120,
schemas: metadataFormSchema,
autoSubmitOnEnter: true,
},
useSearchForm: true,
useSearchForm: false,
showTableSetting: false,
bordered: true,
});
function handleBack() {
router.go(-1);
}
function handleSave() {
createMessage.success('保存成功!');
}
function handleRun() {
createMessage.success('运行成功!');
}
onMounted(() => {
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