feat: add sceneConfig page
diff --git a/ui-vue3/src/views/resources/services/tabs/sceneConfig.vue b/ui-vue3/src/views/resources/services/tabs/sceneConfig.vue
index adfcbcf..6e3988d 100644
--- a/ui-vue3/src/views/resources/services/tabs/sceneConfig.vue
+++ b/ui-vue3/src/views/resources/services/tabs/sceneConfig.vue
@@ -15,8 +15,123 @@
   ~ limitations under the License.
 -->
 <template>
-  <div class="__container_services_tabs_monitor">场景配置todo</div>
+  <div class="__container_services_tabs_scene_config">
+    <a-tabs v-model:activeKey="activeKey" :tab-position="'left'" animated>
+      <a-tab-pane key="timeout" tab="超时时间">
+        <a-descriptions layout="vertical">
+          <a-descriptions-item label="超时时间">
+            <a-flex v-if="!editForm.timeout.isEdit">
+              <span class="item-content">1000ms</span>
+              <EditOutlined @click="showEdit('timeout')" style="font-size: 18px" />
+            </a-flex>
+            <a-flex v-else align="center">
+              <a-input v-model:value="editForm.timeout.value" style="width: 200px" />
+              <span style="margin-left: 5px">ms</span>
+              <CheckOutlined @click="hideEdit('timeout')" style="margin-left: 15px; font-size: 18px;" />
+              <CloseOutlined @click="hideEdit('timeout')" style="margin-left: 15px; font-size: 18px;" />
+            </a-flex>
+          </a-descriptions-item>
+        </a-descriptions>
+      </a-tab-pane>
+      <a-tab-pane key="retryNum" tab="重试次数">
+        <a-descriptions layout="vertical">
+          <a-descriptions-item label="重试次数">
+            <a-flex v-if="!editForm.retryNum.isEdit">
+              <span class="item-content">1000次</span>
+              <EditOutlined @click="showEdit('retryNum')" style="font-size: 18px" />
+            </a-flex>
+            <a-flex v-else align="center">
+              <a-input v-model:value="editForm.retryNum.value" style="width: 200px" />
+              <span style="margin-left: 5px">次</span>
+              <CheckOutlined @click="hideEdit('retryNum')" style="margin-left: 15px; font-size: 18px;" />
+              <CloseOutlined @click="hideEdit('retryNum')" style="margin-left: 15px; font-size: 18px;" />
+            </a-flex>
+          </a-descriptions-item>
+        </a-descriptions>
+      </a-tab-pane>
+      <a-tab-pane key="sameArea" tab="同区域优先">
+        <a-descriptions layout="vertical">
+          <a-descriptions-item label="同区域优先">
+            <a-radio-group v-model:value="editForm.sameArea.value" button-style="solid">
+              <a-radio-button value="close">关闭</a-radio-button>
+              <a-radio-button value="open">开启</a-radio-button>
+            </a-radio-group>
+          </a-descriptions-item>
+        </a-descriptions>
+      </a-tab-pane>
+      <a-tab-pane key="paramRoute" tab="参数路由">
+        <paramRoute v-for="item, index in paramRouteForms" :key="index" :paramRouteForm="item" />
+        <a-button type="primary" style="margin-top: 20px">增加路由</a-button>
+      </a-tab-pane>
+    </a-tabs>
+  </div>
 </template>
 
-<script setup lang="ts"></script>
-<style lang="less" scoped></style>
+<script setup lang="ts">
+import { ref, reactive } from 'vue';
+import { EditOutlined, CheckOutlined, CloseOutlined } from '@ant-design/icons-vue';
+import paramRoute from './paramRoute.vue'
+
+const editForm = reactive({
+  timeout: {
+    isEdit: false,
+    value: '',
+  },
+  retryNum: {
+    isEdit: false,
+    value: '',
+  },
+  sameArea: {
+    value: 'close',
+  },
+  paramRoute: {
+    isEdit: false,
+    value: {},
+  }
+})
+
+const activeKey = ref('timeout');
+const showEdit = (param: string) => {
+  editForm[param].isEdit = true;
+}
+const hideEdit = (param: string) => {
+  editForm[param].isEdit = false;
+}
+
+const paramRouteForms = [
+  {
+    method: {
+      value: 'getUserInfo',
+      selectArr: [
+        'getUserInfo',
+        'register',
+        'login'
+      ]
+    },
+    functionParams: [{
+      param: '',
+      relation: '',
+      value: '',
+    }],
+    destination: [{
+      label: '',
+      relation: '',
+      value: '',
+      weight: '',
+    }]
+  }
+]
+</script>
+
+<style lang="less" scoped>
+.__container_services_tabs_scene_config {
+  .item-content {
+    margin-left: 20px;
+    margin-right: 20px;
+  }
+  .handle-form {
+    width: 50px;
+    justify-content: space-between;
+  }
+}
+</style>