fastlion-amis
Version:
一种MIS页面生成工具
944 lines • 63.7 kB
JavaScript
"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