UNPKG

igi_orion_cignacmb

Version:

Censors words out of text

399 lines (395 loc) 19 kB
/* * @Author: weicong.ling * @Date: 2020-04-23 11:53:55 * @Last Modified by: weicong.ling * @Last Modified time: 2020-05-11 19:05:13 */ /** * * @param {*} window * @param {*} document * @param {*} $ */ var fn = function (window, document, $) { 'use strict'; var defaults = { pluginName: 'date', value: '', name: '', linkage: false,//是否和其他数据联动 oneDay: 86400000, //一天毫秒数 startDate: '1900-01-01', endDate: '2090-01-01' }; /** * * @param {元素节点} element * @param {初始入参} options */ function Field(element, options) { var that = this; that.element = element; that.$element = $(element); that.$fns = options; that.oneDay = defaults.oneDay; that._data = { id: options.field.id ? options.field.id : (that.$element.data().id ? that.$element.data().id : defaults.pluginName + parseInt(Math.random() * 1000000)), name: options.field.name ? options.field.name : (that.$element.data().name ? that.$element.data().name : defaults.name + parseInt(Math.random() * 1000000)), linkage: options.field.linkage ? options.field.linkage : defaults.linkage, }; options.field.startDate = options.field.startDate ? options.field.startDate : defaults.startDate; options.field.endDate = options.field.endDate ? options.field.endDate : defaults.endDate; that.settings = $.extend({}, defaults, that.$element.data(), options, that._data); that.setDate(that.settings); that.init(); }; Field.prototype = { init: function () { var that = this; if (!that.thisShow(that.settings)) { return; } that.$element['0'].value = that.settings.field.value; if (window.mobile) { $('.' + that.settings.id).each(function () { if (!$(this).attr("id")) { $(this).attr('id', parseInt(Math.random() * 1000000)); } var id = $(this).attr('id'); // var startDate = $(this).attr("startDate") ? $(this).attr("startDate") : '1900-01-01'; var startDate = that.settings.field.startDate ? that.settings.field.startDate : ($(this).attr("startDate") ? $(this).attr("startDate") : '1900-01-01'); var endDate = that.settings.field.endDate ? that.settings.field.endDate : ($(this).attr("endDate") ? $(this).attr("endDate") : '1900-01-01'); var startDateYear = startDate.split("-")[0]; var startDateMonth = startDate.split("-")[1]; var startDateDay = startDate.split("-")[2]; var endDateYear = endDate.split("-")[0]; var endDateMonth = endDate.split("-")[1]; var endDateDay = endDate.split("-")[2]; new Mdate(id, { beginYear: startDateYear, defaultDate: that.settings.field.value.toString(), beginMonth: parseInt(startDateMonth), beginDay: parseInt(startDateDay), endYear: endDateYear, endMonth: parseInt(endDateMonth), endDay: parseInt(endDateDay), format: "-", onSelected: function (data) { that.settings.field.value = data; try { that.$fns.getValue(that.settings.field.value, that.settings.linkage); } catch (error) { console.error('***' + that.settings.pluginName + '未定义 $fns ! 或未给定回调数据***', error) } that.validator(that.settings); } }) }); } else { $('.' + that.settings.id).each(function () { if (!$(this).attr('id')) { $(this).attr('id', parseInt(Math.random() * 1000000)); } var start = that.settings.field.startDate ? that.settings.field.startDate : ($(this).attr("startDate") ? $(this).attr("startDate") : '1900-01-01'); var end = that.settings.field.endDate ? that.settings.field.endDate : ($(this).attr("startDate") ? $(this).attr("startDate") : '1900-01-01'); console.log('start', start, end) var $this = $(this); var id = $this.attr('id'); var c1 = new MyCalendar({ skin: 'calendar-ui', //皮肤 autoClose: true, //自动关闭 el: document.getElementById(id), //触发的元素 readOnly: true, //el只读 // parent: $this, // autoSetPosition: true, //自动设置位置,一般与parent一起用 // left: $this.offset().left, //距离el left的位置,位置px // top: $this.offset().top + 36, //距离el top的位置,位置px showAllDate: false, //显示所有日期,包括上个月、下个月 defaultValue: that.settings.field.value.toString(), //默认值 maxDate: end, //日期范围控制-最大日期 minDate: start, //日期范围控制-最小日期 callback: function (data) { that.settings.field.value = data; try { that.$fns.getValue(that.settings.field.value, that.settings.linkage); } catch (error) { console.error('***' + that.settings.pluginName + '未定义 $fns ! 或未给定回调数据***', error) } that.validator(that.settings); } }); }) } that.$fns.getValue(that.settings.field.value, false); that.fix(that.settings.id); that.validator(that.settings); }, setDate: function (settings) { var that = this; if (settings.fieldName == 'birthday') { settings.field.relationshipConfig = that.setRelationshipConfig(settings); var result = that.fixStarEndDateByRelationship(settings); if (result) { that.settings.field.startDate = result.start; that.settings.field.endDate = result.end; } } else if (settings.fieldName == 'idExpDate') { var result = that.fixIdTypeExpDate(settings); settings.field.value = result.value; settings.field.startDate = result.startDate; } else if (settings.fieldName == 'creditCardExpDate') { that.settings.field.startDate = that.generateTimeReqestNumber(); } }, addDate: function (date, days) { var that = this; if (days == undefined || days == '') { days = 1; } var date = new Date(date); date.setDate(date.getDate() + days); var month = date.getMonth() + 1; var day = date.getDate(); return date.getFullYear() + '-' + that.getFormatDate(month) + '-' + that.getFormatDate(day); }, fixIdTypeExpDate: function (settings) { var that = this; var today = that.addDate(new Date(), 1); var todayInMill = new Date(today.replace(/-/g, '\/')).getTime(); var effectiveDateInMill = new Date(settings.item.birthday.effectiveDate.replace(/-/g, '\/')).getTime() var startDate = settings.field.startDate; var endDate = settings.field.endDate; var value = settings.field.value; if (todayInMill > effectiveDateInMill) { startDate = that.addDate(new Date(), 1); } else { startDate = settings.item.birthday.effectiveDate; } if (settings.field.value) { var startDateMill = new Date(startDate.replace(/-/g, "\/")).getTime(); var endDateMill = new Date(endDate.replace(/-/g, "\/")).getTime(); var valueDateMill = new Date(value.replace(/-/g, "\/")).getTime(); if (valueDateMill >= startDateMill && valueDateMill <= endDateMill) { } else { //值不在可选范围内 var resetValue = new Date(startDateMill); value = resetValue.getFullYear() + "-" + that.pad2(resetValue.getMonth() + 1) + "-" + that.pad2(resetValue.getDate()); } } return { value: value, startDate: startDate, } }, pad2: function (n) { return n < 10 ? '0' + n : n; }, generateTimeReqestNumber: function () { var that = this; var date = new Date(); date = date.getTime() + that.oneDay; date = new Date(date); return date.getFullYear().toString() + '-' + that.pad2(date.getMonth() + 1) + '-' + that.pad2(date.getDate()) }, setRelationshipConfig: function (result) { var relationshipAgeRangeArrays = result.field.ageRangeConfigs; var resultJson = {}; if (relationshipAgeRangeArrays) { for (var i = 0; i < relationshipAgeRangeArrays.length; i++) { var relationshipItem = relationshipAgeRangeArrays[i]; resultJson[relationshipItem.relationship] = { start: { type: relationshipItem.endFlag, value: relationshipItem.endAge }, end: { type: relationshipItem.startFlag, value: relationshipItem.startAge }, }; } } return resultJson }, fixStarEndDateByRelationship: function (settings) { var that = this; var effectiveDate = settings.field.effectiveDate, relationship = settings.item.relationToApplicant.value; if (relationship != '-1' && relationship) { var configForUser = settings.field.relationshipConfig[relationship]; if (!effectiveDate) { effectiveDate = that.generateTimeReqestNumber() } var result = that.calDate(effectiveDate, configForUser) return result; } else { return false; } }, getFormatDate: function (arg) {// 日期月份/天的显示,如果是1位数,则在前面加上'0' if (arg == undefined || arg == '') { return ''; } var re = arg + ''; if (re.length < 2) { re = '0' + re; } return re; }, calDate: function (effectiveDate, config) { var that = this; var result = { start: "", end: "" }; var oneDay = that.settings.oneDay; //一天的毫秒数 var effectiveDateMS = new Date(effectiveDate).getTime(); //计算end if (config.end.type == 'D') { var time = effectiveDateMS - (oneDay * parseInt(config.end.value)); var yearToCompare = parseInt(new Date(time).getFullYear()) var monthToCompare = parseInt(new Date(time).getMonth() + 1) var dateToCompare = parseInt(new Date(time).getDate()) result.end = yearToCompare + "-" + that.getFormatDate(monthToCompare) + '-' + that.getFormatDate(dateToCompare + 0); } else if (config.end.type == 'Y') { var yearToCompare = parseInt(new Date(effectiveDate).getFullYear()) var monthToCompare = parseInt(new Date(effectiveDate).getMonth() + 1) var dateToCompare = parseInt(new Date(effectiveDate).getDate()) result.end = yearToCompare - parseInt(config.end.value) + "-" + that.getFormatDate(monthToCompare) + '-' + that.getFormatDate(dateToCompare + 0); } //计算start if (config.start.type == 'D') { var time = effectiveDateMS - (oneDay * parseInt(config.start.value)); var yearToCompare = parseInt(new Date(time).getFullYear()) var monthToCompare = parseInt(new Date(time).getMonth() + 1) var dateToCompare = parseInt(new Date(time).getDate()) result.start = yearToCompare + "-" + that.getFormatDate(monthToCompare) + '-' + that.getFormatDate(dateToCompare + 0); } else if (config.start.type == 'Y') { var coreectDate = new Date(effectiveDateMS + oneDay) // + 1天 var yearToCompare = parseInt(coreectDate.getFullYear()) var monthToCompare = parseInt(coreectDate.getMonth() + 1) var dateToCompare = parseInt(coreectDate.getDate()) result.start = yearToCompare - (parseInt(config.start.value) + 1) + "-" + that.getFormatDate(monthToCompare) + '-' + that.getFormatDate(dateToCompare); } var end_time = new Date(result.end).getTime() var now_time = new Date() if (end_time > now_time.getTime()) { result.end = now_time.getFullYear() + '-' + that.getFormatDate(now_time.getMonth() + 1) + '-' + that.getFormatDate(now_time.getDate()) } return result }, thisShow: function (settings) { var bool = true; if (settings.fieldName == 'creditCardExpDate') { if (settings.item.bankCardType.value == '3') { settings.item.creditCardExpDate.visible = false; this.$element[0].hidden = false; bool = true; } else { settings.item.creditCardExpDate.visible = true; settings.item.creditCardExpDate.value = ''; settings.item.creditCardExpDate.error = null; this.$element[0].hidden = true; bool = false; } } return bool; }, /** * * @param {id元素} id */ fix: function (id) { var that = this; $("#" + id).focus(function () { }).blur(function () { }); that.$element.bind("input blur", function () {//失去焦点触发 // console.log('blur-失去焦点触发', that.$element['0'].value); }); that.$element.bind("input change", function () {//数据改变及数据改变之后失去焦点触发 // console.log('change-数据改变及数据改变之后失去焦点触发', that.$element['0'].value); }); that.$element.bind("input propertychange", function () {//数据改变触发 // console.log('propertychange-数据改变触发', that.$element['0'].value); }); }, /** * * @param {验证数据} result */ validator: function (result) { var that = this; var errors = that.validate(result); that.$element['0'].errors = errors; try { that.$fns.errors(errors); } catch (error) { console.error('***' + that.settings.pluginName + '未定义 $fns ! 或未给定回调数据***', error) } }, /** * * @param {验证数据} result */ validate: function (result) { //用于验证,如有错误,返回数组,便于前端提示 var that = this; var errors = []; if(!result.field.visible){ return null; } var validateName = ['validateNull', 'otherValidate']; for (var i = 0; i < validateName.length; i++) { var key = validateName[i]; if (typeof (that[key]) == "function" && key != "validate") { var runningFunc = that[key](result); if (!runningFunc.isCorrect) { errors.push(runningFunc); break; } } } return errors.length > 0 ? errors : null; }, /** * * @param {空值数据} result */ validateNull: function (result) { //用于验证,如有错误,返回数组,便于前端提示 var error = { isCorrect: true, type: "tooltip", msg: "请选择" + result.name, code: "", id: result.id }; var value = result.field.value; if ((value == '-1' || value == '' || value == null || value == undefined) && (value != '0')) {//不为空 error.isCorrect = false; } return error; }, otherValidate: function (result) { var error = { isCorrect: true, type: "tooltip", msg: "请选择" + result.name, code: "", id: result.id }; if (!result.field.type) { return error; } for (var i = 0; i < result.field.type.length; i++) { var other = result.field.type[i] ? require('./fieldValidator/' + result.field.type[i]) : false; if (other) { return other(result); } } return error; } }; $.fn[defaults.pluginName] = function (options) { var args = arguments; var that = this; return that.each(function () { if (!$.data(that, defaults.pluginName)) { $.data(that, defaults.pluginName, new Field(that, options)); } }); }; }; module.exports = fn;