This commit is contained in:
2025-02-18 18:14:55 +08:00
4 changed files with 277 additions and 77 deletions

View File

@ -43,10 +43,11 @@ export function delLineApiGroup(data) {
data: data data: data
}) })
} }
export function getUser() { export function getUser(data) {
return request({ return request({
url: '/api/v1/line-api-user/getUser', url: '/api/v1/line-api-user/getUser',
method: 'post' method: 'post',
data
}) })
} }
export function userbind(data) { export function userbind(data) {

View File

@ -121,7 +121,24 @@
<!-- 添加或修改对话框 --> <!-- 添加或修改对话框 -->
<el-dialog :title="title" :visible.sync="open" width="500px"> <el-dialog :title="title" :visible.sync="open" width="500px">
<el-form ref="form" :model="form" :rules="rules" label-width="110px"> <el-form ref="form" :model="form" :rules="rules" label-width="110px">
<el-form-item label="交易所" prop="exchangeType">
<el-select
v-model="form.exchangeType"
style="width: 100%;"
placeholder="请选择交易所"
clearable
filterable
size="small"
@change="onChange"
>
<el-option
v-for="dict in exchangeTypes"
:key="dict.value"
:label="dict.label"
:value="dict.value"
/>
</el-select>
</el-form-item>
<el-form-item label="用户组名称" prop="groupName"> <el-form-item label="用户组名称" prop="groupName">
<el-input <el-input
v-model="form.groupName" v-model="form.groupName"
@ -151,7 +168,6 @@
<script> <script>
import { delLineApiGroup, getLineApiGroup, listLineApiGroup, updateLineApiGroup, getUser, userbind } from '@/api/admin/line-api-group' import { delLineApiGroup, getLineApiGroup, listLineApiGroup, updateLineApiGroup, getUser, userbind } from '@/api/admin/line-api-group'
export default { export default {
name: 'LineApiGroup', name: 'LineApiGroup',
components: { components: {
@ -183,7 +199,7 @@ export default {
queryParams: { queryParams: {
pageIndex: 1, pageIndex: 1,
pageSize: 10, pageSize: 10,
groupName: undefined, groupName: undefined
}, },
accounts: [], accounts: [],
// 表单参数 // 表单参数
@ -193,10 +209,12 @@ export default {
sid: undefined, sid: undefined,
// 表单校验 // 表单校验
rules: { rules: {
exchangeType: [{ required: true, message: '交易所不能为空', trigger: 'blur' }],
groupName: [{ required: true, message: '用户组名称不能为空', trigger: 'blur' }], groupName: [{ required: true, message: '用户组名称不能为空', trigger: 'blur' }],
pid: [{ required: true, message: '主账号不能为空', trigger: 'blur' }], pid: [{ required: true, message: '主账号不能为空', trigger: 'blur' }],
sid: [{ required: true, message: '副账号不能为空', trigger: 'blur' }] sid: [{ required: true, message: '副账号不能为空', trigger: 'blur' }]
} },
exchangeTypes: []
} }
}, },
computed: { computed: {
@ -206,11 +224,23 @@ export default {
}, },
created() { created() {
this.getList() this.getList()
getUser().then(response => { // 获取交易所字典数据
this.accounts = response.data this.getDicts('exchange_type').then(response => {
this.exchangeTypes = response.data
this.apiGetUser(this.exchangeTypes.length ? this.exchangeTypes[0].value : '')
}) })
}, },
methods: { methods: {
onChange() {
this.exchangeTypes = []
this.apiGetUser()
},
// 获取用户
apiGetUser(exchangeType) {
getUser({ exchangeType: exchangeType || this.form.exchangeType }).then(response => {
this.accounts = response.data
})
},
/** 查询参数列表 */ /** 查询参数列表 */
getList() { getList() {
this.loading = true this.loading = true
@ -229,7 +259,7 @@ export default {
// 表单重置 // 表单重置
reset() { reset() {
this.form = { this.form = {
exchangeType: this.exchangeTypes.length ? this.exchangeTypes[0].value : '',
id: undefined, id: undefined,
groupName: undefined, groupName: undefined,
apiUserId: undefined, apiUserId: undefined,
@ -263,9 +293,6 @@ export default {
this.open = true this.open = true
this.title = '添加用户绑定从属关系表' this.title = '添加用户绑定从属关系表'
this.isEdit = false this.isEdit = false
getUser().then(response => {
this.accounts = response.data
})
}, },
// 多选框选中数据 // 多选框选中数据
handleSelectionChange(selection) { handleSelectionChange(selection) {
@ -301,8 +328,8 @@ export default {
} }
}) })
} else { } else {
const { groupName, pid, sid } = this.form const { groupName, pid, sid, exchangeType } = this.form
userbind({ group_name: groupName, user_id_str: `${pid},${sid}` }).then(response => { userbind({ group_name: groupName, user_id_str: `${pid},${sid}`, exchangeType }).then(response => {
if (response.code === 200) { if (response.code === 200) {
this.msgSuccess(response.msg) this.msgSuccess(response.msg)
this.open = false this.open = false

View File

@ -357,7 +357,7 @@ export default {
}, },
methods: { methods: {
exchangeTypeFormat(row) { exchangeTypeFormat(row) {
return this.selectDictLabel(this.exchangeTypes, row.exchangeType) return this.selectDictLabel(this.exchangeTypes || [], row.exchangeType)
}, },
/** 查询参数列表 */ /** 查询参数列表 */
getList() { getList() {
@ -403,10 +403,10 @@ export default {
this.fileOpen = false this.fileOpen = false
}, },
userIdFormat(row) { userIdFormat(row) {
return this.selectItemsLabel(this.userIdOptions, row.userId) return this.selectItemsLabel(this.userIdOptions || [], row.userId)
}, },
groupIdFormat(row) { groupIdFormat(row) {
return this.selectItemsLabel(this.groupIdOptions, row.groupId) return this.selectItemsLabel(this.groupIdOptions || [], row.groupId)
}, },
// 关系 // 关系
getLineUserItems() { getLineUserItems() {

View File

@ -131,14 +131,14 @@
>平仓 >平仓
</el-button> </el-button>
</el-col> </el-col>
<el-col :span="1.5"> <!-- <el-col :span="1.5">
<el-button <el-button
type="primary" type="primary"
size="mini" size="mini"
@click="onStore" @click="onStore"
>加仓 >加仓
</el-button> </el-button>
</el-col> </el-col> -->
<el-col :span="1.5"> <el-col :span="1.5">
<el-button <el-button
type="warning" type="warning"
@ -308,16 +308,29 @@
:show-overflow-tooltip="true" :show-overflow-tooltip="true"
> >
<template #default="{row}"> <template #default="{row}">
{{ orderTypes[row.orderType-1] ? orderTypes[row.orderType-1].l : '' }} {{ orderTypes[row.orderType] ? orderTypes[row.orderType].l : '' }}
<!-- {{ orderTypes[row.orderType-1] ? orderTypes[row.orderType-1].l : '' }} -->
</template> </template>
</el-table-column> </el-table-column>
<el-table-column <el-table-column
label="交易对类型"
align="center"
prop="symbolType"
min-width="90"
:show-overflow-tooltip="true"
>
<template #default="{row}">
{{ ['现货','合约'][row.symbolType-1] }}
</template>
</el-table-column>
<!-- <el-table-column
label="补仓百分比" label="补仓百分比"
align="center" align="center"
prop="coverRate" prop="coverRate"
width="100" width="100"
:show-overflow-tooltip="true" :show-overflow-tooltip="true"
/><el-table-column /> -->
<el-table-column
label="状态" label="状态"
align="center" align="center"
prop="status" prop="status"
@ -334,7 +347,7 @@
prop="desc" prop="desc"
:show-overflow-tooltip="true" :show-overflow-tooltip="true"
/> />
<el-table-column <!-- <el-table-column
label="对冲状态" label="对冲状态"
align="center" align="center"
prop="status" prop="status"
@ -359,7 +372,7 @@
{{ ['未加仓','已加仓'][row.addPositionStatus] }} {{ ['未加仓','已加仓'][row.addPositionStatus] }}
</el-tag> </el-tag>
</template> </template>
</el-table-column> </el-table-column> -->
<el-table-column <el-table-column
label="计价货币" label="计价货币"
align="center" align="center"
@ -367,11 +380,21 @@
:show-overflow-tooltip="true" :show-overflow-tooltip="true"
/> />
<el-table-column <el-table-column
label="交易所"
align="center"
prop="exchangeType"
:show-overflow-tooltip="true"
>
<template #default="{row}">
{{ exchangeTypeFormat(row) }}
</template>
</el-table-column>
<!-- <el-table-column
label="预估方向" label="预估方向"
align="center" align="center"
prop="direction" prop="direction"
:show-overflow-tooltip="true" :show-overflow-tooltip="true"
/> /> -->
<el-table-column <el-table-column
label="订单号" label="订单号"
align="center" align="center"
@ -424,7 +447,7 @@
slot="reference" slot="reference"
size="mini" size="mini"
type="text" type="text"
:disabled="scope.row.status!=='5'" :disabled="scope.row.status!=5"
>取消委托 >取消委托
</el-button> </el-button>
</el-popconfirm> </el-popconfirm>
@ -476,18 +499,18 @@
/> />
</el-select> </el-select>
</el-form-item> </el-form-item>
<el-form-item label="订单类型" prop="order_type"> <el-form-item label="订单类型" prop="symbol_type">
<el-radio-group v-model="form.order_type"> <el-radio-group v-model="form.symbol_type">
<el-radio label="1">现货</el-radio> <el-radio :label="1">现货</el-radio>
<el-radio label="2">合约</el-radio> <el-radio :label="2">合约</el-radio>
</el-radio-group> </el-radio-group>
</el-form-item> </el-form-item>
<el-form-item label="对冲类型" prop="cover_type"> <el-form-item label="对冲类型" prop="cover_type">
<el-radio-group v-model="form.cover_type"> <el-radio-group v-model="form.cover_type">
<el-radio :label="0">无对冲</el-radio> <el-radio :label="0">无对冲</el-radio>
<el-radio :label="1" :disabled="form.order_type==2">现货对合约</el-radio> <el-radio :label="1" :disabled="form.symbol_type==2">现货对合约</el-radio>
<el-radio :label="2" :disabled="form.order_type==1">合约对合约</el-radio> <el-radio :label="2" :disabled="form.symbol_type==1">合约对合约</el-radio>
<!-- <el-radio :label="3" :disabled="form.order_type==1">合约对现货</el-radio> --> <!-- <el-radio :label="3" :disabled="form.symbol_type==1">合约对现货</el-radio> -->
</el-radio-group> </el-radio-group>
</el-form-item> </el-form-item>
<el-form-item label="api用户" prop="api_id"> <el-form-item label="api用户" prop="api_id">
@ -624,6 +647,36 @@
placeholder="亏损百分比" placeholder="亏损百分比"
/> />
</el-form-item> </el-form-item>
<template v-if="form.cover_type!=0">
<el-form-item label="对冲单购买类型" prop="hedge_buy_type">
<el-radio-group v-model="form.hedge_buy_type">
<el-radio :label="1">百分比</el-radio>
<el-radio :label="2">实际金额</el-radio>
</el-radio-group>
</el-form-item>
<el-form-item label="对冲总购买金额" prop="HedgeBuyTotal">
<el-input
v-model.number="form.HedgeBuyTotal"
type="number"
placeholder="对冲总购买金额"
/>
</el-form-item>
<el-form-item label="对冲止盈百分比" prop="HedgeTakeProfit">
<el-input
v-model.number="form.HedgeTakeProfit"
type="number"
placeholder="对冲止盈百分比"
/>
</el-form-item>
<el-form-item label="对冲止损百分比" prop="HedgeStopLoss">
<el-input
v-model.number="form.HedgeStopLoss"
type="number"
placeholder="对冲止损百分比
"
/>
</el-form-item>
</template>
<!-- <el-form-item label="对冲百分比" prop="cover_rate"> <!-- <el-form-item label="对冲百分比" prop="cover_rate">
<el-input <el-input
v-model="form.cover_rate" v-model="form.cover_rate"
@ -723,9 +776,27 @@
<el-button @click="cancel"> </el-button> <el-button @click="cancel"> </el-button>
</div> </div>
</el-dialog> </el-dialog>
<!-- 社会杠杆 保证金模式 --> <!-- 设置杠杆 保证金模式 -->
<el-dialog :title="mode.modeTitle" :visible.sync="mode.modeOpen" width="700px" :close-on-click-modal="false"> <el-dialog :title="mode.modeTitle" :visible.sync="mode.modeOpen" width="700px" :close-on-click-modal="false">
<el-form ref="formMode" :model="modeForm" :rules="modeRules" label-width="100px"> <el-form ref="formMode" :model="modeForm" :rules="modeRules" label-width="100px">
<el-form-item label="交易所" prop="exchangeType">
<el-select
v-model="modeForm.exchangeType"
style="width: 100%;"
placeholder="请选择交易所"
clearable
filterable
size="small"
@change="onchangeMode"
>
<el-option
v-for="dict in exchangeTypes"
:key="dict.value"
:label="dict.label"
:value="dict.value"
/>
</el-select>
</el-form-item>
<el-form-item label="api用户" prop="api_user_ids"> <el-form-item label="api用户" prop="api_user_ids">
<el-row> <el-row>
<el-col :span="21"> <el-col :span="21">
@ -759,7 +830,7 @@
clearable clearable
multiple multiple
filterable filterable
:remote-method="(e)=>getSymbol(e,2)" :remote-method="(e)=>getSymbol(e,2,modeForm.exchangeType)"
:loading="searchLoding" :loading="searchLoding"
remote remote
size="small" size="small"
@ -778,7 +849,7 @@
layout="prev, pager, next" layout="prev, pager, next"
:page.sync="symbol.pageIndex" :page.sync="symbol.pageIndex"
:limit.sync="symbol.pageSize" :limit.sync="symbol.pageSize"
@pagination="getSymbol($event,2)" @pagination="getSymbol($event,2,modeForm.exchangeType)"
/> />
</div> </div>
</el-select> </el-select>
@ -832,6 +903,23 @@
<!-- 加仓 --> <!-- 加仓 -->
<el-dialog title="加仓" :visible.sync="storeOpen" width="700px" :close-on-click-modal="false"> <el-dialog title="加仓" :visible.sync="storeOpen" width="700px" :close-on-click-modal="false">
<el-form ref="formStore" :model="storeForm" :rules="storeRules" label-width="120px"> <el-form ref="formStore" :model="storeForm" :rules="storeRules" label-width="120px">
<el-form-item label="交易所" prop="exchangeType">
<el-select
v-model="storeForm.exchangeType"
style="width: 100%;"
placeholder="请选择交易所"
clearable
filterable
size="small"
>
<el-option
v-for="dict in exchangeTypes"
:key="dict.value"
:label="dict.label"
:value="dict.value"
/>
</el-select>
</el-form-item>
<el-form-item label="api用户" prop="api_id"> <el-form-item label="api用户" prop="api_id">
<el-select <el-select
v-model="storeForm.api_id" v-model="storeForm.api_id"
@ -870,7 +958,7 @@
clearable clearable
multiple multiple
filterable filterable
:remote-method="(e)=>getSymbol(e,storeForm.symbol_type)" :remote-method="(e)=>getSymbol(e,storeForm.symbol_type,storeForm.exchangeType)"
:loading="searchLoding" :loading="searchLoding"
remote remote
size="small" size="small"
@ -889,7 +977,7 @@
layout="prev, pager, next" layout="prev, pager, next"
:page.sync="symbol.pageIndex" :page.sync="symbol.pageIndex"
:limit.sync="symbol.pageSize" :limit.sync="symbol.pageSize"
@pagination="getSymbol($event,2)" @pagination="getSymbol($event,storeForm.symbol_type,storeForm.exchangeType)"
/> />
</div> </div>
</el-select> </el-select>
@ -939,6 +1027,24 @@
<!-- 平仓 --> <!-- 平仓 -->
<el-dialog title="平仓" :visible.sync="positionOpen" width="700px" :close-on-click-modal="false"> <el-dialog title="平仓" :visible.sync="positionOpen" width="700px" :close-on-click-modal="false">
<el-form ref="formPosition" :model="positionForm" :rules="positionRules" label-width="120px"> <el-form ref="formPosition" :model="positionForm" :rules="positionRules" label-width="120px">
<el-form-item label="交易所" prop="exchangeType">
<el-select
v-model="positionForm.exchangeType"
style="width: 100%;"
placeholder="请选择交易所"
clearable
filterable
size="small"
@change="onChangePosition"
>
<el-option
v-for="dict in exchangeTypes"
:key="dict.value"
:label="dict.label"
:value="dict.value"
/>
</el-select>
</el-form-item>
<el-form-item label="订单类型" prop="close_type"> <el-form-item label="订单类型" prop="close_type">
<el-radio-group v-model="positionForm.close_type"> <el-radio-group v-model="positionForm.close_type">
<el-radio :label="1">现货</el-radio> <el-radio :label="1">现货</el-radio>
@ -980,7 +1086,7 @@
placeholder="请选择交易对" placeholder="请选择交易对"
clearable clearable
filterable filterable
:remote-method="(e)=>getSymbol(e,positionForm.close_type)" :remote-method="(e)=>getSymbol(e,positionForm.close_type,positionForm.exchangeType)"
:loading="searchLoding" :loading="searchLoding"
remote remote
size="small" size="small"
@ -999,7 +1105,7 @@
layout="prev, pager, next" layout="prev, pager, next"
:page.sync="symbol.pageIndex" :page.sync="symbol.pageIndex"
:limit.sync="symbol.pageSize" :limit.sync="symbol.pageSize"
@pagination="getSymbol($event,2)" @pagination="getSymbol($event,positionForm.close_type,positionForm.exchangeType)"
/> />
</div> </div>
</el-select> </el-select>
@ -1018,6 +1124,24 @@
<!-- 取消委托 --> <!-- 取消委托 -->
<el-dialog title="取消委托" :visible.sync="cancelOpen" width="700px" :close-on-click-modal="false"> <el-dialog title="取消委托" :visible.sync="cancelOpen" width="700px" :close-on-click-modal="false">
<el-form ref="formCancel" :model="cancelForm" label-width="80px"> <el-form ref="formCancel" :model="cancelForm" label-width="80px">
<el-form-item label="交易所" prop="exchangeType" :rules="[{required: true,message: '交易所不能为空', trigger: 'blur'}]">
<el-select
v-model="cancelForm.exchangeType"
style="width: 100%;"
placeholder="请选择交易所"
clearable
filterable
size="small"
@change="onChangeCancel"
>
<el-option
v-for="dict in exchangeTypes"
:key="dict.value"
:label="dict.label"
:value="dict.value"
/>
</el-select>
</el-form-item>
<el-form-item label="api用户" prop="api_id" :rules="[{required: true,message: 'api用户不能为空', trigger: 'blur'}]"> <el-form-item label="api用户" prop="api_id" :rules="[{required: true,message: 'api用户不能为空', trigger: 'blur'}]">
<el-select <el-select
v-model="cancelForm.api_id" v-model="cancelForm.api_id"
@ -1035,7 +1159,7 @@
/> />
</el-select> </el-select>
</el-form-item> </el-form-item>
<el-form-item label="订单类型" prop="close_type"> <el-form-item label="订单类型" prop="order_type">
<el-radio-group v-model="cancelForm.order_type"> <el-radio-group v-model="cancelForm.order_type">
<el-radio :label="1">现货</el-radio> <el-radio :label="1">现货</el-radio>
<el-radio :label="2">合约</el-radio> <el-radio :label="2">合约</el-radio>
@ -1073,18 +1197,22 @@ export default {
], ],
// :1=现货;2=合约;3=合约止盈;4=合约止损;5=现货止盈;6=现货止损;7=止损补仓;8=现货加仓9=现货平仓;10 = 合约止损补仓,11=合约加仓12=合约平仓 // :1=现货;2=合约;3=合约止盈;4=合约止损;5=现货止盈;6=现货止损;7=止损补仓;8=现货加仓9=现货平仓;10 = 合约止损补仓,11=合约加仓12=合约平仓
orderTypes: [ orderTypes: [
{ v: 1, l: '现货' }, { v: 1, l: '主单' },
{ v: 2, l: '合约' }, { v: 2, l: '止盈' },
{ v: 3, l: '合约止盈' }, { v: 3, l: '止损' },
{ v: 4, l: '合约亏损' }, { v: 4, l: '平仓' }
{ v: 5, l: '现货止盈' }, // { v: 1, l: '现货' },
{ v: 6, l: '现货亏损' }, // { v: 2, l: '合约' },
{ v: 7, l: '现货对冲' }, // { v: 3, l: '合约止盈' },
{ v: 8, l: '现货加仓' }, // { v: 4, l: '合约亏损' },
{ v: 9, l: '现货平仓' }, // { v: 5, l: '现货止盈' },
{ v: 10, l: '合约对冲' }, // { v: 6, l: '现货亏损' },
{ v: 11, l: '合约加仓' }, // { v: 7, l: '现货对冲' },
{ v: 12, l: '合约平仓' } // { v: 8, l: '现货加仓' },
// { v: 9, l: '现货平仓' },
// { v: 10, l: '合约对冲' },
// { v: 11, l: '合约加仓' },
// { v: 12, l: '合约平仓' }
], ],
buyer: [ buyer: [
{ v: 'BUY', l: '买(多)' }, { v: 'BUY', l: '买(多)' },
@ -1095,17 +1223,27 @@ export default {
{ v: 0, l: '待触发' }, { v: 0, l: '待触发' },
{ v: 1, l: '已触发' }, { v: 1, l: '已触发' },
{ v: 2, l: '下单失败' }, { v: 2, l: '下单失败' },
{ v: 3, l: '已记录' }, { v: 3, l: '未知' },
{ v: 4, l: '已取消' }, { v: 4, l: '已取消' },
{ v: 5, l: '委托中' }, { v: 5, l: '委托中' },
{ v: 6, l: '已平仓' }, { v: 6, l: '已成交' },
{ v: 7, l: '已补单' }, { v: 7, l: '未知' },
{ v: 8, l: '补单失败' }, { v: 8, l: '未知' },
{ v: 9, l: '现货已成交' }, { v: 9, l: '已平仓' }
{ v: 10, l: '合约已补单' }, // { v: 0, l: '待触发' },
{ v: 11, l: '合约补单失败' }, // { v: 1, l: '已触发' },
{ v: 12, l: '合约已成交' }, // { v: 2, l: '下单失败' },
{ v: 13, l: '已开仓' } // { v: 3, l: '已记录' },
// { v: 4, l: '已取消' },
// { v: 5, l: '委托中' },
// { v: 6, l: '已平仓' },
// { v: 7, l: '已补单' },
// { v: 8, l: '补单失败' },
// { v: 9, l: '现货已成交' },
// { v: 10, l: '合约已补单' },
// { v: 11, l: '合约补单失败' },
// { v: 12, l: '合约已成交' },
// { v: 13, l: '已开仓' }
], ],
statuss: [ statuss: [
{ v: '0', l: '待触发' }, { v: '0', l: '待触发' },
@ -1184,6 +1322,7 @@ export default {
symbolGroups: [], symbolGroups: [],
modeForm: {}, modeForm: {},
modeRules: { modeRules: {
exchangeType: [{ required: true, message: '交易所不能为空', trigger: 'blur' }],
api_user_ids: [{ required: true, message: 'api用户不能为空', trigger: 'blur' }] api_user_ids: [{ required: true, message: 'api用户不能为空', trigger: 'blur' }]
}, },
mode: { mode: {
@ -1195,6 +1334,7 @@ export default {
storeOpen: false, storeOpen: false,
storeForm: {}, storeForm: {},
storeRules: { storeRules: {
exchangeType: [{ required: true, message: '交易所不能为空', trigger: 'blur' }],
api_id: [{ required: true, message: 'api用户不能为空', trigger: 'blur' }], api_id: [{ required: true, message: 'api用户不能为空', trigger: 'blur' }],
symbols: [{ required: true, message: '加仓交易对不能为空', trigger: 'blur' }], symbols: [{ required: true, message: '加仓交易对不能为空', trigger: 'blur' }],
value: [{ required: true, message: '加仓数值不能为空', trigger: 'blur' }] value: [{ required: true, message: '加仓数值不能为空', trigger: 'blur' }]
@ -1202,6 +1342,7 @@ export default {
positionOpen: false, positionOpen: false,
positionForm: {}, positionForm: {},
positionRules: { positionRules: {
exchangeType: [{ required: true, message: '交易所不能为空', trigger: 'blur' }],
api_id: [{ required: true, message: 'api用户不能为空', trigger: 'blur' }] api_id: [{ required: true, message: 'api用户不能为空', trigger: 'blur' }]
// symbol: [{ required: true, message: '交易对不能为空', trigger: 'blur' }] // symbol: [{ required: true, message: '交易对不能为空', trigger: 'blur' }]
}, },
@ -1209,6 +1350,7 @@ export default {
// 取消委托 // 取消委托
cancelOpen: false, cancelOpen: false,
cancelForm: { cancelForm: {
exchangeType: '',
api_id: undefined, api_id: undefined,
order_type: 1, order_type: 1,
symbol: undefined, symbol: undefined,
@ -1229,7 +1371,7 @@ export default {
return { color: '#f56c6c' } return { color: '#f56c6c' }
} else if (['已触发', '已平仓', '委托中'].includes(s)) { } else if (['已触发', '已平仓', '委托中'].includes(s)) {
return { color: '#67c23a' } return { color: '#67c23a' }
} else if (['现货已成交', '已开仓'].includes(s)) { } else if (['现货已成交', '已开仓', '已成交'].includes(s)) {
return { color: '#e6a23c' } return { color: '#e6a23c' }
} else { } else {
return {} return {}
@ -1238,8 +1380,8 @@ export default {
} }
}, },
watch: { watch: {
'form.order_type'(newValue) { 'form.symbol_type'(newValue) {
if (newValue === '1') { if (newValue === 1) {
this.form.cover_type = 1 this.form.cover_type = 1
} else { } else {
this.form.cover_type = 2 this.form.cover_type = 2
@ -1247,7 +1389,7 @@ export default {
this.form.symbol_group_id = undefined this.form.symbol_group_id = undefined
this.form.symbol = undefined this.form.symbol = undefined
this.getSymbol({}) this.getSymbol({})
this.getSymbolGroup(this.form.cover_type) this.getSymbolGroup(this.form.cover_type, this.form.exchange_type)
}, },
'form.cover_type'(newValue) { 'form.cover_type'(newValue) {
if (newValue === 3) { if (newValue === 3) {
@ -1282,6 +1424,23 @@ export default {
}) })
}, },
methods: { methods: {
exchangeTypeFormat(row) {
return this.selectDictLabel(this.exchangeTypes || [], row.exchangeType)
},
onChangePosition() {
this.getLineApiUserItems(this.positionForm.exchangeType)
this.$set(this.positionForm, 'symbol', undefined)
this.getSymbol({}, this.positionForm.close_type, this.positionForm.exchangeType)
},
onChangeCancel() {
this.cancelForm.api_id = undefined
this.getLineApiUserItems(this.cancelForm.exchangeType)
},
onchangeMode() {
this.getListLineApiUser(this.modeForm.exchangeType)
this.getSymbol({}, 2, this.modeForm.exchangeType)
this.getSymbolGroup(2, this.modeForm.exchangeType)
},
onSelectAll() { onSelectAll() {
if (this.form.api_id && this.form.api_id.length > 0) { if (this.form.api_id && this.form.api_id.length > 0) {
this.form.api_id = [] this.form.api_id = []
@ -1297,19 +1456,19 @@ export default {
this.modeForm.api_user_ids = this.lineUsers.map(item => item.id) this.modeForm.api_user_ids = this.lineUsers.map(item => item.id)
}, },
// 获取杠杆api用户 // 获取杠杆api用户
getListLineApiUser() { getListLineApiUser(exchangeType) {
listLineApiUser({ pageIndex: 1, pageSize: 999, exchangeType: this.form.exchangeType }).then(response => { listLineApiUser({ pageIndex: 1, pageSize: 999, exchangeType: exchangeType || this.form.exchange_type }).then(response => {
this.lineUsers = response.data.list this.lineUsers = response.data.list
this.lineTotal = response.data.count this.lineTotal = response.data.count
}) })
}, },
// 交易对列表 // 交易对列表
getSymbol(e, type) { getSymbol(e, type, exchangeType) {
this.searchLoding = true this.searchLoding = true
const { pageIndex } = this.symbol const { pageIndex } = this.symbol
const symbol = typeof e === 'object' ? '' : e const symbol = typeof e === 'object' ? '' : e
const apiCall = this.title === '添加委托管理' && ([1, 3].includes(this.form.cover_type)) ? getSameSymbol : listLineSymbol const apiCall = this.title === '添加委托管理' && ([1, 3].includes(this.form.cover_type)) ? getSameSymbol : listLineSymbol
apiCall({ pageIndex, pageSize: 6, type: type || this.form.order_type, symbol, exchangeType: this.form.exchangeType }).then(res => { apiCall({ pageIndex, pageSize: 6, type: type || this.form.order_type, symbol, exchangeType: exchangeType || this.form.exchange_type }).then(res => {
this.symbol.total = res.data.count this.symbol.total = res.data.count
this.symbol.symbolList = res.data.list this.symbol.symbolList = res.data.list
}).finally(() => { }).finally(() => {
@ -1317,8 +1476,9 @@ export default {
}) })
}, },
// 获取交易对组 // 获取交易对组
getSymbolGroup(type = 2) { getSymbolGroup(type = 2, exchangeType) {
listLineSymbolGroup({ pageIndex: 1, pageSize: 999, beginTime: undefined, endTime: undefined, type, exchangeType: this.form.exchangeType }).then(res => { console.log(type, exchangeType, '??')
listLineSymbolGroup({ pageIndex: 1, pageSize: 999, beginTime: undefined, endTime: undefined, type, exchangeType: exchangeType || this.form.exchange_type }).then(res => {
this.symbolGroups = res.data.list this.symbolGroups = res.data.list
}) })
}, },
@ -1400,6 +1560,7 @@ export default {
onPosition() { onPosition() {
this.title = '' this.title = ''
this.positionForm = { this.positionForm = {
exchangeType: this.exchangeTypes.length ? this.exchangeTypes[0].value : '',
api_id: undefined, api_id: undefined,
symbol: undefined, symbol: undefined,
rate: '0', rate: '0',
@ -1412,6 +1573,7 @@ export default {
positionCancel() { positionCancel() {
this.positionOpen = false this.positionOpen = false
this.positionForm = { this.positionForm = {
exchangeType: this.exchangeTypes.length ? this.exchangeTypes[0].value : '',
api_id: undefined, api_id: undefined,
symbol: undefined, symbol: undefined,
rate: '0', rate: '0',
@ -1437,6 +1599,7 @@ export default {
onStore() { onStore() {
this.title = '' this.title = ''
this.storeForm = { this.storeForm = {
exchangeType: this.exchangeTypes.length ? this.exchangeTypes[0].value : '',
api_id: undefined, api_id: undefined,
cover_account: 1, cover_account: 1,
symbol_type: 1, symbol_type: 1,
@ -1455,6 +1618,7 @@ export default {
storeCancel() { storeCancel() {
this.storeOpen = false this.storeOpen = false
this.storeForm = { this.storeForm = {
exchangeType: this.exchangeTypes.length ? this.exchangeTypes[0].value : '',
api_id: undefined, api_id: undefined,
cover_account: 1, cover_account: 1,
symbol_type: 1, symbol_type: 1,
@ -1492,8 +1656,9 @@ export default {
this.title = '' this.title = ''
this.mode.modeTitle = title this.mode.modeTitle = title
this.resetMode() this.resetMode()
this.getSymbol({}, 2) this.getListLineApiUser(this.modeForm.exchangeType)
this.getSymbolGroup(2) this.getSymbol({}, 2, this.modeForm.exchangeType)
this.getSymbolGroup(2, this.modeForm.exchangeType)
this.mode.modeOpen = true this.mode.modeOpen = true
}, },
modeCancel() { modeCancel() {
@ -1503,6 +1668,7 @@ export default {
// 表单重置 // 表单重置
resetMode() { resetMode() {
this.modeForm = { this.modeForm = {
exchangeType: this.exchangeTypes.length ? this.exchangeTypes[0].value : '',
api_user_ids: undefined, api_user_ids: undefined,
symbol: undefined, symbol: undefined,
group_id: undefined, group_id: undefined,
@ -1566,7 +1732,7 @@ export default {
buy_price: undefined, buy_price: undefined,
site: 'BUY', site: 'BUY',
order_sn: undefined, order_sn: undefined,
order_type: '1', order_type: 0,
cover_rate: undefined, cover_rate: undefined,
desc: undefined, desc: undefined,
status: undefined, status: undefined,
@ -1575,6 +1741,11 @@ export default {
close_type: undefined, close_type: undefined,
direction: undefined, direction: undefined,
symbol_type: 1,
hedge_buy_type: 1,
HedgeBuyTotal: undefined,
HedgeTakeProfit: undefined,
HedgeStopLoss: undefined,
exchange_type: this.exchangeTypes.length ? this.exchangeTypes[0].value : '', exchange_type: this.exchangeTypes.length ? this.exchangeTypes[0].value : '',
scale_type: 2, scale_type: 2,
main_order_type: 'LIMIT', main_order_type: 'LIMIT',
@ -1612,9 +1783,9 @@ export default {
return this.selectItemsLabel(this.apiIdOptions, row.apiId) return this.selectItemsLabel(this.apiIdOptions, row.apiId)
}, },
// 关系 // 关系
getLineApiUserItems() { getLineApiUserItems(exchangeType) {
this.getItems(getMainUser, undefined).then(res => { this.getItems(getMainUser, { pageSize: 10000, exchangeType: exchangeType || this.form.exchange_type }).then(res => {
this.apiIdOptions = this.setItems(res, 'id', 'apiName') this.apiIdOptions = this.setItems(res || [], 'id', 'apiName')
}) })
}, },
// 文件 // 文件
@ -1703,6 +1874,7 @@ export default {
onCancel() { onCancel() {
this.cancelOpen = true this.cancelOpen = true
this.$refs.formCancel?.resetFields() this.$refs.formCancel?.resetFields()
this.cancelForm.exchangeType = this.exchangeTypes.length ? this.exchangeTypes[0].value : ''
}, },
handleCancel(row) { handleCancel(row) {
if (typeof row === 'string') { if (typeof row === 'string') {