10.10综合交易所原始源码-管理后台
1
admin
2026-01-06 089bf5d2378b3c4a61d795b2a92bede2c193b771
src/views/modules/robot/robot-buy-add-or-update.vue
New file
@@ -0,0 +1,348 @@
<template>
  <el-dialog
    :title="dataForm.add ? '新增机器人' : '修改机器人'"
    :close-on-click-modal="false"
    :visible.sync="visible"
    width='800px'>
    <el-form :model="dataForm" :rules="dataRule" ref="dataForm" @keyup.enter.native="dataFormSubmit()" label-width="120px">
      <el-form-item label="交易对" label-width="120px" style="background-color: white;" prop="symbol">
        <el-select v-model="dataForm.symbol" placeholder="请选择">
            <el-option label="NEEQ/USD" value="NEEQ/USD"></el-option>
            <el-option label="BTC/USDT" value="BTC/USDT"></el-option>
          </el-select>
      </el-form-item>
      <el-form-item label="机器人ID" label-width="120px" prop="uuid">
        <el-input v-model="dataForm.uuid" placeholder=""></el-input>
      </el-form-item>
      <el-row>
        <el-col :span="8">
          <el-form-item label="机器人账号" prop="username">
            <el-input v-model="dataForm.username" placeholder="" :disabled="!dataForm.add"></el-input>
          </el-form-item>
        </el-col>
        <el-col :span="8">
          <el-form-item label="机器人密码" prop="password">
            <el-input v-model="dataForm.password" placeholder="" :disabled="!dataForm.add"></el-input>
          </el-form-item>
        </el-col>
        <el-col :span="8">
          <el-form-item label="机器人资金" prop="money">
            <el-input v-model="dataForm.money" placeholder=""></el-input>
          </el-form-item>
        </el-col>
      </el-row>
      <el-form-item label="机器人状态"
                    size="mini"
                    label-width="120px" prop="runningStatus">
        <el-radio-group v-model="dataForm.runningStatus">
          <el-radio :label="1">启动</el-radio>
          <el-radio :label="0">停止</el-radio>
        </el-radio-group>
      </el-form-item>
      <el-form-item label="最低交易量" label-width="120px" prop="minmuanAmount">
        <el-input v-model="dataForm.minmuanAmount" placeholder=""></el-input>
      </el-form-item>
      <el-row>
        <el-col :span="8">
          <el-form-item label="交易量随机因子" prop="random1">
          <el-input v-model="dataForm.random1" placeholder=""></el-input>
        </el-form-item>
        </el-col>
        <el-col :span="8">
          <el-form-item label="交易量随机因子" prop="random2">
          <el-input v-model="dataForm.random2" placeholder=""></el-input>
        </el-form-item>
        </el-col>
        <el-col :span="8">
          <el-form-item label="交易量随机因子" prop="random3">
          <el-input v-model="dataForm.random3" placeholder=""></el-input>
        </el-form-item>
        </el-col>
      </el-row>
      <el-row>
        <el-col :span="8">
          <el-form-item label="交易量随机因子" prop="random4">
          <el-input v-model="dataForm.random4" placeholder=""></el-input>
        </el-form-item>
        </el-col>
        <el-col :span="8">
          <el-form-item label="交易量随机因子" prop="random5">
          <el-input v-model="dataForm.random5" placeholder=""></el-input>
        </el-form-item>
        </el-col>
        <el-col :span="8">
          <el-form-item label="交易量随机因子" prop="random6">
          <el-input v-model="dataForm.random6" placeholder=""></el-input>
        </el-form-item>
        </el-col>
      </el-row>
      <el-form-item label="价格精度要求" prop="priceDecimals">
        <el-input v-model="dataForm.priceDecimals" placeholder=""></el-input>
      </el-form-item>
      <el-form-item label="数量精度要求" prop="numDecimals">
        <el-input v-model="dataForm.numDecimals" placeholder=""></el-input>
      </el-form-item>
      <el-form-item label="买卖盘最高差价" prop="maxumPriceDiff">
        <el-input v-model="dataForm.maxumPriceDiff" placeholder=""></el-input>
      </el-form-item>
      <el-row>
        <el-col :span="12">
          <el-form-item label="买单挂单数量" prop="buyNum">
            <el-input v-model="dataForm.buyNum" placeholder=""></el-input>
          </el-form-item>
        </el-col>
        <el-col :span="12">
          <el-form-item label="卖单挂单数量" prop="sellNum">
            <el-input v-model="dataForm.sellNum" placeholder=""></el-input>
          </el-form-item>
        </el-col>
      </el-row>
      <el-form-item label="价格变化步长(%)" prop="step">
        <el-input v-model="dataForm.step" placeholder=""></el-input>
      </el-form-item>
      <el-row>
        <el-col :span="12">
          <el-form-item label="最大下单间隔(秒)" prop="maxmunInterval">
            <el-input v-model="dataForm.maxmunInterval" placeholder=""></el-input>
          </el-form-item>
        </el-col>
        <el-col :span="12">
          <el-form-item label="最小下单间隔(秒)" prop="minmunInterval">
            <el-input v-model="dataForm.minmunInterval" placeholder=""></el-input>
          </el-form-item>
        </el-col>
      </el-row>
      <el-row>
        <el-col :span="12">
          <el-form-item label="最大下单数量(手)" prop="maxmunNum">
            <el-input v-model="dataForm.maxmunNum" placeholder=""></el-input>
          </el-form-item>
        </el-col>
        <el-col :span="12">
          <el-form-item label="最小下单数量(手)" prop="minmunNum">
            <el-input v-model="dataForm.minmunNum" placeholder=""></el-input>
          </el-form-item>
        </el-col>
      </el-row>
      <el-row>
        <el-col :span="12">
          <el-form-item label="高频量比" prop="highFrequency">
            <el-input v-model="dataForm.highFrequency" placeholder=""></el-input>
          </el-form-item>
        </el-col>
        <el-col :span="12">
          <el-form-item label="低频量比" prop="lowFrequency">
            <el-input v-model="dataForm.lowFrequency" placeholder=""></el-input>
          </el-form-item>
        </el-col>
      </el-row>
      <el-row>
        <el-col :span="8">
          <el-form-item label="涨幅权重" prop="weight">
            <el-input v-model="dataForm.weight" placeholder=""></el-input>
          </el-form-item>
        </el-col>
        <el-col :span="8">
          <el-form-item label="大盘增长幅度(%)" prop="marketIncrease">
            <el-input v-model="dataForm.marketIncrease" placeholder=""></el-input>
          </el-form-item>
        </el-col>
        <el-col :span="8">
          <el-form-item label="大盘" prop="followMarket">
            <el-select v-model="dataForm.followMarket" placeholder="请选择">
                <el-option label="道琼斯" value="道琼斯"></el-option>
                <el-option label="纳斯达克" value="纳斯达克"></el-option>
                <el-option label="标普500" value="标普500"></el-option>
                <el-option label="上证指数" value="上证指数"></el-option>
                <el-option label="深证指数" value="深证指数"></el-option>
                <el-option label="恒生指数" value="恒生指数"></el-option>
                <el-option label="国企指数" value="国企指数"></el-option>
              </el-select>
          </el-form-item>
        </el-col>
      </el-row>
    </el-form>
    <span slot="footer" class="dialog-footer">
      <el-button @click="visible = false">取消</el-button>
      <el-button type="primary" @click="dataFormSubmit()">确定</el-button>
    </span>
  </el-dialog>
