UNPKG

fastlion-amis

Version:

一种MIS页面生成工具

162 lines (161 loc) 13.9 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 antd_1 = require("antd"); var icons_2 = require("../../../../../components/icons"); var helper_1 = require("../../../../../utils/helper"); var tools_1 = require("../../../../../utils/shell/tools"); var MbContacts_1 = (0, tslib_1.__importDefault)(require("../../../../../components/Communication/MbContacts")); var TreeSelectModal_1 = (0, tslib_1.__importDefault)(require("../../../../../components/Communication/TreeSelectModal")); var TextArea_1 = (0, tslib_1.__importDefault)(require("antd/lib/input/TextArea")); require("./index.scss"); var FlowCountersign = function (props) { var env = props.env, handleOnClick = props.handleOnClick, attachmentApi = props.attachmentApi, name = props.name; var _a = (0, react_1.useState)(false), visible = _a[0], setVisible = _a[1]; var _b = (0, react_1.useState)(), contacts = _b[0], setContacts = _b[1]; var _c = (0, react_1.useState)([]), receivers = _c[0], setReceivers = _c[1]; var _d = (0, react_1.useState)(undefined), radioValue = _d[0], setRadioValue = _d[1]; var _e = (0, react_1.useState)(undefined), checkFlagValue = _e[0], setCheckFlagValue = _e[1]; var _f = (0, react_1.useState)(false), radioMultiple = _f[0], setRadioMultiple = _f[1]; var _g = (0, react_1.useState)(''), textArea = _g[0], setTextArea = _g[1]; var form = antd_1.Form.useForm()[0]; var Mobile = (0, helper_1.isMobile)(); var value = sessionStorage.getItem('contacts'); var nodeMap = (0, react_1.useRef)(new Map(value ? JSON.parse(value) : null)); var flow = (name == 'flow_assign' ? true : false); (0, react_1.useImperativeHandle)(props.onRef, function () { return { handleOk: onChangeTextArea }; }); (0, react_1.useEffect)(function () { if (!visible) return; if (sessionStorage.getItem('personnel')) { var personnel = JSON.parse(sessionStorage.getItem('personnel')); setContacts(personnel); } else { getContactsDatas(); } }, [visible]); var getContactsDatas = function () { return (0, tslib_1.__awaiter)(void 0, void 0, void 0, function () { var res, personnel_1, map_1, keys, value_1; return (0, tslib_1.__generator)(this, function (_a) { switch (_a.label) { case 0: return [4 /*yield*/, env.fetcher(attachmentApi.addrBookApi)]; case 1: res = _a.sent(); if (res.status === 0) { personnel_1 = res.data; sessionStorage.setItem('personnel', JSON.stringify(personnel_1)); setContacts(personnel_1); if (sessionStorage.getItem('contacts')) { map_1 = new Map(); keys = personnel_1.flatMap(function (data) { return data.nodeType == 0 ? [data.id] : []; }); keys.forEach(function (key) { return map_1.set(key, personnel_1.flatMap(function (data) { return data.parId == key ? [{ id: data.id, isLeaf: data.nodeType == 1 }] : []; })); }); value_1 = JSON.stringify(Array.from(map_1.entries())); sessionStorage.setItem('contacts', value_1); } } return [2 /*return*/]; } }); }); }; var onChange = function (e) { setRadioValue(e.target.value); }; var checkOnChange = function (e) { setCheckFlagValue(e.target.value); }; var onChangeTextArea = function () { return (0, tslib_1.__awaiter)(void 0, void 0, void 0, function () { var values, afterUserIds; return (0, tslib_1.__generator)(this, function (_a) { switch (_a.label) { case 0: return [4 /*yield*/, form.validateFields().catch(function () { })]; case 1: values = _a.sent(); setRadioMultiple(true); afterUserIds = receivers.map(function (item) { return item.id; }).join(); if ((values === null || values === void 0 ? void 0 : values.assignFlag) && receivers.length > 0) { return [2 /*return*/, (0, tslib_1.__assign)((0, tslib_1.__assign)({}, values), { afterUserIds: afterUserIds })]; } else if (!flow && receivers.length > 0) { return [2 /*return*/, (0, tslib_1.__assign)((0, tslib_1.__assign)({}, values), { afterUserIds: afterUserIds })]; } return [2 /*return*/]; } }); }); }; return (react_1.default.createElement(react_1.default.Fragment, null, react_1.default.createElement("div", { className: "endorsement-review " + (Mobile ? 'endorsement-review_Mobile' : '') }, react_1.default.createElement(antd_1.Form, { form: form }, react_1.default.createElement("div", { className: 'signed-by' }, react_1.default.createElement("span", { className: 'item-title' }, flow ? '加签审批人' : '转申', react_1.default.createElement("span", { style: { color: "red" } }, " *")), react_1.default.createElement("div", { className: 'item-select' }, receivers.length > 0 && react_1.default.createElement("div", { className: 'item-select-list-item-content' }, react_1.default.createElement(antd_1.Space, { wrap: true }, receivers === null || receivers === void 0 ? void 0 : receivers.map(function (receiver) { return (react_1.default.createElement(antd_1.Tag, { key: receiver.id, className: 'item-select-tag' }, react_1.default.createElement("span", { className: 'item-select-tag-img' }, react_1.default.createElement(icons_2.Icon, { icon: 'camera', className: "icon" })), react_1.default.createElement("span", { style: { maxWidth: '60px' }, className: 'ellipsis item-select-tag-text' }, receiver.name), react_1.default.createElement("span", { className: 'item-select-tag-btn', style: { transform: 'rotate(45deg)', display: 'inline-block', fontSize: '22px' }, onClick: function () { return setReceivers(function (datas) { return datas.filter(function (data) { return data.id !== receiver.id; }); }); } }, "+"))); }))), !(!flow && (receivers.length == 1)) && react_1.default.createElement("div", { className: 'item-bat', onClick: function () { setVisible(true); } }, react_1.default.createElement(icons_1.PlusOutlined, null))), radioMultiple && receivers.length == 0 && react_1.default.createElement("div", { style: { color: "red" } }, "\u6700\u5C11\u6DFB\u52A01\u4EBA")), flow && react_1.default.createElement("div", { className: 'before-and-after-selection' }, react_1.default.createElement("div", { className: 'signing_method' }, react_1.default.createElement("h4", null, "\u52A0\u7B7E\u65B9\u5F0F ", react_1.default.createElement("span", { style: { color: "red" } }, " *")), react_1.default.createElement(antd_1.Form.Item, { name: 'assignFlag', className: 'countersigner_form', rules: [{ required: true, message: '请选择' }] }, react_1.default.createElement(antd_1.Radio.Group, { onChange: onChange, value: radioValue, className: "" + (Mobile ? 'countersigner_form_btn' : '') }, Mobile ? react_1.default.createElement(react_1.default.Fragment, null, react_1.default.createElement(antd_1.Radio.Button, { className: 'form_btn', value: "1" }, "\u5728\u6211\u4E4B\u524D"), react_1.default.createElement(antd_1.Radio.Button, { className: 'form_btn', value: "0" }, "\u5728\u6211\u4E4B\u540E")) : react_1.default.createElement(react_1.default.Fragment, null, react_1.default.createElement(antd_1.Radio, { value: "1" }, "\u5728\u6211\u4E4B\u524D"), react_1.default.createElement(antd_1.Radio, { value: "0" }, "\u5728\u6211\u4E4B\u540E"))))), radioValue !== undefined && react_1.default.createElement("p", { className: 'signing-prompt' }, radioValue == "1" ? '加签后,流程先经过加签审批人,再由我审批' : '加签后,我的审批结果为同意')), receivers.length >= 2 && react_1.default.createElement("div", { className: 'sign-off-method' }, react_1.default.createElement("h4", null, "\u591A\u4EBA\u7B7E\u6838\u65B9\u5F0F ", react_1.default.createElement("span", { style: { color: "red" } }, " *")), react_1.default.createElement(antd_1.Form.Item, { name: 'checkFlag', className: 'countersigner_form', rules: [{ required: true, message: '请选择签核方式' }] }, react_1.default.createElement(antd_1.Radio.Group, { onChange: checkOnChange, value: checkFlagValue, className: "" + (Mobile ? 'countersigner_form_btn' : '') }, Mobile ? react_1.default.createElement(react_1.default.Fragment, null, react_1.default.createElement(antd_1.Radio.Button, { className: 'form_btn', value: "0" }, "\u6216\u7B7E"), react_1.default.createElement(antd_1.Radio.Button, { className: 'form_btn', value: "1" }, "\u4F1A\u7B7E"), react_1.default.createElement(antd_1.Radio.Button, { className: 'form_btn', value: "2" }, "\u4F9D\u6B21\u5BA1\u6279")) : react_1.default.createElement(react_1.default.Fragment, null, react_1.default.createElement(antd_1.Radio, { value: "0" }, "\u6216\u7B7E"), react_1.default.createElement(antd_1.Radio, { value: "1" }, "\u4F1A\u7B7E"), react_1.default.createElement(antd_1.Radio, { value: "2" }, "\u4F9D\u6B21\u5BA1\u6279"))))), react_1.default.createElement("div", { className: 'endorsement-approval' }, Mobile && react_1.default.createElement("p", null, "\u52A0\u7B7E\u610F\u89C1"), react_1.default.createElement(antd_1.Form.Item, { name: 'comments', className: 'countersigner_form' }, react_1.default.createElement(TextArea_1.default, { bordered: !Mobile, style: { height: 120, resize: 'none' }, placeholder: flow ? "请输入加签备注" : "请输入转申理由 ", value: textArea, onChange: function (e) { setTextArea(e.target.value); } })))), Mobile && react_1.default.createElement("div", { className: 'endorsement_button' }, react_1.default.createElement(antd_1.Button, { type: "primary", block: true, onClick: handleOnClick, className: "Button_Mobile" }, radioValue == undefined ? '确认' : radioValue == '1' ? '确认加签' : '同意并加签'))), (Mobile ? react_1.default.createElement(antd_1.Drawer, { className: 'process_drawer process_drawer_amis', closeIcon: react_1.default.createElement("span", { className: "left-text" }, react_1.default.createElement(icons_2.Icon, { icon: 'left-arrow-light', className: "icon" })), title: tools_1.tools.isComWx ? '' : '选择联系人', onClose: function () { setVisible(false); }, width: "100%", visible: visible, getContainer: env.getModalContainer, mask: false, destroyOnClose: true, style: { transform: 'translateX(0px)' }, extra: react_1.default.createElement("span", { className: "right-text" }) }, contacts && react_1.default.createElement(MbContacts_1.default, { defaultReceiverDatas: receivers, contacts: contacts, isPick: true, onConfirm: function (datas) { setReceivers(datas.map(function (data) { return ({ id: data.id, name: data.name, alias: data.id }); })); setVisible(false); }, onClose: function () { return setVisible(false); }, visible: visible, titleShow: false, quantity: flow ? 200 : 1 })) : (visible && contacts) && react_1.default.createElement(TreeSelectModal_1.default, { visible: visible, nodeMap: nodeMap.current, contacts: contacts, excludeKeys: contacts.flatMap(function (data) { return data.nodeType == 0 ? [data.id] : []; }), defaultCheckedKeys: receivers.map(function (receiver) { return receiver.id; }), env: env, onConfirm: function (datas) { setReceivers(function (receivers) { return (0, tslib_1.__spreadArray)((0, tslib_1.__spreadArray)([], receivers, true), (datas.map(function (data) { return ({ id: data.id, name: data.name, alias: data.id }); })), true); }); setVisible(false); }, onCancel: function () { return setVisible(false); }, quantity: flow ? 200 : 1 })))); }; exports.default = FlowCountersign; //# sourceMappingURL=./renderers/Lion/Mobileprocess/components/FlowCountersign/index.js.map