1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798991001011021031041051061071081091101111121131141151161171181191201211221231241251261271281291301311321331341351361371381391401411421431441451461471481491501511521531541551561571581591601611621631641651661671681691701711721731741751761771781791801811821831841851861871881891901911921931941951961971981992002012022032042052062072082092102112122132142152162172182192202212222232242252262272282292302312322332342352362372382392402412422432442452462472482492502512522532542552562572582592602612622632642652662672682692702712722732742752762772782792802812822832842852862872882892902912922932942952962972982993003013023033043053063073083093103113123133143153163173183193203213223233243253263273283293303313323333343353363373383393403413423433443453463473483493503513523533543553563573583593603613623633643653663673683693703713723733743753763773783793803813823833843853863873883893903913923933943953963973983994004014024034044054064074084094104114124134144154164174184194204214224234244254264274284294304314324334344354364374384394404414424434444454464474484494504514524534544554564574584594604614624634644654664674684694704714724734744754764774784794804814824834844854864874884894904914924934944954964974984995005015025035045055065075085095105115125135145155165175185195205215225235245255265275285295305315325335345355365375385395405415425435445455465475485495505515525535545555565575585595605615625635645655665675685695705715725735745755765775785795805815825835845855865875885895905915925935945955965975985996006016026036046056066076086096106116126136146156166176186196206216226236246256266276286296306316326336346356366376386396406416426436446456466476486496506516526536546556566576586596606616626636646656666676686696706716726736746756766776786796806816826836846856866876886896906916926936946956966976986997007017027037047057067077087097107117127137147157167177187197207217227237247257267277287297307317327337347357367377387397407417427437447457467477487497507517527537547557567577587597607617627637647657667677687697707717727737747757767777787797807817827837847857867877887897907917927937947957967977987998008018028038048058068078088098108118128138148158168178188198208218228238248258268278288298308318328338348358368378388398408418428438448458468478488498508518528538548558568578588598608618628638648658668678688698708718728738748758768778788798808818828838848858868878888898908918928938948958968978988999009019029039049059069079089099109119129139149159169179189199209219229239249259269279289299309319329339349359369379389399409419429439449459469479489499509519529539549559569579589599609619629639649659669679689699709719729739749759769779789799809819829839849859869879889899909919929939949959969979989991000100110021003100410051006100710081009101010111012101310141015101610171018101910201021102210231024102510261027102810291030103110321033103410351036103710381039104010411042104310441045104610471048104910501051105210531054105510561057105810591060106110621063106410651066106710681069107010711072107310741075107610771078107910801081108210831084108510861087108810891090109110921093109410951096109710981099110011011102110311041105110611071108110911101111111211131114111511161117111811191120112111221123112411251126112711281129113011311132113311341135113611371138113911401141114211431144114511461147114811491150115111521153115411551156115711581159116011611162116311641165116611671168116911701171117211731174117511761177117811791180118111821183118411851186118711881189119011911192119311941195119611971198119912001201120212031204120512061207120812091210121112121213121412151216121712181219122012211222122312241225122612271228122912301231123212331234123512361237123812391240124112421243124412451246124712481249125012511252125312541255125612571258125912601261126212631264126512661267126812691270127112721273127412751276127712781279128012811282128312841285128612871288128912901291129212931294129512961297129812991300130113021303130413051306130713081309131013111312131313141315131613171318131913201321132213231324132513261327132813291330133113321333133413351336133713381339134013411342134313441345134613471348134913501351135213531354135513561357135813591360136113621363136413651366136713681369137013711372137313741375137613771378137913801381138213831384138513861387138813891390139113921393139413951396139713981399140014011402140314041405140614071408140914101411141214131414141514161417141814191420142114221423142414251426142714281429143014311432143314341435143614371438143914401441144214431444144514461447144814491450145114521453145414551456145714581459146014611462146314641465146614671468146914701471147214731474147514761477147814791480148114821483148414851486148714881489149014911492149314941495149614971498149915001501150215031504150515061507150815091510151115121513151415151516151715181519152015211522152315241525152615271528152915301531153215331534153515361537153815391540154115421543154415451546154715481549155015511552155315541555155615571558155915601561156215631564156515661567156815691570157115721573157415751576157715781579158015811582158315841585158615871588158915901591159215931594159515961597159815991600160116021603160416051606160716081609161016111612161316141615161616171618161916201621162216231624162516261627162816291630163116321633163416351636163716381639164016411642164316441645164616471648164916501651165216531654165516561657165816591660166116621663166416651666166716681669167016711672167316741675167616771678167916801681168216831684168516861687168816891690169116921693169416951696169716981699170017011702170317041705170617071708170917101711171217131714 |
- import { replaceHtml } from '../utils/util';
- import formula from '../global/formula';
- import { isRealNum, isRealNull } from '../global/validate';
- import { isdatetime, diff } from '../global/datecontroll';
- import { luckysheetrefreshgrid } from '../global/refresh';
- import tooltip from '../global/tooltip';
- import { setcellvalue } from '../global/setdata';
- import { getcellvalue } from '../global/getdata';
- import editor from '../global/editor';
- import { modelHTML } from './constant';
- import { selectionCopyShow } from './select';
- import server from './server';
- import menuButton from './menuButton';
- import sheetmanage from './sheetmanage';
- import { getSheetIndex, getRangetxt } from '../methods/get';
- import locale from '../locale/locale';
- import Store from '../store';
- const dataVerificationCtrl = {
- defaultItem: {
- type: 'dropdown', //类型
- type2: null, //
- value1: '', //
- value2: '', //
- checked: false,
- remote: false, //自动远程获取选项
- prohibitInput: false, //输入数据无效时禁止输入
- hintShow: false, //选中单元格时显示提示语
- hintText: '', //
- },
- curItem: null,
- dataVerification: null,
- selectRange: [],
- selectStatus: false,
- optionLabel: {
- 'number': '数值',
- 'number_integer': '整数',
- 'number_decimal': '小数',
- 'bw': '介于',
- 'nb': '不介于',
- 'eq': '等于',
- 'ne': '不等于',
- 'gt': '大于',
- 'lt': '小于',
- 'gte': '大于等于',
- 'lte': '小于等于',
- 'include': '包括',
- 'exclude': '不包括',
- 'equal': '等于',
- 'bf': '早于',
- 'nbf': '不早于',
- 'af': '晚于',
- 'naf': '不晚于',
- 'card': '身份证号码',
- 'phone': '手机号'
- },
- optionLabel_en: {
- 'number': 'numeric',
- 'number_integer': 'integer',
- 'number_decimal': 'decimal',
- 'bw': 'between',
- 'nb': 'not between',
- 'eq': 'equal to',
- 'ne': 'not equal to',
- 'gt': 'greater',
- 'lt': 'less than',
- 'gte': 'greater or equal to',
- 'lte': 'less than or equal to',
- 'include': 'include',
- 'exclude': 'not include',
- 'equal': 'equal to',
- 'bf': 'earlier than',
- 'nbf': 'not earlier than',
- 'af': 'later than',
- 'naf': 'not later than',
- 'card': 'identification number',
- 'phone': 'phone number'
- },
- createDialog: function(){
- let _this = this;
- const _locale = locale();
- const dvText = _locale.dataVerification;
- const toolbarText = _locale.toolbar;
- const buttonText = _locale.button;
- $("#luckysheet-modal-dialog-mask").show();
- $("#luckysheet-dataVerification-dialog").remove();
- let content = `<div class="box">
- <div class="box-item" style="border-top:1px solid #E1E4E8;">
- <div class="box-item-title">${dvText.cellRange}</div>
- <div id="data-verification-range" class="range">
- <input class="formulaInputFocus" spellcheck="false">
- <i class="fa fa-table" aria-hidden="true" title="${dvText.selectCellRange}"></i>
- </div>
- </div>
- <div class="box-item">
- <div class="box-item-title">${dvText.verificationCondition}</div>
- <select id="data-verification-type-select">
- <option value="dropdown">${dvText.dropdown}</option>
- <option value="checkbox">${dvText.checkbox}</option>
- <option value="number">${dvText.number}</option>
- <option value="number_integer">${dvText.number_integer}</option>
- <option value="number_decimal">${dvText.number_decimal}</option>
- <option value="text_content">${dvText.text_content}</option>
- <option value="text_length">${dvText.text_length}</option>
- <option value="date">${dvText.date}</option>
- <option value="validity">${dvText.validity}</option>
- </select>
- <div class="show-box">
- <div class="show-box-item show-box-item-dropdown">
- <div class="range">
- <input class="formulaInputFocus data-verification-value1" placeholder="${dvText.placeholder1}" spellcheck="false">
- <i class="fa fa-table" aria-hidden="true" title="${dvText.selectCellRange}"></i>
- </div>
- <div class="multi">
- <input type="checkbox" id="data-verification-multi" class="data-verification-multi">
- <label for="data-verification-multi">${dvText.allowMultiSelect}</label>
- </div>
- </div>
- <div class="show-box-item show-box-item-checkbox">
- <div class="check-box">
- <span>${dvText.selected} ——</span>
- <input type="text" class="data-verification-value1" placeholder="${dvText.placeholder2}">
- </div>
- <div class="check-box">
- <span>${dvText.notSelected} ——</span>
- <input type="text" class="data-verification-value2" placeholder="${dvText.placeholder2}">
- </div>
- </div>
- <div class="show-box-item show-box-item-number">
- <select id="data-verification-number-select">
- <option value="bw">${dvText.between}</option>
- <option value="nb">${dvText.notBetween}</option>
- <option value="eq">${dvText.equal}</option>
- <option value="ne">${dvText.notEqualTo}</option>
- <option value="gt">${dvText.moreThanThe}</option>
- <option value="lt">${dvText.lessThan}</option>
- <option value="gte">${dvText.greaterOrEqualTo}</option>
- <option value="lte">${dvText.lessThanOrEqualTo}</option>
- </select>
- <div class="input input1">
- <input type="number" class="data-verification-value1" placeholder="1">
- <span>-</span>
- <input type="number" class="data-verification-value2" placeholder="100">
- </div>
- <div class="input input2">
- <input type="number" class="data-verification-value1" placeholder="${dvText.placeholder3}">
- </div>
- </div>
- <div class="show-box-item show-box-item-text">
- <select id="data-verification-text-select">
- <option value="include">${dvText.include}</option>
- <option value="exclude">${dvText.exclude}</option>
- <option value="equal">${dvText.equal}</option>
- </select>
- <div class="input input2">
- <input type="text" class="data-verification-value1" placeholder="${dvText.placeholder4}"/>
- </div>
- </div>
- <div class="show-box-item show-box-item-textLength">
- <select id="data-verification-textLength-select">
- <option value="bw">${dvText.between}</option>
- <option value="nb">${dvText.notBetween}</option>
- <option value="eq">${dvText.equal}</option>
- <option value="ne">${dvText.notEqualTo}</option>
- <option value="gt">${dvText.moreThanThe}</option>
- <option value="lt">${dvText.lessThan}</option>
- <option value="gte">${dvText.greaterOrEqualTo}</option>
- <option value="lte">${dvText.lessThanOrEqualTo}</option>
- </select>
- <div class="input input1">
- <input type="number" class="data-verification-value1" placeholder="1">
- <span>-</span>
- <input type="number" class="data-verification-value2" placeholder="100">
- </div>
- <div class="input input2">
- <input type="number" class="data-verification-value1" placeholder="${dvText.placeholder3}">
- </div>
- </div>
- <div class="show-box-item show-box-item-date">
- <select id="data-verification-date-select">
- <option value="bw">${dvText.between}</option>
- <option value="nb">${dvText.notBetween}</option>
- <option value="eq">${dvText.equal}</option>
- <option value="ne">${dvText.notEqualTo}</option>
- <option value="bf">${dvText.earlierThan}</option>
- <option value="nbf">${dvText.noEarlierThan}</option>
- <option value="af">${dvText.laterThan}</option>
- <option value="naf">${dvText.noLaterThan}</option>
- </select>
- <div class="input input1">
- <input type="date" class="data-verification-value1" placeholder="2020/9/10">
- <span>-</span>
- <input type="date" class="data-verification-value2" placeholder="2020/9/10">
- </div>
- <div class="input input2">
- <input type="date" class="data-verification-value1" placeholder="2020/9/10">
- </div>
- </div>
- <div class="show-box-item show-box-item-validity">
- <select id="data-verification-validity-select">
- <option value="card">${dvText.identificationNumber}</option>
- <option value="phone">${dvText.phoneNumber}</option>
- </select>
- </div>
- </div>
- </div>
- <div class="box-item">
- <div class="check">
- <input type="checkbox" id="data-verification-remote" class="data-verification-remote">
- <label for="data-verification-remote">${dvText.remote}</label>
- </div>
- <div class="check">
- <input type="checkbox" id="data-verification-prohibitInput">
- <label for="data-verification-prohibitInput">${dvText.prohibitInput}</label>
- </div>
- <div class="check">
- <input type="checkbox" id="data-verification-hint-show">
- <label for="data-verification-hint-show">${dvText.hintShow}</label>
- </div>
- <div class="data-verification-hint-text">
- <input type="text" placeholder="${dvText.placeholder5}">
- </div>
- </div>
- </div>`;
- $("body").first().append(replaceHtml(modelHTML, {
- "id": "luckysheet-dataVerification-dialog",
- "addclass": "luckysheet-dataVerification-dialog",
- "title": toolbarText.dataVerification,
- "content": content,
- "botton": `<button id="luckysheet-dataVerification-dialog-confirm" class="btn btn-primary">${buttonText.confirm}</button>
- <button id="luckysheet-dataVerification-dialog-delete" class="btn btn-default">${dvText.deleteVerification}</button>
- <button class="btn btn-default luckysheet-model-close-btn">${buttonText.cancel}</button>`,
- "style": "z-index:100003"
- }));
- let $t = $("#luckysheet-dataVerification-dialog").find(".luckysheet-modal-dialog-content").css("min-width", 350).end(),
- myh = $t.outerHeight(),
- myw = $t.outerWidth();
- let winw = $(window).width(),
- winh = $(window).height();
- let scrollLeft = $(document).scrollLeft(),
- scrollTop = $(document).scrollTop();
- $("#luckysheet-dataVerification-dialog").css({
- "left": (winw + scrollLeft - myw) / 2,
- "top": (winh + scrollTop - myh) / 3
- }).show();
- _this.dataAllocation();
- },
- init: function(){
- let _this = this;
- const dvText = locale().dataVerification;
- //单元格数据验证 类型是 下拉列表
- $(document).off("click.dropdownBtn").on("click.dropdownBtn", "#luckysheet-dataVerification-dropdown-btn", function(e) {
- _this.dropdownListShow();
- e.stopPropagation();
- });
- $(document).off("click.dropdownListItem").on("click.dropdownListItem", "#luckysheet-dataVerification-dropdown-List .dropdown-List-item", function(e) {
- var $item = $(this);
- let value = e.target.innerText;
- if ($item.hasClass('multi')) {
- $item.toggleClass('checked');
- value = $.map($("#luckysheet-dataVerification-dropdown-List").children().filter('.checked'), function(el) {
- return el.innerText;
- }).join(',');
- } else {
- $("#luckysheet-dataVerification-dropdown-List").hide();
- }
- let last = Store.luckysheet_select_save[Store.luckysheet_select_save.length - 1];
- let rowIndex = last.row_focus;
- let colIndex = last.column_focus;
- $("#luckysheet-rich-text-editor").text(value);
- formula.updatecell(rowIndex, colIndex);
- e.stopPropagation();
- });
- //单元格范围
- $(document).off("click.dvRange").on("click.dvRange", "#data-verification-range .fa-table", function(e) {
- $("#luckysheet-dataVerification-dialog").hide();
- let dataSource = "0";
- let txt = $(this).siblings("input").val().trim();
- _this.rangeDialog(dataSource, txt);
- _this.selectRange = [];
- let range = _this.getRangeByTxt(txt);
- formula.rangetosheet = Store.currentSheetIndex;
- if(range[0].sheetIndex != Store.currentSheetIndex){
- sheetmanage.changeSheetExec(range[0].sheetIndex);
- }
- if(range.length > 0){
- for(let s = 0; s < range.length; s++){
- let r1 = range[s].row[0], r2 = range[s].row[1];
- let c1 = range[s].column[0], c2 = range[s].column[1];
- let row = Store.visibledatarow[r2],
- row_pre = r1 - 1 == -1 ? 0 : Store.visibledatarow[r1 - 1];
- let col = Store.visibledatacolumn[c2],
- col_pre = c1 - 1 == -1 ? 0 : Store.visibledatacolumn[c1 - 1];
- _this.selectRange.push({
- "left": col_pre,
- "width": col - col_pre - 1,
- "top": row_pre,
- "height": row - row_pre - 1,
- "left_move": col_pre,
- "width_move": col - col_pre - 1,
- "top_move": row_pre,
- "height_move": row - row_pre - 1,
- "row": [r1, r2],
- "column": [c1, c2],
- "row_focus": r1,
- "column_focus": c1
- });
- }
- }
-
- selectionCopyShow(_this.selectRange);
- });
- $(document).off("click.dvRange2").on("click.dvRange2", "#luckysheet-dataVerification-dialog .show-box-item-dropdown .range .fa-table", function(e) {
- $("#luckysheet-dataVerification-dialog").hide();
- let dataSource = "1";
- let txt = $(this).siblings("input").val().trim();
- _this.rangeDialog(dataSource, txt);
- _this.selectRange = [];
- let range = _this.getRangeByTxt(txt);
- formula.rangetosheet = Store.currentSheetIndex;
- if(range[0].sheetIndex != Store.currentSheetIndex){
- sheetmanage.changeSheetExec(range[0].sheetIndex);
- }
- if(range.length > 0){
- for(let s = 0; s < range.length; s++){
- let r1 = range[s].row[0], r2 = range[s].row[1];
- let c1 = range[s].column[0], c2 = range[s].column[1];
- let row = Store.visibledatarow[r2],
- row_pre = r1 - 1 == -1 ? 0 : Store.visibledatarow[r1 - 1];
- let col = Store.visibledatacolumn[c2],
- col_pre = c1 - 1 == -1 ? 0 : Store.visibledatacolumn[c1 - 1];
- _this.selectRange.push({
- "left": col_pre,
- "width": col - col_pre - 1,
- "top": row_pre,
- "height": row - row_pre - 1,
- "left_move": col_pre,
- "width_move": col - col_pre - 1,
- "top_move": row_pre,
- "height_move": row - row_pre - 1,
- "row": [r1, r2],
- "column": [c1, c2],
- "row_focus": r1,
- "column_focus": c1
- });
- }
- }
-
- selectionCopyShow(_this.selectRange);
- });
- $(document).off("click.dvRangeConfirm").on("click.dvRangeConfirm", "#luckysheet-dataVerificationRange-dialog-confirm", function(e) {
- let dataSource = $(this).attr("data-source");
- let txt = $(this).parents("#luckysheet-dataVerificationRange-dialog").find("input").val();
- if(_this.getRangeByTxt(txt).length > 1){
- tooltip.info('<i class="fa fa-exclamation-triangle"></i>', '不能对多重选择区域执行此操作,请选择单个区域,然后再试');
- return;
- }
- if(dataSource == '0'){
- $("#luckysheet-dataVerification-dialog #data-verification-range input").val(txt);
- }
- else if(dataSource == '1'){
- $("#luckysheet-dataVerification-dialog .show-box-item-dropdown .range input").val(txt);
- }
-
- $("#luckysheet-dataVerificationRange-dialog").hide();
- $("#luckysheet-modal-dialog-mask").show();
- $("#luckysheet-dataVerification-dialog").show();
- if(formula.rangetosheet != null && formula.rangetosheet != Store.currentSheetIndex){
- sheetmanage.changeSheetExec(formula.rangetosheet);
- formula.rangetosheet = null;
- }
- let range = [];
- selectionCopyShow(range);
- });
- $(document).off("click.dvRangeClose").on("click.dvRangeClose", "#luckysheet-dataVerificationRange-dialog-close", function(e) {
- $("#luckysheet-dataVerificationRange-dialog").hide();
- $("#luckysheet-modal-dialog-mask").show();
- $("#luckysheet-dataVerification-dialog").show();
- if(formula.rangetosheet != null && formula.rangetosheet != Store.currentSheetIndex){
- sheetmanage.changeSheetExec(formula.rangetosheet);
- formula.rangetosheet = null;
- }
- let range = [];
- selectionCopyShow(range);
- });
- $(document).on("click", "#luckysheet-dataVerificationRange-dialog .luckysheet-modal-dialog-title-close", function(e) {
- $("#luckysheet-dataVerificationRange-dialog").hide();
- $("#luckysheet-modal-dialog-mask").show();
- $("#luckysheet-dataVerification-dialog").show();
- if(formula.rangetosheet != null && formula.rangetosheet != Store.currentSheetIndex){
- sheetmanage.changeSheetExec(formula.rangetosheet);
- formula.rangetosheet = null;
- }
- let range = [];
- selectionCopyShow(range);
- })
- //验证条件 下拉框
- $(document).off("change.typeSelect").on("change.typeSelect", "#data-verification-type-select", function(e) {
- $("#luckysheet-dataVerification-dialog .show-box .show-box-item").hide();
- let value = this.value;
- let item = _this.curItem;
- if(value == 'dropdown'){
- $("#luckysheet-dataVerification-dialog .show-box .show-box-item-dropdown").show();
- let value1 = "";
- if(value == item.type){
- value1 = item.value1;
- }
- $("#luckysheet-dataVerification-dialog .show-box-item-dropdown .data-verification-value1").val(value1);
-
- $('#luckysheet-dataVerification-dialog #data-verification-multi').prop('checked', item.type2 ? true : false);
- }
- else if(value == 'checkbox'){
- $("#luckysheet-dataVerification-dialog .show-box .show-box-item-checkbox").show();
- let value1 = "";
- let value2 = "";
- if(value == item.type){
- value1 = item.value1;
- value2 = item.value2;
- }
- $("#luckysheet-dataVerification-dialog .show-box-item-checkbox .data-verification-value1").val(value1);
- $("#luckysheet-dataVerification-dialog .show-box-item-checkbox .data-verification-value2").val(value2);
- }
- else if(value == 'number' || value == 'number_integer' || value == 'number_decimal'){
- $("#luckysheet-dataVerification-dialog .show-box-item-number").show();
- $("#luckysheet-dataVerification-dialog .show-box-item-number .input").hide();
- let type2 = "bw";
- let value1 = "";
- let value2 = "";
- if(item.type == 'number' || item.type == 'number_integer' || item.type == 'number_decimal'){
- type2 = item.type2;
- value1 = item.value1;
- value2 = item.value2;
- }
- $("#luckysheet-dataVerification-dialog #data-verification-number-select").val(type2);
-
- if(type2 == 'bw' || type2 == 'nb'){
- $("#luckysheet-dataVerification-dialog .show-box-item-number .input1").show();
- }
- else{
- $("#luckysheet-dataVerification-dialog .show-box-item-number .input2").show();
- }
- $("#luckysheet-dataVerification-dialog .show-box-item-number .data-verification-value1").val(value1);
- $("#luckysheet-dataVerification-dialog .show-box-item-number .data-verification-value2").val(value2);
- }
- else if(value == 'text_content'){
- $("#luckysheet-dataVerification-dialog .show-box-item-text").show();
- let type2 = "include";
- let value1 = "";
-
- if(value == item.type){
- type2 = item.type2;
- value1 = item.value1;
- }
-
- $("#luckysheet-dataVerification-dialog #data-verification-text-select").val(type2);
- $("#luckysheet-dataVerification-dialog .show-box-item-text .data-verification-value1").val(value1);
- }
- else if(value == 'text_length'){
- $("#luckysheet-dataVerification-dialog .show-box-item-textLength").show();
- $("#luckysheet-dataVerification-dialog .show-box-item-textLength .input").hide();
- let type2 = "bw";
- let value1 = "";
- let value2 = "";
- if(value == item.type){
- type2 = item.type2;
- value1 = item.value1;
- value2 = item.value2;
- }
- $("#luckysheet-dataVerification-dialog #data-verification-textLength-select").val(type2);
-
- if(type2 == 'bw' || type2 == 'nb'){
- $("#luckysheet-dataVerification-dialog .show-box-item-textLength .input1").show();
- }
- else{
- $("#luckysheet-dataVerification-dialog .show-box-item-textLength .input2").show();
- }
- $("#luckysheet-dataVerification-dialog .show-box-item-textLength .data-verification-value1").val(value1);
- $("#luckysheet-dataVerification-dialog .show-box-item-textLength .data-verification-value2").val(value2);
- }
- else if(value == 'date'){
- $("#luckysheet-dataVerification-dialog .show-box-item-date").show();
- $("#luckysheet-dataVerification-dialog .show-box-item-date .input").hide();
- let type2 = "bw";
- let value1 = "";
- let value2 = "";
- if(value == item.type){
- type2 = item.type2;
- value1 = item.value1;
- value2 = item.value2;
- }
- $("#luckysheet-dataVerification-dialog #data-verification-date-select").val(type2);
- if(type2 == 'bw' || type2 == 'nb'){
- $("#luckysheet-dataVerification-dialog .show-box-item-date .input1").show();
- }
- else{
- $("#luckysheet-dataVerification-dialog .show-box-item-date .input2").show();
- }
- $("#luckysheet-dataVerification-dialog .show-box-item-date .data-verification-value1").val(value1);
- $("#luckysheet-dataVerification-dialog .show-box-item-date .data-verification-value2").val(value2);
- }
- else if(value == 'validity'){
- $("#luckysheet-dataVerification-dialog .show-box .show-box-item-validity").show();
- let type2 = "card";
- if(value == item.type){
- type2 = item.type2;
- }
- $("#luckysheet-dataVerification-dialog #data-verification-validity-select").val(type2);
- }
- });
- $(document).off("change.numberSelect").on("change.numberSelect", "#data-verification-number-select", function(e) {
- $("#luckysheet-dataVerification-dialog .show-box-item-number .input").hide();
- let value = this.value;
- if(value == 'bw' || value == 'nb'){
- $("#luckysheet-dataVerification-dialog .show-box-item-number .input1").show();
- }
- else{
- $("#luckysheet-dataVerification-dialog .show-box-item-number .input2").show();
- }
- });
- // 文本长度选择变化
- $(document).off("change.textLengthSelect").on("change.textLengthSelect", "#data-verification-textLength-select", function(e) {
- $("#luckysheet-dataVerification-dialog .show-box-item-textLength .input").hide();
- let value = this.value;
- if(value == 'bw' || value == 'nb'){
- $("#luckysheet-dataVerification-dialog .show-box-item-textLength .input1").show();
- }
- else{
- $("#luckysheet-dataVerification-dialog .show-box-item-textLength .input2").show();
- }
- });
- $(document).off("change.dateSelect").on("change.dateSelect", "#data-verification-date-select", function(e) {
- $("#luckysheet-dataVerification-dialog .show-box-item-date .input").hide();
- let value = this.value;
- if(value == 'bw' || value == 'nb'){
- $("#luckysheet-dataVerification-dialog .show-box-item-date .input1").show();
- }
- else{
- $("#luckysheet-dataVerification-dialog .show-box-item-date .input2").show();
- }
- });
- //选中单元格时显示提示语
- $(document).off("change.hintShow").on("change.hintShow", "#data-verification-hint-show", function(e) {
- if(this.checked){
- $("#luckysheet-dataVerification-dialog .data-verification-hint-text").show();
- }
- else{
- $("#luckysheet-dataVerification-dialog .data-verification-hint-text").hide();
- }
- });
- //确认按钮
- $(document).off("click.dvSaveConfirm").on("click.dvSaveConfirm", "#luckysheet-dataVerification-dialog-confirm", function(e) {
- let rangeTxt = $("#luckysheet-dataVerification-dialog #data-verification-range input").val().trim();
- let range = _this.getRangeByTxt(rangeTxt);
- if(range.length == 0){
- tooltip.info('<i class="fa fa-exclamation-triangle"></i>', dvText.selectCellRange2);
- return;
- }
- let str = range[range.length - 1].row[0],
- edr = range[range.length - 1].row[1],
- stc = range[range.length - 1].column[0],
- edc = range[range.length - 1].column[1];
- let d = editor.deepCopyFlowData(Store.flowdata);
- if(str < 0){
- str = 0;
- }
- if(edr > d.length - 1){
- edr = d.length - 1;
- }
- if(stc < 0){
- stc = 0;
- }
- if(edc > d[0].length - 1){
- edc = d[0].length - 1;
- }
- let type = $("#luckysheet-dataVerification-dialog #data-verification-type-select").val();
- let type2 = null, value1 = "", value2 = "";
- if(type == 'dropdown'){
- value1 = $("#luckysheet-dataVerification-dialog .show-box-item-dropdown .data-verification-value1").val().trim();
-
- if(value1.length == 0){
- tooltip.info('<i class="fa fa-exclamation-triangle"></i>', dvText.tooltipInfo1);
- return;
- }
- type2 = $("#luckysheet-dataVerification-dialog #data-verification-multi").is(':checked');
- }
- else if(type == 'checkbox'){
- value1 = $("#luckysheet-dataVerification-dialog .show-box-item-checkbox .data-verification-value1").val().trim();
- value2 = $("#luckysheet-dataVerification-dialog .show-box-item-checkbox .data-verification-value2").val().trim();
-
- if(value1.length == 0 || value2.length == 0){
- tooltip.info('<i class="fa fa-exclamation-triangle"></i>', dvText.tooltipInfo2);
- return;
- }
- }
- else if(type == 'number' || type == 'number_integer' || type == 'number_decimal'){
- type2 = $("#luckysheet-dataVerification-dialog #data-verification-number-select").val();
- value1 = $("#luckysheet-dataVerification-dialog .show-box-item-number .input:visible .data-verification-value1").val().trim();
-
- if(!isRealNum(value1)){
- tooltip.info('<i class="fa fa-exclamation-triangle"></i>', dvText.tooltipInfo3);
- return;
- }
- if(type2 == 'bw' || type2 == 'nb'){
- value2 = $("#luckysheet-dataVerification-dialog .show-box-item-number .input:visible .data-verification-value2").val().trim();
-
- if(!isRealNum(value2)){
- tooltip.info('<i class="fa fa-exclamation-triangle"></i>', dvText.tooltipInfo3);
- return;
- }
- if(Number(value2) < Number(value1)){
- tooltip.info('<i class="fa fa-exclamation-triangle"></i>', dvText.tooltipInfo4);
- return;
- }
- }
- }
- else if(type == 'text_content'){
- type2 = $("#luckysheet-dataVerification-dialog #data-verification-text-select").val();
- value1 = $("#luckysheet-dataVerification-dialog .show-box-item-text .data-verification-value1").val().trim();
-
- if(value1.length == 0){
- tooltip.info('<i class="fa fa-exclamation-triangle"></i>', dvText.tooltipInfo5);
- return;
- }
- }
- else if(type == 'text_length'){
- type2 = $("#luckysheet-dataVerification-dialog #data-verification-textLength-select").val();
- value1 = $("#luckysheet-dataVerification-dialog .show-box-item-textLength .input:visible .data-verification-value1").val().trim();
-
- if(!isRealNum(value1)){
- tooltip.info('<i class="fa fa-exclamation-triangle"></i>', dvText.tooltipInfo3);
- return;
- }
- if (!Number.isInteger(Number(value1)) || Number(value1) < 0) {
- tooltip.info('<i class="fa fa-exclamation-triangle"></i>', dvText.textlengthInteger);
- return;
- }
- if(type2 == 'bw' || type2 == 'nb'){
- value2 = $("#luckysheet-dataVerification-dialog .show-box-item-textLength .input:visible .data-verification-value2").val().trim();
-
- if(!isRealNum(value2)){
- tooltip.info('<i class="fa fa-exclamation-triangle"></i>', dvText.tooltipInfo3);
- return;
- }
- if (!Number.isInteger(Number(value2)) || Number(value2) < 0) {
- tooltip.info('<i class="fa fa-exclamation-triangle"></i>', dvText.textlengthInteger);
- return;
- }
- if(Number(value2) < Number(value1)){
- tooltip.info('<i class="fa fa-exclamation-triangle"></i>', dvText.tooltipInfo4);
- return;
- }
- }
- }
- else if(type == 'date'){
- type2 = $("#luckysheet-dataVerification-dialog #data-verification-date-select").val();
- value1 = $("#luckysheet-dataVerification-dialog .show-box-item-date .input:visible .data-verification-value1").val().trim();
-
- if(!isdatetime(value1)){
- tooltip.info('<i class="fa fa-exclamation-triangle"></i>', dvText.tooltipInfo6);
- return;
- }
- if(type2 == 'bw' || type2 == 'nb'){
- value2 = $("#luckysheet-dataVerification-dialog .show-box-item-date .input:visible .data-verification-value2").val().trim();
-
- if(!isdatetime(value2)){
- tooltip.info('<i class="fa fa-exclamation-triangle"></i>', dvText.tooltipInfo6);
- return;
- }
- if(diff(value1, value2) > 0){
- tooltip.info('<i class="fa fa-exclamation-triangle"></i>', dvText.tooltipInfo7);
- return;
- }
- }
- }
- else if(type == 'validity'){
- type2 = $("#luckysheet-dataVerification-dialog #data-verification-validity-select").val();
- }
- let remote = $("#luckysheet-dataVerification-dialog #data-verification-remote").is(":checked");
- let prohibitInput = $("#luckysheet-dataVerification-dialog #data-verification-prohibitInput").is(":checked");
- let hintShow = $("#luckysheet-dataVerification-dialog #data-verification-hint-show").is(":checked");
- let hintText = "";
- if(hintShow){
- hintText = $("#luckysheet-dataVerification-dialog .data-verification-hint-text input").val().trim();
- }
- let item = {
- type: type,
- type2: type2,
- value1: value1,
- value2: value2,
- checked: false,
- remote: remote,
- prohibitInput: prohibitInput,
- hintShow: hintShow,
- hintText: hintText,
- }
-
- let historyDataVerification = $.extend(true, {}, _this.dataVerification);
- let currentDataVerification = $.extend(true, {}, _this.dataVerification);
- for(let r = str; r <= edr; r++){
- for(let c = stc; c <= edc; c++){
- currentDataVerification[r + '_' + c] = item;
- if(type == 'checkbox'){
- setcellvalue(r, c, d, item.value2);
- }
- }
- }
- if(type == 'checkbox'){
- _this.refOfCheckbox(historyDataVerification, currentDataVerification, Store.currentSheetIndex, d, range[range.length - 1]);
- }
- else{
- _this.ref(historyDataVerification, currentDataVerification, Store.currentSheetIndex);
- }
-
- $("#luckysheet-modal-dialog-mask").hide();
- $("#luckysheet-dataVerification-dialog").hide();
- });
- //删除验证按钮
- $(document).off("click.delete").on("click.delete", "#luckysheet-dataVerification-dialog-delete", function(e) {
- let rangeTxt = $("#luckysheet-dataVerification-dialog #data-verification-range input").val().trim();
- let range = _this.getRangeByTxt(rangeTxt);
- if(range.length == 0){
- tooltip.info('<i class="fa fa-exclamation-triangle"></i>', dvText.selectCellRange2);
- return;
- }
-
- let historyDataVerification = $.extend(true, {}, _this.dataVerification);
- let currentDataVerification = $.extend(true, {}, _this.dataVerification);
- let str = range[range.length - 1].row[0],
- edr = range[range.length - 1].row[1],
- stc = range[range.length - 1].column[0],
- edc = range[range.length - 1].column[1];
- for(let r = str; r <= edr; r++){
- for(let c = stc; c <= edc; c++){
- delete currentDataVerification[r + '_' + c];
- }
- }
- _this.ref(historyDataVerification, currentDataVerification, Store.currentSheetIndex);
-
- $("#luckysheet-modal-dialog-mask").hide();
- $("#luckysheet-dataVerification-dialog").hide();
- });
- //info提示弹框 关闭
- $(document).on("click", "#luckysheet-info .luckysheet-modal-dialog-title-close, #luckysheet-info .luckysheet-model-close-btn", function(e) {
- $(this).parents("#luckysheet-info").hide();
- if($("#luckysheet-dataVerification-dialog").is(":visible")){
- $("#luckysheet-modal-dialog-mask").show();
- }
- e.stopPropagation();
- });
- },
- dataAllocation: function(){
- let _this = this;
- //单元格范围
- let range = Store.luckysheet_select_save[Store.luckysheet_select_save.length - 1];
- let rangeTxt = getRangetxt(Store.currentSheetIndex, range, Store.currentSheetIndex);
- $("#luckysheet-dataVerification-dialog #data-verification-range input").val(rangeTxt);
- //focus单元格
- let rowIndex = range.row_focus || range.row[0];
- let colIndex = range.column_focus || range.column[0];
- let dataVerification = $.extend(true, {}, _this.dataVerification);
- let item = dataVerification[rowIndex + '_' + colIndex];
- if(item == null){
- item = $.extend(true, {}, _this.defaultItem);
- }
- _this.curItem = item;
-
- //验证条件
- $("#luckysheet-dataVerification-dialog #data-verification-type-select").val(item.type);
- $("#luckysheet-dataVerification-dialog .show-box .show-box-item").hide();
- if(item.type == 'dropdown'){
- $("#luckysheet-dataVerification-dialog .show-box .show-box-item-dropdown").show();
- $("#luckysheet-dataVerification-dialog .show-box-item-dropdown .data-verification-value1").val(item.value1);
- $('#luckysheet-dataVerification-dialog #data-verification-multi').prop('checked', item.type2 ? true : false);
- }
- else if(item.type == 'checkbox'){
- $("#luckysheet-dataVerification-dialog .show-box .show-box-item-checkbox").show();
- $("#luckysheet-dataVerification-dialog .show-box-item-checkbox .data-verification-value1").val(item.value1);
- $("#luckysheet-dataVerification-dialog .show-box-item-checkbox .data-verification-value2").val(item.value2);
- }
- else if(item.type == 'number' || item.type == 'number_integer' || item.type == 'number_decimal'){
- $("#luckysheet-dataVerification-dialog .show-box-item-number").show();
- $("#luckysheet-dataVerification-dialog #data-verification-number-select").val(item.type2);
- $("#luckysheet-dataVerification-dialog .show-box-item-number .input").hide();
-
- if(item.type2 == 'bw' || item.type2 == 'nb'){
- $("#luckysheet-dataVerification-dialog .show-box-item-number .input1").show();
- }
- else{
- $("#luckysheet-dataVerification-dialog .show-box-item-number .input2").show();
- }
- $("#luckysheet-dataVerification-dialog .show-box-item-number .data-verification-value1").val(item.value1);
- $("#luckysheet-dataVerification-dialog .show-box-item-number .data-verification-value2").val(item.value2);
- }
- else if(item.type == 'text_content'){
- $("#luckysheet-dataVerification-dialog .show-box-item-text").show();
- $("#luckysheet-dataVerification-dialog #data-verification-text-select").val(item.type2);
- $("#luckysheet-dataVerification-dialog .show-box-item-text .data-verification-value1").val(item.value1);
- }
- else if(item.type == 'text_length'){
- $("#luckysheet-dataVerification-dialog .show-box-item-textLength").show();
- $("#luckysheet-dataVerification-dialog #data-verification-textLength-select").val(item.type2);
- $("#luckysheet-dataVerification-dialog .show-box-item-textLength .input").hide();
- if(item.type2 == 'bw' || item.type2 == 'nb'){
- $("#luckysheet-dataVerification-dialog .show-box-item-textLength .input1").show();
- }
- else{
- $("#luckysheet-dataVerification-dialog .show-box-item-textLength .input2").show();
- }
- $("#luckysheet-dataVerification-dialog .show-box-item-textLength .data-verification-value1").val(item.value1);
- $("#luckysheet-dataVerification-dialog .show-box-item-textLength .data-verification-value2").val(item.value2);
- }
- else if(item.type == 'date'){
- $("#luckysheet-dataVerification-dialog .show-box-item-date").show();
- $("#luckysheet-dataVerification-dialog #data-verification-date-select").val(item.type2);
- $("#luckysheet-dataVerification-dialog .show-box-item-date .input").hide();
- if(item.type2 == 'bw' || item.type2 == 'nb'){
- $("#luckysheet-dataVerification-dialog .show-box-item-date .input1").show();
- }
- else{
- $("#luckysheet-dataVerification-dialog .show-box-item-date .input2").show();
- }
- $("#luckysheet-dataVerification-dialog .show-box-item-date .data-verification-value1").val(item.value1);
- $("#luckysheet-dataVerification-dialog .show-box-item-date .data-verification-value2").val(item.value2);
- }
- else if(item.type == 'validity'){
- $("#luckysheet-dataVerification-dialog .show-box .show-box-item-validity").show();
- $("#luckysheet-dataVerification-dialog #data-verification-validity-select").val(item.type2);
- }
- //自动远程获取选项
- $("#luckysheet-dataVerification-dialog #data-verification-remote").prop("checked", item.remote);
- //输入数据无效时禁止输入
- $("#luckysheet-dataVerification-dialog #data-verification-prohibitInput").prop("checked", item.prohibitInput);
- //选中单元格时显示提示语
- $("#luckysheet-dataVerification-dialog #data-verification-hint-show").prop("checked", item.hintShow);
-
- if(item.hintShow){
- $("#luckysheet-dataVerification-dialog .data-verification-hint-text").show();
- }
- else{
- $("#luckysheet-dataVerification-dialog .data-verification-hint-text").hide();
- }
-
- $("#luckysheet-dataVerification-dialog .data-verification-hint-text input").val(item.hintText);
- },
- rangeDialog: function(dataSource, txt){
- let _this = this;
- const _locale = locale();
- const dvText = _locale.dataVerification;
- const buttonText = _locale.button;
- $("#luckysheet-modal-dialog-mask").hide();
- $("#luckysheet-dataVerificationRange-dialog").remove();
- $("body").first().append(replaceHtml(modelHTML, {
- "id": "luckysheet-dataVerificationRange-dialog",
- "addclass": "luckysheet-dataVerificationRange-dialog",
- "title": dvText.selectCellRange,
- "content": `<input readonly="readonly" placeholder="${dvText.selectCellRange2}" value="${txt}"/>`,
- "botton": `<button id="luckysheet-dataVerificationRange-dialog-confirm" class="btn btn-primary" data-source="${dataSource}">${buttonText.confirm}</button>
- <button id="luckysheet-dataVerificationRange-dialog-close" class="btn btn-default">${buttonText.close}</button>`,
- "style": "z-index:100003"
- }));
- let $t = $("#luckysheet-dataVerificationRange-dialog")
- .find(".luckysheet-modal-dialog-content")
- .css("min-width", 300)
- .end(),
- myh = $t.outerHeight(),
- myw = $t.outerWidth();
- let winw = $(window).width(), winh = $(window).height();
- let scrollLeft = $(document).scrollLeft(), scrollTop = $(document).scrollTop();
- $("#luckysheet-dataVerificationRange-dialog").css({
- "left": (winw + scrollLeft - myw) / 2,
- "top": (winh + scrollTop - myh) / 3
- }).show();
- },
- getTxtByRange: function(range){
- if(range.length > 0){
- let txt = [];
- for(let s = 0; s < range.length; s++){
- let r1 = range[s].row[0], r2 = range[s].row[1];
- let c1 = range[s].column[0], c2 = range[s].column[1];
-
- txt.push(getRangetxt(Store.currentSheetIndex, { "row": [r1, r2], "column": [c1, c2] }, Store.currentSheetIndex));
- }
- return txt.join(",");
- }
- },
- getRangeByTxt: function(txt){
- let range = [];
- if(txt.indexOf(",") != -1){
- let arr = txt.split(",");
- for(let i = 0; i < arr.length; i++){
- if(formula.iscelldata(arr[i])){
- range.push(formula.getcellrange(arr[i]));
- }
- else{
- range = [];
- break;
- }
- }
- }
- else{
- if(formula.iscelldata(txt)){
- range.push(formula.getcellrange(txt));
- }
- }
- return range;
- },
- cellFocus: function(r, c, clickMode){
- $("#luckysheet-dataVerification-dropdown-btn").hide();
- $("#luckysheet-dataVerification-showHintBox").hide();
- let _this = this;
- if(_this.dataVerification == null || _this.dataVerification[r + '_' + c] == null){
- $("#luckysheet-dataVerification-dropdown-List").hide();
- return;
- }
- let row = Store.visibledatarow[r],
- row_pre = r == 0 ? 0 : Store.visibledatarow[r - 1];
- let col = Store.visibledatacolumn[c],
- col_pre = c == 0 ? 0 : Store.visibledatacolumn[c - 1];
- let margeset = menuButton.mergeborer(Store.flowdata, r, c);
- if(!!margeset){
- row = margeset.row[1];
- row_pre = margeset.row[0];
-
- col = margeset.column[1];
- col_pre = margeset.column[0];
- }
- let item = _this.dataVerification[r + '_' + c];
- //单元格数据验证 类型是 复选框
- if(clickMode && item.type == 'checkbox'){
- _this.checkboxChange(r, c);
- return;
- }
- //单元格数据验证 类型是 下拉列表
- if(item.type == 'dropdown'){
- $("#luckysheet-dataVerification-dropdown-btn").show().css({
- 'max-width': col - col_pre,
- 'max-height': row - row_pre,
- 'left': col - 20,
- 'top': row_pre + (row - row_pre - 20) / 2
- })
- if($("#luckysheet-dataVerification-dropdown-List").is(":visible")){
- let dataIndex = $("#luckysheet-dataVerification-dropdown-List").prop("data-index");
-
- if(dataIndex != (r + '_' + c)){
- $("#luckysheet-dataVerification-dropdown-List").hide();
- }
- }
- }
- else{
- $("#luckysheet-dataVerification-dropdown-List").hide();
- }
- //提示语
- if(item.hintShow){
- let hintText;
- if(Store.lang == 'en'){
- hintText = '<span style="color:#f5a623;">Hint: </span>';
- }
- else{
- hintText = '<span style="color:#f5a623;">提示:</span>';
- }
- hintText += _this.getHintText(item);
- $("#luckysheet-dataVerification-showHintBox").html(hintText).show().css({
- 'left': col_pre,
- 'top': row
- });
- return;
- }
-
- //数据验证未通过
- let cellValue = getcellvalue(r, c, null);
- if(isRealNull(cellValue)){
- return;
- }
- let validate = _this.validateCellData(cellValue, item);
- if(!validate){
- let failureText;
- if(Store.lang == 'en'){
- failureText = '<span style="color:#f72626;">Failure: </span>';
- }
- else{
- failureText = '<span style="color:#f72626;">失效:</span>';
- }
- failureText += _this.getFailureText(item);
- $("#luckysheet-dataVerification-showHintBox").html(failureText).show().css({
- 'left': col_pre,
- 'top': row
- });
- }
- },
- getHintText: function(item) {
- let _this = this;
- let hintText = item.hintText || '';
- if(hintText.length == 0){
- if(Store.lang == 'en'){
- if(item.type == 'dropdown'){
- hintText += 'please select an option in the drop-down list';
- }
- else if(item.type == 'checkbox'){
- }
- else if(item.type == 'number' || item.type == 'number_integer' || item.type == 'number_decimal'){
- hintText += 'please enter a ' + _this.optionLabel_en[item.type] + ' ' + _this.optionLabel_en[item.type2] + ' ' + item.value1;
- if(item.type2 == 'bw' || item.type2 == 'nb'){
- hintText += ' and ' + item.value2;
- }
- }
- else if(item.type == 'text_content'){
- hintText += 'please enter text ' + _this.optionLabel_en[item.type2] + ' ' + item.value1;
- }
- else if(item.type == 'text_length'){
- hintText += 'please enter text with length ' + _this.optionLabel_en[item.type2] + ' ' + item.value1;
-
- if(item.type2 == 'bw' || item.type2 == 'nb'){
- hintText += ' and ' + item.value2;
- }
- }
- else if(item.type == 'date'){
- hintText += 'please enter a date ' + _this.optionLabel_en[item.type2] + ' ' + item.value1;
- if(item.type2 == 'bw' || item.type2 == 'nb'){
- hintText += ' and ' + item.value2;
- }
- }
- else if(item.type == 'validity'){
- hintText += 'please enter the correct ' + _this.optionLabel_en[item.type2];
- }
- }
- else{
- if(item.type == 'dropdown'){
- hintText += '请选择下拉列表中的选项';
- }
- else if(item.type == 'checkbox'){
- }
- else if(item.type == 'number' || item.type == 'number_integer' || item.type == 'number_decimal'){
- hintText += '请输入' + _this.optionLabel[item.type2] + item.value1;
- if(item.type2 == 'bw' || item.type2 == 'nb'){
- hintText += '和' + item.value2 + '之间';
- }
- hintText += '的' + _this.optionLabel[item.type];
- }
- else if(item.type == 'text_content'){
- hintText += '请输入内容' + _this.optionLabel[item.type2] + item.value1 + '的文本';
- }
- else if(item.type == 'text_length'){
- hintText += '请输入长度' + _this.optionLabel[item.type2] + item.value1;
-
- if(item.type2 == 'bw' || item.type2 == 'nb'){
- hintText += '和' + item.value2 + '之间';
- }
- hintText += '的文本';
- }
- else if(item.type == 'date'){
- hintText += '请输入' + _this.optionLabel[item.type2] + item.value1;
- if(item.type2 == 'bw' || item.type2 == 'nb'){
- hintText += '和' + item.value2 + '之间';
- }
- hintText += '的日期';
- }
- else if(item.type == 'validity'){
- hintText += '请输入正确的' + _this.optionLabel[item.type2];
- }
- }
- }
- return hintText;
- },
- getFailureText: function(item) {
- let _this = this;
- let failureText = '';
- if(Store.lang == 'en'){
- if(item.type == 'dropdown'){
- failureText += 'what you selected is not an option in the drop-down list';
- }
- else if(item.type == 'checkbox'){
- }
- else if(item.type == 'number' || item.type == 'number_integer' || item.type == 'number_decimal'){
- failureText += 'what you entered is not a ' + _this.optionLabel_en[item.type] + ' ' + _this.optionLabel_en[item.type2] + ' ' + item.value1;
- if(item.type2 == 'bw' || item.type2 == 'nb'){
- failureText += ' and ' + item.value2;
- }
- }
- else if(item.type == 'text_content'){
- failureText += 'what you entered is not text that ' + _this.optionLabel_en[item.type2] + ' ' + item.value1;
- }
- else if(item.type == 'text_length'){
- failureText += 'the text you entered is not length ' + _this.optionLabel_en[item.type2] + ' ' + item.value1;
-
- if(item.type2 == 'bw' || item.type2 == 'nb'){
- failureText += ' and ' + item.value2;
- }
- }
- else if(item.type == 'date'){
- failureText += 'the date you entered is not ' + _this.optionLabel_en[item.type2] + ' ' + item.value1;
- if(item.type2 == 'bw' || item.type2 == 'nb'){
- failureText += ' and ' + item.value2;
- }
- }
- else if(item.type == 'validity'){
- failureText += 'what you entered is not a correct ' + _this.optionLabel_en[item.type2];
- }
- }
- else{
- if(item.type == 'dropdown'){
- failureText += '你选择的不是下拉列表中的选项';
- }
- else if(item.type == 'checkbox'){
- }
- else if(item.type == 'number' || item.type == 'number_integer' || item.type == 'number_decimal'){
- failureText += '你输入的不是' + _this.optionLabel[item.type2] + item.value1;
- if(item.type2 == 'bw' || item.type2 == 'nb'){
- failureText += '和' + item.value2 + '之间';
- }
- failureText += '的' + _this.optionLabel[item.type];
- }
- else if(item.type == 'text_content'){
- failureText += '你输入的不是内容' + _this.optionLabel[item.type2] + item.value1 + '的文本';
- }
- else if(item.type == 'text_length'){
- failureText += '你输入的不是长度' + _this.optionLabel[item.type2] + item.value1;
-
- if(item.type2 == 'bw' || item.type2 == 'nb'){
- failureText += '和' + item.value2 + '之间';
- }
- failureText += '的文本';
- }
- else if(item.type == 'date'){
- failureText += '你输入的不是' + _this.optionLabel[item.type2] + item.value1;
- if(item.type2 == 'bw' || item.type2 == 'nb'){
- failureText += '和' + item.value2 + '之间';
- }
- failureText += '的日期';
- }
- else if(item.type == 'validity'){
- failureText += '你输入的不是一个正确的' + _this.optionLabel[item.type2];
- }
- }
- return failureText;
- },
- validateCellData: function(cellValue, item){
- let _this = this;
- let type = item.type,
- type2 = item.type2,
- value1 = item.value1,
- value2 = item.value2;
- if(type == 'dropdown'){
- let list = _this.getDropdownList(value1);
- // 多选的情况 检查每个都在下拉列表中
- if(type2 && cellValue){
- return cellValue.split(',').every(function (i) {
- return list.indexOf(i) !== -1;
- });
- }
- let result = false;
- for(let i = 0; i < list.length; i++){
- if(list[i] == cellValue){
- result = true;
- break;
- }
- }
- return result;
- }
- else if(type == 'checkbox'){
- }
- else if(type == 'number' || type == 'number_integer' || type == 'number_decimal'){
- if(!isRealNum(cellValue)){
- return false;
- }
-
- cellValue = Number(cellValue);
- if(type == 'number_integer' && cellValue % 1 !== 0){
- return false;
- }
- if(type == 'number_decimal' && cellValue % 1 === 0){
- return false;
- }
- value1 = Number(value1);
- value2 = Number(value2);
- if(type2 == 'bw' && (cellValue < value1 || cellValue > value2)){
- return false;
- }
- if(type2 == 'nb' && (cellValue >= value1 && cellValue <= value2)){
- return false;
- }
- if(type2 == 'eq' && cellValue != value1){
- return false;
- }
- if(type2 == 'ne' && cellValue == value1){
- return false;
- }
- if(type2 == 'gt' && cellValue <= value1){
- return false;
- }
- if(type2 == 'lt' && cellValue >= value1){
- return false;
- }
- if(type2 == 'gte' && cellValue < value1){
- return false;
- }
- if(type2 == 'lte' && cellValue > value1){
- return false;
- }
- }
- else if(type == 'text_content'){
- cellValue = cellValue.toString();
- value1 = value1.toString();
- if(type2 == 'include' && cellValue.indexOf(value1) == -1){
- return false;
- }
- if(type2 == 'exclude' && cellValue.indexOf(value1) > -1){
- return false;
- }
- if(type2 == 'equal' && cellValue != value1){
- return false;
- }
- }
- else if(type == 'text_length'){
- cellValue = cellValue.toString().length;
- value1 = Number(value1);
- value2 = Number(value2);
- if(type2 == 'bw' && (cellValue < value1 || cellValue > value2)){
- return false;
- }
- if(type2 == 'nb' && (cellValue >= value1 && cellValue <= value2)){
- return false;
- }
- if(type2 == 'eq' && cellValue != value1){
- return false;
- }
- if(type2 == 'ne' && cellValue == value1){
- return false;
- }
- if(type2 == 'gt' && cellValue <= value1){
- return false;
- }
- if(type2 == 'lt' && cellValue >= value1){
- return false;
- }
- if(type2 == 'gte' && cellValue < value1){
- return false;
- }
- if(type2 == 'lte' && cellValue > value1){
- return false;
- }
- }
- else if(type == 'date'){
- if(!isdatetime(cellValue)){
- return false;
- }
- if(type2 == 'bw' && (diff(cellValue, value1) < 0 || diff(cellValue, value2) > 0)){
- return false;
- }
- if(type2 == 'nb' && (diff(cellValue, value1) >= 0 && diff(cellValue, value2) <= 0)){
- return false;
- }
- if(type2 == 'eq' && diff(cellValue, value1) != 0){
- return false;
- }
- if(type2 == 'ne' && diff(cellValue, value1) == 0){
- return false;
- }
- if(type2 == 'bf' && diff(cellValue, value1) >= 0){
- return false;
- }
- if(type2 == 'nbf' && diff(cellValue, value1) < 0){
- return false;
- }
- if(type2 == 'af' && diff(cellValue, value1) <= 0){
- return false;
- }
- if(type2 == 'naf' && diff(cellValue, value1) > 0){
- return false;
- }
- }
- else if(type == 'validity'){
- if(type2 == 'card' && !validateIdCard(cellValue)){
- return false;
- }
- if(type2 == 'phone' && !/^1[3456789]\d{9}$/.test(cellValue)){
- return false;
- }
- }
- return true;
- },
- dropdownListShow: function(){
- $("#luckysheet-dataVerification-showHintBox").hide();
- let _this = this;
- let last = Store.luckysheet_select_save[Store.luckysheet_select_save.length - 1];
- let rowIndex = last.row_focus;
- let colIndex = last.column_focus;
- let row = Store.visibledatarow[rowIndex],
- row_pre = rowIndex == 0 ? 0 : Store.visibledatarow[rowIndex - 1];
- let col = Store.visibledatacolumn[colIndex],
- col_pre = colIndex == 0 ? 0 : Store.visibledatacolumn[colIndex - 1];
- let margeset = menuButton.mergeborer(Store.flowdata, rowIndex, colIndex);
- if(!!margeset){
- row = margeset.row[1];
- row_pre = margeset.row[0];
-
- col = margeset.column[1];
- col_pre = margeset.column[0];
- }
- let item = _this.dataVerification[rowIndex + '_' + colIndex];
- let list = _this.getDropdownList(item.value1);
- let optionHtml = '';
- if (item.type === 'dropdown' && item.type2) {
- // 下拉多选的情况下 将已经选择的标出来
- let cellValue = getcellvalue(rowIndex, colIndex, null);
- let valueArr = isRealNull(cellValue) ? [] : cellValue.split(',');
- list.forEach(i => {
- let checked = valueArr.indexOf(i) !== -1;
- optionHtml += `<div class="dropdown-List-item luckysheet-mousedown-cancel multi${checked ? ' checked': ''}">${i}</div>`;
- });
- } else {
- list.forEach(i => {
- optionHtml += `<div class="dropdown-List-item luckysheet-mousedown-cancel">${i}</div>`;
- });
- }
- $("#luckysheet-dataVerification-dropdown-List")
- .html(optionHtml)
- .prop("data-index", rowIndex + '_' + colIndex)
- .show()
- .css({
- 'width': col - col_pre - 1,
- 'left': col_pre,
- 'top': row,
- });
- let myh = $("#luckysheet-dataVerification-dropdown-List").outerHeight();
- let currentWinH = $("#luckysheet-cell-main")[0].scrollHeight;
- if(row + myh > currentWinH - 42 - 6){
- $("#luckysheet-dataVerification-dropdown-List").css({
- 'top': row_pre - myh,
- })
- }
- },
- getDropdownList: function(txt){
- let list = [];
- if(formula.iscelldata(txt)){
- let range = formula.getcellrange(txt);
- let d = Store.luckysheetfile[getSheetIndex(range.sheetIndex)].data;
- for(let r = range.row[0]; r <= range.row[1]; r++){
- for(let c = range.column[0]; c <= range.column[1]; c++){
- if(d[r] == null){
- continue;
- }
- let cell = d[r][c];
- if(cell == null || cell.v == null){
- continue;
- }
- let v = cell.m || cell.v;
- if(!list.includes(v)){
- list.push(v);
- }
- }
- }
- }
- else{
- let arr = txt.split(",");
- for(let i = 0; i < arr.length; i++){
- let v = arr[i];
- if(v.length == 0){
- continue;
- }
- if(!list.includes(v)){
- list.push(v);
- }
- }
- }
- return list;
- },
- checkboxChange: function(r, c){
- let _this = this;
- let historyDataVerification = $.extend(true, {}, _this.dataVerification);
- let currentDataVerification = $.extend(true, {}, _this.dataVerification);
- let item = currentDataVerification[r + '_' + c];
- item.checked = !item.checked;
- let value = item.value2;
- if(item.checked){
- value = item.value1;
- }
- let d = editor.deepCopyFlowData(Store.flowdata);
- setcellvalue(r, c, d, value);
- _this.refOfCheckbox(
- historyDataVerification,
- currentDataVerification,
- Store.currentSheetIndex,
- d,
- { "row": [r, r], "column": [c, c] }
- );
- },
- ref: function(historyDataVerification, currentDataVerification, sheetIndex){
- let _this = this;
- if (Store.clearjfundo) {
- Store.jfundo.length = 0;
- let redo = {};
- redo["type"] = "updateDataVerification";
- redo["sheetIndex"] = sheetIndex;
- redo["historyDataVerification"] = historyDataVerification;
- redo["currentDataVerification"] = currentDataVerification;
- Store.jfredo.push(redo);
- }
-
- _this.dataVerification = currentDataVerification;
- Store.luckysheetfile[getSheetIndex(sheetIndex)].dataVerification = currentDataVerification;
- //共享编辑模式
- if(server.allowUpdate){
- server.saveParam("all", sheetIndex, currentDataVerification, { "k": "dataVerification" });
- }
- setTimeout(function () {
- luckysheetrefreshgrid();
- }, 1);
- },
- refOfCheckbox: function(historyDataVerification, currentDataVerification, sheetIndex, d, range){
- let _this = this;
- if (Store.clearjfundo) {
- Store.jfundo.length = 0;
- let redo = {};
- redo["type"] = "updateDataVerificationOfCheckbox";
- redo["sheetIndex"] = sheetIndex;
- redo["historyDataVerification"] = historyDataVerification;
- redo["currentDataVerification"] = currentDataVerification;
- redo["data"] = Store.flowdata;
- redo["curData"] = d;
- redo["range"] = range;
- Store.jfredo.push(redo);
- }
- _this.dataVerification = currentDataVerification;
- Store.luckysheetfile[getSheetIndex(sheetIndex)].dataVerification = currentDataVerification;
- Store.flowdata = d;
- editor.webWorkerFlowDataCache(Store.flowdata);//worker存数据
- Store.luckysheetfile[getSheetIndex(sheetIndex)].data = Store.flowdata;
- //共享编辑模式
- if(server.allowUpdate){
- server.saveParam("all", sheetIndex, currentDataVerification, { "k": "dataVerification" });
- server.historyParam(Store.flowdata, sheetIndex, range);
- }
- setTimeout(function () {
- luckysheetrefreshgrid();
- }, 1);
- },
- }
- function validateIdCard(idCard) {
- // 15位和18位身份证号码的正则表达式
- var regIdCard = /^(^[1-9]\d{7}((0\d)|(1[0-2]))(([0|1|2]\d)|3[0-1])\d{3}$)|(^[1-9]\d{5}[1-9]\d{3}((0\d)|(1[0-2]))(([0|1|2]\d)|3[0-1])((\d{4})|\d{3}[Xx])$)$/;
- // 如果通过该验证,说明身份证格式正确,但准确性还需计算
- if (regIdCard.test(idCard)) {
- if (idCard.length == 18) {
- var idCardWi = new Array(7, 9, 10, 5, 8, 4, 2, 1, 6, 3, 7, 9, 10, 5, 8, 4, 2); // 将前17位加权因子保存在数组里
- var idCardY = new Array(1, 0, 10, 9, 8, 7, 6, 5, 4, 3, 2); // 这是除以11后,可能产生的11位余数、验证码,也保存成数组
- var idCardWiSum = 0; // 用来保存前17位各自乖以加权因子后的总和
- for (var i = 0; i < 17; i++) {
- idCardWiSum += idCard.substring(i, i + 1) * idCardWi[i];
- }
- var idCardMod = idCardWiSum % 11; // 计算出校验码所在数组的位置
- var idCardLast = idCard.substring(17); // 得到最后一位身份证号码
- // 如果等于2,则说明校验码是10,身份证号码最后一位应该是X
- if (idCardMod == 2) {
- if (idCardLast == "X" || idCardLast == "x") {
- return true;
- } else {
- return false;
- }
- } else {
- // 用计算出的验证码与最后一位身份证号码匹配,如果一致,说明通过,否则是无效的身份证号码
- if (idCardLast == idCardY[idCardMod]) {
- return true;
- } else {
- return false;
- }
- }
- }
- } else {
- return false;
- }
- }
- export default dataVerificationCtrl;
|