598 lines
20 KiB
JavaScript
598 lines
20 KiB
JavaScript
//ajax封装
|
||
function ajaxR(url, type, data, otherParam, successCallback, errorCallback) {
|
||
let {dataType="json", async=true, isHandoverLang=1} = otherParam;
|
||
$.ajax({
|
||
url: url,
|
||
type: type,
|
||
data: data,
|
||
dataType: dataType, // 假设我们处理的数据类型为JSON
|
||
async:async,
|
||
beforeSend: function(xhr) {
|
||
// 在这里可以处理请求前的逻辑,例如显示加载动画
|
||
if(isHandoverLang == 1){//切换语言保存
|
||
let isAllowed = handoverLang();
|
||
if(!isAllowed){
|
||
// 不发送请求,中止
|
||
foxui.message({
|
||
type: 'danger',
|
||
text: "语言切换失败,防止数据混乱,请刷新页面后再操作!"
|
||
})
|
||
xhr.abort(); // 或者返回 false;
|
||
}
|
||
}
|
||
},
|
||
success: function(response) {
|
||
// 请求成功后的处理逻辑
|
||
console.log('请求成功,处理数据...');
|
||
if (successCallback && typeof successCallback === 'function') {
|
||
successCallback(response);
|
||
}
|
||
},
|
||
error: function(xhr, status, error) {
|
||
// 请求失败的处理逻辑
|
||
console.log('请求失败,处理错误...');
|
||
if (errorCallback && typeof errorCallback === 'function') {
|
||
errorCallback(xhr, status, error);
|
||
}else{
|
||
foxui.message({
|
||
type: 'warning',
|
||
text: "操作失败"
|
||
})
|
||
}
|
||
},
|
||
complete: function() {
|
||
// 请求完成后的处理逻辑,无论成功或失败都会执行
|
||
console.log('请求完成的处理...');
|
||
}
|
||
});
|
||
}
|
||
|
||
//当前显示语言
|
||
function handoverLang() {
|
||
let showLang = $(".lang-select button").attr('data-lang');
|
||
let isChange = false;
|
||
if ($(".lang-select button").hasClass('display-none')) {
|
||
isChange = true;
|
||
} else {
|
||
$.ajax({
|
||
type: "post",
|
||
url: HANDOVER_LANG_PATH,
|
||
dataType: "json",
|
||
data: {"lang":showLang},
|
||
async:false,
|
||
success: function (res) {
|
||
if(res.code == 1){
|
||
isChange = true;
|
||
}
|
||
}, error: function (res) {
|
||
}
|
||
});
|
||
}
|
||
return isChange;
|
||
}
|
||
|
||
//语言切换
|
||
function langHandover(obj) {
|
||
let lang = $(obj).attr('data-lang');
|
||
foxui.loading();
|
||
$.ajax({
|
||
type: "post",
|
||
url: HANDOVER_LANG_PATH,
|
||
dataType: "json",
|
||
data: {"lang":lang},
|
||
success: function (res) {
|
||
foxui.closeLoading();
|
||
if(res.code == 1){
|
||
let langName = "";
|
||
if(res.data){
|
||
langName = res.data.name;
|
||
}
|
||
foxui.message({
|
||
type: 'success',
|
||
text: "当前语言已切换成“"+langName+"”"
|
||
})
|
||
window.location.href= ADMIN_PATH+"/Index";
|
||
}else{
|
||
foxui.message({
|
||
type: 'danger',
|
||
text:res.msg
|
||
})
|
||
}
|
||
}, error: function (res) {
|
||
foxui.closeLoading();
|
||
}
|
||
});
|
||
}
|
||
|
||
|
||
//获取栏目或者模型的自定义属性值
|
||
function getField(obj, url) {
|
||
let saveData = {};
|
||
//拉取栏目属性
|
||
$.ajax({
|
||
type: 'get',
|
||
url: url,
|
||
dataType: 'json',
|
||
async: false,
|
||
success: function (res) {
|
||
if (res.code == 1 && res.data) {
|
||
let data = res.data;
|
||
data.forEach((item, index) => {
|
||
let cn = '.' + item.name;
|
||
let itemC = $(obj).find(cn);
|
||
if (item.dtype == 'radio') {
|
||
//单选
|
||
let rinput = $(itemC).find('.foxui-radio.is-checked').find('input');
|
||
saveData[item.name] = $(rinput).val()||"";
|
||
} else if (item.dtype == 'checkbox') {
|
||
//多选项
|
||
let dxx = '';
|
||
let fcs = $(itemC).find('.foxui-checkbox.is-checked');
|
||
$.each(fcs, function (key, value) {
|
||
//遍历多选值
|
||
let ri = $(value).find('input');
|
||
dxx += $(ri).val() + ',';
|
||
});
|
||
if (dxx.length > 0) {
|
||
dxx = dxx.substr(0, dxx.length - 1);
|
||
}
|
||
saveData[item.name] = dxx;
|
||
} else if (item.dtype == 'switch') {
|
||
//开关
|
||
saveData[item.name] = $(itemC).prop('checked')?1:0;
|
||
} else if (item.dtype == 'htmltext') {
|
||
//HTML文本
|
||
saveData[item.name] = getRTtContent(item.name);
|
||
} else if (item.dtype == 'select') {
|
||
//下拉框
|
||
saveData[item.name] = $(itemC).attr('data-id')||"";
|
||
} else if (item.dtype == 'datetime') {
|
||
//日期和时间
|
||
saveData[item.name] = $(itemC).val()||"";
|
||
} else if (item.dtype == 'int') {
|
||
//整数类型
|
||
saveData[item.name] = $(itemC).val()||"";
|
||
} else if (item.dtype == 'text') {
|
||
//单行文本
|
||
saveData[item.name] = $(itemC).val()||"";
|
||
} else if (item.dtype == 'multitext') {
|
||
//多行文本
|
||
saveData[item.name] = $(itemC).val()||"";
|
||
} else if (item.dtype == 'color') {
|
||
//颜色
|
||
saveData[item.name] = $(itemC).val()||"";
|
||
} else if (item.dtype == 'pic') {
|
||
//图片文件
|
||
let imgIds = '';
|
||
let imgs = $(itemC).find('img');
|
||
$.each(imgs, function (key, value) {
|
||
//遍历多选值
|
||
// let imgId = $(value).attr("data-id");
|
||
let imgId = $(value).attr('src');
|
||
imgIds += imgId + ',';
|
||
});
|
||
if (imgIds.length > 0) {
|
||
imgIds = imgIds.substr(0, imgIds.length - 1);
|
||
}
|
||
saveData[item.name] = imgIds||"";
|
||
} else if (item.dtype == 'pics') {
|
||
//图片文件
|
||
let imgSrcs = '';
|
||
let imgs = $(itemC).find('img');
|
||
$.each(imgs, function (key, value) {
|
||
//遍历多选值
|
||
let imgSrc = $(value).attr('src');
|
||
imgSrcs += imgSrc + ',';
|
||
});
|
||
if (imgSrcs.length > 0) {
|
||
imgSrcs = imgSrcs.substr(0, imgSrcs.length - 1);
|
||
}
|
||
saveData[item.name] = imgSrcs||"";
|
||
}else if (item.dtype == 'media') {//媒体
|
||
//媒体文件
|
||
let lis = $(itemC).find('li');
|
||
let videos = [];
|
||
$.each(lis, function (key, li) {
|
||
let videoId = $(li).find("img").attr('data-id');
|
||
let url = $(li).find("img").attr('data-url');
|
||
let pic = $(li).find("img").attr('src');
|
||
let videoTitle = $(li).find("input").val();
|
||
videos.push({"id":videoId, "title": videoTitle, "url":url, pic});
|
||
});
|
||
saveData[item.name] = JSON.stringify(videos);
|
||
}
|
||
else if (item.dtype == 'decimal') {
|
||
//金额类型
|
||
saveData[item.name] = $(itemC).val()||"";
|
||
} else if (item.dtype == 'float') {
|
||
//小数类型
|
||
saveData[item.name] = $(itemC).val()||"";
|
||
}else{
|
||
//普通的input标签,varchar字段获取
|
||
saveData[item.name] = $(itemC).val()||"";
|
||
}
|
||
});
|
||
}
|
||
},
|
||
error: function (res) {
|
||
console.log('字段属性。。。。');
|
||
},
|
||
});
|
||
return saveData;
|
||
}
|
||
|
||
/**
|
||
* 根据字典类型获取对应字典数据(dict_data查询)
|
||
* @param dictType 字典类型
|
||
* @param dictType $resultField 返回的字段 如 dict_label,dict_value
|
||
*/
|
||
function getColumModels() {
|
||
let dictDatas = [];
|
||
$.ajax({
|
||
type: 'get',
|
||
// url: ADMIN_PATH + '/Column/getColumModels',
|
||
url: GETCOLUMMODELS_PATH,
|
||
dataType: 'json',
|
||
async: false,
|
||
success: function (res) {
|
||
if (res.code == 1 && res.data) {
|
||
dictDatas = res.data;
|
||
}
|
||
},
|
||
error: function (res) {
|
||
console.log('查询字典失败。。。。');
|
||
},
|
||
});
|
||
return dictDatas;
|
||
}
|
||
|
||
function dialogContent() {
|
||
return `
|
||
<div class="input-box" style="padding: 0 40px;">
|
||
<div class="foxui-input-group" style="margin-bottom: 20px">
|
||
<div class="foxui-align-right" style="width: 110px;">
|
||
<label class="foxui-required" >原密码:</label>
|
||
</div>
|
||
<div class="foxui-input-suffix">
|
||
<input name="opassword" type="password" placeholder="请输入原密码" value="" />
|
||
<i class="foxui-suffix-icon foxui-suffix-count"></i>
|
||
</div>
|
||
</div>
|
||
<div class="foxui-input-group" style="margin-bottom: 20px">
|
||
<div class="foxui-align-right" style="width: 110px;">
|
||
<label class="foxui-required">新密码:</label>
|
||
</div>
|
||
<div class="foxui-input-suffix">
|
||
<input type="password" name="password" placeholder="请输入密码" value=""/>
|
||
<i class="foxui-icon-xianshi-o foxui-suffix-icon foxui-suffix-password"></i>
|
||
</div>
|
||
</div>
|
||
<div class="foxui-input-group" style="margin-bottom: 20px">
|
||
<div class="foxui-align-right" style="width: 110px;">
|
||
<label class="foxui-required">确认新密码:</label>
|
||
</div>
|
||
<div class="foxui-input-suffix">
|
||
<input type="password" name="apassword" placeholder="再次请输入密码" value=""/>
|
||
<i class="foxui-icon-xianshi-o foxui-suffix-icon foxui-suffix-password"></i>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
`;
|
||
}
|
||
|
||
//密码校验
|
||
function isPwd(password){
|
||
let re =/^(?![a-zA-Z]+$)(?![A-Z0-9]+$)(?![A-Z\W_]+$)(?![a-z0-9]+$)(?![a-z\W_]+$)(?![0-9\W_]+$)[a-zA-Z0-9\W_]{8,}$/;
|
||
let result = re.test(password);
|
||
if(!result) {
|
||
return false;
|
||
}else {
|
||
return true;
|
||
}
|
||
};
|
||
|
||
//修改密码
|
||
function modifyPasword() {
|
||
foxui.dialog({
|
||
title: '修改密码',
|
||
content: dialogContent(),
|
||
confirmText: '确定',
|
||
cancelText: '取消',
|
||
width: '620px',
|
||
confirm: function (callback) {
|
||
let opassword = $('.input-box input[name="opassword"]').val();
|
||
let password = $('.input-box input[name="password"]').val();
|
||
let apassword = $('.input-box input[name="apassword"]').val();
|
||
if(opassword == undefined || opassword == ""){
|
||
foxui.message({
|
||
type:'warning',
|
||
text:'原密码不能为空'
|
||
})
|
||
return;
|
||
}
|
||
if(password == undefined || password == ""){
|
||
foxui.message({
|
||
type:'warning',
|
||
text:'新密码不能为空'
|
||
})
|
||
return;
|
||
}
|
||
if(!isPwd(password)){
|
||
foxui.message({
|
||
type:'warning',
|
||
text:'密码必须包含数字、大小写字母、特殊字符中至少3种,且不少于8位'
|
||
})
|
||
return;
|
||
}
|
||
if(password != apassword){
|
||
foxui.message({
|
||
type:'warning',
|
||
text:'两次输入密码不相同'
|
||
})
|
||
return;
|
||
}
|
||
|
||
let datas ={opassword, password, apassword};
|
||
$.ajax({
|
||
type: "post",
|
||
// url: ADMIN_PATH + '/admin/updatePassword',
|
||
url: ADMINUPDATEPASSWORD_PATH,
|
||
dataType: "json",
|
||
data: datas,
|
||
success: function (res) {
|
||
if (res.code == 1) {
|
||
foxui.message({
|
||
type:'success',
|
||
text:res.msg
|
||
})
|
||
window.location.href = document.referrer;//返回并且刷新
|
||
} else {
|
||
foxui.message({
|
||
type:'warning',
|
||
text:res.msg
|
||
})
|
||
}
|
||
}, error: function (res) {
|
||
foxui.message({
|
||
type:'warning',
|
||
text:res.msg
|
||
})
|
||
}
|
||
});
|
||
callback();
|
||
},
|
||
cancel: function () {
|
||
console.log('取消');
|
||
},
|
||
});
|
||
}
|
||
|
||
//清除缓存
|
||
function clearCache() {
|
||
|
||
foxui.loading();
|
||
$.ajax({
|
||
type: "post",
|
||
// url: ADMIN_PATH + '/Login/clearCache',
|
||
url: LOGINCLEARCACHE_PATH,
|
||
dataType: "json",
|
||
success: function (res) {
|
||
foxui.closeLoading();
|
||
if (res.code == 1) {
|
||
foxui.message({
|
||
type:'success',
|
||
text:res.msg
|
||
})
|
||
} else {
|
||
foxui.message({
|
||
type:'warning',
|
||
text: res.msg
|
||
})
|
||
}
|
||
}, error: function (res) {
|
||
foxui.closeLoading();
|
||
foxui.message({
|
||
type:'warning',
|
||
text: res.msg
|
||
})
|
||
}
|
||
});
|
||
}
|
||
|
||
|
||
|
||
$('.dropdown')
|
||
.find('ul')
|
||
.children('li')
|
||
.on('click', function () {
|
||
let user = localStorage.getItem('user') ? JSON.parse(localStorage.getItem('user')) : '';
|
||
let operationId = $(this).attr('data-id');
|
||
if (operationId == 1) {
|
||
//个人中心
|
||
// window.location.href = ADMIN_PATH + `/Admin/edit?id=${user.id}&type=1&columnId=8`;
|
||
window.location.href = ADMINEDIT_PATH + `?id=${user.id}&type=1&columnId=8`;
|
||
|
||
} else if (operationId == 2) {
|
||
//修改密码
|
||
modifyPasword();
|
||
} else if (operationId == 3) {
|
||
//更新缓存
|
||
clearCache();
|
||
} else if (operationId == 5) {
|
||
// 退出系统
|
||
logout()
|
||
}
|
||
});
|
||
|
||
$(".foxcms-logo").on('click', function () {
|
||
// window.location.href = ADMIN_PATH;
|
||
})
|
||
|
||
$(".foxcms-logo").hover(function () {
|
||
// this.style.cursor = 'pointer';
|
||
})
|
||
$(".item.icon").hover(function () {
|
||
this.style.cursor = 'pointer';
|
||
})
|
||
//跳转到前段index
|
||
$(".index").on('click', function () {
|
||
window.open(SERVER_URL);
|
||
})
|
||
|
||
|
||
//图片集默认值控制开始
|
||
//初始化
|
||
let dtype = $('.dtype .foxui-radio.is-checked input').val();
|
||
disabledDefault(dtype);
|
||
$('.dtype .foxui-radio').on("click", function () {
|
||
let dtype = $(this).find("input").val();
|
||
disabledDefault(dtype);
|
||
})
|
||
|
||
//禁用启用默认值
|
||
function disabledDefault(dtype){
|
||
if((dtype == "pics") || (dtype=="media")){
|
||
$('textarea[name="dfvalue"]').attr("disabled", "disabled");
|
||
$('textarea[name="dfvalue"]').val("");
|
||
}else{
|
||
$('textarea[name="dfvalue"]').removeAttr("disabled");
|
||
}
|
||
}
|
||
//图片集默认值控制结束
|
||
|
||
//判断是否已英文字母开头
|
||
function letterBegin(str){
|
||
return /^[a-z]/.test(str);
|
||
}
|
||
|
||
//时间间隔
|
||
function myrefresh() {
|
||
window.location.reload();
|
||
}
|
||
|
||
function logout() {
|
||
localStorage.clear();
|
||
// window.location.href= ADMIN_PATH + "/Login/logout";
|
||
window.location.href= LOGOUT_PATH;
|
||
}
|
||
|
||
|
||
//进度条
|
||
function dialogSiteContent() {
|
||
return `
|
||
<div class="input-box" style="padding: 0 40px;">
|
||
<div id="progress"></div>
|
||
<div style="text-align: center" class="foxui-margin-top-8">
|
||
<p>成功生成栏目:<span id="columnId"></span></p>
|
||
<p class="display-none" id="errTip">失败生成栏目:<span id="errColumnId" style="color: red"></span></p>
|
||
</div>
|
||
</div>
|
||
`;
|
||
}
|
||
|
||
let progressObj = null;
|
||
//循环生成静态html
|
||
function dialogSite(params) {
|
||
$.ajax({
|
||
type: "post",
|
||
// url: ADMIN_PATH + "/Seo/allSite",
|
||
url: SEOALLSITE_PATH,
|
||
dataType: "json",
|
||
data: params,
|
||
success: function (res) {
|
||
if(res.code == 1){
|
||
if(res.data == ""){
|
||
foxui.message({
|
||
type: 'success',
|
||
text: res.msg
|
||
})
|
||
progressObj.update(100);
|
||
}else{
|
||
dialogSite(res.data);
|
||
let maxUpdate = (res.data.index/res.data.buildCount)*100;
|
||
if(maxUpdate >= 100){
|
||
maxUpdate = 99;
|
||
}
|
||
let updateIndex = Math.round(maxUpdate);
|
||
progressObj.update(updateIndex);
|
||
$("#columnId").html(res.data.columnId)
|
||
}
|
||
}else{
|
||
foxui.message({
|
||
type: 'warning',
|
||
text: res.msg
|
||
})
|
||
$("#errTip").removeClass("display-none");
|
||
$("#errColumnId").html(res.msg);
|
||
}
|
||
}, error: function (res) {
|
||
foxui.message({
|
||
type: 'warning',
|
||
text: "操作失败"
|
||
})
|
||
}
|
||
});
|
||
}
|
||
|
||
|
||
/**
|
||
* 生成
|
||
* @param params
|
||
*/
|
||
function allSite(params){
|
||
foxui.dialog({
|
||
title: '生成静态文件',
|
||
content: dialogSiteContent(),
|
||
width: '620px',
|
||
});
|
||
progressObj = foxui.progress({
|
||
el: '#progress',
|
||
percent: params.index,
|
||
strokeWidth: 16,
|
||
textInside: true,
|
||
});
|
||
dialogSite(params);
|
||
}
|
||
|
||
/**
|
||
* 单独静态生成
|
||
* @param params
|
||
*/
|
||
function addDataBuildDetail(params){
|
||
$.ajax({
|
||
type: "post",
|
||
url: SEOADDDATABUILDDETAIL_PATH,
|
||
dataType: "json",
|
||
data: params,
|
||
async:false,
|
||
success: function (res) {
|
||
|
||
}, error: function (res) {
|
||
}
|
||
});
|
||
}
|
||
|
||
/**
|
||
*
|
||
* 单独静态栏目生成
|
||
*/
|
||
function singleAllSite(params){
|
||
$.ajax({
|
||
type: "post",
|
||
url: SINGLEALLSITE_PATH,
|
||
dataType: "json",
|
||
data: params,
|
||
async:false,
|
||
success: function (res) {
|
||
if(res.code == 1){
|
||
if(res.data == ""){
|
||
}else{
|
||
singleAllSite(res.data);
|
||
}
|
||
}
|
||
|
||
}, error: function (res) {
|
||
}
|
||
});
|
||
}
|