修复bug
This commit is contained in:
parent
cb805781bd
commit
b4b8acecd3
|
|
@ -179,7 +179,7 @@ export const request = {
|
|||
});
|
||||
},
|
||||
post<T = unknown>(url: string, data?: unknown, config?: InternalAxiosRequestConfig): Promise<T> {
|
||||
return service.post<ApiResponse<T>>(url, data, {config,showMessage: true,}).then((res) => {
|
||||
return service.post<ApiResponse<T>>(url, data, { ...config, showMessage: true,}).then((res) => {
|
||||
return res as T;
|
||||
});
|
||||
},
|
||||
|
|
|
|||
|
|
@ -9,7 +9,6 @@ export const uploadImageApi = (file: any): Promise<{ url: string }> => {
|
|||
// 构建FormData(图片上传必须用FormData格式)
|
||||
const formData = new FormData();
|
||||
formData.append('image', file); // 对应后端接收字段名image
|
||||
|
||||
// 使用你已封装的post请求,禁用loading(富文本自身有状态提示)
|
||||
return request.post<{ url: string }>(
|
||||
'/upload/image',
|
||||
|
|
@ -17,7 +16,7 @@ export const uploadImageApi = (file: any): Promise<{ url: string }> => {
|
|||
{
|
||||
// 覆盖默认配置:图片上传需要特殊的请求头
|
||||
headers: {
|
||||
'Content-Type': 'multipart/form-data', // 表单上传必须的头
|
||||
'Content-type': 'multipart/form-data', // 表单上传必须的头
|
||||
showLoading: false // 禁用全局loading,避免和编辑器loading冲突
|
||||
},
|
||||
timeout: 30 * 1000, // 图片上传超时时间30秒
|
||||
|
|
|
|||
|
|
@ -63,7 +63,7 @@
|
|||
:range-separator="item.rangeSeparator || '至'"
|
||||
:start-placeholder="item.startPlaceholder || '开始时间'"
|
||||
:end-placeholder="item.endPlaceholder || '结束时间'"
|
||||
:value-format="item.valueFormat || 'HH:mm:ss'" is-range />
|
||||
:value-format="item.valueFormat || 'HH:mm:ss'" :is-range="item.isRange ?? true" />
|
||||
<!-- 自定义插槽 -->
|
||||
<slot v-else :name="item.slotName" :formData="formData" />
|
||||
</el-form-item>
|
||||
|
|
@ -98,6 +98,7 @@ interface FormItem {
|
|||
valueFormat?: string
|
||||
clearable?: boolean
|
||||
disabledDate?: (time: Date) => boolean
|
||||
isRange?: boolean
|
||||
}
|
||||
|
||||
interface Props {
|
||||
|
|
|
|||
|
|
@ -107,8 +107,8 @@ const varietyForm = ref({
|
|||
minFlux: '',
|
||||
// 单位
|
||||
unit: '',
|
||||
// 交易组
|
||||
tradeGroup: '',
|
||||
// 交易时间
|
||||
tradeTime: '',
|
||||
// 多头库存费
|
||||
longStockFee: '',
|
||||
// 空头库存费
|
||||
|
|
@ -130,29 +130,43 @@ const varietyForm = ref({
|
|||
type: '',
|
||||
// 上传图片地址
|
||||
imageUrl: '',
|
||||
// 库存费收取时间
|
||||
feeInventoryTime: '',
|
||||
// 交易分组
|
||||
tradeGroup: '',
|
||||
})
|
||||
const varietyFormRef = ref<any>()
|
||||
const varietyFormRules = ref(rules())
|
||||
const dialogFormItemOptions = ref(editDialogFormItem)
|
||||
const varietyFormOptionsMap = ref({
|
||||
tradeTime: [
|
||||
{
|
||||
label: '2026-4-23',
|
||||
value: '2026-4-23',
|
||||
},
|
||||
],
|
||||
tradeGroup: [],
|
||||
type: [
|
||||
{
|
||||
label: '金属',
|
||||
label: '外汇',
|
||||
value: 1,
|
||||
},
|
||||
{
|
||||
label: '能源',
|
||||
label: '金属',
|
||||
value: 2,
|
||||
},
|
||||
{
|
||||
label: '指数',
|
||||
label: '能源',
|
||||
value: 3,
|
||||
},
|
||||
{
|
||||
label: '股票',
|
||||
label: '指数',
|
||||
value: 4,
|
||||
},
|
||||
{
|
||||
label: '数字货币',
|
||||
value: 5,
|
||||
},
|
||||
],
|
||||
})
|
||||
// 选中行
|
||||
|
|
@ -163,10 +177,11 @@ const colSpan = ref(12)
|
|||
const fileList = ref([])
|
||||
|
||||
const typeMap: any = {
|
||||
1: '金属',
|
||||
2: '能源',
|
||||
3: '指数',
|
||||
4: '股票',
|
||||
1: '外汇',
|
||||
2: '金属',
|
||||
3: '能源',
|
||||
4: '指数',
|
||||
5: '数字货币',
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
@ -193,7 +208,7 @@ const getVarietyList = async () => {
|
|||
contractSize: item.multiplier,
|
||||
minFlux: item.undulate_min,
|
||||
unit: item.unit,
|
||||
tradeGroup: item.group.name,
|
||||
tradeGroup: item.group,
|
||||
longStockFee: item.fee_inventory_long,
|
||||
shortStockFee: item.fee_inventory_short,
|
||||
profitLevel: item.stop_loss_level,
|
||||
|
|
@ -202,7 +217,7 @@ const getVarietyList = async () => {
|
|||
}))
|
||||
}
|
||||
|
||||
//获取交易组列表
|
||||
// 获取合约品种分组列表
|
||||
const getTradeGroupList = async () => {
|
||||
const data = await getTradeGroupListApi()
|
||||
varietyFormOptionsMap.value.tradeGroup = data.map((item: any) => ({
|
||||
|
|
@ -271,7 +286,7 @@ const handleAdd = () => {
|
|||
contractSize: '',
|
||||
minFlux: '',
|
||||
unit: '',
|
||||
tradeGroup: '',
|
||||
tradeTime: '',
|
||||
longStockFee: '',
|
||||
shortStockFee: '',
|
||||
profitLevel: '',
|
||||
|
|
@ -286,6 +301,8 @@ const handleAdd = () => {
|
|||
type: '',
|
||||
// 上传图片地址
|
||||
imageUrl: '',
|
||||
feeInventoryTime: '',
|
||||
tradeGroup: '',
|
||||
}
|
||||
fileList.value = []
|
||||
}
|
||||
|
|
@ -309,18 +326,30 @@ const handleUpload = async (options: any) => {
|
|||
|
||||
// 上传前校验:格式 + 大小(20KB = 20 * 1024)
|
||||
const beforeUpload = (file: File) => {
|
||||
const isTypeValid = file.type === 'image/jpeg' || file.type === 'image/png'
|
||||
if (!isTypeValid) {
|
||||
ElMessage.error('只能上传 JPG/PNG 格式!')
|
||||
return false
|
||||
// 严格校验后缀名
|
||||
const fileName = file.name.toLowerCase();
|
||||
const isJpgOrPng = fileName.endsWith('.jpg') || fileName.endsWith('.jpeg') || fileName.endsWith('.png');
|
||||
|
||||
if (!isJpgOrPng) {
|
||||
ElMessage.error('上传图片只能是 JPG/PNG 格式,且必须包含后缀名!');
|
||||
return false;
|
||||
}
|
||||
|
||||
const isSizeValid = file.size / 1024 < 20
|
||||
if (!isSizeValid) {
|
||||
ElMessage.error('图片大小不能超过 20KB!')
|
||||
return false
|
||||
// 校验 MIME 类型
|
||||
const isTypeValid = file.type === 'image/jpeg' || file.type === 'image/png';
|
||||
if (!isTypeValid) {
|
||||
ElMessage.error('图片MIME类型不正确,请重新选择!');
|
||||
return false;
|
||||
}
|
||||
return true
|
||||
|
||||
// 校验大小 (20KB)
|
||||
const isSizeValid = file.size / 1024 < 20;
|
||||
if (!isSizeValid) {
|
||||
ElMessage.error('图片大小不能超过 20KB!');
|
||||
return false;
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
|
||||
|
|
@ -333,7 +362,7 @@ const handleSubmit = async () => {
|
|||
id: varietyForm.value.id,
|
||||
code: varietyForm.value.varietyCode,
|
||||
name: varietyForm.value.varietyName,
|
||||
group_id: varietyForm.value.groupId,
|
||||
group_id: varietyForm.value.tradeGroup,
|
||||
point_diff: varietyForm.value.minPoint,
|
||||
fee_inventory_short: varietyForm.value.shortStockFee,
|
||||
status: varietyForm.value.tradeStatus,
|
||||
|
|
@ -350,6 +379,7 @@ const handleSubmit = async () => {
|
|||
online_status: varietyForm.value.onlineStatus,
|
||||
type: Number(varietyForm.value.type),
|
||||
image: varietyForm.value.imageUrl,
|
||||
fee_inventory_time: varietyForm.value.feeInventoryTime,
|
||||
}
|
||||
console.log(params)
|
||||
|
||||
|
|
@ -358,7 +388,7 @@ const handleSubmit = async () => {
|
|||
await editVarietyApi(params)
|
||||
getVarietyList()
|
||||
} else {
|
||||
await createVarietyApi({ ...params, group_id: varietyForm.value.tradeGroup })
|
||||
await createVarietyApi({ ...params })
|
||||
getVarietyList()
|
||||
}
|
||||
dialogVisible.value = false
|
||||
|
|
|
|||
|
|
@ -51,12 +51,7 @@ export const editDialogFormItem = [
|
|||
// 编号
|
||||
{ prop: 'varietyCode', label: '编号', type: 'input' as const, placeholder: '请输入编号' },
|
||||
// 交易时间
|
||||
{
|
||||
prop: 'tradeGroup',
|
||||
label: '交易时间',
|
||||
type: 'select' as const,
|
||||
placeholder: '请选择交易时间',
|
||||
},
|
||||
{prop: 'tradeTime',label: '交易时间',type: 'select' as const,placeholder: '请选择交易时间',},
|
||||
// 最大点差
|
||||
{ prop: 'maxPoint', label: '最大点差', type: 'input' as const, placeholder: '请输入最大点差' },
|
||||
// 最小点差
|
||||
|
|
@ -113,6 +108,14 @@ export const editDialogFormItem = [
|
|||
{ prop: 'minFlux', label: '最小波动', type: 'input' as const, placeholder: '请输入最小波动' },
|
||||
// 类型
|
||||
{ prop: 'type', label: '类型', type: 'select' as const, placeholder: '请选择类型' },
|
||||
// 库存费收取时间
|
||||
{
|
||||
prop: 'feeInventoryTime', label: '库存费收取时间', type: 'time' as const,
|
||||
valueFormat: 'HH:mm:ss',
|
||||
isRange: false,
|
||||
},
|
||||
// 交易分组
|
||||
{ prop: 'tradeGroup', label: '交易分组', type: 'select' as const, placeholder: '请选择交易分组' },
|
||||
// 上传图片地址
|
||||
{ prop: 'imageUrl', slotName: 'upload', label: '上传图片', type: 'upload' as const },
|
||||
// 上下线状态
|
||||
|
|
|
|||
|
|
@ -45,9 +45,9 @@ export const rules = (): FormRules => {
|
|||
varietyCode: [
|
||||
{ required: true, message: '请输入编号', trigger: ['blur', 'change'] }
|
||||
],
|
||||
// 所属交易组
|
||||
tradeGroup: [
|
||||
{ required: true, message: '请输入所属交易组', trigger: ['blur', 'change'] }
|
||||
// 所属交易时间
|
||||
tradeTime: [
|
||||
{ required: true, message: '请选择交易时间', trigger: ['blur', 'change'] }
|
||||
],
|
||||
// 最大点差
|
||||
maxPoint: [
|
||||
|
|
@ -118,5 +118,9 @@ export const rules = (): FormRules => {
|
|||
imageUrl: [
|
||||
{ required: true, message: '请上传图片', trigger: ['blur', 'change'] }
|
||||
],
|
||||
// 库存费收取时间
|
||||
feeInventoryTime: [
|
||||
{ required: true, message: '请选择库存费收取时间', trigger: ['blur', 'change'] }
|
||||
],
|
||||
}
|
||||
}
|
||||
Loading…
Reference in New Issue