Skip to content

Commit c2a752b

Browse files
committed
Add Features
1 parent 298ea0f commit c2a752b

File tree

17 files changed

+565
-91
lines changed

17 files changed

+565
-91
lines changed

.idea/dataSources/65696b23-f113-49f4-a1ce-0ea52685fe28.xml

+396-13
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

.idea/dataSources/65696b23-f113-49f4-a1ce-0ea52685fe28/storage_v2/_src_/schema/mysql.osA4Bg.meta

+2
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

.idea/dataSources/65696b23-f113-49f4-a1ce-0ea52685fe28/storage_v2/_src_/schema/performance_schema.kIw0nw.meta

+2
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

.idea/dataSources/65696b23-f113-49f4-a1ce-0ea52685fe28/storage_v2/_src_/schema/sys.zb4BAA.meta

+2
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

.idea/php.xml

+1-1
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

.idea/runConfigurations/DB_Seed_Migrate.xml

+5
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

.idea/runConfigurations/Server.xml

+5
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

.idea/startup.xml

+1-1
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

app/Http/Controllers/DepartmentController.php

+41-4
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,9 @@
44

55
use App\Models\Department;
66
use Illuminate\Http\Request;
7+
use Illuminate\Support\Carbon;
8+
use Illuminate\Support\Facades\View;
9+
use App\Models\User;
710

811
class DepartmentController extends Controller
912
{
@@ -14,7 +17,18 @@ class DepartmentController extends Controller
1417
*/
1518
public function index()
1619
{
17-
//
20+
$user = auth()->user();
21+
date_default_timezone_set("Asia/Taipei");
22+
Carbon::setLocale('zh-TW');
23+
//Admin
24+
return View::make('departments.index')
25+
->with('departments',Department::all()->sortByDesc('created_at'));
26+
27+
//一般使用者
28+
/*
29+
* return View::make('departments.index')
30+
->with('departments',$user->departments->sortByDesc('created_at'));
31+
*/
1832
}
1933

2034
/**
@@ -24,18 +38,29 @@ public function index()
2438
*/
2539
public function create()
2640
{
27-
//
41+
return View::make('departments.create');
2842
}
2943

3044
/**
3145
* Store a newly created resource in storage.
3246
*
3347
* @param \Illuminate\Http\Request $request
34-
* @return \Illuminate\Http\Response
48+
* @return \Illuminate\Http\RedirectResponse
3549
*/
3650
public function store(Request $request)
3751
{
38-
//
52+
$department = Department::create([
53+
'name' => $request->name
54+
]);
55+
56+
foreach($request->users as $user_id){
57+
$user = User::find($user_id);
58+
$user->departments()->attach($department);
59+
$user->save();
60+
}
61+
62+
63+
return redirect()->to(route('departments.index'));
3964
}
4065

4166
/**
@@ -82,4 +107,16 @@ public function destroy(Department $department)
82107
{
83108
//
84109
}
110+
111+
public function queryDepartmentUsers(Request $request){
112+
$users = Department::find($request->id)->users;
113+
$res = collect();
114+
foreach($users as $user){
115+
$res->push([
116+
'id' => $user->id,
117+
'text' => $user->name."(".$user->email.")"."<".$user->id.">"
118+
]);
119+
}
120+
return response()->json($res);
121+
}
85122
}

app/Http/Controllers/UserController.php

+16
Original file line numberDiff line numberDiff line change
@@ -106,4 +106,20 @@ public function query(Request $request){
106106
'results'=>$res
107107
]);
108108
}
109+
110+
/**
111+
* 取得用戶
112+
*
113+
* @param \Illuminate\Http\Request $request
114+
* @return \Illuminate\Http\JsonResponse
115+
*/
116+
public function getUser(Request $request){
117+
$id = $request->id;
118+
$user = User::find($id)->first();
119+
120+
return response()->json([
121+
'id' => $user->id,
122+
'text' => $user->name."(".$user->email.")"."<".$user->id.">"
123+
]);
124+
}
109125
}

app/Models/User.php

+1-1
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,7 @@ public function docs() {
1515
return $this->hasMany(Doc::class);
1616
}
1717

