You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

160 lines
6.5 KiB

3 weeks ago
@@master_page.html
<link href="css/page_table_list.css" rel="stylesheet" />
<style>
#editorResult .ace_cursor {
display: none !important; /* 或者使用 caret-color: transparent; */
}
.ace_editor {
z-index: 999
}
</style>
<div id="apibox" class="card">
<div class="card-header"><h4>{{title}}</h4></div>
<div class="p-l-15">
<code>{{message1}}输出块,根目录以Model开头,非根目录以变量开头,支持C#自带函数</code>
</div>
<div class="p-l-15">
<code>{{message2}} 代码块,可以if foreach 逻辑计算等,支持C#自带语法</code>
</div>
<div class="card-body">
<div class="form-group">
<label for="example-text-input">测试数据</label>
<div id="editorJson" style="height: calc(30vh - 100px); min-height: 300px"></div>
</div>
<div class="form-group">
<label for="example-text-input">测试模版 <span class="red">(复制这个)</span></label>
<div id="editorTemplate" style="height: calc(30vh - 100px);min-height:500px"></div>
</div>
<div class="form-group">
<button type="submit" @click="submitTest" class="btn btn-primary m-r-5">测 试</button>
<button type="button" class="btn btn-default" onclick="javascript: window.close(); return false;">关 闭</button>
</div>
<div class="form-group">
<label for="example-text-input">测试结果</label>
<div id="editorResult" style="height: calc(30vh - 100px); min-height: 500px"></div>
</div>
</div>
</div>
<script src="js/ace/src-min/ace.js"></script>
<script src="js/ace/src-min/ext-language_tools.js"></script>
<script>
var vueObj = new Vue({
el: '#apibox',
data: {
title: null,
message1: "{{}}",
message2:"<%%>"
},
mounted() {
this.fetchData();
},
methods: {
fetchData() {
var page = this.getPageInfo();
this.initEditor("editorJson", "json5");
this.initEditor("editorTemplate", page.style);
this.initEditor("editorResult", page.style, true);
this.bindDefalutTemplate();
this.bindTemplateFormatJson();
var urlParams = new URLSearchParams(window.location.search);
var type = urlParams.get('type');
if (type == 1)
{
this.title = "实体模版在线教程";
}
},
onSearch: function (page) {
},
initEditor: function (id, style, isReadOnly) {
var editor = ace.edit(id);
if (isReadOnly) {
editor.setTheme("ace/theme/monokai");
} else {
editor.setTheme("ace/theme/twilight");
}
editor.setOption("showPrintMargin", false);
editor.setOption("enableBasicAutocompletion", true);
editor.setOption("enableSnippets", true);
editor.setOption("useWorker", false);
editor.setOption("enableLiveAutocompletion", true)
editor.session.setMode("ace/mode/" + style);
editor.setReadOnly(isReadOnly);
editor.setValue(null);
editor.selection.clearSelection();
editor.resize();
},
getPageInfo: function () {
var urlParams = new URLSearchParams(window.location.search);
var type = urlParams.get('type');
var style = urlParams.get('style');
var result = { style: style };
if (type == 1) {
return result;
} else if (type == 2) {
return result;
}
},
submitTest: function () {
var data = ace.edit("editorJson").getValue();
var template = ace.edit("editorTemplate").getValue();
var urlParams = new URLSearchParams(window.location.search);
var type = urlParams.get('type');
var url = "/PrivateReZeroRoute/100003/ExecTemplate";
axios.post(url, { type: type, data: data, template: template }, jwHeader)
.then(response => {
this.error = null;
var editor = ace.edit("editorResult");
if (response.data && response.data.message) {
editor.setValue(response.data.message);
} else {
editor.setValue(response.data);
}
editor.selection.clearSelection();
})
.catch(error => {
this.error = error.message;
this.data = null;
});
},
bindDefalutTemplate: function () {
var urlParams = new URLSearchParams(window.location.search);
var type = urlParams.get('type');
var url = "/PrivateReZeroRoute/100003/GetDefalutTemplate";
axios.post(url, { type: type }, jwHeader)
.then(response => {
this.error = null;
var editor = ace.edit("editorTemplate");
editor.setValue(response.data);
editor.selection.clearSelection();
})
.catch(error => {
this.error = error.message;
this.data = null;
});
},
bindTemplateFormatJson: function () {
var urlParams = new URLSearchParams(window.location.search);
var type = urlParams.get('type');
var url = "/PrivateReZeroRoute/100003/GetTemplateFormatJson";
axios.post(url, { type: type }, jwHeader)
.then(response => {
this.error = null;
var editor = ace.edit("editorJson");
editor.setValue(JSON.stringify(response.data, null, 4));
editor.selection.clearSelection();
})
.catch(error => {
this.error = error.message;
this.data = null;
});
}
}
});</script>