See999 4 years ago
parent
commit
5f5c8688e9

+ 3 - 0
src/lang/zh.js View File

@@ -61,6 +61,9 @@ export default {
61 61
     theme: '换肤',
62 62
     clipboardDemo: 'Clipboard',
63 63
     i18n: '国际化',
64
+    medicalScheduling:'医护排班',
65
+    medicalSchedulingIndex:'医护排班',
66
+    class:'班种列表',
64 67
     permissionManage: '权限管理',
65 68
     adminManage: '员工管理',
66 69
     roleManage: '权限管理',

+ 2 - 0
src/router/index.js View File

@@ -17,6 +17,7 @@ import org from './modules/org'
17 17
 import systems from './modules/systems'
18 18
 import data_upload from './modules/data_upload'
19 19
 import integration from './modules/integration'
20
+import medicalScheduling from './modules/medical_scheduling'
20 21
 import slow from './modules/slow'
21 22
 import scrm from './modules/scrm'
22 23
 import shop from './modules/shop'
@@ -100,6 +101,7 @@ var _constant_router_map = [{
100 101
 var _asy_router_map = [
101 102
   patient,
102 103
   workforce,
104
+  medicalScheduling,
103 105
   weight_sign,
104 106
   dialysis,
105 107
   stock,

+ 42 - 0
src/router/modules/medical_scheduling.js View File

@@ -0,0 +1,42 @@
1
+import Layout from '@/views/layout/Layout'
2
+export default {
3
+  path: '/medicalScheduling',
4
+  component: Layout,
5
+  redirect: 'noredirect',
6
+  name: 'medicalScheduling',
7
+  alwaysShow: true,
8
+  meta: {
9
+    title: 'medicalScheduling',
10
+    icon: 'paiban'
11
+  },
12
+  children: [{
13
+    path: '/medicalScheduling/index',
14
+    component: () => import('@/xt_pages/medicalScheduling/index'),
15
+    name: 'medicalSchedulingIndex',
16
+    meta: {
17
+      title: 'medicalSchedulingIndex',
18
+      noCache: true
19
+    }
20
+  },
21
+  {
22
+    path: '/medicalScheduling/class',
23
+    component: () => import('@/xt_pages/medicalScheduling/class'),
24
+    name: 'class',
25
+    meta: {
26
+      title: 'class',
27
+      noCache: true
28
+    }
29
+  },
30
+  {
31
+    path: '/medicalScheduling/schedule/print',
32
+    component: () => import('@/xt_pages/medicalScheduling/medical_print'),
33
+    name: 'medical_print',
34
+    hidden: true,
35
+    is_menu: false,
36
+    meta: {
37
+      title: 'medical_print',
38
+      noCache: true
39
+    }
40
+  },
41
+  ]
42
+}

+ 190 - 0
src/xt_pages/medicalScheduling/class.vue View File

@@ -0,0 +1,190 @@
1
+<template>
2
+    <div class="main-contain">
3
+        <div class="position">
4
+            <bread-crumb :crumbs="crumbs"></bread-crumb>
5
+            <div style="display:flex;align-items:center">
6
+                <el-button type="primary" @click="newVisible = true">新增</el-button>
7
+            </div>
8
+        </div>
9
+        <div class="app-container">
10
+            <el-table :data="tableData" border style="width: 100%" :header-cell-style="{backgroundColor: 'rgb(245, 247, 250)', color: '#606266'}" :row-style="{ color: '#303133' }">
11
+                <el-table-column prop="name" label="序号" width="80" align="center"></el-table-column>
12
+                <el-table-column prop="name" label="班种名称" width="100" align="center"></el-table-column>
13
+                <el-table-column prop="name" label="班种属性" width="100" align="center"></el-table-column>
14
+                <el-table-column prop="name" label="班种时间" width="200" align="center"></el-table-column>
15
+                <el-table-column prop="name" label="时长" width="80" align="center"></el-table-column>
16
+                <el-table-column prop="name" label="状态" width="80" align="center"></el-table-column>
17
+                <el-table-column prop="name" label="备注" align="center"></el-table-column>
18
+                <el-table-column prop="name" label="操作" width="200" align="center">
19
+                    <template slot-scope="scope">
20
+                        <el-button
21
+                        size="mini"
22
+                        type="primary"
23
+                        @click="handleEdit(scope.$index, scope.row)">编辑</el-button>
24
+                        <el-button
25
+                        size="mini"
26
+                        type="danger"
27
+                        @click="handleDelete(scope.$index, scope.row)">删除</el-button>
28
+                    </template>
29
+                </el-table-column>
30
+            </el-table>
31
+            <el-dialog
32
+                title="新建班种"
33
+                width="660px"
34
+                :visible.sync="newVisible"
35
+                :before-close="_close"
36
+            >
37
+                <el-form :model="form" :rules="rules" ref="form" label-width="90px">
38
+                <el-form-item label="角色名称 : " prop="name">
39
+                    <el-input v-model="form.name" placeholder="" maxlength="30"></el-input>
40
+                </el-form-item>
41
+                <el-form-item label="班种属性 : " prop="type">
42
+                    <el-select v-model="form.type" placeholder="请选择">
43
+                        <el-option
44
+                        v-for="item in typeOptions"
45
+                        :key="item.value"
46
+                        :label="item.label"
47
+                        :value="item.value">
48
+                        </el-option>
49
+                    </el-select>
50
+                </el-form-item>
51
+                <el-form-item label="班种时间1 : " prop="type">
52
+                    <el-time-select
53
+                    style="width:140px;"
54
+                    v-model="form.startTime1"
55
+                    :picker-options="{
56
+                    start: '08:00',
57
+                    step: '00:15',
58
+                    end: '18:00'
59
+                    }"
60
+                    placeholder="选择时间">
61
+                    </el-time-select> ~
62
+                    <el-select style="width:100px;" v-model="form.day1" placeholder="请选择">
63
+                        <el-option
64
+                        v-for="item in dayOptions"
65
+                        :key="item.value"
66
+                        :label="item.label"
67
+                        :value="item.value">
68
+                        </el-option>
69
+                    </el-select>
70
+                    <el-time-select
71
+                    style="width:140px;"
72
+                    v-model="form.endTime1"
73
+                    :picker-options="{
74
+                    start: '08:00',
75
+                    step: '00:15',
76
+                    end: '18:00'
77
+                    }"
78
+                    placeholder="选择时间">
79
+                    </el-time-select>
80
+                </el-form-item>
81
+                <el-form-item label="班种时间2 : " prop="type">
82
+                    <el-time-select
83
+                    style="width:140px;"
84
+                    v-model="form.startTime2"
85
+                    :picker-options="{
86
+                    start: '08:00',
87
+                    step: '00:15',
88
+                    end: '18:00'
89
+                    }"
90
+                    placeholder="选择时间">
91
+                    </el-time-select> ~
92
+                    <el-select style="width:100px;" v-model="form.day2" placeholder="请选择">
93
+                        <el-option
94
+                        v-for="item in dayOptions"
95
+                        :key="item.value"
96
+                        :label="item.label"
97
+                        :value="item.value">
98
+                        </el-option>
99
+                    </el-select>
100
+                    <el-time-select
101
+                    style="width:140px;"
102
+                    v-model="form.endTime2"
103
+                    :picker-options="{
104
+                    start: '08:00',
105
+                    step: '00:15',
106
+                    end: '18:00'
107
+                    }"
108
+                    placeholder="选择时间">
109
+                    </el-time-select>
110
+                </el-form-item>
111
+                <el-form-item label="上班时长 : " prop="name">
112
+                    <el-input v-model="form.duration" placeholder="" maxlength="30"></el-input>
113
+                </el-form-item>
114
+                <el-form-item label="备注 : ">
115
+                    <el-input
116
+                    type="textarea"
117
+                    v-model="form.intro"
118
+                    placeholder=""
119
+                    resize="none"
120
+                    rows="2"
121
+                    ></el-input>
122
+                </el-form-item>
123
+                </el-form>
124
+                <div slot="footer" class="dialog-footer">
125
+                <el-button @click="hide">取 消</el-button>
126
+                <el-button type="primary" @click="submitAction()">保 存</el-button>
127
+                </div>
128
+            </el-dialog>
129
+        </div>
130
+    </div>
131
+</template>
132
+
133
+
134
+<script>
135
+import BreadCrumb from '@/xt_pages/components/bread-crumb'
136
+export default {
137
+    components:{
138
+        BreadCrumb
139
+    },
140
+    data(){
141
+        return{
142
+            crumbs: [
143
+                { path: false, name: '医护排班' },
144
+                { path: '/medicalScheduling/index', name: '班种列表' }
145
+            ],
146
+            tableData: [{
147
+                date: '2016-05-02',
148
+                name: '王小虎',
149
+                address: '上海市普陀区金沙江路 1518 弄'
150
+            }, {
151
+                date: '2016-05-04',
152
+                name: '王小虎',
153
+                address: '上海市普陀区金沙江路 1517 弄'
154
+            }, {
155
+                date: '2016-05-01',
156
+                name: '王小虎',
157
+                address: '上海市普陀区金沙江路 1519 弄'
158
+            }, {
159
+                date: '2016-05-03',
160
+                name: '王小虎',
161
+                address: '上海市普陀区金沙江路 1516 弄'
162
+            }],
163
+            newVisible:false,
164
+            form: {
165
+                id: 0,
166
+                name: "",
167
+                type:'',
168
+                startTime1:'',
169
+                day1:'',
170
+                endTime1:'',
171
+                startTime2:'',
172
+                day2:'',
173
+                endTime2:'',
174
+                duration:'',
175
+                intro: ""
176
+            },
177
+            rules: {
178
+                name: [
179
+                { required: true, message: "请输入角色名称", trigger: "blur" },
180
+                { max: 10, message: "10个字以内", trigger: "blur" }
181
+                ]
182
+                // intro: [{ required: true, message: '请输入角色说明', trigger: 'blur' }]
183
+            },
184
+            typeOptions:[{ value: 1, label: '出勤'},{ value: 2, label: '缺勤'}],
185
+            dayOptions:[{ value: 1, label: '当日'},{ value: 2, label: '次日'}]
186
+
187
+        }
188
+    }
189
+}
190
+</script>

