Commit 2b8ac6e6 authored by 冷玲鹏's avatar 冷玲鹏

api上线管理—页面修改

parent 9817791e
...@@ -17,11 +17,11 @@ ...@@ -17,11 +17,11 @@
</template>--> </template>-->
<BasicTable @register="registerTable" :rowSelection="rowSelection" :searchInfo="searchInfo"> <BasicTable @register="registerTable" :rowSelection="rowSelection" :searchInfo="searchInfo">
<template #toolbar> <template #toolbar>
<a-button :disabled="getRowSelection().selectedRowKeys <=0" type="primary" <a-button type="primary"
@click="handleDeleteIds">创建商城API @click="createMallAPI ">创建商城API
</a-button> </a-button>
<a-button :disabled="getRowSelection().selectedRowKeys <=0" type="primary" <a-button :disabled="getRowSelection().selectedRowKeys <=0" type="primary"
@click="handleDeleteIds">下载API Doc @click="DownloadAPI">下载API Doc
</a-button> </a-button>
<a-button :disabled="getRowSelection().selectedRowKeys <=0" type="primary" <a-button :disabled="getRowSelection().selectedRowKeys <=0" type="primary"
@click="handleDeleteIds">删除 @click="handleDeleteIds">删除
...@@ -45,7 +45,7 @@ ...@@ -45,7 +45,7 @@
icon:'ant-design:fund-projection-screen-outlined', icon:'ant-design:fund-projection-screen-outlined',
tooltip:'详情', tooltip:'详情',
/*label: '详情',*/ /*label: '详情',*/
onClick: handleOffline.bind(null, record), onClick: other.bind(null, record),
ifShow: () => { ifShow: () => {
return record.flag !== '开发中'; return record.flag !== '开发中';
}, },
...@@ -72,7 +72,7 @@ ...@@ -72,7 +72,7 @@
icon:'ant-design:container-twotone', icon:'ant-design:container-twotone',
tooltip:'API', tooltip:'API',
/*label: 'API',*/ /*label: 'API',*/
onClick: handleOffline.bind(null, record), onClick: apiDetail.bind(null, record),
ifShow: () => { ifShow: () => {
return record.flag !== ''; return record.flag !== '';
}, },
...@@ -81,7 +81,7 @@ ...@@ -81,7 +81,7 @@
icon:'ant-design:setting-outlined', icon:'ant-design:setting-outlined',
tooltip:'设置', tooltip:'设置',
/*label: '设置',*/ /*label: '设置',*/
onClick: handleOffline.bind(null, record), onClick: Settings.bind(null, record),
ifShow: () => { ifShow: () => {
return record.flag !== '开发中'&& record.flag === '已上线'; return record.flag !== '开发中'&& record.flag === '已上线';
}, },
...@@ -136,7 +136,7 @@ ...@@ -136,7 +136,7 @@
</span> </span>
</template> </template>
</BasicTable> </BasicTable>
<sensitiveTypeModal @register="registerModal" @success="handleSuccess"/> <!-- <sensitiveTypeModal @register="registerModal" @success="handleSuccess"/>-->
</PageWrapper> </PageWrapper>
</template> </template>
<script lang="ts" setup> <script lang="ts" setup>
...@@ -192,7 +192,7 @@ const [registerTable, { ...@@ -192,7 +192,7 @@ const [registerTable, {
return info; return info;
}, },
actionColumn: { actionColumn: {
width: 250, width: 220,
title: '操作', title: '操作',
dataIndex: 'action', dataIndex: 'action',
// slots: { customRender: 'action' }, // slots: { customRender: 'action' },
...@@ -201,24 +201,30 @@ const [registerTable, { ...@@ -201,24 +201,30 @@ const [registerTable, {
/**查看API*/ /**查看API*/
function seeApi(record) { function seeApi(record) {
const mode = record.mode const mode = record.mode;
if (mode === '向导模式') { if (mode === '向导模式') {
router.push({ router.push({
path: '/dataService/serviceManage/guideModeApi', path: '/dataService/serviceDevelopment/guideModeApi',
query: {} query: {},
}) });
} }
if (mode === 'SQL模式') { if (mode === 'SQL模式') {
router.push({ router.push({
path: '/dataService/serviceManage/sqlModeApi', path: '/dataService/serviceDevelopment/sqlModeApi',
query: {} query: {},
}) });
} }
if (mode === '托管模式') { if (mode === '托管模式') {
router.push({ router.push({
path: '/dataService/serviceManage/trusteeshipModeApi', path: '/dataService/serviceDevelopment/trusteeshipModeApi',
query: {} query: {},
}) });
}
if (mode === '编排模式') {
router.push({
path: '/dataService/serviceDevelopment/trusteeshipModeApi',
query: {},
});
} }
} }
...@@ -242,17 +248,47 @@ function handleConsanguinity(record: Recordable) { ...@@ -242,17 +248,47 @@ function handleConsanguinity(record: Recordable) {
}); });
} }
/**下线按钮*/ /**设置按钮*/
function handleOffline() { function Settings() {
}
/**按钮*/
function other() {
} }
/**api详情按钮*/
function apiDetail() {
}
/**下线按钮*/
function handleOffline(record) {
// 修改 record 对象的 flag 值为 "未上线"
record.flag = '未上线';
}
/**上线按钮*/ /**上线按钮*/
function handleOnline() { function handleOnline() {
router.push({ router.push({
path: '/dataService/serviceManage/onlineManage/productionData', path: '/dataService/serviceManage/onlineManage/productionData',
query: { query: {
},
});
}
/**创建商城API按钮*/
function createMallAPI() {
createConfirm({
iconType: 'warning',
title: '功能待完善',
content: '具体后续~~~?',
});
}
/**下载API Doc按钮*/
function DownloadAPI() {
createConfirm({
iconType: 'warning',
title: '确认下载',
content: '确认批量下载选中数据吗?',
onOk() {
createMessage.success('下载成功!');
}, },
}); });
} }
...@@ -278,7 +314,7 @@ function handleDeleteIds() { ...@@ -278,7 +314,7 @@ function handleDeleteIds() {
} }
/** 新增/编辑成功*/ /** 新增/编辑成功*/
function handleSuccess({isUpdate, values}) { /*function handleSuccess({isUpdate, values}) {
if (isUpdate) { if (isUpdate) {
// 演示不刷新表格直接更新内部数据。 // 演示不刷新表格直接更新内部数据。
// 注意:updateTableDataRecord要求表格的rowKey属性为string并且存在于每一行的record的keys中 // 注意:updateTableDataRecord要求表格的rowKey属性为string并且存在于每一行的record的keys中
...@@ -288,7 +324,7 @@ function handleSuccess({isUpdate, values}) { ...@@ -288,7 +324,7 @@ function handleSuccess({isUpdate, values}) {
} else { } else {
reload(); reload();
} }
} }*/
onMounted(() => { onMounted(() => {
...@@ -310,16 +346,16 @@ onMounted(() => { ...@@ -310,16 +346,16 @@ onMounted(() => {
.save-button { .save-button {
position: absolute; /* 绝对定位 */ position: absolute;
top: 15px; /* 顶部对齐 */ top: 15px;
right: 10px; /* 右侧对齐 */ right: 10px;
margin: 10px 60px 10px 10px; /* 可选:增加一些边缘间距 */ margin: 10px 60px 10px 10px;
} }
.save-button1 { .save-button1 {
position: absolute; /* 绝对定位 */ position: absolute;
top: 15px; /* 顶部对齐 */ top: 15px;
right: 10px; /* 右侧对齐 */ right: 10px;
margin: 10px; /* 可选:增加一些边缘间距 */ margin: 10px;
} }
</style> </style>
...@@ -60,11 +60,22 @@ export const tableList: any[] = [ ...@@ -60,11 +60,22 @@ export const tableList: any[] = [
path: 'API/共享工作区/tuomin_demo', path: 'API/共享工作区/tuomin_demo',
}, },
]; ];
/**上线设置-复合框数据*/
export const routeList:any[] =[ export const routeList:any[] =[
{ label: '路由A', value: 'routeA' }, { value: '1', label: 'gateway地址'},
{ label: '路由B', value: 'routeB' }, { value: '2', label: '域名' },
{ label: '路由C', value: 'routeC' },]; ];
export const timeList:any[] =[
{ value: '1', label: '秒'},
{ value: '2', label: '分' },
{ value: '3', label: '时' },];
export const timesDataList:any[] =[
{ value: '1', label: '每秒/次'},
{ value: '2', label: '每分/次'},
{ value: '3', label: '每时/次'},
{ value: '4', label: '每天/次'},
];
export const modelData:any[] = [ export const modelData:any[] = [
{ {
id:1, id:1,
......
...@@ -215,16 +215,368 @@ export const apiDetailSchema: DescItem[] = [ ...@@ -215,16 +215,368 @@ export const apiDetailSchema: DescItem[] = [
]; ];
/** 上线设置表单(暂无引用)*/ /** 上线设置表单(暂无引用)*/
export const productionDataSchemas: FormSchema[] = [ export const schemas: FormSchema[] = [
{ {
field: 'field1', field: 'title1',
component: 'BasicTitle',
label: '路由转发配置',
componentProps: {
// line: true,
span: true,
},
colProps: {
span: 24,
},
},
{
field: 'routeName',
component: 'Input', component: 'Input',
label: '字段1', label: '路由名称',
colProps: { colProps: {
span: 8, span: 20,
}, },
required: true, required: true,
}, },
{
field: 'protocolType',
component: 'Select',
label: '协议类型',
colProps: {
span: 20,
},
componentProps: {
/*mode: 'multiple',*/
options: [
{
label: 'Http',
value: '1',
key: '1',
},
{
label: 'Https',
value: '2',
key: '2',
},
],
onChange: (value) => {
console.log(value, '123');
},
},
rules: [
{
required: true,
message: '请选择',
/*type: 'array',// 如果你启用了多选,使用 array*/
type: 'string',
},
],
},
{
field: 'APISpecification',
component: 'Select',
label: '接口规范',
colProps: {
span: 20,
},
componentProps: {
options: [
{
label: 'rest',
value: '1',
key: '1',
},
{
label: 'webservice',
value: '2',
key: '2',
},
],
onChange: (value) => {
console.log(value, '123');
},
},
rules: [
{
required: true,
message: '请选择',
type: 'string',
},
],
},
{
field: 'requestMethod',
component: 'Select',
label: '请求方式',
colProps: {
span: 20,
},
componentProps: {
options: [
{
label: 'Get',
value: '1',
key: '1',
},
{
label: 'Post',
value: '2',
key: '2',
},
],
onChange: (value) => {
console.log(value, '123');
},
},
rules: [
{
required: true,
message: '请选择',
type: 'string',
},
],
},
{
field: 'accessMethod',
component: 'RadioGroup',
label: '访问方式',
colProps: {
span: 20,
},
componentProps: {
options: [
{
label: '通过域名访问',
value: '1',
},
{
label: '通过IP访问',
value: '2',
},
],
},
rules: [{required: true, message: '覆盖默认生成的校验信息'}],
},
{
field: 'dynamicRouting',
fields: ['dynamic'],
component: 'Input',
label: '动态路由',
colProps: {
span: 20,
},
colSlot: 'dynamicRouting'
},
{
field: 'businessGrouping',
component: 'Select',
label: '业务分组',
colProps: {
span: 20,
},
componentProps: {
options: [
{
label: '默认业务分组',
value: '1',
key: '1',
},
{
label: '默认业务分组1',
value: '2',
key: '2',
},
],
onChange: (value) => {
console.log(value, '123');
},
},
rules: [
{
required: true,
message: '请选择',
type: 'string',
},
],
},
{
field: 'title2',
component: 'BasicTitle',
label: '安全配置',
componentProps: {
// line: true,
span: true,
},
colProps: {
span: 24,
},
},
{
field: 'enableAllLogs',
component: 'RadioGroup',
label: '开启所有日志',
colProps: {
span: 20,
},
componentProps: {
options: [
{
label: '是',
value: '1',
},
{
label: '否',
value: '2',
},
],
},
rules: [{required: true, message: '覆盖默认生成的校验信息'}],
},
{
field: 'maxLogRetention',
component: 'Input',
label: '日志最长保存',
colProps: {
span: 20,
},
suffix: '天',
required: true,
},
{
field: '[startDateTime, endDateTime]',
/* field: 'expirationDate',*/
label: '有效期',
component: 'RangePicker',
componentProps: {
format: 'YYYY-MM-DD HH:mm:ss',
placeholder: ['开始日期、时间', '结束日期、时间'],
showTime: {format: 'HH:mm:ss'},
},
},
{
field: 'cronExpression',
component: 'Input',
label: 'Cron表达式',
colProps: {
span: 20,
},
},
{
field: 'expirationDuration',
fields: ['expiration'],
component: 'Input',
label: '有效期持续时间',
colProps: {
span: 20,
},
colSlot: 'expirationDuration'
},
{
field: 'rateLimitPolicy',
fields: ['rateLimit'],
component: 'Input',
label: '流控策略',
colProps: {
span: 20,
},
colSlot: 'rateLimitPolicy'
},
{
field: 'encryptionMethod',
component: 'Select',
label: '加密方式',
colProps: {
span: 20,
},
componentProps: {
options: [
{
label: '加密',
value: '1',
key: '1',
},
{
label: '不加密',
value: '2',
key: '2',
},
],
onChange: (value) => {
console.log(value, '123');
},
},
rules: [
{
required: true,
message: '请选择',
type: 'string',
},
],
},
{
field: 'authenticationMode',
component: 'Select',
label: '鉴权模式',
colProps: {
span: 20,
},
componentProps: {
options: [
{
label: '简单token鉴权',
value: '1',
key: '1',
},
{
label: '复杂token鉴权',
value: '2',
key: '2',
},
],
onChange: (value) => {
console.log(value, '123');
},
},
rules: [
{
required: true,
message: '请选择',
type: 'string',
},
],
},
{
field: 'requestExample',
component: 'Input',
label: '请求示例',
colProps: {
span: 20,
},
componentProps: {
placeholder: ['curl-X POST -H’Content-Type: application/json; charset=utf-8‘ -H -d'],
},
helpMessage: ['您可以参考示例书写'],
},
{
field: 'associatedList',
component: 'RadioGroup',
label: '关联名单',
colProps: {
span: 23,
},
componentProps: {
options: [
{
label: '关联',
value: '1',
},
{
label: '不关联',
value: '2',
},
],
},
rules: [{required: true, message: '覆盖默认生成的校验信息'}],
},
]; ];
/** 上线测试列表*/ /** 上线测试列表*/
export const testTableSchema: BasicColumn[] = [ export const testTableSchema: BasicColumn[] = [
......
...@@ -12,406 +12,75 @@ ...@@ -12,406 +12,75 @@
<p>保存</p> <p>保存</p>
</div> </div>
</template> </template>
<BasicForm @register="register" @submit="handleSubmit" style="padding:15px 0 0 40px"> <div>
<template #colSlot_dynamicRouting="{ model, field, disabled }"> <BasicForm @register="register" @submit="handleSubmit" style="padding:15px 0 0 40px">
<FormItem :name="field" label="动态路由" <template #dynamicRouting="{ field,model, }">
:rules="[{ required: true, message: '请选择动态路由' }]"> <FormItem :name="field" label="动态路由"
:rules="[{ required: true, message: '请选择动态路由',type: 'string' }]"
<a-select style="margin-left: 45px">
v-model:value="model[field]" <Input.Group>
:disabled="disabled" <FormItemRest>
mode="multiple" <Select style="width: 380px" placeholder="请选择"
style="width: 50%" v-model:value="model['dynamic']" :options="routeList"/>
placeholder="请选择" </FormItemRest>
:options="routeList" <FormItemRest>
/> <Input style="width: calc(100% - 380px); margin-left: -1px;"
v-model:value="model[field]" placeholder="请输入"/>
<a-input </FormItemRest>
v-model:value="model[field]" </Input.Group>
:disabled="disabled" </FormItem>
style="width: 50%" </template>
placeholder="请选择" <template #expirationDuration="{ field,model, }">
/> <FormItem :name="field" label="有效期持续时间"
</FormItem> :rules="[{ required: true, message: '请输入有效期持续时间',type: 'string' }]"
</template> style="margin-left: 0">
</BasicForm> <Input.Group>
<FormItemRest>
<Input style="width: calc(100% - 380px); margin-left: -1px;"
v-model:value="model[field]" placeholder="请输入"/>
</FormItemRest>
<FormItemRest>
<Select style="width: 380px" placeholder="请选择"
v-model:value="model['expiration']" :options="timeList"/>
</FormItemRest>
</Input.Group>
</FormItem>
</template>
<template #rateLimitPolicy="{ field,model, }">
<FormItem :name="field" label="流控策略"
:rules="[{ required: true, message: '请输入流控策略',type: 'string' }]"
style="margin-left: 45px">
<Input.Group>
<FormItemRest>
<Input style="width: calc(100% - 380px); margin-left: -1px;"
v-model:value="model[field]" placeholder="请输入"/>
</FormItemRest>
<Select style="width: 380px" placeholder="请选择"
v-model:value="model['rateLimit']" :options="timesDataList"/>
</Input.Group>
</FormItem>
</template>
</BasicForm>
</div>
</PageWrapper> </PageWrapper>
</template> </template>
<script lang="ts" setup> <script lang="ts" setup>
/**上线设置页面*/ /**上线设置页面*/
import {PageWrapper} from '@/components/Page'; import {PageWrapper} from '@/components/Page';
import {tableList, routeList} from './mock'; import {tableList, routeList, timeList, timesDataList} from './mock';
import {productionDataSchemas} from './onlineManage.data'; import {schemas} from './onlineManage.data';
import Icon from "@/components/Icon/Icon.vue"; import Icon from "@/components/Icon/Icon.vue";
import {onMounted, reactive, ref} from "vue"; import {onMounted, reactive, ref} from "vue";
import {router} from '@/router'; import {router} from '@/router';
import {useRoute} from "vue-router"; import {useRoute} from "vue-router";
import {BasicForm, FormSchema, useForm} from "@/components/Form"; import {BasicForm, FormSchema, useForm} from "@/components/Form";
import {useMessage} from "@/hooks/web/useMessage"; import {useMessage} from "@/hooks/web/useMessage";
import {FormItem} from "ant-design-vue"; import {FormItem, FormItemRest} from "ant-design-vue";
import {Select, Input} from "ant-design-vue";
const title = ref(); const title = ref();
const route = useRoute(); const route = useRoute();
/**上线设置表单配置*/ /**上线设置表单配置*/
const schemas: FormSchema[] = [
{
field: 'title1',
component: 'BasicTitle',
label: '路由转发配置',
componentProps: {
// line: true,
span: true,
},
colProps: {
span: 24,
},
},
{
field: 'routeName',
component: 'Input',
label: '路由名称',
colProps: {
span: 20,
},
required: true,
},
{
field: 'protocolType',
component: 'Select',
label: '协议类型',
colProps: {
span: 20,
},
componentProps: {
/*mode: 'multiple',*/
options: [
{
label: 'Http',
value: '1',
key: '1',
},
{
label: 'Https',
value: '2',
key: '2',
},
],
onChange: (value) => {
console.log(value, '123');
},
},
rules: [
{
required: true,
message: '请选择',
/*type: 'array',// 如果你启用了多选,使用 array*/
type: 'string',
},
],
},
{
field: 'APISpecification',
component: 'Select',
label: '接口规范',
colProps: {
span: 20,
},
componentProps: {
options: [
{
label: 'rest',
value: '1',
key: '1',
},
{
label: 'webservice',
value: '2',
key: '2',
},
],
onChange: (value) => {
console.log(value, '123');
},
},
rules: [
{
required: true,
message: '请选择',
type: 'string',
},
],
},
{
field: 'requestMethod',
component: 'Select',
label: '请求方式',
colProps: {
span: 20,
},
componentProps: {
options: [
{
label: 'Get',
value: '1',
key: '1',
},
{
label: 'Post',
value: '2',
key: '2',
},
],
onChange: (value) => {
console.log(value, '123');
},
},
rules: [
{
required: true,
message: '请选择',
type: 'string',
},
],
},
{
field: 'accessMethod',
component: 'RadioGroup',
label: '访问方式',
colProps: {
span: 20,
},
componentProps: {
options: [
{
label: '通过域名访问',
value: '1',
},
{
label: '通过IP访问',
value: '2',
},
],
},
rules: [{required: true, message: '覆盖默认生成的校验信息'}],
},
{
field: 'dynamicRouting',
component: 'Input',
label: '动态路由',
colProps: {
span: 20,
},
required: true,
colSlot: 'colSlot_dynamicRouting'
},
{
field: 'businessGrouping',
component: 'Select',
label: '业务分组',
colProps: {
span: 20,
},
componentProps: {
options: [
{
label: '默认业务分组',
value: '1',
key: '1',
},
{
label: '默认业务分组1',
value: '2',
key: '2',
},
],
onChange: (value) => {
console.log(value, '123');
},
},
rules: [
{
required: true,
message: '请选择',
type: 'string',
},
],
},
{
field: 'title2',
component: 'BasicTitle',
label: '安全配置',
componentProps: {
// line: true,
span: true,
},
colProps: {
span: 24,
},
},
{
field: 'enableAllLogs',
component: 'RadioGroup',
label: '开启所有日志',
colProps: {
span: 20,
},
componentProps: {
options: [
{
label: '是',
value: '1',
},
{
label: '否',
value: '2',
},
],
},
rules: [{required: true, message: '覆盖默认生成的校验信息'}],
},
{
field: 'maxLogRetention',
component: 'Input',
label: '日志最长保存',
colProps: {
span: 20,
},
suffix: '天',
required: true,
},
{
field: '[startDateTime, endDateTime]',
/* field: 'expirationDate',*/
label: '有效期',
component: 'RangePicker',
componentProps: {
format: 'YYYY-MM-DD HH:mm:ss',
placeholder: ['开始日期、时间', '结束日期、时间'],
showTime: {format: 'HH:mm:ss'},
},
},
{
field: 'cronExpression',
component: 'Input',
label: 'Cron表达式',
colProps: {
span: 20,
},
},
{
field: 'expirationDuration',
component: 'Input',
label: '有效期持续时间',
colProps: {
span: 20,
},
},
{
field: 'rateLimitPolicy',
component: 'Input',
label: '流控策略',
colProps: {
span: 20,
},
},
{
field: 'rateLimitPolicy',
component: 'Select',
label: '加密方式',
colProps: {
span: 20,
},
componentProps: {
options: [
{
label: '加密',
value: '1',
key: '1',
},
{
label: '不加密',
value: '2',
key: '2',
},
],
onChange: (value) => {
console.log(value, '123');
},
},
rules: [
{
required: true,
message: '请选择',
type: 'string',
},
],
},
{
field: 'authenticationMode',
component: 'Select',
label: '鉴权模式',
colProps: {
span: 20,
},
componentProps: {
options: [
{
label: '简单token鉴权',
value: '1',
key: '1',
},
{
label: '复杂token鉴权',
value: '2',
key: '2',
},
],
onChange: (value) => {
console.log(value, '123');
},
},
rules: [
{
required: true,
message: '请选择',
type: 'string',
},
],
},
{
field: 'requestExample',
component: 'Input',
label: '请求示例',
helpMessage: ['您可以参考示例书写'],
componentProps: {
placeholder: ['curl-X POST -H’Content-Type: application/json; charset=utf-8‘ -H -d'],
},
colProps: {
span: 20,
},
},
{
field: 'associatedList',
component: 'RadioGroup',
label: '关联名单',
colProps: {
span: 23,
},
componentProps: {
options: [
{
label: '关联',
value: '1',
},
{
label: '不关联',
value: '2',
},
],
},
rules: [{required: true, message: '覆盖默认生成的校验信息'}],
},
];
const {createMessage} = useMessage(); const {createMessage} = useMessage();
const [register, {getFieldsValue, resetFields, setFieldsValue}] = const [register, {getFieldsValue, resetFields, setFieldsValue}] =
useForm({ useForm({
...@@ -447,9 +116,9 @@ function handleSubmit(values: any) { ...@@ -447,9 +116,9 @@ function handleSubmit(values: any) {
/**接入数据*/ /**接入数据*/
onMounted(() => { onMounted(() => {
const data = tableList.filter((item) => item.businessId === route.query.id); /* const data = tableList.filter((item) => item.businessId === route.query.id);*/
// formParams.value = data[0]; // formParams.value = data[0];
console.log('数据:', data) /*console.log('数据:', data)*/
title.value = '上线设置'; title.value = '上线设置';
/* Object.assign(formParams, data[0]); // 使用 Object.assign 赋值*/ /* Object.assign(formParams, data[0]); // 使用 Object.assign 赋值*/
/* resetFields();*/ /* resetFields();*/
...@@ -482,4 +151,15 @@ onMounted(() => { ...@@ -482,4 +151,15 @@ onMounted(() => {
right: 10px; /* 右侧对齐 */ right: 10px; /* 右侧对齐 */
margin: 10px; /* 可选:增加一些边缘间距 */ margin: 10px; /* 可选:增加一些边缘间距 */
} }
.local_typeValue {
width: calc(100% - 120px);
margin-bottom: 0;
margin-left: -1px;
border-right: 0;
.ant-input {
border-radius: 0 6px 6px 0;
}
}
</style> </style>
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