'use strict'; /** * 项目信息js * * @author EllisRan. * @date 2019/3/19 * @version */ $(document).ready(() => { // 启用和停用账号 $('.account-switch-btn').on('click', function () { const data = { enable: $(this).hasClass('btn-outline-success') ? 1 : 0, id: $(this).data('account'), }; postData('/setting/user/switch', data, function () { window.location.href = '/setting/user'; }); }); // 编辑账号 $('a[data-target="#edit-user"]').on('click', function () { const account = $(this).data('account'); $('#edit-user input[name="account"]').val(account.account); $('#edit-user input[name="name"]').val(account.name); $('#edit-user select[name="company"]').val(account.company); $('#edit-user input[name="role"]').val(account.role); $('#edit-user input[name="mobile"]').val(account.mobile); $('#edit-user input[name="telephone"]').val(account.telephone); $('#edit-user input[name="id"]').val(account.id); $('#edit-user input[name="account_group"]').val(account.account_group); $('#edit-user input[class="account-check"]').val(account.account); $('#edit-user input[data-mobile="auth-mobile"]').val(account.auth_mobile); $('#edit-user input[name="mobile"]').attr('readOnly', account.bind === 1); if (account.bind === 1) { $('#edit-user input[name="mobile"]').siblings('small').show(); } else { $('#edit-user input[name="mobile"]').siblings('small').hide(); } $('#edit-password input[name="account"]').val(account.account); $('#edit-password input[class="account-check"]').val(account.account); $('#edit-password input[name="id"]').val(account.id); $('#edit-password input[name="reset_password"]').val(''); }); // 选择单位自动配置账号组 $('select[name="company"]').change(function () { const company = $(this).val(); const oneUnit = _.find(unitList, { name: company }); $(this).siblings('input[name="account_group"]').val(oneUnit ? oneUnit.type : 7); }); // 分配随机密码 $("#rand-password").click(function() { const password = randPassword(); $(this).parent().parent().find('input').val(password); }); // 分配随机密码 $("#rand-password2").click(function() { const password = randPassword(); $(this).parent().parent().find('input').val(password); }); // 重置密码 let isChange = false; $("#reset-password-btn").click(function() { try { if (isChange) { throw '稍后再操作'; } const resetPassword = $("#reset-password").val(); const id = $("#user-id").val(); if (resetPassword.length < 6) { throw '密码长度不能小于6'; } if (!/^[0-9a-zA-Z*~!@&%$^\\(\\)#_\[\]\-\+={}|?'":,<>.`]+$/.test(resetPassword)) { throw '密码只支持英文数字及符号'; } // 判断新密码的强度 const reg = /^(?![0-9]+$)(?![a-zA-Z]+$).{6,16}$/; if (!reg.test(resetPassword)) { throw '请设置至少包含数字和字母的密码'; } const btn = $(this); $.ajax({ url: '/setting/user/reset/password', type: 'post', data: { id: id, reset_password: resetPassword }, dataType: 'json', error: function() { isChange = false; btn.html('重置密码'); throw '网络错误!'; }, beforeSend: function(xhr) { let csrfToken = Cookies.get('csrfToken_j'); xhr.setRequestHeader('x-csrf-token', csrfToken); isChange = true; btn.html(''); }, success: function(response) { isChange = false; btn.html('重置密码'); if (response.err !== 0) { throw response.msg; } $("#reset-password").val(''); toastr.success('重置成功'); } }); } catch (error) { toastr.error(error); console.log(error); } }); // 账号查重 $('input[name="account"]').on('blur', function () { const self = $(this); if (self.val() !== self.siblings('input').val()) { const data = {account: $(this).val()}; postData('/setting/user/exist', data, function (data) { if (data === null) { self.removeClass('is-invalid'); } else { self.addClass('is-invalid'); } }) } else { self.removeClass('is-invalid'); } }); // 选中创建标段才可以选择协作办公 $('a[data-target="#edit-user2"]').on('click', function () { $('#edit-user2 input:radio').prop('checked', false); $('#edit-user2 input:checkbox').prop('checked', false); const account = $(this).data('account'); $('#edit-user2 input[name="id"]').val(account.id); // 权限赋值 if (account.permission !== '') { const permission = JSON.parse(account.permission); for (const pm in permission) { if (pm === 'tender' && permission[pm].indexOf('1') !== -1) { $('#edit-user2 input[name="cooperation"]').attr('disabled', false); } else { $('#edit-user2 input[name="cooperation"]').attr('disabled', true); } if (pm === 'tender' && permission[pm].indexOf('5') !== -1) { $('#edit-user2 input:checkbox[id="change_1"]').prop('checked', true); } if (pm === 'tender' && permission[pm].indexOf('4') !== -1) { $('#edit-user2 input:checkbox[id="material_1"]').prop('checked', true); } if (allPermission[pm].type === 'checkbox') { for (const index of permission[pm]) { $('#edit-user2 input:checkbox[id="' + pm + '_' + index + '"]').prop('checked', true); } } else if (allPermission[pm].type === 'radio') { $('#edit-user2 input:radio[id="' + pm + '_' + permission[pm] + '"]').prop('checked', true); } } } // 协作赋值 $('#edit-user2 input:radio[name="cooperation"][value="' + account.cooperation + '"]').prop('checked', true); }); // 选择创建标段功能后可选协作办公 $('#edit-user2 input:checkbox').click(function () { if ($(this).attr('id') === 'tender_1') { if ($(this).is(':checked')) { $('#edit-user2 input[name="cooperation"]').attr('disabled', false); } else { $('#edit-user2 input[name="cooperation"]').attr('disabled', true); } } }); // 解绑第三方平台 $('.unlink-user').on('click', function () { const id = $(this).data('account'); const accountData = _.find(accountList, { id }); console.log(accountData); $('#bind_account').text(accountData.name + ' ' + accountData.mobile); $('#account_id').val(id); }) // 设置显示默认 $('body').on('click', '#set-default', function () { const attid = $(this).data('attid'); const data = {id: attid}; postData('/setting/show/update', data, function (result) { let html = '' result.forEach((item, idx) => { html += `
  • ${item.label_name}` html+= item.is_default ? `默认
  • `:`设为默认` }) //
  • // 标段列表设为默认 //
  • //
  • 金额概况默认
  • //
  • // 计量进度设为默认 //
  • $('.list-group').empty() $('.list-group').append(html) const item = result.find((i, idx) => idx=== attid) $('#nav_tender').attr('href', item.path) }); }); // 设置页显示数目 $('.nav-tabs .nav-link').each(function () { const pageSize = getLocalCache('account-pageSize') ? getLocalCache('account-pageSize') : ''; if (getLocalCache('account-pageSize') && $(this).attr('href').indexOf('pageSize') === -1 && $(this).attr('href').indexOf('unit') === -1) { $(this).attr('href', $(this).attr('href') + '?pageSize=' + getLocalCache('account-pageSize')); } }); // 设置页显示数目 $('#user-list .list-group-item').each(function (k,v) { const pageSize = getLocalCache('account-pageSize') ? getLocalCache('account-pageSize') : ''; if (pageSize) { $(this).attr('href', $(this).attr('href') + '&pageSize=' + pageSize); } }) // 参建单位页切换单位右侧显示 $('#unit_list tr').click(function () { const id = parseInt($(this).data('id')); const one = _.find(unitList, { id }); if (one) { $(this).siblings('tr').removeClass('table-warning'); $(this).addClass('table-warning'); $('#unit_name').val(one.name); $('#unit_corporation').val(one.corporation); $('#unit_credit_code').val(one.credit_code); $('#unit_tel').val(one.tel); $('#unit_website').val(one.website); $('#unit_region').val(one.region); $('#unit_address').val(one.address); $('#unit_basic').val(one.basic); $('#unit_type').val(one.type); if(one.sign_path) { $('#sign-show').html(''); $('#delete-sign').show(); $('#upload-sign').hide(); } else { $('#sign-show').html(''); $('#delete-sign').hide(); $('#upload-sign').show(); } oneUnit = one; } }); // 参建单位编辑 // 回车提交 $('#one_unit input').on('keypress', function () { if(window.event.keyCode === 13) { $(this).blur(); } }); $('#one_unit input').blur(function () { console.log('hello'); const val_name = $(this).data('name'); let val = _.trim($(this).val()) !== '' ? _.trim($(this).val()) : null; if (!oneUnit) { toastr.error('所选单位有误,请重新选择'); return false; } switch(val_name) { case 'name': if(val && val.length > 100) { toastr.error('单位名称超过100个字,请缩减名称'); $(this).val(oneUnit[val_name]); return false; } const tongming = _.find(unitList, { name: val }); if (tongming && tongming.id !== oneUnit.id) { toastr.error('单位名称不能重复'); $(this).val(oneUnit[val_name]); return false; } break; default: if(val && val.length > 255) { toastr.error('超出字段范围,请缩减'); $(this).val(oneUnit[val_name]); return false; } break; } if(oneUnit[val_name] !== val) { const _self = $(this); postData('/setting/user/unit/save', { type: 'update', id: oneUnit.id, val_name, val}, function (result) { oneUnit[val_name] = val; _self.val(oneUnit[val_name]); if (val_name === 'name') { oneUnit.account_num = result.account_num; $('#unit_list tr[class="table-warning"]').find('a').text(oneUnit[val_name]); $('#unit_list tr[class="table-warning"]').children('td').eq(2).text(result.account_num); } }, function () { _self.val(oneUnit[val_name]); }) } else { $(this).val(oneUnit[val_name]); } }); $('#one_unit textarea').blur(function () { const val_name = $(this).data('name'); let val = _.trim($(this).val()) !== '' ? _.trim($(this).val()) : null; if (!oneUnit) { toastr.error('所选单位有误,请重新选择'); return false; } if(oneUnit[val_name] !== val) { const _self = $(this); postData('/setting/user/unit/save', { type: 'update', id: oneUnit.id, val_name, val}, function (result) { oneUnit[val_name] = val; _self.val(oneUnit[val_name]); $('#unit_list tr[class="table-warning"]').children('td').eq(4).text(oneUnit[val_name]); }, function () { _self.val(oneUnit[val_name]); }) } else { $(this).val(oneUnit[val_name]); } }); $('#one_unit select').change(function () { const val_name = $(this).attr('data-name'); let val = _.trim($(this).val()) !== '' ? _.trim($(this).val()) : null; if (!oneUnit) { toastr.error('所选单位有误,请重新选择'); return false; } if(oneUnit[val_name] !== val) { const _self = $(this); postData('/setting/user/unit/save', { type: 'update', id: oneUnit.id, name: oneUnit.name, val_name, val}, function (result) { oneUnit[val_name] = val; _self.val(oneUnit[val_name]); $('#unit_list tr[class="table-warning"]').children('td').eq(3).text(accountGroup[parseInt(oneUnit[val_name])]); }, function () { _self.val(oneUnit[val_name]); }) } else { $(this).val(oneUnit[val_name]); } }); // 删除单位弹窗 $('#del-modal-btn').click(function () { if (!oneUnit) { toastr.error('所选单位有误,请重新选择'); return false; } if (oneUnit.account_num === 0) { $('.del-btn').show(); $('.not-del-btn').hide(); } else { $('.del-btn').hide(); $('.not-del-btn').show(); } }); // 删除单位 $('#delete-unit').click(function () { if (!oneUnit) { toastr.error('所选单位有误,请重新选择'); return false; } postData('/setting/user/unit/save', { type: 'delete', name: oneUnit.name, id: oneUnit.id }, function (result) { window.location.href = '/setting/user/unit'; }) }); // 上传签章 $('#sign-upload').change(function () { if (!oneUnit) { toastr.error('所选单位有误,请重新选择'); return false; } const file = this.files[0]; const ext = file.name.toLowerCase().split('.').splice(-1)[0]; const imgStr = /(jpg|jpeg|png|bmp|BMP|JPG|PNG|JPEG)$/; if (!imgStr.test(ext)) { toastr.error('请上传正确的图片格式文件'); return } if ($(this).val()) { const formData = new FormData(); formData.append('file', this.files[0]); formData.append('id', oneUnit.id); postDataWithFile('/setting/user/unit/upload', formData, function (result) { const html = ''; $('#sign-show').html(html); $('#sign-upload').val(''); oneUnit.sign_path = result.sign_path; $('#upload-sign').hide(); $('#delete-sign').show(); toastr.success('上传成功'); }); } }); // 移除签章 $('#delete-sign').click(function () { if (!oneUnit) { toastr.error('所选单位有误,请重新选择'); return false; } postData('/setting/user/unit/save', { type: 'del-sign', id: oneUnit.id }, function (result) { $('#sign-show').html(''); toastr.warning('已移除'); oneUnit.sign_path = null; $('#upload-sign').show(); $('#delete-sign').hide(); }) }); }); function checkPasswordForm() { try { if ($('#edit-password input[name="account"]').val() == '' || $('#edit-password input[name="account"]').hasClass('is-invalid')) { throw '账号不能为空或已存在'; } const resetPassword = $('#edit-password input[name="reset_password"]').val(); if (resetPassword.length < 6) { throw '密码长度不能小于6'; } if (!/^[0-9a-zA-Z*~!@&%$^\\(\\)#_\[\]\-\+={}|?'":,<>.`]+$/.test(resetPassword)) { throw '密码只支持英文数字及符号'; } // 判断新密码的强度 const reg = /^(?![0-9]+$)(?![a-zA-Z]+$).{6,16}$/; if (!reg.test(resetPassword)) { throw '请设置至少包含数字和字母的密码'; } } catch (err) { toastr.error(err); return false; } } /** * 表单检测 */ function checkUserForm(status) { try { if (status === 'add') { if ($('#add-user input[name="account_group"]').val() == 0) { throw '请选择账号组'; } if ($('#add-user input[name="account"]').val() == '' || $('#add-user input[name="account"]').hasClass('is-invalid')) { throw '账号不能为空或已存在'; } if ($('#add-user input[name="password"]').val() == '' || $('#add-user input[name="password"]').val().length < 6) { throw '密码不能为空或不能小于6位'; } if (!/^[0-9a-zA-Z*~!@&%$^\\(\\)#_\[\]\-\+={}|?'":,<>.`]+$/.test($('#add-user input[name="password"]').val())) { throw '密码只支持英文数字及符号'; } // 判断新密码的强度 const reg = /^(?![0-9]+$)(?![a-zA-Z]+$).{6,16}$/; if (!reg.test($('#add-user input[name="password"]').val())) { throw '请设置至少包含数字和字母的密码'; } if ($('#add-user input[name="name"]').val() == '') { throw '姓名不能为空'; } if (_.findIndex(unitList, { name: $('#add-user select[name="company"]').val() }) === -1) { throw '请选择单位名称'; } if ($('#add-user input[name="role"]').val() == '') { throw '职位名称不能为空'; } $('#add-user input[name="account"]').val(trimInvalidChar($('#add-user input[name="account"]').val())); $('#add-user input[name="name"]').val(trimInvalidChar($('#add-user input[name="name"]').val())); // $('#add-user input[name="company"]').val(trimInvalidChar($('#add-user input[name="company"]').val())); $('#add-user input[name="role"]').val(trimInvalidChar($('#add-user input[name="role"]').val())); $('#add-user input[name="telephone"]').val(trimInvalidChar($('#add-user input[name="telephone"]').val())); } else { if ($('#edit-user input[name="account_group"]').val() == 0) { throw '请选择账号组'; } if ($('#edit-user input[name="account"]').val() == '' || $('#add-user input[name="account"]').hasClass('is-invalid')) { throw '账号不能为空或已存在'; } if ($('#edit-user input[name="name"]').val() == '') { throw '姓名不能为空'; } if (_.findIndex(unitList, { name: $('#edit-user select[name="company"]').val() }) === -1) { throw '请选择单位名称'; } if ($('#edit-user input[name="role"]').val() == '') { throw '职位名称不能为空'; } $('#edit-user input[name="account"]').val(trimInvalidChar($('#edit-user input[name="account"]').val())); $('#edit-user input[name="name"]').val(trimInvalidChar($('#edit-user input[name="name"]').val())); // $('#edit-user input[name="company"]').val(trimInvalidChar($('#edit-user input[name="company"]').val())); $('#edit-user input[name="role"]').val(trimInvalidChar($('#edit-user input[name="role"]').val())); $('#edit-user input[name="telephone"]').val(trimInvalidChar($('#edit-user input[name="telephone"]').val())); } } catch (err) { toastr.error(err); return false; } } /** * 表单检测 */ function checkUnitForm() { try { if ($('#add-company input[name="name"]').val() == '') { throw '单位名称不能为空'; } if ($('#add-company select[name="type"]').val() == 0) { throw '请选择类型'; } // 检测同名 if (_.findIndex(unitList, { name: $('#add-company input[name="name"]').val() }) !== -1) { throw '已存在对应的单位名称'; } } catch (err) { toastr.error(err); return false; } } /** * 随机密码(必须包含数字和字母) */ function randPassword() { const result = []; // 随机6-10位 const length = Math.ceil(Math.random() * 2 + 6); let numberSeed = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]; let stringSeed = ['A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M', 'N', 'O', 'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W', 'X', 'Y', 'Z', 'a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l', 'm', 'n', 'o', 'p', 'q', 'r', 's', 't', 'u', 'v', 'w', 'x', 'y', 'z']; const numRan = numberSeed[Math.floor((Math.random() * numberSeed.length))]; const strRan = stringSeed[Math.floor((Math.random() * stringSeed.length))]; const randSeed = stringSeed.concat(numberSeed); const seedLength = randSeed.length - 1; for (let i = 0; i < length; i++) { const index = Math.ceil(Math.random() * seedLength); result.push(randSeed[index]); } result.splice(Math.floor((Math.random() * result.length)), 0, numRan); result.splice(Math.floor((Math.random() * result.length)), 0, strRan); return result.join(''); }