define(["jquery", "easy-admin", "miniTab"], function ($, ea, miniTab) {
var form = layui.form;
var table = layui.table;
var init = {
save_url: 'system.curd_generate/save',
};
return {
index: function () {
let element = layui.element;
element.on('tab(curd-hash)', function (obj) {
let id = obj.id
let _html = `
`
if (id == '2') {
layer.open({
title: '命令行一键生成 CRUD/CRUD',
type: 1,
shade: 0.3,
shadeClose: false,
area: ['42%', 'auto'],
content: _html,
success: function () {
form.on('submit(curd-console-submit)', function (data) {
let field = data.field
let url = $(this).attr('lay-submit')
let options = {url: ea.url(url), data: field}
ea.msg.confirm('确认执行该操作? 如果命令行中存在强制覆盖或者删除将会马上执行!', function () {
ea.request.post(options, function (rs) {
let msg = rs.msg || '未知~'
layer.msg(msg.replace(/\n/g, ' '), {shade: 0.3, shadeClose: true})
let code = rs?.code || '-1'
if (code != '1') return
})
})
})
},
end: function () {
element.tabChange('curd-hash', '1');
}
})
}
});
miniTab.listen();
let createStatus = false
let tb_prefix
let tb_name
form.on('submit(search)', function (data) {
let field = data.field
tb_prefix = field.tb_prefix
tb_name = field.tb_name
ea.request.get({url: $(this).attr('lay-submit'), prefix: true, data: field}, function (res) {
createStatus = true
$('.tableShow').removeClass('layui-hide')
$('.table-text').text(field.tb_prefix + field.tb_name)
let _data = res.data
let fieldsHtml = ``
$.each(_data.list, function (i, v) {
if (v.Key != 'PRI') fieldsHtml += `
`
})
$('.table_fields').html(fieldsHtml)
form.render('checkbox')
form.on('checkbox(checkbox-filter)', function (data) {
let _checked = data.elem.checked
$.each($(`.checkbox_${data.value}`), function (i, v) {
if (i > 0) $(this).prop('checked', false);
})
$(data.elem).prop('checked', _checked);
});
table.render({
elem: '#currentTable', cols: [
[
{field: 'name', title: '字段', minWidth: 80},
{field: 'type', title: '类型', minWidth: 80},
{field: 'key', title: '键', minWidth: 80},
{field: 'extra', title: '是否自增', minWidth: 80},
{field: 'null', title: '是否为空', minWidth: 80},
{field: 'desc', title: '描述', minWidth: 80},
]
], data: _data.data, page: false,
});
}, function (error) {
createStatus = false
ea.msg.error(error.msg)
$('.tableShow').addClass('layui-hide')
return
})
form.on('submit(add)', function (data) {
let table = $('.table-text').text()
if (!table || !createStatus) {
ea.msg.error('请先查询数据')
return
}
let url = $(this).attr('lay-submit')
let fields = {}
$.each($('.table_fields'), function (i, v) {
let _name = $(this).data('name')
let _inputs = {}
$.each($(v).find('.input_tag'), function (i, v) {
let checkedVal = $(this).find('input:checked').val()
if (checkedVal) {
_inputs[i] = checkedVal
}
})
fields[_name] = _inputs
})
let options = {url: url, prefix: true, data: {tb_prefix: tb_prefix, tb_name: tb_name, tb_fields: fields}}
layer.confirm('确定要自动生成【' + table + '】对应的CURD?', function (index) {
ea.request.post(options, function (res) {
createStatus = true
ea.msg.success(res.msg)
appendHtml(res['data']['result'], res['data']['link'])
}, function (error) {
createStatus = false
let code = error.code
if (code != '1') {
if (code < 0) {
createStatus = true
layer.confirm(error.msg, {
btn: ['确定强制覆盖生成', '取消'], title: '提示', icon: 0,
yes: function () {
options.prefix = false
options.data.force = 1
ea.request.post(options, function (rs) {
createStatus = true
ea.msg.success(rs.msg)
appendHtml(rs['data']['result'], rs['data']['link'])
})
}
});
return
}
ea.msg.error(error.msg)
return
}
})
})
})
form.on('submit(delete)', function (data) {
let table = $('.table-text').text()
if (!table || !createStatus) {
ea.msg.error('请先查询数据')
return
}
let url = $(this).attr('lay-submit')
let options = {url: url, prefix: true, data: {tb_prefix: tb_prefix, tb_name: tb_name}}
layer.confirm('确定要删除【' + table + '】对应CURD的文件? 确定清楚自己在做什么!', function (index) {
ea.request.post(options, function (res) {
ea.msg.success(res.msg)
$('.table-text').text('')
$('.file-list').empty()
$('.table_fields').empty()
$('.tableShow').addClass('layui-hide')
createStatus = false
})
})
})
return
})
function appendHtml(array, link) {
$('.file-list').empty()
let html = ''
$.each(array, function (idx, item) {
html += '