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
160 lines
6.5 KiB
@@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> |