UNPKG

@tower1229/flow-ui

Version:

Highly customizable UI framework based Seajs/jQuery

486 lines (479 loc) 10.7 kB
/** * blank */ define(function(require) { var $ = require('jquery'); var com = require('./common'); // var Table = require('table'); var demoData = [{ key1: "data1", key2: "data2", key3: "data3" }, { key1: "data1", key2: "data2", key3: "data3" }, { key1: "data1", key2: "data2", key3: "data3" }, { key1: "data1", key2: "data2", key3: "data3" }]; var demoColumn = [{ title: "第一列", key: 'key1' }, { title: "第二列", key: 'key2' }, { title: "第三列", key: 'key3' }]; //demo 1 Table({ el: '.grid1', data: demoData, column: demoColumn }); //demo2 demoColumn[0].width = 100; Table({ el: '.grid2', data: demoData, column: demoColumn, bordered: true }); //demo3 //列配置 var myColumn = [{ title: '产品', key: 'product', width: 125, sort: { mehtod: true, handle: function(key, type) { tab3LoadData.data.sort = type; tab3LoadData.data.key = key; datagrid.load(tab3LoadData); } }, validateMethod: function(value) { if (value && value.split && value.length < 10) { return true; } require.async('notice', function(Notice) { Notice({ title: '请输入长度小于10的字符串!', color: 'warning', delay: 2000 }); }); }, editable: function(rowIndex, key, value) { console.log(rowIndex, key, value); } }, { title: '制造商', key: 'manufacturer', filters: [{ label: '全部', handle: function() { tab3LoadData.data.filter = ''; datagrid.load(tab3LoadData); } }, { label: '三星', handle: function() { tab3LoadData.data.filter = 'Samsung'; datagrid.load(tab3LoadData); } }, { label: '苹果', handle: function() { tab3LoadData.data.filter = 'Apple'; datagrid.load(tab3LoadData); } }, { label: '诺基亚', handle: function() { tab3LoadData.data.filter = 'Nokia'; datagrid.load(tab3LoadData); } }] }, { title: '价格', key: 'price', width: 100, styler: function(value) { if (value > 3000) { return "font-weight:700;color:#000"; } } }, { title: '库存', key: 'storage', align: 'center', styler: function(value) { if (value < 100) { return "color: red"; } } }, { title: '类型', key: 'type', render: function(value, rowData, index, entity) { var inputArray = [{ type: "A", name: '直板' }, { type: "B", name: '翻盖' }, { type: "C", name: '滑盖' }]; var inputName = ''; $.each(inputArray, function(i, e) { if (e.type === value) { inputName = e.name; return false; } }); return inputName; } }, { title: '体积(mm)', width: 200, render: function(value, rowData, index) { var size = rowData.size; if (size) { return [size.length, size.width, size.height].join(' x '); } } }, { title: 'comment', key: 'comment', width: 200 }]; //加载配置 var tab3LoadData = { url: 'http://7xnt8z.com1.z0.glb.clouddn.com/phone.json', data: { page_size: 10, page_index: 1 }, dataParser: function(res){ return res.data; } }; //调用Table var datagrid = Table({ el: '.grid3', load: tab3LoadData, column: myColumn, multi: true, height: 400, onReady: function(res) { require.async('page', function() { $('.tab3-page').page({ total: res.totalPage || 12, //模拟数据没有totalPage属性,暂时写死 current: tab3LoadData.data.page_index, onChange: function(page) { tab3LoadData.data.page_index = page; datagrid.load(tab3LoadData); } }); }); } }); //增删改事件 var box = require('box'); require('validform'); var formTemplate = $('#formTemplate').text(); var etpl = require('etpl'); var formRender = etpl.compile(formTemplate); $('.tab3-add').on('click', function() { var html = formRender({}); var boxHandle = box.open(html, { width: 600, onshow: function($box) { $box.find('.formTemplate').Validform({ ajaxPost: true, tipSweep: true, url: 'http://rapapi.org/mockjsdata/9195/common/getYes/', data: { method: 'add' }, callback: function(res) { box.hide(boxHandle); if (res.status === 'Y') { $.box.msg(res.msg || '添加数据成功,即将重载数据!', { color: 'success', delay: 2000, onclose: function() { //重载表格数据 datagrid.reload(); } }); } else { $.box.msg(res.msg || '操作失败!', { color: 'danger' }); } } }); //下拉 require.async('select', function() { var _checked = $box.find('.phoneTypeSelect').attr('value'); var _optionData = [{ value: "A", option: '直板' }, { value: "B", option: '翻盖' }, { value: "C", option: '滑盖' }]; $.each(_optionData, function(i, e) { if (e.value === _checked) { e.selected = true; return false; } }); $box.find('.phoneTypeSelect').select({ data: _optionData }); }); //开关 require.async('switch', function() { $box.find('.flow-ui-switch').switcher(); }); } }); }); //删除 $('.tab3-del').on('click', function() { var _selected = datagrid.getSelected(); if (!_selected.length) { return null; } var confirmHandle = box.confirm('确定删除这 ' + _selected.length + ' 项?', function() { box.hide(confirmHandle); $.ajax({ url: 'http://rapapi.org/mockjsdata/9195/common/getYes/', data: { method: 'delete', pro: _selected }, success: function(res) { if (res.status === 'Y') { box.msg(res.msg || '删除成功!', { color: 'success', delay: 2000, onclose: function() { datagrid.reload(); } }); } else { box.msg(res.msg || '操作失败!', { color: 'danger', delay: 2000 }); } } }); }); }); //编辑 $('.tab3-edi').on('click', function() { var _selected = datagrid.getSelected(); if (!_selected.length) { return null; } var html = formRender(_selected[0]); var boxHandle = box.open(html, { width: 600, onshow: function($box) { $box.find('.formTemplate').Validform({ ajaxPost: true, tipSweep: true, data: { method: 'modify' }, url: 'http://rapapi.org/mockjsdata/9195/common/getYes/', callback: function(res) { box.hide(boxHandle); if (res.status === 'Y') { $.box.msg(res.msg || '修改成功!', { color: 'success', delay: 2000, onclose: function() { //重载表格数据 datagrid.reload(); } }); } else { $.box.msg(res.msg || '操作失败!', { color: 'danger' }); } } }); //下拉 require.async('select', function() { var _checked = $box.find('.phoneTypeSelect').attr('value'); var _optionData = [{ value: "A", option: '直板' }, { value: "B", option: '翻盖' }, { value: "C", option: '滑盖' }]; $.each(_optionData, function(i, e) { if (e.value === _checked) { e.selected = true; return false; } }); $box.find('.phoneTypeSelect').select({ data: _optionData }); }); //开关 require.async('switch', function() { $box.find('.flow-ui-switch').switcher(); }); } }); }); //demo4 //列配置 var myColumn4 = [{ title: '产品', key: 'product', width: 125 }, { title: '制造商', key: 'manufacturer', width: 125 }, { title: '价格', key: 'price', width: 100, styler: function(value) { if (value > 3000) { return "font-weight:700;color:#000"; } } }, { title: '库存', key: 'storage', align: 'center', styler: function(value) { if (value < 100) { return "color: red"; } } }, { title: '体积(mm)', width: 200, render: function(value, rowData, index) { var size = rowData.size; if (size) { return [size.length, size.width, size.height].join(' x '); } } }]; //主表加载配置 var tab4LoadData = { url: 'http://7xnt8z.com1.z0.glb.clouddn.com/phone.json', data: { page_size: 10, page_index: 1 }, dataParser: function(res){ return res.data; } }; //从表列数据 var myColumn4Sub = [{ title: '用户名称', key: 'name' },{ title: '用户角色', key: 'role' }]; //从表加载配置 var tab4SubData = { url: 'http://rapapi.org/mockjsdata/1101/member/list/sub/', data: { page_size: 10, page_index: 1 }, dataParser: function(res){ return res.data; } }; //调用Table var datagrid4 = Table({ el: '.grid4', load: tab4LoadData, column: myColumn4, multi: true, height: 400, onSelect: function(index, row, rowArray, isSelect) { if(isSelect){ var _pro = row.product; //从表弹窗 tab4SubData.data.pro = _pro; var tab4subboxHandle = box.open('<div class="card card-bordered"><div class="card-head"><div class="card-title">操作</div><div class="card-extra"><span class="btn btn-sm btn-success">增加</span> <span class="btn btn-sm btn-danger">删除</span> <span class="btn btn-sm btn-warning">修改</span></div></div><div class="tab4sub card-body">加载中...</div><div class="tab4-sub-page tc card-foot"></div></div>',{ title: '从属:'+_pro, width: 600, onshow: function($box){ //加载从表Table数据 var tabgrid4sub = Table({ el: $box.find('.tab4sub'), load: tab4SubData, column: myColumn4Sub, multi: true, onReady: function(res) { require.async('page', function() { $box.find('.tab4-sub-page').page({ total: res.count ? Math.ceil(res.count/tab4SubData.data.page_size) : 12, //模拟数据没有count属性,暂时写死 current: tab4SubData.data.page_index, onChange: function(page) { tab4SubData.data.page_index = page; tabgrid4sub.load(tab4SubData); } }); }); //Table实例化完成后调整从表弹窗尺寸 box.setSize(tab4subboxHandle); } }); } }); } }, onReady: function(res) { require.async('page', function() { $('.tab4-page').page({ total: res.count ? Math.ceil(res.count/tab4LoadData.data.page_size) : 12, //模拟数据没有count属性,暂时写死 current: tab4LoadData.data.page_index, onChange: function(page) { tab4LoadData.data.page_index = page; datagrid4.load(tab4LoadData); } }); }); } }); });