Przeglądaj źródła

添加波动率指标

DESKTOP-NE65RNK\Citrus_limon 1 rok temu
rodzic
commit
6648fb78c0

+ 2 - 2
.env.development

@@ -1,5 +1,5 @@
 VITE_APP_ENV = development
 
-# VITE_API_BASE_URL = "http://cc.skyfffire.com/api"
-VITE_API_BASE_URL = "http://tcc.skyfffire.com/api"
+VITE_API_BASE_URL = "http://cc.skyfffire.com"
+# VITE_API_BASE_URL = "http://tcc.skyfffire.com"
 # VITE_API_BASE_URL = "http://192.168.1.2:81"

+ 1 - 1
.env.production

@@ -1,3 +1,3 @@
 VITE_APP_ENV = production
 
-VITE_API_BASE_URL = "http://cc.skyfffire.com/api"
+VITE_API_BASE_URL = "http://cc.skyfffire.com"

+ 1 - 1
.env.test

@@ -1,3 +1,3 @@
 VITE_APP_ENV = test
 
-VITE_API_BASE_URL = "http://tcc.skyfffire.com/api"
+VITE_API_BASE_URL = "http://tcc.skyfffire.com"

+ 94 - 86
src/api/index.ts

@@ -1,31 +1,31 @@
 import http from "@/utils/request";
 
 export const client_login = (params: any, callback: any) => {
-  return http.request("/client/login", "post", params).then((data) => {
+  return http.request("/api/client/login", "post", params).then((data) => {
     if (data) callback && callback(data);
   });
 };
 
 export const client_logout = (params: any, callback: any) => {
-  return http.request("/client/logout", "get", params).then((data) => {
+  return http.request("/api/client/logout", "get", params).then((data) => {
     if (data) callback && callback(data);
   });
 };
 
 export const get_client_info = (params: any, callback: any) => {
-  return http.request("/client/info", "get", params).then((data) => {
+  return http.request("/api/client/info", "get", params).then((data) => {
     if (data) callback && callback(data);
   });
 };
 
 export const client_upload = (params: any, callback: any) => {
-  return http.request("/client/upload", "post", params).then((data) => {
+  return http.request("/api/client/upload", "post", params).then((data) => {
     if (data) callback && callback(data);
   });
 };
 
 export const update_user_password = (params: any, callback: any) => {
-  return http.request("/user/updatePassword", "post", params).then((data) => {
+  return http.request("/api/user/updatePassword", "post", params).then((data) => {
     if (data) callback && callback(data);
   });
 };
@@ -35,13 +35,13 @@ export const update_user_password = (params: any, callback: any) => {
 // 日志管理
 // 日志管理-登录日志
 export const get_login_log_list = (params: any, callback: any) => {
-  return http.request("/logInLog/getPage", "get", params).then((data) => {
+  return http.request("/api/logInLog/getPage", "get", params).then((data) => {
     if (data) callback && callback(data);
   });
 };
 // 日志管理-用户操作日志
 export const get_user_log_list = (params: any, callback: any) => {
-  return http.request("/userOperateLog/getPage", "get", params).then((data) => {
+  return http.request("/api/userOperateLog/getPage", "get", params).then((data) => {
     if (data) callback && callback(data);
   });
 };
@@ -49,7 +49,7 @@ export const get_user_log_list = (params: any, callback: any) => {
 // 账户信息
 // 账户信息-账户余额
 export const get_remaining = (params: any, callback: any) => {
-  return http.request("/remaining/list", "get", params).then((data) => {
+  return http.request("/api/remaining/list", "get", params).then((data) => {
     if (data) callback && callback(data);
   });
 };
@@ -57,85 +57,85 @@ export const get_remaining = (params: any, callback: any) => {
 // 机器人管理
 // 机器人管理-机器人列表
 export const get_robot_list = (params: any, callback: any) => {
-  return http.request("/robot/getPage", "get", params).then((data) => {
+  return http.request("/api/robot/getPage", "get", params).then((data) => {
     if (data) callback && callback(data);
   });
 };
 // 机器人管理-机器人详情
 export const get_robot_detail  = (params: any, callback: any) => {
-  return http.request("/robot/findById", "get", params).then((data) => {
+  return http.request("/api/robot/findById", "get", params).then((data) => {
     if (data) callback && callback(data);
   });
 };
 // 机器人管理-机器人日志
 export const get_robot_logs  = (params: any, callback: any) => {
-  return http.request("/robot/getRobotLog", "get", params).then((data) => {
+  return http.request("/api/robot/getRobotLog", "get", params).then((data) => {
     if (data) callback && callback(data);
   });
 };
 // 机器人管理-移交机器人
 export const transfers_robot = (params: any, callback: any) => {
-  return http.request("/robot/transfers", "post", params).then((data) => {
+  return http.request("/api/robot/transfers", "post", params).then((data) => {
     if (data) callback && callback(data);
   });
 };
 // 机器人管理-复制机器人
 export const copy_robot = (params: any, callback: any) => {
-  return http.request("/robot/copy", "post", params).then((data) => {
+  return http.request("/api/robot/copy", "post", params).then((data) => {
     if (data) callback && callback(data);
   });
 };
 // 机器人管理-机器人指令
 export const set_robot_status = (params: any, callback: any) => {
-  return http.request("/robot/submitStatus", "post", params).then((data) => {
+  return http.request("/api/robot/submitStatus", "post", params).then((data) => {
     if (data) callback && callback(data);
   });
 };
 // 机器人管理-重置初始资金
 export const set_robot_reset_capital = (params: any, callback: any) => {
-  return http.request("/robot/resetCapital", "post", params).then((data) => {
+  return http.request("/api/robot/resetCapital", "post", params).then((data) => {
     if (data) callback && callback(data);
   });
 };
 // 机器人管理-机器人详情
 export const get_robot_find = (params: any, callback: any) => {
-  return http.request("/robot/findById", "get", params).then((data) => {
+  return http.request("/api/robot/findById", "get", params).then((data) => {
     if (data) callback && callback(data);
   });
 };
 // 机器人管理-添加机器人
 export const add_robot = (params: any, callback: any) => {
-  return http.request("/robot/save", "post", params).then((data) => {
+  return http.request("/api/robot/save", "post", params).then((data) => {
     if (data) callback && callback(data);
   });
 };
 // 机器人管理-修改机器人
 export const update_robot = (params: any, callback: any) => {
-  return http.request("/robot/update", "post", params).then((data) => {
+  return http.request("/api/robot/update", "post", params).then((data) => {
     if (data) callback && callback(data);
   });
 };
 // 机器人管理-修改机器人
 export const update_robot_batch = (params: any, callback: any) => {
-  return http.request("/robot/updateBatch", "post", params).then((data) => {
+  return http.request("/api/robot/updateBatch", "post", params).then((data) => {
     if (data) callback && callback(data);
   });
 };
 // 机器人管理-删除机器人
 export const delete_robot = (params: any, callback: any) => {
-  return http.request("/robot/delete", "post", params).then((data) => {
+  return http.request("/api/robot/delete", "post", params).then((data) => {
     if (data) callback && callback(data);
   });
 };
 // 机器人管理-保命
 export const survive_robot = (params: any, callback: any) => {
-  return http.request("/robot/protectLife", "post", params).then((data) => {
+  return http.request("/api/robot/protectLife", "post", params).then((data) => {
     if (data) callback && callback(data);
   });
 };
 // 机器人管理-还原
 export const restore_robot = (params: any, callback: any) => {
-  return http.request("/robot/restore", "post", params).then((data) => {
+  return http.request("/api/robot/restore", "post", params).then((data) => {
     if (data) callback && callback(data);
   });
 };
@@ -143,85 +143,85 @@ export const restore_robot = (params: any, callback: any) => {
 // 策略管理
 // 策略管理-策略列表
 export const get_strategy_list = (params: any, callback: any) => {
-  return http.request("/strategy/getPage", "get", params).then((data) => {
+  return http.request("/api/strategy/getPage", "get", params).then((data) => {
     if (data) callback && callback(data);
   });
 };
 // 策略管理-策略列表(不分页)
 export const get_strategy_list_all = (params: any, callback: any) => {
-  return http.request("/strategy/getList", "get", params).then((data) => {
+  return http.request("/api/strategy/getList", "get", params).then((data) => {
     if (data) callback && callback(data);
   });
 };
 // 策略管理-策略列表下拉
 export const get_strategy_select = (params: any, callback: any) => {
-  return http.request("/strategy/getSelect", "get", params).then((data) => {
+  return http.request("/api/strategy/getSelect", "get", params).then((data) => {
     if (data) callback && callback(data);
   });
 };
 // 策略管理-添加策略
 export const add_strategy = (params: any, callback: any) => {
-  return http.request("/strategy/save", "post", params).then((data) => {
+  return http.request("/api/strategy/save", "post", params).then((data) => {
     if (data) callback && callback(data);
   });
 };
 // 策略管理-修改策略
 export const update_strategy = (params: any, callback: any) => {
-  return http.request("/strategy/update", "post", params).then((data) => {
+  return http.request("/api/strategy/update", "post", params).then((data) => {
     if (data) callback && callback(data);
   });
 };
 // 策略管理-删除策略
 export const delete_strategy = (params: any, callback: any) => {
-  return http.request("/strategy/delete", "post", params).then((data) => {
+  return http.request("/api/strategy/delete", "post", params).then((data) => {
     if (data) callback && callback(data);
   });
 };
 // 策略管理-版本列表
 export const get_strategy_program_list = (params: any, callback: any) => {
-  return http.request("/strategyProgram/getPage", "get", params).then((data) => {
+  return http.request("/api/strategyProgram/getPage", "get", params).then((data) => {
     if (data) callback && callback(data);
   });
 };
 // 策略管理-版本列表下拉
 export const get_strategy_program_select = (params: any, callback: any) => {
-  return http.request("/strategyProgram/getSelect", "get", params).then((data) => {
+  return http.request("/api/strategyProgram/getSelect", "get", params).then((data) => {
     if (data) callback && callback(data);
   });
 };
 // 策略管理-添加版本
 export const add_strategy_program = (params: any, callback: any) => {
-  return http.request("/strategyProgram/save", "post", params).then((data) => {
+  return http.request("/api/strategyProgram/save", "post", params).then((data) => {
     if (data) callback && callback(data);
   });
 };
 // 策略管理-编辑版本
 export const update_strategy_program = (params: any, callback: any) => {
-  return http.request("/strategyProgram/update", "post", params).then((data) => {
+  return http.request("/api/strategyProgram/update", "post", params).then((data) => {
     if (data) callback && callback(data);
   });
 };
 // 策略管理-设置版本状态
 export const set_strategy_program_status = (params: any, callback: any) => {
-  return http.request("/strategyProgram/setStatus", "post", params).then((data) => {
+  return http.request("/api/strategyProgram/setStatus", "post", params).then((data) => {
     if (data) callback && callback(data);
   });
 };
 // 策略管理-删除版本
 export const delete_strategy_program = (params: any, callback: any) => {
-  return http.request("/strategyProgram/delete", "post", params).then((data) => {
+  return http.request("/api/strategyProgram/delete", "post", params).then((data) => {
     if (data) callback && callback(data);
   });
 };
 // 策略管理-获取上个版本参数
 export const get_strategy_program_params_list = (params: any, callback: any) => {
-  return http.request("/strategyProgram/getLastParams", "get", params).then((data) => {
+  return http.request("/api/strategyProgram/getLastParams", "get", params).then((data) => {
     if (data) callback && callback(data);
   });
 };
 // 策略管理-获取版本参数下拉
 export const get_strategy_parameter_select = (params: any, callback: any) => {
-  return http.request("/strategyParameter/getList", "get", params).then((data) => {
+  return http.request("/api/strategyParameter/getList", "get", params).then((data) => {
     if (data) callback && callback(data);
   });
 };
@@ -229,68 +229,68 @@ export const get_strategy_parameter_select = (params: any, callback: any) => {
 // 交易所
 // 交易所管理-交易所列表
 export const get_exchange_list = (params: any, callback: any) => {
-  return http.request("/exchange/getPage", "get", params).then((data) => {
+  return http.request("/api/exchange/getPage", "get", params).then((data) => {
     if (data) callback && callback(data);
   });
 };
 // 交易所管理-交易所列表下拉
 export const get_exchange_list_all = (params: any, callback: any) => {
-  return http.request("/exchange/getList", "get", params).then((data) => {
+  return http.request("/api/exchange/getList", "get", params).then((data) => {
     if (data) callback && callback(data);
   });
 };
 // 交易所管理-添加交易所
 export const add_exchange = (params: any, callback: any) => {
-  return http.request("/exchange/save", "post", params).then((data) => {
+  return http.request("/api/exchange/save", "post", params).then((data) => {
     if (data) callback && callback(data);
   });
 };
 // 交易所管理-修改交易所
 export const update_exchange = (params: any, callback: any) => {
-  return http.request("/exchange/update", "post", params).then((data) => {
+  return http.request("/api/exchange/update", "post", params).then((data) => {
     if (data) callback && callback(data);
   });
 };
 // 交易所管理-设置交易所状态
 export const set_exchange_status = (params: any, callback: any) => {
-  return http.request("/exchange/setStatus", "post", params).then((data) => {
+  return http.request("/api/exchange/setStatus", "post", params).then((data) => {
     if (data) callback && callback(data);
   });
 };
 // 交易所管理-删除交易所
 export const delete_exchange = (params: any, callback: any) => {
-  return http.request("/exchange/delete", "post", params).then((data) => {
+  return http.request("/api/exchange/delete", "post", params).then((data) => {
     if (data) callback && callback(data);
   });
 };
 
 // ApiKey管理-Apikey列表
 export const get_apikey_list = (params: any, callback: any) => {
-  return http.request("/userProof/getPage", "get", params).then((data) => {
+  return http.request("/api/userProof/getPage", "get", params).then((data) => {
     if (data) callback && callback(data);
   });
 };
 // ApiKey管理-Apikey下拉
 export const get_apikey_select = (params: any, callback: any) => {
-  return http.request("/userProof/getSelect", "get", params).then((data) => {
+  return http.request("/api/userProof/getSelect", "get", params).then((data) => {
     if (data) callback && callback(data);
   });
 };
 // ApiKey管理-添加Apikey
 export const add_apikey = (params: any, callback: any) => {
-  return http.request("/userProof/save", "post", params).then((data) => {
+  return http.request("/api/userProof/save", "post", params).then((data) => {
     if (data) callback && callback(data);
   });
 };
 // ApiKey管理-修改Apikey
 export const update_apikey = (params: any, callback: any) => {
-  return http.request("/userProof/update", "post", params).then((data) => {
+  return http.request("/api/userProof/update", "post", params).then((data) => {
     if (data) callback && callback(data);
   });
 };
 // ApiKey管理-删除Apikey
 export const delete_apikey = (params: any, callback: any) => {
-  return http.request("/userProof/delete", "post", params).then((data) => {
+  return http.request("/api/userProof/delete", "post", params).then((data) => {
     if (data) callback && callback(data);
   });
 };
@@ -298,124 +298,132 @@ export const delete_apikey = (params: any, callback: any) => {
 // 服务器
 // 服务器管理-服务器列表
 export const get_server_list = (params: any, callback: any) => {
-  return http.request("/userServer/getPage", "get", params).then((data) => {
+  return http.request("/api/userServer/getPage", "get", params).then((data) => {
     if (data) callback && callback(data);
   });
 };
 // 服务器管理-服务器列表下拉
 export const get_server_select = (params: any, callback: any) => {
-  return http.request("/userServer/getSelect", "get", params).then((data) => {
+  return http.request("/api/userServer/getSelect", "get", params).then((data) => {
     if (data) callback && callback(data);
   });
 };
 // 服务器管理-添加服务器
 export const add_server = (params: any, callback: any) => {
-  return http.request("/userServer/save", "post", params).then((data) => {
+  return http.request("/api/userServer/save", "post", params).then((data) => {
     if (data) callback && callback(data);
   });
 };
 // 服务器管理-编辑服务器
 export const update_server = (params: any, callback: any) => {
-  return http.request("/userServer/update", "post", params).then((data) => {
+  return http.request("/api/userServer/update", "post", params).then((data) => {
     if (data) callback && callback(data);
   });
 };
 // 服务器管理-测试连接
 export const test_connect_server = (params: any, callback: any) => {
-  return http.request("/userServer/testConnect", "post", params).then((data) => {
+  return http.request("/api/userServer/testConnect", "post", params).then((data) => {
     if (data) callback && callback(data);
   });
 };
 // 服务器管理-执行指令
 export const run_execut_server = (params: any, callback: any) => {
-  return http.request("/userServer/execute", "post", params).then((data) => {
+  return http.request("/api/userServer/execute", "post", params).then((data) => {
     if (data) callback && callback(data);
   });
 };
 // 服务器管理-删除服务器
 export const delete_server = (params: any, callback: any) => {
-  return http.request("/userServer/delete", "post", params).then((data) => {
+  return http.request("/api/userServer/delete", "post", params).then((data) => {
     if (data) callback && callback(data);
   });
 };
 
 // PEM管理-pem列表
 export const get_pem_list = (params: any, callback: any) => {
-  return http.request("/serverAuth/getPage", "get", params).then((data) => {
+  return http.request("/api/serverAuth/getPage", "get", params).then((data) => {
     if (data) callback && callback(data);
   });
 };
 // PEM管理-pem列表下拉
 export const get_pem_list_all = (params: any, callback: any) => {
-  return http.request("/serverAuth/getSelect", "get", params).then((data) => {
+  return http.request("/api/serverAuth/getSelect", "get", params).then((data) => {
     if (data) callback && callback(data);
   });
 };
 // PEM管理-添加pem
 export const add_pem = (params: any, callback: any) => {
-  return http.request("/serverAuth/save", "post", params).then((data) => {
+  return http.request("/api/serverAuth/save", "post", params).then((data) => {
     if (data) callback && callback(data);
   });
 };
 // PEM管理-修改pem
 export const update_pem = (params: any, callback: any) => {
-  return http.request("/serverAuth/update", "post", params).then((data) => {
+  return http.request("/api/serverAuth/update", "post", params).then((data) => {
     if (data) callback && callback(data);
   });
 };
 // PEM管理-删除pem
 export const delete_pem = (params: any, callback: any) => {
-  return http.request("/serverAuth/delete", "post", params).then((data) => {
+  return http.request("/api/serverAuth/delete", "post", params).then((data) => {
     if (data) callback && callback(data);
   });
 };
 
 // 指令管理-指令列表
 export const get_instruct_list = (params: any, callback: any) => {
-  return http.request("/serverInstruct/getPage", "get", params).then((data) => {
+  return http.request("/api/serverInstruct/getPage", "get", params).then((data) => {
     if (data) callback && callback(data);
   });
 };
 // 指令管理-指令列表下拉
 export const get_instruct_list_all = (params: any, callback: any) => {
-  return http.request("/serverInstruct/getList", "get", params).then((data) => {
+  return http.request("/api/serverInstruct/getList", "get", params).then((data) => {
     if (data) callback && callback(data);
   });
 };
 // 指令管理-添加指令
 export const add_instruct = (params: any, callback: any) => {
-  return http.request("/serverInstruct/save", "post", params).then((data) => {
+  return http.request("/api/serverInstruct/save", "post", params).then((data) => {
     if (data) callback && callback(data);
   });
 };
 // 指令管理-编辑指令
 export const update_instruct = (params: any, callback: any) => {
-  return http.request("/serverInstruct/update", "post", params).then((data) => {
+  return http.request("/api/serverInstruct/update", "post", params).then((data) => {
     if (data) callback && callback(data);
   });
 };
 // 指令管理-删除指令
 export const delete_instruct = (params: any, callback: any) => {
-  return http.request("/serverInstruct/delete", "post", params).then((data) => {
+  return http.request("/api/serverInstruct/delete", "post", params).then((data) => {
     if (data) callback && callback(data);
   });
 };
 
 // 指令记录-记录列表
 export const get_instruct_log_list = (params: any, callback: any) => {
-  return http.request("/instruct-log/getPage", "get", params).then((data) => {
+  return http.request("/api/instruct-log/getPage", "get", params).then((data) => {
     if (data) callback && callback(data);
   });
 };
 // 指令记录-指令执行结果
 export const get_instruct_log_result = (params: any, callback: any) => {
-  return http.request("/instruct-log/getResult", "get", params).then((data) => {
+  return http.request("/api/instruct-log/getResult", "get", params).then((data) => {
     if (data) callback && callback(data);
   });
 };
 // 指令记录-刪除记录
 export const delete_instruct_log = (params: any, callback: any) => {
-  return http.request("/instruct-log/delLog", "post", params).then((data) => {
+  return http.request("/api/instruct-log/delLog", "post", params).then((data) => {
+    if (data) callback && callback(data);
+  });
+};
+
+// 情报中心
+// 情报中心-波动率指标
+export const get_indicator = (params: any, callback: any) => {
+  return http.request("/ia/get_indicator", "get", params).then((data) => {
     if (data) callback && callback(data);
   });
 };
@@ -423,117 +431,117 @@ export const delete_instruct_log = (params: any, callback: any) => {
 // 系统管理
 // 用户管理-用户列表
 export const get_user_list = (params: any, callback: any) => {
-  return http.request("/user/getPage", "get", params).then((data) => {
+  return http.request("/api/user/getPage", "get", params).then((data) => {
     if (data) callback && callback(data);
   });
 };
 // 用户管理-用户下拉
 export const get_user_list_all = (params: any, callback: any) => {
-  return http.request("/user/getSelect", "get", params).then((data) => {
+  return http.request("/api/user/getSelect", "get", params).then((data) => {
     if (data) callback && callback(data);
   });
 };
 // 用户管理-添加用户
 export const add_user = (params: any, callback: any) => {
-  return http.request("/user/save", "post", params).then((data) => {
+  return http.request("/api/user/save", "post", params).then((data) => {
     if (data) callback && callback(data);
   });
 };
 // 用户管理-编辑用户
 export const update_user = (params: any, callback: any) => {
-  return http.request("/user/update", "post", params).then((data) => {
+  return http.request("/api/user/update", "post", params).then((data) => {
     if (data) callback && callback(data);
   });
 };
 // 用户管理-设置用户状态
 export const set_user_status = (params: any, callback: any) => {
-  return http.request("/user/setStatus", "post", params).then((data) => {
+  return http.request("/api/user/setStatus", "post", params).then((data) => {
     if (data) callback && callback(data);
   });
 };
 // 用户管理-删除用户
 export const delete_user = (params: any, callback: any) => {
-  return http.request("/user/delete", "post", params).then((data) => {
+  return http.request("/api/user/delete", "post", params).then((data) => {
     if (data) callback && callback(data);
   });
 };
 // 用户管理-用户重置密码
 export const reset_user_password = (params: any, callback: any) => {
-  return http.request("/user/resetPassword", "post", params).then((data) => {
+  return http.request("/api/user/resetPassword", "post", params).then((data) => {
     if (data) callback && callback(data);
   });
 };
 
 // 组织管理-组织列表
 export const get_group_list = (params: any, callback: any) => {
-  return http.request("/group/getPage", "get", params).then((data) => {
+  return http.request("/api/group/getPage", "get", params).then((data) => {
     if (data) callback && callback(data);
   });
 };
 // 组织管理-组织列表(下拉)
 export const get_group_select_list = (params: any, callback: any) => {
-  return http.request("/group/getSelect", "get", params).then((data) => {
+  return http.request("/api/group/getSelect", "get", params).then((data) => {
     if (data) callback && callback(data);
   });
 };
 // 组织管理-添加组织
 export const add_group = (params: any, callback: any) => {
-  return http.request("/group/save", "post", params).then((data) => {
+  return http.request("/api/group/save", "post", params).then((data) => {
     if (data) callback && callback(data);
   });
 };
 // 组织管理-编辑组织
 export const update_group = (params: any, callback: any) => {
-  return http.request("/group/update", "post", params).then((data) => {
+  return http.request("/api/group/update", "post", params).then((data) => {
     if (data) callback && callback(data);
   });
 };
 // 组织管理-删除组织
 export const delete_group = (params: any, callback: any) => {
-  return http.request("/group/delete", "post", params).then((data) => {
+  return http.request("/api/group/delete", "post", params).then((data) => {
     if (data) callback && callback(data);
   });
 };
 // 组织管理-设置组织状态
 export const set_group_status = (params: any, callback: any) => {
-  return http.request("/group/setStatus", "post", params).then((data) => {
+  return http.request("/api/group/setStatus", "post", params).then((data) => {
     if (data) callback && callback(data);
   });
 };
 // 组织管理-设置组织权限
 export const set_group_menu = (params: any, callback: any) => {
-  return http.request("/group/setGroupMenu", "post", params).then((data) => {
+  return http.request("/api/group/setGroupMenu", "post", params).then((data) => {
     if (data) callback && callback(data);
   });
 };
 
 // 页面管理-页面列表
 export const get_menu_list = (params: any, callback: any) => {
-  return http.request("/menu/getPage", "get", params).then((data) => {
+  return http.request("/api/menu/getPage", "get", params).then((data) => {
     if (data) callback && callback(data);
   });
 };
 // 页面管理-添加页面
 export const add_menu = (params: any, callback: any) => {
-  return http.request("/menu/save", "post", params).then((data) => {
+  return http.request("/api/menu/save", "post", params).then((data) => {
     if (data) callback && callback(data);
   });
 };
 // 页面管理-编辑页面
 export const update_menu = (params: any, callback: any) => {
-  return http.request("/menu/update", "post", params).then((data) => {
+  return http.request("/api/menu/update", "post", params).then((data) => {
     if (data) callback && callback(data);
   });
 };
 // 页面管理-删除页面
 export const delete_menu = (params: any, callback: any) => {
-  return http.request("/menu/delete", "post", params).then((data) => {
+  return http.request("/api/menu/delete", "post", params).then((data) => {
     if (data) callback && callback(data);
   });
 };
 // 页面管理-获取所有页面相关
 export const get_menu_all = (params: any, callback: any) => {
-  return http.request("/menu/getAll", "get", params).then((data) => {
+  return http.request("/api/menu/getAll", "get", params).then((data) => {
     if (data) callback && callback(data);
   });
 };

+ 18 - 0
src/components/PageLayout/Layout.vue

@@ -154,4 +154,22 @@ onUnmounted(() => {
     }
   }
 }
+
+@media (max-width: 750px) {
+  .layout-wp {
+    :deep(.layout-side-min) {
+      flex: 0 0 0px !important;
+      width: 0px !important;
+      .side-wp {
+        border-right: 0;
+        .menu_switch_wp {
+          left: 0;
+        }
+        .menu-wp {
+          display: none;
+        }
+      }
+    }
+  }
+}
 </style>

+ 6 - 0
src/router/routes.ts

@@ -64,6 +64,12 @@ const routes: Array<RouteRecordRaw> = [
         component: () => import("@/views/server/command_record/index.vue"),
         meta: { title: "指令记录", keepAlive: true },
       },
+      {
+        path: "/indicator/msv",
+        name: "IndicatorMsv",
+        component: () => import("@/views/indicator/msv/index.vue"),
+        meta: { title: "波动率指标", keepAlive: true },
+      },
       {
         path: "/system/user",
         name: "SystemUser",

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

@@ -29,6 +29,7 @@
         </template>
       </lay-card>
     </div>
+
     <div v-if="apiList?.includes('/robot/getRobotLog')">
       <lay-card class="custom-card">
         <template v-slot:title>
@@ -88,7 +89,6 @@ let balanceChart = shallowRef();
 
 // 获取机器人详情
 const getRobotDetail = () => {
-  pageConfig.loading = true;
   const params = { id: route.params.id };
   pageConfig.loading = true;
   get_robot_detail(params, (data: any) => {

+ 189 - 0
src/views/indicator/msv/index.vue

@@ -0,0 +1,189 @@
+<template>
+  <lay-card class="custom-card">
+    <template v-slot:title>
+      <span class="card-title">波动率指标</span>
+    </template>
+
+    <template v-slot:body>
+      <div class="custom-form-layout">
+        <lay-form class="form-wp" :model="pageParams" mode="inline" size="sm">
+          <lay-form-item label="币对" prop="symbol">
+            <lay-input v-model="pageParams.symbol" />
+          </lay-form-item>
+          <lay-form-item label="盘口" prop="exchange">
+            <lay-select v-model="pageParams.exchange" :show-search="true" allowClear>
+              <lay-select-option value="gate_usdt_swap" label="gate_usdt_swap" />
+              <lay-select-option value="bitget_usdt_swap" label="bitget_usdt_swap" />
+            </lay-select>
+          </lay-form-item>
+          <div class="form-button-wp">
+            <lay-button @click="getMsvData()">查询</lay-button>
+          </div>
+        </lay-form>
+      </div>
+      <div>
+        <lay-loading :loading="pageConfig.loading">
+          <div class="chart" ref="chartRef"></div>
+        </lay-loading>
+      </div>
+    </template>
+  </lay-card>
+</template>
+
+<script lang="ts" setup name="IndicatorMsv">
+import { ref, reactive, onUnmounted, shallowRef } from "vue";
+import * as echarts from "echarts";
+import dayjs from "dayjs";
+import { get_indicator } from "@/api";
+
+const chartRef = ref();
+
+interface PageConfig {
+  loading: boolean;
+}
+
+interface FormItem {
+  symbol?: String;
+  exchange?: String;
+}
+
+let pageConfig: PageConfig = reactive({
+  loading: false,
+});
+
+const pageParams: FormItem = reactive({ symbol: "BTC_USDT", exchange: "gate_usdt_swap" });
+
+let msvChart = shallowRef();
+
+const getMsvData = () => {
+  const params = { symbol: pageParams.symbol?.toUpperCase(), exchange: pageParams.exchange };
+  pageConfig.loading = true;
+  get_indicator(params, (data: any) => {
+    pageConfig.loading = false;
+    if (data.code == 200) {
+      initChart(data.data);
+    }
+  });
+};
+getMsvData();
+
+const initChart = (data: any) => {
+  msvChart.value = echarts.init(chartRef.value);
+
+  window.removeEventListener("resize", () => {
+    msvChart.value.resize();
+  });
+  window.addEventListener("resize", () => {
+    msvChart.value.resize();
+  });
+
+  const xData = data.x;
+  const yData = data.y;
+  const chartOption = {
+    title: {
+      text: `${pageParams.exchange} ${pageParams.symbol?.toUpperCase()} 4小时波动率指标`,
+    },
+    grid: {
+      top: "80px",
+      left: "60px",
+      right: "40px",
+      bottom: "100px",
+    },
+    tooltip: {
+      trigger: "axis",
+      axisPointer: {
+        type: "cross",
+        lineStyle: {
+          type: "dashed",
+          width: 1,
+        },
+      },
+      formatter: (value: any) => {
+        let time = dayjs(value[0].name * 1).format("YYYY-MM-DD HH:mm:ss.SSS");
+        let price = value[0].value;
+        return `时间:${time}<br/>波动率:${price}%`;
+      },
+    },
+    dataZoom: [
+      {
+        type: "inside",
+        start: 0,
+        end: 100,
+      },
+      {
+        start: 0,
+        end: 100,
+      },
+    ],
+    xAxis: {
+      type: "category",
+      boundaryGap: false,
+      data: xData,
+      show: true,
+      axisLabel: {
+        formatter: (value: any) => {
+          return dayjs(value * 1).format("MM-DD HH:mm:ss");
+        },
+      },
+    },
+    yAxis: {
+      type: "value",
+      boundaryGap: [0, "100%"],
+    },
+    series: [
+      {
+        name: "价格",
+        type: "line",
+        symbol: "none",
+        sampling: "lttb",
+        itemStyle: {
+          color: "rgb(55, 162, 255)",
+        },
+        areaStyle: {
+          color: new echarts.graphic.LinearGradient(0, 0, 0, 1, [
+            {
+              offset: 0,
+              color: "rgb(55, 162, 255)",
+            },
+            {
+              offset: 1,
+              color: "rgb(55, 162, 255)",
+            },
+          ]),
+        },
+        data: yData,
+      },
+    ],
+  };
+  msvChart.value.setOption(chartOption);
+};
+
+onUnmounted(() => {
+  window.removeEventListener("resize", msvChart.value.resize());
+});
+</script>
+
+<style lang="scss" scoped>
+.custom-card {
+  min-width: auto;
+}
+.chart {
+  padding-top: 20px;
+  min-height: 500px;
+}
+.robot-info-header {
+  background-color: white;
+  padding: 16px 24px;
+  margin-bottom: 20px;
+  .robot-name {
+    font-size: 14px;
+    font-weight: bold;
+  }
+  .robot-status {
+    span {
+      font-size: 12px;
+      padding-left: 4px;
+    }
+  }
+}
+</style>

+ 7 - 9
src/views/personal/password.vue

@@ -51,14 +51,12 @@ const rules = ref({
   newPassword: { type: "string", min: 6, max: 20, message: "新密码长度为6-20位" },
   confirmPassword: {
     type: "string",
-    asyncValidator: (_rule: any, value: any) => {
-      return new Promise((resolve, reject) => {
-        if (passwordParams.value.newPassword === value) {
-          resolve(true);
-        } else {
-          reject("两次输入的密码不一致");
-        }
-      });
+    asyncValidator: (_rule: any, value: any, callback: any) => {
+      if (passwordParams.value.newPassword === value) {
+        callback();
+      } else {
+        callback(new Error(`两次输入的密码不一致`));
+      }
     },
   },
 });
@@ -110,7 +108,7 @@ const handleSubmit = () => {
 
 <style lang="scss" scoped>
 .custom-card {
-  min-width: auto;
+  min-width: 256px;
 }
 .password-form-wp {
   margin: 0 auto;