fastlion-amis
Version:
一种MIS页面生成工具
162 lines (161 loc) • 13.9 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 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