Files
orzar-admin/assets/public.js
T
2025-09-01 14:22:08 +08:00

565 lines
17 KiB
JavaScript
Executable File
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
$(".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">&#xe640;</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">&#xe640;</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">&#xe640;</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">&#xe640;</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();
});
}