1
This commit is contained in:
@ -107,6 +107,21 @@
|
|||||||
</el-table-column>
|
</el-table-column>
|
||||||
<el-table-column label="操作" align="center" class-name="small-padding fixed-width">
|
<el-table-column label="操作" align="center" class-name="small-padding fixed-width">
|
||||||
<template slot-scope="scope">
|
<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
|
<el-popconfirm
|
||||||
class="delete-popconfirm"
|
class="delete-popconfirm"
|
||||||
title="确认要修改吗?"
|
title="确认要修改吗?"
|
||||||
@ -678,6 +693,9 @@ export default {
|
|||||||
percenter: undefined,
|
percenter: undefined,
|
||||||
symbolGroups: [],
|
symbolGroups: [],
|
||||||
inRules: {
|
inRules: {
|
||||||
|
price: [{ required: true, message: '请输入下单百分比不能为空', trigger: 'blur' },
|
||||||
|
{ validator: this.validatePercentage, trigger: 'blur' }
|
||||||
|
],
|
||||||
profit: [{ required: true, message: '请输入止盈百分比', trigger: 'blur' },
|
profit: [{ required: true, message: '请输入止盈百分比', trigger: 'blur' },
|
||||||
{ validator: this.validateProfit, trigger: 'blur' }],
|
{ validator: this.validateProfit, trigger: 'blur' }],
|
||||||
reduce_price: [
|
reduce_price: [
|
||||||
@ -767,6 +785,13 @@ export default {
|
|||||||
})
|
})
|
||||||
},
|
},
|
||||||
methods: {
|
methods: {
|
||||||
|
validatePercentage(rule, value, callback) {
|
||||||
|
if (value <= 0 || value === undefined || value === null || value === '') {
|
||||||
|
callback(new Error('百分比必须大于0'))
|
||||||
|
} else {
|
||||||
|
callback()
|
||||||
|
}
|
||||||
|
},
|
||||||
validateExtTakeProfitNumRatio(rule, value, callback) {
|
validateExtTakeProfitNumRatio(rule, value, callback) {
|
||||||
if (value === 0 || value === undefined || value === null || value === '') {
|
if (value === 0 || value === undefined || value === null || value === '') {
|
||||||
callback(new Error('止盈数量百分比必须大于0'))
|
callback(new Error('止盈数量百分比必须大于0'))
|
||||||
@ -850,9 +875,9 @@ export default {
|
|||||||
callback(new Error('百分比不能小于 0'))
|
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('下跌百分比不能小于上一节点'))
|
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('下跌百分比不能小于上一节点'))
|
callback(new Error('下跌百分比不能小于上一节点'))
|
||||||
} else {
|
} else {
|
||||||
callback()
|
callback()
|
||||||
@ -1117,6 +1142,28 @@ export default {
|
|||||||
this.single = selection.length !== 1
|
this.single = selection.length !== 1
|
||||||
this.multiple = !selection.length
|
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) {
|
handleUpdate(row) {
|
||||||
this.reset()
|
this.reset()
|
||||||
@ -1141,6 +1188,7 @@ export default {
|
|||||||
},
|
},
|
||||||
/** 提交按钮 */
|
/** 提交按钮 */
|
||||||
submitForm: function() {
|
submitForm: function() {
|
||||||
|
console.log('this.form', this.form)
|
||||||
console.log('this.inForm', this.inForm)
|
console.log('this.inForm', this.inForm)
|
||||||
Promise.all([
|
Promise.all([
|
||||||
this.$refs['inForm'].validate(), // 验证第一个表单
|
this.$refs['inForm'].validate(), // 验证第一个表单
|
||||||
@ -1149,32 +1197,33 @@ export default {
|
|||||||
.then((formValid) => {
|
.then((formValid) => {
|
||||||
if (formValid.every(valid => valid)) {
|
if (formValid.every(valid => valid)) {
|
||||||
this.inForm.price = this.inForm.price ? String(this.inForm.price) : ''
|
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) {
|
if (this.form.id !== undefined) {
|
||||||
this.$refs['inForm'].validate(valided => {
|
this.$refs['inForm'].validate(valided => {
|
||||||
if (!valided) return false
|
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 => {
|
updateLineOrderTemplateLogs({ ...this.form, params }).then(response => {
|
||||||
if (response.code === 200) {
|
if (response.code === 200) {
|
||||||
@ -1187,7 +1236,7 @@ export default {
|
|||||||
})
|
})
|
||||||
})
|
})
|
||||||
} else {
|
} 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) {
|
if (response.code === 200) {
|
||||||
this.msgSuccess(response.msg)
|
this.msgSuccess(response.msg)
|
||||||
this.open = false
|
this.open = false
|
||||||
|
|||||||
@ -1368,6 +1368,9 @@ export default {
|
|||||||
},
|
},
|
||||||
// 表单校验
|
// 表单校验
|
||||||
rules: {
|
rules: {
|
||||||
|
price: [{ required: true, message: '请输入下单百分比不能为空', trigger: 'blur' },
|
||||||
|
{ validator: this.validatePercentage, trigger: 'blur' }
|
||||||
|
],
|
||||||
profit: [{ required: true, message: '请输入止盈百分比', trigger: 'blur' }, { validator: this.validateProfit, trigger: 'blur' }],
|
profit: [{ required: true, message: '请输入止盈百分比', trigger: 'blur' }, { validator: this.validateProfit, trigger: 'blur' }],
|
||||||
reduce_price: [
|
reduce_price: [
|
||||||
{ required: true, message: '主单亏损减仓百分比不能为空', trigger: 'blur' },
|
{ required: true, message: '主单亏损减仓百分比不能为空', trigger: 'blur' },
|
||||||
@ -1984,6 +1987,13 @@ export default {
|
|||||||
}
|
}
|
||||||
this.resetForm('form')
|
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) {
|
validateExtTakeProfitNumRatio(rule, value, callback) {
|
||||||
if (value === 0 || value === undefined || value === null || value === '') {
|
if (value === 0 || value === undefined || value === null || value === '') {
|
||||||
callback(new Error('止盈数量百分比必须大于0'))
|
callback(new Error('止盈数量百分比必须大于0'))
|
||||||
|
|||||||
Reference in New Issue
Block a user