init commit

This commit is contained in:
2026-03-17 09:56:00 +08:00
commit e2c8ae752d
6827 changed files with 1211784 additions and 0 deletions

View File

@@ -0,0 +1,195 @@
define(['jquery', 'bootstrap', 'backend', 'table', 'form'], function ($, undefined, Backend, Table, Form) {
var Controller = {
index: function () {
// 初始化表格参数配置
Table.api.init({
extend: {
index_url: 'wdsxh/article/article/index' + location.search,
add_url: 'wdsxh/article/article/add',
edit_url: 'wdsxh/article/article/edit',
del_url: 'wdsxh/article/article/del',
multi_url: 'wdsxh/article/article/multi',
import_url: 'wdsxh/article/article/import',
table: 'wdsxh_article',
}
});
var table = $("#table");
// 初始化表格
table.bootstrapTable({
url: $.fn.bootstrapTable.defaults.extend.index_url,
pk: 'id',
sortName: 'weigh',
fixedColumns: true,
fixedRightNumber: 1,
columns: [
[
{checkbox: true},
{field: 'id', title: __('Id')},
{field: 'wdsxharticlecat.name', title: __('文章分类'), operate: false},
{field: 'title', title: __('Title'), operate: 'LIKE'},
{field: 'release', title: __('Release'), operate: 'LIKE'},
{field: 'image', title: __('Image'), operate: false, events: Table.api.events.image, formatter: Table.api.formatter.image},
{field: 'status', title: __('Status'), searchList: {"0":__('Status 0'),"1":__('Status 1')}, formatter: Table.api.formatter.status},
{field: 'weigh', title: __('Weigh'), operate: false},
{field: 'createtime', title: __('Createtime'), operate:'RANGE', addclass:'datetimerange', autocomplete:false, formatter: Table.api.formatter.datetime},
{field: 'operate', title: __('Operate'), table: table, events: Table.api.events.operate, formatter: Table.api.formatter.operate}
]
]
});
table.on('post-body.bs.table', function (e, settings, json, xhr) {
$(".btn-editone,.btn-edit,.btn-add").data("area", ["100%", "100%"]);
});
// 为表格绑定事件
Table.api.bindevent(table);
},
add: function () {
Controller.api.bindevent();
},
edit: function () {
Controller.api.bindevent();
},
api: {
bindevent: function () {
// 使用更精确的表单选择器
var $form = $("form#edit-form, form#add-form, form[role=form]");
// 先移除表单的默认提交行为,改为通过按钮点击处理
$form.attr('onsubmit', 'return false;');
Form.api.bindevent($form, {
beforeSubmit: function (form) {
var $filesInput = $('#c-files');
var $hidden = $('#c-filesjson');
if ($filesInput.length === 0 || $hidden.length === 0) return true;
var urlsStr = $.trim($filesInput.val());
if (urlsStr === '') {
$hidden.val('');
return true;
}
var urls = urlsStr.split(/\s*,\s*/);
var namesJsonStr = ($("textarea[name='row[filesdata]']").val() || '').trim();
var namesData = [];
try {
namesData = namesJsonStr ? JSON.parse(namesJsonStr) : [];
} catch (e) {
namesData = [];
}
var arr = [];
for (var i = 0; i < urls.length; i++) {
var url = urls[i];
if (!url) continue;
var name = '';
if (namesData[i] && namesData[i].name) {
name = $.trim(namesData[i].name);
}
if (!name) {
Toastr.error('附件名称不能为空');
return false;
}
arr.push({ url: url, name: name });
}
$hidden.val(JSON.stringify(arr));
return true;
}
});
// 添加额外的表单提交验证
$form.on("submit", function (e) {
console.log('表单提交事件触发'); // 添加调试日志
var $filesInput = $('#c-files');
if ($filesInput.length === 0) return true;
var urlsStr = $.trim($filesInput.val());
if (urlsStr === '') return true;
var urls = urlsStr.split(/\s*,\s*/);
var namesJsonStr = ($("textarea[name='row[filesdata]']").val() || '').trim();
var namesData = [];
try {
namesData = namesJsonStr ? JSON.parse(namesJsonStr) : [];
} catch (e) {
namesData = [];
}
console.log('附件数量:', urls.length); // 添加调试日志
console.log('名称数据:', namesData); // 添加调试日志
for (var i = 0; i < urls.length; i++) {
if (!(namesData[i] && $.trim(namesData[i].name))) {
console.log('第', i+1, '个附件名称为空'); // 添加调试日志
Toastr.error('附件名称不能为空');
e.preventDefault();
e.stopImmediatePropagation();
// 添加更强制的方法阻止表单提交
if (e.cancelable !== false) {
e.preventDefault();
}
// 返回false并阻止事件冒泡
return false;
}
}
return true;
});
// 添加按钮点击事件作为主要的验证层
$form.find('button[type="submit"]').on('click', function (e) {
console.log('提交按钮点击事件触发'); // 添加调试日志
var $filesInput = $('#c-files');
if ($filesInput.length === 0) {
// 如果没有附件输入框,直接提交表单
console.log('没有附件输入框,直接提交表单');
return true;
}
var urlsStr = $.trim($filesInput.val());
if (urlsStr === '') {
// 如果没有附件,直接提交表单
console.log('没有附件,直接提交表单');
return true;
}
var urls = urlsStr.split(/\s*,\s*/);
var namesJsonStr = ($("textarea[name='row[filesdata]']").val() || '').trim();
var namesData = [];
try {
namesData = namesJsonStr ? JSON.parse(namesJsonStr) : [];
} catch (e) {
namesData = [];
}
console.log('按钮点击验证 - 附件数量:', urls.length); // 添加调试日志
console.log('按钮点击验证 - 名称数据:', namesData); // 添加调试日志
for (var i = 0; i < urls.length; i++) {
if (!(namesData[i] && $.trim(namesData[i].name))) {
console.log('按钮点击验证 - 第', i+1, '个附件名称为空'); // 添加调试日志
Toastr.error('附件名称不能为空');
e.preventDefault();
e.stopImmediatePropagation();
return false;
}
}
// 验证通过移除onsubmit属性并允许表单正常提交
console.log('验证通过,允许表单提交');
$form.removeAttr('onsubmit');
return true;
});
$(document).on('change','input[name="row[type]"]',function (){
var type=$(this).val();
switch (type){
case "1":
$('.linktext').addClass('hide');
$('.release').removeClass('hide');
$('.read_num').removeClass('hide');
$('.teletext').removeClass('hide');
$('.files').removeClass('hide');
break;
case "2":
$('.linktext').removeClass('hide');
$('.release').addClass('hide');
$('.read_num').addClass('hide');
$('.teletext').addClass('hide');
$('.files').addClass('hide');
break;
}
});
}
}
};
return Controller;
});