1. 모델,마이그레이션,컨트롤러 만들기

php artisan make:model Workplan -mcr


2. 라우트 설정

Route::resource('/workplan', 'WorkplanController');


3. master.blade.php 파일에 링크등록

<a class="item" href="/workplan">
작업지시2
</a>


4. 스키마 작성

Schema::create('workplans', function (Blueprint $table) {
$table->bigIncrements('id'); #아이디
$table->string('work_no'); #작업넘버
$table->string('title')->nullable(); #제목
$table->string('project_name'); #프로젝트네임
$table->string('project_code')->nullable(); #프로젝트코드
$table->string('board_name')->nullable(); #보드네임
$table->string('assy')->nullable(); #assy네임
$table->integer('ea'); #수량
$table->string('set_set')->nullable(); #편성
$table->string('start_product_date')->nullable(); #작업시작일
$table->string('end_product_date')->nullable(); #작업완료일
$table->string('status')->default("진행"); #진행상황
$table->integer('material_settiog')->default(0); #자재준비
$table->integer('smt')->default(0); #설비공수
$table->integer('dip')->default(0); #dip공수
$table->integer('aoi')->default(0); #aoi공수
$table->integer('wave')->default(0); #웨이브솔더링, 컷팅 공수
$table->integer('touchup')->default(0); #터치업 공수
$table->integer('item_inspection')->default(0); #단품검사 공수
$table->integer('coting')->default(0); #코팅 공수
$table->integer('ass')->default(0); #assy 공수
$table->integer('packing')->default(0); #포장 공수
$table->integer('ready')->default(0); #준비 공수
$table->integer('ect1')->default(0); #기타1
$table->integer('ect2')->default(0); #기타2
$table->integer('wo')->default(0);
$table->integer('per')->default(0);
$table->text('memo')->nullable(); #메모
$table->integer('con')->default(0); #1은 완료 0은 작업중
$table->string('wr_user'); #글쓴이
$table->timestamps();
});


5. 가짜데이터 삽입


6. WorkplanController.php 목록보기 작성

public function index()
{
$workplans = \App\Workplan::latest()->paginate(15);

return view('workplan.index',compact('workplans'));
}


7. view/workplan/index.blade.php 목록보기 파일생성


8. index.blade.php 파일 작성

@extends('master')

@section('content')

<h1>실시간 작업 리스트 & 공수입력
@if(Auth::check())
@if(auth()->user()->level >= 3)
<a class="ui primary button" href="/workplan/create">추가하기</a>
@endif
@endif
</h1>

<div class="ui relaxed divided list">
@foreach($workplans as $workplan)

<div class="item">
<i class="play middle aligned icon">&nbsp;{{ $workplan->id }}</i>
<div class="content">
<div class="right floated content">
<div class="ui button">
<font style="vertical-align: inherit;">더하다</font>
</div>
</div>
<a class="header">
<font style="vertical-align: inherit;">
<a href="/posts/{{$workplan->id}}">
<h3>{{ $workplan->title }}</h3>
</a>
</font>
<div class="description">
<font style="vertical-align: inherit;">{{ $workplan->memo }}</font>
</div>
</div>
</div>

@endforeach
</div>


{{-- 페이지네이션 --}}
@if($workplans->count())
{{ $workplans->links() }}
@endif

<br>
<br>

@endsection


9. WorkplanController.php 글 작성 페이지 create()메서드

public function create()
{
//프로젝트명 가져오기
$project_lists = \App\Project::get();

//보드명 가져오기
$board_names = \App\Boardname::all();


return view('workplan.create', compact('project_lists', 'board_names'));
}


10. views/workplan/create.blade.php

@extends('master')

@section('content')

<h1>작업지시 작성하기</h1>

<div class="ui stackable two column grid">

<div class="column">

<form class="ui form" method="POST" action="/workplan">
@csrf

<div class="field">
<label>작업명</label>
<input class="input {{ $errors->has('title') ? 'is-danger' : '' }}" type="text" name="title"
value="{{ old('title') }}" placeholder="작업명">
</div>


<div class="{{ $errors->has('project_name') ? 'field error' : 'field' }}">
<div class="ui selection dropdown">
<input type="hidden" name="project_name" value="{{ old('project_name') }}" required>
<i class="dropdown icon"></i>
<div class="default text" style="color: black">프로젝트명</div>
<div class="menu">
@foreach ($project_lists as $project_list)
<div class="item">{{$project_list->project_name }}</div>
@endforeach
</div>
</div>
</div>

<div class="field">
<div class="ui selection dropdown">
<input type="hidden" name="project_code" value="{{ old('project_code') }}">
<i class="dropdown icon"></i>
<div class="default text" style="color: black">프로젝트코드</div>
<div class="menu">
@foreach ($project_lists as $project_list)
<div class="item">{{$project_list->project_code }}</div>
@endforeach
</div>
</div>
</div>

<div class="field">
<div class="ui selection dropdown">
<input type="hidden" name="board_name" value="">
<i class="dropdown icon"></i>
<div class="default text" style="color: black">보드명</div>

