565 lines
17 KiB
JavaScript
Executable File
565 lines
17 KiB
JavaScript
Executable File
$(".more-btn").click(function () {
|
||
if ($(".more-container").is(":hidden")) {
|
||
$(".more-container").removeClass('layui-hide'); //如果元素为隐藏,则将它显现
|
||
$(".more-btn").html('<i class="fa fa-angle-double-up"></i><span data-i18n="userlist.retract"></span>')
|
||
} else {
|
||
$(".more-container").addClass('layui-hide'); //如果元素为显现,则将其隐藏
|
||
$(".more-btn").html('<i class="fa fa-angle-double-down"></i><span data-i18n="userlist.expand"></span>')
|
||
}
|
||
return false;
|
||
})
|
||
function getQueryString(name) {
|
||
var reg = new RegExp("(^|&)" + name + "=([^&]*)(&|$)", "i");
|
||
var r = window.location.search.substr(1).match(reg);
|
||
if (r != null) return unescape(r[2]); return null;
|
||
}
|
||
/**
|
||
* 浏览页面顶部搜索框展开收回控制
|
||
*/
|
||
function toggleSearchFormShow()
|
||
{
|
||
let $ = layui.$;
|
||
let items = $('.top-search-from .layui-form-item');
|
||
if (items.length <= 2) {
|
||
if (items.length <= 1) $('.top-search-from').parent().parent().remove();
|
||
return;
|
||
}
|
||
let btns = $('.top-search-from .toggle-btn a');
|
||
let toggle = toggleSearchFormShow;
|
||
if (typeof toggle.hide === 'undefined') {
|
||
btns.on('click', function () {
|
||
toggle();
|
||
});
|
||
}
|
||
let countPerRow = parseInt($('.top-search-from').width()/$('.layui-form-item').width());
|
||
if (items.length <= countPerRow) {
|
||
return;
|
||
}
|
||
btns.removeClass('layui-hide');
|
||
toggle.hide = !toggle.hide;
|
||
if (toggle.hide) {
|
||
for (let i = countPerRow - 1; i < items.length - 1; i++) {
|
||
$(items[i]).hide();
|
||
}
|
||
return $('.top-search-from .toggle-btn a:last').addClass('layui-hide');
|
||
}
|
||
items.show();
|
||
$('.top-search-from .toggle-btn a:first').addClass('layui-hide');
|
||
}
|
||
|
||
layui.$(function () {
|
||
toggleSearchFormShow();
|
||
});
|
||
|
||
// 公共:上传loading 显示/隐藏(兼容 iframe,优先使用顶层 layer)
|
||
var uploadLoadingIndex = null;
|
||
var uploadLoadingLayerRef = null;
|
||
function showUploadLoading(){
|
||
try{
|
||
if(uploadLoadingIndex === null){
|
||
var layerRef = (typeof top !== 'undefined' && top.layui && top.layui.layer) ? top.layui.layer
|
||
: (typeof parent !== 'undefined' && parent.layui && parent.layui.layer) ? parent.layui.layer
|
||
: (typeof layui !== 'undefined' && layui.layer) ? layui.layer
|
||
: null;
|
||
if(layerRef){
|
||
uploadLoadingLayerRef = layerRef;
|
||
uploadLoadingIndex = layerRef.load(2, {shade: [0.2, '#000']});
|
||
}
|
||
}
|
||
}catch(e){}
|
||
}
|
||
function hideUploadLoading(){
|
||
try{
|
||
if(uploadLoadingIndex !== null && uploadLoadingLayerRef){
|
||
uploadLoadingLayerRef.close(uploadLoadingIndex);
|
||
uploadLoadingIndex = null;
|
||
uploadLoadingLayerRef = null;
|
||
}
|
||
}catch(e){}
|
||
}
|
||
|
||
function brandpresetfn(form,istrue){
|
||
self.brandpreset({
|
||
type:'get',
|
||
successCallBack: function(result){
|
||
$("#brand").empty();
|
||
if(istrue){
|
||
modelpresetfn(form,istrue,result.data[0].id)
|
||
}else{
|
||
$("#brand").append("<option value='' data-i18n='select'></option>")
|
||
}
|
||
$.each(result.data,function(){
|
||
$("#brand").append("<option value='"+this.id+"'>"+this.name+"</option>")
|
||
});
|
||
window.i18n.updatePageContent();
|
||
form.render();
|
||
|
||
},
|
||
failCallBack: function(result){
|
||
alert(result.message);
|
||
}
|
||
})
|
||
}
|
||
function modelpresetfn(form,istrue,id){
|
||
self.modelpreset({
|
||
type:'get',
|
||
data:{brand_id:id},
|
||
successCallBack: function(result){
|
||
$("#model").empty();
|
||
if(istrue){
|
||
|
||
}else{
|
||
$("#model").append("<option value='' data-i18n='select'></option>")
|
||
}
|
||
$.each(result.data,function(){
|
||
$("#model").append("<option value='"+this.id+"'>"+this.name+"</option>")
|
||
});
|
||
window.i18n.updatePageContent();
|
||
form.render();
|
||
|
||
},
|
||
failCallBack: function(result){
|
||
alert(result.message);
|
||
}
|
||
})
|
||
}
|
||
function typespresetfn(form,istrue){
|
||
self.typespreset({
|
||
type:'get',
|
||
successCallBack: function(result){
|
||
$("#vehicle_type").empty();
|
||
if(istrue){
|
||
|
||
}else{
|
||
$("#vehicle_type").append("<option value='' data-i18n='select'></option>")
|
||
}
|
||
$.each(result.data,function(){
|
||
$("#vehicle_type").append("<option value='"+this.id+"'>"+this.name+"</option>")
|
||
});
|
||
window.i18n.updatePageContent();
|
||
form.render();
|
||
|
||
},
|
||
failCallBack: function(result){
|
||
alert(result.message);
|
||
}
|
||
})
|
||
}
|
||
function energypresetfn(form,istrue){
|
||
self.energypreset({
|
||
type:'get',
|
||
successCallBack: function(result){
|
||
$("#vehicle_energy").empty();
|
||
if(istrue){
|
||
|
||
}else{
|
||
$("#vehicle_energy").append("<option value='' data-i18n='select'></option>")
|
||
}
|
||
$.each(result.data,function(){
|
||
$("#vehicle_energy").append("<option value='"+this.id+"'>"+this.name+"</option>")
|
||
});
|
||
window.i18n.updatePageContent();
|
||
form.render();
|
||
|
||
},
|
||
failCallBack: function(result){
|
||
alert(result.message);
|
||
}
|
||
})
|
||
}
|
||
function locationpresetfn(form,istrue){
|
||
self.locationpreset({
|
||
type:'get',
|
||
successCallBack: function(result){
|
||
$("#location").empty();
|
||
if(istrue){
|
||
|
||
}else{
|
||
$("#location").append("<option value='' data-i18n='select'></option>")
|
||
}
|
||
$.each(result.data,function(){
|
||
$("#location").append("<option value='"+this.id+"'>"+this.name+"</option>")
|
||
});
|
||
window.i18n.updatePageContent();
|
||
form.render();
|
||
|
||
},
|
||
failCallBack: function(result){
|
||
alert(result.message);
|
||
}
|
||
})
|
||
}
|
||
function seoselectfn(form,istrue){
|
||
self.seoselect({
|
||
type:'get',
|
||
successCallBack: function(result){
|
||
$("#page").empty();
|
||
if(istrue){
|
||
|
||
}else{
|
||
$("#page").append("<option value='' data-i18n='select'></option>")
|
||
}
|
||
$.each(result.data,function(){
|
||
$("#page").append("<option value='"+this.name+"'>"+this.value+"</option>")
|
||
});
|
||
window.i18n.updatePageContent();
|
||
form.render();
|
||
},
|
||
failCallBack: function(result){
|
||
alert(result.message);
|
||
}
|
||
})
|
||
}
|
||
//属性分类
|
||
function categoriespresetfn(form,istrue){
|
||
self.categoriespreset({
|
||
type:'get',
|
||
successCallBack: function(result){
|
||
$("#category_id").empty();
|
||
if(istrue){
|
||
|
||
}else{
|
||
$("#category_id").append("<option value='' data-i18n='select'></option>")
|
||
}
|
||
$.each(result.data,function(){
|
||
$("#category_id").append("<option value='"+this.id+"'>"+this.category_name+"</option>")
|
||
});
|
||
window.i18n.updatePageContent();
|
||
form.render();
|
||
},
|
||
failCallBack: function(result){
|
||
alert(result.message);
|
||
}
|
||
})
|
||
}
|
||
//属性
|
||
function attributespresetfn(form,istrue,context){
|
||
var $attributeSelect;
|
||
if (context) {
|
||
$attributeSelect = context.find(".attribute_id");
|
||
} else {
|
||
$attributeSelect = $(".attribute_id");
|
||
}
|
||
self.attributespreset({
|
||
type:'get',
|
||
successCallBack: function(result){
|
||
$attributeSelect.empty();
|
||
if(istrue){
|
||
|
||
}else{
|
||
$attributeSelect.append("<option data-img='' value='' data-i18n='select'></option>")
|
||
}
|
||
$.each(result.data,function(){
|
||
$attributeSelect.append("<option data-img='"+this.is_img+"' value='"+this.id+"'>"+this.attribute_name+"</option>")
|
||
});
|
||
window.i18n.updatePageContent();
|
||
form.render('select');
|
||
},
|
||
failCallBack: function(result){
|
||
alert(result.message);
|
||
}
|
||
})
|
||
}
|
||
function valuespresetfn(form,istrue,id,context){
|
||
var $valueSelect;
|
||
if (context) {
|
||
$valueSelect = context.find(".value_id");
|
||
} else {
|
||
$valueSelect = $(".value_id");
|
||
}
|
||
self.valuespreset({
|
||
type:'get',
|
||
data:{id:id},
|
||
successCallBack: function(result){
|
||
$valueSelect.empty();
|
||
if(istrue){
|
||
|
||
}else{
|
||
$valueSelect.append("<option value='' data-i18n='select'></option>")
|
||
}
|
||
$.each(result.data,function(){
|
||
$valueSelect.append("<option value='"+this.id+"'>"+this.value_name+"</option>")
|
||
});
|
||
window.i18n.updatePageContent();
|
||
form.render('select');
|
||
},
|
||
failCallBack: function(result){
|
||
alert(result.message);
|
||
}
|
||
})
|
||
}
|
||
|
||
// 添加
|
||
function addFeature(id,form,title,content,titlevalue1,contentvalue1,contentid) {
|
||
var index = $('#'+id+' .feature-item').length;
|
||
var titlevalue=titlevalue1?titlevalue1:''
|
||
var contentvalue=contentvalue1?contentvalue1:''
|
||
var contentids=contentid?contentid:''
|
||
var html = `
|
||
<div class="feature-item" style="margin-bottom: 15px; padding: 15px; border: 1px solid #e6e6e6; border-radius: 4px;">
|
||
<div class="layui-form-item">
|
||
<label class="layui-form-label" data-i18n="alls.title"></label>
|
||
<div class="layui-input-block">
|
||
<input type="text" name="title[${index}]" data-i18n-placeholder="alls.title_placeholder" value="${titlevalue}" class="layui-input">
|
||
<input type="hidden" name="idt[${index}]" value="${contentids}" />
|
||
</div>
|
||
</div>
|
||
<div class="layui-form-item">
|
||
<label class="layui-form-label" data-i18n="alls.content"></label>
|
||
<div class="layui-input-block">
|
||
<textarea name="content[${index}]" data-i18n-placeholder="alls.content_placeholder" class="layui-textarea" style="min-height: 80px;">${contentvalue}</textarea>
|
||
</div>
|
||
</div>
|
||
<div class="layui-input-block" style="margin-left: 0; text-align: right;">
|
||
<button type="button" class="layui-btn layui-btn-danger layui-btn-sm delete-feature">
|
||
<i class="layui-icon"></i><span data-i18n="btn.delete"></span>
|
||
</button>
|
||
</div>
|
||
</div>
|
||
`;
|
||
$('#'+id).append(html);
|
||
window.i18n.updatePageContent();
|
||
form.render();
|
||
}
|
||
function addFeature1(id,form,title,content,titlevalue1,contentvalue1,contentid) {
|
||
var index = $('#'+id+' .feature-item1').length;
|
||
var titlevalue=titlevalue1?titlevalue1:''
|
||
var contentvalue=contentvalue1?contentvalue1:''
|
||
var contentids=contentid?contentid:''
|
||
var html = `
|
||
<div class="feature-item1" style="margin-bottom: 15px; padding: 15px; border: 1px solid #e6e6e6; border-radius: 4px;">
|
||
<div class="layui-form-item">
|
||
<label class="layui-form-label" data-i18n="alls.problem"></label>
|
||
<div class="layui-input-block">
|
||
<input type="hidden" name="idp[${index}]" value="${contentids}" />
|
||
<input type="text" name="titlep[${index}]" data-i18n-placeholder="alls.problem_placeholder" value="${titlevalue}" class="layui-input">
|
||
</div>
|
||
</div>
|
||
<div class="layui-form-item">
|
||
<label class="layui-form-label" data-i18n="alls.answer"></label>
|
||
<div class="layui-input-block">
|
||
<textarea name="contentp[${index}]" data-i18n-placeholder="alls.answer_placeholder" class="layui-textarea" style="min-height: 80px;">${contentvalue}</textarea>
|
||
</div>
|
||
</div>
|
||
<div class="layui-input-block" style="margin-left: 0; text-align: right;">
|
||
<button type="button" class="layui-btn layui-btn-danger layui-btn-sm delete-feature">
|
||
<i class="layui-icon"></i><span data-i18n="btn.delete"></span>
|
||
</button>
|
||
</div>
|
||
</div>
|
||
`;
|
||
$('#'+id).append(html);
|
||
window.i18n.updatePageContent();
|
||
form.render();
|
||
}
|
||
function addIntro(id,form,content,contentvalue,contentid) {
|
||
var index = $('#'+id+' .intro-item').length;
|
||
var contentvalues = contentvalue?contentvalue:''
|
||
var contentids = contentid?contentid:''
|
||
var html = `
|
||
<div class="intro-item" style="margin-bottom: 15px; padding: 15px; border: 1px solid #e6e6e6; border-radius: 4px;">
|
||
<div class="layui-form-item">
|
||
<div class="layui-input-block" style="margin-left: 0;">
|
||
<input type="hidden" name="idc[${index}]" value="${contentids}" />
|
||
<textarea name="intro[${index}]" data-i18n-placeholder="alls.introduce_placeholder" class="layui-textarea" style="min-height: 100px;">${contentvalues}</textarea>
|
||
</div>
|
||
</div>
|
||
<div class="layui-input-block" style="margin-left: 0; text-align: right;">
|
||
<button type="button" class="layui-btn layui-btn-danger layui-btn-sm delete-intro">
|
||
<i class="layui-icon"></i><span data-i18n="btn.delete"></span>
|
||
</button>
|
||
</div>
|
||
</div>
|
||
`;
|
||
$('#'+id).append(html);
|
||
window.i18n.updatePageContent();
|
||
form.render();
|
||
}
|
||
function regroupIndexedFields(obj,arrKeyName = 'value') {
|
||
const value = [];
|
||
const rest = {};
|
||
|
||
Object.keys(obj).forEach(key => {
|
||
const match = key.match(/^(.+)\[(\d+)\]$/);
|
||
if (match) {
|
||
const field = match[1];
|
||
const idx = parseInt(match[2]);
|
||
if (!value[idx]) value[idx] = {};
|
||
value[idx][field] = obj[key];
|
||
} else {
|
||
rest[key] = obj[key];
|
||
}
|
||
});
|
||
// 动态设置 key
|
||
rest[arrKeyName] = value.filter(item => item !== undefined);
|
||
return rest;
|
||
}
|
||
function objentries(field,id,id2,name,value){
|
||
const banners = [];
|
||
let i = 0;
|
||
while (field[`${id}[${i}]`] !== undefined) {
|
||
var obj={};
|
||
obj[name] = field[`${id}[${i}]`]
|
||
obj[value] = field[`${id2}[${i}]`] || ""
|
||
banners.push(obj);
|
||
i++;
|
||
}
|
||
return banners;
|
||
}
|
||
function objentriesedt(field,id,id2,id3,name,value,idc){
|
||
const banners = [];
|
||
let i = 0;
|
||
while (field[`${id}[${i}]`] !== undefined) {
|
||
var obj={};
|
||
obj[name] = field[`${id}[${i}]`]
|
||
obj[value] = field[`${id2}[${i}]`] || ""
|
||
obj[idc] = field[`${id3}[${i}]`] || ""
|
||
banners.push(obj);
|
||
i++;
|
||
}
|
||
return banners;
|
||
}
|
||
function objentries1(field,id,name,cid){
|
||
const banners = [];
|
||
let i = 0;
|
||
while (field[`${id}[${i}]`] !== undefined) {
|
||
var obj={};
|
||
obj[name] = field[`${id}[${i}]`]
|
||
if(cid){
|
||
obj['id'] = field[`${cid}[${i}]`]
|
||
}
|
||
banners.push(obj);
|
||
i++;
|
||
}
|
||
return banners;
|
||
}
|
||
function transformDataall(obj){
|
||
const result = {};
|
||
for (const key in obj) {
|
||
if (!key.includes('[') && !key.includes(']')) {
|
||
result[key] = obj[key];
|
||
}
|
||
}
|
||
result['trait'] = objentries(obj,'title',"content",'title',"content")
|
||
result['asked'] = objentries(obj,'titlep',"contentp",'title',"content")
|
||
result['album'] = objentries(obj,'pic',"alt",'pic',"alt")
|
||
result['content'] = objentries1(obj,'intro',"content")
|
||
return result;
|
||
}
|
||
function transformDataalledt(obj,brand){
|
||
const result = {};
|
||
for (const key in obj) {
|
||
if (!key.includes('[') && !key.includes(']')) {
|
||
result[key] = obj[key];
|
||
}
|
||
}
|
||
if(brand){
|
||
result['traits'] = objentriesedt(obj,'title',"content","idt",'title',"content",'id')
|
||
result['banners'] = objentriesedt(obj,'pic',"alt","idimg",'pic',"alt",'id')
|
||
}else{
|
||
result['trait'] = objentriesedt(obj,'title',"content","idt",'title',"content",'id')
|
||
result['asked'] = objentriesedt(obj,'titlep',"contentp","idp",'title',"content",'id')
|
||
result['album'] = objentriesedt(obj,'pic',"alt","idimg",'pic',"alt",'id')
|
||
result['content'] = objentries1(obj,'intro',"content",'idc')
|
||
}
|
||
return result;
|
||
}
|
||
function transformData(originalData) {
|
||
// 提取 banners 数据
|
||
const banners = [];
|
||
let i = 0;
|
||
while (originalData[`pic[${i}]`] !== undefined) {
|
||
banners.push({
|
||
pic: originalData[`pic[${i}]`],
|
||
alt: originalData[`alt[${i}]`] || ""
|
||
});
|
||
i++;
|
||
}
|
||
|
||
// 提取 traits 数据
|
||
const traits = [];
|
||
let j = 0;
|
||
while (originalData[`title[${j}]`] !== undefined) {
|
||
traits.push({
|
||
title: originalData[`title[${j}]`] || "",
|
||
content: originalData[`content[${j}]`] || ""
|
||
});
|
||
j++;
|
||
}
|
||
// 构建最终结果
|
||
const result = {
|
||
name: originalData.name || "",
|
||
status: originalData.status || "",
|
||
logo: originalData.logo || "",
|
||
image: originalData.image || "",
|
||
toppic: originalData.toppic || "",
|
||
descpic: originalData.descpic || "",
|
||
desc: originalData.desc || "",
|
||
toppic_alt: originalData.toppic_alt || "",
|
||
descpic_alt: originalData.descpic_alt || "",
|
||
logo_alt: originalData.logo_alt || "",
|
||
banners: banners,
|
||
traits: traits
|
||
};
|
||
return result;
|
||
}
|
||
|
||
function uploadimage(upload,baseUrl){
|
||
// 图片上传
|
||
upload.render({
|
||
elem: '#albumUpload',
|
||
url: baseUrl + 'console/upload/image',
|
||
multiple: true,
|
||
accept: 'images',
|
||
acceptMime: 'image/*',
|
||
field: 'image',
|
||
before: function(obj) {
|
||
// 显示上传loading
|
||
showUploadLoading();
|
||
// 预读本地文件,如果是多文件,则会遍历。(不支持ie8/9)
|
||
obj.preview(function(index, file, result) {
|
||
// 生成唯一的图片ID
|
||
var imgId = 'img_' + new Date().getTime() + '_' + index;
|
||
$('#albumList').append(`
|
||
<div class="upload-itemm" style="display: inline-block; margin: 10px;" data-index="${index}">
|
||
<img src="${result}" alt="" id="${imgId}" class="img-3">
|
||
<input type="hidden" name="pic[]" value="">
|
||
<input type="text" class="layui-input" data-i18n-placeholder="brand.image_desc" style="margin: 5px 0px;height: 30px;" name="alt[]">
|
||
<button type="button" class="layui-btn layui-btn-danger layui-btn-xs delete-img">
|
||
<i class="layui-icon"></i><span data-i18n="btn.delete"></span>
|
||
</button>
|
||
</div>
|
||
`);
|
||
// 应用多语言
|
||
window.i18n.updatePageContent();
|
||
});
|
||
},
|
||
done: function(res, index, upload) {
|
||
// 上传完毕回调
|
||
if (res.code == 0) {
|
||
// 上传成功,设置图片地址
|
||
console.log(res.data.image_name);
|
||
// 通过data-index属性找到对应的元素
|
||
$('.upload-itemm[data-index="' + index + '"]').find('input[name="pic[]"]').val(
|
||
res.data.image_name);
|
||
hideUploadLoading();
|
||
} else {
|
||
layer.msg('上传失败');
|
||
hideUploadLoading();
|
||
}
|
||
},
|
||
allDone: function(obj){
|
||
// 多文件上传结束后兜底隐藏
|
||
if (typeof hideUploadLoading === 'function') hideUploadLoading();
|
||
},
|
||
error: function() {
|
||
layer.msg('上传失败');
|
||
hideUploadLoading();
|
||
}
|
||
});
|
||
|
||
// 删除图片
|
||
$(document).on('click', '.delete-img', function() {
|
||
$(this).closest('.upload-itemm').remove();
|
||
});
|
||
} |