opt: 格式化json优化
This commit is contained in:
@@ -18,12 +18,31 @@
|
|||||||
<a-input v-model:value="formData.apiMethod" placeholder="请输入请求方法:GET, POST, PUT, DELETE" allow-clear />
|
<a-input v-model:value="formData.apiMethod" placeholder="请输入请求方法:GET, POST, PUT, DELETE" allow-clear />
|
||||||
</a-form-item>
|
</a-form-item>
|
||||||
</a-col>
|
</a-col>
|
||||||
<a-col :span="12">
|
<a-col :span="24">
|
||||||
<a-form-item label="返回数据:" name="responseJson">
|
<a-form-item label="返回数据:" name="responseJson">
|
||||||
<a-input v-model:value="formData.responseJson" placeholder="请输入返回的JSON数据" allow-clear />
|
<div style="position: relative">
|
||||||
|
<a-textarea
|
||||||
|
v-model:value="formData.responseJson"
|
||||||
|
placeholder="请输入返回的JSON数据"
|
||||||
|
:rows="10"
|
||||||
|
allow-clear
|
||||||
|
style="font-family: 'Courier New', monospace"
|
||||||
|
/>
|
||||||
|
<a-button
|
||||||
|
type="link"
|
||||||
|
size="small"
|
||||||
|
style="position: absolute; top: 8px; right: 8px; z-index: 1"
|
||||||
|
@click="formatJson"
|
||||||
|
>
|
||||||
|
<template #icon>
|
||||||
|
<AlignLeftOutlined />
|
||||||
|
</template>
|
||||||
|
格式化
|
||||||
|
</a-button>
|
||||||
|
</div>
|
||||||
</a-form-item>
|
</a-form-item>
|
||||||
</a-col>
|
</a-col>
|
||||||
<a-col :span="12">
|
<a-col :span="24">
|
||||||
<a-form-item label="是否启用" name="isEnabled">
|
<a-form-item label="是否启用" name="isEnabled">
|
||||||
<a-radio-group
|
<a-radio-group
|
||||||
v-model:value="formData.isEnabled"
|
v-model:value="formData.isEnabled"
|
||||||
@@ -42,9 +61,10 @@
|
|||||||
</template>
|
</template>
|
||||||
|
|
||||||
<script setup name="mockConfigForm">
|
<script setup name="mockConfigForm">
|
||||||
|
import { message } from 'ant-design-vue'
|
||||||
|
import { AlignLeftOutlined } from '@ant-design/icons-vue'
|
||||||
import tool from '@/utils/tool'
|
import tool from '@/utils/tool'
|
||||||
import { cloneDeep } from 'lodash-es'
|
import { cloneDeep } from 'lodash-es'
|
||||||
import { required } from '@/utils/formRules'
|
|
||||||
import mockConfigApi from '@/api/mock/mockConfigApi'
|
import mockConfigApi from '@/api/mock/mockConfigApi'
|
||||||
// 抽屉状态
|
// 抽屉状态
|
||||||
const open = ref(false)
|
const open = ref(false)
|
||||||
@@ -68,6 +88,15 @@
|
|||||||
} else if (recordData.isEnabled === 1 || recordData.isEnabled === 0) {
|
} else if (recordData.isEnabled === 1 || recordData.isEnabled === 0) {
|
||||||
recordData.isEnabled = String(recordData.isEnabled)
|
recordData.isEnabled = String(recordData.isEnabled)
|
||||||
}
|
}
|
||||||
|
// 如果有JSON数据,尝试格式化显示
|
||||||
|
if (recordData.responseJson) {
|
||||||
|
try {
|
||||||
|
const jsonObj = JSON.parse(recordData.responseJson)
|
||||||
|
recordData.responseJson = JSON.stringify(jsonObj, null, 2)
|
||||||
|
} catch (e) {
|
||||||
|
// 如果解析失败,保持原样
|
||||||
|
}
|
||||||
|
}
|
||||||
formData.value = Object.assign({}, recordData)
|
formData.value = Object.assign({}, recordData)
|
||||||
} else {
|
} else {
|
||||||
// 新增时默认启用:'1'
|
// 新增时默认启用:'1'
|
||||||
@@ -81,9 +110,22 @@
|
|||||||
formData.value = {}
|
formData.value = {}
|
||||||
open.value = false
|
open.value = false
|
||||||
}
|
}
|
||||||
// 默认要校验的
|
// 格式化JSON
|
||||||
const formRules = {
|
const formatJson = () => {
|
||||||
|
if (!formData.value.responseJson) {
|
||||||
|
message.warning('请先输入JSON数据')
|
||||||
|
return
|
||||||
|
}
|
||||||
|
try {
|
||||||
|
const jsonObj = JSON.parse(formData.value.responseJson)
|
||||||
|
formData.value.responseJson = JSON.stringify(jsonObj, null, 2)
|
||||||
|
message.success('格式化成功')
|
||||||
|
} catch (e) {
|
||||||
|
message.error('JSON格式错误,请检查输入')
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
// 默认要校验的
|
||||||
|
const formRules = {}
|
||||||
// 验证并提交数据
|
// 验证并提交数据
|
||||||
const onSubmit = () => {
|
const onSubmit = () => {
|
||||||
formRef.value
|
formRef.value
|
||||||
@@ -97,6 +139,17 @@
|
|||||||
} else if (formDataParam.isEnabled === '0') {
|
} else if (formDataParam.isEnabled === '0') {
|
||||||
formDataParam.isEnabled = 0
|
formDataParam.isEnabled = 0
|
||||||
}
|
}
|
||||||
|
// 提交前压缩JSON(去除格式化的空格和换行),确保后端能正常解析
|
||||||
|
if (formDataParam.responseJson) {
|
||||||
|
try {
|
||||||
|
const jsonObj = JSON.parse(formDataParam.responseJson)
|
||||||
|
formDataParam.responseJson = JSON.stringify(jsonObj)
|
||||||
|
} catch (e) {
|
||||||
|
message.error('JSON格式错误,请检查后重试')
|
||||||
|
submitLoading.value = false
|
||||||
|
return
|
||||||
|
}
|
||||||
|
}
|
||||||
mockConfigApi
|
mockConfigApi
|
||||||
.mockConfigSubmitForm(formDataParam, formDataParam.id)
|
.mockConfigSubmitForm(formDataParam, formDataParam.id)
|
||||||
.then(() => {
|
.then(() => {
|
||||||
|
|||||||
Reference in New Issue
Block a user