'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('');
}