| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251 |
- <template>
- <lay-layer :title="modelConfig.title" v-model="modelConfig.visible" area="auto" :btn="operator">
- <div class="width-800 custom-layer" style="padding: 20px">
- <lay-form :model="modelParams" ref="modelFormRef" required>
- <lay-row space="10">
- <lay-col md="12" sm="12" xs="24">
- <lay-form-item label="名称" prop="name">
- <lay-input v-model="modelParams.name" />
- </lay-form-item>
- </lay-col>
- <lay-col md="12" sm="12" xs="24">
- <lay-form-item label="初始金额" prop="startAmount">
- <lay-input v-model="modelParams.startAmount" />
- </lay-form-item>
- </lay-col>
- <lay-col md="12" sm="12" xs="24">
- <lay-form-item label="服务器" prop="serverId">
- <lay-select v-model="modelParams.serverId" :show-search="true">
- <lay-select-option v-for="item in serverList" :value="item.id" :label="item.value" />
- </lay-select>
- </lay-form-item>
- </lay-col>
- <lay-col md="12" sm="12" xs="24">
- <lay-form-item label="通讯端口" prop="callPort">
- <lay-input v-model="modelParams.callPort" />
- </lay-form-item>
- </lay-col>
- <lay-col md="12" sm="12" xs="24">
- <lay-form-item label="策略" prop="strategyId">
- <lay-select v-model="modelParams.strategyId" @change="strategyHandleChange">
- <lay-select-option v-for="item in strategyList" :value="item.id" :label="item.value" />
- </lay-select>
- </lay-form-item>
- </lay-col>
- <lay-col md="12" sm="12" xs="24">
- <lay-form-item label="策略版本" prop="strategyProgramId">
- <lay-select v-model="modelParams.strategyProgramId" @change="strategyProgramHandleChange">
- <lay-select-option v-for="item in strategyProgramList" :value="item.id" :label="item.value" />
- </lay-select>
- </lay-form-item>
- </lay-col>
- <div>
- <template v-for="item in strategyParameterList">
- <lay-col md="12" sm="12" xs="24">
- <lay-form-item :label="item.name" :prop="`robotConfigs.${item.code}`">
- <lay-input v-if="item.valType == 0" v-model="modelParams.robotConfigs[item.code]" />
- <lay-input type="number" v-if="item.valType == 1" v-model="modelParams.robotConfigs[item.code]" />
- <lay-switch v-if="item.valType == 2" v-model="modelParams.robotConfigs[item.code]" />
- <lay-select v-if="item.valType == 3" v-model="modelParams.robotConfigs[item.code]" :show-search="true">
- <lay-select-option v-for="items in item.contentVal.split(',')" :value="items" :label="items" />
- </lay-select>
- <lay-select v-if="item.valType == 5" v-model="modelParams.robotConfigs[item.code]" :options="apikeyList" :show-search="true" />
- </lay-form-item>
- </lay-col>
- </template>
- </div>
- </lay-row>
- </lay-form>
- </div>
- </lay-layer>
- </template>
- <script lang="ts" setup>
- import { ref, reactive, getCurrentInstance } from "vue";
- import { add_robot, update_robot, get_server_select, get_strategy_select, get_strategy_program_select, get_strategy_parameter_select, get_apikey_select } from "@/api";
- const { proxy }: any = getCurrentInstance();
- const modelFormRef = ref();
- interface ModelConfig {
- title: string;
- visible: boolean;
- isUpdate: boolean;
- loading: boolean;
- }
- interface ModelParams {
- id?: number;
- name?: string;
- serverId?: number;
- strategyId?: number;
- strategyProgramId?: number;
- startAmount?: number;
- callPort?: number;
- remark?: string;
- robotConfigs?: any;
- }
- let modelParams = ref<ModelParams>({});
- let modelConfig: ModelConfig = reactive({ title: "", visible: false, isUpdate: false, loading: false });
- let handleResult = reactive<{ resolve?: any; reject?: any }>({});
- let serverList = ref();
- let strategyList = ref();
- let strategyProgramList = ref();
- let strategyParameterList = ref();
- let apikeyList = ref();
- const show = async (params?: any) => {
- initData();
- get_server_list();
- get_strategy_list();
- get_apikey();
- modelConfig.visible = true;
- modelConfig.isUpdate = !!params;
- modelConfig.title = !!params ? "编辑机器人" : "添加机器人";
- if (modelConfig.isUpdate) {
- let robotConfigs: any = {};
- params.configList.map((item: any) => {
- if (item.valType == 2) {
- robotConfigs[item.code] = item.val == "true" ? true : false;
- } else if (item.valType == 5) {
- robotConfigs[item.code] = item.val ? parseInt(item.val) : undefined;
- } else {
- robotConfigs[item.code] = item.val;
- }
- });
- modelParams.value = { ...params, robotConfigs };
- strategyHandleChange(modelParams.value.strategyId);
- strategyProgramHandleChange(modelParams.value.strategyProgramId);
- } else {
- modelParams.value = { robotConfigs: {} };
- }
- return new Promise(async (resolve, reject) => {
- handleResult.resolve = resolve;
- handleResult.reject = reject;
- });
- };
- // 获取服务器列表
- const get_server_list = () => {
- const params = {};
- get_server_select(params, (data: any) => {
- serverList.value = data.data;
- });
- };
- // 获取策略列表
- const get_strategy_list = () => {
- const params = {};
- get_strategy_select(params, (data: any) => {
- strategyList.value = data.data;
- });
- };
- // 获取策略版本列表
- const get_strategy_program_list = (value: number) => {
- const params = { strategyId: value };
- get_strategy_program_select(params, (data: any) => {
- strategyProgramList.value = data.data;
- });
- };
- // 获取策略版本参数下拉
- const get_strategy_parameter = (value: number) => {
- const params = { programId: value };
- get_strategy_parameter_select(params, (data: any) => {
- strategyParameterList.value = data.data;
- let defaultValObj: any = {};
- strategyParameterList.value.map((item: any) => {
- if (item.valType == 2) {
- defaultValObj[item.code] = item.defaultVal == "true" ? true : false;
- } else if (item.valType == 5) {
- defaultValObj[item.code] = item.defaultVal ? parseInt(item.defaultVal) : undefined;
- } else {
- defaultValObj[item.code] = item.defaultVal;
- }
- });
- modelParams.value = { ...modelParams.value, robotConfigs: { ...defaultValObj, ...modelParams.value.robotConfigs } };
- });
- };
- // 获取APIKEY参数下拉
- const get_apikey = () => {
- const params = {};
- get_apikey_select(params, (data: any) => {
- apikeyList.value = data.data.map((item: any) => ({ label: item.value, value: item.id }));
- });
- };
- // 选择策略操作
- const strategyHandleChange = (e: any) => {
- get_strategy_program_list(e);
- };
- // 选择策略版本操作
- const strategyProgramHandleChange = (e: any) => {
- get_strategy_parameter(e);
- };
- const handleParams = (value: any) => {
- const params = {
- id: value.id,
- name: value.name,
- serverId: value.serverId,
- strategyId: value.strategyId,
- strategyProgramId: value.strategyProgramId,
- startAmount: value.startAmount,
- callPort: value.callPort,
- remark: value.remark,
- };
- const robotConfigs = strategyParameterList.value.map((item: any) => ({ name: item.name, code: item.code, val: value.robotConfigs[item.code], valType: item.valType }));
- return { ...params, robotConfigs };
- };
- const initData = () => {
- serverList.value = [];
- strategyList.value = [];
- strategyProgramList.value = [];
- strategyParameterList.value = [];
- apikeyList.value = [];
- };
- const operator = reactive([
- {
- text: "确认",
- callback: () => {
- modelFormRef.value.validate((isValidate: boolean) => {
- if (isValidate) {
- modelConfig.loading = true;
- const params = handleParams(modelParams.value);
- if (modelConfig.isUpdate) {
- update_robot(params, (data: any) => {
- modelConfig.loading = false;
- if (data.code == 200) {
- proxy.$message("编辑成功!");
- modelConfig.visible = false;
- handleResult.resolve(true);
- }
- });
- } else {
- add_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>
|