mirror of
https://github.com/Tencent/tmagic-editor.git
synced 2025-06-13 16:33:15 +08:00
feat(editor): http数据源请求体配置支持写json
This commit is contained in:
parent
f8125aa149
commit
141e1c7130
@ -1,37 +1,60 @@
|
||||
<template>
|
||||
<div class="m-fields-key-value">
|
||||
<div class="m-fields-key-value-item" v-for="(item, index) in records" :key="index">
|
||||
<TMagicInput
|
||||
placeholder="key"
|
||||
v-model="records[index][0]"
|
||||
:disabled="disabled"
|
||||
:size="size"
|
||||
@change="keyChangeHandler"
|
||||
></TMagicInput>
|
||||
<span class="m-fileds-key-value-delimiter">:</span>
|
||||
<TMagicInput
|
||||
placeholder="value"
|
||||
v-model="records[index][1]"
|
||||
:disabled="disabled"
|
||||
:size="size"
|
||||
@change="valueChangeHandler"
|
||||
></TMagicInput>
|
||||
<div v-if="!showCode">
|
||||
<div class="m-fields-key-value-item" v-for="(item, index) in records" :key="index">
|
||||
<TMagicInput
|
||||
placeholder="key"
|
||||
v-model="records[index][0]"
|
||||
:disabled="disabled"
|
||||
:size="size"
|
||||
@change="keyChangeHandler"
|
||||
></TMagicInput>
|
||||
<span class="m-fileds-key-value-delimiter">:</span>
|
||||
<TMagicInput
|
||||
placeholder="value"
|
||||
v-model="records[index][1]"
|
||||
:disabled="disabled"
|
||||
:size="size"
|
||||
@change="valueChangeHandler"
|
||||
></TMagicInput>
|
||||
|
||||
<TMagicButton
|
||||
class="m-fileds-key-value-delete"
|
||||
type="danger"
|
||||
:size="size"
|
||||
:disabled="disabled"
|
||||
circle
|
||||
plain
|
||||
:icon="Delete"
|
||||
@click="deleteHandler(index)"
|
||||
></TMagicButton>
|
||||
<TMagicButton
|
||||
class="m-fileds-key-value-delete"
|
||||
type="danger"
|
||||
:size="size"
|
||||
:disabled="disabled"
|
||||
circle
|
||||
plain
|
||||
:icon="Delete"
|
||||
@click="deleteHandler(index)"
|
||||
></TMagicButton>
|
||||
</div>
|
||||
|
||||
<TMagicButton type="primary" :size="size" :disabled="disabled" plain :icon="Plus" @click="addHandler"
|
||||
>添加</TMagicButton
|
||||
>
|
||||
</div>
|
||||
|
||||
<TMagicButton type="primary" :size="size" :disabled="disabled" plain :icon="Plus" @click="addHandler"
|
||||
>添加</TMagicButton
|
||||
>
|
||||
<MagicCodeEditor
|
||||
v-if="config.advanced && showCode"
|
||||
height="200px"
|
||||
:init-values="model[name]"
|
||||
language="json"
|
||||
:options="{
|
||||
readOnly: disabled,
|
||||
}"
|
||||
:parse="true"
|
||||
@save="save"
|
||||
></MagicCodeEditor>
|
||||
|
||||
<TMagicButton
|
||||
v-if="config.advanced"
|
||||
size="default"
|
||||
:disabled="disabled"
|
||||
text
|
||||
:icon="CodeIcon"
|
||||
@click="showCode = !showCode"
|
||||
></TMagicButton>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
@ -42,6 +65,9 @@ import { Delete, Plus } from '@element-plus/icons-vue';
|
||||
import { TMagicButton, TMagicInput } from '@tmagic/design';
|
||||
import type { FieldProps } from '@tmagic/form';
|
||||
|
||||
import CodeIcon from '@editor/icons/CodeIcon.vue';
|
||||
import MagicCodeEditor from '@editor/layouts/CodeEditor.vue';
|
||||
|
||||
defineOptions({
|
||||
name: 'MEditorKeyValue',
|
||||
});
|
||||
@ -52,6 +78,7 @@ const props = withDefaults(
|
||||
type: 'key-value';
|
||||
name: string;
|
||||
text: string;
|
||||
advanced?: boolean;
|
||||
}>
|
||||
>(),
|
||||
{
|
||||
@ -62,9 +89,19 @@ const props = withDefaults(
|
||||
const emit = defineEmits<(e: 'change', value: Record<string, any>) => void>();
|
||||
|
||||
const records = ref<[string, string][]>([]);
|
||||
const showCode = ref(false);
|
||||
|
||||
watchEffect(() => {
|
||||
records.value = Object.entries(props.model[props.name] || {});
|
||||
const initValues: [string, any][] = Object.entries(props.model[props.name] || {});
|
||||
|
||||
for (const [, value] of initValues) {
|
||||
if (typeof value !== 'string') {
|
||||
showCode.value = true;
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
records.value = initValues;
|
||||
});
|
||||
|
||||
const getValue = () => {
|
||||
@ -93,4 +130,8 @@ const deleteHandler = (index: number) => {
|
||||
records.value.splice(index, 1);
|
||||
emit('change', getValue());
|
||||
};
|
||||
|
||||
const save = (v: string | any) => {
|
||||
emit('change', v);
|
||||
};
|
||||
</script>
|
||||
|
@ -1,3 +1,10 @@
|
||||
.m-fields-key-value {
|
||||
display: flex;
|
||||
justify-items: center;
|
||||
align-items: top;
|
||||
width: 100%;
|
||||
}
|
||||
|
||||
.m-fields-key-value-item {
|
||||
display: flex;
|
||||
margin-bottom: 10px;
|
||||
|
@ -46,6 +46,7 @@ export default [
|
||||
name: 'data',
|
||||
type: 'key-value',
|
||||
defaultValue: {},
|
||||
advanced: true,
|
||||
text: '请求体',
|
||||
},
|
||||
{
|
||||
|
Loading…
x
Reference in New Issue
Block a user