UNPKG

yyuap-template

Version:

template project which is based on tinper

426 lines (406 loc) 16.7 kB
(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; });