fastlion-amis
Version:
一种MIS页面生成工具
263 lines (262 loc) • 17 kB
JavaScript
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
var tslib_1 = require("tslib");
var react_1 = (0, tslib_1.__importDefault)(require("react"));
var icons_1 = require("../../../../../components/icons");
var icons_2 = require("@ant-design/icons");
var helper_1 = require("../../../../../utils/helper");
var utils_1 = require("../../../utils/utils");
require("./index.scss");
var Image_1 = (0, tslib_1.__importDefault)(require("../../../../Image"));
// 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";//退回
// nodeType表示加签|| 会签 ||或签 || 2 || 1 || 0
var FlowInformation = function (props) {
var _a, _b;
var processNode = props.processNode, flowDetail = props.flowDetail, env = props.env, onImageEnlarge = props.onImageEnlarge;
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'];
var opinion = ['通过', '待审核', '撤销', '可签核', '拒绝', '审核中', '提交申请', '退回', '未定义'];
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, constent) {
switch (val) {
case 'pass':
return constent[0];
case 'waiting':
return constent[1];
case 'revert':
return constent[2];
case 'ondo':
return constent[3];
case 'refuse':
return constent[4];
case 'doing':
return constent[5];
case 'submit':
return constent[6];
case 'return':
return constent[7];
default:
return constent[8];
}
};
var decision = function (val) {
switch (val) {
case 'submit':
return react_1.default.createElement("div", { className: 'decision_icon submit' });
case 'pass':
return react_1.default.createElement("div", { className: 'decision_icon pass' });
case 'waiting':
return react_1.default.createElement("div", { className: 'decision_icon waiting' });
case 'revert':
return react_1.default.createElement("div", { className: 'decision_icon revert' });
case 'ondo':
return react_1.default.createElement("div", { className: 'decision_icon ondo' });
case 'refuse':
return react_1.default.createElement("div", { className: 'decision_icon refuse' });
case 'doing':
return react_1.default.createElement("div", { className: 'decision_icon doing' });
default:
return react_1.default.createElement("div", { className: 'decision_icon' });
}
};
var filetext = function (fileName) {
if (canonicalPdf.test(fileName)) {
return react_1.default.createElement(icons_1.Icon, { icon: 'file-pdf', className: "icon" });
}
else if (canonicalPpd.test(fileName)) {
return react_1.default.createElement(icons_1.Icon, { icon: 'file-ppd', className: "icon" });
}
else if (canonicalImg.test(fileName)) {
return react_1.default.createElement(icons_1.Icon, { icon: 'file-img', className: "icon" });
}
else if (canonicalXlsx.test(fileName)) {
return react_1.default.createElement(icons_1.Icon, { icon: 'file-xls', className: "icon" });
}
else if (canonicalDocx.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 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 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' },
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": "查看大图", "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": "下载", "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) {
return react_1.default.createElement("div", { className: 'textfile_xls' },
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: '\u4E0B\u8F7D', 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_img' },
react_1.default.createElement(icons_1.Icon, { icon: 'camera', className: "icon" })),
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.attachments && handledownload(val))));
};
var before = function (item, data) {
return item.some(function (item) { return item.nodeStatus == data; });
};
return (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' }, "\u5BA1\u6279\u8BE6\u60C5")),
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' }, "\u6D41\u7A0B\u5F00\u59CB")),
react_1.default.createElement("div", { className: 'titlecontent_line', style: { height: 'calc(100% + 38px)' } })),
result && result.map(function (item, Inx) {
return react_1.default.createElement(react_1.default.Fragment, null,
react_1.default.createElement("div", { key: item[0].nodeId, className: "process_group" },
react_1.default.createElement("div", { className: "process_title " + (before(item, 'doing') ?
'process_doing' :
before(item, 'waiting') ?
"process_waiting" :
'') },
item[0].nodeStatus == 'submit' ?
react_1.default.createElement("div", { className: 'process_icon' },
react_1.default.createElement(icons_1.Icon, { icon: "apply-for", className: "icon" }))
:
item[0].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' }, item[0].nodeName),
react_1.default.createElement("div", null,
item[0].nodeType == 2 &&
react_1.default.createElement("span", { style: { color: '#00000040' } },
"\u7531 ",
item[0].nodeAddUser.userName,
" \u52A0\u7B7E"),
item.length > 1 && item[0].nodeType == 1 && react_1.default.createElement("span", { title: '\u4F1A\u7B7E', style: { cursor: 'pointer', color: 'rgba(0, 0, 0, 0.45)', } },
"\u4F1A\u7B7E ",
react_1.default.createElement("span", null, " "),
react_1.default.createElement(icons_1.Icon, { icon: "head-meeting", className: "icon" })))),
item.map(function (data, index) {
return react_1.default.createElement("div", { className: 'process', key: index },
handledBy(data),
react_1.default.createElement("div", { className: "titlecontent_line " + ((data.nodeStatus == 'doing' || data.nodeStatus == 'waiting') ? 'before_doing' : '') }));
})));
})),
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' }, "\u6D41\u7A0B\u7ED3\u675F")))))));
};
exports.default = FlowInformation;
//# sourceMappingURL=./renderers/Lion/Mobileprocess/components/FlowInformation/index.js.map