242 lines
7.4 KiB
JavaScript
242 lines
7.4 KiB
JavaScript
(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;
|
||
}); |