UNPKG

fastlion-amis

Version:

一种MIS页面生成工具

944 lines 63.7 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); var tslib_1 = require("tslib"); var react_1 = tslib_1.__importStar(require("react")); var icons_1 = require("@ant-design/icons"); var icons_2 = require("../../../../components/icons"); var antd_1 = require("antd"); var icons_3 = require("@ant-design/icons"); var VirtualTable_1 = tslib_1.__importDefault(require("../../../../components/VirtualTable")); var shell_1 = require("../../../../utils/shell"); var gzip_1 = require("../../../../utils/gzip"); var tools_1 = require("../../../../utils/shell/tools"); var utils_1 = require("../../../../utils/utils"); var helper_1 = require("../../../../utils/helper"); var shell_2 = require("../../../../utils/shell/shell"); var antdComponentsProxy_1 = require("../../../../components/antdComponentsProxy"); var RfidUtil_1 = require("../../../../utils/RfidUtil"); var OfflineComponent = function (offlineProps) { var offlineSchema = offlineProps.offlineSchema, render = offlineProps.render, env = offlineProps.env, aliasTitle = offlineProps.aliasTitle, menuName = offlineProps.menuName, primaryField = offlineProps.primaryField, _a = offlineProps.name, name = _a === void 0 ? '' : _a, offlineMode = offlineProps.offlineMode, store = offlineProps.store, filtercont = offlineProps.filtercont, __ = offlineProps.translate, ns = offlineProps.classPrefix, columns = offlineProps.columns, tableLayout = offlineProps.tableLayout, search = offlineProps.search, curdRef = offlineProps.curdRef; var _b = (0, react_1.useState)(false), offlineFormShow = _b[0], setOfflineFormShow = _b[1]; var _c = (0, react_1.useState)({ x: document.body.clientWidth / 2 - 135, y: document.body.clientHeight - 200 }), position = _c[0], setPosition = _c[1]; var _d = (0, react_1.useState)(''), codeValue = _d[0], setCodeValue = _d[1]; var _e = (0, react_1.useState)([]), offlineTemplist = _e[0], setOfflineTemplist = _e[1]; var _f = (0, react_1.useState)(false), offline = _f[0], setOffline = _f[1]; var _g = (0, react_1.useState)([]), offlineData = _g[0], setOfflineData = _g[1]; var _h = (0, react_1.useState)([]), offlineColumns = _h[0], setOfflineColumns = _h[1]; var _j = (0, react_1.useState)(false), codeVisible = _j[0], setCodeVisible = _j[1]; var _k = (0, react_1.useState)(null), currentRow = _k[0], setCurrentRow = _k[1]; var _l = (0, react_1.useState)(false), offlineLoading = _l[0], setOfflineLoading = _l[1]; var _m = (0, react_1.useState)(false), offlineStatus = _m[0], setOfflineStatus = _m[1]; var _o = (0, react_1.useState)(0), offlineProgress = _o[0], setOfflineProgress = _o[1]; var positionX = (0, react_1.useRef)(0); var positionY = (0, react_1.useRef)(0); var offlineForm = (0, react_1.useRef)(null); var codeEvent = (0, react_1.useRef)(); //红外线扫码 var hashVal = (0, react_1.useRef)(''); //离线的原始数据,用于重置按钮 var originOfflineData = (0, react_1.useRef)([]); // 初始化逻辑 (0, react_1.useEffect)(function () { RfidUtil_1.windowRFIDTriger.addEventListener(RfidUtil_1.RFIDTrigeerCodeEnum.TRIGGERCLICK, handleScanCode); if (shell_1.Shell.hasShell() && (0, helper_1.isMobile)()) { hashVal.current = window.location.hash.slice(1); codeEvent.current = shell_2.eventStation.subscription(shell_2.RuleTypes.ShellCode, function (_a) { var code = _a.code, href = _a.href; if (hashVal.current == href) { scanCode(code); } }); initOffline(); } return function () { var _a; RfidUtil_1.windowRFIDTriger.removeEventListener(RfidUtil_1.RFIDTrigeerCodeEnum.TRIGGERCLICK, handleScanCode); (_a = codeEvent.current) === null || _a === void 0 ? void 0 : _a.call(codeEvent); }; }, []); (0, react_1.useEffect)(function () { var tmp = localStorage.getItem('offlineTemplist'); if (tmp) { var lastTmp = JSON.parse(tmp); !!lastTmp.length && setOfflineTemplist(lastTmp); } }, []); (0, react_1.useEffect)(function () { //存到本地以便下次进入时恢复临时数据 localStorage.setItem('offlineTemplist', JSON.stringify(offlineTemplist)); fixOfflineTmpList(); }, [offlineTemplist]); (0, react_1.useEffect)(function () { if (offlineMode) { handleClickOffline(); } }, [offlineMode]); (0, react_1.useEffect)(function () { if (!offlineLoading) { setOfflineProgress(0); setOfflineStatus(false); } }, [offlineLoading]); //点击离线按钮,切换离线状态 var handleClickOffline = function () { return tslib_1.__awaiter(void 0, void 0, void 0, function () { var res; return tslib_1.__generator(this, function (_a) { switch (_a.label) { case 0: return [4 /*yield*/, hasDownload()]; case 1: res = _a.sent(); setOfflineFormShow(true); initOfflineData(res); return [2 /*return*/]; } }); }); }; var initOffline = function () { return tslib_1.__awaiter(void 0, void 0, void 0, function () { var res; return tslib_1.__generator(this, function (_a) { switch (_a.label) { case 0: return [4 /*yield*/, hasDownload()]; case 1: res = _a.sent(); if (!!res) return [3 /*break*/, 3]; return [4 /*yield*/, createTable()]; case 2: _a.sent(); _a.label = 3; case 3: if (offlineSchema.offlinePageType === 'detail') { setOfflineFormShow(true); initOfflineData(res); } return [2 /*return*/]; } }); }); }; /** * 进入离线页面时初始化数据 * @param hasDownload 是否已下载数据 */ var initOfflineData = function (hasDownload) { if (hasDownload) { antd_1.Modal.confirm({ content: '已有下载数据,是否重新下载?', okText: __('Offline.reload'), cancelText: __('Offline.continue'), onOk: function () { return tslib_1.__awaiter(void 0, void 0, void 0, function () { return tslib_1.__generator(this, function (_a) { switch (_a.label) { case 0: return [4 /*yield*/, clear(name)]; case 1: _a.sent(); setOfflineTemplist([]); download(); return [2 /*return*/]; } }); }); }, onCancel: function () { offlineOpt(); } }); } else { download(); } }; // 清空表中所有数据 var clear = function (tableName) { return tslib_1.__awaiter(void 0, void 0, Promise, function () { return tslib_1.__generator(this, function (_a) { switch (_a.label) { case 0: return [4 /*yield*/, shell_1.Shell.execDelete(tableName)]; case 1: _a.sent(); return [4 /*yield*/, shell_1.Shell.deleteFile(tableName)]; case 2: _a.sent(); return [2 /*return*/, Promise.resolve()]; } }); }); }; // 模拟假的进度增长 var offlineInterval = (0, react_1.useRef)(); var offlineTimeout = (0, react_1.useRef)(); var handleOfflineProgress = function () { offlineInterval.current = setInterval(function () { setOfflineProgress(function (prev) { return prev + 4; }); }, 100); // 设置一个定时器,让进度条增长到 100 后停止 offlineTimeout.current = setTimeout(function () { clearInterval(offlineInterval.current); }, 2400); // 毫秒后停止假的进度增长 }; //下载操作 var download = function () { var _a, _b, _c, _d; setOfflineLoading(true); setOfflineStatus(true); handleOfflineProgress(); var params = {}; if (Object.keys(filtercont || {}).length) { params = { advancedFilter: (_a = store.query) === null || _a === void 0 ? void 0 : _a.advancedFilter, advancedHeader: (_b = store.query) === null || _b === void 0 ? void 0 : _b.advancedHeader, advancedFilterSub: (_c = store.query) === null || _c === void 0 ? void 0 : _c.advancedFilterSub }; if (filtercont === null || filtercont === void 0 ? void 0 : filtercont.filterOptionData) { var optionsParam = (filtercont === null || filtercont === void 0 ? void 0 : filtercont.filterOptionData).optionsParam; params = tslib_1.__assign(tslib_1.__assign(tslib_1.__assign({}, params), optionsParam), { filterParam: (_d = store.query) === null || _d === void 0 ? void 0 : _d.filterParam }); } } env.fetcher(offlineSchema.source, params).then(function (res) { return tslib_1.__awaiter(void 0, void 0, void 0, function () { var tableData, _a, method, url, _b, requestParam, baseURL, downloadResult, result; var _c, _d; return tslib_1.__generator(this, function (_e) { switch (_e.label) { case 0: if (!res.ok) { antd_1.message.error(res.msg || '下载数据失败!'); setOfflineLoading(false); setOfflineStatus(false); return [2 /*return*/, false]; } try { tableData = (0, gzip_1.unGzip)(res.data); } catch (error) { antd_1.message.error('解压失败!'); setOfflineLoading(false); setOfflineStatus(false); return [2 /*return*/, false]; } if (tools_1.tools.isEmpty(tableData.offlineData)) { antd_1.message.info('暂无数据可下载!'); setOfflineLoading(false); setOfflineStatus(false); return [2 /*return*/, false]; } if ((0, utils_1.checkDuplicateKeys)(tableData.offlineData.items, primaryField)) { antd_1.message.warning('主键重复,请调整数据后重试!'); setOfflineLoading(false); setOfflineStatus(false); return [2 /*return*/, false]; } if (!tableData.offlineZipResourceDown) return [3 /*break*/, 2]; _a = tableData.offlineZipResourceDown, method = _a.method, url = _a.url, _b = _a.requestParam, requestParam = _b === void 0 ? {} : _b; baseURL = ((_d = (_c = env === null || env === void 0 ? void 0 : env.axiosInstance) === null || _c === void 0 ? void 0 : _c.defaults) === null || _d === void 0 ? void 0 : _d.baseURL) || (env === null || env === void 0 ? void 0 : env.ajaxApi) || 'https://sasdev.sanfu.com/saas_dev'; return [4 /*yield*/, shell_1.Shell.downloadImgZip(baseURL + url, method, JSON.stringify(requestParam))]; case 1: downloadResult = _e.sent(); if (downloadResult.success === false) { antd_1.message.error('下载资源包失败'); setOfflineLoading(false); setOfflineStatus(false); return [2 /*return*/, false]; } _e.label = 2; case 2: return [4 /*yield*/, insertMany(name, tableData.offlineData.items, primaryField)]; case 3: result = _e.sent(); if (!result) { antd_1.message.error('数据插入失败,请检查数据!'); return [2 /*return*/, false]; } clearInterval(offlineInterval.current); clearTimeout(offlineTimeout.current); setOfflineProgress(100); return [4 /*yield*/, offlineOpt()]; case 4: _e.sent(); setOfflineLoading(false); setOfflineStatus(false); return [2 /*return*/]; } }); }); }).catch(function (err) { return tslib_1.__awaiter(void 0, void 0, void 0, function () { var error_1; return tslib_1.__generator(this, function (_a) { switch (_a.label) { case 0: //下载数据没数据,后端直接报错,那就执行这里,有坑 console.error(err); _a.label = 1; case 1: _a.trys.push([1, 3, , 4]); return [4 /*yield*/, clear(name)]; case 2: _a.sent(); return [3 /*break*/, 4]; case 3: error_1 = _a.sent(); throw new Error(error_1); case 4: setOfflineLoading(false); setOfflineStatus(false); return [2 /*return*/]; } }); }); }); }; //获取全部数据 var findAll = function (tableName) { return tslib_1.__awaiter(void 0, void 0, void 0, function () { var res, list; var _a; return tslib_1.__generator(this, function (_b) { switch (_b.label) { case 0: if (!shell_1.Shell.hasShell()) return [3 /*break*/, 2]; return [4 /*yield*/, shell_1.Shell.execFind(tableName)]; case 1: res = _b.sent(); if (res.success) { list = ((_a = res === null || res === void 0 ? void 0 : res.data) === null || _a === void 0 ? void 0 : _a.content) ? JSON.parse(res.data.content) : []; return [2 /*return*/, Promise.resolve(list)]; } if (res.success === false) { antd_1.message.error(res.msg); } _b.label = 2; case 2: return [2 /*return*/]; } }); }); }; //创建数据库 var createTable = function () { return tslib_1.__awaiter(void 0, void 0, Promise, function () { return tslib_1.__generator(this, function (_a) { return [2 /*return*/, new Promise(function (resolve, reject) { return tslib_1.__awaiter(void 0, void 0, void 0, function () { var error_2; return tslib_1.__generator(this, function (_a) { switch (_a.label) { case 0: _a.trys.push([0, 2, , 3]); return [4 /*yield*/, shell_1.Shell.execCreateTable(name, primaryField)]; case 1: _a.sent(); resolve(); return [3 /*break*/, 3]; case 2: error_2 = _a.sent(); console.error(error_2); reject(); return [3 /*break*/, 3]; case 3: return [2 /*return*/]; } }); }); })]; }); }); }; //列转化 var columnExchange = function (col) { var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l, _m; var width = 0; // const hidePrimary = !columns.find((item: obj) => item.name === primaryField) if (tableLayout === 'horizontal') { var childList = (_b = (_a = curdRef === null || curdRef === void 0 ? void 0 : curdRef.current) === null || _a === void 0 ? void 0 : _a.querySelector(".".concat(ns, "Table-content"))) === null || _b === void 0 ? void 0 : _b.getElementsByTagName('thead')[0].children[0].childNodes; var index = columns.findIndex(function (item) { return item.name === col.name; }); width = ((_c = childList === null || childList === void 0 ? void 0 : childList[index + 1]) === null || _c === void 0 ? void 0 : _c.clientWidth) || 0; } else { var childList = (_f = (_e = (_d = curdRef === null || curdRef === void 0 ? void 0 : curdRef.current) === null || _d === void 0 ? void 0 : _d.querySelector(".".concat(ns, "Table-content"))) === null || _e === void 0 ? void 0 : _e.querySelector(".".concat(ns, "Table-footTable"))) === null || _f === void 0 ? void 0 : _f.getElementsByTagName('tbody')[0].childNodes; var index = columns.findIndex(function (item) { return item.name === col.name; }); var thWidth = (_j = (_h = (_g = childList === null || childList === void 0 ? void 0 : childList[index + 1]) === null || _g === void 0 ? void 0 : _g.childNodes) === null || _h === void 0 ? void 0 : _h[0]) === null || _j === void 0 ? void 0 : _j.clientWidth; var tdWidth = (_m = (_l = (_k = childList === null || childList === void 0 ? void 0 : childList[index + 1]) === null || _k === void 0 ? void 0 : _k.childNodes) === null || _l === void 0 ? void 0 : _l[1]) === null || _m === void 0 ? void 0 : _m.clientWidth; width = thWidth > tdWidth ? thWidth : tdWidth; } return { title: col.label, key: col.name, width: col.width || (width > 0 ? width + 10 : 100), dataIndex: col.name, align: col.align, ellipsis: true, cellClick: function (record) { setCurrentRow(record); setOfflineFormShow(true); setOffline(false); }, render: function (text, record, index) { var _a, _b, _c; if (!text) { return react_1.default.createElement("span", { className: 'text-muted' }, "-"); } if (col.type === 'lion-upload') { return render('', tslib_1.__assign(tslib_1.__assign({}, col), { type: 'offline-image' }), { offlineData: text, offline: { tableName: name, primaryKey: primaryField, primaryValue: record === null || record === void 0 ? void 0 : record[primaryField] } }); } if (['radios', 'checkboxes', 'select'].includes(col.type)) { return text ? text.split(',').map(function (data) { var _a; return (_a = col.options.find(function (item) { return item.value === data; })) === null || _a === void 0 ? void 0 : _a.label; }).join(',') || text : react_1.default.createElement("span", { className: 'text-muted' }, "-"); } if (['select'].includes(col.type)) { return ((_b = (_a = col.options) === null || _a === void 0 ? void 0 : _a.find(function (data) { return data.value === text; })) === null || _b === void 0 ? void 0 : _b.label) || text; } if (col.type.includes('color')) { return render('', tslib_1.__assign(tslib_1.__assign({}, col), { type: 'color' }), { data: record, showValue: false }); } if (col.type.includes('html')) { return text ? render('', tslib_1.__assign(tslib_1.__assign({}, col), { html: text })) : react_1.default.createElement("span", { className: 'text-muted' }, "-"); } if (col.type === 'textarea') { return render('', tslib_1.__assign(tslib_1.__assign({}, col), { label: null, type: 'tpl', defaultOpen: true }), { data: record }); } if (['static-mapping'].includes(col.type)) { return text ? (_c = col.map) === null || _c === void 0 ? void 0 : _c[text] : react_1.default.createElement("span", { className: 'text-muted' }, "-"); } if (['input-date', 'input-datetime', 'input-time', 'input-month', 'input-quarter', 'input-year', 'date', 'datetime', 'time', 'static-date', 'static-datetime', 'static-time'].includes(col.type)) { return text ? render('', tslib_1.__assign(tslib_1.__assign({}, col), { type: 'date', value: record[col.name] }), { value: text, data: record, name: col.name, format: col.format || col.inputFormat }) : react_1.default.createElement("span", { className: 'text-muted' }, "-"); } if (col.type.includes('switch')) { return text == col.trueValue ? col.onText : col.offText; } if (col.type.includes('tpl') || col.type.includes('html')) { return render('', tslib_1.__assign(tslib_1.__assign({}, col), { type: 'tpl' }), { data: record }); } if (['input-number', 'number'].includes(col.type)) { return render('', tslib_1.__assign(tslib_1.__assign({}, col), { type: 'number' }), { data: record, value: record[col.name] }); } if (col.type.includes('input') || col.type.includes('static')) { return text !== null && text !== void 0 ? text : react_1.default.createElement("span", { className: 'text-muted' }, "-"); } return text; } }; }; //批量插入 多条数据 key 列主键 var insertMany = function (tableName, dataList, key) { return tslib_1.__awaiter(void 0, void 0, void 0, function () { var res; return tslib_1.__generator(this, function (_a) { switch (_a.label) { case 0: return [4 /*yield*/, shell_1.Shell.execInsert(tableName, dataList, key)]; case 1: res = _a.sent(); return [2 /*return*/, Promise.resolve(res.success)]; } }); }); }; //更新表中某条数据 var update = function (tableName, newData, key) { return tslib_1.__awaiter(void 0, void 0, Promise, function () { var res; return tslib_1.__generator(this, function (_a) { switch (_a.label) { case 0: return [4 /*yield*/, shell_1.Shell.execUpdate(tableName, [newData], key)]; case 1: res = _a.sent(); return [2 /*return*/, Promise.resolve(res.success)]; } }); }); }; //删除表中的某条数据 var deleteByKey = function (tableName, keyValue, key) { return tslib_1.__awaiter(void 0, void 0, Promise, function () { var res; return tslib_1.__generator(this, function (_a) { switch (_a.label) { case 0: return [4 /*yield*/, shell_1.Shell.execDelete(tableName, keyValue, key)]; case 1: res = _a.sent(); return [2 /*return*/, Promise.resolve(res.success)]; } }); }); }; //查找表中的某条数据 var findByKey = function (tableName, keyValue, key) { return tslib_1.__awaiter(void 0, void 0, Promise, function () { var res, result, data; var _a; return tslib_1.__generator(this, function (_b) { switch (_b.label) { case 0: return [4 /*yield*/, shell_1.Shell.execFind(tableName, keyValue, key)]; case 1: res = _b.sent(); if (res.success) { result = ((_a = res === null || res === void 0 ? void 0 : res.data) === null || _a === void 0 ? void 0 : _a.content) ? JSON.parse(res.data.content) : []; data = (result === null || result === void 0 ? void 0 : result.length) > 0 ? typeof result[0] === 'string' ? JSON.parse(result[0]) : result[0] : null; return [2 /*return*/, Promise.resolve(data)]; } else { console.error('查找出错', res); return [2 /*return*/, Promise.reject()]; } return [2 /*return*/]; } }); }); }; //判断是否已经下载过数据 var hasDownload = function () { return tslib_1.__awaiter(void 0, void 0, Promise, function () { return tslib_1.__generator(this, function (_a) { return [2 /*return*/, new Promise(function (resolve, reject) { return tslib_1.__awaiter(void 0, void 0, void 0, function () { var data; return tslib_1.__generator(this, function (_a) { switch (_a.label) { case 0: return [4 /*yield*/, findAll(name)]; case 1: data = _a.sent(); if ((data === null || data === void 0 ? void 0 : data.length) > 0) { resolve(true); } else { resolve(false); } return [2 /*return*/]; } }); }); })]; }); }); }; var handleDownload = function () { return tslib_1.__awaiter(void 0, void 0, void 0, function () { var res; return tslib_1.__generator(this, function (_a) { switch (_a.label) { case 0: return [4 /*yield*/, hasDownload()]; case 1: res = _a.sent(); if (res) { antd_1.Modal.confirm({ content: '已有下载数据,是否重新下载?', okText: __('Offline.reload'), cancelText: __('Offline.continue'), onOk: function () { return tslib_1.__awaiter(void 0, void 0, void 0, function () { return tslib_1.__generator(this, function (_a) { switch (_a.label) { case 0: return [4 /*yield*/, clear(name)]; case 1: _a.sent(); setOfflineTemplist([]); download(); return [2 /*return*/]; } }); }); } }); } else { download(); } return [2 /*return*/]; } }); }); }; //删除 var handleDelete = function () { antd_1.Modal.confirm({ content: '是否确认删除本条数据?', okText: '确定', cancelText: '取消', onOk: function () { return tslib_1.__awaiter(void 0, void 0, void 0, function () { var value, res, restTmp, deleteIndex, newData; return tslib_1.__generator(this, function (_a) { switch (_a.label) { case 0: value = currentRow === null || currentRow === void 0 ? void 0 : currentRow[primaryField]; return [4 /*yield*/, deleteByKey(name, value, primaryField)]; case 1: res = _a.sent(); if (res) { if (offlineTemplist.includes(value)) { restTmp = offlineTemplist.filter(function (k) { return k !== value; }); setOfflineTemplist(restTmp); } deleteIndex = offlineData.findIndex(function (item) { return item[primaryField] === value; }); if (deleteIndex != -1) { newData = tslib_1.__spreadArray([], offlineData, true); newData.splice(deleteIndex, 1); setOfflineData(newData); setCurrentRow(null); antd_1.message.success('删除成功!'); } } return [2 /*return*/]; } }); }); } }); }; //重置 var resetOfflineData = function () { return tslib_1.__awaiter(void 0, void 0, void 0, function () { return tslib_1.__generator(this, function (_a) { antd_1.Modal.confirm({ content: '是否确认重置数据?', okText: '确定', cancelText: '取消', onOk: function () { return tslib_1.__awaiter(void 0, void 0, void 0, function () { var res, insertRes; return tslib_1.__generator(this, function (_a) { switch (_a.label) { case 0: setOfflineLoading(true); return [4 /*yield*/, shell_1.Shell.execDelete(name)]; case 1: res = _a.sent(); if (!res.success) { setOfflineLoading(false); return [2 /*return*/, antd_1.message.warn('操作失败!')]; } return [4 /*yield*/, insertMany(name, tslib_1.__spreadArray([], originOfflineData.current, true), primaryField)]; case 2: insertRes = _a.sent(); if (!insertRes) { setOfflineLoading(false); return [2 /*return*/, antd_1.message.warn('操作失败!')]; } setOfflineLoading(false); setOfflineTemplist([]); setOfflineData(tslib_1.__spreadArray([], originOfflineData.current, true)); setOfflineProgress(0); setCurrentRow(null); antd_1.message.success('已重置数据'); return [2 /*return*/]; } }); }); } }); return [2 /*return*/]; }); }); }; //清空 var clearOfflineData = function () { return tslib_1.__awaiter(void 0, void 0, void 0, function () { return tslib_1.__generator(this, function (_a) { antd_1.Modal.confirm({ content: '是否确认清空数据?', okText: '确定', cancelText: '取消', onOk: function () { return tslib_1.__awaiter(void 0, void 0, void 0, function () { return tslib_1.__generator(this, function (_a) { switch (_a.label) { case 0: setOfflineLoading(true); return [4 /*yield*/, clear(name)]; case 1: _a.sent(); setOfflineLoading(false); setOfflineTemplist([]); setOfflineProgress(0); setOfflineData([]); setCurrentRow(null); antd_1.message.success('已清空数据'); return [2 /*return*/]; } }); }); } }); return [2 /*return*/]; }); }); }; //获取数据,渲染离线表格 var offlineOpt = function () { return tslib_1.__awaiter(void 0, void 0, void 0, function () { var shellData, cols; return tslib_1.__generator(this, function (_a) { switch (_a.label) { case 0: return [4 /*yield*/, findAll(name)]; case 1: shellData = _a.sent(); setOfflineData(shellData || []); originOfflineData.current = shellData || []; cols = offlineSchema.columns.map(function (item) { return columnExchange(item); }); setOfflineFormShow(true); setOfflineColumns(cols); fixOfflineTmpList(); return [2 /*return*/]; } }); }); }; //临时数据改变时,将临时数据置顶 var fixOfflineTmpList = function () { if (offlineTemplist.length) { var restData = offlineData.filter(function (item) { return !offlineTemplist.includes(item[primaryField]); }); var tempDataList = offlineTemplist.map(function (k) { return offlineData.find(function (item) { return item[primaryField] == k; }); }).filter(function (item) { return item !== undefined; }); setOfflineData(tslib_1.__spreadArray(tslib_1.__spreadArray([], tempDataList, true), restData, true)); } }; //提交数据 var commitFormData = function (updateData) { return tslib_1.__awaiter(void 0, void 0, void 0, function () { var result, data, primaryValue, newData; return tslib_1.__generator(this, function (_a) { switch (_a.label) { case 0: return [4 /*yield*/, update(name, updateData, primaryField)]; case 1: result = _a.sent(); if (!result) return [2 /*return*/, antd_1.message.error('数据更新失败!')]; return [4 /*yield*/, findByKey(name, updateData === null || updateData === void 0 ? void 0 : updateData[primaryField], primaryField)]; case 2: data = _a.sent(); primaryValue = data === null || data === void 0 ? void 0 : data[primaryField]; if (!offlineTemplist.includes(primaryValue)) { setOfflineTemplist(tslib_1.__spreadArray(tslib_1.__spreadArray([], offlineTemplist, true), [primaryValue], false)); } if (data) { newData = offlineData.map(function (item) { if ((item === null || item === void 0 ? void 0 : item[primaryField]) === (data === null || data === void 0 ? void 0 : data[primaryField])) { return data; } return item; }); setOfflineData(newData); fixOfflineTmpList(); } return [2 /*return*/]; } }); }); }; //扫码查询 var handleScanCode = function () { return tslib_1.__awaiter(void 0, void 0, void 0, function () { return tslib_1.__generator(this, function (_a) { return [2 /*return*/, shell_1.Shell.getScanCode(0, { input: true }).then(function (e) { if (e.success === false) { return Promise.reject(''); } else { var res = e.data.content; res && antd_1.message.success('扫描成功'); return scanCode(res); } })]; }); }); }; var scanCode = function (code) { return tslib_1.__awaiter(void 0, void 0, void 0, function () { var data, primaryValue, tmpArr; var _a; return tslib_1.__generator(this, function (_b) { switch (_b.label) { case 0: if (!!code) return [3 /*break*/, 1]; antd_1.message.error('该码无效!'); return [3 /*break*/, 3]; case 1: setOfflineLoading(true); return [4 /*yield*/, findByKey(name, code, primaryField)]; case 2: data = _b.sent(); if (data) { primaryValue = data === null || data === void 0 ? void 0 : data[primaryField]; tmpArr = JSON.parse((_a = localStorage.getItem('offlineTemplist')) !== null && _a !== void 0 ? _a : ''); if (!tmpArr.includes(primaryValue)) { setOfflineTemplist(tslib_1.__spreadArray(tslib_1.__spreadArray([], tmpArr, true), [primaryValue], false)); } setCurrentRow(data); setOfflineFormShow(true); setOffline(false); setCodeVisible(false); } else { antd_1.message.warning('无对应数据,请重新扫码!'); } setOfflineLoading(false); _b.label = 3; case 3: return [2 /*return*/]; } }); }); }; //上传数据 var handleUpload = function (uploadAction) { return tslib_1.__awaiter(void 0, void 0, void 0, function () { return tslib_1.__generator(this, function (_a) { if (!offlineTemplist.length) { antd_1.message.warning('当前数据暂未修改或进行扫描,无需上传!'); return [2 /*return*/]; } antd_1.Modal.confirm({ content: '是否确认上传离线操作数据?', okText: '上传', okType: 'danger', cancelText: '取消', onOk: function () { return tslib_1.__awaiter(void 0, void 0, void 0, function () { var baseURL, uploadResult, allData_1, uploadData, zipData, tmpList_1, err_1; var _a, _b; return tslib_1.__generator(this, function (_c) { switch (_c.label) { case 0: baseURL = ((_b = (_a = env === null || env === void 0 ? void 0 : env.axiosInstance) === null || _a === void 0 ? void 0 : _a.defaults) === null || _b === void 0 ? void 0 : _b.baseURL) || (env === null || env === void 0 ? void 0 : env.ajaxApi) || 'https://sasdev.sanfu.com/saas_dev'; setOfflineLoading(true); setOfflineStatus(true); handleOfflineProgress(); return [4 /*yield*/, shell_1.Shell.offlineUloadImg(name, baseURL + '/api/v1/upload/offline/picture', 'post')]; case 1: uploadResult = _c.sent(); if (uploadResult.success === false) { antd_1.message.error('图片上传失败!'); setOfflineLoading(false); setOfflineStatus(false); throw new Error('图片上传失败!'); } _c.label = 2; case 2: _c.trys.push([2, 4, , 5]); return [4 /*yield*/, findAll(name)]; case 3: allData_1 = _c.sent(); uploadData = offlineTemplist.map(function (item) { return allData_1.find(function (row) { return row[primaryField] === item; }); }); zipData = (0, gzip_1.Gzip)(JSON.stringify(uploadData)); tmpList_1 = tslib_1.__spreadArray([], offlineTemplist, true); env.fetcher({ url: uploadAction.api.url, method: uploadAction.api.method }, { data: zipData }, { silent: true }).then(function (res) { if (res.status === 0) { clearInterval(offlineInterval.current); clearTimeout(offlineTimeout.current); offlineTimeout.current = null; setOfflineProgress(100); antd_1.message.success("\u672C\u6B21\u4E0A\u4F20\u6210\u529F".concat(offlineTemplist.length, "\u5305")); var restData = allData_1.filter(function (item) { return !offlineTemplist.includes(item[primaryField]); }); setOfflineLoading(false); setOfflineStatus(false); setOfflineProgress(0); setOfflineTemplist([]); setCurrentRow(null); setOfflineData(restData); originOfflineData.current = restData; for (var _i = 0, tmpList_2 = tmpList_1; _i < tmpList_2.length; _i++) { var iterator = tmpList_2[_i]; deleteByKey(name, iterator, primaryField); } search(); } else { antd_1.message.error(res.msg || '数据上传失败!'); setOfflineLoading(false); setOfflineStatus(false); } }); return [3 /*break*/, 5]; case 4: err_1 = _c.sent(); antd_1.message.error('提交数据出错!'); setOfflineLoading(false); setOfflineStatus(false); throw new Error(err_1); case 5: return [2 /*return*/]; } }); }); } }); return [2 /*return*/]; }); }); }; //离线上传本地图片 var addOfflineImage = function (list, fieldName) { var _a, _b, _c, _d; var oldData = currentRow === null || currentRow === void 0 ? void 0 : currentRow[fieldName]; var valueList = []; var info = list.map(function (item) { var name = item.replace('localfile:///', ''); valueList.push(item); return { addr: item, name: name, fileName: name }; }); if (oldData.value) { var newValue = tslib_1.__spreadArray([oldData.value], valueList, true).join(','); var newInfo = tslib_1.__spreadArray(tslib_1.__spreadArray([], oldData.info, true), info, true); setCurrentRow(tslib_1.__assign(tslib_1.__assign({}, currentRow), (_a = {}, _a[fieldName] = { value: newValue, info: newInfo }, _a))); commitFormData(tslib_1.__assign(tslib_1.__assign({}, currentRow), (_b = {}, _b[fieldName] = { value: newValue, info: newInfo }, _b))); } else { setCurrentRow(tslib_1.__assign(tslib_1.__assign({}, currentRow), (_c = {}, _c[fieldName] = { value: valueList.join(','), info: info }, _c))); commitFormData(tslib_1.__assign(tslib_1.__assign({}, currentRow), (_d = {}, _d[fieldName] = { value: valueList.join(','), info: info }, _d))); } }; //离线删除本地图片 var delOfflineImage = function (fieldName, fileIndex) { var _a, _b; var oldData = currentRow === null || currentRow === void 0 ? void 0 : currentRow[fieldName]; var valueList = oldData.value.split(','); var info = tslib_1.__spreadArray([], oldData.info, true); valueList.splice(fileIndex, 1); info.splice(fileIndex, 1); setCurrentRow(tslib_1.__assign(tslib_1.__assign({}, currentRow), (_a = {}, _a[fieldName] = { value: valueList.join(','), info: info }, _a))); commitFormData(tslib_1.__assign(tslib_1.__assign({}, currentRow), (_b = {}, _b[fieldName] = { value: valueList.join(','), info: info }, _b))); }; //退出离线页面 var offlineClose = function () { return tslib_1.__awaiter(void 0, void 0, void 0, function () { var res, offlinePageType; return tslib_1.__generator(this, function (_a) { switch (_a.label) { case 0: return [4 /*yield*/, hasDownload()]; case 1: res = _a.sent(); offlinePageType = offlineSchema.offlinePageType; if (offlineStatus) { return [2 /*return*/, antd_1.message.warning('请在数据上传下载完成后再操作!')]; } if (res) { antd_1.Modal.confirm({ content: '当前离线数据未上传,是否确认退出离线模式?', okText: '确定', cancelText: '取消', onOk: function () { if (offlinePageType === 'detail') { history.back(); } else { setOffline(false); setOfflineColumns([]); setOfflineData([]); setOfflineFormShow(false); setCurrentRow(null); } } }); } else { if (offlinePageType === 'detail') { history.back(); } else { setOffline(false); setOfflineColumns([]); setOfflineData([]); setOfflineFormShow(false); setCurrentRow(null); } } return [2 /*return*/]; } }); }); }; // 没有离线报文直接返回 if (!offlineSchema) return null; // 进度条 var renderOfflineLoading = function () { if (!offlineLoading) return null; return react_1.default.createElement(react_1.default.Fragment, null, react_1.default.createElement("div", { className: 'offline-progress-mask' }), react_1.default.createElement("div", { className: 'offline-progress-spinner' }, offlineStatus ? react_1.default.createElement("div", { style: { display: 'flex', flexDirection: 'column', alignItems: 'center' } }, react_1.default.createElement("div", { style: { fontSize: 14, background: '#fcfcfa' } }, "\u6B63\u5728\u4E0B\u8F7D\u6570\u636E\uFF0C\u8BF7\u7A0D\u7B49..."), react_1.default.createElement(antd_1.Progress, { status: 'active', style: { width: 300, height: 18 }, percent: offlineProgress, size: "default" })) : react_1.default.createElement(antd_1.Spin, { size: 'large', indicator: react_1.default.createElement(icons_1.Loadi