+ 162 - 0
src/xt_pages/medicalScheduling/index.vue View File

@@ -0,0 +1,162 @@
1
+<template>
2
+    <div class="main-contain">
3
+        <div class="position">
4
+            <bread-crumb :crumbs="crumbs"></bread-crumb>
5
+            <div style="display:flex;align-items:center">
6
+                <el-button type="primary">清除</el-button>
7
+                <el-button type="primary">复制</el-button>
8
+                <el-button type="primary" icon="el-icon-printer" @click="toPrint">打印</el-button>
9
+            </div>
10
+        </div>
11
+        <div class="app-container">
12
+            <div class="cell clearfix">
13
+                <el-input
14
+                size="small"
15
+                style="width: 150px;"
16
+                class="filter-item"
17
+                v-model.trim="keywords"
18
+                placeholder="病人名称/透析号"
19
+                />
20
+                <el-button
21
+                size="small"
22
+                class="filter-item"
23
+                type="primary"
24
+                icon="el-icon-search"
25
+                @click="search"
26
+                >搜索</el-button
27
+                >
28
+                <el-select style="margin-left:10px;width:150px;" v-model="typeValue" placeholder="请选择">
29
+                    <el-option
30
+                        v-for="item in options"
31
+                        :key="item.value"
32
+                        :label="item.label"
33
+                        :value="item.value">
34
+                    </el-option>
35
+                </el-select>
36
+                <el-button type="text" style="margin:0 10px;">&lt;上一周(22)</el-button>
37
+                <div class="dateBox">2019.11.25-2019.12.01(47)</div>
38
+                <el-button type="text" style="margin:0 10px;">下一周(24)&gt;</el-button>
39
+            </div>
40
+            <div style="display:flex;justify-content: space-between;">
41
+                <div style="width: 70%">
42
+                    <el-table :data="tableData" border :header-cell-style="{backgroundColor: 'rgb(245, 247, 250)', color: '#606266'}" :row-style="{ color: '#303133' }">
43
+                        <el-table-column prop="name" label="医护姓名" style="width:16%" align="center"></el-table-column>
44
+                        <el-table-column prop="name" label="周一" style="width:14%" align="center"></el-table-column>
45
+                        <el-table-column prop="name" label="周二" style="width:14%" align="center"></el-table-column>
46
+                        <el-table-column prop="name" label="周三" style="width:14%" align="center"></el-table-column>
47
+                        <el-table-column prop="name" label="周四" style="width:14%" align="center"></el-table-column>
48
+                        <el-table-column prop="name" label="周五" style="width:14%" align="center"></el-table-column>
49
+                        <el-table-column prop="name" label="周六" style="width:14%" align="center"></el-table-column>
50
+                        <el-table-column prop="name" label="周日" style="width:14%" align="center"></el-table-column>
51
+                    </el-table>
52
+                </div>
53
+                <div class="classBox">
54
+                    <div class="classTitle">班种</div>
55
+                    <div class="classMain">
56
+                        <div>
57
+                            <p>早班(08:00~12:00)</p>
58
+                            <p>中班(12:00~18:00)</p>
59
+                            <p>晚班(18:00~24:00)</p>
60
+                            <p>全班(08:00~18:00)</p>
61
+                        </div>
62
+                        
63
+                        <el-checkbox style="text-align:center" v-model="isChecked">连续排班</el-checkbox>
64
+                    </div>
65
+                </div>
66
+            </div>
67
+        </div>
68
+    </div>
69
+</template>
70
+
71
+
72
+<script>
73
+import BreadCrumb from '@/xt_pages/components/bread-crumb'
74
+export default {
75
+    components:{
76
+        BreadCrumb
77
+    },
78
+    data(){
79
+        return{
80
+            crumbs: [
81
+                { path: false, name: '医护排班' },
82
+                { path: '/medicalScheduling/index', name: '医护排班' }
83
+            ],
84
+            keywords:'',
85
+            options: [{
86
+                value: '1',
87
+                label: '全部'
88
+            }, {
89
+                value: '2',
90
+                label: '医生'
91
+            }, {
92
+                value: '3',
93
+                label: '护士'
94
+            }],
95
+            typeValue:'1',
96
+            tableData: [{
97
+                date: '2016-05-02',
98
+                name: '王小虎',
99
+                address: '上海市普陀区金沙江路 1518 弄'
100
+            }, {
101
+                date: '2016-05-04',
102
+                name: '王小虎',
103
+                address: '上海市普陀区金沙江路 1517 弄'
104
+            }, {
105
+                date: '2016-05-01',
106
+                name: '王小虎',
107
+                address: '上海市普陀区金沙江路 1519 弄'
108
+            }, {
109
+                date: '2016-05-03',
110
+                name: '王小虎',
111
+                address: '上海市普陀区金沙江路 1516 弄'
112
+            }],
113
+            isChecked:true
114
+
115
+        }
116
+    },
117
+    methods:{
118
+        search(){},
119
+        toPrint(){
120
+            this.$router.push({
121
+                path: '/medicalScheduling/schedule/print',
122
+                // query: { date: date }
123
+            })
124
+        }
125
+    }
126
+}
127
+</script>
128
+
129
+<style lang="scss" scoped>
130
+.dateBox{
131
+    border: 1px solid #DCDFE6;
132
+    height: 36px;
133
+    line-height: 36px;
134
+    text-align: center;
135
+    padding: 0 10px;
136
+    border-radius: 4px;
137
+}
138
+.classBox{
139
+    width:25%;
140
+    height: 100%;
141
+    border: 1px solid #EBEEF5;
142
+    .classTitle{
143
+        height: 42px;
144
+        text-align: center;
145
+        line-height: 42px;
146
+        background-color: rgb(245, 247, 250);
147
+        color: rgb(96, 98, 102);
148
+        font-weight:bold;
149
+        
150
+    }
151
+    .classMain{
152
+        height: 400px;
153
+        padding: 0 20px;
154
+        display: flex;
155
+        justify-content: space-between;
156
+        flex-direction: column;
157
+        >div>p{
158
+            line-height: 30px;
159
+        }
160
+    }
161
+}
162
+</style>

