fastlion-amis
Version:
一种MIS页面生成工具
341 lines (340 loc) • 13.5 kB
JavaScript
Object.defineProperty(exports, "__esModule", { value: true });
exports.shellHandler = exports.FLRule = exports.RuleTypes = exports.eventStation = void 0;
var tslib_1 = require("tslib");
var tools_1 = require("./tools");
var message_1 = (0, tslib_1.__importDefault)(require("antd/lib/message"));
var _1 = require(".");
// 事件中转站
exports.eventStation = {
// 发布事件
publish: function (eventName, detail, target) {
if (detail === void 0) { detail = null; }
if (target === void 0) { target = window; }
var event = null;
if (typeof eventName !== 'string' || !eventName) {
return false;
}
if ('CustomEvent' in window) {
event = new CustomEvent(eventName, { detail: detail, bubbles: true });
}
else {
event = document.createEvent('CustomEvent');
event.initCustomEvent(eventName, true, false, { detail: detail });
}
return target.dispatchEvent(event);
},
// 订阅事件
subscription: function (eventName, handler, target) {
if (target === void 0) { target = window; }
var eventHandler;
target.addEventListener(eventName, eventHandler = function (e) {
handler(e.detail);
});
return function () {
// 解绑方法
target.removeEventListener(eventName, eventHandler);
eventHandler = null;
};
}
};
var RuleTypes = /** @class */ (function () {
function RuleTypes() {
}
RuleTypes.DT_NUMBER = '10'; //数值
RuleTypes.DT_MONEY = '11'; // ¥#,### 货币代码 + 数值格式
RuleTypes.DT_DATETIME = '12'; // YYYY-MM-DD HH24:MI:SS 日期
RuleTypes.DT_TIME = '13'; // HH24:MI:SS 时间
RuleTypes.DT_PERCENT = '14'; // 百分比
RuleTypes.DT_FRACTION = '15'; // 分数
RuleTypes.DT_TEXT = '16'; // 普通文本
RuleTypes.DT_BOOL = '17'; // 布尔
RuleTypes.DT_TEXT_AREA = '18'; // 多行文本
RuleTypes.DT_IMAGE = '20'; // 图片
RuleTypes.DT_SIGN_IMAGE = '26'; // 签名图片
RuleTypes.DT_UNI_IMAGE = '27'; // 新单图
RuleTypes.DT_UNI_MUL_IMAGE = '28'; // 新多图
RuleTypes.DT_HTML = '30'; // 超文本
RuleTypes.DT_MULTI_TEXT = '31'; // 显示时保留空格与换行的文本
RuleTypes.DT_MULTI_URL = '32'; // 多URL链接
RuleTypes.DT_HTML2 = '36'; // 超文本
RuleTypes.DT_EXTERNAL_URL = '37'; // 外部Url
RuleTypes.DT_BLOB_FILE = '40'; // BLOB附件
RuleTypes.DT_CLOB_FILE = '41'; // CLOB附件
RuleTypes.DT_FILE = '43'; // 文件
RuleTypes.DT_UNI_FILE = '47'; // 新单附件
RuleTypes.DT_UNI_MUL_FILE = '48'; // 新多附件
RuleTypes.DT_MEDIA_MIX = '50'; // 图片附件混合类型
RuleTypes.DT_MEDIA_IMAGE = '51'; // 纯图片
RuleTypes.DT_WIFI_SYMBOL = '60'; // WiFi符号,显示RFID距离
RuleTypes.DT_POINT = '77'; // 自定义图坐标线
RuleTypes.DT_OTHER_SYMBOL = '90'; // 其他,特殊符号
RuleTypes.STORAGE_UI = 'storage_ui'; //存储在storage中的ui数据
RuleTypes.STORAGE_FIELD = 'storage_field'; //存储在storage中的列数据
RuleTypes.STORAGE_DATA = 'storage_data'; //存储在storage中的datamanager数据
RuleTypes.STORAGE_LOOKUP = 'storage_lookup'; //存储在storage中的lookup数据
RuleTypes.CHAT_ROOM = 'chatroom'; //存储在storage中的lookup数据
RuleTypes.CHAT_ROOM_LIST = 'chatroomList'; //存储在storage中的lookup数据
RuleTypes.STORAGE_CACHE = "storage_cache"; //是否需要缓存
RuleTypes.MINIMIZE = 'minimize'; //弹窗最小化
RuleTypes.BASEINFO = 'baseInfo'; //存储登录的账号、密码、是否记住密码
RuleTypes.USERINFO = 'userInfo'; //登录成功后,后端返回的信息
RuleTypes.EDITEXPRESS = "EDITEXPRESS"; //数据行不可编辑
// 伪列字段(checkBox)
RuleTypes.pseudoField = '__pseudo_column_field_name__';
// 伪列字段(number)
RuleTypes.pseudoFieldNumber = '__pseudo_column_field_name_number__';
//刷新 scrollMb
RuleTypes.REFRESHSCROLL = "scrollscroll";
//keystep驱动列内容宽度计算
RuleTypes.AUTOCALCWIDTH = "autoCalcWidth";
//计算列
RuleTypes.COMPUTEDCOL = "computeCol";
//关联字段点击
RuleTypes.LINKCLICK = "linkClick";
//表单失去焦点
RuleTypes.RESETPOSITION = "resetPosition";
//消息数量变化 刷新数据
RuleTypes.REFRESHDATA = "refreshData";
// 应用帮助中心的数据存储键值
RuleTypes.APPLICATIONHELP = "_applicationHelp_";
//前后端的token
RuleTypes.TOKEN = "accessToken";
//是否进入过系统维护页面的key
RuleTypes.ISERRORPAGE = "__is_in_errorPage__"; // 是否进入过系统维护页面的key
// 刷新菜单
RuleTypes.REFRESHMENU = 'refreshMenu';
// 刷新子表
RuleTypes.REFRESHSUBITEM = 'refreshSubItem';
// 本地 lookup 数据
RuleTypes.localLookupData = "__local_lookup_data__";
// 刷新scrollMb
RuleTypes.RESETSCROLLMB = "RESETSCROLLMB";
//不可排序
RuleTypes.disabledSort = ['26', '30', '36', '31', '32', '37', '50', '51'];
//壳红外扫码
RuleTypes.ShellCode = 'getBarCode';
//离线表名
RuleTypes.tableNamePre = "offline_table";
// 刷新终端互联连接列表
RuleTypes.REFRESHCONNECT = 'refreshConnect';
//父级节点路径
RuleTypes.ROUTEPARENT = "routeParent";
//查找替换
RuleTypes.FINDBTN = "findBtn";
//标签打印
RuleTypes.LABELBTN = "labelBtn";
//文件打印
RuleTypes.FILEPRINTBTN = "filePrintBtn";
//移动端邮件排序
RuleTypes.SORTBTN = "sortbtn";
//移动端工具栏打开
RuleTypes.ToggleMBTOOLS = "toggleMbTools";
//时区
RuleTypes.TimeZoneMode = "timezoneMode";
//重置内容页排序和过滤器
RuleTypes.RESETSORTANDFILTER = "RESETSORTANDFILTER";
//刚进入是否路由跳转至固定tab
RuleTypes.ISPUSHLOCKTAB = 'isPushLockTab';
//页面触发全屏菜单事件
RuleTypes.PAGEFULLSCREEN = 'pageFullScreen';
//页面触发全屏tabs事件
RuleTypes.FULLSCREENHEADER = 'fullScreenHeader';
//全屏鼠标移入tabs事件
RuleTypes.TOGGLEHEADER = 'toggleHeader';
//关闭聊天室的工具
RuleTypes.CLOSECHATTOOL = "closeChatTool";
//关闭聊天室的工具
RuleTypes.SENDMSG = "contact";
//字体
RuleTypes.FONTFAMILY = '"Microsoft YaHei", Arial, Helvetica, sans-serif, 宋体';
//iframe嵌套的页面刷新事件
RuleTypes.FIXPAGEREFRESH = "FixedPageRefresh";
//iframe 关闭页面
RuleTypes.REPACETAB = "replaceTab";
//iframe 改变tab名称
RuleTypes.CHANGETABNAME = 'changeTabName';
return RuleTypes;
}());
exports.RuleTypes = RuleTypes;
var FLRule = /** @class */ (function () {
// 不允许创建实例
function FLRule() {
}
var _a;
_a = FLRule;
/**
* 打开分享的链接
*/
FLRule.openShareLink = function () { return (0, tslib_1.__awaiter)(void 0, void 0, void 0, function () {
var res, content;
return (0, tslib_1.__generator)(_a, function (_b) {
switch (_b.label) {
case 0: return [4 /*yield*/, _1.Shell.getClipboardData()];
case 1:
res = _b.sent();
if (res.success === true) {
content = res.data.content;
if (content.includes('qr_type') && content.includes('qr_key')) {
// 页面数据分享
// store.dispatch(setShareTip(true))
message_1.default.info({
content: "是否打开一个分享的链接",
onClose: function () {
tools_1.tools.copy(' ');
// store.dispatch(setShareTip(false))
},
onClick: function () {
tools_1.tools.copy(' ');
// FLRule.toShareView(content);
// store.dispatch(setShareTip(false))
}
});
}
}
return [2 /*return*/];
}
});
}); };
return FLRule;
}());
exports.FLRule = FLRule;
// 解析JSON数据
var getData = function (response) {
try {
return JSON.parse(response);
}
catch (e) {
message_1.default.info({ content: 'JSON解析出错' });
throw new Error('JSON解析出错');
}
};
//红外扫码
window['getBarCode'] = function (code) {
exports.eventStation.publish(RuleTypes.ShellCode, { code: code, href: window.location.hash.slice(1) });
};
// 壳打开消息页面
window['exportSuccess'] = function (type) {
if (type === 'fail') {
message_1.default.info({ content: '文件未下载' });
}
else {
message_1.default.success({ content: '文件下载成功' });
}
};
//最小化监听,程序最小化时主动通知前端 0 最小化 1 最大化
window['changeImize'] = function (res) { return (0, tslib_1.__awaiter)(void 0, void 0, void 0, function () {
return (0, tslib_1.__generator)(this, function (_b) {
if (typeof res === 'string') {
res = JSON.parse(res);
}
exports.eventStation.publish(RuleTypes.MINIMIZE);
try {
//需要登录后
if (res.imizeType === 1 && localStorage.getItem(RuleTypes.USERINFO)) {
FLRule.openShareLink();
}
}
catch (error) {
console.error('没有口令');
}
return [2 /*return*/];
});
}); };
// 壳打印h5回调
window['h5PrintCallBack'] = function (res) {
var result = getData(res);
var itemCaption = result.itemCaption, success = result.success, msg = result.msg;
if (success) {
message_1.default.success({ content: itemCaption + "\u62A5\u8868\u6253\u5370\u6210\u529F" });
}
else {
message_1.default.error({ content: itemCaption + "\u62A5\u8868\u6253\u5370\u5931\u8D25," + msg });
}
};
// 调用壳接口
var triggerShell = function (name, data, doneHandler, failHandler) {
var params = {
"name": name,
"data": data ? data : {},
"success": doneHandler,
"fail": failHandler,
"random": Math.random().toString()
};
if ((tools_1.tools.os.ios || tools_1.tools.isMac) && window.webkit) {
//ios调用壳函数
try {
window.webkit.messageHandlers.AppShell.postMessage(JSON.stringify(params));
return true;
}
catch (error) {
return false;
}
}
else if (window.AppShell) {
//pc壳和安卓调用壳函数
try {
window.AppShell.postMessage(JSON.stringify(params));
return true;
}
catch (error) {
return false;
}
}
else {
//非壳环境调用接口提示
if (name != 'getFromPasteboard') {
message_1.default.info({ content: "请用客户端打开" });
}
return false;
}
};
function shellHandler(options) {
var name = options.name, data = options.data;
var successEvent = name + "_" + tools_1.tools.randonName(), // 成功事件名称
failEvent = name + "_" + tools_1.tools.randonName(); // 失败事件名称
// 清除全局Shell事件
var clearEvent = function () {
delete window[successEvent];
delete window[failEvent];
};
if ("success" in options) {
var success_1 = options.success, fail_1 = options.fail, info_1 = options.info;
window[successEvent] = function (res) {
var result = getData(res);
if (result.info) {
info_1 && info_1(result);
return;
}
clearEvent();
success_1 && success_1(result);
};
window[failEvent] = function (res) {
var result = getData(res);
clearEvent();
fail_1 && fail_1(result);
};
return triggerShell(name, data, successEvent, failEvent);
}
else {
return new Promise(function (resolve, reject) {
window[successEvent] = function (res) {
var result = getData(res);
if (!result.info) {
clearEvent();
resolve((0, tslib_1.__assign)({ success: true }, result));
}
};
window[failEvent] = function (res) {
var result = getData(res);
clearEvent();
resolve((0, tslib_1.__assign)({ success: false }, result));
};
if (!triggerShell(name, data, successEvent, failEvent)) {
reject();
}
});
}
}
exports.shellHandler = shellHandler;
//# sourceMappingURL=./utils/shell/shell.js.map
;