mirror of
https://github.com/moshowgame/SpringBootCodeGenerator.git
synced 2025-12-26 05:48:33 +08:00
199 lines
5.6 KiB
JavaScript
199 lines
5.6 KiB
JavaScript
|
|
$.inputArea = undefined;
|
|
$.outputArea = undefined;
|
|
|
|
$(function(){
|
|
//powered by zhengkai.blog.csdn.net
|
|
|
|
//init input code area
|
|
$.inputArea = CodeMirror.fromTextArea(document.getElementById("inputArea"), {
|
|
mode: "text/x-sql", // SQL
|
|
theme: "idea", // IDEA主题
|
|
lineNumbers: true, //显示行号
|
|
smartIndent: true, // 自动缩进
|
|
autoCloseBrackets: true// 自动补全括号
|
|
});
|
|
$.inputArea.setSize('auto','auto');
|
|
|
|
// init output code area
|
|
$.outputArea = CodeMirror.fromTextArea(document.getElementById("outputArea"), {
|
|
theme: "idea", // IDEA主题
|
|
lineNumbers: true, //显示行号
|
|
smartIndent: true, // 自动缩进
|
|
autoCloseBrackets: true// 自动补全括号
|
|
});
|
|
$.outputArea.setSize('auto','auto');
|
|
|
|
});
|
|
|
|
|
|
const vm = new Vue({
|
|
el: '#rrapp',
|
|
data: {
|
|
formData: {
|
|
tableSql: "CREATE TABLE 'sys_user_info' (\n" +
|
|
" 'user_id' int(11) NOT NULL AUTO_INCREMENT COMMENT '用户编号',\n" +
|
|
" 'user_name' varchar(255) NOT NULL COMMENT '用户名',\n" +
|
|
" 'status' tinyint(1) NOT NULL COMMENT '状态',\n" +
|
|
" 'create_time' datetime NOT NULL COMMENT '创建时间',\n" +
|
|
//下面可以留着方便开发调试时打开
|
|
// " `updateTime` datetime NOT NULL COMMENT '更新时间',\n" +
|
|
// " ABc_under_Line-Hypen-CamelCase varchar comment '乱七八糟的命名风格',\n" +
|
|
" PRIMARY KEY ('user_id')\n" +
|
|
") ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='用户信息'",
|
|
options: {
|
|
dataType: "sql",
|
|
|
|
authorName: "${(value.author)!!}",
|
|
packageName: "${(value.packageName)!!}",
|
|
returnUtilSuccess: "${(value.returnUtilSuccess)!!}",
|
|
returnUtilFailure: "${(value.returnUtilFailure)!!}",
|
|
|
|
isPackageType: true,
|
|
isSwagger: false,
|
|
isAutoImport: false,
|
|
isWithPackage: false,
|
|
isComment: true,
|
|
isLombok: true,
|
|
|
|
ignorePrefix:"sys_",
|
|
tinyintTransType: "int",
|
|
nameCaseType: "CamelCase",
|
|
timeTransType: "Date"
|
|
}
|
|
},
|
|
templates:[{}],
|
|
historicalData:[],
|
|
currentSelect:'plusentity',
|
|
outputStr: "${(value.outputStr)!!}",
|
|
outputJson: {}
|
|
},
|
|
methods: {
|
|
//set the template for output 选择页面输出的模板类型
|
|
setOutputModel: function (event) {
|
|
const targetModel = event.target.innerText.trim();
|
|
console.log(targetModel);
|
|
vm.currentSelect = targetModel ;
|
|
if(vm.outputStr.length>30){
|
|
vm.outputStr=vm.outputJson[targetModel];
|
|
$.outputArea.setValue(vm.outputStr.trim());
|
|
//console.log(vm.outputStr);
|
|
$.outputArea.setSize('auto', 'auto');
|
|
}
|
|
},
|
|
//switch HistoricalData
|
|
switchHistoricalData: function (event) {
|
|
const tableName = event.target.innerText.trim();
|
|
console.log(tableName);
|
|
if (window.sessionStorage){
|
|
const valueSession = sessionStorage.getItem(tableName);
|
|
vm.outputJson = JSON.parse(valueSession);
|
|
console.log(valueSession);
|
|
alert("切换历史记录成功:"+tableName);
|
|
}else{
|
|
alert("浏览器不支持sessionStorage");
|
|
}
|
|
vm.outputStr=vm.outputJson[vm.currentSelect].trim();
|
|
$.outputArea.setValue(vm.outputStr);
|
|
//console.log(vm.outputStr);
|
|
$.outputArea.setSize('auto', 'auto');
|
|
},
|
|
setHistoricalData : function (tableName){
|
|
//add new table only
|
|
if(vm.historicalData.indexOf(tableName)<0){
|
|
vm.historicalData.unshift(tableName);
|
|
}
|
|
//remove last record , if more than N
|
|
if(vm.historicalData.length>9){
|
|
vm.historicalData.splice(9,1);
|
|
}
|
|
//get and set to session data
|
|
const valueSession = sessionStorage.getItem(tableName);
|
|
//remove if exists
|
|
if(valueSession!==undefined && valueSession!=null){
|
|
sessionStorage.removeItem(tableName);
|
|
}
|
|
//set data to session
|
|
sessionStorage.setItem(tableName,JSON.stringify(vm.outputJson));
|
|
//console.log(vm.historicalData);
|
|
},
|
|
//request with formData to generate the code 根据参数生成代码
|
|
generate : function(){
|
|
//get value from codemirror
|
|
vm.formData.tableSql=$.inputArea.getValue();
|
|
axios.post(basePath+"/code/generate",vm.formData).then(function(res){
|
|
if(res.code===500){
|
|
error("生成失败");
|
|
return;
|
|
}
|
|
setAllCookie();
|
|
//console.log(res.outputJson);
|
|
vm.outputJson=res.outputJson;
|
|
// console.log(vm.outputJson["bootstrap-ui"]);
|
|
vm.outputStr=vm.outputJson[vm.currentSelect].trim();
|
|
//console.log(vm.outputJson["bootstrap-ui"]);
|
|
//console.log(vm.outputStr);
|
|
$.outputArea.setValue(vm.outputStr);
|
|
$.outputArea.setSize('auto', 'auto');
|
|
//add to historicalData
|
|
vm.setHistoricalData(res.outputJson.tableName);
|
|
alert("生成成功");
|
|
});
|
|
},
|
|
copy : function (){
|
|
navigator.clipboard.writeText(vm.outputStr.trim()).then(r => {alert("已复制")});
|
|
}
|
|
},
|
|
created: function () {
|
|
//load all templates for selections 加载所有模板供选择
|
|
axios.post(basePath+"/template/all",{
|
|
id:1234
|
|
}).then(function(res){
|
|
//console.log(res.templates);
|
|
vm.templates = JSON.parse(res.templates);
|
|
// console.log(vm.templates);
|
|
});
|
|
},
|
|
updated: function () {
|
|
}
|
|
});
|
|
|
|
/**
|
|
* 将所有 需要 保留历史纪录的字段写入Cookie中
|
|
*/
|
|
function setAllCookie() {
|
|
var arr = list_key_need_load();
|
|
for (var str of arr){
|
|
setOneCookie(str);
|
|
}
|
|
}
|
|
|
|
function setOneCookie(key) {
|
|
setCookie(key, vm.formData.options[key]);
|
|
}
|
|
|
|
/**
|
|
* 将所有 历史纪录 重加载回页面
|
|
*/
|
|
function loadAllCookie() {
|
|
//console.log(vm);
|
|
var arr = list_key_need_load();
|
|
for (var str of arr){
|
|
loadOneCookie(str);
|
|
}
|
|
}
|
|
|
|
function loadOneCookie(key) {
|
|
if (getCookie(key)!==""){
|
|
vm.formData.options[key] = getCookie(key);
|
|
}
|
|
}
|
|
|
|
/**
|
|
* 将 所有 需要 纪录的 字段写入数组
|
|
* @returns {[string]}
|
|
*/
|
|
function list_key_need_load() {
|
|
return ["authorName","packageName","returnUtilSuccess","returnUtilFailure","ignorePrefix","tinyintTransType","timeTransType"];
|
|
}
|