HTML
<!DOCTYPE html>
<html lang="ko">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta name="csrf-token" content="{{ csrf_token() }}">
<title>Member List</title>
<link rel="stylesheet" href="//code.jquery.com/ui/1.12.1/themes/base/jquery-ui.css">
<!-- <link rel="stylesheet" href="/resources/demos/style.css"> -->
<script src="https://code.jquery.com/jquery-1.12.4.js"></script>
<script src="https://code.jquery.com/ui/1.12.1/jquery-ui.js"></script>
<script>
$(function() {
$("#datepicker1, #datepicker2").datepicker({
dateFormat: 'yy.mm.dd'
});
});
</script>
</head>
<body>
<p>조회기간:
<input type="text" id="datepicker1"> ~
<input type="text" id="datepicker2">
</p>
<table id="tb" border='1'>
<button id="sendPoint" onclick="sendPoint()">지급</button>
<button style="display:none" onclick="cancel()" id="cancel">지급취소</button>
<button style="display:none" onclick="cancelPoint()" id="cancelPoint">회수취소</button>
<button onclick="backPoint()">회수</button>
<caption>member List</caption>
<tr>
<th><input type="checkbox" name="checkAll"></th>
<th>확인용 id</th>
<th>user id</th>
<th>name </th>
<th>phone</th>
<th>email</th>
<th>auth</th>
<th>created_at</th>
<th>updated_at</th>
<th>deleted_at</th>
<th>payment_at</th>
<th>상세보기</th>
</tr>
@foreach($items as $data)
<tr class="tr">
<td><input type="checkbox" class="checkOne" name="checkOne"><input type="hidden" value="{{$data->id}}"></td>
<td class="id">{{$data->id}}</td>
<td>{{$data->userid}}</td>
<td>{{$data->name}}</td>
<td>{{$data->phone}}</td>
<td>{{$data->email}}</td>
<td>{{$data->auth}}</td>
<td>{{$data->created_at}}</td>
<td>{{$data->updated_at}}</td>
<td>{{$data->deleted_at}}</td>
<td class="paymentAt">{{$data->payment_at}}</td>
<td><a href="{{Route('memberDetail',['id'=>$data->id])}}">click</a></td>
</tr>
@endforeach
</table>
<div>
<button><a href="{{Route('memberCreate',['id'=>0])}}">추가</a></button>
</div>
<div><p>검색기능</p>
<form action="" method="get">
<input type="text" name="searchText" placeholder="통합검색">
<select name="searchAuth">
@foreach($totalAuth as $totalAuth)
<option value="111">{{$totalAuth->auth}}</option>
@endforeach
</select>
<button type="submit">검색</button>
</form>
</div>
</div>
<script>
function backPoint(){
$('#cancelPoint').show();
$('tr.tr').each(function(){
var isPayment= $(this).children('.paymentAt').text();
if(!isPayment){
$(this).children().children('.checkOne').prop("checked",false);
$(this).children().children('.checkOne').prop("disabled", true);
}
})
}
//전체체크
$(document).ready(function(){
$("input:checkbox[name='checkAll']").click(function(){
$("input:checkbox[name='checkOne']").each(function(){
if($(this).is(':disabled')){
$(this).prop("checked",false);
}else{
$(this).prop("checked",true);
}
})
//전체 체크박스 개수
var checkboxCnt = $('.checkOne').length;
//체크된거 개수
var selCnt = $("input:checkbox[name='checkOne']:checked").length;
//disabled개수
var disabledCnt = $('tr.tr').find(":disabled").length;
if(disabledCnt >=1){
if($("input:checkbox[name='checkAll']").is(":checked")==false){
$("input:checkbox[name='checkOne']").prop("checked",false);
}
}else{
if($("input:checkbox[name='checkAll']").is(":checked")==true){
$("input:checkbox[name='checkOne']").prop("checked",true);
}else{
$("input:checkbox[name='checkOne']").prop("checked",false);
}
}
})
$("input:checkbox[name='checkOne']").click(function(){
var allCnt = $("input:checkbox[name='checkOne']").length;
var selCnt = $("input:checkbox[name='checkOne']:checked").length;
//disabled개수
var disabledCnt = $('tr.tr').find(":disabled").length;
if(disabledCnt>=1){
let notDisabledCnt = allCnt - disabledCnt;
if(notDisabledCnt === selCnt){
$("input:checkbox[name='checkAll']").prop("checked",true);
}else{
$("input:checkbox[name='checkAll']").prop("checked",false);
}
}else{
if(allCnt !== selCnt){
$("input:checkbox[name='checkAll']").prop("checked",false);
}else{
$("input:checkbox[name='checkAll']").prop("checked",true);
}
}
})
});
function sendPoint(){
if(confirm("포인트를 지급하시겠습니까??") == true){
var chkArray = [];
$("input:checkbox[name='checkOne']:checked").each(function(i){
chkArray.push($(this).siblings().val());
});
var allData ={"chkArray":chkArray};
//console.log(chkArray);
//var chkArray = JSON.parse(chkArray);
if(Array.isArray(chkArray)&&chkArray.length===0){
//빈 배열인지 확인
alert("체크박스를 선택해주세요");
return false;
}else{
$.ajax({
headers: {
'X-CSRF-TOKEN': $('meta[name="csrf-token"]').attr('content')
},
type: 'POST',
url: "{{Route('sendPoint')}}",
data: allData,
dataType: 'text',
success: function(data) {
alert('성공'),
location.href="{{Route('memberList')}}";
},
error: function(request,status,error){
alert("code:"+request.status+"\n"+
"message:"+request.responseText+"\n"+"error:"+error);}
});
}
}else{
return false;
}
}
function cancelPoint(){
if(confirm("지급을 회수하시겠습니까?")==true){
var chkArray = [];
$("input:checkbox[name='checkOne']:checked").each(function(i){
chkArray.push($(this).siblings().val());
});
var allData ={"chkArray":chkArray};
console.log(chkArray);
//var chkArray = JSON.parse(chkArray);
if(Array.isArray(chkArray)&&chkArray.length===0){
//빈 배열인지 확인
alert("체크박스를 선택해주세요");
return false;
}else{
$.ajax({
headers: {
'X-CSRF-TOKEN': $('meta[name="csrf-token"]').attr('content')
},
type: 'POST',
url: "{{Route('cancelPoint')}}",
data: allData,
dataType: 'text',
success: function(data) {
alert('성공'),
location.href="{{Route('memberList')}}";
},
error: function(request,status,error){
alert("code:"+request.status+"\n"+
"message:"+request.responseText+"\n"+"error:"+error);}
});
}
}else{
return false;
}
}
</script>
</body>
</html>
CONTROLLER
public function sendPoint(Request $request){
//print_r("here i am");
print_r($request->chkArray);
$arr=$request->chkArray;
//die();
$length = sizeof($arr);
foreach($arr as $key => $val){
(new Member())->sendPoint($val);
}
}
public function cancelPoint(Request $request){
$arr = $request->chkArray;
foreach($arr as $key => $val){
(new Member())->cancelPoint($val);
}
}
MODEL
public function sendPoint($val){
$model = self::find($val);
$model->payment_at = now();
$res = $model->save();
return $res;
}
public function cancelPoint($val){
$model = self::find($val);
//$res = $model->forceDelete();
$model->payment_at = null;
$res = $model->save();
return $res;
}
'개발자 > 개발(회사용)' 카테고리의 다른 글
[stack log 사용법] (0) | 2021.12.14 |
---|---|
[라라벨] 페이지네이션 (0) | 2021.10.06 |
[ajax]숫자 넣기, querystring 가져오기 (0) | 2021.10.04 |
switch+삼항연산자 (0) | 2021.03.12 |
[js] ajax formdata serialize (0) | 2021.02.23 |