Files
yycea/public/assets/js/backend/wdsxh/article/article.js
2026-03-17 09:56:06 +08:00

196 lines
9.8 KiB
JavaScript
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.

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;
});