'use strict'; /** * * * @author Mai * @date 2018/8/21 * @version */ // 向后端请求中间计量号 function getNewCode() { postData('/change/newCode', null, function (code) { if (code !== '') { $('#bj-code').val(code); } }); } class codeRuleSet { constructor (obj) { this.body = obj; // 切换规则组件类型 $('select', obj).change(function () { const codeType = this.selectedIndex; if (codeType === ruleConst.ruleType.addNo) { $('#format', obj).show(); $('#text', obj).show(); $('#text>label', obj).text('起始编号'); $('#text>input', obj).val('001'); const s = '0000000000' + 1; $('#text>input', obj).val(s.substr(s.length - $('#format>input', obj).val())); } else if (codeType === ruleConst.ruleType.text) { $('#format', obj).hide(); $('#text', obj).show(); $('#text>label', obj).text('文本'); $('#text>input', obj).val('').attr('placeholder', '请在这里输入需要的文本'); } else { $('#format', obj).hide(); $('#text', obj).hide(); } }); // 修改编号位数 $('#format>input', obj).change(function () { const s = '0000000000' + parseInt($('#text>input', obj).val()); $('#text>input', obj).val(s.substr(s.length - $(this).val())); }); // 新增规则组件 $('#addRule', obj).click(function () { const codeType = $('select', obj)[0].selectedIndex; const rule = {rule_type: codeType}, html = []; let preview; switch (codeType) { case ruleConst.ruleType.tenderName: { preview = $('#tenderName').text(); break; } case ruleConst.ruleType.text: { rule.text = $('#text>input', obj).val(); preview = rule.text; break; } case ruleConst.ruleType.inDate: { preview = moment().format('YYYYMM'); break; } case ruleConst.ruleType.addNo: { rule.format = parseInt($('#format>input', obj).val()); rule.start = parseInt($('#text>input', obj).val()); const s = '0000000000'; preview = s.substr(s.length - rule.format); break; } } // 更新规则 codeRule.push(rule); // 更新规则显示 html.push(''); html.push('' + preview + ''); html.push(''); html.push(''); const part = $('#ruleParts', obj).append(html.join('')); // 更新规则预览 $('#preview', obj).text($('#preview', obj).text() + preview); $('a', part).bind('click', function () { const index = $('a', obj).index(this); codeRule.splice(index, 1); $(this).parent().remove(); const rules = $('span>span', obj), ruleText = []; for (const r of rules) { ruleText.push(r.innerText); } $('#preview', obj).text(ruleText.join('')); }); }); // 删除规则组件 $('a', $('#ruleParts', obj)).bind('click', function () { const index = $('a', obj).index(this); codeRule.splice(index, 1); $(this).parent().remove(); const rules = $('span>span', obj), ruleText = []; for (const r of rules) { console.log(r.innerText + ':1'); ruleText.push(r.innerText); } $('#preview', obj).text('当前规则:' + ruleText.join('')); }); } } $(document).ready(() => { // 首次进入设置 if (!codeRule || codeRule.length === 0) { codeRule = []; const firstSet = new codeRuleSet($('div.modal-body', '#first')); // 确认规则上传服务器 $('#setRule', '#first').bind('click', function () { const data = { rule: ruleType, data: JSON.stringify(codeRule), }; postData('/tender/rule', data, function () { $('#first').modal('hide'); $('#add-bj').modal('show'); }); }); $('#first').modal('show'); } else if ($('#changList').children.length === 0) { $('#add-bj').modal('show'); } // 设置 const ruleSet = new codeRuleSet($('div.modal-body', '#setting')); $('#setRule', '#setting').bind('click', function () { const data = { rule: ruleType, data: JSON.stringify(codeRule), }; postData('/tender/rule', data, function () { $('#setting').modal('hide'); }); }) // 新增变更令 modal显示 $('#add-bj').on('show.bs.modal', function() { getNewCode(); if ($('#changeList').children.length === 0) { $('#addCancel').hide(); } else { $('#addCancel').show(); } $('#bj-code').removeClass('is-invalid'); }); // 获取最新可用变更令号 $('#autoCode').click(getNewCode); // 新增变更令 确认 $('#addOk').click(function () { const data = { code: $('#bj-code').val(), name: $('#bj-name').val(), }; if (data.code || data.code !== '' || data.name || data.name !== '') { postData('/change/add', data, function (rst) { $('#bj-code').removeClass('is-invalid'); $('#mj-add').modal('hide'); window.location.href = '/change/' + rst.cid + '/info'; }, function () { $('#mj-code').addClass('is-invalid'); $('#mj-Hint').show(); }); } }); });