Files
2026-07-02 23:58:11 +08:00

242 lines
7.4 KiB
JavaScript
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
(function(f) {
var nameSpace = 'field_5209586381190735608';
if (!window[nameSpace]) {
var Builder = f();
window[nameSpace] = {
instance: {}
};
window[nameSpace].init = function(options) {
window[nameSpace].instance[options.privateId] = new Builder(options);
};
}
})(function() {
/**
* 构造函数
* @param options
* @constructor
*/
function App(options) {
var self = this;
//初始化参数
self.initParams(options);
//初始化dom
self.initDom();
//事件
self.events();
}
App.prototype = {
initParams: function(options) {
var self = this;
self.adaptation = options.adaptation;
self.adaptation.formMessage = options.formMessage;
self.privateId = options.privateId;
self.messageObj = options.getData;
self.preUrl = options.url_prefix;
},
initDom: function() {
var self = this;
dynamicLoading.css(self.preUrl + 'css/formQueryBtn.css');
self.appendChildDom();
},
events: function() {
var self = this;
// 监听是否数据刷新
$("." + self.privateId).css("background-color", "#008BFF");
$("." + self.privateId).css("color", "#FFFFFF");
$("." + self.privateId).css("border-radius", "10px");
$("." + self.privateId).mouseover(function(e) {
var $this = $(this); // 当前触发事件的标签对象
}).mouseout(function(e) {
$("." + self.privateId).css("background-color", "#008BFF");
}).mousemove(function(e) {
$("." + self.privateId).css("background-color", "#005297");
});
},
doBiz: function(privateId, messageObj, adaptation) {
var self = this;
messageObj = adaptation.childrenGetData(privateId);
var targetObj = messageObj.formdata.formmains[adaptation.formMessage.tableName];
// 先获取字段显示名称映射,再执行业务逻辑
$.ajax({
type: 'get',
async: true,
url: encodeURI('/seeyon/leaseBillController.do?action=getFieldDisplayMap&datetime=' + Math.random()),
dataType: 'json',
success: function(mappingRes) {
if (!mappingRes.success) {
$.alert(mappingRes.s || "获取字段映射失败");
return;
}
var fieldMap = JSON.parse(mappingRes.data);
self.doGenerateBill(targetObj, fieldMap, adaptation, privateId);
},
error: function() {
$.alert("获取字段映射请求失败");
}
});
},
doGenerateBill: function(targetObj, fieldMap, adaptation, privateId) {
// 校验字段映射配置完整性
var requiredKeys = ["计费方式", "缴费方式", "计租日期", "合同截止日期", "账单编号"];
for (var i = 0; i < requiredKeys.length; i++) {
if (!fieldMap[requiredKeys[i]]) {
$.alert("字段映射配置缺少必要key" + requiredKeys[i] + ",请联系管理员检查插件配置");
return;
}
}
var jifeifs, jiaofeifs, njiaofeifs, mjzj, gdzj, startDate, endDate, mj, bdid, bdidFieldName;
if (targetObj) {
for (var key in targetObj) {
if (targetObj.hasOwnProperty(key) && !/^auxiliary/.test(key)) {
var display = targetObj[key].display;
if (display === fieldMap["计费方式"]) {
jifeifs = targetObj[key].showValue;
} else if (display === fieldMap["缴费方式"]) {
jiaofeifs = targetObj[key].showValue;
} else if (display === fieldMap["年缴费方案选项"]) {
njiaofeifs = targetObj[key].showValue;
} else if (display === fieldMap["租赁单价"]) {
mjzj = targetObj[key].showValue;
} else if (display === fieldMap["固定租金标准"]) {
gdzj = targetObj[key].showValue;
} else if (display === fieldMap["计租日期"]) {
startDate = targetObj[key].showValue;
} else if (display === fieldMap["合同截止日期"]) {
endDate = targetObj[key].showValue;
} else if (display === fieldMap["租赁面积"]) {
mj = targetObj[key].showValue;
} else if (display === fieldMap["账单编号"]) {
bdidFieldName = key;
bdid = targetObj[key].showValue;
}
}
}
}
// 校验表单必填字段是否已匹配
if (isEmpty(jifeifs)) {
$.alert("未找到计费方式字段或值为空,请检查表单");
return;
}
if (isEmpty(jiaofeifs)) {
$.alert("未找到缴费方式字段或值为空,请检查表单");
return;
}
// 判断合同开始日期是否在合同结束日期之前
if (!isEmpty(startDate) || !isEmpty(endDate)) {
if (Date.parse(startDate) > Date.parse(endDate)) {
$.alert("请正确填写合同日期");
return;
}
} else {
$.alert("请填写合同日期");
return;
}
// 当缴费方式为年缴费时年缴费类型必填(前缀匹配:年、年缴、年付等)
if (jiaofeifs && jiaofeifs.indexOf('年') === 0) {
if (isEmpty(njiaofeifs)) {
$.alert("请选择年缴费方式选项");
return;
}
}
$.ajax({
type: 'post',
async: true,
url: encodeURI('/seeyon/leaseBillController.do?datetime=' + Math.random()),
data: {
"jifeifs": jifeifs,
"jiaofeifs": jiaofeifs,
"njiaofeifs": njiaofeifs,
"startDate": startDate,
"endDate": endDate,
"mj": mj,
"mjzj": mjzj,
"gdzj": gdzj,
"bdid": bdid
},
dataType: 'json',
contentType: 'application/json; charset=UTF-8',
success: function(res) {
if (res.success) {
if (bdid == "" || bdid == "0") {
var data = {
fieldId: bdidFieldName,
fieldData: {
value: res.num + '',
display: res.num + '',
auth: ''
}
};
csdk.core.setFieldData(data);
}
} else {
$.alert(res.s);
}
}
});
},
appendChildDom: function() {
var self = this;
var domStructure = '<section class="customButton_box_content">' +
'<div class="customButton_class_box ' + self.privateId + '" title="' + self.messageObj.display
.escapeHTML() + '">' + self.messageObj.display.escapeHTML() + '</div>' +
'</section>';
document.querySelector('#' + self.privateId).innerHTML = domStructure;
var jumpFun = function() {
self.doBiz(self.privateId, self.messageObj, self.adaptation);
}
var content = self.messageObj.formdata.content
document.querySelector('.' + self.privateId).removeEventListener('click', jumpFun);
document.querySelector('.' + self.privateId).addEventListener('click', jumpFun);
//渲染隐藏权限
if (self.messageObj.auth === 'hide') {
document.querySelector('#' + self.privateId).innerHTML =
'<div class="cap4-text__browse" style="line-height: 1.8; color: rgb(0, 0, 0) !important;">***</div>';
}
},
};
function test() {
console.log("明细行生成成功");
}
function isEmpty(text) {
return !text || text.trim() === '';
}
var dynamicLoading = {
css: function(path) {
if (!path || path.length === 0) {
throw new Error('argument "path" is required !');
}
var head = document.getElementsByTagName('head')[0];
var link = document.createElement('link');
link.href = path;
link.rel = 'stylesheet';
link.type = 'text/css';
head.appendChild(link);
},
js: function(path) {
if (!path || path.length === 0) {
throw new Error('argument "path" is required !');
}
var head = document.getElementsByTagName('head')[0];
var script = document.createElement('script');
script.src = path;
script.type = 'text/javascript';
head.appendChild(script);
}
}
return App;
});