+ 149 - 0
src/xt_pages/medicalScheduling/medical_print.vue View File

@@ -0,0 +1,149 @@
1
+<template>
2
+    <div class="main-contain">
3
+        <div class="position">
4
+        <bread-crumb :crumbs="crumbs"></bread-crumb>
5
+        <el-row style="float:right;">
6
+            <el-col :span="24">
7
+            <el-button size="small" icon="el-icon-printer" type="primary" @click="printAction">打印</el-button>
8
+            </el-col>
9
+        </el-row>
10
+        </div>
11
+        <div class="app-container" style="background-color: white;">
12
+            <div id="print_content">
13
+                <div class="print_main_content">
14
+                    <div class="order_title_panl">
15
+                        <span class="main_title">{{ $store.getters.xt_user.org.org_name }}医护排班表</span>
16
+                    </div>
17
+                    <div class="table_panel">
18
+                        <table class="table">
19
+                            <thead>
20
+                                <tr>
21
+                                    <td width="120">医护姓名</td>
22
+                                    <td width="120">周一</td>
23
+                                    <td width="120">周二</td>
24
+                                    <td width="120">周三</td>
25
+                                    <td width="120">周四</td>
26
+                                    <td width="120">周五</td>
27
+                                    <td width="120">周六</td>
28
+                                    <td width="120">周日</td>
29
+                                </tr>
30
+                            </thead>
31
+                            <tbody>
32
+                                <tr v-for='item in 6'>
33
+                                    <td>张三</td>
34
+                                    <td>张三</td>
35
+                                    <td>张三</td>
36
+                                    <td>张三</td>
37
+                                    <td>张三</td>
38
+                                    <td>张三</td>
39
+                                    <td>张三</td>
40
+                                    <td>张三</td>
41
+                                </tr>
42
+                            </tbody>
43
+                        </table>
44
+                    </div>
45
+                </div>
46
+            </div>
47
+        </div>
48
+    </div>
49
+</template>
50
+
51
+<script>
52
+import BreadCrumb from '@/xt_pages/components/bread-crumb'
53
+import print from 'print-js'
54
+export default {
55
+    components:{
56
+        BreadCrumb
57
+    },
58
+    data(){
59
+        return{
60
+            crumbs: [
61
+                { path: false, name: '医护排班' },
62
+                { path: false, name: '排班打印' }
63
+            ],
64
+        }
65
+    },
66
+    methods:{
67
+        printAction: function() {
68
+            const style = '@media print { .print_main_content { background-color: white; width:960px;  margin:0 auto; padding: 0 0 20px 0; } .order_title_panl { text-align: center; } .main_title { font-size: 18px; line-height: 40px; font-weight: 500; } .table_panel { } .table { width: 100%; border: 1px solid; border-collapse: collapse; padding: 2px; } thead tr td { border: 1px solid; text-align: center; font-size: 20px; padding: 15px 5px; } tbody tr td { border: 1px solid; text-align: center; font-size: 18px; padding: 10px 5px; } .proj { padding: 5px 0; text-align: left; } .proj_title { font-size: 16px; font-weight: 500; line-height: 25px; } .proj_item { font-size: 15px; line-height: 20px; } .zone_name { font-weight: 500; } }'
69
+
70
+            printJS({
71
+            printable: 'print_content',
72
+            type: 'html',
73
+            documentTitle: '  ',
74
+            style: style,
75
+            scanStyles: false
76
+            })
77
+        }
78
+    }
79
+}
80
+</script>
81
+
82
+
83
+<style rel="stylesheet/scss" lang="scss" scoped>
84
+.print_main_content {
85
+  background-color: white;
86
+  max-width: 1500px;
87
+  margin: 0 auto;
88
+  padding: 0 0 20px 0;
89
+
90
+  .order_title_panl {
91
+    text-align: center;
92
+
93
+    .main_title {
94
+      font-size: 18px;
95
+      line-height: 40px;
96
+      font-weight: 500;
97
+    }
98
+  }
99
+  .table_panel {
100
+    .table {
101
+      width: 100%;
102
+      border: 1px solid;
103
+      border-collapse: collapse;
104
+      padding: 2px;
105
+
106
+      thead {
107
+        tr {
108
+          td {
109
+            border: 1px solid;
110
+            text-align: center;
111
+            font-size: 20px;
112
+            padding: 15px 5px;
113
+          }
114
+        }
115
+      }
116
+      tbody {
117
+        tr {
118
+          td {
119
+            border: 1px solid;
120
+            text-align: center;
121
+            font-size: 18px;
122
+            padding: 10px 5px;
123
+
124
+            .proj {
125
+              padding: 5px 0;
126
+              text-align: left;
127
+
128
+              .proj_title {
129
+                font-size: 16px;
130
+                font-weight: 500;
131
+                line-height: 25px;
132
+              }
133
+
134
+              .proj_item {
135
+                font-size: 15px;
136
+                line-height: 20px;
137
+
138
+                .zone_name {
139
+                  font-weight: 500;
140
+                }
141
+              }
142
+            }
143
+          }
144
+        }
145
+      }
146
+    }
147
+  }
148
+}
149
+</style>