Commit 49ad68c2 authored by LiXuyang's avatar LiXuyang

Merge remote-tracking branch 'origin/master'

parents 720ef66d 038932c9
<template> <template>
<div class="h-full"> <div>
<CodeMirrorEditor <CodeMirrorEditor
:value="getValue" :value="getValue"
@change="handleValueChange" @change="handleValueChange"
......
...@@ -75,6 +75,8 @@ ...@@ -75,6 +75,8 @@
closeModal(); closeModal();
if (isUpdate.value) { if (isUpdate.value) {
createMessage.success('编辑成功'); createMessage.success('编辑成功');
} else {
createMessage.success('添加成功');
} }
emit('success', { isUpdate: unref(isUpdate), values: { ...values, id: rowId.value } }); emit('success', { isUpdate: unref(isUpdate), values: { ...values, id: rowId.value } });
} finally { } finally {
......
...@@ -4,45 +4,323 @@ export const tableList: any[] = [ ...@@ -4,45 +4,323 @@ export const tableList: any[] = [
{ {
id: '1', id: '1',
businessId: '301', businessId: '301',
ip: '127.0.0.1', ip: '192.168.1.100',
protectAction: '阻断', protectAction: '放行',
markTime: '2023-12-08 15:27:07', markTime: '2023-12-08 14:30:00',
fieldName: 'user', fieldName: 'username',
featureTraffic: '1000', featureTraffic: '500',
api: 'login', api: 'login',
url: 'https://www.badu.com', url: 'https://www.example.com/login',
}, },
{ {
id: '2', id: '2',
businessId: '302', businessId: '302',
ip: '127.0.0.1', ip: '10.0.0.1',
protectAction: '阻断', protectAction: '放行',
markTime: '2023-12-08 15:06:44', markTime: '2023-12-08 12:45:00',
fieldName: 'user', fieldName: 'email',
featureTraffic: '1000', featureTraffic: '2000',
api: 'login', api: 'login',
url: 'https://www.badu.com', url: 'https://www.example.com/register',
}, },
{ {
id: '3', id: '3',
businessId: '303', businessId: '303',
ip: '127.0.0.1', ip: '172.16.1.100',
protectAction: '阻断', protectAction: '放行',
markTime: '2023-12-08 15:48:56', markTime: '2023-12-08 16:15:00',
fieldName: 'user', fieldName: 'password',
featureTraffic: '1000', featureTraffic: '100',
api: 'login', api: 'login',
url: 'https://www.badu.com', url: 'https://www.example.com/forgot-password',
}, },
{ {
id: '4', id: '4',
businessId: '304', businessId: '304',
ip: '127.0.0.1', ip: '192.168.1.50',
protectAction: '阻断', protectAction: '拒绝',
markTime: '2023-12-08 15:27:07', markTime: '2023-12-08 14:30:00',
fieldName: 'user', fieldName: 'phone',
featureTraffic: '1500',
api: 'login',
url: 'https://www.example.com/profile',
},
{
id: '5',
businessId: '304',
ip: '10.0.0.100',
protectAction: '拒绝',
markTime: '2023-12-08 14:30:00',
fieldName: 'address',
featureTraffic: '2500',
api: 'login',
url: 'https://www.example.com/settings',
},
];
export const tableListtab2: any[] = [
{
id: '1',
businessId: '305',
ip: '172.16.1.200',
protectAction: '拒绝',
markTime: '2023-12-08 17:00:00',
fieldName: 'company',
featureTraffic: '3000',
api: 'login',
url: 'https://www.example.com/company-profile',
},
{
id: '2',
businessId: '306',
ip: '192.168.1.150',
protectAction: '拒绝',
markTime: '2023-12-08 13:15:00',
fieldName: 'location',
featureTraffic: '1200',
api: 'login',
url: 'https://www.example.com/location-map',
},
{
id: '3',
businessId: '307',
ip: '10.0.0.50',
protectAction: '拒绝',
markTime: '2023-12-08 15:45:00',
fieldName: 'department',
featureTraffic: '1800',
api: 'login',
url: 'https://www.example.com/department-directory',
},
{
id: '4',
businessId: '308',
ip: '172.16.1.250',
protectAction: '拒绝',
markTime: '2023-12-08 16:30:00',
fieldName: 'team',
featureTraffic: '2500',
api: 'login',
url: 'https://www.example.com/team-profile',
},
];
export const tableListtab3: any[] = [
{
id: '1',
businessId: '309',
ip: '192.168.1.100',
protectAction: '放行',
markTime: '2023-12-08 14:00:00',
fieldName: 'project',
featureTraffic: '1000', featureTraffic: '1000',
api: 'login', api: 'login',
url: 'https://www.badu.com', url: 'https://www.example.com/project-dashboard',
},
{
id: '2',
businessId: '310',
ip: '10.0.0.200',
protectAction: '放行',
markTime: '2023-12-08 15:30:00',
fieldName: 'task',
featureTraffic: '2000',
api: 'login',
url: 'https://www.example.com/task-list',
},
{
id: '3',
businessId: '311',
ip: '172.16.1.300',
protectAction: '放行',
markTime: '2023-12-08 16:45:00',
fieldName: 'report',
featureTraffic: '3000',
api: 'login',
url: 'https://www.example.com/report-dashboard',
},
{
id: '4',
businessId: '312',
ip: '192.168.1.250',
protectAction: '放行',
markTime: '2023-12-08 17:15:00',
fieldName: 'chart',
featureTraffic: '1500',
api: 'login',
url: 'https://www.example.com/chart-gallery',
},
{
id: '5',
businessId: '313',
ip: '10.0.0.100',
protectAction: '放行',
markTime: '2023-12-08 14:45:00',
fieldName: 'table',
featureTraffic: '2500',
api: 'login',
url: 'https://www.example.com/table-data',
},
{
id: '6',
businessId: '314',
ip: '172.16.1.400',
protectAction: '放行',
markTime: '2023-12-08 16:00:00',
fieldName: 'form',
featureTraffic: '1200',
api: 'login',
url: 'https://www.example.com/form-builder',
},
{
id: '7',
businessId: '315',
ip: '192.168.1.350',
protectAction: '放行',
markTime: '2023-12-08 17:30:00',
fieldName: 'dashboard',
featureTraffic: '1800',
api: 'login',
url: 'https://www.example.com/dashboard-overview',
},
];
export const tableListtab4: any[] = [
{
id: '1',
businessId: '316',
ip: '10.0.0.300',
protectAction: '放行',
markTime: '2023-12-08 15:00:00',
fieldName: 'widget',
featureTraffic: '2200',
api: 'login',
url: 'https://www.example.com/widget-gallery',
},
{
id: '2',
businessId: '317',
ip: '172.16.1.500',
protectAction: '放行',
markTime: '2023-12-08 16:30:00',
fieldName: 'gadget',
featureTraffic: '2800',
api: 'login',
url: 'https://www.example.com/gadget-store',
},
{
id: '3',
businessId: '318',
ip: '192.168.1.400',
protectAction: '放行',
markTime: '2023-12-08 17:00:00',
fieldName: 'tool',
featureTraffic: '2000',
api: 'login',
url: 'https://www.example.com/toolbox',
},
{
id: '4',
businessId: '319',
ip: '10.0.0.250',
protectAction: '拒绝',
markTime: '2023-12-08 14:30:00',
fieldName: 'resource',
featureTraffic: '1500',
api: 'login',
url: 'https://www.example.com/resource-center',
},
{
id: '5',
businessId: '320',
ip: '172.16.1.600',
protectAction: '拒绝',
markTime: '2023-12-08 16:45:00',
fieldName: 'service',
featureTraffic: '3000',
api: 'login',
url: 'https://www.example.com/service-dashboard',
},
];
export const tableListtab5: any[] = [
{
id: '1',
businessId: '321',
ip: '192.168.1.450',
protectAction: '拒绝',
markTime: '2023-12-08 17:15:00',
fieldName: 'module',
featureTraffic: '2500',
api: 'login',
url: 'https://www.example.com/module-library',
},
{
id: '2',
businessId: '322',
ip: '10.0.0.350',
protectAction: '拒绝',
markTime: '2023-12-08 14:45:00',
fieldName: 'component',
featureTraffic: '2000',
api: 'login',
url: 'https://www.example.com/component-gallery',
},
{
id: '3',
businessId: '323',
ip: '172.16.1.700',
protectAction: '拒绝',
markTime: '2023-12-08 16:00:00',
fieldName: 'template',
featureTraffic: '2800',
api: 'login',
url: 'https://www.example.com/template-store',
},
{
id: '4',
businessId: '324',
ip: '192.168.1.500',
protectAction: '放行',
markTime: '2023-12-08 17:30:00',
fieldName: 'layout',
featureTraffic: '2200',
api: 'login',
url: 'https://www.example.com/layout-builder',
},
{
id: '5',
businessId: '325',
ip: '10.0.0.400',
protectAction: '放行',
markTime: '2023-12-08 15:15:00',
fieldName: 'theme',
featureTraffic: '3000',
api: 'login',
url: 'https://www.example.com/theme-gallery',
},
{
id: '6',
businessId: '326',
ip: '172.16.1.800',
protectAction: '放行',
markTime: '2023-12-08 16:45:00',
fieldName: 'plugin',
featureTraffic: '1500',
api: 'login',
url: 'https://www.example.com/plugin-store',
}, },
]; ];
...@@ -8,13 +8,13 @@ ...@@ -8,13 +8,13 @@
@ok="handleSubmit" @ok="handleSubmit"
> >
<div> <div>
<BasicTable @register="registerTable"/> <BasicTable @register="registerTable" />
</div> </div>
<div> <div>
<a-button type="primary" style="margin-bottom: 20px" @click="testButton">测试</a-button> <a-button type="primary" style="margin-bottom: 20px" @click="testButton">测试</a-button>
<div style="margin-bottom: 10px;font-weight: bold;font-size: 16px">请求报文</div> <div style="margin-bottom: 10px; font-weight: bold; font-size: 16px">请求报文</div>
<CodeEditor v-model:value="value1" :mode="modeValue" style="margin-bottom: 20px"/> <CodeEditor v-model:value="value1" :mode="modeValue" style="margin-bottom: 20px" />
<div style="margin-bottom: 10px;font-weight: bold;font-size: 16px">返回结果源码</div> <div style="margin-bottom: 10px; font-weight: bold; font-size: 16px">返回结果源码</div>
<CodeEditor v-model:value="value2" :mode="modeValue" /> <CodeEditor v-model:value="value2" :mode="modeValue" />
</div> </div>
</BasicDrawer> </BasicDrawer>
...@@ -24,7 +24,7 @@ ...@@ -24,7 +24,7 @@
import { BasicForm, useForm } from '@/components/Form'; import { BasicForm, useForm } from '@/components/Form';
import { BasicDrawer, useDrawerInner } from '@/components/Drawer'; import { BasicDrawer, useDrawerInner } from '@/components/Drawer';
import { BasicTree, TreeItem } from '@/components/Tree'; import { BasicTree, TreeItem } from '@/components/Tree';
import {useMessage} from "@/hooks/web/useMessage"; import { useMessage } from '@/hooks/web/useMessage';
import { Divider } from 'ant-design-vue'; import { Divider } from 'ant-design-vue';
import { BasicTable, useTable, TableAction } from '@/components/Table'; import { BasicTable, useTable, TableAction } from '@/components/Table';
import { CodeEditor, JsonPreview, MODE } from '@/components/CodeEditor'; import { CodeEditor, JsonPreview, MODE } from '@/components/CodeEditor';
...@@ -34,66 +34,61 @@ ...@@ -34,66 +34,61 @@
const emit = defineEmits(['success', 'register']); const emit = defineEmits(['success', 'register']);
const { createMessage } = useMessage(); const { createMessage } = useMessage();
const modeValue = ref<MODE>(MODE.JSON); const modeValue = ref<MODE>(MODE.JSON);
const jsonData1 = const jsonData1 = '{"API_CONF_TEST_DATA_VALUE":{"id":"32e71d1a05eb42cca38a55438561a6af"}}';
'{"API_CONF_TEST_DATA_VALUE":{"id":"32e71d1a05eb42cca38a55438561a6af"}}'; const jsonData2 = {
const jsonData2 = data: {
{ valueSize: 20,
"data": { columnNames: ['status', 'create_time'],
"valueSize": 20, value: [
"columnNames": [ {
"status", create_time: '2023-07-19 17:15:23',
"create_time" status: '1',
], },
"value": [ ],
{ },
"create_time": "2023-07-19 17:15:23", code: 200,
"status": "1" message: 'success',
} };
]
},
"code": 200,
"message": "success"
}
const value1 = ref(''); const value1 = ref('');
const value2 = ref(''); const value2 = ref('');
//初始化列表 //初始化列表
const [registerTable, { reload, updateTableDataRecord, getSearchInfo,getForm,getRowSelection }] = useTable({ const [
registerTable,
{ reload, updateTableDataRecord, getSearchInfo, getForm, getRowSelection },
] = useTable({
title: '请求参数', title: '请求参数',
api: async (params) => { api: async (params) => {
const response = { const response = {
pageNu: "1", pageNu: '1',
pageSize: "10", pageSize: '10',
pages: "1", pages: '1',
total: apiDocColumnsData.length, total: apiDocColumnsData.length,
code:'', code: '',
message:'', message: '',
data: [], data: [],
}; };
return { ...response,data: apiDocColumnsData }; return { ...response, data: apiDocColumnsData };
}, },
columns:apiDocColumns, columns: apiDocColumns,
useSearchForm: false, useSearchForm: false,
showTableSetting: false, showTableSetting: false,
showIndexColumn:false, showIndexColumn: false,
bordered: true, bordered: true,
scroll: { y: 300 }, scroll: { y: 300 },
}); });
const [registerDrawer, { setDrawerProps, closeDrawer }] = useDrawerInner(async (data) => { const [registerDrawer, { setDrawerProps, closeDrawer }] = useDrawerInner(async (data) => {
setDrawerProps({ confirmLoading: false }); setDrawerProps({ confirmLoading: false });
}); });
/**测试 按钮*/ /**测试 按钮*/
function testButton() { function testButton() {
value1.value = jsonData1 value1.value = jsonData1;
value2.value = jsonData2 value2.value = jsonData2;
} }
/**确定按钮*/ /**确定按钮*/
async function handleSubmit() { async function handleSubmit() {
closeDrawer() closeDrawer();
} }
</script> </script>
...@@ -7,7 +7,7 @@ ...@@ -7,7 +7,7 @@
width="30%" width="30%"
@ok="handleSubmit" @ok="handleSubmit"
> >
<BasicForm @register="registerForm"/> <BasicForm @register="registerForm" />
</BasicDrawer> </BasicDrawer>
</template> </template>
<script lang="ts" setup> <script lang="ts" setup>
...@@ -16,16 +16,16 @@ ...@@ -16,16 +16,16 @@
import { guideModeFormSchema2 } from './api.data'; import { guideModeFormSchema2 } from './api.data';
import { BasicDrawer, useDrawerInner } from '@/components/Drawer'; import { BasicDrawer, useDrawerInner } from '@/components/Drawer';
import { BasicTree, TreeItem } from '@/components/Tree'; import { BasicTree, TreeItem } from '@/components/Tree';
import { roleDetailApi,roleUpdataApi,addRoleApi } from "@/api/system/role/role"; import { roleDetailApi, roleUpdataApi, addRoleApi } from '@/api/system/role/role';
import { getMenuSelect,getRoleMenuSelected } from "@/api/system/menu/menu"; import { getMenuSelect, getRoleMenuSelected } from '@/api/system/menu/menu';
import {encryptTwo} from "@/utils/jsencrypt"; import { encryptTwo } from '@/utils/jsencrypt';
import {useMessage} from "@/hooks/web/useMessage"; import { useMessage } from '@/hooks/web/useMessage';
const emit = defineEmits(['success', 'register']); const emit = defineEmits(['success', 'register']);
const { createMessage } = useMessage(); const { createMessage } = useMessage();
const isUpdate = ref(true); const isUpdate = ref(true);
const roleId = ref(''); const roleId = ref('');
const getTitle = computed(() => ('基本信息')); const getTitle = computed(() => '基本信息');
const treeData = ref<TreeItem[]>([]); const treeData = ref<TreeItem[]>([]);
const [registerForm, { resetFields, setFieldsValue, validate }] = useForm({ const [registerForm, { resetFields, setFieldsValue, validate }] = useForm({
labelWidth: 90, labelWidth: 90,
...@@ -37,11 +37,9 @@ ...@@ -37,11 +37,9 @@
const [registerDrawer, { setDrawerProps, closeDrawer }] = useDrawerInner(async (data) => { const [registerDrawer, { setDrawerProps, closeDrawer }] = useDrawerInner(async (data) => {
resetFields(); resetFields();
setDrawerProps({ confirmLoading: false }); setDrawerProps({ confirmLoading: false });
}); });
async function handleSubmit() { async function handleSubmit() {
closeDrawer();
} }
</script> </script>
<template> <template>
<BasicModal width="50%" v-bind="$attrs" @register="registerModal" :title="getTitle" @ok="handleSubmit"> <BasicModal
width="50%"
v-bind="$attrs"
@register="registerModal"
:title="getTitle"
@ok="handleSubmit"
>
<div class="div3"> <div class="div3">
调试模式&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<Select 调试模式&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<Select
class="selectCss" class="selectCss"
...@@ -10,109 +16,133 @@ ...@@ -10,109 +16,133 @@
@search="handleSearch" @search="handleSearch"
/> />
</div> </div>
<div style="display: flex;margin-top: 10px;margin-bottom: 10px" v-if="optionValue === 'curl调试'"> <div
style="display: flex; margin-top: 10px; margin-bottom: 10px"
v-if="optionValue === 'curl调试'"
>
curl&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; curl&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
<Textarea rows="6" style="width: 80%" :value="curl"/> <Textarea rows="6" style="width: 80%" :value="curl" />
</div> </div>
<div style="display: flex;margin-top: 10px;margin-bottom: 10px" v-if="optionValue === '参数化调试'"> <div
style="display: flex; margin-top: 10px; margin-bottom: 10px"
v-if="optionValue === '参数化调试'"
>
<BasicTable @register="registerTable"> <BasicTable @register="registerTable">
<template #toolbar> <template #toolbar>
<a-button type="primary" @click="addButton">添加</a-button> <a-button type="primary" @click="addButton">添加</a-button>
</template> </template>
</BasicTable> </BasicTable>
</div> </div>
<a-button type="primary" style="margin-top: 10px;margin-bottom: 10px" @click="typeManageButton">调试</a-button> <a-button type="primary" style="margin-top: 10px; margin-bottom: 10px" @click="typeManageButton"
<div style="display: flex;margin-top: 10px;margin-bottom: 10px"> >调试</a-button
>
<div style="display: flex; margin-top: 10px; margin-bottom: 10px">
响应头&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 响应头&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
<Textarea rows="6" style="width: 80%" :value="hearder"/> <Textarea rows="6" style="width: 80%" :value="hearder" />
</div> </div>
<div style="display: flex;margin-top: 10px;margin-bottom: 10px"> <div style="display: flex; margin-top: 10px; margin-bottom: 10px">
响应报文&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 响应报文&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
<Textarea rows="6" style="width: 80%" :value="hearderText"/> <Textarea rows="6" style="width: 80%" :value="hearderText" />
</div> </div>
</BasicModal> </BasicModal>
</template> </template>
<script lang="ts" setup> <script lang="ts" setup>
import {ref, computed, unref, reactive} from 'vue'; import { ref, computed, unref, reactive } from 'vue';
import { BasicModal, useModalInner } from '@/components/Modal'; import { BasicModal, useModalInner } from '@/components/Modal';
import { BasicForm, useForm } from '@/components/Form'; import { BasicForm, useForm } from '@/components/Form';
import { trusteeshipTableColumns4 } from './api.data'; import { trusteeshipTableColumns4 } from './api.data';
import {trusteeshipTableData4} from './apiData' import { trusteeshipTableData4 } from './apiData';
import { useMessage } from '@/hooks/web/useMessage'; import { useMessage } from '@/hooks/web/useMessage';
import { Select,Textarea } from 'ant-design-vue'; import { Select, Textarea } from 'ant-design-vue';
import { BasicTable, useTable, TableAction } from '@/components/Table'; import { BasicTable, useTable, TableAction } from '@/components/Table';
defineOptions({ name: 'AccountModal' }); defineOptions({ name: 'AccountModal' });
const emit = defineEmits(['success', 'register']); const emit = defineEmits(['success', 'register']);
const { createMessage } = useMessage(); const { createMessage } = useMessage();
const getTitle = computed(() => ('原始出参调试')); const getTitle = computed(() => '原始出参调试');
const curl = ref('http://172.26.2.22:28180/studio/api/workflow/v1/executor-\n' + const curl = ref(
'manage/query/all-executor-info?page=1&size=1 -H Accept:\n' + 'http://172.26.2.22:28180/studio/api/workflow/v1/executor-\n' +
'application/json, text/plain, / -H Accept-Language: zh-CN\n' + 'manage/query/all-executor-info?page=1&size=1 -H Accept:\n' +
',zh;q=0.9,en;q=0.8 -H Connection: keep-alive -H Conten\n' + 'application/json, text/plain, / -H Accept-Language: zh-CN\n' +
't-Type: application/json;charset=UTF-8 -H Cookie\n' + ',zh;q=0.9,en;q=0.8 -H Connection: keep-alive -H Conten\n' +
': SESSION=0061390c-241e-4681-8162-lbaffefec8daccc') 't-Type: application/json;charset=UTF-8 -H Cookie\n' +
const hearder = ref('HTTP/1.1 200 OK\n' + ': SESSION=0061390c-241e-4681-8162-lbaffefec8daccc',
'transfer-encoding: chunked\n' + );
'X-Content-Type-Options: nosniff\n' + const hearder = ref(
'X-XSS-Protection: 1; mode=block\n' + 'HTTP/1.1 200 OK\n' +
'Cache-Control: no-cache, no-store, max-age=0, must-revalidate\n' + 'transfer-encoding: chunked\n' +
'Pragma: no-cache') 'X-Content-Type-Options: nosniff\n' +
const hearderText = ref('{"pagination": { "page": 1,"total": 5, "size": 10 },"data": [{"@Clazz": "io.transwarp.studio.foundation.navigator.entity.dto.DataApiNodeWithPath", "relatedCategory": null "workspaceUuid": "2","nodeType": "FILE","category": "SERVICE","description": "","owner": "admin","tenant": null,"size": "","readOnly": false,"createTime": "2022-12-01T05:47:04.000+00:00","updateTime": "2022-12-02T03:36:04.000+00:00","used": null,"relatedUuid": "","remark": null,"path": {"relatedCategory": "WORKSPACE","workspaceUuid": "2","nodeType": "DIR","category": "SERVICE","uuid": "B9D"}}]}') 'X-XSS-Protection: 1; mode=block\n' +
'Cache-Control: no-cache, no-store, max-age=0, must-revalidate\n' +
'Pragma: no-cache',
);
const hearderText = ref(
'{"pagination": { "page": 1,"total": 5, "size": 10 },"data": [{"@Clazz": "io.transwarp.studio.foundation.navigator.entity.dto.DataApiNodeWithPath", "relatedCategory": null "workspaceUuid": "2","nodeType": "FILE","category": "SERVICE","description": "","owner": "admin","tenant": null,"size": "","readOnly": false,"createTime": "2022-12-01T05:47:04.000+00:00","updateTime": "2022-12-02T03:36:04.000+00:00","used": null,"relatedUuid": "","remark": null,"path": {"relatedCategory": "WORKSPACE","workspaceUuid": "2","nodeType": "DIR","category": "SERVICE","uuid": "B9D"}}]}',
);
const options = ref([ const options = ref([
{ {
label: 'curl调试', label: 'curl调试',
value: 'curl调试' value: 'curl调试',
}, },
{ {
label: '参数化调试', label: '参数化调试',
value: '参数化调试' value: '参数化调试',
}, },
]) ]);
const optionValue = ref('curl调试') const optionValue = ref('curl调试');
let trusteeshipTableDataList4 = ref(trusteeshipTableData4);
//初始化弹框 //初始化弹框
const [registerModal, { setModalProps, closeModal }] = useModalInner(async (data) => { const [registerModal, { setModalProps, closeModal }] = useModalInner(async (data) => {
setModalProps({ confirmLoading: false,okText: '解析' }); setModalProps({ confirmLoading: false, okText: '解析' });
}); });
const [registerTable] = useTable({ const [registerTable, { reload }] = useTable({
title: '', title: '',
api: async (params) => { api: async (params) => {
var data = []; var data = [];
const response = { const response = {
pageNu: "1", pageNu: '1',
pageSize: "10", pageSize: '10',
pages: "1", pages: '1',
total: trusteeshipTableData4.length, total: trusteeshipTableDataList4.value.length,
code:'', code: '',
message:'', message: '',
data: [], data: [],
}; };
//过滤data中的数据,取出等于params.deptId的数据 //过滤data中的数据,取出等于params.deptId的数据
return { ...response,data: trusteeshipTableData4 }; return { ...response, data: trusteeshipTableDataList4.value };
}, },
columns:trusteeshipTableColumns4, columns: trusteeshipTableColumns4,
useSearchForm: false, useSearchForm: false,
showTableSetting: false, showTableSetting: false,
showIndexColumn:false, showIndexColumn: false,
pagination: false, pagination: false,
bordered: true, bordered: true,
scroll: { y: 300 }, scroll: { y: 300 },
}); });
function addButton() {
const param = {
parameterCode: 'Basic Input',
parameterLocation: 'BODY',
Xpath: 'root/a.b/value[0,a]',
dataType: 'string',
};
trusteeshipTableDataList4.value.push(param);
reload();
}
/**确定按钮*/ /**确定按钮*/
async function handleSubmit() { async function handleSubmit() {
closeModal();
} }
</script> </script>
<style scoped lang="scss"> <style scoped lang="scss">
.selectCss{ .selectCss {
::v-deep(.ant-select-selector){ ::v-deep(.ant-select-selector) {
width:200px!important; width: 200px !important;
}
} }
}
</style> </style>
<template> <template>
<BasicModal width="40%" v-bind="$attrs" @register="registerModal" :title="getTitle" @ok="handleSubmit"> <BasicModal
width="40%"
v-bind="$attrs"
@register="registerModal"
:title="getTitle"
@ok="handleSubmit"
>
<BasicForm @register="registerForm" /> <BasicForm @register="registerForm" />
</BasicModal> </BasicModal>
</template> </template>
<script lang="ts" setup> <script lang="ts" setup>
import {ref, computed, unref, reactive} from 'vue'; import { ref, computed, unref, reactive } from 'vue';
import { BasicModal, useModalInner } from '@/components/Modal'; import { BasicModal, useModalInner } from '@/components/Modal';
import { BasicForm, useForm } from '@/components/Form'; import { BasicForm, useForm } from '@/components/Form';
import { moveFormSchema } from './api.data'; import { moveFormSchema } from './api.data';
import { useMessage } from '@/hooks/web/useMessage'; import { useMessage } from '@/hooks/web/useMessage';
import {TreeData} from "./apiData"; import { TreeData } from './apiData';
defineOptions({ name: 'AccountModal' }); defineOptions({ name: 'AccountModal' });
const emit = defineEmits(['success', 'register']); const emit = defineEmits(['success', 'register']);
const { createMessage } = useMessage(); const { createMessage } = useMessage();
const rowId = ref(''); const rowId = ref('');
const getTitle = computed(() => ('移动')); const getTitle = computed(() => '移动');
//获取接口数据并放在下拉框里(这里是打开了一个弹框) //获取接口数据并放在下拉框里(这里是打开了一个弹框)
//初始化表单 //初始化表单
const [registerForm, { setFieldsValue, updateSchema, resetFields, validate }] = useForm({ const [registerForm, { setFieldsValue, updateSchema, resetFields, validate }] = useForm({
...@@ -33,13 +39,13 @@ ...@@ -33,13 +39,13 @@
setModalProps({ confirmLoading: false }); setModalProps({ confirmLoading: false });
setFieldsValue({ setFieldsValue({
...data.record, ...data.record,
}) });
const treeList = handleTree(TreeData, 'businessId',undefined,undefined,undefined) const treeList = handleTree(TreeData, 'businessId', undefined, undefined, undefined);
updateSchema([ updateSchema([
{ {
field: 'path', field: 'path',
componentProps: { componentProps: {
treeData: treeList treeData: treeList,
}, },
}, },
]); ]);
...@@ -48,27 +54,35 @@ ...@@ -48,27 +54,35 @@
/**确定按钮*/ /**确定按钮*/
async function handleSubmit() { async function handleSubmit() {
createMessage.success('移动成功'); createMessage.success('移动成功');
closeModal() closeModal();
} }
/**数组对象转成树*/ /**数组对象转成树*/
function handleTree(data, id, parentId, children, rootId) { function handleTree(data, id, parentId, children, rootId) {
id = id || 'id' id = id || 'id';
parentId = parentId || 'parentId' parentId = parentId || 'parentId';
children = children || 'children' children = children || 'children';
rootId = rootId || Math.min.apply(Math, data.map(item => { return item[parentId] })) || 0 rootId =
rootId ||
Math.min.apply(
Math,
data.map((item) => {
return item[parentId];
}),
) ||
0;
// 对源数据深度克隆 // 对源数据深度克隆
const cloneData = JSON.parse(JSON.stringify(data)) const cloneData = JSON.parse(JSON.stringify(data));
// 循环所有项 // 循环所有项
const treeData = cloneData.filter(father => { const treeData = cloneData.filter((father) => {
const branchArr = cloneData.filter(child => { const branchArr = cloneData.filter((child) => {
// 返回每一项的子级数组 // 返回每一项的子级数组
return father[id] === child[parentId] return father[id] === child[parentId];
}) });
branchArr.length > 0 ? father.children = branchArr : '' branchArr.length > 0 ? (father.children = branchArr) : '';
// 返回第一层 // 返回第一层
return father[parentId] === rootId return father[parentId] === rootId;
}) });
return treeData !== '' ? treeData : data return treeData !== '' ? treeData : data;
} }
</script> </script>
<template> <template>
<BasicModal width="40%" v-bind="$attrs" @register="registerModal" :title="getTitle" @ok="handleSubmit"> <BasicModal
width="40%"
v-bind="$attrs"
@register="registerModal"
:title="getTitle"
@ok="handleSubmit"
>
<BasicForm @register="registerForm" /> <BasicForm @register="registerForm" />
</BasicModal> </BasicModal>
</template> </template>
<script lang="ts" setup> <script lang="ts" setup>
import {ref, computed, unref, reactive} from 'vue'; import { ref, computed, unref, reactive } from 'vue';
import { BasicModal, useModalInner } from '@/components/Modal'; import { BasicModal, useModalInner } from '@/components/Modal';
import { BasicForm, useForm } from '@/components/Form'; import { BasicForm, useForm } from '@/components/Form';
import { publishApplicationFormSchema } from './api.data'; import { publishApplicationFormSchema } from './api.data';
import { useMessage } from '@/hooks/web/useMessage'; import { useMessage } from '@/hooks/web/useMessage';
import {TreeData} from "@/views/dataStandards/basicStandards/basicStandardsData"; import { TreeData } from '@/views/dataStandards/basicStandards/basicStandardsData';
defineOptions({ name: 'AccountModal' }); defineOptions({ name: 'AccountModal' });
const emit = defineEmits(['success', 'register']); const emit = defineEmits(['success', 'register']);
const { createMessage } = useMessage(); const { createMessage } = useMessage();
const rowId = ref(''); const rowId = ref('');
const getTitle = computed(() => ('版本发布申请')); const getTitle = computed(() => '版本发布申请');
//获取接口数据并放在下拉框里(这里是打开了一个弹框) //获取接口数据并放在下拉框里(这里是打开了一个弹框)
//初始化表单 //初始化表单
const [registerForm, { setFieldsValue, updateSchema, resetFields, validate }] = useForm({ const [registerForm, { setFieldsValue, updateSchema, resetFields, validate }] = useForm({
...@@ -33,13 +40,12 @@ ...@@ -33,13 +40,12 @@
setModalProps({ confirmLoading: false }); setModalProps({ confirmLoading: false });
setFieldsValue({ setFieldsValue({
...data.record, ...data.record,
}) });
}); });
/**确定按钮*/ /**确定按钮*/
async function handleSubmit() { async function handleSubmit() {
createMessage.success('移动成功'); createMessage.success('发布成功');
closeModal() closeModal();
} }
</script> </script>
...@@ -33,31 +33,37 @@ ...@@ -33,31 +33,37 @@
{ {
icon: 'ant-design:form-outlined', icon: 'ant-design:form-outlined',
// label: '重命名', // label: '重命名',
tooltip: '重命名',
onClick: resetNameButton.bind(null, record), onClick: resetNameButton.bind(null, record),
}, },
{ {
icon: 'ant-design:fund-projection-screen-outlined', icon: 'ant-design:fund-projection-screen-outlined',
// label: '重命名', // label: '重命名',
tooltip: 'API监控',
onClick: apiMonitorButton.bind(null, record), onClick: apiMonitorButton.bind(null, record),
}, },
{ {
icon: 'eos-icons:api-outlined', icon: 'eos-icons:api-outlined',
// label: 'api doc', // label: 'api doc',
tooltip: 'api doc',
onClick: apiDocButton.bind(null, record), onClick: apiDocButton.bind(null, record),
}, },
{ {
icon: 'ant-design:send-outlined', icon: 'ant-design:send-outlined',
// label: '发布', // label: '发布',
tooltip: '发布',
onClick: publishButton.bind(null, record), onClick: publishButton.bind(null, record),
}, },
{ {
icon: 'ant-design:folder-open-outlined', icon: 'ant-design:folder-open-outlined',
// label: '移动', // label: '移动',
tooltip: '移动',
onClick: MoveButton.bind(null, record), onClick: MoveButton.bind(null, record),
}, },
{ {
icon: 'ant-design:delete-outlined', icon: 'ant-design:delete-outlined',
// label: '删除', // label: '删除',
tooltip: '删除',
color: 'error', color: 'error',
popConfirm: { popConfirm: {
title: '是否确认删除', title: '是否确认删除',
...@@ -68,11 +74,13 @@ ...@@ -68,11 +74,13 @@
{ {
icon: 'ant-design:folder-outlined', icon: 'ant-design:folder-outlined',
// label: '复制', // label: '复制',
tooltip: '复制',
onClick: copyButton.bind(null, record), onClick: copyButton.bind(null, record),
}, },
{ {
icon: 'ant-design:down-circle-outlined', icon: 'ant-design:down-circle-outlined',
// label: '版本管理', // label: '版本管理',
tooltip: '版本管理',
onClick: versionButton.bind(null, record), onClick: versionButton.bind(null, record),
}, },
]" ]"
......
<template> <template>
<PageWrapper title="API测试" class="content-padding" contentBackground @back="goBack"> <PageWrapper title="API测试" class="content-padding" contentBackground @back="goBack">
<div style="margin-top: 20px;margin-bottom: 20px;margin-left: 10px;display: flex"> <div style="margin-top: 20px; margin-bottom: 20px; margin-left: 10px; display: flex">
<div style="font-weight: bold;align-items: center;display: flex">参数输入模式</div> <div style="font-weight: bold; align-items: center; display: flex">参数输入模式</div>
<Select <Select
style="margin-left: 20px" style="margin-left: 20px"
class="selectCss" class="selectCss"
v-model:value="optionValue" v-model:value="optionValue"
show-search show-search
placeholder="input search text" placeholder="input search text"
:options="options" :options="options"
@search="handleSearch" @search="handleSearch"
/> />
</div> </div>
<div v-if="optionValue === '参数模式'"> <div v-if="optionValue === '参数模式'">
<BasicTable @register="registerTable"/> <BasicTable @register="registerTable" />
</div> </div>
<div v-if="optionValue === '报文模式'"> <div v-if="optionValue === '报文模式'">
<BasicForm @register="registerForm"/> <BasicForm @register="registerForm" />
</div> </div>
<a-button type="primary" @click="testButton(optionValue)">测试</a-button> <a-button type="primary" @click="testButton(optionValue)">测试</a-button>
</PageWrapper> </PageWrapper>
</template> </template>
<script lang="ts" setup> <script lang="ts" setup>
import Icon from '@/components/Icon/Icon.vue';
import { PageWrapper } from '@/components/Page'; import { PageWrapper } from '@/components/Page';
import { BasicForm, useForm } from '@/components/Form'; import { BasicForm, useForm } from '@/components/Form';
import { Description } from '@/components/Description'; import { Description } from '@/components/Description';
import { useMessage } from '@/hooks/web/useMessage'; import { useMessage } from '@/hooks/web/useMessage';
import { step2TableData1,step2TableData2,trusteeshipTableData5 } from './apiData'; import { step2TableData1, step2TableData2, trusteeshipTableData5 } from './apiData';
import { ref, reactive, onMounted } from 'vue'; import { ref, reactive, onMounted } from 'vue';
import { Select,Textarea } from 'ant-design-vue'; import { Select, Textarea } from 'ant-design-vue';
import CodeEditor from "@/components/CodeEditor/src/CodeEditor.vue"; import CodeEditor from '@/components/CodeEditor/src/CodeEditor.vue';
import { BasicTable, useTable, TableAction } from '@/components/Table'; import { BasicTable, useTable, TableAction } from '@/components/Table';
import { trusteeshipTableColumns7,trusteeshipFormSchema3 } from './api.data'; import { trusteeshipTableColumns7, trusteeshipFormSchema3 } from './api.data';
import {router} from "@/router"; import { router } from '@/router';
const { createMessage } = useMessage(); const { createMessage } = useMessage();
const emit = defineEmits(['next']); const emit = defineEmits(['next']);
const optionValue = ref('') const optionValue = ref('');
const options = ref([ const options = ref([
{ {
label: '参数模式', label: '参数模式',
value: '参数模式' value: '参数模式',
}, },
{ {
label: '报文模式', label: '报文模式',
value: '报文模式' value: '报文模式',
}, },
]) ]);
const show = ref(false) const show = ref(false);
const [registerTable] = useTable({ const [registerTable] = useTable({
title: '请求参数', title: '请求参数',
api: async (params) => { api: async (params) => {
var data = []; var data = [];
const response = { const response = {
pageNu: "1", pageNu: '1',
pageSize: "10", pageSize: '10',
pages: "1", pages: '1',
total: trusteeshipTableData5.length, total: trusteeshipTableData5.length,
code:'', code: '',
message:'', message: '',
data: [], data: [],
}; };
//过滤data中的数据,取出等于params.deptId的数据 //过滤data中的数据,取出等于params.deptId的数据
return { ...response,data: trusteeshipTableData5 }; return { ...response, data: trusteeshipTableData5 };
}, },
columns:trusteeshipTableColumns7, columns: trusteeshipTableColumns7,
useSearchForm: false, useSearchForm: false,
showTableSetting: false, showTableSetting: false,
showIndexColumn:false, showIndexColumn: false,
bordered: true, bordered: true,
scroll: { y: 300 }, scroll: { y: 300 },
}); });
...@@ -81,25 +82,28 @@ ...@@ -81,25 +82,28 @@
}, },
}); });
/**测试按钮*/ /**测试按钮*/
function testButton(){ function testButton() {
router.push({ router.push({
path: '/dataService/serviceDevelopment/trusteeshipApiTestResult', path: '/dataService/serviceDevelopment/trusteeshipApiTestResult',
query: { query: {
optionValue:optionValue.value optionValue: optionValue.value,
}, },
}); });
} }
function goBack() {
router.back();
}
/**初始化*/ /**初始化*/
onMounted(() => { onMounted(() => {
optionValue.value = '参数模式' optionValue.value = '参数模式';
}); });
</script> </script>
<style lang="less" scoped> <style lang="less" scoped>
.selectCss{ .selectCss {
::v-deep(.ant-select-selector){ ::v-deep(.ant-select-selector) {
width:200px!important; width: 200px !important;
}
} }
}
</style> </style>
...@@ -52,6 +52,7 @@ ...@@ -52,6 +52,7 @@
import { router } from '@/router'; import { router } from '@/router';
import GroupTree from './GroupTree.vue'; import GroupTree from './GroupTree.vue';
import Icon from '@/components/Icon/Icon.vue'; import Icon from '@/components/Icon/Icon.vue';
import { Tag } from 'ant-design-vue';
defineOptions({ name: 'SafetyLevelManage' }); defineOptions({ name: 'SafetyLevelManage' });
const { createMessage, createConfirm } = useMessage(); const { createMessage, createConfirm } = useMessage();
......
...@@ -182,7 +182,7 @@ export const tableListDetails: any[] = [ ...@@ -182,7 +182,7 @@ export const tableListDetails: any[] = [
callNum: '0', callNum: '0',
callSuccessNum: '0', callSuccessNum: '0',
callFailNum: '0', callFailNum: '0',
flag: '调用中', flag: '失败',
startTime: '2023-12-05', startTime: '2023-12-05',
endTime: '2023-12-05', endTime: '2023-12-05',
}, },
......
...@@ -65,7 +65,7 @@ ...@@ -65,7 +65,7 @@
columns: recommendColumns, columns: recommendColumns,
useSearchForm: false, useSearchForm: false,
actionColumn: { actionColumn: {
width: 150, width: 60,
title: '操作', title: '操作',
dataIndex: 'action', dataIndex: 'action',
}, },
......
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