fastlion-amis
Version:
一种MIS页面生成工具
341 lines (340 loc) • 20.8 kB
JavaScript
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
var tslib_1 = require("tslib");
var react_1 = (0, tslib_1.__importDefault)(require("react"));
require("./index.scss");
var icons_1 = require("../../icons");
var helper_1 = require("../../../utils/helper");
var icons_2 = require("@ant-design/icons");
var utils_1 = require("../../../renderers/Lion/utils/utils");
var Image_1 = (0, tslib_1.__importDefault)(require("../../../renderers/Image"));
var antd_1 = require("antd");
var FlowTableRow_1 = (0, tslib_1.__importDefault)(require("./FlowTableRow"));
var FlowResultBody_1 = (0, tslib_1.__importDefault)(require("./FlowResultBody"));
// String OPERATION_STATUS_WAITING ="waiting";// 待审核
// String OPERATION_STATUS_ONDO ="ondo";// 可签核
// String OPERATION_STATUS_DOING ="doing";// 处理中
// String OPERATION_STATUS_REVERT ="revert";//撤销
// String OPERATION_STATUS_REFUSE ="refuse";//拒绝
// String OPERATION_STATUS_PASS ="pass";//通过
// String OPERATION_STATUS_PASS ="submit";//提交申请
// String OPERATION_STATUS_PASS ="return";//退回
// String OPERATION_STATUS_PASS ="referral";//已转办
// nodeType表示加签|| 会签 ||或签 || 2 || 1 || 0
var statusObj = { submit: '提交申请', waiting: '待签核', doing: '签核中', revert: '撤销', refuse: '拒绝', pass: '通过', return: '退回' };
var nodeTypeObj = { 0: '或签', 1: '会签', 2: '加签', 3: '系统签核' };
var FlowInformation = function (props) {
var _a, _b;
var processNode = props.processNode, flowDetail = props.flowDetail, env = props.env, render = props.render, onImageEnlarge = props.onImageEnlarge, language = props.language;
var Mobile = (0, helper_1.isMobile)();
var 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) || '';
var canonicalImg = /(.jpe?)g|(.png)|(.svg)|(.gif)/i;
var canonicalPpd = /(.ppd)/i;
var canonicalPdf = /(.pdf)/i;
var canonicalXlsx = /(.xlsx)|(.xls)/i;
var canonicalDocx = /(.docx)|(.doc)/;
var last = ['approver_opinion1', 'approver_opinion2', 'approver_opinion3', 'approver_opinion4', 'approver_opinion5', 'approver_opinion6', 'approver_opinion7', 'approver_opinion8', 'approver_opinion9', 'approver_opinion10', 'approver_opinion11', 'approver_opinion12'];
var opinion = [
// '通过',
language('Flow.adopt'),
// '待审核',
language('Flow.pending.review'),
// '撤销',
language('Flow.revoke'),
// '可签核',
language('Flow.signable'),
// '拒绝',
language('Flow.refuse'),
// '审核中',
language('Flow.under.review'),
// '提交申请',
language('Flow.submit.application'),
// '退回',
language('Flow.returne'),
// '已转办',
language('Flow.transferred'),
// '无需处理',
language('Flow.no.processing.required'),
// '自动退回',
language('Flow.automatic.rollback'),
// '未定义'
language('Flow.undefined'),
];
var filetext = function (fileName) {
if (/(.pdf)/i.test(fileName)) {
return react_1.default.createElement(icons_1.Icon, { icon: 'file-pdf', className: "icon" });
}
else if (/(.ppd)/i.test(fileName)) {
return react_1.default.createElement(icons_1.Icon, { icon: 'file-ppd', className: "icon" });
}
else if (/(.jpe?)g|(.png)|(.svg)|(.gif)/i.test(fileName)) {
return react_1.default.createElement(icons_1.Icon, { icon: 'file-img', className: "icon" });
}
else if (/(.xlsx)|(.xls)/i.test(fileName)) {
return react_1.default.createElement(icons_1.Icon, { icon: 'file-xls', className: "icon" });
}
else if (/(.docx)|(.doc)/i.test(fileName)) {
return react_1.default.createElement(icons_1.Icon, { icon: 'file-doc', className: "icon" });
}
else {
return react_1.default.createElement(icons_1.Icon, { icon: 'file-file', className: "icon" });
}
};
var mergeNodes = function (nodes) {
var result = [];
var group = [];
for (var i = 0; i < nodes.length; i++) {
var curr = nodes[i];
var prev = nodes[i - 1];
if (i > 0 && curr.nodeName !== prev.nodeName) {
result.push(group);
group = [];
}
group.push(curr);
}
if (group.length > 0) {
result.push(group);
}
return result;
};
var result = mergeNodes(processNode);
var actual = function (val, constants) {
var options = {
pass: constants[0],
waiting: constants[1],
revert: constants[2],
ondo: constants[3],
refuse: constants[4],
doing: constants[5],
submit: constants[6],
return: constants[7],
referral: constants[8],
nothandled: constants[9],
auto_return: constants[10], // 自动退回
};
return options[val] || constants[11];
};
var decision = function (val) {
var classNames = {
submit: 'submit',
pass: 'pass',
waiting: 'waiting',
revert: 'revert',
ondo: 'ondo',
refuse: 'refuse',
doing: 'doing', // 处理中
};
var className = classNames[val] || '';
return react_1.default.createElement("div", { className: "decision_icon " + className });
};
// 文件分组
var filetsort = function (fileName) {
var filePdf = [];
var filePpd = [];
var fileRun = [];
var fileXlsx = [];
var fileDocx = [];
fileName.forEach(function (item) {
if (canonicalPdf.test(item.name)) {
filePdf.push(item);
}
else if (canonicalPpd.test(item.name)) {
filePpd.push(item);
}
else if (canonicalXlsx.test(item.name)) {
fileXlsx.push(item);
}
else if (canonicalDocx.test(item.name)) {
fileDocx.push(item);
}
else {
fileRun.push(item);
}
});
return (0, tslib_1.__spreadArray)((0, tslib_1.__spreadArray)((0, tslib_1.__spreadArray)((0, tslib_1.__spreadArray)((0, tslib_1.__spreadArray)([], filePdf, true), filePpd, true), fileXlsx, true), fileDocx, true), fileRun, true);
};
// 下载
// 当前流程状态
var handleStatus = function (body, dot) {
var value = '';
var icon = 'default';
switch (body) {
case 'doing':
value = statusObj[body];
icon = 'processing';
break;
case 'submit':
value = statusObj[body];
icon = 'success';
break;
case 'pass':
value = statusObj[body];
icon = 'success';
break;
case 'return':
case 'refuse':
value = statusObj[body];
icon = 'error';
break;
case 'revert':
value = statusObj[body];
icon = 'warning';
break;
case 'waiting':
value = statusObj[body];
icon = 'default';
break;
case 'ondo':
value = '';
icon = 'processing';
break;
default:
value = '';
icon = 'default';
break;
}
if (dot) {
value = '';
}
return react_1.default.createElement(antd_1.Badge, { status: icon, text: value, dot: dot });
};
var previewImage = function (file, showfileimg) {
if (onImageEnlarge) {
onImageEnlarge({
// 预览地址
src: file.thumbnailAddr,
originalSrc: file.thumbnailAddr,
list: showfileimg.map(function (file) { return ({
src: file.thumbnailAddr,
originalSrc: file.thumbnailAddr,
title: file.name
}); })
});
}
};
var handledownload = function (data) {
var dataImg = data.attachments.filter(function (Item) { return canonicalImg.test(Item.name); });
var dataText = filetsort(data.attachments.filter(function (Item) { return !canonicalImg.test(Item.name); }));
return react_1.default.createElement(react_1.default.Fragment, null,
react_1.default.createElement("div", { className: 'data_img' }, dataImg.map(function (item, index) {
return (react_1.default.createElement("div", { className: 'pieceimg', key: index },
react_1.default.createElement(Image_1.default, { className: 'pieceimg_img', key: index, src: baseUrl + item.thumbnailAddr, originalSrc: item.addr, alt: item.name || item.preview_name, thumbRatio: '1:1', imageClassName: 'icon-fill', thumbClassName: 'pieceimg_img_data', overlays: react_1.default.createElement(react_1.default.Fragment, null,
react_1.default.createElement("a", { "data-tooltip": language('Image.zoomIn'), "data-position": "bottom", target: "_blank", rel: "noopener", onClick: function () { return previewImage(item, dataImg); } },
react_1.default.createElement(icons_1.Icon, { icon: "view", className: "icon" })),
react_1.default.createElement("a", { "data-tooltip": language('download'), "data-position": "bottom", target: "_blank", rel: "noopener", onClick: function () { (0, utils_1.downloadFile)(baseUrl + item.addr, item.name); } },
react_1.default.createElement("span", { className: "fa fa-download", style: { fontSize: '13px' } }))) })));
})),
react_1.default.createElement("div", { className: 'data_text' }, dataText.map(function (item, index) {
return (react_1.default.createElement("div", { className: 'textfile_xls', key: index },
react_1.default.createElement("div", { className: 'textfile_text' },
react_1.default.createElement("span", { className: 'textfile_icon' }, filetext(item.name)),
react_1.default.createElement("span", { className: 'text' }, item.name)),
react_1.default.createElement("div", { className: 'textfile_size' },
react_1.default.createElement("span", { className: 'item-select-tag-size' }, (0, utils_1.byteSize)(item.size)),
react_1.default.createElement("span", { className: 'item-select-tag-btn', title: language('download'), onClick: function () {
(0, utils_1.downloadFile)(baseUrl + item.addr, item.name);
} },
react_1.default.createElement(icons_2.CloudDownloadOutlined, null)))));
})));
};
var handledBy = function (val) {
return react_1.default.createElement("div", { className: 'approver' },
react_1.default.createElement("div", { className: 'decision' },
react_1.default.createElement("div", { className: 'outer-layer' }, decision(val.nodeStatus))),
react_1.default.createElement("div", { className: 'approver_usercontent' },
react_1.default.createElement("div", { className: 'approver_user' },
react_1.default.createElement("div", { className: 'approver_personnel' },
react_1.default.createElement("span", { className: 'approver_name' },
react_1.default.createElement("span", null, val.nodeUser.userName),
val.nodeUser.userRole && react_1.default.createElement(react_1.default.Fragment, null,
react_1.default.createElement("span", { style: { fontSize: "20px", verticalAlign: 'top' } }, " \u00B7 "),
react_1.default.createElement("span", null,
" ",
val.nodeUser.userRole,
" ")))),
val.nodeStatus && react_1.default.createElement("div", { className: 'approver_status' },
val.nodeEndTime &&
react_1.default.createElement("span", { className: "approver_time" }, val.nodeEndTime),
react_1.default.createElement("span", { className: "" + actual(val.nodeStatus, last) }, actual(val.nodeStatus, opinion)))),
react_1.default.createElement("div", { className: 'put-on-display' },
val.remarkComment &&
react_1.default.createElement("p", { className: 'approver_content' }, val.remarkComment),
val.assignComment && react_1.default.createElement(react_1.default.Fragment, null,
react_1.default.createElement("p", { className: 'approver_content' },
react_1.default.createElement("p", { style: { color: '#3574ee', marginBottom: 4 } }, " \u52A0\u7B7E\u610F\u89C1\uFF1A"),
val.assignComment)),
val.attachments && handledownload(val))));
};
var before = function (item, data) {
return item.some(function (item) { return item.nodeStatus == data; });
};
var handleResultBody = function (result) {
return result.map(function (item, Inx) {
item.sort(function (a, b) {
var dateA = a.nodeEndTime ? new Date(a.nodeEndTime) : new Date('9999-12-31');
var dateB = b.nodeEndTime ? new Date(b.nodeEndTime) : new Date('9999-12-31');
return dateA.getTime() - dateB.getTime();
});
var processTitleClassName = before(item, 'doing') ? 'process_doing' : before(item, 'waiting') ? 'process_waiting' : '';
var firstNode = item[0];
return (react_1.default.createElement("div", { key: Inx, className: "process_group" },
react_1.default.createElement("div", { className: "process_title " + processTitleClassName },
firstNode.nodeStatus === 'submit' ? (react_1.default.createElement("div", { className: "process_icon" },
react_1.default.createElement(icons_1.Icon, { icon: "apply-for", className: "icon" }))) : firstNode.nodeType === 2 ? (react_1.default.createElement("div", { className: "process_icon", style: { fontSize: '28px', left: '8px' } },
react_1.default.createElement(icons_1.Icon, { icon: "approval-plus", className: "icon" }))) : (react_1.default.createElement("div", { className: "process_icon" },
react_1.default.createElement(icons_1.Icon, { icon: "examineicon", className: "icon" }))),
react_1.default.createElement("div", { className: "process_list" }, firstNode.nodeName),
react_1.default.createElement("div", null,
firstNode.nodeType === 2 && (react_1.default.createElement("span", { style: { color: '#00000040' } }, language('Flow.add.signature'))),
item.length > 1 && firstNode.nodeType === 1 && (react_1.default.createElement("span", { title: language('Flow.countersign'), style: { cursor: 'pointer', color: 'rgba(0, 0, 0, 0.45)' } },
language('Flow.countersign'),
react_1.default.createElement("span", null, " "),
react_1.default.createElement(icons_1.Icon, { icon: "head-meeting", className: "icon" }))),
firstNode.nodeType === 3 && (react_1.default.createElement("span", { style: { color: '#00000040' } }, "\u7CFB\u7EDF\u7B7E\u6838")))),
react_1.default.createElement(FlowResultBody_1.default, { node: item, handledBy: handledBy })));
});
};
return Mobile ? (react_1.default.createElement("div", { className: 'technological' },
react_1.default.createElement("div", { className: 'title' },
react_1.default.createElement("div", { className: 'titlecontent' },
react_1.default.createElement("h3", { className: 'name_const' }, language('Flow.approval.details'))),
react_1.default.createElement("div", { className: 'titlecontent', style: { paddingLeft: '16px' } },
react_1.default.createElement("div", { className: "flow_path " + (!Mobile ? "flow_Mobile" : "") },
react_1.default.createElement("div", null,
react_1.default.createElement("span", { className: 'outlined' }),
react_1.default.createElement("span", { className: 'flow_path_text' }, language('Flow.process.start'))),
react_1.default.createElement("div", { className: 'titlecontent_line', style: { height: 'calc(100% + 38px)' } })),
result && handleResultBody(result)),
react_1.default.createElement("div", { className: 'titlecontent', style: { paddingLeft: '16px' } },
react_1.default.createElement("div", { className: "flow_path" },
react_1.default.createElement("div", null,
react_1.default.createElement("span", { className: "" + (flowDetail.flowProcess.processStatus == 'doing' ? 'outlined_doing' : 'outlined') }),
react_1.default.createElement("span", { className: 'flow_path_text' }, language('Flow.end.of.process')))))))) : (react_1.default.createElement("div", { className: 'technological-table-wrapper' },
react_1.default.createElement("table", { id: 'flow-technological', className: 'technological-table', cellSpacing: 0 },
react_1.default.createElement("colgroup", null,
react_1.default.createElement("col", { width: 55 }),
react_1.default.createElement("col", { width: 170 }),
react_1.default.createElement("col", { width: 100 }),
react_1.default.createElement("col", { width: 200 }),
react_1.default.createElement("col", { width: 200 }),
react_1.default.createElement("col", { width: 200 }),
react_1.default.createElement("col", null),
processNode.some(function (itme) { return itme.assignComment; }) && react_1.default.createElement("col", null),
react_1.default.createElement("col", null)),
react_1.default.createElement("thead", null,
react_1.default.createElement("tr", null,
react_1.default.createElement("td", { style: { textAlign: 'center' } }, "\u5E8F\u53F7"),
react_1.default.createElement("td", null, "\u5BA1\u6279\u8282\u70B9"),
react_1.default.createElement("td", null, "\u7B7E\u6838\u7C7B\u578B"),
react_1.default.createElement("td", null, "\u5BA1\u6279\u4EBA"),
react_1.default.createElement("td", null, "\u5BA1\u6279\u7ED3\u679C"),
react_1.default.createElement("td", null, "\u5BA1\u6279\u65F6\u95F4"),
react_1.default.createElement("td", null, "\u5BA1\u6279\u610F\u89C1"),
processNode.some(function (itme) { return itme.assignComment; }) && react_1.default.createElement("td", null, "\u52A0\u7B7E\u610F\u89C1"),
react_1.default.createElement("td", null, "\u9644\u4EF6"))),
react_1.default.createElement("tbody", null, result.map(function (node, index) {
return react_1.default.createElement(FlowTableRow_1.default, { key: index, node: node, nodeTypeObj: nodeTypeObj, env: env, handleStatus: handleStatus, processNode: processNode, render: render });
})))));
};
exports.default = FlowInformation;
//# sourceMappingURL=./components/Mobileprocess/FlowInformation/index.js.map