做市商列表

This commit is contained in:
2026-06-02 16:19:47 +08:00
parent 1710f687a6
commit b6a75f5fd2
7 changed files with 96 additions and 8 deletions

View File

@ -76,9 +76,13 @@ const responseInterceptor = <T = unknown>(response: AxiosResponse<ApiResponse<T>
//关闭loading无论成功失败都要关 //关闭loading无论成功失败都要关
hideLoading() hideLoading()
const config = response.config const config = response.config
if (response.headers['new_token'] !== undefined) { // axios 会将响应头规范化为小写,同时尝试大小写版本以兼容不同服务器
setStorage('token', response.headers['new_token'] as string) const newToken = response.headers['new-token'] || response.headers['New-Token']
if (newToken) {
setStorage('token', newToken as string, 'local')
console.log('Token 已更新:', newToken)
} }
console.log('响应response', response) console.log('响应response', response)
const { data } = response const { data } = response
console.log('响应数据data', data) console.log('响应数据data', data)

View File

@ -37,3 +37,8 @@ export async function updateCapital(params: any): Promise<any> {
export async function editAgentBail(params: any): Promise<any> { export async function editAgentBail(params: any): Promise<any> {
return request.post<any>('/agent/editAgentBail', { ...params }) return request.post<any>('/agent/editAgentBail', { ...params })
} }
//获取承接特殊做市选项
export async function getBasetsOptionsApi(): Promise<any> {
return request.get<any>('/agent/getBasetsOptions')
}

View File

@ -1,9 +1,9 @@
<template> <template>
<el-form ref="formRef" :model="formData" :rules="formRules" label-width="100px" v-bind="$attrs"> <el-form ref="formRef" :model="formData" :rules="formRules" label-width="110px" v-bind="$attrs">
<!-- 动态表单项 --> <!-- 动态表单项 -->
<el-row :gutter="props.rowGutter || 0"> <el-row :gutter="props.rowGutter || 0">
<template v-for="(item, index) in formItems" :key="index"> <template v-for="(item, index) in formItems" :key="index">
<el-col :span="props.colSpan || 24"> <el-col v-if="item.show !== false" :span="props.colSpan || 24">
<el-form-item <el-form-item
:label="item.label" :label="item.label"
:prop="item.prop" :prop="item.prop"
@ -81,7 +81,7 @@
/> />
<!-- 单选框组 --> <!-- 单选框组 -->
<el-radio-group v-else-if="item.type === 'radio'" v-model="formData[item.prop]"> <el-radio-group v-else-if="item.type === 'radio'" v-model="formData[item.prop]" :disabled="item.disabled">
<el-radio <el-radio
v-for="option in props.optionsMap?.[item.prop] || []" v-for="option in props.optionsMap?.[item.prop] || []"
:key="option.value" :key="option.value"
@ -163,6 +163,7 @@ interface FormItem {
placeholder?: string placeholder?: string
required?: boolean required?: boolean
disabled?: boolean disabled?: boolean
show?: boolean //
min?: number min?: number
max?: number max?: number
slotName?: string // slotName?: string //

View File

@ -91,7 +91,7 @@ const getCustomerTradeOrderList = async () => {
page: currentPage.value, page: currentPage.value,
page_size: pageSize.value, page_size: pageSize.value,
user_name: searchForm.value.accountName, user_name: searchForm.value.accountName,
account_id: searchForm.value.subAccountName, account_id: searchForm.value.subAccountName || '',
order_no: '', order_no: '',
type: searchForm.value.tradeType, type: searchForm.value.tradeType,
start_time: startTime, start_time: startTime,

View File

@ -230,6 +230,7 @@ import {
getPointDiffConfigListApi, getPointDiffConfigListApi,
getParAgentListApi, getParAgentListApi,
getRiskTemplateListApi, getRiskTemplateListApi,
getBasetsOptionsApi,
addMarketApi, addMarketApi,
editMarketApi, editMarketApi,
updateCapital, updateCapital,
@ -331,6 +332,18 @@ const marketFormItemOptions = computed(() => {
if (item.prop === 'parentAccountName' || item.prop === 'level') { if (item.prop === 'parentAccountName' || item.prop === 'level') {
return { ...item, disabled: dialogType.value === 'edit' } return { ...item, disabled: dialogType.value === 'edit' }
} }
// (level='3') is_base_ts
if (item.prop === 'is_base_ts') {
const show = marketForm.value.level === '3'
return { ...item, show, disabled: dialogType.value === 'edit' }
}
// (level='3') is_base_ts=2 base_ts
if (item.prop === 'base_ts') {
if (marketForm.value.level !== '3' || marketForm.value.is_base_ts !== 2) {
return { ...item, show: false }
}
return { ...item, show: true }
}
return item return item
}) })
}) })
@ -343,6 +356,8 @@ const marketFormOptionsMap = ref<{
level: SelectOption[] level: SelectOption[]
parentAccountName: SelectOption[] parentAccountName: SelectOption[]
riskControlTemplate: SelectOption[] riskControlTemplate: SelectOption[]
is_base_ts: SelectOption[]
base_ts: SelectOption[]
}>({ }>({
level: [ level: [
// { label: '', value: '1' }, // { label: '', value: '1' },
@ -354,6 +369,11 @@ const marketFormOptionsMap = ref<{
], ],
parentAccountName: [], parentAccountName: [],
riskControlTemplate: [], riskControlTemplate: [],
is_base_ts: [
{ label: '是', value: 1 },
{ label: '否', value: 2 },
],
base_ts: [],
}) })
const activeTab = ref('email') const activeTab = ref('email')
/** /**
@ -521,6 +541,8 @@ const mapMarketTree = (data: any) => {
agentRelation: item.path_name, // agentRelation: item.path_name, //
accountName: item.username, // accountName: item.username, //
level: item.role_id * 1 === 5 && item.type * 1 === 2 ? 6 : item.role_id, // level: item.role_id * 1 === 5 && item.type * 1 === 2 ? 6 : item.role_id, //
is_base_ts: item.is_base_ts, //
base_ts: item.base_ts, //ID
basicAccount: item.wallet_capital.amount, // basicAccount: item.wallet_capital.amount, //
margin: item.wallet_capital.bail, // margin: item.wallet_capital.bail, //
stopOrderMargin: item.wallet_capital.bail_stop_order, // stopOrderMargin: item.wallet_capital.bail_stop_order, //
@ -641,6 +663,16 @@ const getRiskTemplateList = async () => {
})) }))
} }
//
const getBasetsOptions = async () => {
const data = await getBasetsOptionsApi()
//
marketFormOptionsMap.value.base_ts = data.map((item: any) => ({
label: item.username,
value: item.id, //
}))
}
/** /**
* @description 请求所有做市商的浮动盈亏数据 * @description 请求所有做市商的浮动盈亏数据
*/ */
@ -686,6 +718,26 @@ watch(
{ immediate: false }, { immediate: false },
) )
//
watch(
() => marketForm.value.is_base_ts,
(newVal) => {
if (newVal === 1) {
marketForm.value.base_ts = ''
}
},
)
//
const showBaseTsSelect = computed(() => {
return marketForm.value.level === '3' && marketForm.value.is_base_ts === 2
})
//
const isBaseTsDisabled = computed(() => {
return dialogType.value === 'edit'
})
/** /**
* @description 定义表单初始值方法 * @description 定义表单初始值方法
*/ */
@ -696,6 +748,8 @@ const initMarketForm = {
countryCode: '+86', countryCode: '+86',
accountName: '', accountName: '',
level: '', level: '',
is_base_ts: 1,
base_ts: '',
parentAccountName: '', parentAccountName: '',
riskControlTemplate: '', riskControlTemplate: '',
positionRatio: '', positionRatio: '',
@ -724,6 +778,7 @@ const handleReset = async () => {
// //
const handleAddMarket = async () => { const handleAddMarket = async () => {
getBasetsOptions()
dialogVisible.value = true dialogVisible.value = true
dialogTitle.value = '添加' dialogTitle.value = '添加'
dialogType.value = 'add' dialogType.value = 'add'
@ -733,6 +788,7 @@ const handleAddMarket = async () => {
// //
const handleEditMarket = async () => { const handleEditMarket = async () => {
getBasetsOptions()
const row = selectedRow.value const row = selectedRow.value
console.log('rowrowrowrowrow', row) console.log('rowrowrowrowrow', row)
@ -751,7 +807,9 @@ const handleEditMarket = async () => {
marketForm.value = { marketForm.value = {
...initMarketForm, ...initMarketForm,
accountName: row.accountName || '', accountName: row.accountName || '',
level: row.level || '', level: row.level+ '' || '',
is_base_ts: row.is_base_ts || 1,
base_ts: row.base_ts || '',
parentAccountName: '', parentAccountName: '',
riskControlTemplate: row.wallet_capital.risk_control_id || '', riskControlTemplate: row.wallet_capital.risk_control_id || '',
positionRatio: row.positionRatio || '', positionRatio: row.positionRatio || '',
@ -889,6 +947,11 @@ const handleSubmit = async () => {
params.flag = 2 params.flag = 2
params.role_id = '5' params.role_id = '5'
} }
//
if (marketForm.value.level === '3') {
params.is_base_ts = marketForm.value.is_base_ts
params.base_ts = marketForm.value.is_base_ts === 1 ? 0 : marketForm.value.base_ts
}
await addMarketApi(params) await addMarketApi(params)
// 5. // 5.
await getMarketList() await getMarketList()
@ -898,7 +961,7 @@ const handleSubmit = async () => {
let flag = null let flag = null
if (selectedRow.value.role_id * 1 === 5 && selectedRow.value.type * 1 === 1) flag = 1 if (selectedRow.value.role_id * 1 === 5 && selectedRow.value.type * 1 === 1) flag = 1
if (selectedRow.value.role_id * 1 === 6 && selectedRow.value.type * 1 === 2) flag = 2 if (selectedRow.value.role_id * 1 === 6 && selectedRow.value.type * 1 === 2) flag = 2
const params = { const params: Record<string, any> = {
user_id: selectedRow.value.id, user_id: selectedRow.value.id,
toucun_percent: marketForm.value.positionRatio, toucun_percent: marketForm.value.positionRatio,
point_diffs_json: JSON.stringify(pointDiffObj), point_diffs_json: JSON.stringify(pointDiffObj),
@ -907,6 +970,11 @@ const handleSubmit = async () => {
flag: flag, flag: flag,
fee_setting_id: '', fee_setting_id: '',
} }
//
if (marketForm.value.level === '3') {
params.is_base_ts = marketForm.value.is_base_ts
params.base_ts = marketForm.value.is_base_ts === 1 ? 0 : marketForm.value.base_ts
}
// 4. // 4.
await editMarketApi(params) await editMarketApi(params)
// 5. // 5.

View File

@ -64,6 +64,10 @@ export const marketFormItem = [
{ label: '账户名称', prop: 'accountName', type: 'input' as const, placeholder: '请输入账户名称', }, { label: '账户名称', prop: 'accountName', type: 'input' as const, placeholder: '请输入账户名称', },
//级别 //级别
{ label: '级别', prop: 'level', type: 'select' as const, placeholder: '请选择级别' }, { label: '级别', prop: 'level', type: 'select' as const, placeholder: '请选择级别' },
//是否为承接特殊做市
{ label: '是否为承接特殊做市', labelWidth:"160px", prop: 'is_base_ts', type: 'radio' as const, show: false },
//承接特殊做市
{ label: '承接特殊做市', prop: 'base_ts', type: 'select' as const, placeholder: '请选择承接特殊做市', show: false },
//所属上级 //所属上级
{ label: '所属上级', prop: 'parentAccountName', type: 'select' as const, placeholder: '请选择所属上级账户名称', }, { label: '所属上级', prop: 'parentAccountName', type: 'select' as const, placeholder: '请选择所属上级账户名称', },
// 风控模板 // 风控模板

View File

@ -30,6 +30,12 @@ export const rules = (marketForm: any, row?: any, isEdit?: boolean): FormRules =
accountName: [ accountName: [
{ required: true, message: '请输入账号名称', trigger: 'blur' } { required: true, message: '请输入账号名称', trigger: 'blur' }
], ],
is_base_ts: [
{ required: true, message: '请选择是否为承接特殊做市', trigger: 'blur' }
],
base_ts: [
{ required: true, message: '请选择承接特殊做市', trigger: 'blur' }
],
level: [ level: [
{ required: !isEdit, message: '请选择等级', trigger: 'change' } { required: !isEdit, message: '请选择等级', trigger: 'change' }
], ],