123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227 |
- <!DOCTYPE html>
- <html>
- <head>
- <meta charset="utf-8">
- <title>layui</title>
- <meta name="renderer" content="webkit">
- <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
- <meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1">
- <link rel="stylesheet" href="__PUBLIC__/layui/css/layui.css" media="all">
- <link rel="stylesheet" href="__PUBLIC__/font-awesome/css/font-awesome.min.css" media="all"/>
- <link rel="stylesheet" href="__CSS__/admin.css" media="all">
- </head>
- <style>
- .layui-form-item .layui-form-checkbox[lay-skin=primary] {
- margin-top: auto;
- }
- .layui-table-cell, .layui-table-box, .layui-table-body {
- overflow: visible;
- }
- </style>
- <body style="padding:10px;">
- <div class="tplay-body-div">
- <div class="layui-tab">
- <ul class="layui-tab-title">
- <li class="layui-this">后台生成</li>
- <li><a href="{:url('admin/api_generation/index')}" class="a_menu">接口生成</a></li>
- </ul>
- </div>
- <div style="margin-top: 20px;">
- </div>
- <form class="layui-form" id="admin">
- <div class="layui-form-item">
- <label class="layui-form-label">数据表</label>
- <div class="layui-input-inline">
- <select name="table" lay-search="" lay-filter="tablename" lay-verify="required">
- <option value="">请选择</option>
- {foreach name="$tables" item="vo" key="k"}
- <option value="{$vo.TABLE_NAME}|{$vo.TABLE_COMMENT}"
- >{$vo.TABLE_NAME}({$vo.TABLE_COMMENT|default="无备注"})
- </option>
- {/foreach}
- </select>
- </div>
- <div class="layui-form-mid layui-word-aux">选择要生成的表</div>
- </div>
- <div class="layui-form-item">
- <label class="layui-form-label">后台功能</label>
- <div class="layui-input-block">
- <input type="checkbox" name="crud[create]" title="新增" checked>
- <input type="checkbox" name="crud[delete]" title="删除" checked>
- <input type="checkbox" name="crud[update]" title="修改" checked>
- <input type="checkbox" name="crud[select]" title="查询" checked disabled>
- </div>
- <div class="layui-form-mid layui-word-aux">选择生成对应的后台功能,生成后须手动配置菜单和权限</div>
- </div>
- <div class="layui-form-item">
- <div class="layui-input-block" style="display:none;" id="table_div">
- <table class="layui-table" id="table" lay-filter="table"></table>
- </div>
- </div>
- <div class="layui-form-item">
- <div class="layui-input-block">
- <button class="layui-btn" lay-submit lay-filter="admin">立即生成</button>
- </div>
- </div>
- </form>
- {include file="public/foot"}
- <script>
- layui.use(['table', 'layer', 'form'], function () {
- var layer = layui.layer,
- $ = layui.jquery,
- table = layui.table,
- form = layui.form;
- var tableIns = table.render({
- id: 'table'
- , elem: '#table'
- , size: 'lg' //小尺寸的表格
- , defaultToolbar: []
- , page: false //开启分页
- , text: {none: '请先选择一个表'}
- , cols: [[ //表头
- {field: 'Field', title: '字段名称', minWidth: 60},
- {field: 'Type', title: '数据类型', minWidth: 80},
- {field: 'Default', title: '默认值', minWidth: 80},
- {field: 'Comment', title: '注释', minWidth: 80},
- {
- field: 'ShowList', title: '列表显示', align: 'center', width: 100, templet: function (row) {
- var unuse = ['password'];
- if (unuse.indexOf(row.Field) >= 0 || row.Type == 'text') {
- return '<input type="checkbox" name="' + row.Field + '_ShowList" lay-skin="primary">';
- }
- return '<input type="checkbox" name="' + row.Field + '_ShowList" lay-skin="primary" checked>';
- }
- },
- {
- field: 'ShowSearch', title: '支持查询', align: 'center', width: 100, templet: function (row) {
- var unuse = ['password', 'thumb', 'image', 'sort', 'update_time'];
- if (unuse.indexOf(row.Field) >= 0 || row.Type == 'text') {
- return '<input type="checkbox" name="' + row.Field + '_ShowSearch" lay-skin="primary">';
- }
- return '<input type="checkbox" name="' + row.Field + '_ShowSearch" lay-skin="primary" checked>';
- }
- },
- {
- field: 'ShowEdit', title: '表单显示', align: 'center', width: 100, templet: function (row) {
- var unuse = ['id', 'ip', 'create_time', 'update_time', 'sort'];
- if (unuse.indexOf(row.Field) >= 0) {
- return '<input type="checkbox" name="' + row.Field + '_ShowEdit" lay-skin="primary">';
- }
- return '<input type="checkbox" name="' + row.Field + '_ShowEdit" lay-skin="primary" checked>';
- }
- },
- {
- field: 'Component', title: '表单组件', minWidth: 100, templet: function (row) {
- return buildComponentSelect(row);
- }
- },
- ]]
- });
- form.on('submit(admin)', function (data) {
- $.ajax({
- url: "{:url('generation')}",
- data: $('#admin').serialize(),
- type: 'post',
- dataType: 'json',
- async: false,
- success: function (res) {
- if (1 == res.code) {
- layer.alert('执行成功')
- } else {
- layer.confirm(res.msg, {icon: 3, title: '覆盖前请备份文件!'}, function (index) {
- $.ajax({
- url: "{:url('generation')}",
- data: $('#admin').serialize() + '&cover=true',
- type: 'post',
- dataType: 'json',
- async: false,
- success: function (res) {
- if (res.code == 1) {
- layer.alert('执行成功')
- } else {
- layer.alert('执行失败')
- }
- }
- })
- });
- }
- }
- })
- return false;
- });
- form.on('select(tablename)', function (data) {
- if (data.value) {
- $("#table_div").show();
- tableIns.reload({
- url: "{:url('getFieldsInfo')}",
- where: {table: data.value},
- })
- } else {
- $("#table_div").hide();
- }
- });
- });
- function getCheckOption(row) {
- var check_option = '输入框';
- if (row.Type == 'text') {
- return '纯文本段落';
- }
- if (row.Type == 'float') {
- return '数字';
- }
- if (row.Type.indexOf('int') >= 0) {
- check_option = '数字';
- if (row.Field.indexOf('thumb') >= 0 || row.Field.indexOf('image') >= 0) {
- return '图片';
- }
- if (row.Field.indexOf('time') >= 0) {
- return '时间';
- }
- if (row.Type == 'int(1)' || row.Type == 'tinyint(1)') {
- return '开关';
- }
- if(row.Comment.indexOf(',') >= 0){
- if(row.Field.indexOf('radio') >= 0){
- return '单选框';
- }
- return '下拉框';
- }
- }
- if(row.Field.indexOf('checkbox') >= 0){
- return '复选框';
- }
- return check_option;
- }
- function buildComponentSelect(row) {
- var check_option = getCheckOption(row);
- var options = ['输入框', '数字', '时间', '纯文本段落', '图片', '开关', '下拉框', '复选框', '单选框', '文章编辑器'];
- var html = '<select name="' + row.Field + '_Component" lay-search="" lay-filter=""><option value="">请选择</option>';
- for (var i in options) {
- if (check_option == options[i]) {
- html += '<option value="' + i + '" selected>' + options[i] + '</option>';
- } else {
- html += '<option value="' + i + '">' + options[i] + '</option>';
- }
- }
- html += '</select>';
- return html;
- }
- </script>
- </div>
- </body>
- </html>
|