Переглянути джерело

添加关闭tag操作
修改apikey编辑错误
修改编辑机器人参数null错误

DESKTOP-NE65RNK\Citrus_limon 1 рік тому
батько
коміт
33a2168fcd

+ 10 - 4
src/components/PageLayout/Layout.vue

@@ -8,7 +8,7 @@
         <Side :list="pageData.menuList" @collapse="handleCollapse" @open="handleOpen" :keepAliveList="keepAliveList" />
       </lay-side>
       <lay-body class="layout-body">
-        <Tag @close="handleClose" />
+        <Tag @close="handleClose" @closeOther="handleCloseOther" @closeAll="handleCloseAll" />
         <div class="layout-main">
           <div class="layout-content">
             <router-view v-slot="{ Component, route }">
@@ -78,6 +78,12 @@ const handleOpen = (value: string) => {
 const handleClose = (value: string) => {
   keepAliveList.value = keepAliveList.value.filter((item: string) => item != value);
 };
+const handleCloseOther = (value: string) => {
+  keepAliveList.value = keepAliveList.value.filter((item: string) => item == value);
+};
+const handleCloseAll = (value: string) => {
+  keepAliveList.value = [value];
+};
 
 pageInfo();
 </script>
@@ -99,11 +105,11 @@ pageInfo();
       .header-left-wp {
         flex: 0 0 64px !important;
         width: 64px !important;
-        .logo{
-          .logo-svg{
+        .logo {
+          .logo-svg {
             display: none;
           }
-          .logo-png{
+          .logo-png {
             display: block;
           }
         }

+ 43 - 1
src/components/PageLayout/Tag.vue

@@ -5,6 +5,18 @@
         <span :class="{ lineheight: route.path == item.path }">{{ item.name }}</span>
       </lay-tag>
     </div>
+    <div class="tag-operator-wp">
+      <lay-dropdown class="operator-btn" placement="bottom-end" updateAtScroll>
+        <lay-icon type="layui-icon-down" />
+        <template #content>
+          <lay-dropdown-menu>
+            <lay-dropdown-menu-item @click="handleClose(selectedMenu)">关闭当前标签页</lay-dropdown-menu-item>
+            <lay-dropdown-menu-item @click="handleCloseOther(selectedMenu)">关闭其它标签页</lay-dropdown-menu-item>
+            <lay-dropdown-menu-item @click="handleCloseAll()">关闭所有标签页</lay-dropdown-menu-item>
+          </lay-dropdown-menu>
+        </template>
+      </lay-dropdown>
+    </div>
   </div>
 </template>
 
@@ -12,7 +24,7 @@
 import { ref, watchEffect } from "vue";
 import { useRouter, useRoute } from "vue-router";
 
-const emit = defineEmits(["close"]);
+const emit = defineEmits(["close", "closeOther", "closeAll"]);
 
 const router = useRouter();
 const route = useRoute();
@@ -25,9 +37,11 @@ interface MenuList {
   templateName: string;
 }
 const menuList = ref<Array<MenuList>>([]);
+let selectedMenu = ref();
 
 watchEffect(() => {
   let routeInfo = { name: route.meta.title, path: route.path, query: route.query, templateName: route.name };
+  selectedMenu.value = routeInfo;
   window.sessionStorage.setItem("_4L_S_MENU_PATH", JSON.stringify(routeInfo));
   let routeList = window.sessionStorage.getItem("_4L_TAG_LIST");
   let tagList = routeList ? JSON.parse(routeList) : [];
@@ -59,6 +73,20 @@ const handleClose = (menu: any) => {
   window.sessionStorage.setItem("_4L_TAG_LIST", JSON.stringify(menuList.value));
   emit("close", menu.templateName);
 };
+const handleCloseOther = (menu: any) => {
+  menuList.value = menuList.value.filter((item: any) => item.path == menu.path);
+  window.sessionStorage.setItem("_4L_TAG_LIST", JSON.stringify(menuList.value));
+  emit("closeOther", menu.templateName);
+};
+const handleCloseAll = () => {
+  const defaultMenu = JSON.parse(window.sessionStorage.getItem("_4L_MENU_PATH") || "{}");
+  menuList.value = selectedMenu.value.path == defaultMenu.path ? [selectedMenu.value] : [];
+  window.sessionStorage.setItem("_4L_TAG_LIST", JSON.stringify(menuList.value));
+  jumpPage(defaultMenu);
+  setTimeout(() => {
+    emit("closeAll", selectedMenu.value.templateName);
+  }, 100);
+};
 
 const jumpPage = (menu: any) => {
   router.push({ path: menu.path, query: menu.query });
@@ -69,7 +97,14 @@ const jumpPage = (menu: any) => {
   background: white;
   width: 100%;
   border-bottom: 1px solid rgba(0, 0, 0, 0.1);
+  display: flex;
+  align-items: center;
   .tag-list {
+    width: 0;
+    flex: 1;
+    display: flex;
+    flex-direction: row;
+    align-items: center;
     padding: 10px;
     .tag-item {
       cursor: pointer;
@@ -82,5 +117,12 @@ const jumpPage = (menu: any) => {
       }
     }
   }
+  .tag-operator-wp {
+    width: 30px;
+    .operator-btn {
+      padding: 2px;
+      border: 1px solid rgba(0, 0, 0, 0.5);
+    }
+  }
 }
 </style>

+ 2 - 1
src/views/bot/manage/components/Update.vue

@@ -106,8 +106,9 @@ const show = async (params?: any) => {
   modelConfig.isUpdate = !!params;
   modelConfig.title = !!params ? "编辑机器人" : "添加机器人";
   if (modelConfig.isUpdate) {
+    const configList = params.configList || [];
     let robotConfigs: any = {};
-    params.configList.map((item: any) => {
+    configList.map((item: any) => {
       if (item.valType == 2) {
         robotConfigs[item.code] = item.val == "true" ? true : false;
       } else if (item.valType == 5) {

+ 1 - 1
src/views/bot/manage/detail.vue

@@ -19,7 +19,7 @@
         </lay-tag>
       </lay-space>
     </div>
-    <div v-if="apiList?.includes('/remaining/list')">
+    <div v-show="!apiList?.includes('/remaining/list')">
       <lay-card class="custom-card">
         <template v-slot:title>
           <span class="card-title">净值图</span>

+ 1 - 1
src/views/bot/manage/index.vue

@@ -60,7 +60,7 @@
             <span>{{ JSON.parse(row.configsJson || "{}").pair }}</span>
           </template>
           <template v-slot:earningRate="{ row }">
-            <span :class="{ 'primary-color': row.earningRate > 0, 'danger-color': row.earningRate < 0 }">{{ row.earningRate }}%</span>
+            <span :class="{ 'primary-color': row.earningRate > 0, 'danger-color': row.earningRate < 0 }">{{ row.earningRate || 0 }}%</span>
           </template>
           <template v-slot:status="{ row }">
             <lay-space v-if="row.status == 'RUNNING'">

+ 2 - 1
src/views/exchange/apikey/components/Update.vue

@@ -84,9 +84,9 @@ const operator = reactive([
     callback: () => {
       modelFormRef.value.validate((isValidate: boolean) => {
         if (isValidate) {
-          const params = [{ ...modelParams.value }];
           modelConfig.loading = true;
           if (modelConfig.isUpdate) {
+            const params = { ...modelParams.value };
             update_apikey(params, (data: any) => {
               modelConfig.loading = false;
               if (data.code == 200) {
@@ -96,6 +96,7 @@ const operator = reactive([
               }
             });
           } else {
+            const params = [{ ...modelParams.value }];
             add_apikey(params, (data: any) => {
               modelConfig.loading = false;
               if (data.code == 200) {

+ 2 - 4
src/views/login/index.vue

@@ -3,7 +3,7 @@
     <div class="login-wp">
       <div class="login-title">
         <div class="title">4L CAPITAL</div>
-        <div class="sub-title">今天你当量化韭菜了吗?</div>
+        <div class="sub-title"></div>
       </div>
       <div class="login-form-wp">
         <lay-form :model="loginParams" ref="layFormRef" :useCN="true" :rules="rules">
@@ -21,9 +21,7 @@
       <div class="footer">
         <lay-space> <span>© 2021</span><span>4L CAPITAL</span> </lay-space>
       </div>
-      <div class="sub-footer">
-        <lay-space> <span>韭菜</span><span>被割</span><span>嘎嘎割</span> </lay-space>
-      </div>
+      <div class="sub-footer"></div>
     </div>
   </div>
 </template>