UNPKG

fastlion-amis

Version:

一种MIS页面生成工具

341 lines (340 loc) 13.5 kB
"use strict"; 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