18-
public function department(){
18+
public function departments(){
1919
return $this->belongsToMany(Department::class);
2020
}
2121

database/migrations/2021_04_02_065755_create_departments_table.php

+1
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,7 @@ public function up()
1515
{
1616
Schema::create('departments', function (Blueprint $table) {
1717
$table->uuid('id')->primary();
18+
$table->string('name');
1819
$table->timestamps();
1920
});
2021
}

resources/views/departments/create.blade.php

+9-61
Original file line numberDiff line numberDiff line change
@@ -5,55 +5,23 @@
55
<div class="row justify-content-center">
66
<div class="col-md-8">
77
<div class="card">
8-
<div class="card-header">{{ __('公文發文平台') }}</div>
8+
<div class="card-header">{{ __('新增部門') }}</div>
99

1010
<div class="card-body">
1111
@if (session('status'))
1212
<div class="alert alert-success" role="alert">
1313
{{ session('status') }}
1414
</div>
1515
@endif
16-
<form action="{{route('docs.store')}}" method="post" id="doc_create">
16+
<form action="{{route('departments.store')}}" method="post" id="doc_create">
1717
<div class="form-group">
18-
<label for="receiver">受文者</label>
19-
<select name="receiver" id="receiver" class="form-control" multiple></select>
18+
<label for="name">部門名稱</label>
19+
<input type="text" name="name" id="name" class="form-control">
2020
</div>
2121

2222
<div class="form-group">
23-
<label for="date">發文日期</label>
24-
<input type="date" name="date" id="date" value="{{date("Y-m-d")}}" class="form-control">
25-
</div>
26-
27-
28-
<div class="form-group">
29-
<label for="serial_number">發文號</label>
30-
<div class="input-group mb-3">
31-
<input type="text" name="serial_number" id="serial_number" class="form-control">
32-
<div class="input-group-append">
33-
<button class="btn btn-outline-primary" type="button" id="check_serial">Check</button>
34-
</div>
35-
</div>
36-
37-
</div>
38-
39-
<div class="form-group">
40-
<label for="speed">速別</label>
41-
<input type="text" name="speed" id="speed" class="form-control">
42-
</div>
43-
44-
<div class="form-group">
45-
<label for="confidentiality">密等</label>
46-
<input type="text" name="confidentiality" id="confidentiality" class="form-control">
47-
</div>
48-
49-
<div class="form-group">
50-
<label for="subject">主旨</label>
51-
<input type="text" name="subject" id="subject" class="form-control">
52-
</div>
53-
54-
<div class="form-group">
55-
<label for="explanation">說明</label>
56-
<textarea name="explanation" id="explanation"></textarea>
23+
<label for="users">員工</label>
24+
<select name="users[]" id="users" class="form-control" multiple></select>
5725
</div>
5826

5927
<button type="submit" class="btn btn-primary">送出</button>
@@ -92,25 +60,16 @@
9260
@section('other-scripts')
9361
<link href="https://cdn.jsdelivr.net/npm/[email protected]/dist/css/select2.min.css" rel="stylesheet" />
9462
<script src="https://cdn.jsdelivr.net/npm/[email protected]/dist/js/select2.min.js"></script>
95-
<script src="https://cdn.ckeditor.com/ckeditor5/27.0.0/classic/ckeditor.js"></script>
9663
<script>
97-
(function(global,ClassicEditor){
64+
(function(global){
9865
global.DocMgr = global.DocMgr || {};
99-
ClassicEditor
100-
.create(document.querySelector('#explanation'))
101-
.then((editor)=>{
102-
global.DocMgr.docEditor = editor
103-
})
104-
.catch(error => {
105-
console.error(error);
106-
});
10766
global.DocMgr.alert = function(title,content){
10867
$('#dialog_title').text(title)
10968
$('#dialog_content').text(content)
11069
$('#dialog').modal()
11170
}
112-
})(window,ClassicEditor)
113-
$('#receiver').select2({
71+
})(window)
72+
$('#users').select2({
11473
ajax: {
11574
url: "{{route('users.query')}}",
11675
method: "POST",
@@ -119,16 +78,5 @@
11978
}
12079
});
12180
122-
123-
124-
$("#doc_create").submit((e)=>{
125-
let editor = window.DocMgr.docEditor;
126-
let explanation = $(editor.getData())
127-
$('#explanation').html(explanation.html());
128-
return true;
129-
})
130-
$("#check_serial").click(()=>{
131-
DocMgr.alert('hi','hi2')
132-
})
13381
</script>
13482
@endsection

resources/views/departments/index.blade.php

+75-10
Original file line numberDiff line numberDiff line change
@@ -5,29 +5,27 @@
55
<div class="row justify-content-center">
66
<div class="col-md-8">
77
<div class="card">
8-
<div class="card-header">{{ __('公文列表') }}</div>
8+
<div class="card-header">{{ __('部門列表') }}</div>
99

1010
<div class="card-body">
1111
@if (session('status'))
1212
<div class="alert alert-success" role="alert">
1313
{{ session('status') }}
1414
</div>
1515
@endif
16-
<a href="{{route('docs.create')}}" class="btn btn-success">新增公文</a>
16+
<a href="{{route('departments.create')}}" class="btn btn-success">新增部門</a>
1717
<br>
1818
<div class="list-group">
19-
@foreach($docs as $doc)
19+
@foreach($departments as $department)
2020
<div class="list-group-item border-2">
2121
<div class="d-flex w-100 justify-content-between">
22-
<h5 class="mb-1 text-dark font-weight-bold">{{$doc->subject}}</h5>
23-
<small>{{$doc->created_at->diffForHumans()}}</small>
22+
<h5 class="mb-1 text-dark font-weight-bold">{{$department->name}}</h5>
23+
<small>{{$department->created_at->diffForHumans()}}</small>
24+
</div>
25+
<div class="mb-1">
26+
<select id="users_{{$department->id}}" class="form-control" multiple></select>
2427
</div>
25-
<div class="mb-1">{!! $doc->explanation !!}</div>
26-
<small>發文日期: {{$doc->created_at->format('Y/m/d') }}</small>
27-
<a href="{{route('docs.show',$doc->id)}}">Word</a>
2828
</div>
29-
30-
{{$doc}}
3129
@endforeach
3230
</div>
3331

@@ -39,9 +37,76 @@
3937
@endsection
4038

4139
@section('other-scripts')
40+
<link href="https://cdn.jsdelivr.net/npm/[email protected]/dist/css/select2.min.css" rel="stylesheet" />
41+
<script src="https://cdn.jsdelivr.net/npm/[email protected]/dist/js/select2.min.js"></script>
42+
<script>
43+
(function(global){
44+
global.DocMgr = global.DocMgr || {};
45+
global.DocMgr.alert = function(title,content){
46+
$('#dialog_title').text(title)
47+
$('#dialog_content').text(content)
48+
$('#dialog').modal()
49+
}
50+
global.DocMgr.addSelected=function(id){
51+
var userSelect = $('#users');
52+
$.ajax({
53+
type: 'POST',
54+
url: "{{route('users.get')}}",
55+
data:{
56+
'id' : id
57+
}
58+
}).then(function (data) {
59+
var option = new Option(data.text, data.id, true, true);
60+
userSelect.append(option).trigger('change');
61+
62+
userSelect.trigger({
63+
type: 'select2:select',
64+
params: {
65+
data: data
66+
}
67+
});
68+
});
69+
}
70+
71+
})(window)
72+
73+
$(function(){
74+
let departments = {!! $departments->groupBy('id')->keys() !!};
75+
departments.forEach((id)=>{
76+
$('#users_'+id).select2({
77+
ajax: {
78+
url: "{{route('users.query')}}",
79+
method: "POST",
80+
delay: 250,
81+
dataType: 'json'
82+
}
83+
});
84+
$.ajax({
85+
type: 'POST',
86+
url: "{{route('users.departments.query')}}",
87+
data:{
88+
'id' : id
89+
}
90+
}).then(function (res) {
91+
res.forEach((data)=>{
92+
var option = new Option(data.text, data.id, true, true);
93+
$('#users_'+id).append(option).trigger('change');
94+
$('#users_'+id).trigger({
95+
type: 'select2:select',
96+
params: {
97+
data: data
98+
}
99+
});
100+
})
101+
});
102+
})
103+
104+
})
105+
</script>
42106
<style>
43107
.border-2 {
44108
border-width: 2px !important;
45109
}
46110
</style>
111+
47112
@endsection

resources/views/layouts/app.blade.php

+4
Original file line numberDiff line numberDiff line change
@@ -63,6 +63,10 @@
6363
{{ __('公文') }}
6464
</a>
6565

66+
<a class="dropdown-item" href="{{ route('departments.index') }}">
67+
{{ __('部門') }}
68+
</a>
69+
6670
<!-- Logout -->
6771
<a class="dropdown-item" href="{{ route('logout') }}"
6872
onclick="event.preventDefault();

0 commit comments

Comments
 (0)