| 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;    }}
 |