yyuap-template
Version:
template project which is based on tinper
426 lines (406 loc) • 16.7 kB
JavaScript
(function (global, factory) {
if (typeof define === "function" && define.amd) {
define(['module', 'react', 'react-dom', '../components/createTemplate', '../components/sampleTemplate', '../components/sampleData', '../api', '../components/EventController/index', '../datastore/connect', '../datastore/createStore', '../uiTemplateMultilingual/index2', '../uiTemplateMultilingual/jDiwork'], factory);
} else if (typeof exports !== "undefined") {
factory(module, require('react'), require('react-dom'), require('../components/createTemplate'), require('../components/sampleTemplate'), require('../components/sampleData'), require('../api'), require('../components/EventController/index'), require('../datastore/connect'), require('../datastore/createStore'), require('../uiTemplateMultilingual/index2'), require('../uiTemplateMultilingual/jDiwork'));
} else {
var mod = {
exports: {}
};
factory(mod, global.react, global.reactDom, global.createTemplate, global.sampleTemplate, global.sampleData, global.api, global.index, global.connect, global.createStore, global.index2, global.jDiwork);
global.uiTemplate = mod.exports;
}
})(this, function (module, _react, _reactDom, _createTemplate, _sampleTemplate, _sampleData, _api, _index, _connect, _createStore, _index2) {
'use strict';
var _react2 = _interopRequireDefault(_react);
var _reactDom2 = _interopRequireDefault(_reactDom);
var _createTemplate2 = _interopRequireDefault(_createTemplate);
var _sampleTemplate2 = _interopRequireDefault(_sampleTemplate);
var _sampleData2 = _interopRequireDefault(_sampleData);
var _createStore2 = _interopRequireDefault(_createStore);
var _index3 = _interopRequireDefault(_index2);
function _interopRequireDefault(obj) {
return obj && obj.__esModule ? obj : {
default: obj
};
}
//console.log(uiTemplateMultilingual);
function uiTemplate(config) {
this.config = config;
// 参照运行时追加的参数
this.config.thirdParams = {};
this.completeInit = false;
if (!config.templageType || !config.templageType instanceof String || config.templageType !== "") {
this.config.templageType = "";
}
if (!config.hideButton || !config.hideButton instanceof Boolean) {
this.config.hideButton = false;
}
if (config.url) {
(0, _api.setUrl)(config.url);
}
// 生成随机串
config.uuid = getFieldId();
}
uiTemplate.prototype.init = function () {
// const newTemp = connect({},CreateTemplate)
// 所有控件
this.config.componentsLists = [];
var self = this;
getDataJson({ layoutDetail: this.config.defaultTemplate['head'] }, this.config.componentsLists);
var destory = function destory(args) {
if (true && div.parentNode) {
div.parentNode.removeChild(div);
}
};
// 绑定事件
(0, _index.bindCallback)(this.config);
render(this.config);
this.completeInit = true;
return {
destory: destory
};
};
/**
* 创建模板
*/
uiTemplate.prototype.startCreate = function () {
// window._startCreateUitemplate = ;
// window._createThis = this;
_index3.default.initialize(this.startCreateHander, this);
window.uiTemplateMultilingual = _index3.default;
};
uiTemplate.prototype.startCreateHander = function (createthis) {
renderLoading(createthis.config);
var self = createthis;
if (self.config.useSample) {
createthis.init(_sampleTemplate2.default);
createthis.config.afterInit();
return;
}
// getTemplateAll().then((json)=>{
// this.init(json);
// this.config.afterInit();
// });
// getTemplateOrg().then((json)=>{
// this.init(json);
// this.config.afterInit();
// });
// getTemplateTestDemo().then((json)=>{
// this.init(json);
// this.config.afterInit();
// });
// getTemplateCustomer().then((json)=>{
// this.init(json);
// this.config.afterInit();
// });
(0, _api.getUiTemplate)(createthis.config.nexuskey, createthis.config.funcnode).then(function (json) {
self.config.originTemplate = json;
self.config.defaultTemplate = generateViewmodel(json.formLayout.layoutDetail);
self.init();
self.templateInfo = json.templateInfo && json.templateInfo[0];
self.config.afterInit(createthis.config);
}).catch(function (ex) {
debugger;
console.log(ex);
renderError(self.config);
console.log('服务出错' + " " + ex);
});
};
/**
* 更新模板 1、可以同时更改viewModel和dataTable
*/
uiTemplate.prototype.updateTemplateData = function (json, orderId, templateJson) {
renderLoading(this.config);
var self = this;
if (self.config.useSample) {
self.config.dataModel = _sampleData2.default;
updateData(self.config);
return;
}
if (json) {
self.config.dataModel = json;
updateData(self.config);
} else {
// getDataTestDemo().then((json)=>{
// self.config.dataModel = json;
// updateData(self.config)
// });
// getModel(orderId,templateJson).then((json)=>{
// self.config.dataModel = json;
// updateData(self.config)
// });
// getDataTestDemoLess().then((json)=>{
// self.config.dataModel = json;
// updateData(self.config)
// });
updateData(self.config);
}
};
/**
* 根据itemCode获取数据
*/
uiTemplate.prototype.getValueByItemCode = function (itemCode) {
for (var i = 0; i < this.config.componentsLists.length; i++) {
if (this.config.componentsLists[i].itemCode === itemCode) {
return this.config.dataModel.head[this.config.componentsLists[i].fieldId].pk;
break;
}
}
};
/**
* 所有主表控件信息
* @param {*} layouts
* @param {*} componentsLists
*/
function getDataJson(layouts, componentsLists) {
var layoutDetail = layouts.layoutDetail;
if (layoutDetail != null && layoutDetail instanceof Array) {
layoutDetail.map(function (o) {
if (o instanceof Object) {
var map = o;
var isBase = isBaseComp(map.componentKey);
var isSubTable = isSubTableComp(map.componentKey);
var sonDetail = map.layoutDetail;
if (sonDetail != null) {
if (!isBase) {
var sonlist = sonDetail;
sonlist.map(function (sonl) {
if (sonl instanceof Object) getDataJson(sonl, componentsLists);
});
} else if (isSubTable) {
var sonlist = sonDetail;
sonlist.map(function (sonl) {
if (sonl instanceof Object) getDataJson(sonl, componentsLists);
});
}
} else if (sonDetail == null && isBase) {
componentsLists.push(map);
}
}
});
} else {
if (layouts.componentKey != null && !"" === layouts.componentKey) {
if (isBaseComp(layouts.componentKey)) {
componentsLists.push(templateAllDataMap);
}
}
}
}
/**
* 遍历模版信息,返回赋值后viewModal
*/
function setTempNewValue(layoutDetail, itemCode, key, value) {
if (layoutDetail instanceof Array && layoutDetail.length > 0) {
layoutDetail.forEach(function (e) {
if (e.itemCode == itemCode) {
e[key] = value;
} else {
if (e && e.layoutDetail && e.layoutDetail instanceof Array && e.layoutDetail.length > 0) {
setTempNewValue(e.layoutDetail, itemCode, key, value);
}
}
});
} else {
if (layoutDetail.layoutDetail && layoutDetail.layoutDetail instanceof Array && layoutDetail.layoutDetail.length > 0) {
setTempNewValue(layoutDetail.layoutDetail, itemCode, key, value);
}
}
}
/**
* 返回模板的信息templateInfo
*/
uiTemplate.prototype.getTemplateInfo = function () {
return [this.templateInfo];
};
/**
* 将主表设置为编辑状态
*/
uiTemplate.prototype.setFormEdit = function () {
document.getElementById('headForm_edit_' + this.config.uuid).click();
};
/**
* 将主表设置为编辑状态
*/
uiTemplate.prototype.setFormNotEdit = function () {
document.getElementById('headForm_cancel_' + this.config.uuid).click();
};
/**
* 将主表设置为编辑状态
*/
uiTemplate.prototype.saveForm = function () {
document.getElementById('headForm_save_' + this.config.uuid).click();
};
/**
* 将主表清空
*/
uiTemplate.prototype.resetForm = function () {
// document.getElementById('headForm_reset_'+this.config.uuid).click();
renderLoading(this.config);
this.config.dataModel = null;
this.init();
};
/**
* 运行时为参照控件追加参数(建议放到afterInit中执行设置)
*/
uiTemplate.prototype.setReferenceParamByItemCode = function (itemCode, params) {
renderLoading(this.config);
this.config.thirdParams[itemCode] = params;
//updateData(this.config);
this.init();
};
/**
* 根据itemCode为控件设置值
*/
uiTemplate.prototype.setValueByItemCode = function (itemCode, value) {
renderLoading(this.config);
if (this.completeInit) {
for (var i = 0; i < this.config.componentsLists.length; i++) {
if (this.config.componentsLists[i].itemCode === itemCode) {
this.config.dataModel['head'][this.config.componentsLists[i].fieldId] = value;
updateData(this.config);
break;
}
}
}
// this.config.dataModel['head']['20180529192238QpLc830xFU'] = {pk:"23232323",name:"23232323",value:"23232323"}
};
/**
* 根据itemCode为控件设置权限
*/
uiTemplate.prototype.setAttributeByItemCode = function (itemCode, key, value, config) {
// renderLoading(this.config);
var self = this;
if (this.completeInit) {
//为了解决多个模版混用的问题
if (config) {
setTempNewValue(config.originTemplate.formLayout.layoutDetail, itemCode, key, value);
} else {
setTempNewValue(this.config.originTemplate.formLayout.layoutDetail, itemCode, key, value);
}
updateData(this.config);
}
};
var renderLoading = function renderLoading(config) {
_reactDom2.default.render(_react2.default.createElement(
'div',
null,
uiTemplateMultilingual.template('loading')
), document.getElementById(config.templateComponentName));
};
var renderError = function renderError(config) {
_reactDom2.default.render(_react2.default.createElement(
'div',
null,
uiTemplateMultilingual.template('serviceError!')
), document.getElementById(config.templateComponentName));
};
var updateData = function updateData(config) {
render(config);
};
function onDataModelChange(dataModel) {
window.returnDataModel = dataModel;
}
function beforeCreate(type, obj) {
switch (type) {
case 'setCustomTemplate':
config.customTemplate = obj;
break;
case 'setDefaultTemplate':
config.customTemplate = obj;
break;
}
}
function afterCreateToChange() {
console.log(viewModel);
}
function getDataModel() {
return window.returnDataModel;
}
function getDefaultTemplate() {
return config.defaultTemplate;
}
function generateViewmodel(layouts) {
var afterGenerateViewmodel = {};
afterGenerateViewmodel.head = [];
afterGenerateViewmodel.bodys = [];
for (var i = 0; i < layouts.layoutDetail.length; i++) {
var layout = layouts.layoutDetail[i];
// if (layoutType[layout.componentKey]) {
if (layout.componentKey === 'GroupTable') {
if (!isSubTableComp(layout.layoutDetail[0].layoutDetail[0].componentKey)) {
afterGenerateViewmodel.head.push(layout);
} else {
afterGenerateViewmodel.bodys.push(layout);
}
continue;
}
if (!isSubTableComp(layout.componentKey)) {
afterGenerateViewmodel.head.push(layout);
} else {
afterGenerateViewmodel.bodys.push(layout);
}
// }
}
// console.log(afterGenerateViewmodel)
return afterGenerateViewmodel;
}
function isBaseComp(componentKey) {
if ("ColumnPanel" === componentKey || "TableLayout" === componentKey) return false;
return true;
}
function isSubTableComp(componentKey) {
if ("DataTable" === componentKey || "Table" === componentKey || "Form" === componentKey || "Grid" === componentKey || "GroupTable" === componentKey) {
return true;
}
return false;
}
function getFieldId() {
//获得组件的fieldid
var d = new Date();
var year = d.getFullYear() + "";
var month = d.getMonth() + 1;
var date = d.getDate();
var day = d.getDay();
var Hours = d.getHours(); //获取当前小时数(0-23)
var Minutes = d.getMinutes(); //获取当前分钟数(0-59)
var Seconds = d.getSeconds(); //获取当前秒数(0-59)
var curDateTime = year;
if (month > 9) {
curDateTime = curDateTime + month;
} else {
curDateTime = curDateTime + "0" + month;
}
if (date > 9) curDateTime = curDateTime + date;else curDateTime = curDateTime + "0" + date;
if (Hours > 9) curDateTime = curDateTime + Hours;else curDateTime = curDateTime + "0" + Hours;
if (Minutes > 9) curDateTime = curDateTime + Minutes;else curDateTime = curDateTime + "0" + Minutes;
if (Seconds > 9) curDateTime = curDateTime + Seconds;else curDateTime = curDateTime + "0" + Seconds;
//document.getElementByIdx_x("NumberNo").value=curDateTime;
return curDateTime + randomWord(false, 10);
}
//生成3-32位随机串:randomWord(true, 3, 32)
//生成43位随机串:randomWord(false, 43)
function randomWord(randomFlag, min, max) {
var str = "",
range = min,
arr = ['0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l', 'm', 'n', 'o', 'p', 'q', 'r', 's', 't', 'u', 'v', 'w', 'x', 'y', 'z', 'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M', 'N', 'O', 'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W', 'X', 'Y', 'Z'];
// 随机产生
if (randomFlag) {
range = Math.round(Math.random() * (max - min)) + min;
}
for (var i = 0; i < range; i++) {
var pos = Math.round(Math.random() * (arr.length - 1));
str += arr[pos];
}
return str;
}
var render = function render(config) {
_reactDom2.default.render(_react2.default.createElement(_createTemplate2.default, {
viewModel: config.originTemplate,
dataModel: config.dataModel,
config: config,
onDataModelChange: onDataModelChange
}), document.getElementById(config.templateComponentName));
};
module.exports = uiTemplate;
});