init commit
This commit is contained in:
195
public/assets/js/backend/wdsxh/article/article.js
Normal file
195
public/assets/js/backend/wdsxh/article/article.js
Normal 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;
|
||||
});
|
||||
Reference in New Issue
Block a user