Ver código fonte

添加移交机器人

DESKTOP-NE65RNK\Citrus_limon 1 ano atrás
pai
commit
90e428700d

+ 12 - 0
src/api/index.ts

@@ -65,6 +65,12 @@ export const get_robot_logs  = (params: any, callback: any) => {
     if (data) callback && callback(data);
   });
 };
+// 机器人管理-移交机器人
+export const transfers_robot = (params: any, callback: any) => {
+  return http.request("/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) => {
@@ -395,6 +401,12 @@ export const get_user_list = (params: any, callback: any) => {
     if (data) callback && callback(data);
   });
 };
+// 用户管理-用户下拉
+export const get_user_list_all = (params: any, callback: any) => {
+  return http.request("/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) => {

+ 1 - 1
src/components/PageLayout/Header.vue

@@ -49,7 +49,7 @@ const handeLoginOut = () => {
 <style lang="scss" scoped>
 .header-wp {
   box-sizing: border-box;
-  height: 100%;
+  height: 64px;
   width: 100%;
   border-bottom: 1px solid rgba(0, 0, 0, 0.1);
   display: flex;

+ 5 - 2
src/utils/request.ts

@@ -15,10 +15,13 @@ const checkStatus = (response: any) => {
         window.sessionStorage.removeItem("_4L_TAG_LIST");
         window.sessionStorage.removeItem("_4L_API_LIST");
         window.sessionStorage.removeItem("_4L_MENU_COLLAPSE");
-        layer.msg(`${response.data.msg}`, { time: 1000, icon: 2 });
         router.push({ path: "/login" });
       }
-      layer.msg(`${response.data.msg}`, { time: 0, icon: 2, closeBtn: true });
+      if (response.data.code == 500) {
+        layer.msg(`${response.data.msg}`, { time: 0, icon: 2, closeBtn: true });
+      } else {
+        layer.msg(`${response.data.msg}`, { time: 1000, icon: 2 });
+      }
       return response.data;
     }
   }

+ 88 - 0
src/views/bot/manage/components/Transfers.vue

@@ -0,0 +1,88 @@
+<template>
+  <lay-layer :title="modelConfig.title" v-model="modelConfig.visible" area="auto" :btn="operator">
+    <div class="width-450 custom-layer" style="padding: 20px">
+      <lay-form :model="modelParams" ref="modelFormRef" required>
+        <lay-form-item label="移交用户" prop="userId">
+          <lay-select v-model="modelParams.userId">
+            <lay-select-option v-for="item in userList" :value="item.id" :label="item.value" />
+          </lay-select>
+        </lay-form-item>
+      </lay-form>
+    </div>
+  </lay-layer>
+</template>
+
+<script lang="ts" setup>
+import { ref, reactive, getCurrentInstance } from "vue";
+import { transfers_robot, get_user_list_all } from "@/api";
+
+const { proxy }: any = getCurrentInstance();
+
+const modelFormRef = ref();
+
+interface ModelConfig {
+  title: string;
+  visible: boolean;
+  isUpdate: boolean;
+  loading: boolean;
+}
+interface ModelParams {
+  userId?: string;
+  robotIds?: Array<string>;
+}
+
+let modelParams = ref<ModelParams>({});
+let modelConfig: ModelConfig = reactive({ title: "", visible: false, isUpdate: false, loading: false });
+
+let handleResult = reactive<{ resolve?: any; reject?: any }>({});
+
+let userList = ref();
+
+const show = async (params?: any) => {
+  get_user_list();
+  modelConfig.visible = true;
+  modelConfig.title = "移交机器人";
+  modelParams.value = { robotIds: params };
+  return new Promise(async (resolve, reject) => {
+    handleResult.resolve = resolve;
+    handleResult.reject = reject;
+  });
+};
+// 获取服务器列表
+const get_user_list = () => {
+  const params = {};
+  get_user_list_all(params, (data: any) => {
+    userList.value = data.data;
+  });
+};
+
+const operator = reactive([
+  {
+    text: "确认",
+    callback: () => {
+      modelFormRef.value.validate((isValidate: boolean) => {
+        if (isValidate) {
+          modelConfig.loading = true;
+          const params = modelParams.value;
+          transfers_robot(params, (data: any) => {
+            modelConfig.loading = false;
+            if (data.code == 200) {
+              proxy.$message("移交成功!");
+              modelConfig.visible = false;
+              handleResult.resolve(true);
+            }
+          });
+        }
+      });
+    },
+  },
+  {
+    text: "取消",
+    callback: () => {
+      modelConfig.visible = false;
+      handleResult.resolve(false);
+    },
+  },
+]);
+defineExpose({ show });
+</script>

+ 10 - 0
src/views/bot/manage/index.vue

@@ -4,6 +4,7 @@
       <span class="card-title">机器人管理</span>
     </template>
     <template v-slot:extra>
+      <lay-button class="card-button" v-if="apiList?.includes('/userServer/save')" @click="handleTransfersRobot(selectedKeys)">移交机器人</lay-button>
       <lay-button class="card-button" v-if="apiList?.includes('/userServer/save')" @click="handleCopyRobot(selectedKeys)">复制机器人</lay-button>
       <lay-button class="card-button" v-if="apiList?.includes('/userServer/save')" @click="handleUpdate(0)">添加</lay-button>
     </template>
@@ -94,11 +95,13 @@
   </lay-card>
   <Update ref="updateRef" />
   <Copy ref="copyRef" />
+  <Transfers ref="transfersRef" />
 </template>
 
 <script lang="ts" setup name="BotManage">
 import { ref, reactive, getCurrentInstance, onBeforeUnmount } from "vue";
 import Update from "./components/Update.vue";
+import Transfers from "./components/Transfers.vue";
 import Copy from "./components/Copy.vue";
 import TableButton from "@/components/TableButton.vue";
 import { timeConverts } from "@/utils/index";
@@ -117,6 +120,7 @@ const ROBOT_STATUS: any = reactive({
 const { proxy }: any = getCurrentInstance();
 const updateRef = ref();
 const copyRef = ref();
+const transfersRef = ref();
 
 const apiList = ref(window.sessionStorage.getItem("_4L_API_LIST"));
 
@@ -199,6 +203,12 @@ const handleShowInfo = (info: any) => {
     初始:<span class="primary-color">${info.startAmount || 0}</span> 现有:<span class="primary-color">${info.nowAmount || 0}</span>`;
 };
 
+const handleTransfersRobot = async (ids: any) => {
+  if (ids.length == 0) return proxy.$message(`请先选择要移交机器!`, 7);
+  const result = await transfersRef.value.show(ids);
+  if (result) getPageInfo();
+};
+
 const handleCopyRobot = async (ids: any) => {
   if (ids.length > 1 || ids.length == 0) return proxy.$message(`请勾选1个要复制的机器!`, 7);
   const result = await copyRef.value.show(ids[0]);

+ 2 - 2
src/views/server/manage/components/Update.vue

@@ -41,7 +41,7 @@
 
 <script lang="ts" setup>
 import { ref, reactive, getCurrentInstance } from "vue";
-import { OS_TYPE } from "@/utils/enum"; 
+import { OS_TYPE } from "@/utils/enum";
 import { add_server, update_server, get_pem_list_all } from "@/api";
 
 const { proxy }: any = getCurrentInstance();
@@ -79,7 +79,7 @@ const show = (type: number, params?: any) => {
   modelConfig.visible = true;
   modelConfig.isUpdate = !!params && type != 2;
   modelConfig.title = type == 1 ? "编辑服务器" : type == 2 ? "复制服务器" : "添加服务器";
-  modelParams.value = type != 0 ? { ...params } : { loginType: 0, osType: 0 };
+  modelParams.value = type != 0 ? { ...params } : { loginType: 0, osType: 0, portComplex: 22 };
   if (type == 2) delete modelParams.value.userServerId;
   return new Promise(async (resolve, reject) => {
     handleResult.resolve = resolve;

+ 3 - 3
src/views/server/manage/index.vue

@@ -13,8 +13,8 @@
     <template v-slot:body>
       <div class="custom-form-layout">
         <lay-form class="form-wp" :model="pageParams" mode="inline">
-          <lay-form-item label="名称" prop="name">
-            <lay-input v-model="pageParams.name" />
+          <lay-form-item label="名称" prop="title">
+            <lay-input v-model="pageParams.title" />
           </lay-form-item>
           <div class="form-button-wp">
             <lay-button @click="getPageInfo(true)">搜索</lay-button>
@@ -86,7 +86,7 @@ let pageConfig: PageConfig = reactive({
 interface FormItem {
   pageNum?: Number;
   pageSize?: Number;
-  name?: String;
+  title?: String;
 }
 const pageParams: FormItem = reactive({ pageNum: 1, pageSize: 10 });
 

+ 1 - 0
src/views/system/organization/index.vue

@@ -103,6 +103,7 @@ const handleUpdate = async (value?: any) => {
   const result = await updateRef.value.show(value);
   if (result) getPageInfo();
 };
+
 // 删除组织
 const handleDelete = async (value: any) => {
   let result = await proxy.$waitingConfirm("是否确认删除该组织?");