UNPKG

igi_orion_cignacmb

Version:

Censors words out of text

302 lines (300 loc) 13.7 kB
/* * @Author: weicong.ling * @Date: 2020-04-23 11:53:55 * @Last Modified by: weicong.ling * @Last Modified time: 2020-05-12 10:20:11 */ var centralModel = require('./centralModel'); var fn = function (window, document, $) { 'use strict'; centralModel.testMobileOrPc($); var defaults = { pluginName: 'career', value: '', name: '', validators: [], optionals: [{ key: "-1", value: '请选择配置对应所选项' }], itemKey: 'key', itemValue: 'value', linkage:false,//是否和其他数据联动 }; function Field(element, options) { var that = this; that.element = element; that.$element = $(element); that.$fns = options; 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, }; that.settings = $.extend({}, defaults, that.$element.data(), options, that._data); that.init(); that.fix(); }; Field.prototype = { init: function () { var that = this; var settings = that.settings; var html; if (window.mobile) { html = '<input placeholder="请选择地址" type="text"readonly id="' + settings.id + '_carrer">' } else { html = '<select id="' + settings.id + 'industry"></select><select id="' + settings.id + 'industryCategory"></select><select id="' + settings.id + 'occupationCode"></select>' } $('#' + settings.id).html(html) that.setHtml(settings); that.$fns.getValue(settings.field.value,false); that.$element['0'].value = settings.field.value that.validator(settings); }, setHtml: function (settings) { var that = this; if (window.mobile) { that.setMobileSelect(settings); } else { that.setPcSelect(settings); } that.validator(settings); }, getPositionIndexArr: function (settings) { var indexArr = [] for (var i = 0; i < settings.field.careersForNew.length; i++) { if (settings.field.careersForNew[i].id == settings.field.value.industry) { indexArr[0] = i; for (var j = 0; j < settings.field.careersForNew[i].childs.length; j++) { if (settings.field.careersForNew[i].childs[j].id == settings.field.value.industryCategory) { indexArr[1] = j; for (var k = 0; k < settings.field.careersForNew[i].childs[j].childs.length; k++) { if (settings.field.careersForNew[i].childs[j].childs[k].id == settings.field.value.occupationCode) { indexArr[2] = k; continue; } } continue; } } continue; } } if(indexArr.length < 3){ indexArr = [0,0,0]; } return indexArr; }, setMobileSelect: function (settings) { var that = this; new MobileSelect({ trigger: '#' + settings.id + '_carrer', title: '职业选择', wheels: [ { data: settings.field.careersForNew } ], keyMap: { id: 'id', value: 'value', childs: 'childs' }, position: that.getPositionIndexArr(settings), transitionEnd: function (indexArr, data) { }, callback: function (indexArr, data) { console.log('indexArr, data', indexArr, data) settings.field.indexArr = indexArr; settings.field.value.industry = data[0].key; $('#' + settings.id + '_carrer').val(data[0].value); if (data[1]) { settings.field.value.industryCategory = data[1].key; $('#' + settings.id + '_carrer').val(data[0].value + '-' + data[1].value); } if (data[2]) { settings.field.value.occupationCode = data[2].key; $('#' + settings.id + '_carrer').val(data[0].value + '-' + data[1].value + '-' + data[2].value); } settings.field.value.industryContent = that.setValueForKey(settings, 'industrys', 'industry'); settings.field.value.industryCategoryContent = that.setValueForKey(settings, 'industryCategorys', 'industryCategory'); settings.field.value.occupationContent = that.setValueForKey(settings, 'occupationCodes', 'occupationCode'); that.$fns.getValue(settings.field.value,settings.linkage); } }); var contact = settings.field.value.industryContent + '-' + settings.field.value.industryCategoryContent + '-' + settings.field.value.occupationContent; $('#' + settings.id + '_carrer').val(contact) }, setPcSelect: function (settings) { var that = this; var industryCategorys = that.getIndustryTypeByIndustryName(settings); var occupationCodes = that.getCareerNameByIndustryType(settings); var isExist = false; for (var i = 0; i < settings.field.industrys.length; i++) { var item = settings.field.industrys[i]; if (item.key == settings.field.value.industry) { isExist = true } } if (!settings.field.value.industry || !isExist) { settings.field.value.industry = ''; settings.field.value.industryCategory = ''; industryCategorys = []; settings.field.value.occupationCode = ''; occupationCodes = []; } var cityValue = false; for (var i = 0; i < industryCategorys.length; i++) { var item = industryCategorys[i]; if (item.key == settings.field.value.industryCategory) { cityValue = true; } } if (!cityValue) { settings.field.value.industryCategory = ''; settings.field.value.occupationCode = ''; occupationCodes = []; } var districtValue = false; for (var i = 0; i < occupationCodes.length; i++) { var item = occupationCodes[i]; if (item.key == settings.field.value.occupationCode) { districtValue = true; } } if (!districtValue) { settings.field.value.occupationCode = ''; } centralModel.setSelectHtmlForId($, true, settings.id + 'industry', settings.field.industrys, '请选择行业名称', '', settings.field.value.industry, { key: 'key', value: 'value' }); centralModel.setSelectHtmlForId($, true, settings.id + 'industryCategory', industryCategorys, '请选择行业小类', '', settings.field.value.industryCategory, { key: 'key', value: 'value' }); centralModel.setSelectHtmlForId($, true, settings.id + 'occupationCode', occupationCodes, '请选择职业名称', '', settings.field.value.occupationCode, { key: 'key', value: 'value' }); settings.field.value.industryContent = that.setValueForKey(settings, 'industrys', 'industry'); settings.field.value.industryCategoryContent = that.setValueForKey(settings, 'industryCategorys', 'industryCategory'); settings.field.value.occupationContent = that.setValueForKey(settings, 'occupationCodes', 'occupationCode'); that.$fns.getValue(settings.field.value,settings.linkage); }, setValueForKey: function (settings, all, value) { var result = '' for (var i = 0; i < settings.field[all].length; i++) { if (settings.field[all][i].key == settings.field.value[value]) { result = settings.field[all][i].value; } } return result; }, getIndustryTypeByIndustryName: function (settings) { var list = []; for (var i = 0; i < settings.field.industryCategorys.length; i++) { var industryCategory = settings.field.industryCategorys[i]; if (industryCategory.key.substring(0, 2) == settings.field.value.industry) { list.push(industryCategory); } } return list; }, getCareerNameByIndustryType: function (settings) { var list = []; for (var i = 0; i < settings.field.occupationCodes.length; i++) { var careerName = settings.field.occupationCodes[i]; if (careerName.parentKey == settings.field.value.industryCategory) { list.push(careerName); } } return list; }, fix: function () { var that = this; var settings = that.settings; $("#" + settings.id + 'industry').change(function () { settings.field.value.industry = $(this)[0].value; that.setHtml(settings); }); $("#" + settings.id + 'industryCategory').change(function () { settings.field.value.industryCategory = $(this)[0].value; that.setHtml(settings); }); $("#" + settings.id + 'occupationCode').change(function () { settings.field.value.occupationCode = $(this)[0].value; that.setHtml(settings); }); }, 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) } }, 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; }, validateNull: function (result) { var error = { isCorrect: true, type: "tooltip", msg: "请输入" + result.name, code: "", id: result.id }; var value = result.field.value; for (var x in result.field.value) { var value = result.field.value[x] 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;