<div class="menu">
@foreach($board_names as $board_name)
<div class="item">{{ $board_name->boardname }}</div>
@endforeach
</div>

</div>
</div>

<div class="field">
<label>ASSY명</label>
<input class="input {{ $errors->has('ass') ? 'is-danger' : '' }}" type="text" name="ass"
value="{{ old('ass') }}" placeholder="ASSY명">
</div>

<div class="{{ $errors->has('ea') ? 'field error' : 'field' }}">
<label>수량</label>
<input class="input" type="number" name="ea" value="{{ old('ea') }}" placeholder="수량" required>
</div>

<div class="field">
<label>편성</label>
<input class="input {{ $errors->has('set_set') ? 'is-danger' : '' }}" type="number" name="set_set"
value="{{ old('set_set') }}" placeholder="편성">
</div>

<?php $dd = date("Y-m-d")?>
<div class="field">
<label>생산시작일</label>
<input type="date" name="start_product_date" value="<?=$dd?>" placeholder="생산시작일">
</div>

<div class="field">
<label>생산완료일</label>
<input type="date" name="end_product_date" value="<?=$dd?>" placeholder="생산완료일">
</div>


<div class="field">
<label>메모</label>
<input class="input {{ $errors->has('memo') ? 'is-danger' : '' }}" type="text" name="memo"
value="{{ old('memo') }}" placeholder="메모">
</div>


<div class="field">
<button class="ui button" type="submit">작성완료</button>
</div>
</form>
@if($errors->any())
<div class="ui pink inverted segment">

<ul>
@foreach ($errors->all() as $error)
<li>{{$error}}</li>
@endforeach
</ul>
</div>
@endif
</div>

</div>
@endsection


11. WorkplanController.php 글 작성 페이지 store()메서드 로 데이터가 넘겨지는지 확인

public function store(Request $request)
{
dd(request()->all());
}


12. store() 메서드에 유효성 검사와 데이터 입력 작성

public function store(Request $request)
{

$rules = [
'title' => 'required',
'project_name' => ['required'],
'ea' => ['required'],
];

$messages = [
'title.required' => '제목은 필수 입력 항목 입니다.',
'project_name.required' => '프로젝트는 필수 입력 항목 입니다.',
'ea.required' => '수량은 필수 입력 항목 입니다.',
];

$validator = \Validator::make($request->all(), $rules, $messages);

if ($validator->fails()) {
return back()->withErrors($validator)->withInput();
}

//작업지시는 현재년,월,일 번호로 2019090001
//dump(\Config::get('my_carbon.NOW_YMD')); //"2019년 09월 01일"
$Y = (\Config::get('my_carbon.NOW_Y')); //"2019"
$M = (\Config::get('my_carbon.NOW_M')); //"09"
$D = (\Config::get('my_carbon.NOW_D')); //"01"

//날짜 201909
$YMD = $Y . $M;

//작업지시번호 최근꺼 가져오기
$work = Workplan::latest()->pluck('work_no');

//dd($work);

//컬렉션이 비어있다면 false
$workCheck = $work->isNotEmpty();


if ($workCheck != false) { //있다면...

//dd($workCheck);

//PBA201909001
$finalWorkNumberNo = $work[0];

//dd($finalWorkNumberNo);

//데이터베이스 현제 년월 201909
$DbYM = substr($finalWorkNumberNo, 3, 6);

//dd($DbYM);

//데이터베이스 뒤에서 세자리만 가져온다 001
$NumberNo = substr($finalWorkNumberNo, 9, 11);
//$NumberNo = sprintf('%03d',$NumberNo);
//dd($NumberNo);


if ($YMD != $DbYM) { //현재년월과 데이터베이스년월이 다르면
// 카운터 0001
$count = sprintf('%03d', 1);
} else {
$NumberNo = $NumberNo + 1;
//dd($NumberNo);
$count = sprintf('%03d', $NumberNo);
}

//dd('있어');

} else { //없다면

$YMD = $Y . $M;
$count = sprintf('%03d', 1);
}

// 접두
$prefix = "PBA";

//다만든 작업지시번호
$completeWorkNo = $prefix . $YMD . $count;


Workplan::create([
'work_no' => $completeWorkNo,
'title' => request('title'),
'project_name' => request('project_name'),
'project_code' => request('project_code'),
'board_name' => request('board_name'),
'assy' => request('assy'),
'ea' => request('ea'),
'set_set' => request('set_set'),
'start_product_date' => request('start_product_date'),
'end_product_date' => request('end_product_date'),
'memo' => request('memo'),
'ass' => 0,
'wr_user' => auth()->user()->name, //입력한 사용자

]);
Alert::success('작업 지시 완료', '작업 지시가 완료 되었습니다.');
return redirect('/workplan');
}


13. 목록 디자인을 변경하자



'라라벨 > 기능구현' 카테고리의 다른 글

로그인 유저타입으로 로그인후 경로변경  (0) 2020.03.09

+ Recent posts