mirror of
https://gitee.com/dromara/mayfly-go
synced 2025-11-27 11:30:25 +08:00
refactor: redis值格式化方式调整
This commit is contained in:
@@ -13,7 +13,7 @@
|
|||||||
"countup.js": "^2.0.7",
|
"countup.js": "^2.0.7",
|
||||||
"cropperjs": "^1.5.11",
|
"cropperjs": "^1.5.11",
|
||||||
"echarts": "^5.3.3",
|
"echarts": "^5.3.3",
|
||||||
"element-plus": "^2.2.22",
|
"element-plus": "^2.2.23",
|
||||||
"jsencrypt": "^3.2.1",
|
"jsencrypt": "^3.2.1",
|
||||||
"lodash": "^4.17.21",
|
"lodash": "^4.17.21",
|
||||||
"mitt": "^3.0.0",
|
"mitt": "^3.0.0",
|
||||||
|
|||||||
@@ -11,7 +11,7 @@
|
|||||||
import { ref, watch, toRefs, reactive, onMounted, onBeforeUnmount } from 'vue';
|
import { ref, watch, toRefs, reactive, onMounted, onBeforeUnmount } from 'vue';
|
||||||
import EditorWorker from 'monaco-editor/esm/vs/editor/editor.worker.js?worker';
|
import EditorWorker from 'monaco-editor/esm/vs/editor/editor.worker.js?worker';
|
||||||
import * as monaco from 'monaco-editor';
|
import * as monaco from 'monaco-editor';
|
||||||
import { editor } from 'monaco-editor';
|
import { editor, languages } from 'monaco-editor';
|
||||||
import JsonWorker from 'monaco-editor/esm/vs/language/json/json.worker?worker'
|
import JsonWorker from 'monaco-editor/esm/vs/language/json/json.worker?worker'
|
||||||
// 主题仓库 https://github.com/brijeshb42/monaco-themes
|
// 主题仓库 https://github.com/brijeshb42/monaco-themes
|
||||||
// 主题例子 https://editor.bitwiser.in/
|
// 主题例子 https://editor.bitwiser.in/
|
||||||
@@ -59,6 +59,10 @@ const languages = [
|
|||||||
value: 'shell',
|
value: 'shell',
|
||||||
label: 'Shell',
|
label: 'Shell',
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
value: 'json',
|
||||||
|
label: 'JSON',
|
||||||
|
},
|
||||||
{
|
{
|
||||||
value: 'yaml',
|
value: 'yaml',
|
||||||
label: 'Yaml',
|
label: 'Yaml',
|
||||||
@@ -87,10 +91,6 @@ const languages = [
|
|||||||
value: 'javascript',
|
value: 'javascript',
|
||||||
label: 'Javascript',
|
label: 'Javascript',
|
||||||
},
|
},
|
||||||
{
|
|
||||||
value: 'json',
|
|
||||||
label: 'JSON',
|
|
||||||
},
|
|
||||||
{
|
{
|
||||||
value: 'java',
|
value: 'java',
|
||||||
label: 'Java',
|
label: 'Java',
|
||||||
@@ -165,7 +165,7 @@ watch(() => props.language, (newValue: any) => {
|
|||||||
|
|
||||||
const monacoTextarea: any = ref(null);
|
const monacoTextarea: any = ref(null);
|
||||||
|
|
||||||
let monacoEditorIns: editor.IStandaloneCodeEditor = null;
|
let monacoEditorIns: editor.IStandaloneCodeEditor = null as any;
|
||||||
let completionItemProvider: any = null;
|
let completionItemProvider: any = null;
|
||||||
|
|
||||||
self.MonacoEnvironment = {
|
self.MonacoEnvironment = {
|
||||||
@@ -185,11 +185,11 @@ const initMonacoEditorIns = () => {
|
|||||||
options.language = state.languageMode;
|
options.language = state.languageMode;
|
||||||
// 从localStorage中获取,通过store可能存在父子组件都使用store报错
|
// 从localStorage中获取,通过store可能存在父子组件都使用store报错
|
||||||
options.theme = JSON.parse(localStorage.getItem('themeConfig') as string).editorTheme || 'vs';
|
options.theme = JSON.parse(localStorage.getItem('themeConfig') as string).editorTheme || 'vs';
|
||||||
monacoEditorIns = monaco.editor.create(monacoTextarea.value, Object.assign(options, props.options));
|
monacoEditorIns = monaco.editor.create(monacoTextarea.value, Object.assign(options, props.options as any));
|
||||||
|
|
||||||
// 监听内容改变,双向绑定
|
// 监听内容改变,双向绑定
|
||||||
monacoEditorIns.onDidChangeModelContent(() => {
|
monacoEditorIns.onDidChangeModelContent(() => {
|
||||||
emit('update:modelValue', monacoEditorIns.getModel().getValue());
|
emit('update:modelValue', monacoEditorIns.getModel()?.getValue());
|
||||||
})
|
})
|
||||||
|
|
||||||
// 动态设置主题
|
// 动态设置主题
|
||||||
@@ -200,6 +200,9 @@ const changeLanguage = (value: any) => {
|
|||||||
console.log('change lan');
|
console.log('change lan');
|
||||||
// 获取当前的文档模型
|
// 获取当前的文档模型
|
||||||
let oldModel = monacoEditorIns.getModel()
|
let oldModel = monacoEditorIns.getModel()
|
||||||
|
if (!oldModel) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
// 创建一个新的文档模型
|
// 创建一个新的文档模型
|
||||||
let newModel = monaco.editor.createModel(oldModel.getValue(), value)
|
let newModel = monaco.editor.createModel(oldModel.getValue(), value)
|
||||||
// 设置成新的
|
// 设置成新的
|
||||||
@@ -213,7 +216,7 @@ const changeLanguage = (value: any) => {
|
|||||||
}
|
}
|
||||||
|
|
||||||
const setEditorValue = (value: any) => {
|
const setEditorValue = (value: any) => {
|
||||||
monacoEditorIns.getModel().setValue(value)
|
monacoEditorIns.getModel()?.setValue(value)
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -237,14 +240,14 @@ const registeShell = () => {
|
|||||||
label: item,
|
label: item,
|
||||||
kind: monaco.languages.CompletionItemKind.Keyword,
|
kind: monaco.languages.CompletionItemKind.Keyword,
|
||||||
insertText: item,
|
insertText: item,
|
||||||
});
|
} as any);
|
||||||
})
|
})
|
||||||
shellLan.builtins.forEach((item: any) => {
|
shellLan.builtins.forEach((item: any) => {
|
||||||
suggestions.push({
|
suggestions.push({
|
||||||
label: item,
|
label: item,
|
||||||
kind: monaco.languages.CompletionItemKind.Property,
|
kind: monaco.languages.CompletionItemKind.Property,
|
||||||
insertText: item,
|
insertText: item,
|
||||||
});
|
} as any);
|
||||||
})
|
})
|
||||||
return {
|
return {
|
||||||
suggestions: suggestions
|
suggestions: suggestions
|
||||||
@@ -252,6 +255,16 @@ const registeShell = () => {
|
|||||||
}
|
}
|
||||||
})
|
})
|
||||||
};
|
};
|
||||||
|
|
||||||
|
const format = () => {
|
||||||
|
/*
|
||||||
|
触发自动格式化;
|
||||||
|
*/
|
||||||
|
monacoEditorIns.trigger('', 'editor.action.formatDocument', '')
|
||||||
|
}
|
||||||
|
|
||||||
|
defineExpose({ format })
|
||||||
|
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
<style lang="scss">
|
<style lang="scss">
|
||||||
|
|||||||
@@ -290,3 +290,7 @@ body,
|
|||||||
margin-bottom: 3px;
|
margin-bottom: 3px;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
.el-table-z-index-inherit .el-table .el-table__cell {
|
||||||
|
z-index: inherit !important;
|
||||||
|
}
|
||||||
108
mayfly_go_web/src/views/ops/redis/FormatInput.vue
Normal file
108
mayfly_go_web/src/views/ops/redis/FormatInput.vue
Normal file
@@ -0,0 +1,108 @@
|
|||||||
|
<template>
|
||||||
|
<div style="width: 100%;">
|
||||||
|
<el-input @input="onInput" type="textarea" v-model="modelValue" :autosize="autosize" :rows="rows" />
|
||||||
|
<div style="padding: 3px; float: right" class="mr5 format-btns">
|
||||||
|
<div>
|
||||||
|
<el-button @click="showFormatDialog()" :underline="false" type="success" icon="MagicStick" size="small">
|
||||||
|
</el-button>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<el-dialog @opened="opened" width="60%" :title="title" v-model="formatDialog.visible"
|
||||||
|
:close-on-click-modal="false">
|
||||||
|
<monaco-editor ref="monacoEditorRef" :canChangeMode="true" v-model="formatDialog.value" language="json" />
|
||||||
|
<template #footer>
|
||||||
|
<div>
|
||||||
|
<el-button @click="formatDialog.visible = false">取 消</el-button>
|
||||||
|
<el-button @click="onConfirmValue" type="primary">确 定</el-button>
|
||||||
|
</div>
|
||||||
|
</template>
|
||||||
|
</el-dialog>
|
||||||
|
</div>
|
||||||
|
</template>
|
||||||
|
<script lang="ts" setup>
|
||||||
|
import { ref, reactive, watch, toRefs, onMounted } from 'vue';
|
||||||
|
import MonacoEditor from '@/components/monaco/MonacoEditor.vue';
|
||||||
|
|
||||||
|
const props = defineProps({
|
||||||
|
title: {
|
||||||
|
type: String,
|
||||||
|
},
|
||||||
|
modelValue: {
|
||||||
|
type: String,
|
||||||
|
},
|
||||||
|
rows: {
|
||||||
|
type: Number,
|
||||||
|
},
|
||||||
|
autosize: {
|
||||||
|
type: Object
|
||||||
|
}
|
||||||
|
})
|
||||||
|
|
||||||
|
const emit = defineEmits(['update:modelValue'])
|
||||||
|
|
||||||
|
const monacoEditorRef: any = ref(null)
|
||||||
|
|
||||||
|
const state = reactive({
|
||||||
|
rows: 2,
|
||||||
|
autosize: {},
|
||||||
|
modelValue: '',
|
||||||
|
formatDialog: {
|
||||||
|
visible: false,
|
||||||
|
value: '',
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
const {
|
||||||
|
rows,
|
||||||
|
autosize,
|
||||||
|
modelValue,
|
||||||
|
formatDialog,
|
||||||
|
} = toRefs(state)
|
||||||
|
|
||||||
|
watch(
|
||||||
|
() => props.modelValue,
|
||||||
|
(val: any) => {
|
||||||
|
state.modelValue = val;
|
||||||
|
}
|
||||||
|
);
|
||||||
|
|
||||||
|
onMounted(() => {
|
||||||
|
state.modelValue = props.modelValue as any;
|
||||||
|
state.autosize = props.autosize as any;
|
||||||
|
state.rows = props.rows as any;
|
||||||
|
})
|
||||||
|
|
||||||
|
const showFormatDialog = () => {
|
||||||
|
state.formatDialog.visible = true;
|
||||||
|
state.formatDialog.value = state.modelValue;
|
||||||
|
}
|
||||||
|
|
||||||
|
const opened = () => {
|
||||||
|
monacoEditorRef.value.format();
|
||||||
|
};
|
||||||
|
|
||||||
|
const onConfirmValue = () => {
|
||||||
|
// 尝试压缩json
|
||||||
|
try {
|
||||||
|
state.modelValue = JSON.stringify(JSON.parse(state.formatDialog.value));
|
||||||
|
} catch (e) {
|
||||||
|
state.modelValue = state.formatDialog.value;
|
||||||
|
}
|
||||||
|
emit('update:modelValue', state.modelValue);
|
||||||
|
state.formatDialog.visible = false;
|
||||||
|
}
|
||||||
|
|
||||||
|
const onInput = (value: any) => {
|
||||||
|
emit('update:modelValue', value);
|
||||||
|
}
|
||||||
|
|
||||||
|
</script>
|
||||||
|
<style lang="scss">
|
||||||
|
.format-btns {
|
||||||
|
position: absolute;
|
||||||
|
z-index: 2;
|
||||||
|
right: 5px;
|
||||||
|
top: 4px;
|
||||||
|
max-width: 120px;
|
||||||
|
}
|
||||||
|
</style>
|
||||||
@@ -1,5 +1,5 @@
|
|||||||
<template>
|
<template>
|
||||||
<el-dialog :title="title" v-model="dialogVisible" :before-close="cancel" width="800px" :destroy-on-close="true">
|
<el-dialog class="el-table-z-index-inherit" :title="title" v-model="dialogVisible" :before-close="cancel" width="800px" :destroy-on-close="true">
|
||||||
<el-form label-width="85px">
|
<el-form label-width="85px">
|
||||||
<el-form-item prop="key" label="key:">
|
<el-form-item prop="key" label="key:">
|
||||||
<el-input :disabled="operationType == 2" v-model="key.key"></el-input>
|
<el-input :disabled="operationType == 2" v-model="key.key"></el-input>
|
||||||
@@ -33,7 +33,7 @@
|
|||||||
</div>
|
</div>
|
||||||
</el-form>
|
</el-form>
|
||||||
</el-row>
|
</el-row>
|
||||||
<el-table :data="hashValues" stripe style="width: 100%">
|
<el-table :data="hashValues" stripe style="width: 100%;">
|
||||||
<el-table-column prop="field" label="field" width>
|
<el-table-column prop="field" label="field" width>
|
||||||
<template #default="scope">
|
<template #default="scope">
|
||||||
<el-input v-model="scope.row.field" clearable size="small"></el-input>
|
<el-input v-model="scope.row.field" clearable size="small"></el-input>
|
||||||
@@ -41,8 +41,8 @@
|
|||||||
</el-table-column>
|
</el-table-column>
|
||||||
<el-table-column prop="value" label="value" min-width="200">
|
<el-table-column prop="value" label="value" min-width="200">
|
||||||
<template #default="scope">
|
<template #default="scope">
|
||||||
<el-input v-model="scope.row.value" clearable type="textarea"
|
<format-input :title="`type:【${key.type}】key:【${key.key}】field:【${scope.row.field}】`" v-model="scope.row.value"
|
||||||
:autosize="{ minRows: 2, maxRows: 10 }" size="small"></el-input>
|
:autosize="{ minRows: 2, maxRows: 10 }" size="small"></format-input>
|
||||||
</template>
|
</template>
|
||||||
</el-table-column>
|
</el-table-column>
|
||||||
<el-table-column label="操作" width="120">
|
<el-table-column label="操作" width="120">
|
||||||
@@ -68,6 +68,7 @@ import { reactive, watch, toRefs } from 'vue';
|
|||||||
import { redisApi } from './api';
|
import { redisApi } from './api';
|
||||||
import { ElMessage, ElMessageBox } from 'element-plus';
|
import { ElMessage, ElMessageBox } from 'element-plus';
|
||||||
import { isTrue, notEmpty } from '@/common/assert';
|
import { isTrue, notEmpty } from '@/common/assert';
|
||||||
|
import FormatInput from './FormatInput.vue';
|
||||||
|
|
||||||
const props = defineProps({
|
const props = defineProps({
|
||||||
visible: {
|
visible: {
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
<template>
|
<template>
|
||||||
<el-dialog :title="title" v-model="dialogVisible" :before-close="cancel" width="800px" :destroy-on-close="true">
|
<el-dialog class="el-table-z-index-inherit" :title="title" v-model="dialogVisible" :before-close="cancel" width="800px" :destroy-on-close="true">
|
||||||
<el-form label-width="85px">
|
<el-form label-width="85px">
|
||||||
<el-form-item prop="key" label="key:">
|
<el-form-item prop="key" label="key:">
|
||||||
<el-input :disabled="operationType == 2" v-model="key.key"></el-input>
|
<el-input :disabled="operationType == 2" v-model="key.key"></el-input>
|
||||||
@@ -18,8 +18,8 @@
|
|||||||
<el-table :data="value" stripe style="width: 100%">
|
<el-table :data="value" stripe style="width: 100%">
|
||||||
<el-table-column prop="value" label="value" min-width="200">
|
<el-table-column prop="value" label="value" min-width="200">
|
||||||
<template #default="scope">
|
<template #default="scope">
|
||||||
<el-input v-model="scope.row.value" clearable type="textarea"
|
<format-input :title="`type:【${key.type}】key:【${key.key}】`" v-model="scope.row.value"
|
||||||
:autosize="{ minRows: 2, maxRows: 10 }" size="small"></el-input>
|
:autosize="{ minRows: 2, maxRows: 10 }" size="small"></format-input>
|
||||||
</template>
|
</template>
|
||||||
</el-table-column>
|
</el-table-column>
|
||||||
<el-table-column label="操作" width="140">
|
<el-table-column label="操作" width="140">
|
||||||
@@ -48,6 +48,7 @@
|
|||||||
import { reactive, watch, toRefs } from 'vue';
|
import { reactive, watch, toRefs } from 'vue';
|
||||||
import { redisApi } from './api';
|
import { redisApi } from './api';
|
||||||
import { ElMessage } from 'element-plus';
|
import { ElMessage } from 'element-plus';
|
||||||
|
import FormatInput from './FormatInput.vue';
|
||||||
|
|
||||||
const props = defineProps({
|
const props = defineProps({
|
||||||
visible: {
|
visible: {
|
||||||
|
|||||||
@@ -33,7 +33,8 @@
|
|||||||
</template></el-input>
|
</template></el-input>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
<el-form-item prop="db" label="库号:" required>
|
<el-form-item prop="db" label="库号:" required>
|
||||||
<el-select @change="changeDb" v-model="dbList" multiple placeholder="请选择可操作库号" style="width: 100%">
|
<el-select @change="changeDb" v-model="dbList" multiple allow-create filterable
|
||||||
|
placeholder="请选择可操作库号" style="width: 100%">
|
||||||
<el-option v-for="db in [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15]" :key="db"
|
<el-option v-for="db in [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15]" :key="db"
|
||||||
:label="db" :value="db" />
|
:label="db" :value="db" />
|
||||||
</el-select>
|
</el-select>
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
<template>
|
<template>
|
||||||
<el-dialog :title="title" v-model="dialogVisible" :before-close="cancel" width="800px" :destroy-on-close="true">
|
<el-dialog class="el-table-z-index-inherit" :title="title" v-model="dialogVisible" :before-close="cancel" width="800px" :destroy-on-close="true">
|
||||||
<el-form label-width="85px">
|
<el-form label-width="85px">
|
||||||
<el-form-item prop="key" label="key:">
|
<el-form-item prop="key" label="key:">
|
||||||
<el-input :disabled="operationType == 2" v-model="key.key"></el-input>
|
<el-input :disabled="operationType == 2" v-model="key.key"></el-input>
|
||||||
@@ -15,8 +15,8 @@
|
|||||||
<el-table :data="value" stripe style="width: 100%">
|
<el-table :data="value" stripe style="width: 100%">
|
||||||
<el-table-column prop="value" label="value" min-width="200">
|
<el-table-column prop="value" label="value" min-width="200">
|
||||||
<template #default="scope">
|
<template #default="scope">
|
||||||
<el-input v-model="scope.row.value" clearable type="textarea"
|
<format-input :title="`type:【${key.type}】key:【${key.key}】`" v-model="scope.row.value" clearable type="textarea"
|
||||||
:autosize="{ minRows: 2, maxRows: 10 }" size="small"></el-input>
|
:autosize="{ minRows: 2, maxRows: 10 }" size="small"></format-input>
|
||||||
</template>
|
</template>
|
||||||
</el-table-column>
|
</el-table-column>
|
||||||
<el-table-column label="操作" width="90">
|
<el-table-column label="操作" width="90">
|
||||||
@@ -40,6 +40,7 @@ import { reactive, watch, toRefs } from 'vue';
|
|||||||
import { redisApi } from './api';
|
import { redisApi } from './api';
|
||||||
import { ElMessage } from 'element-plus';
|
import { ElMessage } from 'element-plus';
|
||||||
import { isTrue, notEmpty } from '@/common/assert';
|
import { isTrue, notEmpty } from '@/common/assert';
|
||||||
|
import FormatInput from './FormatInput.vue';
|
||||||
|
|
||||||
const props = defineProps({
|
const props = defineProps({
|
||||||
visible: {
|
visible: {
|
||||||
@@ -77,7 +78,7 @@ const state = reactive({
|
|||||||
db: '0',
|
db: '0',
|
||||||
key: {
|
key: {
|
||||||
key: '',
|
key: '',
|
||||||
type: 'string',
|
type: 'set',
|
||||||
timed: -1,
|
timed: -1,
|
||||||
},
|
},
|
||||||
value: [{ value: '' }],
|
value: [{ value: '' }],
|
||||||
|
|||||||
@@ -12,12 +12,11 @@
|
|||||||
</el-form-item>
|
</el-form-item>
|
||||||
|
|
||||||
<div id="string-value-text" style="width: 100%">
|
<div id="string-value-text" style="width: 100%">
|
||||||
<el-input class="json-text" v-model="string.value" type="textarea"
|
<format-input :title="`type:【${key.type}】key:【${key.key}】`" v-model="string.value" :autosize="{ minRows: 10, maxRows: 20 }"></format-input>
|
||||||
:autosize="{ minRows: 10, maxRows: 20 }"></el-input>
|
<!-- <el-select class="text-type-select" @change="onChangeTextType" v-model="string.type">
|
||||||
<el-select class="text-type-select" @change="onChangeTextType" v-model="string.type">
|
|
||||||
<el-option key="text" label="text" value="text"> </el-option>
|
<el-option key="text" label="text" value="text"> </el-option>
|
||||||
<el-option key="json" label="json" value="json"> </el-option>
|
<el-option key="json" label="json" value="json"> </el-option>
|
||||||
</el-select>
|
</el-select> -->
|
||||||
</div>
|
</div>
|
||||||
</el-form>
|
</el-form>
|
||||||
<template #footer>
|
<template #footer>
|
||||||
@@ -33,7 +32,7 @@ import { reactive, watch, toRefs } from 'vue';
|
|||||||
import { redisApi } from './api';
|
import { redisApi } from './api';
|
||||||
import { ElMessage } from 'element-plus';
|
import { ElMessage } from 'element-plus';
|
||||||
import { notEmpty } from '@/common/assert';
|
import { notEmpty } from '@/common/assert';
|
||||||
import { formatJsonString } from '@/common/utils/format';
|
import FormatInput from './FormatInput.vue';
|
||||||
|
|
||||||
const props = defineProps({
|
const props = defineProps({
|
||||||
visible: {
|
visible: {
|
||||||
@@ -144,24 +143,13 @@ const saveValue = async () => {
|
|||||||
notEmpty(state.key.key, 'key不能为空');
|
notEmpty(state.key.key, 'key不能为空');
|
||||||
|
|
||||||
notEmpty(state.string.value, 'value不能为空');
|
notEmpty(state.string.value, 'value不能为空');
|
||||||
const sv = { value: formatJsonString(state.string.value, true), id: state.redisId, db: state.db };
|
const sv = { value: state.string.value, id: state.redisId, db: state.db };
|
||||||
Object.assign(sv, state.key);
|
Object.assign(sv, state.key);
|
||||||
await redisApi.saveStringValue.request(sv);
|
await redisApi.saveStringValue.request(sv);
|
||||||
ElMessage.success('数据保存成功');
|
ElMessage.success('数据保存成功');
|
||||||
cancel();
|
cancel();
|
||||||
emit('valChange');
|
emit('valChange');
|
||||||
};
|
};
|
||||||
|
|
||||||
// 更改文本类型
|
|
||||||
const onChangeTextType = (val: string) => {
|
|
||||||
if (val == 'json') {
|
|
||||||
state.string.value = formatJsonString(state.string.value, false);
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
if (val == 'text') {
|
|
||||||
state.string.value = formatJsonString(state.string.value, true);
|
|
||||||
}
|
|
||||||
};
|
|
||||||
</script>
|
</script>
|
||||||
<style lang="scss">
|
<style lang="scss">
|
||||||
#string-value-text {
|
#string-value-text {
|
||||||
|
|||||||
@@ -662,10 +662,10 @@ echarts@^5.3.3:
|
|||||||
tslib "2.3.0"
|
tslib "2.3.0"
|
||||||
zrender "5.3.2"
|
zrender "5.3.2"
|
||||||
|
|
||||||
element-plus@^2.2.22:
|
element-plus@^2.2.23:
|
||||||
version "2.2.22"
|
version "2.2.23"
|
||||||
resolved "https://registry.npmmirror.com/element-plus/-/element-plus-2.2.22.tgz#6374a263ecdcf0a820c3d2e926bb28102542e254"
|
resolved "https://registry.npmmirror.com/element-plus/-/element-plus-2.2.23.tgz#63f512bcf74e46d6bec6d8882d9dab40c1fbebcb"
|
||||||
integrity sha512-gg2g2WOMNpWf0wGesymUvTV0VZDF/4khQKroSNeCV/vWJ/cqssPYdtqfGxTiFRt/f+JpyFkV7O1mo0yzMCzrBg==
|
integrity sha512-/7BtebETiknsW2TpSwt5RIpXxFQ1sbYoRelJqeiB1K9LcL0MwyQJ1rZSuWHBCHduMvfpogNZ66dwp2Giv9lYbg==
|
||||||
dependencies:
|
dependencies:
|
||||||
"@ctrl/tinycolor" "^3.4.1"
|
"@ctrl/tinycolor" "^3.4.1"
|
||||||
"@element-plus/icons-vue" "^2.0.6"
|
"@element-plus/icons-vue" "^2.0.6"
|
||||||
|
|||||||
Reference in New Issue
Block a user