UNPKG

fastlion-amis

Version:

一种MIS页面生成工具

263 lines (262 loc) 17 kB
"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