shr.defineClass("shr.ats.Econtarct", shr.framework.List, { protocolData: {}, signerCount: 1, contractName: "", selectedRowsData: {}, initalizeDOM: function () { shr.ats.Econtarct.superClass.initalizeDOM.call(this); this.changeEntrys(); }, sendSignAction: function () { var _this = this; var l = $("#grid").jqGrid("getSelectedRowsData"); if (l.length !== 1) { shr.showWarning({ 'message': "请选择一条元数据!!注意:只能选择一条数据!" }); return } var id = l[0]["person.id"]; var number = l[0]["eSignMapping.number"]; _this.contractName = l[0]["eSignMapping.name"] if (number) { shr.callHandler({ action: "getTableData", param: { "number": number, "id": id }, type: "POST", success: function (res) { _this.protocolData = _this.sortFieldsBySeq(res.data); _this.renderAllTablesByColumns(); var eSignTemplateId; for (var key in _this.protocolData) { _this.protocolData[key]; if (_this.protocolData[key]) { eSignTemplateId = _this.protocolData[key].eSignTemplateNum break; } } _this.resetSigners(eSignTemplateId); $('#popup-overlay').css('display', 'flex'); } }); } else { shr.showWarning({ 'message': "未获取到e签宝映射!!" }); return } }, changeEntrys: function () { var _this = this; // 绑定签署方类型切换事件(使用事件委托) $(document).on('change', '.type-select', function () { _this.changeSignerType(this); }); // 绑定签署顺序验证事件(使用事件委托) $(document).on('input', '.order-input', function () { _this.validateOrder(this); }); // 弹窗控制 $('#open-popup').click(function () { $('#popup-overlay').css('display', 'flex'); }); $('#close-popup').click(function () { $('#popup-overlay').hide(); }); // $('#popup-overlay').click(function (e) { // if (e.target === this) { // $(this).hide(); // } // }); let lastCheckedRadio = null; $(document).on('click', '[name="signer-radio-orgname"]', function (a, e) { const $this = $(this); // 判断当前点击的元素是否是上一次选中的元素 if ($this[0] === lastCheckedRadio) { // 取消选中 $this.prop('checked', false); lastCheckedRadio = null; // 清空记录 } else { // 原生已自动选中当前元素,只需更新记录(同组其他项已被原生取消) lastCheckedRadio = $this[0]; } if ($('[name="signer-radio-orgname"').size() > 1) { $('[name="signer-radio-orgname"').prop('checked', false) lastCheckedRadio = null; shr.showWarning({ 'message': "多个公司签署不允许使用电子签" }); } }); $('#addSigner').click(function () { _this.signerCount++; // 创建新签署方卡片 var newSigner = '
' + '
' + '
' + '' + '签署方' + _this.signerCount + '' + '签署' + '' + '
' + '
' + '删除' + '
' + '
' + '
' + '
' + '' + '' + '' + '
' + '
' + '' + '
' + '
' + '
'; // 添加到容器 $('#signersContainer').append(newSigner); // 初始化F7选择器 _this.initPersonF7(_this.signerCount); $('#signer-' + _this.signerCount + '-type').val('copy').trigger('change'); }); // 删除签署方 $(document).on('click', '.delete-signer', function () { var card = $(this).closest('.signer-card'); card.addClass('fade-out'); setTimeout(function () { card.remove(); // 更新序号 _this.updateSignerNumbers(); }, 300); }); $('#getData').click(function () { var data = _this.getSignerData(); console.log(data); }); // 确认按钮事件 $('#global-confirm').click(function () { $.block.show({ text: '正在发送合同,请稍等...' }); var data = _this.collectAllTableData(); var data1 = _this.getSignerData(); var signFlowTitle = $("#popup_title").attr("value"); var sourceId = $("#grid").jqGrid("getSelectedRowsData")[0] ? $("#grid").jqGrid("getSelectedRowsData")[0].id : ''; var personId = $("#grid").jqGrid("getSelectedRowsData")[0]['person.id']; var d = {}; d.signInfo = data1; d.templateInfo = data; d.signFlowTitle = signFlowTitle; d.sourceId = "通用电子签署申请单" + "_" + sourceId; d.personId = personId console.log(d); var param = {} param.data = d; //param.mack="preview"; // 调用服务获取字段数据 window.setTimeout(function () { shr.callService({ serviceName: 'create_by_fileOSF', param: param, success: function (data) { console.log("========调用合同返回参数=========") console.log(data) if (data.code === 0) { $('#popup-overlay').hide(); shr.showInfo({ 'message': "发送成功!!!" }); } else { shr.showError({ 'message': data.message }); } $.block.hide(); }, error: function (e) { shr.showError({ 'message': e }); $.block.hide(); } }); }, 300) }); }, /** * 处理字段排序:按seq升序排列(从小到大) * @param {Object} data - 原始文档数据 * @returns {Object} 排序后的文档数据 */ sortFieldsBySeq: function (data) { const sortedData = {}; // 遍历每个文档 Object.entries(data).forEach(([docId, docInfo]) => { // 深拷贝文档信息,避免修改原对象 const newDocInfo = JSON.parse(JSON.stringify(docInfo)); // 提取fields的键值对数组,并按seq升序排序 const fieldsArr = Object.entries(newDocInfo.fields); const sortedFieldsArr = fieldsArr.sort((a, b) => { // a[1] 和 b[1] 是字段对象,取seq属性比较 return a[1].seq - b[1].seq; // 升序(从小到大);降序则改为 b[1].seq - a[1].seq }); // 将排序后的数组转回对象(ES6+ 保留顺序) newDocInfo.fields = Object.fromEntries(sortedFieldsArr); // 存入排序后的数据对象 sortedData[docId] = newDocInfo; }); return sortedData; }, renderAllTablesByColumns: function () { var _this = this; if (_this.contractName !== "") { $("#popup_title").attr("value", _this.contractName); } var wrapper = $('#tables-wrapper'); wrapper.empty(); $.each(_this.protocolData, function (protocolKey, protocolInfo) { var tableContainer = $('
').addClass('table-container'); // 表格标题和预览按钮 var tableTitle = $('
').addClass('table-title'); tableTitle.append($('').text(protocolInfo.name || '未命名模板')); var previewBtn = $('