This commit is contained in:
2025-03-13 10:02:50 +08:00
parent 06b3771f66
commit 63a5dfbdf3
2 changed files with 85 additions and 26 deletions

View File

@ -107,6 +107,21 @@
</el-table-column>
<el-table-column label="操作" align="center" class-name="small-padding fixed-width">
<template slot-scope="scope">
<el-popconfirm
class="delete-popconfirm"
title="确认要复制吗?"
confirm-button-text="复制"
@confirm="handleCopy(scope.row)"
>
<el-button
slot="reference"
v-permisaction="['admin:lineOrderTemplateLogs:copy']"
size="mini"
type="text"
icon="el-icon-document-copy"
>复制
</el-button>
</el-popconfirm>
<el-popconfirm
class="delete-popconfirm"
title="确认要修改吗?"
@ -678,6 +693,9 @@ export default {
percenter: undefined,
symbolGroups: [],
inRules: {
price: [{ required: true, message: '请输入下单百分比不能为空', trigger: 'blur' },
{ validator: this.validatePercentage, trigger: 'blur' }
],
profit: [{ required: true, message: '请输入止盈百分比', trigger: 'blur' },
{ validator: this.validateProfit, trigger: 'blur' }],
reduce_price: [
@ -767,6 +785,13 @@ export default {
})
},
methods: {
validatePercentage(rule, value, callback) {
if (value <= 0 || value === undefined || value === null || value === '') {
callback(new Error('百分比必须大于0'))
} else {
callback()
}
},
validateExtTakeProfitNumRatio(rule, value, callback) {
if (value === 0 || value === undefined || value === null || value === '') {
callback(new Error('止盈数量百分比必须大于0'))
@ -850,9 +875,9 @@ export default {
callback(new Error('百分比不能小于 0'))
}
if (index === 0 && item.priceRatio <= this.inForm.reduce_price) {
if (index === 0 && Number(item.priceRatio) <= Number(this.inForm.reduce_price)) {
callback(new Error('下跌百分比不能小于上一节点'))
} else if (index > 0 && item.priceRatio <= this.inForm.ext[index - 1].priceRatio) {
} else if (index > 0 && Number(item.priceRatio) <= Number(this.inForm.ext[index - 1].priceRatio)) {
callback(new Error('下跌百分比不能小于上一节点'))
} else {
callback()
@ -1117,6 +1142,28 @@ export default {
this.single = selection.length !== 1
this.multiple = !selection.length
},
handleCopy(row) {
this.reset()
this.ext = []
const id =
row.id || this.ids
getLineOrderTemplateLogs(id).then(response => {
this.form = response.data
const x = JSON.parse(response.data.params)
this.inForm = { ...x, api_id: x.api_id.split(','), symbol_group_id: x.symbol_group_id ? Number(x.symbol_group_id) : undefined }
// this.getSymbol(undefined, x.symbol_type, x.exchange_type)
this.onchangePattern(false)
this.getListLineApiUser()
this.form.type === 2 && this.getSymbolGroup(this.inForm.symbol_type)
this.form.type === 1 && this.onCalculate()
// 获取交易对用于计算
this.getSymbol(this.inForm.symbol)
this.form.id = undefined
this.open = true
this.title = '添加委托下单模板'
this.isEdit = false
})
},
/** 修改按钮操作 */
handleUpdate(row) {
this.reset()
@ -1141,6 +1188,7 @@ export default {
},
/** 提交按钮 */
submitForm: function() {
console.log('this.form', this.form)
console.log('this.inForm', this.inForm)
Promise.all([
this.$refs['inForm'].validate(), // 验证第一个表单
@ -1149,32 +1197,33 @@ export default {
.then((formValid) => {
if (formValid.every(valid => valid)) {
this.inForm.price = this.inForm.price ? String(this.inForm.price) : ''
const params = JSON.stringify({
...this.inForm,
reduce_price: this.inForm.reduce_price || 0,
reduce_num: this.inForm.reduce_num || 0,
reduce_take_profit: this.inForm.reduce_take_profit || 0,
reduce_stop_price: this.inForm.reduce_stop_price || 0,
symbol_group_id: String(this.inForm.symbol_group_id),
profit_num_ratio: this.inForm.profit_num_ratio || 100,
profit_tp_tp_price_ratio: this.inForm.profit_tp_tp_price_ratio || 0,
profit_tp_sl_price_ratio: this.inForm.profit_tp_sl_price_ratio || 0,
api_id: this.inForm.api_id.toString(),
hedge_trigger_percent: Number(this.inForm.hedge_trigger_percent),
hedge_trigger_percent_max: Number(this.inForm.hedge_trigger_percent_max),
ext: Array.isArray(this.inForm.ext)
? this.inForm.ext.map(item => ({
...item,
stopLossRatio: item.stopLossRatio || 0,
takeProfitNumRatio: item.takeProfitNumRatio || 0,
tpTpPriceRatio: item.tpTpPriceRatio || 0,
tpSlPriceRatio: item.tpSlPriceRatio || 0
}))
: []
})
if (this.form.id !== undefined) {
this.$refs['inForm'].validate(valided => {
if (!valided) return false
const params = JSON.stringify({
...this.inForm,
reduce_price: this.inForm.reduce_price || 0,
reduce_num: this.inForm.reduce_num || 0,
reduce_take_profit: this.inForm.reduce_take_profit || 0,
reduce_stop_price: this.inForm.reduce_stop_price || 0,
symbol_group_id: String(this.inForm.symbol_group_id),
profit_num_ratio: this.inForm.profit_num_ratio || 100,
profit_tp_tp_price_ratio: this.inForm.profit_tp_tp_price_ratio || 0,
profit_tp_sl_price_ratio: this.inForm.profit_tp_sl_price_ratio || 0,
api_id: this.inForm.api_id.toString(),
hedge_trigger_percent: Number(this.inForm.hedge_trigger_percent),
hedge_trigger_percent_max: Number(this.inForm.hedge_trigger_percent_max),
ext: Array.isArray(this.inForm.ext)
? this.inForm.ext.map(item => ({
...item,
stopLossRatio: item.stopLossRatio || 0,
takeProfitNumRatio: item.takeProfitNumRatio || 0,
tpTpPriceRatio: item.tpTpPriceRatio || 0,
tpSlPriceRatio: item.tpSlPriceRatio || 0
}))
: []
})
updateLineOrderTemplateLogs({ ...this.form, params }).then(response => {
if (response.code === 200) {
@ -1187,7 +1236,7 @@ export default {
})
})
} else {
addLineOrderTemplateLogs({ ...this.inForm, symbol_group_id: String(this.inForm.symbol_group_id), api_id: this.inForm.api_id.toString() }).then(response => {
addLineOrderTemplateLogs({ ...this.form, params }).then(response => {
if (response.code === 200) {
this.msgSuccess(response.msg)
this.open = false

View File

@ -1368,6 +1368,9 @@ export default {
},
// 表单校验
rules: {
price: [{ required: true, message: '请输入下单百分比不能为空', trigger: 'blur' },
{ validator: this.validatePercentage, trigger: 'blur' }
],
profit: [{ required: true, message: '请输入止盈百分比', trigger: 'blur' }, { validator: this.validateProfit, trigger: 'blur' }],
reduce_price: [
{ required: true, message: '主单亏损减仓百分比不能为空', trigger: 'blur' },
@ -1984,6 +1987,13 @@ export default {
}
this.resetForm('form')
},
validatePercentage(rule, value, callback) {
if (value <= 0 || value === undefined || value === null || value === '') {
callback(new Error('百分比必须大于0'))
} else {
callback()
}
},
validateExtTakeProfitNumRatio(rule, value, callback) {
if (value === 0 || value === undefined || value === null || value === '') {
callback(new Error('止盈数量百分比必须大于0'))