123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124 |
- <?php
- /**
- * User: Mike
- * Email: m@9026.com
- * Date: 2016/6/28
- * Time: 16:49
- */
- namespace App\Widget\Tools;
- class CheckData {
- /**
- * 选择数据
- * @param $id 唯一编号
- * @param $dataUrl
- * @param $dataName 隐藏域
- * @param $field 数据
- * @param $data 默认数据
- * @param int $num 限制数量
- */
- public function run($id,$dataUrl,$dataName='data',$field=['id'=>'编号','name'=>'商品名称'],$data=[],$dataKey='id',$num=9999) {
- $callBack = "checkDataCallBack" . $id;
- $getData = "getData" . $id;
- $dataUrl = U($dataUrl,['callBack'=>$callBack,'getData'=>$getData]);
- $html ="<a id='{$id}_button' class='btn btn-success'>选择数据</a>";
- $th = "";
- $td = "";
- $dataTd = "";
- foreach($field as $key=>$val) {
- $th .="<th data-field='$key'>$val</th>";
- $td .= "<td><input type='hidden' name='$dataName\[$key\][]' value='\" + data.$key + \"'/> \"+data.$key+\"</td>";
- }
- foreach($data as $val) {
- $dataTd .= "<tr data-key=\"{$val[$dataKey]}\" align='center'>";
- foreach($field as $k=>$v) {
- $dataTd .= "<td><input type='hidden' name='{$dataName}[$k][]' value='{$val[$k]}'/>{$val[$k]}</td>";
- }
- $dataTd .= "<td><a href='#' onclick='$(this).parent().parent().remove();'>删除</a></td></tr>";
- }
- $html .= <<<EOF
- <div class='ng-scope img-input-block list'>
- <table id="checkDataTable$id" class='table table-striped table-bordered table-hover dataTables-example dataTable'>
- <thead>
- <tr>
- $th
- <th data-field='action' data-formatter='actionFormatter' data-events='actionEvents'>操作</th>
- </tr>
- </thead>
- <tbody>
- $dataTd
- </tbody>
- </table>
- </div>
- <script type='text/javascript'>
- $(function() {
- $("#{$id}_button").click(function() {
- layer.open({
- type: 2,
- title: '选择数据',
- shadeClose: true,
- shade: 0.8,
- area: ['80%', '80%'],
- maxmin: true,
- content: '$dataUrl',
- btn: ['完成选择'],
- yes:function(index, layero){
- layer.close(index);
- },
- end:function(index,msg){ }
- });
- });
- });
- function $callBack(index,data,checked) {
- dataTr = $('#checkDataTable$id tbody').find('tr[data-key="'+index+'"]');
- if(checked) {
- html = "<tr data-key="+index+" align='center'>";
- html +="$td";
- html +="<td><a href='#' onclick='$(this).parent().parent().remove();'>删除</a></td></tr>";
- //如果一条数据,那么处理逻辑就是替换
- if($num ==1) {
- $('#checkDataTable$id tbody').html(html);
- return 1;
- }
- if(dataTr.length>0) {
- return true;
- }
- if($('#checkDataTable$id tbody tr').length>$num-1) {
- layer.msg("最多选择{$num}条数据");
- return false;
- }
- $('#checkDataTable$id tbody').append(html);
- }else{
- if(dataTr.length>0) {
- dataTr.remove();
- }
- }
- return true;
- }
- function $getData() {
- var keys = [];
- dataTr = $('#checkDataTable$id tbody tr').each(function() {
- keys.push($(this).data('key').toString());
- });
- console.log(keys);
- return keys;
- }
- var arr = [ "xml", "html", "css", "js" ];
- </script>
- EOF;
- return $html;
- }
- }
|