Files
xservice-script/script/src/main/resources/statics/js/main.js
2026-01-30 22:39:43 +08:00

182 lines
6.4 KiB
JavaScript
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

$.inputArea = undefined;
$.outputArea = undefined;
$(function () {
$.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"), {
mode: "text/x-java", // JAV
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: {
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');
}
},
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);
},
generate: function () {
vm.formData.tableSql = $.inputArea.getValue();
axios.post(basePath + "/code/generate", vm.formData).then(function (res) {
if (res.data.code === '200' && res.data.message === 'success') {
setAllCookie();
vm.outputJson = res.data.data[0];
//兼容后端返回数据格式
vm.outputStr = vm.outputJson[vm.currentSelect].trim();
$.outputArea.setValue(vm.outputStr);
$.outputArea.setSize('auto', 'auto');
vm.setHistoricalData(vm.outputJson.tableName);
alert("生成成功");
return;
}
console.log(res);
error("生成失败请检查SQL语句!!!" + res.data.message);
});
}
},
created: function () {
//load all templates for selections 加载所有模板供选择
axios.post(basePath + "/template/all", {
id: 1234
}).then(function (res) {
vm.templates = res.data.data
});
}
});
/**
* 将所有 需要 保留历史纪录的字段写入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"];
}