</template>
<script>
  import { treeDataTranslate } from '@/utils'
  import { Debounce } from '@/utils/debounce'
  export default {
    data () {
      return {
        visible: false,
        menuList: [],
        menuListTreeProps: {
          label: 'name',
          children: 'children'
        },
        dataForm: {
          id: 0,
          roleName: '',
          remark: ''
        },
        dataRule: {
          symbol:[{ required: true, message: '不能为空', trigger: 'blur' },],
          uuid:[{ required: true, message: '不能为空', trigger: 'blur' },],
          username:[{ required: true, message: '不能为空', trigger: 'blur' },],
          password:[{ required: true, message: '不能为空', trigger: 'blur' },],
          money:[{ required: true, message: '不能为空', trigger: 'blur' },],
          minmuanAmount:[{ required: true, message: '不能为空', trigger: 'blur' },],
          random1:[{ required: true, message: '不能为空', trigger: 'blur' },],
          random2:[{ required: true, message: '不能为空', trigger: 'blur' },],
          random3:[{ required: true, message: '不能为空', trigger: 'blur' },],
          random4:[{ required: true, message: '不能为空', trigger: 'blur' },],
          random5:[{ required: true, message: '不能为空', trigger: 'blur' },],
          random6:[{ required: true, message: '不能为空', trigger: 'blur' },],
          priceDecimals:[{ required: true, message: '不能为空', trigger: 'blur' },],
          numDecimals:[{ required: true, message: '不能为空', trigger: 'blur' },],
          maxumPriceDiff:[{ required: true, message: '不能为空', trigger: 'blur' },],
          buyNum:[{ required: true, message: '不能为空', trigger: 'blur' },],
          sellNum:[{ required: true, message: '不能为空', trigger: 'blur' },],
          step:[{ required: true, message: '不能为空', trigger: 'blur' },],
          maxmunInterval:[{ required: true, message: '不能为空', trigger: 'blur' },],
          minmunInterval:[{ required: true, message: '不能为空', trigger: 'blur' },],
          maxmunNum:[{ required: true, message: '不能为空', trigger: 'blur' },],
          minmunNum:[{ required: true, message: '不能为空', trigger: 'blur' },],
          highFrequency:[{ required: true, message: '不能为空', trigger: 'blur' },],
          lowFrequency:[{ required: true, message: '不能为空', trigger: 'blur' },],
          weight:[{ required: true, message: '不能为空', trigger: 'blur' },],
          marketIncrease:[{ required: true, message: '不能为空', trigger: 'blur' },],
          runningStatus:[{ required: true, message: '不能为空', trigger: 'blur' },],
          followMarket:[{ required: true, message: '不能为空', trigger: 'blur' },],
        },
        tempKey: -666666 // 临时key, 用于解决tree半选中状态项不能传给后台接口问题. # 待优化
      }
    },
    methods: {
      init (row) {
        if(row==null){
          this.dataForm = {}
          this.dataForm.add = true;
        }else{
          this.dataForm = {...row} || {}
        }
        if(this.$refs['dataForm']){
          this.$refs['dataForm'].clearValidate();
        }
        this.visible = true
      },
      // 表单提交
      dataFormSubmit: Debounce(function () {
        this.$refs['dataForm'].validate((valid) => {
          if (valid) {
            // if(this.dataForm.add){
            //   delete this.dataForm.add
            //   this.$parent.AddData(this.dataForm);
            // }
            // this.$message({
            //     message: '操作成功',
            //     type: 'success',
            //     duration: 1500,
            //     onClose: () => {
            //       this.visible = false
            //       this.$emit('refreshDataList')
            //     }
            //   })
            //--------------------------------------------------------------------------
            this.$http({
              url: this.$http.adornUrl(`/etf/robot/save`),
              method: 'post',
              data: this.$http.adornData({
                'symbol': this.dataForm.symbol, //交易对
                'uuid': this.dataForm.uuid, //机器人ID
                'username': this.dataForm.username, //机器人账号
                'password': this.dataForm.password, //机器人密码
                'money': this.dataForm.money, //机器人资金
                'runningStatus': this.dataForm.runningStatus, //机器人状态
                'minmuanAmount': this.dataForm.minmuanAmount, //最低交易量
                'priceDecimals': this.dataForm.priceDecimals, //价格精度要求
                'numDecimals': this.dataForm.numDecimals, //数量精度要求
                'maxumPriceDiff': this.dataForm.maxumPriceDiff, //买卖盘最高差价
                'buyNum': this.dataForm.buyNum, //买单挂单数量
                'sellNum': this.dataForm.sellNum, //卖单挂单数量
                'step': this.dataForm.step, //价格变化步长(%)
                'maxmunInterval': this.dataForm.maxmunInterval, //最大下单间隔(秒)
                'minmunInterval': this.dataForm.minmunInterval, //最小下单间隔(秒)
                'maxmunNum': this.dataForm.maxmunNum, //最大下单数量(手)
                'minmunNum': this.dataForm.minmunNum, //最小下单数量(手)
                'highFrequency': this.dataForm.highFrequency, //高频量比
                'lowFrequency': this.dataForm.lowFrequency, //低频量比
                'weight': this.dataForm.weight, //涨幅权重
                'marketIncrease': this.dataForm.marketIncrease, //大盘增长幅度(%)
                'followMarket':this.dataForm.followMarket,
                'random1':this.dataForm.random1,
                'random2':this.dataForm.random2,
                'random3':this.dataForm.random3,
                'random4':this.dataForm.random4,
                'random5':this.dataForm.random5,
                'random6':this.dataForm.random6,
              })
            }).then(({data}) => {
              if(data.code == 0){
                this.$message({
                  message: '操作成功',
                  type: 'success',
                  duration: 1500,
                  onClose: () => {
                    this.visible = false
                    this.$emit('refreshDataList')
                  }
                })
              }else{
                this.$message({
                  message: data.msg,
                  type: 'error',
                  duration: 1500,
                  onClose: () => {
                  }
                })
              }
            })
          }
        })
      })
    }
  }
</script>
<style>
  .customWidth{
      width:700px;
  }
</style>