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 = '
';
// 添加到容器
$('#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 = $('