265 lines
8.7 KiB
JavaScript
265 lines
8.7 KiB
JavaScript
|
/*
|
|||
|
* @Descripttion : 通用js
|
|||
|
* @Author : liuzhifang
|
|||
|
* @Date : 2022-06-02 13:42:45
|
|||
|
* @LastEditors : Please set LastEditors
|
|||
|
* @LastEditTime : 2022-12-24 00:18:35
|
|||
|
*/
|
|||
|
|
|||
|
// 导航服务和消息
|
|||
|
foxui.tooltip({
|
|||
|
el: '#barService',
|
|||
|
content: barServiceHtml(),
|
|||
|
className: 'bar-service-container',
|
|||
|
width: '324px',
|
|||
|
});
|
|||
|
foxui.tooltip({
|
|||
|
el: '#barBell',
|
|||
|
content: barBellHtml(),
|
|||
|
className: 'bar-bell-container',
|
|||
|
effect: 'light',
|
|||
|
width: '330px',
|
|||
|
});
|
|||
|
|
|||
|
// 导航折叠功能
|
|||
|
$('.foxcms-menu-nav-fold').on('click', function () {
|
|||
|
let $this = $(this),
|
|||
|
$icon = $this.find('i'),
|
|||
|
$inner = $('.foxcms-menu-nav-inner'),
|
|||
|
isRotate = $icon.is('.rotate');
|
|||
|
|
|||
|
if (isRotate) {
|
|||
|
$icon.removeClass('rotate');
|
|||
|
$inner.animate({ width: '148px' });
|
|||
|
} else {
|
|||
|
$icon.addClass('rotate');
|
|||
|
$inner.animate({ width: 0 });
|
|||
|
}
|
|||
|
});
|
|||
|
|
|||
|
// 根据窗口宽度判断是否折叠
|
|||
|
let foldTimer = null;
|
|||
|
$(window).on('resize', function () {
|
|||
|
if (foldTimer) {
|
|||
|
clearTimeout(foldTimer);
|
|||
|
foldTimer = null;
|
|||
|
}
|
|||
|
foldTimer = setTimeout(function () {
|
|||
|
let width = $(window).width(),
|
|||
|
$fold = $('.foxcms-menu-nav-fold'),
|
|||
|
$icon = $fold.find('i'),
|
|||
|
$inner = $('.foxcms-menu-nav-inner'),
|
|||
|
isRotate = $icon.is('.rotate');
|
|||
|
|
|||
|
if (width < 1440) {
|
|||
|
if (!isRotate) {
|
|||
|
$icon.addClass('rotate');
|
|||
|
$inner.animate({ width: 0 });
|
|||
|
}
|
|||
|
} else {
|
|||
|
if (isRotate) {
|
|||
|
$icon.removeClass('rotate');
|
|||
|
$inner.animate({ width: '148px' });
|
|||
|
}
|
|||
|
}
|
|||
|
|
|||
|
clearTimeout(foldTimer);
|
|||
|
foldTimer = null;
|
|||
|
}, 300);
|
|||
|
});
|
|||
|
|
|||
|
// 收起/展开所有导航
|
|||
|
$('.foxcms-menu-expand-all i').on('click', function () {
|
|||
|
let $container = $('.foxui-menu.foxui-type-vertical'),
|
|||
|
$this = $(this),
|
|||
|
isActive = $this.is('.is-active');
|
|||
|
|
|||
|
if (isActive) {
|
|||
|
let $openHandle = $container.find('.foxui-menu-handle.is-active');
|
|||
|
$openHandle.click();
|
|||
|
$this.removeClass('is-active');
|
|||
|
} else {
|
|||
|
let $foldHandle = $container.find('.foxui-menu-handle:not(.is-active)');
|
|||
|
$foldHandle.click();
|
|||
|
$this.addClass('is-active');
|
|||
|
}
|
|||
|
});
|
|||
|
|
|||
|
// 根据折叠转换全部折叠按钮状态
|
|||
|
$(document).on('click', '.foxui-menu.foxui-type-vertical .foxui-menu-handle', function () {
|
|||
|
let count = $('.foxui-menu.foxui-type-vertical .foxui-menu-handle').length,
|
|||
|
openLen = $('.foxui-menu.foxui-type-vertical .foxui-menu-handle.is-active').length;
|
|||
|
if (count === openLen) {
|
|||
|
$('.foxcms-menu-expand-all i').addClass('is-active');
|
|||
|
} else {
|
|||
|
$('.foxcms-menu-expand-all i').removeClass('is-active');
|
|||
|
}
|
|||
|
});
|
|||
|
|
|||
|
// 表单字段调用
|
|||
|
$(document).on('click', '.call-field .foxui-tag', function () {
|
|||
|
const text = $(this).text(),
|
|||
|
el = document.createElement('input');
|
|||
|
|
|||
|
el.value = text;
|
|||
|
el.setAttribute('readonly', '');
|
|||
|
el.style.position = 'absolute';
|
|||
|
el.style.opacity = 0;
|
|||
|
document.body.appendChild(el);
|
|||
|
el.select();
|
|||
|
document.execCommand('copy');
|
|||
|
document.body.removeChild(el);
|
|||
|
|
|||
|
foxui.message({ text: '已复制到剪贴板' });
|
|||
|
});
|
|||
|
|
|||
|
// 右侧浮动预览模板
|
|||
|
$('.web-image-view .content-box .main-part').on('mouseover', function () {
|
|||
|
const viewHeight = $(this).height();
|
|||
|
const imgHeight = $(this).find('img').height();
|
|||
|
const mValue = viewHeight - imgHeight;
|
|||
|
$(this)
|
|||
|
.find('img')
|
|||
|
.css('marginTop', mValue + 'px');
|
|||
|
});
|
|||
|
|
|||
|
$('.web-image-view .content-box .main-part').on('mouseout', function () {
|
|||
|
$(this).find('img').css('marginTop', 0);
|
|||
|
});
|
|||
|
|
|||
|
/* bar -> html
|
|||
|
*****************************************************************************************************/
|
|||
|
function barServiceHtml() {
|
|||
|
return [
|
|||
|
'<div class="bar-service-content">',
|
|||
|
'<div class="top">',
|
|||
|
'<div class="foxui-row foxui-gutter-0">',
|
|||
|
'<div class="foxui-col-xs-8 foxui-col-sm-8">',
|
|||
|
'<a class="col-inter" href="#">',
|
|||
|
'<i class="foxui-icon-weixiao-f"></i>',
|
|||
|
'<span>建议留言</span>',
|
|||
|
'</a>',
|
|||
|
'</div>',
|
|||
|
'<div class="foxui-col-xs-8 foxui-col-sm-8">',
|
|||
|
'<a class="col-inter" href="#">',
|
|||
|
'<i class="foxui-icon-QQ-f"></i>',
|
|||
|
'<span>QQ客服</span>',
|
|||
|
'</a>',
|
|||
|
'</div>',
|
|||
|
'<div class="foxui-col-xs-8 foxui-col-sm-8">',
|
|||
|
'<a class="col-inter" href="#">',
|
|||
|
'<i class="foxui-icon-hezuo-f"></i>',
|
|||
|
'<span>代理加盟</span>',
|
|||
|
'</a>',
|
|||
|
'</div>',
|
|||
|
'</div>',
|
|||
|
'</div>',
|
|||
|
'<div class="bottom">',
|
|||
|
'<div class="foxui-row foxui-gutter-6 foxui-align-items-center">',
|
|||
|
'<div class="foxui-col-xs-10 foxui-col-sm-10">',
|
|||
|
'<div class="col-inter img-box">',
|
|||
|
'<img src="'+STATIC_PATH+'images/service_qr_code.jpg"/>',
|
|||
|
'</div>',
|
|||
|
'</div>',
|
|||
|
'<div class="foxui-col-xs-14 foxui-col-sm-14">',
|
|||
|
'<div class="col-inter">',
|
|||
|
'<p>扫码联系官方客服</p>',
|
|||
|
'<p>提供线上咨询</p>',
|
|||
|
'<h3><i class="foxui-icon-dianhua-o"></i><span>400-888-3116</span></h3>',
|
|||
|
'</div>',
|
|||
|
'</div>',
|
|||
|
'</div>',
|
|||
|
'</div>',
|
|||
|
'</div>',
|
|||
|
].join('');
|
|||
|
}
|
|||
|
|
|||
|
function barBellHtml() {
|
|||
|
return [
|
|||
|
'<div class="bar-bell-content">',
|
|||
|
'<div class="head">',
|
|||
|
'<h2>系统消息</h2>',
|
|||
|
'</div>',
|
|||
|
'<div class="content">',
|
|||
|
'<a class="img-box" href="#">',
|
|||
|
'<img src="'+STATIC_PATH+'images/join.png"/>',
|
|||
|
'</a>',
|
|||
|
'<ul class="message-list">',
|
|||
|
'<li class="message-item">',
|
|||
|
'<a class="foxui-link" href="#">',
|
|||
|
'<span>功能更新 (2022年8月第2期)</span>',
|
|||
|
'<i class="foxui-icon-arrow-right"></i>',
|
|||
|
'</a>',
|
|||
|
'</li>',
|
|||
|
'<li class="message-item">',
|
|||
|
'<a class="foxui-link" href="#">',
|
|||
|
'<span>功能更新 (2022年8月第2期)</span>',
|
|||
|
'<i class="foxui-icon-arrow-right"></i>',
|
|||
|
'</a>',
|
|||
|
'</li>',
|
|||
|
'<li class="message-item">',
|
|||
|
'<a class="foxui-link" href="#">',
|
|||
|
'<span>功能更新 (2022年8月第2期)</span>',
|
|||
|
'<i class="foxui-icon-arrow-right"></i>',
|
|||
|
'</a>',
|
|||
|
'</li>',
|
|||
|
'</ul>',
|
|||
|
'</div>',
|
|||
|
'</div>',
|
|||
|
].join('');
|
|||
|
}
|
|||
|
|
|||
|
// 标签调用 html
|
|||
|
function _callHtml(dataObj) {
|
|||
|
return [
|
|||
|
'<div class="edit-model-call-dialog">',
|
|||
|
'<div class="foxui-input-group foxui-vertical">',
|
|||
|
'<label>首页调用:</label>',
|
|||
|
`<input class="foxui-size-small" readOnly placeholder="" value="${dataObj.index}" />`,
|
|||
|
'</div>',
|
|||
|
'<div class="foxui-input-group foxui-vertical margin-top-32">',
|
|||
|
'<label>列表页调用:</label>',
|
|||
|
`<input class="foxui-size-small" readOnly placeholder="" value="${dataObj.list}" />`,
|
|||
|
'</div>',
|
|||
|
'<div class="foxui-input-group foxui-vertical margin-top-32">',
|
|||
|
'<label>列表页调用:</label>',
|
|||
|
`<input class="foxui-size-small" readOnly placeholder="" value="${dataObj.article}" />`,
|
|||
|
'</div>',
|
|||
|
'<div class="section-top-info margin-top-32">',
|
|||
|
'<p>请将相应标签复制并粘贴到对应模板文件中!</p>',
|
|||
|
'</div>',
|
|||
|
'</div>',
|
|||
|
].join('');
|
|||
|
}
|
|||
|
|
|||
|
// 校验颜色值是否合法
|
|||
|
function _CheckIsColor(bgVal) {
|
|||
|
let type = '';
|
|||
|
if (/^rgb\(/.test(bgVal)) {
|
|||
|
//如果是rgb开头,200-249,250-255,0-199
|
|||
|
type = '^[rR][gG][Bb][(]([\\s]*(2[0-4][0-9]|25[0-5]|[01]?[0-9][0-9]?)[\\s]*,){2}[\\s]*(2[0-4]\\d|25[0-5]|[01]?\\d\\d?)[\\s]*[)]{1}$';
|
|||
|
} else if (/^rgba\(/.test(bgVal)) {
|
|||
|
//如果是rgba开头,判断0-255:200-249,250-255,0-199 判断0-1:0 1 1.0 0.0-0.9
|
|||
|
type = '^[rR][gG][Bb][Aa][(]([\\s]*(2[0-4][0-9]|25[0-5]|[01]?[0-9][0-9]?)[\\s]*,){3}[\\s]*(1|1.0|0|0.[0-9])[\\s]*[)]{1}$';
|
|||
|
} else if (/^#/.test(bgVal)) {
|
|||
|
//六位或者三位
|
|||
|
type = '^#([0-9a-fA-F]{6}|[0-9a-fA-F]{3})$';
|
|||
|
} else if (/^hsl\(/.test(bgVal)) {
|
|||
|
//判断0-360 判断0-100%(0可以没有百分号)
|
|||
|
type = '^[hH][Ss][Ll][(]([\\s]*(2[0-9][0-9]|360|3[0-5][0-9]|[01]?[0-9][0-9]?)[\\s]*,)([\\s]*((100|[0-9][0-9]?)%|0)[\\s]*,)([\\s]*((100|[0-9][0-9]?)%|0)[\\s]*)[)]$';
|
|||
|
} else if (/^hsla\(/.test(bgVal)) {
|
|||
|
type = '^[hH][Ss][Ll][Aa][(]([\\s]*(2[0-9][0-9]|360|3[0-5][0-9]|[01]?[0-9][0-9]?)[\\s]*,)([\\s]*((100|[0-9][0-9]?)%|0)[\\s]*,){2}([\\s]*(1|1.0|0|0.[0-9])[\\s]*)[)]$';
|
|||
|
}
|
|||
|
if (!type || bgVal.match(new RegExp(type)) == null) {
|
|||
|
return false;
|
|||
|
} else {
|
|||
|
return true;
|
|||
|
}
|
|||
|
}
|
|||
|
|
|||
|
// 按钮形状单选
|
|||
|
$(document).on('click', '.button-radio .button-radio-item', function () {
|
|||
|
$(this).closest('.button-radio').find('.button-radio-item.is-active').removeClass('is-active');
|
|||
|
$(this).addClass('is-active');
|
|||
|
});
|