# Conflicts:
#	src/views/admin/line-pre-order/index.vue
This commit is contained in:
2025-02-07 15:00:29 +08:00
3 changed files with 130 additions and 45 deletions

View File

@ -56,7 +56,18 @@
align="center"
prop="apiName"
:show-overflow-tooltip="true"
/><el-table-column
/>
<el-table-column
label="交易所"
align="center"
prop="apiName"
:show-overflow-tooltip="true"
>
<template #default="{row}">
{{ exchangeTypeFormat(row) }}
</template>
</el-table-column>
<el-table-column
label="apiKey"
align="center"
prop="apiKey"
@ -191,6 +202,23 @@
<el-input v-model="form.jysId" placeholder="关联交易所账号id"
/>
</el-form-item> -->
<el-form-item label="交易所" prop="exchangeType">
<el-select
v-model="form.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="apiName">
<el-input
v-model="form.apiName"
@ -312,15 +340,25 @@ export default {
form: {
},
// 表单校验
rules: {}
rules: {
exchangeType: [{ required: true, message: '交易所不能为空', trigger: 'blur' }]
},
exchangeTypes: []
}
},
created() {
this.getList()
this.getLineUserItems()
this.getLineApiGroupItems()
// 获取交易所字典数据
this.getDicts('exchange_type').then(response => {
this.exchangeTypes = response.data
})
},
methods: {
exchangeTypeFormat(row) {
return this.selectDictLabel(this.exchangeTypes, row.exchangeType)
},
/** 查询参数列表 */
getList() {
this.loading = true
@ -339,7 +377,7 @@ export default {
// 表单重置
reset() {
this.form = {
exchangeType: this.exchangeTypes.length ? this.exchangeTypes[0].value : '',
id: undefined,
userId: undefined,
jysId: undefined,

View File

@ -334,6 +334,32 @@
prop="desc"
:show-overflow-tooltip="true"
/>
<el-table-column
label="对冲状态"
align="center"
prop="status"
width="100"
:show-overflow-tooltip="true"
>
<template #default="{row}">
<el-tag v-if="row.pid===0" size="mini" :type="row.hedgeStatus===1?'success':'danger'">
{{ ['未对冲','已对冲'][row.hedgeStatus] }}
</el-tag>
</template>
</el-table-column>
<el-table-column
label="加仓状态"
align="center"
prop="status"
width="100"
:show-overflow-tooltip="true"
>
<template #default="{row}">
<el-tag v-if="row.pid===0" size="mini" :type="row.addPositionStatus===1?'success':'danger'">
{{ ['未加仓','已加仓'][row.addPositionStatus] }}
</el-tag>
</template>
</el-table-column>
<el-table-column
label="计价货币"
align="center"
@ -433,7 +459,23 @@
<!-- 添加或修改对话框 -->
<el-dialog :title="title" :visible.sync="open" width="700px" :close-on-click-modal="false">
<el-form ref="form" :model="form" :rules="rules" label-width="120px" style="height: 600px;overflow: hidden auto;">
<el-form />
<el-form-item label="交易所" prop="exchange_type">
<el-select
v-model="form.exchange_type"
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="订单类型" prop="order_type">
<el-radio-group v-model="form.order_type">
<el-radio label="1">现货</el-radio>
@ -442,9 +484,10 @@
</el-form-item>
<el-form-item label="对冲类型" prop="cover_type">
<el-radio-group v-model="form.cover_type">
<el-radio :label="0">无对冲</el-radio>
<el-radio :label="1" :disabled="form.order_type==2">现货对合约</el-radio>
<el-radio :label="2" :disabled="form.order_type==1">合约对合约</el-radio>
<el-radio :label="3" :disabled="form.order_type==1">合约对现货</el-radio>
<!-- <el-radio :label="3" :disabled="form.order_type==1">合约对现货</el-radio> -->
</el-radio-group>
</el-form-item>
<el-form-item label="api用户" prop="api_id">
@ -581,7 +624,7 @@
placeholder="亏损百分比"
/>
</el-form-item>
<el-form-item label="对冲百分比" prop="cover_rate">
<!-- <el-form-item label="对冲百分比" prop="cover_rate">
<el-input
v-model="form.cover_rate"
placeholder="对冲百分比"
@ -605,7 +648,7 @@
<el-col :span="11"><el-input v-model.number="form.hedge_trigger_percent" type="number" placeholder="最小值"><template #append>最小值</template></el-input></el-col>
<el-col :span="11"><el-input v-model.number="form.hedge_trigger_percent_max" type="number" placeholder="最大值"><template #append>最大值</template></el-input></el-col>
</el-row>
</el-form-item>
</el-form-item> -->
<el-form-item label="主单类型" prop="main_order_type">
<el-radio-group v-model="form.main_order_type">
<el-radio label="LIMIT">限价</el-radio>
@ -618,7 +661,7 @@
<el-radio label="MARKET">市价</el-radio>
</el-radio-group>
</el-form-item>
<el-form-item label="加仓主单类型" prop="add_position_main_type">
<!-- <el-form-item label="加仓主单类型" prop="add_position_main_type">
<el-radio-group v-model="form.add_position_main_type">
<el-radio label="LIMIT">限价</el-radio>
<el-radio label="MARKET">市价</el-radio>
@ -629,7 +672,7 @@
<el-radio label="LIMIT">限价</el-radio>
<el-radio label="MARKET">市价</el-radio>
</el-radio-group>
</el-form-item>
</el-form-item> -->
<el-form-item label="对标价类型" prop="price_type">
<el-radio-group v-model="form.price_type">
<el-radio label="new">最新价</el-radio>
@ -1119,6 +1162,7 @@ export default {
},
// 表单校验
rules: {
exchange_type: [{ required: true, message: '交易所不能为空', trigger: 'blur' }],
api_id: [{ required: true, message: 'api用户不能为空', trigger: 'blur' }],
symbol: [{ required: true, message: '交易对不能为空', trigger: 'blur' }],
symbol_group_id: [{ required: true, message: '交易对组不能为空', trigger: 'blur' }],
@ -1170,7 +1214,8 @@ export default {
symbol: undefined,
order_sn: undefined
},
btnLoading: false
btnLoading: false,
exchangeTypes: []
}
},
computed: {
@ -1231,6 +1276,10 @@ export default {
this.getLineApiUserItems()
this.getSymbolGroup()
this.getListLineApiUser()
// 获取交易所字典数据
this.getDicts('exchange_type').then(response => {
this.exchangeTypes = response.data
})
},
methods: {
onSelectAll() {
@ -1249,7 +1298,7 @@ export default {
},
// 获取杠杆api用户
getListLineApiUser() {
listLineApiUser({ pageIndex: 1, pageSize: 999 }).then(response => {
listLineApiUser({ pageIndex: 1, pageSize: 999, exchangeType: this.form.exchangeType }).then(response => {
this.lineUsers = response.data.list
this.lineTotal = response.data.count
})
@ -1260,7 +1309,7 @@ export default {
const { pageIndex } = this.symbol
const symbol = typeof e === 'object' ? '' : e
const apiCall = this.title === '添加委托管理' && ([1, 3].includes(this.form.cover_type)) ? getSameSymbol : listLineSymbol
apiCall({ pageIndex, pageSize: 6, type: type || this.form.order_type, symbol }).then(res => {
apiCall({ pageIndex, pageSize: 6, type: type || this.form.order_type, symbol, exchangeType: this.form.exchangeType }).then(res => {
this.symbol.total = res.data.count
this.symbol.symbolList = res.data.list
}).finally(() => {
@ -1269,7 +1318,7 @@ export default {
},
// 获取交易对组
getSymbolGroup(type = 2) {
listLineSymbolGroup({ pageIndex: 1, pageSize: 999, beginTime: undefined, endTime: undefined, type }).then(res => {
listLineSymbolGroup({ pageIndex: 1, pageSize: 999, beginTime: undefined, endTime: undefined, type, exchangeType: this.form.exchangeType }).then(res => {
this.symbolGroups = res.data.list
})
},
@ -1526,6 +1575,7 @@ export default {
close_type: undefined,
direction: undefined,
exchange_type: this.exchangeTypes.length ? this.exchangeTypes[0].value : '',
scale_type: 2,
main_order_type: 'LIMIT',
hedge_order_type: 'LIMIT',

View File

@ -109,38 +109,35 @@
icon="el-icon-view"
@click="handlePreview(scope.row)"
>预览</el-button>
<el-button
slot="reference"
type="text"
size="small"
icon="el-icon-view"
@click="handleToProject(scope.row)"
>代码生成</el-button>
<el-button
slot="reference"
type="text"
size="small"
icon="el-icon-view"
@click="handleToProject(scope.row)"
>代码生成</el-button>
<el-button
slot="reference"
type="text"
size="small"
icon="el-icon-view"
@click="handleToDB(scope.row)"
>生成配置</el-button>
<el-button
slot="reference"
type="text"
size="small"
icon="el-icon-view"
@click="handleToApiFile(scope.row)"
>生成迁移脚本</el-button>
<el-button
slot="reference"
type="text"
size="small"
icon="el-icon-delete"
@click="handleSingleDelete(scope.row)"
>删除</el-button>
<el-button
slot="reference"
type="text"
size="small"
icon="el-icon-view"
@click="handleToDB(scope.row)"
>生成配置</el-button>
<el-button
slot="reference"
type="text"
size="small"
icon="el-icon-view"
@click="handleToApiFile(scope.row)"
>生成迁移脚本</el-button>
<el-button
slot="reference"
type="text"
size="small"
icon="el-icon-delete"
@click="handleSingleDelete(scope.row)"
>删除</el-button>
</template>
</el-table-column>
</el-table>
@ -159,7 +156,7 @@
<div class="el-dialog-container">
<div class="tag-group">
<!-- eslint-disable-next-line vue/valid-v-for -->
<el-tag v-for="(value, key) in preview.data" @click="codeChange(key)">
<el-tag v-for="(value, key) in preview.data" :key="key" @click="codeChange(key)">
<template>
{{ key.substring(key.lastIndexOf('/')+1,key.indexOf('.go.template')) }}
</template>