usemodelgroup.js 8.1 KB
Newer Older
doc_wei's avatar
doc_wei 已提交
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20

layui.config({
	base: basePath, 
	version: skyeyeVersion
}).extend({
    window: 'js/winui.window'
}).define(['window', 'table', 'jquery', 'winui', 'form', 'codemirror', 'xml', 'clike', 'css', 'htmlmixed', 'javascript', 'nginx',
           'solr', 'sql', 'vue'], function (exports) {
	var index = parent.layer.getFrameIndex(window.name);
	winui.renderColor();
	var $ = layui.$,
		form = layui.form,
		table = layui.table;
	
	var jsCreateClick = false;//是否检索生成
	
	var editId = "";//当前编辑的模板id
	
	var list = [];//存储模板生成集合
	//集合内容
doc_wei's avatar
doc_wei 已提交
21
	//{
doc_wei's avatar
doc_wei 已提交
22 23 24 25 26 27 28 29 30 31 32 33 34 35
	//		modelId:模板id,
	//		content:当前内容,
	//		tableName:表名,
	//		groupId:模板所属分组id
	//		modelName:模板别名
	//		modelContent:默认内容
	//		fileName:文件名称
	//		modelType:模板类型
	//}
	
	matchingLanguage();
	form.render();
	form.on('submit(formSearch)', function (data) {
        if (winui.verifyForm(data.elem)) {
36
        	var subData = [].concat(list);
doc_wei's avatar
doc_wei 已提交
37 38 39 40 41 42 43
        	if(subData.length == 0){
        		winui.window.msg('请先生成转换结果', {icon: 2,time: 2000});
        	}else if($('#modelList').find('li').length > subData.length){
        		winui.window.msg('您有模板未生成代码文件,请检查。', {icon: 2,time: 2000});
        	}else{
        		for(var i = 0; i < subData.length; i++){
        			subData[i].modelContent = "";
44
					subData[i].modelText = "";
doc_wei's avatar
doc_wei 已提交
45
        		}
46
        		AjaxPostUtil.request({url: reqBasePath + "codemodel014", params: {jsonData: encodeURIComponent(JSON.stringify(subData))}, type: 'json', method: 'POST', callback: function(json){
doc_wei's avatar
doc_wei 已提交
47 48 49 50 51 52 53 54 55 56 57 58 59
        			if(json.returnCode == 0){
        				winui.window.msg('保存成功,请前往生成历史下载。', {icon: 1,time: 2000}, function(){
	        				parent.layer.close(index);
	        				parent.refreshCode = '0';
        				});
        			}else{
        				winui.window.msg(json.returnMessage, {icon: 2,time: 2000});
        			}
        		}});
        	}
        }
        return false;
	});
doc_wei's avatar
doc_wei 已提交
60 61

	// 展示模板内容的对象
doc_wei's avatar
doc_wei 已提交
62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87
	var editor = CodeMirror.fromTextArea(document.getElementById("modelContent"), {
        mode : "text/x-java",  // 模式
        theme : "eclipse",  // CSS样式选择
        indentUnit : 2,  // 缩进单位,默认2
        smartIndent : true,  // 是否智能缩进
        tabSize : 4,  // Tab缩进,默认4
        readOnly : true,  // 是否只读,默认false
        showCursorWhenSelecting : true,
        lineNumbers : true,  // 是否显示行号
        styleActiveLine: true, //line选择是是否加亮
        matchBrackets: true,
    });
	
	var textEditor = CodeMirror.fromTextArea(document.getElementById("textContent"), {
        mode : "text/x-java",  // 模式
        theme : "eclipse",  // CSS样式选择
        indentUnit : 2,  // 缩进单位,默认2
        smartIndent : true,  // 是否智能缩进
        tabSize : 4,  // Tab缩进,默认4
        readOnly : true,  // 是否只读,默认false
        showCursorWhenSelecting : true,
        lineNumbers : true,  // 是否显示行号
        styleActiveLine: true, //line选择是是否加亮
        matchBrackets: true,
    });
	
doc_wei's avatar
doc_wei 已提交
88
	// 加载模块
doc_wei's avatar
doc_wei 已提交
89 90 91 92 93
	showGrid({
	 	id: "modelList",
	 	url: reqBasePath + "codemodel013",
	 	params: {groupId: parent.rowId},
	 	pagination: false,
doc_wei's avatar
doc_wei 已提交
94 95
	 	template: getFileContent('tpl/codemodelgroup/codeModelListItem.tpl'),
	 	ajaxSendLoadBefore: function(hdb, json){
doc_wei's avatar
doc_wei 已提交
96 97 98 99 100 101 102 103 104 105 106 107 108
	 	},
	 	options: {
	 		'click .selModel':function(index, row){//查看模板
	 			var mode = returnModel(row.modelType);
	        	if (!isNull(mode.length)) {
					editor.setOption('mode', mode);
				} 
	        	editor.setValue(row.modelContent);
	        	layer.open({
		            id: '模板内容',
		            type: 1,
		            title: '模板内容',
		            shade: 0.3,
doc_wei's avatar
doc_wei 已提交
109
		            area: ['90vw', '90vh'],
doc_wei's avatar
doc_wei 已提交
110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131
		            content: $("#modelContentDiv").html(),
		        });
	 		},
	 		'click .selResult':function(index, row){//查看转换结果
	 			if(jsCreateClick){
	 				var s = getListItem(list, row.id);
	 				if(isNull(s)){
	 					winui.window.msg('请先转换模板', {icon: 2,time: 2000});
	 				}else{
	 					editId = row.id;
	 					var mode = returnModel(row.modelType);
	 					if (!isNull(mode.length)) {
	 						textEditor.setOption('mode', mode);
	 					} 
	 					textEditor.setValue(s.content);
	 				}
	 			}else{
	 				winui.window.msg('请先选择数据库表名检索生成', {icon: 2,time: 2000});
	 			}
	 		}
	 	},
	 	ajaxSendAfter:function(json){
doc_wei's avatar
doc_wei 已提交
132
			list = [].concat(json.rows);
133 134 135 136
			$.each(list, function (i, item){
				item.modelId = item.id;
				item.groupId = parent.rowId;
			});
doc_wei's avatar
doc_wei 已提交
137 138 139
	 	}
	});
	
doc_wei's avatar
doc_wei 已提交
140
	// 加载数据库表列表
doc_wei's avatar
doc_wei 已提交
141 142 143 144 145 146 147 148 149 150 151 152 153
	showGrid({
	 	id: "tableName",
	 	url: reqBasePath + "database002",
	 	params: {},
	 	pagination: false,
	 	template: getFileContent('tpl/template/select-option.tpl'),
	 	ajaxSendLoadBefore: function(hdb){
	 	},
	 	ajaxSendAfter:function(json){
	 		form.render('select');
	 	}
	});
	
doc_wei's avatar
doc_wei 已提交
154
	// txtcenter DIV内的输入框内容变化事件
doc_wei's avatar
doc_wei 已提交
155
	$("body").on("keyup", ".txtcenter input", function(e){
doc_wei's avatar
doc_wei 已提交
156
		for(var i = 0; i < list.length; i++) {
doc_wei's avatar
doc_wei 已提交
157
			list[i].content = codeDocUtil.replaceModelContent(list[i].modelContent);
doc_wei's avatar
doc_wei 已提交
158 159 160 161 162 163 164
			list[i].fileName = $("#tableZhName").val() + list[i].modelName;
			if(list[i].modelId == editId){
				textEditor.setValue(list[i].content);
			}
		}
	});
	
doc_wei's avatar
doc_wei 已提交
165
	// 检索数据
doc_wei's avatar
doc_wei 已提交
166
	$("body").on("click", "#jsCreate", function(e){
doc_wei's avatar
doc_wei 已提交
167 168
		AjaxPostUtil.request({url: reqBasePath + "codemodel011", params: {tableName: $("#tableName").val()}, type: 'json', callback: function(data){
			if(data.returnCode == 0) {
doc_wei's avatar
doc_wei 已提交
169
				codeDocUtil.setTableColumnData(data.rows);
doc_wei's avatar
doc_wei 已提交
170 171 172 173 174 175 176 177 178 179 180 181 182 183
				AjaxPostUtil.request({url: reqBasePath + "codemodel012", params: {tableName: $("#tableName").val()}, type: 'json', callback: function(json){
					if(json.returnCode == 0) {
						jsCreateClick = true;
						editId = "";
						textEditor.setValue('');
						$("#tableZhName").val(json.bean.tableName);
						$("#tableFirstISlowerName").val(json.bean.tableFirstISlowerName);
						$("#ControllerPackageName").val(json.bean.ControllerPackageName);
						$("#ServicePackageName").val(json.bean.ServicePackageName);
						$("#ServiceImplPackageName").val(json.bean.ServiceImplPackageName);
						$("#DaoPackageName").val(json.bean.DaoPackageName);
						$("#tableISlowerName").val(json.bean.tableISlowerName);
						$("#tableBzName").val(json.bean.tableBzName);
						// 遍历模板赋值文件名
doc_wei's avatar
doc_wei 已提交
184 185
						$('#modelList').find('li').each(function() {
							var label = $(this).find("label");
186 187
							var modelType = label.attr('modeltype');
							if(modelType == 'Java' || modelType == 'xml') {
doc_wei's avatar
doc_wei 已提交
188
								label.html(json.bean.tableName + label.attr("thiscontent"));
doc_wei's avatar
doc_wei 已提交
189
							}else{
doc_wei's avatar
doc_wei 已提交
190
								label.html(json.bean.tableFirstISlowerName + label.attr("thiscontent"));
doc_wei's avatar
doc_wei 已提交
191 192
							}
						});
doc_wei's avatar
doc_wei 已提交
193
						transformResult();
doc_wei's avatar
doc_wei 已提交
194
						winui.window.msg('检索成功', {icon: 1,time: 2000});
doc_wei's avatar
doc_wei 已提交
195 196 197 198 199 200 201 202
					}else{
						winui.window.msg(json.returnMessage, {icon: 2,time: 2000});
					}
				}});
			}else{
				winui.window.msg(data.returnMessage, {icon: 2,time: 2000});
			}
		}});
doc_wei's avatar
doc_wei 已提交
203
	});
doc_wei's avatar
doc_wei 已提交
204 205 206 207

	function transformResult() {
		$.each(list, function (i, row){
			var content = codeDocUtil.replaceModelContent(row.modelContent);
208 209 210 211 212 213 214
			var modelType = row.modelType;
			var fileName = "";
			if(modelType == 'Java' || modelType == 'xml') {
				fileName = $("#tableZhName").val() + row.modelName;
			}else{
				fileName = $("#tableFirstISlowerName").val() + row.modelName;
			}
doc_wei's avatar
doc_wei 已提交
215 216 217 218
			var s = {
				modelId: row.id,
				content: content,
				tableName: $("#tableName").val(),
219
				fileName: fileName
doc_wei's avatar
doc_wei 已提交
220 221 222 223
			};
			insertListIn(list, s);
		});
	}
doc_wei's avatar
doc_wei 已提交
224 225 226 227 228 229 230 231 232
	
	/**
	 * 向集合中添加新元素
	 */
	function insertListIn(list, s){
		var isIn = false;
		for(var i = 0; i < list.length; i++){
			if(list[i].modelId == s.modelId){//存在则替换
				list[i].content = s.content;
233 234
				list[i].tableName = s.tableName;
				list[i].fileName = s.fileName;
doc_wei's avatar
doc_wei 已提交
235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257
				isIn = true;
				break;
			}
		}
		if(!isIn){//不存在
			list.push(s);
		}
	}
	
	/**
	 * 获取集合中的一项
	 */
	function getListItem(list, id){
		for(var i = 0; i < list.length; i++){
			if(list[i].modelId == id){
				return list[i];
			}
		}
		return null;
	}
	
    exports('usemodelgroup', {});
});