| <!-- |
| ~ Licensed to the Apache Software Foundation (ASF) under one or more |
| ~ contributor license agreements. See the NOTICE file distributed with |
| ~ this work for additional information regarding copyright ownership. |
| ~ The ASF licenses this file to You under the Apache License, Version 2.0 |
| ~ (the "License"); you may not use this file except in compliance with |
| ~ the License. You may obtain a copy of the License at |
| ~ |
| ~ http://www.apache.org/licenses/LICENSE-2.0 |
| ~ |
| ~ Unless required by applicable law or agreed to in writing, software |
| ~ distributed under the License is distributed on an "AS IS" BASIS, |
| ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
| ~ See the License for the specific language governing permissions and |
| ~ limitations under the License. |
| --> |
| <template> |
| <div class="__container_services_tabs_param_route"> |
| <a-card :bordered="false" style="width: 1000px"> |
| <template #title> |
| <a-flex justify="space-between"> |
| <span>路由</span> |
| <a-flex class="handle-form"> |
| <EditOutlined class="edit-icon" /> |
| <DeleteOutlined class="edit-icon" /> |
| </a-flex> |
| </a-flex> |
| </template> |
| <a-form :labelCol="{ span: 3 }"> |
| <a-form-item label="选择方法"> |
| <a-select v-model:value="method.value" style="width: 120px"> |
| <a-select-option v-for="(item, index) in method.selectArr" :value="item" :key="index"> |
| {{ item }} |
| </a-select-option> |
| </a-select> |
| </a-form-item> |
| <a-form-item label="指定方法参数"> |
| <a-table |
| :columns="functionParamsColumn" |
| :data-source="props.paramRouteForm.functionParams" |
| :pagination="false" |
| > |
| <template #bodyCell="{ column, index: idx }"> |
| <template v-if="column.dataIndex === 'param'"> |
| <a-input v-model:value="functionParamsEdit[idx].param" /> |
| </template> |
| <template v-if="column.dataIndex === 'relation'"> |
| <a-input v-model:value="functionParamsEdit[idx].relation" /> |
| </template> |
| <template v-if="column.dataIndex === 'value'"> |
| <a-input v-model:value="functionParamsEdit[idx].value" /> |
| </template> |
| <template v-if="column.dataIndex === 'handle'"> |
| <a-flex justify="space-between"> |
| <PlusOutlined |
| class="edit-icon" |
| @click="emit('addRow', 'functionParams', props.index, idx)" |
| /> |
| <MinusOutlined |
| class="edit-icon" |
| @click="emit('deleteRow', 'functionParams', props.index, idx)" |
| /> |
| </a-flex> |
| </template> |
| </template> |
| </a-table> |
| </a-form-item> |
| <a-form-item label="路由目的地"> |
| <a-table |
| :columns="destinationColumn" |
| :data-source="props.paramRouteForm.destination" |
| :pagination="false" |
| > |
| <template #bodyCell="{ column, index: idx }"> |
| <template v-if="column.dataIndex === 'label'"> |
| <a-input v-model:value="destinationEdit[idx].label" /> |
| </template> |
| <template v-if="column.dataIndex === 'relation'"> |
| <a-input v-model:value="destinationEdit[idx].relation" /> |
| </template> |
| <template v-if="column.dataIndex === 'value'"> |
| <a-input v-model:value="destinationEdit[idx].value" /> |
| </template> |
| <template v-if="column.dataIndex === 'weight'"> |
| <a-input v-model:value="destinationEdit[idx].weight" /> |
| </template> |
| <template v-if="column.dataIndex === 'handle'"> |
| <a-flex justify="space-between"> |
| <PlusOutlined |
| class="edit-icon" |
| @click="emit('addRow', 'destination', props.index, idx)" |
| /> |
| <MinusOutlined |
| class="edit-icon" |
| @click="emit('deleteRow', 'destination', props.index, idx)" |
| /> |
| </a-flex> |
| </template> |
| </template> |
| </a-table> |
| </a-form-item> |
| </a-form> |
| </a-card> |
| </div> |
| </template> |
| |
| <script setup lang="ts"> |
| import { EditOutlined, DeleteOutlined, PlusOutlined, MinusOutlined } from '@ant-design/icons-vue' |
| import { ref } from 'vue' |
| |
| const props = defineProps<{ |
| paramRouteForm: { |
| type: Object |
| default: {} |
| } |
| index: { |
| type: Number |
| } |
| }>() |
| |
| console.log('props', props.paramRouteForm) |
| |
| const method = ref(JSON.parse(JSON.stringify(props.paramRouteForm.method))) |
| const functionParamsEdit = ref(JSON.parse(JSON.stringify(props.paramRouteForm.functionParams))) |
| const destinationEdit = ref(JSON.parse(JSON.stringify(props.paramRouteForm.destination))) |
| |
| const functionParamsColumn = [ |
| { |
| title: '参数索引', |
| key: 'param', |
| dataIndex: 'param', |
| width: '30%' |
| }, |
| { |
| title: '关系', |
| key: 'relation', |
| dataIndex: 'relation', |
| width: '30%' |
| }, |
| { |
| title: '值', |
| key: 'value', |
| dataIndex: 'value', |
| width: '30%' |
| }, |
| { |
| title: '操作', |
| key: 'handle', |
| dataIndex: 'handle', |
| width: '10%' |
| } |
| ] |
| |
| const destinationColumn = [ |
| { |
| title: '标签', |
| key: 'label', |
| dataIndex: 'label', |
| width: '25%' |
| }, |
| { |
| title: '关系', |
| key: 'relation', |
| dataIndex: 'relation', |
| width: '25%' |
| }, |
| { |
| title: '值', |
| key: 'value', |
| dataIndex: 'value', |
| width: '25%' |
| }, |
| { |
| title: '权重', |
| key: 'weight', |
| dataIndex: 'weight', |
| width: '15%' |
| }, |
| { |
| title: '操作', |
| key: 'handle', |
| dataIndex: 'handle', |
| width: '10%' |
| } |
| ] |
| </script> |
| |
| <style lang="less" scoped> |
| .__container_services_tabs_param_route { |
| .handle-form { |
| width: 50px; |
| justify-content: space-between; |
| } |
| .edit-icon { |
| font-size: 18px; |
| } |
| } |
| </style> |