huangyw 2 年 前
コミット
a6abeb6805
共有36 個のファイルを変更した7678 個の追加5283 個の削除を含む
  1. 5 0
      src/lang/en.js
  2. 9 2
      src/lang/zh.js
  3. 12 0
      src/router/index.js
  4. 17 0
      src/router/modules/ConsumablesManagement.js
  5. 17 0
      src/router/modules/DispensingDetails.js
  6. 17 0
      src/router/modules/DrugDispensing.js
  7. 223 0
      src/router/modules/MedicianManagement.js
  8. 26 0
      src/router/modules/PatientDispensing.js
  9. 5 4
      src/router/modules/outpatientCharges.js
  10. 11 2
      src/views/layout/Layout.vue
  11. 17 0
      src/views/layout/components/Sidebar/index.vue
  12. 26 0
      src/xt_pages/Pharmacy/ConsumablesManagement.vue
  13. 133 0
      src/xt_pages/Pharmacy/DispensingDetails.vue
  14. 215 0
      src/xt_pages/Pharmacy/DrugDispensing.vue
  15. 26 0
      src/xt_pages/Pharmacy/MedicianManagement.vue
  16. 216 0
      src/xt_pages/Pharmacy/PatientDispensing.vue
  17. 0 0
      src/xt_pages/Pharmacy/css/PatientDispensing.css
  18. 207 0
      src/xt_pages/Pharmacy/print/details.vue
  19. 181 0
      src/xt_pages/Pharmacy/print/drugPrint.vue
  20. 178 0
      src/xt_pages/Pharmacy/print/patientPrint.vue
  21. 53 0
      src/xt_pages/Pharmacy/print/print.js
  22. 0 0
      src/xt_pages/Pharmacy/template/P_dispense.vue
  23. 807 819
      src/xt_pages/outpatientCharges/listPrint.vue
  24. 169 124
      src/xt_pages/outpatientCharges/listTemplate/printTwo10265.vue
  25. 16 13
      src/xt_pages/stock/drugs/cancelDrugStockDetail.vue
  26. 310 249
      src/xt_pages/stock/drugs/cancelDrugStockOrder.vue
  27. 361 352
      src/xt_pages/stock/drugs/drugBatchNumber.vue
  28. 33 29
      src/xt_pages/stock/drugs/drugIndex.vue
  29. 71 61
      src/xt_pages/stock/drugs/drugInventory.vue
  30. 711 664
      src/xt_pages/stock/drugs/drugQueryPrint.vue
  31. 39 38
      src/xt_pages/stock/drugs/drugStockDetail.vue
  32. 350 287
      src/xt_pages/stock/drugs/drugStockInOrder.vue
  33. 760 685
      src/xt_pages/stock/drugs/drugStockInOrderAdd.vue
  34. 766 628
      src/xt_pages/stock/drugs/drugStockOutOrder.vue
  35. 543 437
      src/xt_pages/stock/drugs/drugStockOutOrderAdd.vue
  36. 1148 889
      src/xt_pages/stock/drugs/query.vue

+ 5 - 0
src/lang/en.js ファイルの表示

@@ -98,6 +98,11 @@ export default {
98 98
     stockManage: 'Stock Manage',
99 99
     wareHouseManage:'Ware House Manage',
100 100
     inventoryTransfer:'inventoryTransfer',
101
+    DrugDispensing:'DrugDispensing',
102
+    DispensingDetails:'DispensingDetails',
103
+    // ConsumablesManagement:'ConsumablesManagement',
104
+    MedicianManagement:'MedicianManagement',
105
+    patiantDispensing:'patiantDispensing',
101 106
     supplyManage: 'Supply Manage',
102 107
     supplyQuery: 'supply query',
103 108
     baseInfo: 'base Info',

+ 9 - 2
src/lang/zh.js ファイルの表示

@@ -120,7 +120,7 @@ export default {
120 120
     completeOrder: '购买结果',
121 121
     orderRecord: '订单详情',
122 122
     recordList: '订单记录',
123
-    stockManage: '耗材管理',
123
+    // stockManage: '耗材管理',
124 124
     supplyManage: '采购管理',
125 125
     supplyList: '供应商管理',
126 126
     goodType: '商品类型',
@@ -158,6 +158,13 @@ export default {
158 158
     special_permission_manage: '特殊权限管理',
159 159
     schedule_print: '排班打印',
160 160
 
161
+    // 药房管理
162
+    PatientDispensing:'患者发药',
163
+    DrugDispensing:'药品发药',
164
+    DispensingDetails:'发药明细',
165
+    // ConsumablesManagement:'耗材管理',
166
+    MedicianManagement:'药品管理',
167
+
161 168
     otherManagement: '其他管理',
162 169
     drugsExpiryDate: '药品有效期预警',
163 170
     drugsSurplus: '药品剩余预警',
@@ -180,7 +187,7 @@ export default {
180 187
 
181 188
     inventoryTransfer: '库存调拨',
182 189
 
183
-    consumablesManagement: '耗材管理',
190
+    // consumablesManagement: '耗材管理',
184 191
     warehouseReceipt: '出入库',
185 192
     warehouseReceiptOther: '出入库',
186 193
     stockInOrder: '入库单',

+ 12 - 0
src/router/index.js ファイルの表示

@@ -36,6 +36,12 @@ import DepositManagement from './modules/DepositManagement'
36 36
 import hisTool from './modules/hisTool'
37 37
 import supply from './modules/supply'
38 38
 
39
+import PatientDispensing from './modules/PatientDispensing'
40
+import DrugDispensing from './modules/DrugDispensing'
41
+import DispensingDetails from './modules/DispensingDetails'
42
+// import ConsumablesManagement from './modules/ConsumablesManagement'
43
+import MedicianManagement from './modules/MedicianManagement'
44
+
39 45
 // import outpatientRecord from './modules/outpatientRecord'
40 46
 import kuyiShopping from './modules/kuyiShopping'
41 47
 import createPatient from './modules/createPatient'
@@ -156,6 +162,12 @@ var _asy_router_map = [
156 162
   wareHouseManage,  //仓库管理模块
157 163
   DepositManagement, //押金管理模块
158 164
   inventoryTransfer,    //库存调拨模块
165
+  PatientDispensing, // 患者发药模块
166
+  DrugDispensing, // 药房管理模块
167
+  DispensingDetails, // 药房管理模块
168
+  // ConsumablesManagement, // 药房管理模块
169
+  MedicianManagement, // 药房管理模块
170
+
159 171
   otherManagement,
160 172
   qcd,
161 173
   device,

+ 17 - 0
src/router/modules/ConsumablesManagement.js ファイルの表示

@@ -0,0 +1,17 @@
1
+import Layout from '@/views/layout/Layout'
2
+
3
+export default {
4
+  path: '/ConsumablesManagement',
5
+  component: Layout,
6
+  name:'ConsumablesManagement',
7
+  redirct: 'noredirect',
8
+  children: [{
9
+    path: '/Pharmacy/ConsumablesManagement',
10
+    component: () => import('@/xt_pages/Pharmacy/ConsumablesManagement.vue'),
11
+    name: '耗材管理',
12
+    meta: {
13
+      title: '耗材管理',
14
+      noCache: true
15
+    }
16
+  },]
17
+}

+ 17 - 0
src/router/modules/DispensingDetails.js ファイルの表示

@@ -0,0 +1,17 @@
1
+import Layout from '@/views/layout/Layout'
2
+
3
+export default {
4
+  path: '/DispensingDetails',
5
+  component: Layout,
6
+  name:'DispensingDetails',
7
+  redirct: 'noredirect',
8
+  children: [{
9
+    path: '/Pharmacy/DispensingDetails',
10
+    component: () => import('@/xt_pages/Pharmacy/DispensingDetails.vue'),
11
+    name: '发药明细',
12
+    meta: {
13
+      title: '发药明细',
14
+      noCache: true
15
+    }
16
+  },]
17
+}

+ 17 - 0
src/router/modules/DrugDispensing.js ファイルの表示

@@ -0,0 +1,17 @@
1
+import Layout from '@/views/layout/Layout'
2
+
3
+export default {
4
+  path: '/DrugDispensing',
5
+  component: Layout,
6
+  name:'DrugDispensing',
7
+  redirct: 'noredirect',
8
+  children: [{
9
+    path: '/Pharmacy/DrugDispensing',
10
+    component: () => import('@/xt_pages/Pharmacy/DrugDispensing.vue'),
11
+    name: '药品发药',
12
+    meta: {
13
+      title: '药品发药',
14
+      noCache: true
15
+    }
16
+  },]
17
+}

+ 223 - 0
src/router/modules/MedicianManagement.js ファイルの表示

@@ -0,0 +1,223 @@
1
+import Layout from '@/views/layout/Layout'
2
+
3
+export default {
4
+  path: '/MedicianManagement',
5
+  component: Layout,
6
+  name: 'MedicianManagement',
7
+  alwaysShow: true,
8
+  redirct: 'noredirect',
9
+  meta: {
10
+    title: 'MedicianManagement',
11
+    icon: 'MedicianManagement',
12
+    isChild: true
13
+  },
14
+  children: [
15
+    {
16
+      path: '/Pharmacy/MedicianManagement',
17
+      component: () => import('@/xt_pages/stock/drugs/query'),
18
+      name: '库存查询',
19
+      meta: { title: '库存查询', noCache: true }
20
+    },
21
+    {
22
+      path: '/Pharmacy/drugs/stock/in',
23
+      component: () => import('@/xt_pages/stock/drugs/drugStockInOrder'),
24
+      name: 'drugsStockIn',
25
+      meta: { title: 'drugsStockIn', noCache: true }
26
+    },
27
+    {
28
+      path: '/Pharmacy/drugs/stock/out',
29
+      component: () => import('@/xt_pages/stock/drugs/drugStockOutOrder'),
30
+      name: 'drugsStockOut',
31
+      meta: { title: 'drugsStockOut', noCache: true }
32
+    },
33
+    {
34
+      path: '/Pharmacy/drugs/drugModifyPricePrint',
35
+      component: () => import('@/xt_pages/stock/drugs/drugModifyPricePrint'),
36
+      name: 'drugModifyPricePrint',
37
+      hidden: true,
38
+      is_menu: false,
39
+      meta: { title: 'drugModifyPricePrint', noCache: true }
40
+    },
41
+    {
42
+      path: '/Pharmacy/drugs/drugInventory',
43
+      component: () => import('@/xt_pages/stock/drugs/drugInventory'),
44
+      name: 'drugInventory',
45
+      meta: { title: 'drugInventory', noCache: true }
46
+    },
47
+    {
48
+      path: '/Pharmacy/drugs/inventoryPrint',
49
+      component: () => import('@/xt_pages/stock/drugs/inventoryPrint'),
50
+      name: 'inventoryPrint',
51
+      hidden: true,
52
+      is_menu: false,
53
+      meta: { title: 'inventoryPrint', noCache: true }
54
+    },
55
+    {
56
+      path: '/Pharmacy/drugs/stock/cancel',
57
+      component: () => import('@/xt_pages/stock/drugs/cancelDrugStockOrder'),
58
+      name: 'drugsStockCancel',
59
+      meta: { title: 'drugsStockCancel', noCache: true }
60
+    },
61
+    {
62
+      path: '/Pharmacy/drugs/stock/detail',
63
+      component: () => import('@/xt_pages/stock/drugs/drugIndex'),
64
+      name: 'drugDetail',
65
+      meta: { title: '明细查询', noCache: true }
66
+    },
67
+    {
68
+      path: '/Pharmacy/in/add',
69
+      component: () => import('@/xt_pages/stock/drugs/drugStockInOrderAdd'),
70
+      name: 'drugStockInOrderAdd',
71
+      hidden: true,
72
+      is_menu: false,
73
+      meta: { title: 'drugStockInOrderAdd', noCache: true }
74
+    },
75
+    
76
+    {
77
+      path: '/Pharmacy/in/detail',
78
+      component: () => import('@/xt_pages/stock/drugs/drugStockInDetail'),
79
+      name: 'drugStockInDetail',
80
+      hidden: true,
81
+      is_menu: false,
82
+      meta: { title: 'drugStockInDetail', noCache: true }
83
+    }, {
84
+      path: '/Pharmacy/return/detail',
85
+      component: () => import('@/xt_pages/stock/drugs/drugSalesReturnDetail'),
86
+      name: 'drugSalesReturnDetail',
87
+      hidden: true,
88
+      is_menu: false,
89
+      meta: { title: 'drugSalesReturnDetail', noCache: true }
90
+    }, {
91
+      path: '/Pharmacy/return/add',
92
+      component: () => import('@/xt_pages/stock/drugs/drugSalesReturnOrderAdd'),
93
+      name: 'drugSalesReturnOrderAdd',
94
+      hidden: true,
95
+      is_menu: false,
96
+      meta: { title: 'drugSalesReturnOrderAdd', noCache: true }
97
+    }, {
98
+      path: '/Pharmacy/out/add',
99
+      component: () => import('@/xt_pages/stock/drugs/drugStockOutOrderAdd'),
100
+      name: 'drugStockOutOrderAdd_Pharmacy',
101
+      hidden: true,
102
+      is_menu: false,
103
+      meta: { title: 'drugStockOutOrderAdd_Pharmacy', noCache: true }
104
+    }, {
105
+      path: '/Pharmacy/out/detail',
106
+      component: () => import('@/xt_pages/stock/drugs/drugStockOutDetail'),
107
+      name: 'drugStockOutDetail',
108
+      hidden: true,
109
+      is_menu: false,
110
+      meta: { title: 'drugStockOutDetail', noCache: true }
111
+    }, {
112
+      path: '/Pharmacy/cancel/add',
113
+      component: () => import('@/xt_pages/stock/drugs/cancelDrugStockOrderAdd'),
114
+      name: 'cancelDrugStockOrderAdd',
115
+      hidden: true,
116
+      is_menu: false,
117
+      meta: { title: 'cancelDrugStockOrderAdd', noCache: true }
118
+    }, {
119
+      path: '/Pharmacy/cancel/detail',
120
+      component: () => import('@/xt_pages/stock/drugs/cancelDrugStockDetail'),
121
+      name: 'cancelDrugStockDetail',
122
+      hidden: true,
123
+      is_menu: false,
124
+      meta: { title: 'cancelDrugStockDetail', noCache: true }
125
+    },
126
+    {
127
+      path: '/Pharmacy/cancel/edit',
128
+      component: () => import('@/xt_pages/stock/drugs/cancelDrugStockOrderEdit'),
129
+      name: 'cancelDrugStockOrderEdit',
130
+      hidden: true,
131
+      is_menu: false,
132
+      meta: { title: 'cancelDrugStockOrderEdit', noCache: true }
133
+    },
134
+    {
135
+      path: '/Pharmacy/user/detail',
136
+      component: () => import('@/xt_pages/stock/drugs/drugStockUserDetail'),
137
+      name: 'drugStockUserDetail',
138
+      hidden: true,
139
+      is_menu: false,
140
+      meta: { title: 'drugStockUserDetail', noCache: true }
141
+    },
142
+
143
+    // 编辑药品入库单
144
+    {
145
+      path: '/Pharmacy/in/order/edit',
146
+      component: () => import('@/xt_pages/stock/drugs/drugStockInOrderEdit'),
147
+      name: 'drugStockInOrderEdit',
148
+      hidden: true,
149
+      is_menu: false,
150
+      meta: { title: 'drugStockInOrderEdit', noCache: true }
151
+    },
152
+
153
+    {
154
+      path: '/Pharmacy/in/drugstockflow',
155
+      component: () => import('@/xt_pages/stock/drugs/drugStockFlow'),
156
+      name: 'drugStockFlow',
157
+      hidden: true,
158
+      is_menu: false,
159
+      meta: { title: 'drugStockFlow', noCache: true }
160
+    },
161
+
162
+    {
163
+      path: '/Pharmacy/in/drugbatchnumber',
164
+      component: () => import('@/xt_pages/stock/drugs/drugBatchNumber'),
165
+      name: 'drugBatchNumber',
166
+      hidden: true,
167
+      is_menu: false,
168
+      meta: { title: 'drugBatchNumber', noCache: true }
169
+    },
170
+    {
171
+      path: '/Pharmacy/stockoutorderedit',
172
+      component: () => import('@/xt_pages/stock/stockOutOrderEdit'),
173
+      name: 'stockOutOrderEdit',
174
+      hidden: true,
175
+      is_menu: false,
176
+      meta: { title: 'stockOutOrderEdit', noCache: true }
177
+    },
178
+    {
179
+      path: '/Pharmacy/in/order/edit',
180
+      component: () => import('@/xt_pages/stock/stockInOrderEdit'),
181
+      name: 'stockInOrderEdit',
182
+      hidden: true,
183
+      is_menu: false,
184
+      meta: { title: 'stockInOrderEdit' }
185
+    },
186
+
187
+    {
188
+      path: '/Pharmacy/in/stockflow',
189
+      component: () => import('@/xt_pages/stock/stockFlow'),
190
+      name: 'stockFlow',
191
+      hidden: true,
192
+      is_menu: false,
193
+      meta: { title: 'stockFlow' }
194
+    },
195
+
196
+    {
197
+      path: '/Pharmacy/in/stockbatchnumber',
198
+      component: () => import('@/xt_pages/stock/stockBatchNumber'),
199
+      name: 'stockBatchNumber',
200
+      hidden: true,
201
+      is_menu: false,
202
+      meta: { title: 'stockBatchNumber' }
203
+    },
204
+    {
205
+      path: '/Pharmacy/out/drugstockoutorderedit',
206
+      component: () => import('@/xt_pages/stock/drugs/drugStockOutOrderEdit'),
207
+      name: 'drugStockOutOrderEdit',
208
+      hidden: true,
209
+      is_menu: false,
210
+      meta: { title: 'drugStockOutOrderEdit' }
211
+
212
+    },
213
+    {
214
+      path: '/Pharmacy/cancel/print',
215
+      component: () => import('@/xt_pages/stock/drugs/cancelDrugOrderPrint'),
216
+      name: 'cancelDrugOrderPrint',
217
+      hidden: true,
218
+      is_menu: false,
219
+      meta: { title: 'cancelDrugOrderPrint' }
220
+
221
+    }
222
+  ]
223
+}

+ 26 - 0
src/router/modules/PatientDispensing.js ファイルの表示

@@ -0,0 +1,26 @@
1
+import Layout from '@/views/layout/Layout'
2
+
3
+export default {
4
+  path: '/PatientDispensing',
5
+  component: Layout,
6
+  name:'PatientDispensing',
7
+  redirct: 'noredirect',
8
+  children: [{
9
+    path: '/Pharmacy/PatientDispensing',
10
+    component: () => import('@/xt_pages/Pharmacy/PatientDispensing.vue'),
11
+    name: '患者发药',
12
+    meta: {
13
+      title: '患者发药',
14
+      noCache: true
15
+    }
16
+  },
17
+  // {
18
+  //   path: '/Pharmacy/print/patientPrint',
19
+  //   component: () => import('@/xt_pages/Pharmacy/print/patientPrint.vue'),
20
+  //   hidden: true,
21
+  //   is_menu: false,
22
+  //   name: 'outpatientChargesPrint',
23
+  //   meta: { title: 'outpatientChargesPrint', noCache: true }
24
+  // }
25
+]
26
+}

+ 5 - 4
src/router/modules/outpatientCharges.js ファイルの表示

@@ -33,14 +33,15 @@ export default {
33 33
     {
34 34
         path: '/outpatientCharges/labelPrinting',
35 35
         component: () => import('@/xt_pages/outpatientCharges/labelPrinting'),
36
-        name: 'labelPrinting',
36
+        name: 'OutpatientChargesLabelPrinting',
37 37
         meta: { title: 'labelPrinting', noCache: true }
38 38
     },
39
+    // 此页面需要被缓存
39 40
     {
40 41
         path: '/outpatientCharges/summary',
41 42
         component: () => import('@/xt_pages/outpatientCharges/summary'),
42
-        name: 'summary',
43
-        meta: { title: 'summary', noCache: true }
43
+        name: 'OutpatientChargesSummary',
44
+        meta: { title: 'summary', noCache: true}
44 45
     },
45 46
     {
46 47
         path: '/outpatientCharges/incomeStatistics',
@@ -60,7 +61,7 @@ export default {
60 61
         hidden: true,
61 62
         is_menu: false,
62 63
         name: 'summaryDetail',
63
-        meta: { title: 'summaryDetail', noCache: true }
64
+        meta: { title: 'summaryDetail', noCache: true}
64 65
     },
65 66
     {
66 67
         path: '/outpatientCharges/treatPrint',

+ 11 - 2
src/views/layout/Layout.vue ファイルの表示

@@ -11,6 +11,10 @@
11 11
         <div v-if="bingliShow" :class="index == 1 ? 'navOne navActive' : 'navOne'" @click="clickActive(1,'电子病历')">
12 12
           <i class="iconfont icon-s_bingli navIcon"></i>
13 13
           <p>电子病历</p>
14
+        </div>
15
+         <div v-if="medicianshow" :class="index == 7 ? 'navOne navActive' : 'navOne'" @click="clickActive(7,'药房管理')">
16
+          <i class="iconfont icon-shangcheng-1 navIcon"></i>
17
+          <p>药房管理</p>
14 18
         </div>
15 19
         <div v-if="touxiShow" :class="index == 2 ? 'navOne navActive' : 'navOne'" @click="clickActive(2,'透析管理')">
16 20
           <i class="iconfont icon-computer_fill navIcon"></i>
@@ -121,6 +125,7 @@ export default {
121 125
       bingliShow:true,
122 126
       touxiShow:true,
123 127
       kucunShow:true,
128
+      medicianshow:true,
124 129
       peizhiShow:true,
125 130
       kuyishoppingShow:true,
126 131
       caigouShow:true,
@@ -134,6 +139,7 @@ export default {
134 139
     let caigou = ['supplyManage','supplyList'];
135 140
     let peizhi = ['system','roleManage','DepartManage', 'bedManagement', 'dictionaryManagement', 'templateManagement','showconfig','printTemplate','integration_config','basicConfig'];
136 141
     let kuyishopping = ['kuyiShopping'];
142
+    let medician = ['PatientDispensing','DrugDispensing','DispensingDetails','MedicianManagement']
137 143
     let menzhenArr = [];
138 144
     let bingliArr = [];
139 145
     let touxiArr = [];
@@ -141,7 +147,8 @@ export default {
141 147
     let peizhiArr = [];
142 148
     let kuyishoppingArr = [];
143 149
     let caigouArr =[]
144
-    this.permission_routers.map(item => {
150
+    let medicianArr = []
151
+     this.permission_routers.map(item => {
145 152
       if(menzhen.indexOf(item.name) > -1){
146 153
         menzhenArr.push(item)
147 154
       }else if(bingli.indexOf(item.name) > -1){
@@ -156,6 +163,8 @@ export default {
156 163
         kuyishoppingArr.push(item)
157 164
       }else if(caigou.indexOf(item.name)>-1){
158 165
          caigouArr.push(item)
166
+      }else if(medician.indexOf(item.name) > -1){
167
+        medicianArr.push(item)
159 168
       }
160 169
     });
161 170
     // console.log('menzhenArr.length',menzhenArr.length)
@@ -164,7 +173,7 @@ export default {
164 173
     // console.log('kucunArr.length',kucunArr.length)
165 174
     // console.log('peizhiArr.length',peizhiArr.length)
166 175
     // console.log('kuyishoppingArr.length',kuyishoppingArr.length)
167
-    console.log("cagouArr23323322323",caigouArr.length)
176
+    // console.log("cagouArr23323322323",caigouArr.length)
168 177
     if(menzhenArr.length == 0){
169 178
       this.menzhenShow = false
170 179
     }else if(bingliArr.length == 0){

+ 17 - 0
src/views/layout/components/Sidebar/index.vue ファイルの表示

@@ -102,6 +102,23 @@ export default {
102 102
             let a = false;
103 103
             this.$emit('func',a)
104 104
           }
105
+        }else if(newVal == '药房管理'){
106
+          let nameArr = ['PatientDispensing','DrugDispensing','DispensingDetails','MedicianManagement']
107
+          // console.log('permission_routers',this.permission_routers)
108
+          let routerArr = [];
109
+          this.permission_routers.map(item => {
110
+            if(nameArr.indexOf(item.name) > -1){
111
+              routerArr.push(item)
112
+            }
113
+          });
114
+          this.arr = routerArr;
115
+          if(this.arr.length > 0){
116
+            let a = true;
117
+            this.$emit('func',a)
118
+          }else{
119
+            let a = false;
120
+            this.$emit('func',a)
121
+          }
105 122
         }else if(newVal == '透析管理'){
106 123
           let nameArr = ['home','workforce', 'dialysisrecord', 'dialysis', 'medicalScheduling', 'signIndex', 'qcd', 'device', 'quality_control'];
107 124
           // console.log('permission_routers',this.permission_routers)

+ 26 - 0
src/xt_pages/Pharmacy/ConsumablesManagement.vue ファイルの表示

@@ -0,0 +1,26 @@
1
+<template>
2
+  <div class="main-contain">耗材管理</div>
3
+</template>
4
+
5
+<script>
6
+import BreadCrumb from "@/xt_pages/components/bread-crumb";
7
+export default {
8
+  components: {
9
+    BreadCrumb,
10
+  },
11
+  data() {
12
+    return {
13
+        crumbs: [
14
+        { path: false, name: "耗材管理" },
15
+        { path: "/Pharmacy/ConsumablesManagement", name: "耗材管理" },
16
+      ],
17
+    };
18
+  },
19
+
20
+  methods: {},
21
+  created() {},
22
+};
23
+</script>
24
+
25
+<style rel="stylesheet/css" lang="scss" scoped>
26
+</style>

+ 133 - 0
src/xt_pages/Pharmacy/DispensingDetails.vue ファイルの表示

@@ -0,0 +1,133 @@
1
+<template>
2
+  <div class="main-contain">
3
+    <div class="position">
4
+      <bread-crumb :crumbs="crumbs"></bread-crumb>
5
+    </div>
6
+    <div class="app-container">
7
+      <div
8
+        style="
9
+          justify-content: space-between;
10
+          margin: 0px 0 12px 0;
11
+          display: flex;
12
+          align-items: center;
13
+        "
14
+      >
15
+        <div>
16
+          <el-input
17
+            size="small"
18
+            style="width: 200px; margin-left: 10px"
19
+            class="filter-item"
20
+            v-model="name"
21
+            placeholder="请输入患者姓名"
22
+          ></el-input>
23
+
24
+          <el-date-picker
25
+            size="small"
26
+            v-model="start_time"
27
+            prefix-icon="el-icon-date"
28
+            :editable="false"
29
+            style="width: 196px"
30
+            type="date"
31
+            placeholder="选择日期时间"
32
+            align="right"
33
+            format="yyyy-MM-dd"
34
+            value-format="yyyy-MM-dd"
35
+            @change="startTimeChange"
36
+          ></el-date-picker
37
+          >-
38
+          <el-date-picker
39
+            size="small"
40
+            v-model="end_time"
41
+            prefix-icon="el-icon-date"
42
+            :editable="false"
43
+            style="width: 196px"
44
+            type="date"
45
+            placeholder="选择日期时间"
46
+            align="right"
47
+            format="yyyy-MM-dd"
48
+            value-format="yyyy-MM-dd"
49
+            @change="endTimeChange"
50
+          ></el-date-picker>
51
+
52
+          <el-button
53
+            size="small"
54
+            class="filter-item"
55
+            type="primary"
56
+            icon="el-icon-search"
57
+            @click="search"
58
+            >查询</el-button
59
+          >
60
+        </div>
61
+      </div>
62
+      <el-table
63
+        :row-style="{ color: '#303133' }"
64
+        :header-cell-style="{
65
+          backgroundColor: 'rgb(245, 247, 250)',
66
+          color: '#606266',
67
+        }"
68
+        style="width: 1651px"
69
+        :data="tableList"
70
+        :class="signAndWeighBoxPatients"
71
+        border
72
+      >
73
+        <el-table-column type="index" label="序号" align="center" width="250">
74
+        </el-table-column>
75
+        <el-table-column label="患者名称" align="center" width="300">
76
+          <template slot-scope="scope"> </template>
77
+        </el-table-column>
78
+
79
+        <el-table-column label="开立医生" align="center" width="300">
80
+          <template slot-scope="scope"> </template>
81
+        </el-table-column>
82
+        <el-table-column label="发药时间" align="center" width="400">
83
+          <template slot-scope="scope"> </template>
84
+        </el-table-column>
85
+        <el-table-column label="操作" align="center" width="400">
86
+          <template slot-scope="scope">
87
+            <el-button type="primary" @click="views">查看</el-button>
88
+          </template>
89
+        </el-table-column>
90
+      </el-table>
91
+    </div>
92
+
93
+    <details-print
94
+      ref="detailsprint"
95
+      :visibility="isVisibility"
96
+      :propsTable="propsTable"
97
+    >
98
+    </details-print>
99
+  </div>
100
+</template>
101
+
102
+<script>
103
+import detailsPrint from "./print/details.vue";
104
+import BreadCrumb from "@/xt_pages/components/bread-crumb";
105
+export default {
106
+  components: {
107
+    detailsPrint,
108
+    BreadCrumb,
109
+  },
110
+  data() {
111
+    return {
112
+      crumbs: [
113
+        { path: false, name: "发药明细" },
114
+        { path: "/Pharmacy/DispensingDetails", name: "发药明细" },
115
+      ],
116
+      name: "",
117
+      tableList: [{}],
118
+      signAndWeighBoxPatients: "sign-and-weigh-box-patients",
119
+    };
120
+  },
121
+
122
+  methods: {
123
+    // 查看
124
+    views() {
125
+      this.$refs.detailsprint.show();
126
+    },
127
+  },
128
+  created() {},
129
+};
130
+</script>
131
+
132
+<style rel="stylesheet/css" lang="scss" scoped>
133
+</style>

+ 215 - 0
src/xt_pages/Pharmacy/DrugDispensing.vue ファイルの表示

@@ -0,0 +1,215 @@
1
+<template>
2
+  <div class="main-contain new-main-contain">
3
+    <div class="position">
4
+      <!--      <bread-crumb :crumbs='crumbs'></bread-crumb>-->
5
+      <bread-crumb :crumbs="crumbs"></bread-crumb>
6
+    </div>
7
+    <div
8
+      class="app-container"
9
+      style="display: flex; flex: 1; padding: 10px 20px 0px 20px"
10
+    >
11
+      <div class="mainLeft">
12
+        <div>
13
+          <div class="list">
14
+            <el-date-picker
15
+              style="width: 300px"
16
+              v-model="datepick"
17
+              type="date"
18
+              placeholder="选择日期"
19
+            >
20
+            </el-date-picker>
21
+          </div>
22
+
23
+          <div class="list">
24
+            <el-radio-group v-model="state">
25
+              <el-radio :label="1">待发药</el-radio>
26
+              <el-radio :label="2">已发药</el-radio>
27
+            </el-radio-group>
28
+          </div>
29
+          <div class="list">
30
+            <el-input
31
+              size="small"
32
+              style="width: 239px"
33
+              v-model="keywords"
34
+              class="filter-item"
35
+              placeholder="请输入药品名称"
36
+            />
37
+            <el-button
38
+              size="small"
39
+              class="filter-item"
40
+              type="primary"
41
+              @click="searchAction"
42
+              >搜索
43
+            </el-button>
44
+          </div>
45
+
46
+          <el-table
47
+            :height="tableHeight"
48
+            :data="tableData"
49
+            border
50
+            style="width: 100%"
51
+          >
52
+            <el-table-column prop="name" label="名称" width="100">
53
+            </el-table-column>
54
+            <el-table-column prop="specifications" label="规格" width="100">
55
+            </el-table-column>
56
+            <el-table-column prop="stock" label="库存" width="100">
57
+            </el-table-column>
58
+          </el-table>
59
+        </div>
60
+      </div>
61
+      <div class="mainRight">
62
+        <div class="titlelist">
63
+          <el-button type="primary" @click="dispense" v-if="state == 1"
64
+            >发药</el-button
65
+          >
66
+          <el-button type="primary" @click="toPrint">打印</el-button>
67
+          <el-button type="primary" v-if="state == 1">设置</el-button>
68
+        </div>
69
+        <el-divider></el-divider>
70
+        <div>
71
+          <el-table
72
+            :height="tableHeight"
73
+            :data="tableData_list"
74
+            border
75
+            style="width: 1328px"
76
+            @selection-change="handleSelectionChange"
77
+          >
78
+            >
79
+            <el-table-column type="selection" width="55"> </el-table-column>
80
+            <el-table-column type="index" label="序号" width="120" align="center">
81
+            </el-table-column>
82
+            <el-table-column prop="name" label="患者名称" width="180" align="center">
83
+            </el-table-column>
84
+            <el-table-column prop="name" label="单次用量" width="170" align="center">
85
+            </el-table-column>
86
+            <el-table-column prop="name" label="用法" width="160" align="center">
87
+            </el-table-column>
88
+            <el-table-column prop="name" label="频率" width="160" align="center">
89
+            </el-table-column>
90
+            <el-table-column prop="name" label="天数" width="160" align="center">
91
+            </el-table-column>
92
+            <el-table-column prop="name" label="总量" width="160" align="center">
93
+            </el-table-column>
94
+            <el-table-column prop="name" label="数据来源" width="162" align="center">
95
+            </el-table-column>
96
+          </el-table>
97
+        </div>
98
+        <div style="margin-top">诊断时间:2022-05-07 19:22:16</div>
99
+      </div>
100
+    </div>
101
+
102
+    <drug-print
103
+      ref="drugprint"
104
+      :visibility="isVisibility"
105
+      :propsTable="propsTable"
106
+      :state="state"
107
+    >
108
+    </drug-print>
109
+  </div>
110
+</template>
111
+
112
+<script>
113
+import drugPrint from "./print/drugPrint.vue";
114
+import BreadCrumb from "@/xt_pages/components/bread-crumb";
115
+export default {
116
+  components: {
117
+    BreadCrumb,
118
+    drugPrint,
119
+  },
120
+  data() {
121
+    return {
122
+      crumbs: [
123
+        { path: false, name: "药品发药" },
124
+        { path: "/Pharmacy/DrugDispensing", name: "药品发药" },
125
+      ],
126
+      tableHeight: 400,
127
+      datepick: "",
128
+      state: 1,
129
+      waitmount: 0,
130
+      alreadmount: 0,
131
+      tableData: [],
132
+      tableData_list: [],
133
+      multipleSelection: [],
134
+    };
135
+  },
136
+
137
+  methods: {
138
+    // 跳转打印页面
139
+    toPrint() {
140
+      // this.$router.push({ path: "/Pharmacy/print/patientPrint" });
141
+      this.$refs.drugprint.show();
142
+    },
143
+    handleSelectionChange(val) {
144
+      this.multipleSelection = val;
145
+    },
146
+
147
+    // 药品发药
148
+    dispense() {
149
+      var params = {};
150
+      this.$confirm("确定是否对该药品进行发药?", "患者发药", {
151
+        confirmButtonText: "确 定",
152
+        cancelButtonText: "取 消",
153
+        type: "warning",
154
+      })
155
+        .then(() => {})
156
+        .catch(() => {});
157
+    },
158
+
159
+    // 药品退药
160
+    endispense() {
161
+      var params = {};
162
+      this.$confirm("确定是否对该药品进行退药?", "患者退药", {
163
+        confirmButtonText: "确 定",
164
+        cancelButtonText: "取 消",
165
+        type: "warning",
166
+      })
167
+        .then(() => {})
168
+        .catch(() => {});
169
+    },
170
+
171
+    handleSelectionChange(val) {
172
+      this.multipleSelection = val;
173
+    },
174
+  },
175
+  created() {},
176
+};
177
+</script>
178
+
179
+<style rel="stylesheet/css" lang="scss" scoped>
180
+.new-main-contain {
181
+  height: 100%;
182
+  display: flex;
183
+  flex-direction: column;
184
+}
185
+
186
+.app-container {
187
+  height: 100%;
188
+}
189
+.mainLeft {
190
+  width: 300px;
191
+  height: 100%;
192
+  display: flex;
193
+  flex-direction: column;
194
+
195
+  .el-radio {
196
+    margin-right: 75px;
197
+  }
198
+
199
+  .list {
200
+    margin: 10px 0;
201
+  }
202
+}
203
+.mainRight {
204
+  margin-left: 10px;
205
+  flex: 1;
206
+  height: 100%;
207
+  display: flex;
208
+  flex-direction: column;
209
+  overflow-y: auto;
210
+  .titlelist {
211
+    display: flex;
212
+    justify-content: flex-end;
213
+  }
214
+}
215
+</style>

+ 26 - 0
src/xt_pages/Pharmacy/MedicianManagement.vue ファイルの表示

@@ -0,0 +1,26 @@
1
+<template>
2
+  <div class="main-contain">药品管理</div>
3
+</template>
4
+
5
+<script>
6
+import BreadCrumb from "@/xt_pages/components/bread-crumb";
7
+export default {
8
+  components: {
9
+    BreadCrumb,
10
+  },
11
+  data() {
12
+    return {
13
+        crumbs: [
14
+        { path: false, name: "药品管理" },
15
+        { path: "/Pharmacy/MedicianManagement", name: "药品管理" },
16
+      ],
17
+    };
18
+  },
19
+
20
+  methods: {},
21
+  created() {},
22
+};
23
+</script>
24
+
25
+<style rel="stylesheet/css" lang="scss" scoped>
26
+</style>

+ 216 - 0
src/xt_pages/Pharmacy/PatientDispensing.vue ファイルの表示

@@ -0,0 +1,216 @@
1
+<template>
2
+  <div class="main-contain new-main-contain">
3
+    <div class="position">
4
+      <!--      <bread-crumb :crumbs='crumbs'></bread-crumb>-->
5
+      <bread-crumb :crumbs="crumbs"></bread-crumb>
6
+    </div>
7
+    <div
8
+      class="app-container"
9
+      style="display: flex; flex: 1; padding: 10px 20px 0px 20px"
10
+    >
11
+      <div class="mainLeft">
12
+        <div>
13
+          <div class="list">
14
+            <el-date-picker
15
+              style="width: 200px"
16
+              v-model="datepick"
17
+              type="date"
18
+              placeholder="选择日期"
19
+            >
20
+            </el-date-picker>
21
+          </div>
22
+
23
+          <div class="list">
24
+            <el-radio-group v-model="state">
25
+              <el-radio :label="1">待发药{{ waitmount }}人</el-radio>
26
+              <el-radio :label="2">已发药{{ alreadmount }}人</el-radio>
27
+            </el-radio-group>
28
+          </div>
29
+          <div class="list">
30
+            <el-input
31
+              size="small"
32
+              style="width: 130px"
33
+              v-model="keywords"
34
+              class="filter-item"
35
+              placeholder="请输入患者名称"
36
+            />
37
+            <el-button
38
+              size="small"
39
+              class="filter-item"
40
+              type="primary"
41
+              @click="searchAction"
42
+              >搜索
43
+            </el-button>
44
+          </div>
45
+
46
+          <el-table
47
+            :height="tableHeight"
48
+            :data="tableData"
49
+            border
50
+            style="width: 100%"
51
+          >
52
+            <el-table-column prop="date" label="患者姓名" width="100">
53
+            </el-table-column>
54
+            <el-table-column prop="name" label="单据编号" width="100">
55
+            </el-table-column>
56
+          </el-table>
57
+        </div>
58
+      </div>
59
+      <div class="mainRight">
60
+        <div class="titlelist">
61
+          <el-button type="primary" @click="dispense" v-if="state == 1"
62
+            >发药</el-button
63
+          >
64
+          <el-button type="primary" @click="endispense" v-if="state == 2"
65
+            >退药</el-button
66
+          >
67
+          <el-button type="primary" @click="toPrint">打印</el-button>
68
+          <el-button type="primary" v-if="state == 1">设置</el-button>
69
+        </div>
70
+        <el-divider></el-divider>
71
+        <div>
72
+          <el-table
73
+            :height="tableHeight"
74
+            :data="tableData_list"
75
+            border
76
+            style="width: 100%"
77
+          >
78
+            <el-table-column type="index" label="序号" width="120" align="center">
79
+            </el-table-column>
80
+            <el-table-column prop="name" label="名称" width="220" align="center">
81
+            </el-table-column>
82
+            <el-table-column prop="name" label="单次用量" width="170" align="center">
83
+            </el-table-column>
84
+            <el-table-column prop="name" label="用法" width="160" align="center">
85
+            </el-table-column>
86
+            <el-table-column prop="name" label="频率" width="160" align="center">
87
+            </el-table-column>
88
+            <el-table-column prop="name" label="天数" width="160" align="center">
89
+            </el-table-column>
90
+            <el-table-column prop="name" label="总量" width="160" align="center">
91
+            </el-table-column>
92
+            <el-table-column prop="name" label="开立医生" width="160" align="center">
93
+            </el-table-column>
94
+            <el-table-column prop="name" label="数据来源" width="162" align="center">
95
+            </el-table-column>
96
+            <el-table-column prop="name" label="备注" width="170" align="center">
97
+            </el-table-column>
98
+          </el-table>
99
+        </div>
100
+        <div style="margin-top: 25px">诊断时间:2022-05-07 19:22:16</div>
101
+      </div>
102
+    </div>
103
+
104
+    <patient-print
105
+      ref="patientprint"
106
+      :visibility="isVisibility"
107
+      :propsTable="propsTable"
108
+    >
109
+    </patient-print>
110
+  </div>
111
+</template>
112
+
113
+<script>
114
+import BreadCrumb from "@/xt_pages/components/bread-crumb";
115
+import patientPrint from "./print/patientPrint.vue";
116
+export default {
117
+  components: {
118
+    BreadCrumb,
119
+    patientPrint,
120
+  },
121
+  data() {
122
+    return {
123
+      crumbs: [
124
+        { path: false, name: "患者发药" },
125
+        { path: "/Pharmacy/patiantDispensing", name: "患者发药" },
126
+      ],
127
+      tableHeight: 400,
128
+      datepick: "",
129
+      state: 1,
130
+      waitmount: 0,
131
+      alreadmount: 0,
132
+      keywords: "",
133
+      tableData: [],
134
+      propsTable: [],
135
+      tableData_list: [],
136
+      isVisibility: false,
137
+    };
138
+  },
139
+  watch: {
140
+  },
141
+
142
+  methods: {
143
+    // 跳转打印页面
144
+    toPrint() {
145
+      // this.$router.push({ path: "/Pharmacy/print/patientPrint" });
146
+      this.$refs.patientprint.show();
147
+    },
148
+
149
+    // 搜索患者
150
+    searchAction() {},
151
+
152
+    // 药品发药
153
+    dispense() {
154
+      var params = {};
155
+      this.$confirm("确定是否对该药品进行发药?", "患者发药", {
156
+        confirmButtonText: "确 定",
157
+        cancelButtonText: "取 消",
158
+        type: "warning",
159
+      })
160
+        .then(() => {})
161
+        .catch(() => {});
162
+    },
163
+
164
+    // 药品退药
165
+    endispense() {
166
+      var params = {};
167
+      this.$confirm("确定是否对该药品进行退药?", "患者退药", {
168
+        confirmButtonText: "确 定",
169
+        cancelButtonText: "取 消",
170
+        type: "warning",
171
+      })
172
+        .then(() => {})
173
+        .catch(() => {});
174
+    },
175
+  },
176
+  created() {},
177
+};
178
+</script>
179
+
180
+<style rel="stylesheet/css" lang="scss" scoped>
181
+.new-main-contain {
182
+  height: 100%;
183
+  display: flex;
184
+  flex-direction: column;
185
+}
186
+
187
+.app-container {
188
+  height: 100%;
189
+}
190
+.mainLeft {
191
+  width: 200px;
192
+  height: 100%;
193
+  display: flex;
194
+  flex-direction: column;
195
+
196
+  .el-radio {
197
+    margin-right: 5px;
198
+  }
199
+
200
+  .list {
201
+    margin: 10px 0;
202
+  }
203
+}
204
+.mainRight {
205
+  margin-left: 10px;
206
+  flex: 1;
207
+  height: 100%;
208
+  display: flex;
209
+  flex-direction: column;
210
+  overflow-y: auto;
211
+  .titlelist {
212
+    display: flex;
213
+    justify-content: flex-end;
214
+  }
215
+}
216
+</style>

+ 0 - 0
src/xt_pages/Pharmacy/css/PatientDispensing.css ファイルの表示


+ 207 - 0
src/xt_pages/Pharmacy/print/details.vue ファイルの表示

@@ -0,0 +1,207 @@
1
+<template>
2
+  <el-dialog
3
+    title="打印"
4
+    :visible.sync="visibility"
5
+    :close-on-click-modal="isClose"
6
+    :close-on-press-escape="isClose"
7
+  >
8
+    <el-button type="primary" @click="print" class="print_style"
9
+      >打印</el-button
10
+    >
11
+    <div id="dialysis-print-box-1" class="dialysis-print-box-1">
12
+      <!-- <div class="list_title">
13
+        <div>药品名称:</div>
14
+        <div>规格:</div>
15
+        <div>发药状态:</div>
16
+        <div v-if="state==2">领药人:</div>
17
+      </div> -->
18
+      <el-tabs v-model="activeName" @tab-click="handleClick">
19
+        <el-tab-pane label="处方详情" name="first">
20
+          <el-tabs v-model="editableTabsValue" type="card">
21
+            <el-tab-pane
22
+              :key="item.name"
23
+              v-for="(item, index) in editableTabs"
24
+              :label="item.title"
25
+            >
26
+              Rp
27
+              <el-table
28
+                style="width: 1020px; margin: 0 auto"
29
+                :data="tableData"
30
+                border
31
+                max-height="450"
32
+                :header-cell-style="{ backgroundColor: 'rgb(245, 247, 250)' }"
33
+              >
34
+                <el-table-column prop="name" label="名称" width="160" align="center">
35
+                </el-table-column>
36
+                 <el-table-column prop="group" label="组" width="100" align="center">
37
+                </el-table-column>
38
+                <el-table-column prop="SingleDosage" label="单次用量" width="100" align="center">
39
+               </el-table-column>
40
+                <el-table-column prop="use" label="用法" width="120" align="center">
41
+                </el-table-column>
42
+                <el-table-column prop="frequency" label="频率" width="120" align="center">
43
+                </el-table-column>
44
+                <el-table-column prop="day" label="天数" width="120" align="center">
45
+                </el-table-column>
46
+                <el-table-column prop="amount" label="总量" width="90" align="center">
47
+                </el-table-column>
48
+                <el-table-column prop="price" label="单价" width="100" align="center">
49
+                </el-table-column>
50
+                <el-table-column prop="tips" label="备注" width="120" align="center">
51
+                </el-table-column>
52
+              </el-table>
53
+            </el-tab-pane>
54
+          </el-tabs>
55
+        </el-tab-pane>
56
+        <el-tab-pane label="病历详情" name="second">病历详情</el-tab-pane>
57
+      </el-tabs>
58
+    </div>
59
+  </el-dialog>
60
+</template>
61
+<script>
62
+import Vue from "vue";
63
+import print from "print-js";
64
+import printutils from "./print.js";
65
+
66
+export default {
67
+  data() {
68
+    return {
69
+      visibility: false,
70
+      tableData: [{}],
71
+      isClose: false,
72
+      activeName: "first",
73
+      editableTabsValue: "2",
74
+      editableTabs: [
75
+        {
76
+          title: "处方1",
77
+        },
78
+        {
79
+          title: "处方2",
80
+        },
81
+      ],
82
+      tabIndex: 2,
83
+    };
84
+  },
85
+  props: {
86
+    propForm: {
87
+      type: Object,
88
+    },
89
+
90
+    state: {
91
+      type: Number,
92
+    },
93
+  },
94
+
95
+  methods: {
96
+    hide: function () {
97
+      this.visibility = false;
98
+      for (let i = 0; i < this.propForm.goods.length; i++) {
99
+        for (let key in this.propForm.goods[i]) {
100
+          if (key != "index") {
101
+            this.propForm.goods[i][key].isSelected = false;
102
+          }
103
+        }
104
+      }
105
+    },
106
+    show: function () {
107
+      this.visibility = true;
108
+    },
109
+
110
+    comfirm: function (formName) {
111
+      this.goodInfo = [];
112
+      this.goodInfoTableData = [];
113
+      this.$emit("dialog-comfirm", this.getValue());
114
+      this.$refs.multipleTable.clearSelection();
115
+      this.$refs.table.setCurrentRow(null);
116
+    },
117
+    getValue() {},
118
+
119
+    handleClick(tab, event) {
120
+      console.log(tab, event);
121
+    },
122
+    // 打印
123
+    print() {
124
+      Vue.prototype.printJson = printutils.printJson;
125
+      this.printJson({
126
+        // title: ``, // 打印出来的标题
127
+        data: this.tableData, // 需要打印的数据
128
+        serial: false, // 是否需要打印序列号
129
+        fields: [
130
+          // 需要打印的字段
131
+
132
+          "name",
133
+          "group",
134
+          "SingleDosage",
135
+          "use",
136
+          "frequency",
137
+          "day",
138
+          "amount",
139
+          "price",
140
+          "tips",
141
+        ],
142
+        properties: [
143
+          // 需要打印的字段对应的表头名
144
+
145
+          {
146
+            field: "name",
147
+            displayName: "名称",
148
+          },
149
+            {
150
+            field: "group",
151
+            displayName: "组",
152
+          },
153
+          {
154
+            field: "SingleDosage",
155
+            displayName: "单词用量",
156
+          },
157
+          {
158
+            field: "use",
159
+            displayName: "用法",
160
+          },
161
+          {
162
+            field: "frequency",
163
+            displayName: "频率",
164
+          },
165
+          {
166
+            field: "day",
167
+            displayName: "天数",
168
+          },
169
+          {
170
+            field: "amount",
171
+            displayName: "总量",
172
+          },
173
+          {
174
+            field: "price",
175
+            displayName: "单价",
176
+          },
177
+          
178
+          {
179
+            field: "tips",
180
+            displayName: "备注",
181
+          },
182
+        ],
183
+      });
184
+    },
185
+  },
186
+};
187
+</script>
188
+
189
+<style lang="scss" scoped>
190
+.print_style {
191
+  position: absolute;
192
+  right: 10px;
193
+  top: 42px;
194
+}
195
+
196
+.list_title {
197
+  width: 940px;
198
+  border-bottom: 1px solid;
199
+  display: flex;
200
+  margin: 30px auto;
201
+
202
+  div {
203
+    width: 230px;
204
+    padding: 10px 0;
205
+  }
206
+}
207
+</style>

+ 181 - 0
src/xt_pages/Pharmacy/print/drugPrint.vue ファイルの表示

@@ -0,0 +1,181 @@
1
+<template>
2
+  <el-dialog
3
+    title="打印"
4
+    :visible.sync="visibility"
5
+    :close-on-click-modal="isClose"
6
+    :close-on-press-escape="isClose"
7
+  >
8
+    <el-button type="primary" @click="print" class="print_style"
9
+      >打印</el-button
10
+    >
11
+    <div id="dialysis-print-box-1" class="dialysis-print-box-1">
12
+      <div class="list_title">
13
+        <div>药品名称:</div>
14
+        <div>规格:</div>
15
+        <div>发药状态:</div>
16
+        <div v-if="state==2">领药人:</div>
17
+      </div>
18
+
19
+      <el-table
20
+        style="width: 940px; margin: 0 auto"
21
+        :data="tableData"
22
+        border
23
+        max-height="450"
24
+        :header-cell-style="{ backgroundColor: 'rgb(245, 247, 250)' }"
25
+      >
26
+        <el-table-column type="index" prop="index" label="序号" width="60">
27
+        </el-table-column>
28
+        <el-table-column prop="name" label="患者姓名" width="160">
29
+        </el-table-column>
30
+        <el-table-column prop="SingleDosage" label="单次用量" width="120">
31
+        </el-table-column>
32
+        <el-table-column prop="use" label="用法" width="120"> </el-table-column>
33
+        <el-table-column prop="frequency" label="频率" width="120">
34
+        </el-table-column>
35
+        <el-table-column prop="day" label="天数" width="120"> </el-table-column>
36
+        <el-table-column prop="amount" label="总量" width="120">
37
+        </el-table-column>
38
+        <el-table-column prop="tips" label="数据来源" width="120">
39
+        </el-table-column>
40
+      </el-table>
41
+    </div>
42
+  </el-dialog>
43
+</template>
44
+<script>
45
+import Vue from "vue";
46
+import print from "print-js";
47
+import printutils from "./print.js";
48
+
49
+export default {
50
+  data() {
51
+    return {
52
+      visibility: false,
53
+      tableData: [{}],
54
+      isClose:false
55
+    };
56
+  },
57
+  props: {
58
+    propForm: {
59
+      type: Object,
60
+    },
61
+
62
+    state:{
63
+        type:Number
64
+    }
65
+  },
66
+
67
+  methods: {
68
+    // isClose() {
69
+    //   this.visibility = false;
70
+    // },
71
+
72
+    hide: function () {
73
+      this.visibility = false;
74
+      for (let i = 0; i < this.propForm.goods.length; i++) {
75
+        for (let key in this.propForm.goods[i]) {
76
+          if (key != "index") {
77
+            this.propForm.goods[i][key].isSelected = false;
78
+          }
79
+        }
80
+      }
81
+    },
82
+    show: function () {
83
+      this.visibility = true;
84
+    },
85
+
86
+    comfirm: function (formName) {
87
+      this.goodInfo = [];
88
+      this.goodInfoTableData = [];
89
+      this.$emit("dialog-comfirm", this.getValue());
90
+      this.$refs.multipleTable.clearSelection();
91
+      this.$refs.table.setCurrentRow(null);
92
+    },
93
+    getValue() {},
94
+
95
+    // 打印
96
+    print() {
97
+      Vue.prototype.printJson = printutils.printJson;
98
+      //   const style =
99
+      //     '@media print {.list_title{  width: 940px;border-bottom: 1px solid;display: flex;margin: 30px auto}}';
100
+      //   printJS({
101
+      //     printable: "dialysis-print-box-1",
102
+      //     type: "html",
103
+      //     style: style,
104
+      //     scanStyles: false,
105
+      //   });
106
+      this.printJson({
107
+        title: `<div style="width: 940px;border-bottom: 1px solid;display: flex;margin: 30px auto;">
108
+        <div style="width: 230px;padding: 10px 0;">药品名称:${1}</div>
109
+        <div style="width: 230px;padding: 10px 0;">规格:${1}</div>
110
+        <div style="width: 230px;padding: 10px 0;">发药状态:${1}</div>
111
+        </div>`, // 打印出来的标题
112
+        data: this.tableData, // 需要打印的数据
113
+        serial: true, // 是否需要打印序列号
114
+        fields: [
115
+          // 需要打印的字段
116
+
117
+          "name",
118
+          "SingleDosage",
119
+          "use",
120
+          "frequency",
121
+          "day",
122
+          "amount",
123
+          "tips",
124
+        ],
125
+        properties: [
126
+          // 需要打印的字段对应的表头名
127
+
128
+          {
129
+            field: "name",
130
+            displayName: "姓名",
131
+          },
132
+          {
133
+            field: "SingleDosage",
134
+            displayName: "单词用量",
135
+          },
136
+          {
137
+            field: "use",
138
+            displayName: "用法",
139
+          },
140
+          {
141
+            field: "frequency",
142
+            displayName: "频率",
143
+          },
144
+          {
145
+            field: "day",
146
+            displayName: "天数",
147
+          },
148
+          {
149
+            field: "amount",
150
+            displayName: "总量",
151
+          },
152
+          {
153
+            field: "tips",
154
+            displayName: "备注",
155
+          },
156
+        ],
157
+      });
158
+    },
159
+  },
160
+};
161
+</script>
162
+
163
+<style lang="scss" scoped>
164
+.print_style {
165
+  position: absolute;
166
+  right: 10px;
167
+  top: 42px;
168
+}
169
+
170
+.list_title {
171
+  width: 940px;
172
+  border-bottom: 1px solid;
173
+  display: flex;
174
+  margin: 30px auto;
175
+
176
+  div {
177
+    width: 230px;
178
+    padding: 10px 0;
179
+  }
180
+}
181
+</style>

+ 178 - 0
src/xt_pages/Pharmacy/print/patientPrint.vue ファイルの表示

@@ -0,0 +1,178 @@
1
+<template>
2
+  <el-dialog
3
+    title="打印"
4
+    :visible.sync="visibility"
5
+    :close-on-click-modal="isClose"
6
+    :close-on-press-escape="isClose"
7
+  >
8
+    <el-button type="primary" @click="print" class="print_style"
9
+      >打印</el-button
10
+    >
11
+    <div id="dialysis-print-box-1" class="dialysis-print-box-1">
12
+      <div class="list_title">
13
+        <div>患者名称:</div>
14
+        <div>数据来源:</div>
15
+        <div>发药状态:</div>
16
+        <div>领药时间:</div>
17
+      </div>
18
+
19
+      <el-table
20
+        style="width: 940px; margin: 0 auto"
21
+        :data="tableData"
22
+        border
23
+        max-height="450"
24
+        :header-cell-style="{ backgroundColor: 'rgb(245, 247, 250)' }"
25
+      >
26
+        <el-table-column type="index" prop="index" label="序号" width="60">
27
+        </el-table-column>
28
+        <el-table-column prop="name" label="名称" width="160">
29
+        </el-table-column>
30
+        <el-table-column prop="SingleDosage" label="单次用量" width="120">
31
+        </el-table-column>
32
+        <el-table-column prop="use" label="用法" width="120"> </el-table-column>
33
+        <el-table-column prop="frequency" label="频率" width="120">
34
+        </el-table-column>
35
+        <el-table-column prop="day" label="天数" width="120"> </el-table-column>
36
+        <el-table-column prop="amount" label="总量" width="120">
37
+        </el-table-column>
38
+        <el-table-column prop="tips" label="备注" width="120">
39
+        </el-table-column>
40
+      </el-table>
41
+    </div>
42
+  </el-dialog>
43
+</template>
44
+<script>
45
+import Vue from "vue";
46
+import print from "print-js";
47
+import printutils from "./print.js";
48
+
49
+export default {
50
+  data() {
51
+    return {
52
+      visibility: false,
53
+      tableData: [{}],
54
+      isClose:false
55
+    };
56
+  },
57
+  props: {
58
+    propForm: {
59
+      type: Object,
60
+    },
61
+  },
62
+
63
+  methods: {
64
+    // isClose() {
65
+    //   this.visibility = false;
66
+    // },
67
+
68
+    hide: function () {
69
+      this.visibility = false;
70
+      for (let i = 0; i < this.propForm.goods.length; i++) {
71
+        for (let key in this.propForm.goods[i]) {
72
+          if (key != "index") {
73
+            this.propForm.goods[i][key].isSelected = false;
74
+          }
75
+        }
76
+      }
77
+    },
78
+    show: function () {
79
+      this.visibility = true;
80
+    },
81
+
82
+    comfirm: function (formName) {
83
+      this.goodInfo = [];
84
+      this.goodInfoTableData = [];
85
+      this.$emit("dialog-comfirm", this.getValue());
86
+      this.$refs.multipleTable.clearSelection();
87
+      this.$refs.table.setCurrentRow(null);
88
+    },
89
+    getValue() {},
90
+
91
+    // 打印
92
+    print() {
93
+      Vue.prototype.printJson = printutils.printJson;
94
+      //   const style =
95
+      //     '@media print {.list_title{  width: 940px;border-bottom: 1px solid;display: flex;margin: 30px auto}}';
96
+      //   printJS({
97
+      //     printable: "dialysis-print-box-1",
98
+      //     type: "html",
99
+      //     style: style,
100
+      //     scanStyles: false,
101
+      //   });
102
+      this.printJson({
103
+        title: `<div style="width: 940px;border-bottom: 1px solid;display: flex;margin: 30px auto;">
104
+        <div style="width: 230px;padding: 10px 0;">患者名称:${1}</div>
105
+        <div style="width: 230px;padding: 10px 0;">数据来源:${1}</div>
106
+        <div style="width: 230px;padding: 10px 0;">预约状态:${1}</div>
107
+        <div style="width: 230px;padding: 10px 0;">领药时间:${1}</div>
108
+        </div>`, // 打印出来的标题
109
+        data: this.tableData, // 需要打印的数据
110
+        serial: true, // 是否需要打印序列号
111
+        fields: [
112
+          // 需要打印的字段
113
+
114
+          "name",
115
+          "SingleDosage",
116
+          "use",
117
+          "frequency",
118
+          "day",
119
+          "amount",
120
+          "tips",
121
+        ],
122
+        properties: [
123
+          // 需要打印的字段对应的表头名
124
+
125
+          {
126
+            field: "name",
127
+            displayName: "姓名",
128
+          },
129
+          {
130
+            field: "SingleDosage",
131
+            displayName: "单词用量",
132
+          },
133
+          {
134
+            field: "use",
135
+            displayName: "用法",
136
+          },
137
+          {
138
+            field: "frequency",
139
+            displayName: "频率",
140
+          },
141
+          {
142
+            field: "day",
143
+            displayName: "天数",
144
+          },
145
+          {
146
+            field: "amount",
147
+            displayName: "总量",
148
+          },
149
+          {
150
+            field: "tips",
151
+            displayName: "备注",
152
+          },
153
+        ],
154
+      });
155
+    },
156
+  },
157
+};
158
+</script>
159
+
160
+<style lang="scss" scoped>
161
+.print_style {
162
+  position: absolute;
163
+  right: 10px;
164
+  top: 42px;
165
+}
166
+
167
+.list_title {
168
+  width: 940px;
169
+  border-bottom: 1px solid;
170
+  display: flex;
171
+  margin: 30px auto;
172
+
173
+  div {
174
+    width: 230px;
175
+    padding: 10px 0;
176
+  }
177
+}
178
+</style>

+ 53 - 0
src/xt_pages/Pharmacy/print/print.js ファイルの表示

@@ -0,0 +1,53 @@
1
+import printJS from "print-js";
2
+/**
3
+ * 
4
+ * @param {
5
+ *      title:"", // 表名
6
+ *      serial:false, // 是否需要序号
7
+ *      data:[], // 要打印的数据
8
+ *      fields:[], // 需要打印的字段
9
+ *      properties:[
10
+ *          {
11
+ *              field:"字段名(对应fields)",
12
+ *              displayName:"打印时展⽰的中⽂表头名字",
13
+ *              columnSize:"定义列宽,⽤百分⽐来表⽰⼤⼩,可不传"
14
+ *          }
15
+ *      ],
16
+ * } args
17
+ *  
18
+ */
19
+function printJson(args = {}) {
20
+    let data = [];
21
+    for (let di = 0; di < args.data.length; di++) {
22
+        var obj = {}
23
+        // 如果需要序列号则是列表index+1
24
+        if (args.serial) {
25
+            obj.serial = di + 1
26
+        }
27
+        // 遍历需要打印的字段与列表字段⼀⼀对应,形成键值对
28
+        for (let fi = 0; fi < args.fields.length; fi++) {
29
+            obj[args.fields[fi]] = args.data[di][args.fields[fi]]
30
+        }
31
+        data.push(obj)
32
+    }
33
+    let properties = args.properties;
34
+    if (args.serial) {
35
+        properties.unshift({
36
+            field: "serial",
37
+            displayName: "序号",
38
+        })
39
+    }
40
+    printJS({
41
+        printable: data,
42
+        properties: properties || [],
43
+        header: args.title || "",
44
+        // 样式设置
45
+        type: 'json',  // 打印的格式
46
+        headerStyle:'display:flex;  .list_title{  width: 940px;border-bottom: 1px solid;display: flex;margin: 30px auto;}',
47
+        gridStyle: 'border: 1px solid #000;text-align:center;padding:5px 0;', // 表格样式
48
+        gridHeaderStyle: 'border: 1px solid #000;text-align:center;padding:5px 0;',//表头样式
49
+    });
50
+}
51
+export default {
52
+    printJson
53
+}

+ 0 - 0
src/xt_pages/Pharmacy/template/P_dispense.vue ファイルの表示


File diff suppressed because it is too large
+ 807 - 819
src/xt_pages/outpatientCharges/listPrint.vue


+ 169 - 124
src/xt_pages/outpatientCharges/listTemplate/printTwo10265.vue ファイルの表示

@@ -1,103 +1,140 @@
1 1
  <template>
2 2
   <div id="list-print" class="list-print">
3 3
     <div v-for="(i, index) in pageArr.length" :key="index">
4
-      <div class="listTitle">{{$store.getters.xt_user.org.org_name}}费用清单</div>
5
-      <!-- <div class="listTitle" :style="{position: 'absolute',top:(20 + (index * 160))  + 'px',left:200+ 'px',}">赤峰市肿瘤医院病人费用明细清单</div> -->
6
-      <div class="listInfo">
7
-        <div>个人编号:{{order.psn_no}}</div>
8
-        <div>住院号:{{ order.mdtrt_id }}</div>
9
-<!--        <div>次数:</div>-->
10
-        <div>姓名:{{ order.psn_name }}</div>
11
-        <div>性别:{{ patient.gender == 1 ? "男" : "女" }}</div>
12
-      </div>
13
-
14
-      <div class="listInfo">
15
-        <div>入院科室:血液透析室</div>
16
-        <div>出院科室:血液透析室</div>
17
-        <!-- <div>入院日期:{{hospital_record.in_hosptial_time.split(' ')[0]}}</div> -->
18
-        <!-- <div>出院日期:{{hospital_record.out_hosptial_time.split(' ')[0]}}</div> -->
19
-        <!-- <div>住院天数:{{getDay(hospital_record.in_hosptial_time.split(' ')[0] ,hospital_record.out_hosptial_time.split(' ')[0])}}</div> -->
20
-      </div>
21
-
22
-      <div
23
-        class="listInfo"
24
-        style="padding-bottom: 10px; border-bottom: 1px solid"
25
-      >
26
-        <div>出院诊断:尿毒症</div>
27
-        <div>床位号:</div>
28
-        <div v-if="order&&order.insutype == '390'">费别:城乡居民基本医疗保险</div>
29
-        <div v-if="order&&order.insutype == '310'">费别:职工基本医疗保险</div>
30
-
31
-      </div>
32
-
33
-      <table
4
+      <TABLE
34 5
         class="listTable"
35
-        border="1"
36
-        frame="hsides"
37
-        rules="none"
38
-        v-for="item in list"
6
+        border="0"
39 7
         cellspacing="0"
8
+        style="font-size: 14px"
9
+        align="center"
40 10
       >
41
-        <tr style="border: 1px solid" >
42
-          <td style="width: 19%">账单名称:{{item.med_chrgitm_name}}</td>
43
-          <td style="width: 21%">费用名称</td>
44
-          <td style="width: 14%">规格</td>
45
-          <td style="width: 10%">类别</td>
46
-          <td style="width: 10%">单价(元)</td>
47
-          <td style="width: 6%">数量</td>
48
-          <td style="width: 20%">金额(元)</td>
49
-        </tr>
50
-        <tr v-for="subItem in item.details">
51
-          <td style="width: 19%;white-space: nowrap;">{{subItem.name}}</td>
52
-          <td style="width: 21%;white-space: nowrap;"></td>
53
-          <td style="width: 14%">{{ subItem.spec }}</td>
54
-          <td style="width: 10%;white-space: nowrap;">{{ subItem.medicine_insurance_kind }}</td>
55
-          <td style="width: 10%">{{ subItem.price.toFixed(2) }}</td>
56
-          <td style="width: 6%;white-space: nowrap;">{{ subItem.count }}{{ subItem.unit }}</td>
57
-          <td style="width: 20%">{{ (subItem.price * subItem.count).toFixed(2) }}</td>
58
-        </tr>
59
-
60
-        <tr>
61
-          <td style="width: 20%;white-space: nowrap;">甲类:{{item.jiaTotal?item.jiaTotal:"0.00"}}</td>
62
-          <td style="width: 20%;white-space: nowrap;" >乙类:{{item.yiTotal?item.yiTotal:"0.00"}}</td>
63
-          <td style="width: 5%;white-space: nowrap;">丙类:{{item.bingTotal?item.bingTotal:"0.00"}}</td>
64
-          <td style="width: 5%;white-space: nowrap;">其他:{{0.00}}</td>
65
-          <td></td>
66
-          <td style="width: 20%;white-space: nowrap;">小计:{{item.total}}</td>
67
-
68
-        </tr>
69
-      </table>
70
-      <table
71
-          class="listTable"
72
-          border="1"
73
-          frame="below"
74
-          rules="none"
75
-          cellspacing="0"
76
-      >
77
-        <tr>
78
-          <td></td>
79
-          <td></td>
80
-          <td></td>
81
-          <td></td>
82
-          <td></td>
83
-          <td></td>
84
-          <td>总费用:{{order.medfee_sumamt}}</td>
85
-        </tr>
86
-
87
-        <tr>
88
-          <td>报销类别费用合计</td>
89
-          <td>甲类:{{getJaiTotal()?getJaiTotal():"0.00"}}</td>
90
-          <td>乙类:{{getYiTotal()?getYiTotal():"0.00"}}</td>
91
-          <td>丙类:{{getBingTotal()?getBingTotal():"0.00"}}</td>
92
-          <td></td>
93
-          <td>其他:0.00</td>
94
-        </tr>
95
-      </table>
96
-      <div class="tableBottom">
97
-        <!-- <div class="tableBottomOne">制表人:{{ admin.user_name }}</div> -->
98
-        <div class="tableBottomOne">制表日期:{{ getNowTime() }}</div>
99
-        <!-- <div class="tableBottomOne">总费用:{{ order.medfee_sumamt }}元</div> -->
100
-      </div>
11
+        <THEAD style="display: table-header-group; font-weight: bold;border-bottom: 1px solid;">
12
+          <TR
13
+            ><TD colspan="4" align="center" style="font-size: 20px"
14
+              >{{ $store.getters.xt_user.org.org_name }}费用清单</TD
15
+            ></TR
16
+          >
17
+          <TR>
18
+            <TD colspan="1">个人编码:{{ order.psn_no }}</TD>
19
+            <TD>住院号:{{ order.mdtrt_id }}</TD>
20
+            <TD>姓名:{{ order.psn_name }}</TD>
21
+            <TD>性别:{{ patient.gender == 1 ? "男" : "女" }}</TD>
22
+          </TR>
23
+          <TR>
24
+            <TD> 入院科室:血液透析室 </TD>
25
+            <TD> 出院科室:血液透析室 </TD>
26
+          </TR>
27
+          <TR>
28
+            <TD> 出院诊断:尿毒症 </TD>
29
+            <TD> 床位号: </TD>
30
+            <TD v-if="order && order.insutype == '390'">
31
+              费别:城乡居民基本医疗保险
32
+            </TD>
33
+            <TD v-if="order && order.insutype == '310'">
34
+              费别:职工基本医疗保险
35
+            </TD>
36
+            <TD></TD>
37
+          </TR>
38
+        </THEAD>
39
+        <TBODY style="text-align: center">
40
+          <TR>
41
+            <TD colspan="4">
42
+              <Table
43
+                class="listTable"
44
+                border="1"
45
+                frame="hsides"
46
+                rules="none"
47
+                v-for="item in list"
48
+                :key="item"
49
+                cellspacing="0"
50
+              >
51
+                <TR style="border: 1px solid">
52
+                  <TD width="80"
53
+                    >账单名称:{{ item.med_chrgitm_name }}</TD
54
+                  >
55
+                  <TD width="80">费用名称</TD>
56
+                  <TD width="150">规格</TD>
57
+                  <TD width="80">类别</TD>
58
+                  <TD width="80">单价(元)</TD>
59
+                  <TD width="80">数量</TD>
60
+                  <TD width="80">金额(元)</TD>
61
+                </TR>
62
+                <TR v-for="subItem in item.details" :key="subItem">
63
+                  <TD style="white-space: nowrap">{{
64
+                    subItem.name
65
+                  }}</TD>
66
+                  <TD style="white-space: nowrap"></TD>
67
+                  <TD >{{ subItem.spec }}</TD>
68
+                  <TD style="white-space: nowrap">{{
69
+                    subItem.medicine_insurance_kind
70
+                  }}</TD>
71
+                  <TD>{{ subItem.price.toFixed(2) }}</TD>
72
+                  <TD style="white-space: nowrap"
73
+                    >{{ subItem.count }}{{ subItem.unit }}</TD
74
+                  >
75
+                  <TD>{{
76
+                    (subItem.price * subItem.count).toFixed(2)
77
+                  }}</TD>
78
+                </TR>
79
+                <TR>
80
+                  <TD style="white-space: nowrap"
81
+                    >甲类:{{ item.jiaTotal ? item.jiaTotal : "0.00" }}</TD
82
+                  >
83
+                  <TD style="width: 20%; white-space: nowrap"
84
+                    >乙类:{{ item.yiTotal ? item.yiTotal : "0.00" }}</TD
85
+                  >
86
+                  <TD style="width: 5%; white-space: nowrap"
87
+                    >丙类:{{ item.bingTotal ? item.bingTotal : "0.00" }}</TD
88
+                  >
89
+                  <TD style="width: 5%; white-space: nowrap"
90
+                    >其他:{{ 0.0 }}</TD
91
+                  >
92
+                  <TD></TD>
93
+                  <TD style="width: 20%; white-space: nowrap"
94
+                    >小计:{{ item.total }}</TD
95
+                  >
96
+                  <TD></TD>
97
+                </TR>
98
+              </Table>
99
+            </TD>
100
+          </TR>
101
+          <TR>
102
+            <TD colspan="4">
103
+              <Table
104
+                class="listTable"
105
+                border="1"
106
+                frame="below"
107
+                rules="none"
108
+                cellspacing="0"
109
+              >
110
+                <TR>
111
+                  <TD></TD>
112
+                  <TD></TD>
113
+                  <TD></TD>
114
+                  <TD></TD>
115
+                  <TD></TD>
116
+                  <TD></TD>
117
+                  <TD>总费用:{{ order.medfee_sumamt }}</TD>
118
+                </TR>
119
+                <TR>
120
+                  <TD>报销类别费用合计</TD>
121
+                  <TD>甲类:{{ getJaiTotal() ? getJaiTotal() : "0.00" }}</TD>
122
+                  <TD>乙类药品:{{ getYiTotal() ? getYiTotal() : "0.00" }}</TD>
123
+                  <TD>丙类:{{ getBingTotal() ? getBingTotal() : "0.00" }}</TD>
124
+                  <TD>非药品:0.00</TD>
125
+                  <TD></TD>
126
+                  <TD>其他:0.00</TD>
127
+                </TR>
128
+              </Table>
129
+            </TD>
130
+          </TR>
131
+        </TBODY>
132
+        <TFOOT style="display: table-header-group; font-weight: bold">
133
+          <TR>
134
+            <TD colspan="4">制表日期:{{ getNowTime() }}</TD>
135
+          </TR>
136
+        </TFOOT>
137
+      </TABLE>
101 138
     </div>
102 139
   </div>
103 140
 </template>
@@ -118,7 +155,8 @@ export default {
118 155
       default: function () {
119 156
         return {};
120 157
       },
121
-    },hospital_record:{
158
+    },
159
+    hospital_record: {
122 160
       type: Object,
123 161
       default: function () {
124 162
         return {};
@@ -147,40 +185,38 @@ export default {
147 185
   //     this.getPage()
148 186
   // },
149 187
   methods: {
150
-    getDay(dateString1,dateString2){
151
-      var  startDate = Date.parse(dateString1);
152
-      var  endDate = Date.parse(dateString2);
153
-      if (startDate>endDate){
188
+    getDay(dateString1, dateString2) {
189
+      var startDate = Date.parse(dateString1);
190
+      var endDate = Date.parse(dateString2);
191
+      if (startDate > endDate) {
154 192
         return 0;
155 193
       }
156
-      if (startDate==endDate){
194
+      if (startDate == endDate) {
157 195
         return 1;
158 196
       }
159
-      var days=(endDate - startDate)/(1*24*60*60*1000);
160
-      return  days;
161
-
197
+      var days = (endDate - startDate) / (1 * 24 * 60 * 60 * 1000);
198
+      return days;
162 199
     },
163
-    getJaiTotal(){
164
-      var total = 0
165
-      for(let i =0; i < this.list.length; i++){
166
-        total = parseFloat(total) + parseFloat(this.list[i].jiaTotal)
167
-
200
+    getJaiTotal() {
201
+      var total = 0;
202
+      for (let i = 0; i < this.list.length; i++) {
203
+        total = parseFloat(total) + parseFloat(this.list[i].jiaTotal);
168 204
       }
169
-      return total.toFixed(2)
170
-    }, getYiTotal(){
171
-      var total = 0
172
-      for(let i =0; i<  this.list.length; i++){
173
-        total = parseFloat(total) + parseFloat(this.list[i].yiTotal)
174
-
205
+      return total.toFixed(2);
206
+    },
207
+    getYiTotal() {
208
+      var total = 0;
209
+      for (let i = 0; i < this.list.length; i++) {
210
+        total = parseFloat(total) + parseFloat(this.list[i].yiTotal);
175 211
       }
176
-      return total.toFixed(2)
177
-    }, getBingTotal(){
178
-      var total = 0
179
-      for(let i =0; i < this.list.length; i++){
180
-        total = parseFloat(total) + parseFloat(this.list[i].bingTotal)
181
-
212
+      return total.toFixed(2);
213
+    },
214
+    getBingTotal() {
215
+      var total = 0;
216
+      for (let i = 0; i < this.list.length; i++) {
217
+        total = parseFloat(total) + parseFloat(this.list[i].bingTotal);
182 218
       }
183
-      return total.toFixed(2)
219
+      return total.toFixed(2);
184 220
     },
185 221
 
186 222
     getNowTime: function () {
@@ -217,8 +253,8 @@ export default {
217 253
           this.pageArr.push(num);
218 254
         }
219 255
       }
220
-
221
-      console.log(this.pageArr,'this.pageArr')
256
+      console.log(this.list, "lisy");
257
+      console.log(this.pageArr, "this.pageAr");
222 258
     },
223 259
   },
224 260
   watch: {
@@ -263,7 +299,16 @@ export default {
263 299
   border-color: #000;
264 300
   text-align: left;
265 301
 }
266
-.listTable tr td {
302
+.listTable thead {
303
+  width: 100%;
304
+  text-align: center;
305
+  border-collapse: collapse;
306
+  line-height: 40px;
307
+  font-size: 14px;
308
+  border-color: #000;
309
+  text-align: left;
310
+}
311
+.listTable thead tr td {
267 312
   padding: 0 5px;
268 313
 }
269 314
 .tableBottom {

+ 16 - 13
src/xt_pages/stock/drugs/cancelDrugStockDetail.vue ファイルの表示

@@ -1,23 +1,26 @@
1 1
 <template>
2
-  <cancel-stock-order-detail v-if="isEdit == 0"   v-on:edit-record="isEdit = 1"></cancel-stock-order-detail>
2
+  <cancel-stock-order-detail
3
+    v-if="isEdit == 0"
4
+    v-on:edit-record="isEdit = 1"
5
+  ></cancel-stock-order-detail>
3 6
   <cancel-stock-order-edit v-else></cancel-stock-order-edit>
4 7
 </template>
5 8
 
6 9
 <script>
7
-  import CancelStockOrderDetail from './cancelDrugStockOrderDetail'
8
-  import CancelStockOrderEdit from './cancelDrugStockOrderEdit'
9
-  export default {
10
-    name: 'cancelStockDetail',
11
-    components: { CancelStockOrderEdit, CancelStockOrderDetail },
12
-    data() {
13
-      return {
14
-        isEdit: 0
15
-      }
16
-    },
17
-  }
10
+import CancelStockOrderDetail from "./cancelDrugStockOrderDetail";
11
+import CancelStockOrderEdit from "./cancelDrugStockOrderEdit";
12
+export default {
13
+  name: "cancelStockDetail",
14
+  components: { CancelStockOrderEdit, CancelStockOrderDetail },
15
+  data() {
16
+    return {
17
+      isEdit: 0,
18
+    };
19
+  },
18 20
 
21
+
22
+};
19 23
 </script>
20 24
 
21 25
 <style scoped>
22
-
23 26
 </style>

+ 310 - 249
src/xt_pages/stock/drugs/cancelDrugStockOrder.vue ファイルの表示

@@ -6,7 +6,7 @@
6 6
         size="small"
7 7
         @click="AddNewOrder"
8 8
         class="filter-item"
9
-        style="float:right;"
9
+        style="float: right"
10 10
         type="primary"
11 11
         icon="el-icon-circle-plus-outline"
12 12
         >新增
@@ -14,20 +14,27 @@
14 14
     </div>
15 15
 
16 16
     <div class="app-container">
17
-
18 17
       <div class="cell clearfix">
19 18
         <label class="title"><span class="name">仓库</span> :</label>
20
-        <el-select size="small" v-model="storehouse_id" filterable placeholder="请选择仓库" style="width:200px" @change="changeStoreHouse">
21
-            <el-option
22
-              v-for="(option, index) in houseList"
23
-              :key="index"
24
-              :label="option.storehouse_name"
25
-              :value="option.id">
26
-            </el-option>
19
+        <el-select
20
+          size="small"
21
+          v-model="storehouse_id"
22
+          filterable
23
+          placeholder="请选择仓库"
24
+          style="width: 200px"
25
+          @change="changeStoreHouse"
26
+        >
27
+          <el-option
28
+            v-for="(option, index) in houseList"
29
+            :key="index"
30
+            :label="option.storehouse_name"
31
+            :value="option.id"
32
+          >
33
+          </el-option>
27 34
         </el-select>
28 35
         <el-input
29 36
           size="small"
30
-          style="width: 200px;"
37
+          style="width: 200px"
31 38
           class="filter-item"
32 39
           v-model.trim="searchKey"
33 40
           placeholder="单据编码/制单人"
@@ -40,14 +47,14 @@
40 47
           @click="search"
41 48
           >搜索</el-button
42 49
         >
43
-        <div style="margin-left:10px;">
50
+        <div style="margin-left: 10px">
44 51
           <label class="title"><span class="name">退库时间</span> : </label>
45 52
           <el-date-picker
46 53
             size="small"
47 54
             v-model="start_time"
48 55
             prefix-icon="el-icon-date"
49 56
             :editable="false"
50
-            style="width: 196px;"
57
+            style="width: 196px"
51 58
             type="date"
52 59
             placeholder="选择日期时间"
53 60
             align="right"
@@ -61,7 +68,7 @@
61 68
             v-model="end_time"
62 69
             prefix-icon="el-icon-date"
63 70
             :editable="false"
64
-            style="width: 196px;"
71
+            style="width: 196px"
65 72
             type="date"
66 73
             placeholder="选择日期时间"
67 74
             align="right"
@@ -72,8 +79,6 @@
72 79
         </div>
73 80
       </div>
74 81
 
75
-
76
-
77 82
       <div class="filter-container" style="margin-top: 10px">
78 83
         <el-checkbox
79 84
           style="width: 70px"
@@ -81,9 +86,13 @@
81 86
           @change="changeAllSelected"
82 87
           >全选</el-checkbox
83 88
         >
84
-        <el-button size="small" icon="el-icon-delete" @click="batchDelete">删除</el-button>
85
-        <el-button size="small"  type="primary" @click="toPrint">打印</el-button>
86
-        <el-button size="small"  type="primary" @click="toExport">导出</el-button>
89
+        <el-button size="small" icon="el-icon-delete" @click="batchDelete"
90
+          >删除</el-button
91
+        >
92
+        <el-button size="small" type="primary" @click="toPrint">打印</el-button>
93
+        <el-button size="small" type="primary" @click="toExport"
94
+          >导出</el-button
95
+        >
87 96
       </div>
88 97
 
89 98
       <el-table
@@ -97,7 +106,7 @@
97 106
         :row-style="{ color: '#303133' }"
98 107
         :header-cell-style="{
99 108
           backgroundColor: 'rgb(245, 247, 250)',
100
-          color: '#606266'
109
+          color: '#606266',
101 110
         }"
102 111
       >
103 112
         <el-table-column type="selection" width="55"> </el-table-column>
@@ -116,11 +125,10 @@
116 125
 
117 126
         <el-table-column label="仓库名称" align="center">
118 127
           <template slot-scope="scope">
119
-            {{getHouseName(scope.row.storehouse_id)}}
128
+            {{ getHouseName(scope.row.storehouse_id) }}
120 129
           </template>
121 130
         </el-table-column>
122 131
 
123
-
124 132
         <el-table-column label="制单人" align="center">
125 133
           <template slot-scope="scope">
126 134
             {{ getXuserName(scope.row.creater) }}
@@ -164,120 +172,118 @@
164 172
       <el-pagination
165 173
         @size-change="handleSizeChange"
166 174
         @current-change="handleCurrentChange"
167
-        :page-sizes="[5,10, 15, 100]"
175
+        :page-sizes="[5, 10, 15, 100]"
168 176
         :page-size="5"
169 177
         background
170
-        style="margin-top:20px;float: right;margin-bottom:10px;"
178
+        style="margin-top: 20px; float: right; margin-bottom: 10px"
171 179
         layout="total, sizes, prev, pager, next, jumper"
172 180
         :total="total"
173 181
       >
174 182
       </el-pagination>
175
-      <div v-show ="showTable">
183
+      <div v-show="showTable">
176 184
         <el-table
177
-            :data="tableList"
178
-            :class="signAndWeighBoxPatients"
179
-            border
180
-            highlight-current-row
181
-            ref="multipleTableOne"
182
-
183
-            @selection-change="select"
184
-            :row-style="{ color: '#303133' }"
185
-            :header-cell-style="{
186
-              backgroundColor: 'rgb(245, 247, 250)',
187
-              color: '#606266'
188
-            }"
189
-          >
190
-
191
-            <el-table-column label="药品名称" align="center">
192
-              <template slot-scope="scope">
193
-                {{ scope.row.BaseDrugLib.drug_name}}
194
-              </template>
195
-            </el-table-column>
185
+          :data="tableList"
186
+          :class="signAndWeighBoxPatients"
187
+          border
188
+          highlight-current-row
189
+          ref="multipleTableOne"
190
+          @selection-change="select"
191
+          :row-style="{ color: '#303133' }"
192
+          :header-cell-style="{
193
+            backgroundColor: 'rgb(245, 247, 250)',
194
+            color: '#606266',
195
+          }"
196
+        >
197
+          <el-table-column label="药品名称" align="center">
198
+            <template slot-scope="scope">
199
+              {{ scope.row.BaseDrugLib.drug_name }}
200
+            </template>
201
+          </el-table-column>
196 202
 
197 203
           <el-table-column label="规格&单位" align="center">
198
-              <template slot-scope="scope">
199
-                {{ scope.row.BaseDrugLib.dose}}{{scope.row.BaseDrugLib.dose_unit}} * {{scope.row.BaseDrugLib.min_number}}{{scope.row.BaseDrugLib.min_unit}} /{{scope.row.BaseDrugLib.max_unit}}
200
-              </template>
201
-            </el-table-column>
202
-            <el-table-column label="国家编码" align="center">
203
-              <template slot-scope="scope">
204
-                {{ scope.row.BaseDrugLib.medical_insurance_number}}
205
-              </template>
206
-            </el-table-column>
207
-
208
-
209
-            <el-table-column label="仓库名称" align="center">
210
-              <template slot-scope="scope">
211
-                {{getHouseName(scope.row.storehouse_id)}}
212
-              </template>
213
-            </el-table-column>
214
-
215
-            <el-table-column label="退库数量" align="center">
216
-              <template slot-scope="scope">
217
-                {{ scope.row.count}}
218
-              </template>
219
-            </el-table-column>
220
-
221
-            <el-table-column label="退库单位" align="center">
222
-              <template slot-scope="scope">
223
-                {{ scope.row.max_unit}}
224
-              </template>
225
-            </el-table-column>
226
-
227
-            <el-table-column label="退库单价" align="center">
228
-              <template slot-scope="scope">
229
-                {{ scope.row.price}}
230
-              </template>
231
-            </el-table-column>
232
-
233
-            <!-- <el-table-column label="批次" align="center">
204
+            <template slot-scope="scope">
205
+              {{ scope.row.BaseDrugLib.dose
206
+              }}{{ scope.row.BaseDrugLib.dose_unit }} *
207
+              {{ scope.row.BaseDrugLib.min_number
208
+              }}{{ scope.row.BaseDrugLib.min_unit }} /{{
209
+                scope.row.BaseDrugLib.max_unit
210
+              }}
211
+            </template>
212
+          </el-table-column>
213
+          <el-table-column label="国家编码" align="center">
214
+            <template slot-scope="scope">
215
+              {{ scope.row.BaseDrugLib.medical_insurance_number }}
216
+            </template>
217
+          </el-table-column>
218
+
219
+          <el-table-column label="仓库名称" align="center">
220
+            <template slot-scope="scope">
221
+              {{ getHouseName(scope.row.storehouse_id) }}
222
+            </template>
223
+          </el-table-column>
224
+
225
+          <el-table-column label="退库数量" align="center">
226
+            <template slot-scope="scope">
227
+              {{ scope.row.count }}
228
+            </template>
229
+          </el-table-column>
230
+
231
+          <el-table-column label="退库单位" align="center">
232
+            <template slot-scope="scope">
233
+              {{ scope.row.max_unit }}
234
+            </template>
235
+          </el-table-column>
236
+
237
+          <el-table-column label="退库单价" align="center">
238
+            <template slot-scope="scope">
239
+              {{ scope.row.price }}
240
+            </template>
241
+          </el-table-column>
242
+
243
+          <!-- <el-table-column label="批次" align="center">
234 244
               <template slot-scope="scope">
235 245
                 {{ scope.row.batch_number}}
236 246
               </template>
237 247
             </el-table-column> -->
238 248
 
239
-            <el-table-column label="品名/注册证号(备案凭证号)" align="center">
240
-              <template slot-scope="scope">
241
-                {{ scope.row.register_account}}
242
-              </template>
243
-            </el-table-column>
249
+          <el-table-column label="品名/注册证号(备案凭证号)" align="center">
250
+            <template slot-scope="scope">
251
+              {{ scope.row.register_account }}
252
+            </template>
253
+          </el-table-column>
244 254
 
245
-            <el-table-column label="生产厂家" align="center">
246
-              <template slot-scope="scope">
247
-                {{scope.row.manufacturer}}
248
-              </template>
249
-            </el-table-column>
255
+          <el-table-column label="生产厂家" align="center">
256
+            <template slot-scope="scope">
257
+              {{ scope.row.manufacturer }}
258
+            </template>
259
+          </el-table-column>
250 260
 
251
-            <el-table-column label="生产日期" align="center">
252
-              <template slot-scope="scope">
253
-                {{scope.row.product_date}}
254
-              </template>
255
-            </el-table-column>
261
+          <el-table-column label="生产日期" align="center">
262
+            <template slot-scope="scope">
263
+              {{ scope.row.product_date }}
264
+            </template>
265
+          </el-table-column>
256 266
 
257 267
           <el-table-column label="有效日期" align="center">
258
-              <template slot-scope="scope">
259
-                {{scope.row.expiry_date}}
260
-              </template>
261
-            </el-table-column>
262
-
263
-            <el-table-column label="经销商" align="center">
264
-              <template slot-scope="scope">
265
-                {{scope.row.dealer}}
266
-              </template>
267
-            </el-table-column>
268
-
269
-            <el-table-column label="退库原因" align="center">
270
-              <template slot-scope="scope">
271
-                {{scope.row.remark}}
272
-              </template>
273
-            </el-table-column>
274
-
275
-
276
-          </el-table>
268
+            <template slot-scope="scope">
269
+              {{ scope.row.expiry_date }}
270
+            </template>
271
+          </el-table-column>
272
+
273
+          <el-table-column label="经销商" align="center">
274
+            <template slot-scope="scope">
275
+              {{ scope.row.dealer }}
276
+            </template>
277
+          </el-table-column>
278
+
279
+          <el-table-column label="退库原因" align="center">
280
+            <template slot-scope="scope">
281
+              {{ scope.row.remark }}
282
+            </template>
283
+          </el-table-column>
284
+        </el-table>
277 285
       </div>
278 286
     </div>
279
-
280
-
281 287
   </div>
282 288
 </template>
283 289
 
@@ -289,15 +295,21 @@ import {
289 295
   GetAllConfig,
290 296
   getDrugCancelStockList,
291 297
   getCancelStockDetail,
292
-  getDrugCancelExportList
298
+  getDrugCancelExportList,
293 299
 } from "@/api/drug/drug_stock";
294
-import BreadCrumb from '../../components/bread-crumb'
300
+import BreadCrumb from "../../components/bread-crumb";
295 301
 // import BreadCrumb from "../components/bread-crumb";
296 302
 
297 303
 export default {
298 304
   name: "salesReturnOrder",
299
-  components: { BreadCrumb  },
305
+  components: { BreadCrumb },
300 306
   created() {
307
+    if (this.$route.path == "/Pharmacy/drugs/stock/cancel") {
308
+      this.crumbs = [
309
+        { path: false, name: "药品管理" },
310
+        { path: false, name: "出库退库单" },
311
+      ];
312
+    }
301 313
     var nowDate = new Date();
302 314
     var nowYear = nowDate.getFullYear();
303 315
     var nowMonth = nowDate.getMonth() + 1;
@@ -327,7 +339,7 @@ export default {
327 339
     return {
328 340
       crumbs: [
329 341
         { path: false, name: "库存管理" },
330
-        { path: false, name: "出库退库单" }
342
+        { path: false, name: "出库退库单" },
331 343
       ],
332 344
       searchKey: "",
333 345
       type: 1,
@@ -348,16 +360,16 @@ export default {
348 360
       manufacturer: [],
349 361
       selectedTableData: [],
350 362
       dealer: [],
351
-      tableList:[],
352
-      showTable:false,
353
-      order_id:"",
354
-      exportList:[],
355
-      houseList:[],
356
-      storehouse_id:0,
363
+      tableList: [],
364
+      showTable: false,
365
+      order_id: "",
366
+      exportList: [],
367
+      houseList: [],
368
+      storehouse_id: 0,
357 369
     };
358 370
   },
359 371
   methods: {
360
-    search: function() {
372
+    search: function () {
361 373
       const Params = {
362 374
         page: this.page,
363 375
         limit: this.limit,
@@ -365,10 +377,10 @@ export default {
365 377
         end_time: this.end_time,
366 378
         type: this.type,
367 379
         keywords: this.searchKey,
368
-        storehouse_id:this.storehouse_id,
380
+        storehouse_id: this.storehouse_id,
369 381
       };
370 382
       this.cancelStockDate = [];
371
-      getDrugCancelStockList(Params).then(response => {
383
+      getDrugCancelStockList(Params).then((response) => {
372 384
         if (response.data.state == 0) {
373 385
           this.$message.error(response.data.msg);
374 386
           return false;
@@ -380,38 +392,36 @@ export default {
380 392
         }
381 393
       });
382 394
     },
383
-    AddNewOrder: function() {
395
+    AddNewOrder: function () {
384 396
       this.$router.push({
385 397
         name: "cancelDrugStockOrderAdd",
386
-        query: { type: this.type }
398
+        query: { type: this.type },
387 399
       });
388 400
     },
389
-    GetCancelStock: function() {
401
+    GetCancelStock: function () {
390 402
       const Params = {
391 403
         page: this.page,
392 404
         limit: this.limit,
393 405
         start_time: this.start_time,
394 406
         end_time: this.end_time,
395 407
         type: this.type,
396
-        storehouse_id:this.storehouse_id,
408
+        storehouse_id: this.storehouse_id,
397 409
       };
398 410
       this.cancelStockDate = [];
399
-      getDrugCancelStockList(Params).then(response => {
411
+      getDrugCancelStockList(Params).then((response) => {
400 412
         if (response.data.state == 0) {
401 413
           this.$message.error(response.data.msg);
402 414
           return false;
403 415
         } else {
404
-
405
-
406 416
           this.total = response.data.data.total;
407 417
           for (let i = 0; i < response.data.data.list.length; i++) {
408 418
             this.cancelStockDate.push(response.data.data.list[i]);
409 419
           }
410
-          var obj= {id:0,storehouse_name:"全部"}
411
-          this.houseList = []
412
-          this.houseList.push(obj)
413
-          for(let i=0;i<response.data.data.houseList.length;i++){
414
-            this.houseList.push(response.data.data.houseList[i])
420
+          var obj = { id: 0, storehouse_name: "全部" };
421
+          this.houseList = [];
422
+          this.houseList.push(obj);
423
+          for (let i = 0; i < response.data.data.houseList.length; i++) {
424
+            this.houseList.push(response.data.data.houseList[i]);
415 425
           }
416 426
         }
417 427
       });
@@ -440,8 +450,7 @@ export default {
440 450
       return name;
441 451
     },
442 452
     fetchAllAdminUsers() {
443
-      fetchAllAdminUsers().then(response => {
444
-
453
+      fetchAllAdminUsers().then((response) => {
445 454
         if (response.data.state == 1) {
446 455
           this.adminUserOptions = response.data.data.users;
447 456
           var alen = this.adminUserOptions.length;
@@ -453,7 +462,7 @@ export default {
453 462
         }
454 463
       });
455 464
     },
456
-    handleSelectionChange: function(val) {
465
+    handleSelectionChange: function (val) {
457 466
       this.multipleSelection = val;
458 467
     },
459 468
     handleSizeChange(val) {
@@ -487,11 +496,11 @@ export default {
487 496
       // 把时间日期转成时间戳
488 497
       return new Date(time).getTime() / 1000;
489 498
     },
490
-    calculate: function(val) {
499
+    calculate: function (val) {
491 500
       return Math.round(parseFloat(val) * 100) / 100;
492 501
     },
493
-    GetConfigInfo: function() {
494
-      GetAllConfig().then(response => {
502
+    GetConfigInfo: function () {
503
+      GetAllConfig().then((response) => {
495 504
         if (response.data.state == 0) {
496 505
           this.$message.error(response.data.msg);
497 506
           return false;
@@ -501,40 +510,41 @@ export default {
501 510
         }
502 511
       });
503 512
     },
504
-    getManufactuerName: function(manufacturer_id) {
513
+    getManufactuerName: function (manufacturer_id) {
505 514
       for (let i = 0; i < this.manufacturer.length; i++) {
506 515
         if (this.manufacturer[i].id == manufacturer_id) {
507 516
           return this.manufacturer[i].manufacturer_name;
508 517
         }
509 518
       }
510 519
     },
511
-    getDealerName: function(dealer_id) {
520
+    getDealerName: function (dealer_id) {
512 521
       for (let i = 0; i < this.dealer.length; i++) {
513 522
         if (this.dealer[i].id == dealer_id) {
514 523
           return this.dealer[i].dealer_name;
515 524
         }
516 525
       }
517 526
     },
518
-    handleEdit: function(index, row) {
519
-
520
-      this.$router.push({path:"/drugstock/cancel/edit?id="+row.id+"&type="+this.type})
527
+    handleEdit: function (index, row) {
528
+      this.$router.push({
529
+        path: "/drugstock/cancel/edit?id=" + row.id + "&type=" + this.type,
530
+      });
521 531
     },
522
-    handleDelete: function(index, row) {
532
+    handleDelete: function (index, row) {
523 533
       const ids = [];
524 534
       ids.push(row.id);
525 535
       const idStr = ids.join(",");
526 536
 
527 537
       const params = {
528
-        ids: idStr
538
+        ids: idStr,
529 539
       };
530 540
 
531 541
       this.$confirm("确认删除退库单记录?", "删除退库单记录", {
532 542
         confirmButtonText: "确定",
533 543
         cancelButtonText: "取消",
534
-        type: "warning"
544
+        type: "warning",
535 545
       })
536 546
         .then(() => {
537
-          deleteDrugCancelStock(params).then(response => {
547
+          deleteDrugCancelStock(params).then((response) => {
538 548
             if (response.data.state == 0) {
539 549
               this.$message.error(response.data.msg);
540 550
               return false;
@@ -543,7 +553,7 @@ export default {
543 553
                 title: "成功",
544 554
                 message: "删除成功",
545 555
                 type: "success",
546
-                duration: 2000
556
+                duration: 2000,
547 557
               });
548 558
               for (let i = 0; i < ids.length; i++) {
549 559
                 for (let y = 0; y < this.cancelStockDate.length; y++) {
@@ -557,7 +567,7 @@ export default {
557 567
         })
558 568
         .catch(() => {});
559 569
     },
560
-    changeAllSelected: function(val) {
570
+    changeAllSelected: function (val) {
561 571
       if (val) {
562 572
         this.$refs.multipleTable.toggleAllSelection();
563 573
       } else {
@@ -565,13 +575,13 @@ export default {
565 575
       }
566 576
     },
567 577
     select(selection) {
568
-      var ids= []
569
-      for(let i=0;i<selection.length;i++){
570
-         ids.push(selection[i].id)
578
+      var ids = [];
579
+      for (let i = 0; i < selection.length; i++) {
580
+        ids.push(selection[i].id);
571 581
       }
572
-      this.order_id =  ids.join(",")
582
+      this.order_id = ids.join(",");
573 583
       this.selectedTableData = selection;
574
-      this.getDrugCancelExportList()
584
+      this.getDrugCancelExportList();
575 585
     },
576 586
     batchDelete() {
577 587
       if (this.selectedTableData.length <= 0) {
@@ -584,14 +594,15 @@ export default {
584 594
       }
585 595
       const idStr = ids.join(",");
586 596
       const params = {
587
-        ids: idStr
597
+        ids: idStr,
588 598
       };
589 599
       this.$confirm("确认删除退库单记录?", "删除退库单记录", {
590 600
         confirmButtonText: "确定",
591 601
         cancelButtonText: "取消",
592
-        type: "warning"
593
-      }).then(() => {
594
-          deleteDrugCancelStock(params).then(response => {
602
+        type: "warning",
603
+      })
604
+        .then(() => {
605
+          deleteDrugCancelStock(params).then((response) => {
595 606
             if (response.data.state == 0) {
596 607
               this.$message.error(response.data.msg);
597 608
               return false;
@@ -600,7 +611,7 @@ export default {
600 611
                 title: "成功",
601 612
                 message: "删除成功",
602 613
                 type: "success",
603
-                duration: 2000
614
+                duration: 2000,
604 615
               });
605 616
 
606 617
               for (let i = 0; i < ids.length; i++) {
@@ -616,105 +627,155 @@ export default {
616 627
         .catch(() => {});
617 628
     },
618 629
     handleCurrentChangeOne(val) {
619
-     if(val!=null){
620
-      this.getCancelStockDetail(val.id)
621
-     }
630
+      if (val != null) {
631
+        this.getCancelStockDetail(val.id);
632
+      }
622 633
     },
623
-    getCancelStockDetail(id){
624
-        var params = {
625
-          id:id
634
+    getCancelStockDetail(id) {
635
+      var params = {
636
+        id: id,
637
+      };
638
+      getCancelStockDetail(params).then((response) => {
639
+        if (response.data.state == 1) {
640
+          var list = response.data.data.list;
641
+          for (let i = 0; i < list.length; i++) {
642
+            list[i].product_date = this.getTime(
643
+              list[i].product_date,
644
+              "{y}-{h}-{d}"
645
+            );
646
+            list[i].expiry_date = this.getTime(
647
+              list[i].expiry_date,
648
+              "{y}-{h}-{d}"
649
+            );
650
+          }
651
+          this.tableList = list;
652
+          this.showTable = true;
626 653
         }
627
-      getCancelStockDetail(params).then(response=>{
628
-       if(response.data.state == 1){
629
-         var list =  response.data.data.list
630
-         for(let i=0;i<list.length;i++){
631
-           list[i].product_date = this.getTime(list[i].product_date,"{y}-{h}-{d}")
632
-           list[i].expiry_date = this.getTime(list[i].expiry_date,"{y}-{h}-{d}")
633
-         }
634
-         this.tableList = list
635
-         this.showTable = true
636
-       }
637
-      })
654
+      });
638 655
     },
639
-   getTime(val) {
640
-      if(val < 0){
641
-        return ""
656
+    getTime(val) {
657
+      if (val < 0) {
658
+        return "";
642 659
       }
643
-      if(val == ""){
644
-      return ""
645
-      }else {
646
-      return uParseTime(val, '{y}-{m}-{d}')
660
+      if (val == "") {
661
+        return "";
662
+      } else {
663
+        return uParseTime(val, "{y}-{m}-{d}");
647 664
       }
648 665
     },
649
-    toPrint(){
650
-      if(this.order_id == ""){
651
-        this.$message.error("请勾选退库单")
652
-        return
666
+    toPrint() {
667
+      if (this.order_id == "") {
668
+        this.$message.error("请勾选退库单");
669
+        return;
653 670
       }
654
-     this.$router.push({path:"/drug/cancel/print?order_id="+this.order_id+"&start_time="+this.start_time+"&end_time="+this.end_time})
671
+      this.$router.push({
672
+        path:
673
+          "/drug/cancel/print?order_id=" +
674
+          this.order_id +
675
+          "&start_time=" +
676
+          this.start_time +
677
+          "&end_time=" +
678
+          this.end_time,
679
+      });
655 680
     },
656
-    getDrugCancelExportList(){
681
+    getDrugCancelExportList() {
657 682
       const params = {
658
-        order_id:this.order_id
659
-      }
660
-     getDrugCancelExportList(params).then(response=>{
661
-        if(response.data.state == 1){
662
-         var list = response.data.data.list
663
-        //  console.log("导出数据222",list)
664
-         this.exportList = list
683
+        order_id: this.order_id,
684
+      };
685
+      getDrugCancelExportList(params).then((response) => {
686
+        if (response.data.state == 1) {
687
+          var list = response.data.data.list;
688
+          //  console.log("导出数据222",list)
689
+          this.exportList = list;
665 690
         }
666
-     })
691
+      });
667 692
     },
668
-    toExport(){
669
-      if(this.order_id == ""){
670
-        this.$message.error("请勾选退库单")
671
-        return
693
+    toExport() {
694
+      if (this.order_id == "") {
695
+        this.$message.error("请勾选退库单");
696
+        return;
672 697
       }
673
-     import('@/vendor/Export2Excel').then(excel => {
674
-
675
-      for(let i=0;i<this.exportList.length;i++){
676
-        this.exportList[i].total_price = this.exportList[i].count * this.exportList[i].price
677
-        this.exportList[i].drug_name = this.exportList[i].BaseDrugLib.drug_name
678
-        this.exportList[i].unit = this.exportList[i].BaseDrugLib.dose + this.exportList[i].BaseDrugLib.dose_unit + "*" + this.exportList[i].BaseDrugLib.min_number +this.exportList[i].BaseDrugLib.min_unit + "/" +this.exportList[i].BaseDrugLib.max_unit
679
-        if(this.exportList[i].dealer == 0){
680
-          this.exportList[i].dealer = ""
681
-        }
682
-        if(this.exportList[i].manufacturer == 0){
683
-          this.exportList[i].manufacturer = ""
684
-        }
698
+      import("@/vendor/Export2Excel").then((excel) => {
699
+        for (let i = 0; i < this.exportList.length; i++) {
700
+          this.exportList[i].total_price =
701
+            this.exportList[i].count * this.exportList[i].price;
702
+          this.exportList[i].drug_name =
703
+            this.exportList[i].BaseDrugLib.drug_name;
704
+          this.exportList[i].unit =
705
+            this.exportList[i].BaseDrugLib.dose +
706
+            this.exportList[i].BaseDrugLib.dose_unit +
707
+            "*" +
708
+            this.exportList[i].BaseDrugLib.min_number +
709
+            this.exportList[i].BaseDrugLib.min_unit +
710
+            "/" +
711
+            this.exportList[i].BaseDrugLib.max_unit;
712
+          if (this.exportList[i].dealer == 0) {
713
+            this.exportList[i].dealer = "";
714
+          }
715
+          if (this.exportList[i].manufacturer == 0) {
716
+            this.exportList[i].manufacturer = "";
717
+          }
685 718
 
686
-        this.exportList[i].product_date = this.getTime(this.exportList[i].product_date,"{y}-{h}-{d}")
687
-        this.exportList[i].expiry_date = this.getTime(this.exportList[i].expiry_date,"{y}-{h}-{d}")
688
-      }
689
-      const tHeader = ['药品名称',  '规格&单位','退库数量','退库单价','批次','品名/注册证号(备案凭证号)','生产厂家','生产日期','有效期','退库原因']
690
-      const filterVal = ['drug_name', 'unit','count','price','batch_number','register_account','manufacturer','product_date','expiry_date','remark']
691
-      // console.log("table",this.exportList)
692
-
693
-      const data = this.formatJson(filterVal, this.exportList)
694
-      excel.export_json_to_excel({
695
-        header: tHeader,
696
-        data,
697
-        filename: '药品退库单详情'
698
-      })
699
-      this.downloadLoading = false
700
-     })
719
+          this.exportList[i].product_date = this.getTime(
720
+            this.exportList[i].product_date,
721
+            "{y}-{h}-{d}"
722
+          );
723
+          this.exportList[i].expiry_date = this.getTime(
724
+            this.exportList[i].expiry_date,
725
+            "{y}-{h}-{d}"
726
+          );
727
+        }
728
+        const tHeader = [
729
+          "药品名称",
730
+          "规格&单位",
731
+          "退库数量",
732
+          "退库单价",
733
+          "批次",
734
+          "品名/注册证号(备案凭证号)",
735
+          "生产厂家",
736
+          "生产日期",
737
+          "有效期",
738
+          "退库原因",
739
+        ];
740
+        const filterVal = [
741
+          "drug_name",
742
+          "unit",
743
+          "count",
744
+          "price",
745
+          "batch_number",
746
+          "register_account",
747
+          "manufacturer",
748
+          "product_date",
749
+          "expiry_date",
750
+          "remark",
751
+        ];
752
+        // console.log("table",this.exportList)
753
+
754
+        const data = this.formatJson(filterVal, this.exportList);
755
+        excel.export_json_to_excel({
756
+          header: tHeader,
757
+          data,
758
+          filename: "药品退库单详情",
759
+        });
760
+        this.downloadLoading = false;
761
+      });
701 762
     },
702 763
     formatJson(filterVal, jsonData) {
703
-    return jsonData.map(v => filterVal.map(j => v[j]));
704
-   },
705
-   getHouseName(id){
706
-    var storehouse_name = ""
707
-    for(let i=0;i<this.houseList.length;i++){
708
-        if(id == this.houseList[i].id){
709
-          storehouse_name = this.houseList[i].storehouse_name
764
+      return jsonData.map((v) => filterVal.map((j) => v[j]));
765
+    },
766
+    getHouseName(id) {
767
+      var storehouse_name = "";
768
+      for (let i = 0; i < this.houseList.length; i++) {
769
+        if (id == this.houseList[i].id) {
770
+          storehouse_name = this.houseList[i].storehouse_name;
710 771
         }
711
-    }
712
-    return storehouse_name
772
+      }
773
+      return storehouse_name;
774
+    },
775
+    changeStoreHouse() {
776
+      this.GetCancelStock();
777
+    },
713 778
   },
714
-  changeStoreHouse(){
715
-    this.GetCancelStock()
716
-  }
717
-  }
718 779
 };
719 780
 </script>
720 781
 

+ 361 - 352
src/xt_pages/stock/drugs/drugBatchNumber.vue ファイルの表示

@@ -3,230 +3,240 @@
3 3
     <div class="position">
4 4
       <bread-crumb :crumbs="crumbs"></bread-crumb>
5 5
     </div>
6
-    <div class="app-container ">
6
+    <div class="app-container">
7 7
       <div class="cell clearfix">
8
-       药品名称:<span>{{getName(this.$route.query.drug_id)}}</span>&nbsp;
9
-       库存:{{this.$route.query.over_plus}}&nbsp;
10
-       规格:<span>{{this.$route.query.unit}}</span>&nbsp;
11
-       厂家:<span>{{this.$route.query.manufacturer}}</span>&nbsp;
8
+        药品名称:<span>{{ getName(this.$route.query.drug_id) }}</span
9
+        >&nbsp; 库存:{{ this.$route.query.over_plus }}&nbsp; 规格:<span>{{
10
+          this.$route.query.unit
11
+        }}</span
12
+        >&nbsp; 厂家:<span>{{ this.$route.query.manufacturer }}</span
13
+        >&nbsp;
12 14
       </div>
13 15
       <div class="cell clearfix">
14 16
         <span>日期查询:</span>
15 17
         <el-date-picker
16
-            size="small"
17
-            v-model="start_time"
18
-            prefix-icon="el-icon-date"
19
-            :editable="false"
20
-            style="width: 196px;"
21
-            type="date"
22
-            placeholder="选择日期时间"
23
-            align="right"
24
-            format="yyyy-MM-dd"
25
-            value-format="yyyy-MM-dd"
26
-            @change="startTimeChange"
27
-           ></el-date-picker>-
28
-            <el-date-picker
29
-              size="small"
30
-              v-model="end_time"
31
-              prefix-icon="el-icon-date"
32
-              :editable="false"
33
-              style="width: 196px;margin-right:10px;"
34
-              type="date"
35
-              placeholder="选择日期时间"
36
-              align="right"
37
-              format="yyyy-MM-dd"
38
-              value-format="yyyy-MM-dd"
39
-              @change="endTimeChange"
40
-          ></el-date-picker>
18
+          size="small"
19
+          v-model="start_time"
20
+          prefix-icon="el-icon-date"
21
+          :editable="false"
22
+          style="width: 196px"
23
+          type="date"
24
+          placeholder="选择日期时间"
25
+          align="right"
26
+          format="yyyy-MM-dd"
27
+          value-format="yyyy-MM-dd"
28
+          @change="startTimeChange"
29
+        ></el-date-picker
30
+        >-
31
+        <el-date-picker
32
+          size="small"
33
+          v-model="end_time"
34
+          prefix-icon="el-icon-date"
35
+          :editable="false"
36
+          style="width: 196px; margin-right: 10px"
37
+          type="date"
38
+          placeholder="选择日期时间"
39
+          align="right"
40
+          format="yyyy-MM-dd"
41
+          value-format="yyyy-MM-dd"
42
+          @change="endTimeChange"
43
+        ></el-date-picker>
41 44
       </div>
42
-      
43
-       <el-table
44
-        :data="tableList"
45
-        border
46
-        style="width: 100%">
45
+
46
+      <el-table :data="tableList" border style="width: 100%">
47 47
         <el-table-column prop="date" label="序号" width="100" align="center">
48
-           <template  slot-scope="scope">
49
-              {{scope.$index + 1}}
50
-           </template>
48
+          <template slot-scope="scope">
49
+            {{ scope.$index + 1 }}
50
+          </template>
51 51
         </el-table-column>
52 52
         <el-table-column prop="date" label="供应商" width="180" align="center">
53
-           <template  slot-scope="scope">
54
-              {{getManufactur(scope.row.manufacturer)}}
55
-           </template>
53
+          <template slot-scope="scope">
54
+            {{ getManufactur(scope.row.manufacturer) }}
55
+          </template>
56 56
         </el-table-column>
57
-        <el-table-column prop="drug_type" label="入库单据编码" width="180" align="center">
58
-           <template slot-scope="scope">
59
-              {{scope.row.warehousing_order}}
60
-           </template>
57
+        <el-table-column
58
+          prop="drug_type"
59
+          label="入库单据编码"
60
+          width="180"
61
+          align="center"
62
+        >
63
+          <template slot-scope="scope">
64
+            {{ scope.row.warehousing_order }}
65
+          </template>
61 66
         </el-table-column>
62 67
         <el-table-column prop="drug_name" label="操作日期" align="center">
63
-           <template slot-scope="scope">
64
-              {{getTime(scope.row.ctime)}}
65
-           </template>
68
+          <template slot-scope="scope">
69
+            {{ getTime(scope.row.ctime) }}
70
+          </template>
66 71
         </el-table-column>
67 72
         <el-table-column prop="drug_name" label="有效期" align="center">
68
-           <template slot-scope="scope">
69
-              {{getTime(scope.row.expiry_date,"{y}-{m}-{d}")}}
70
-           </template>
73
+          <template slot-scope="scope">
74
+            {{ getTime(scope.row.expiry_date, "{y}-{m}-{d}") }}
75
+          </template>
71 76
         </el-table-column>
72
-         <el-table-column prop="drug_name" label="批号" align="center">
73
-           <template slot-scope="scope">
74
-              {{scope.row.batch_number}}
75
-           </template>
77
+        <el-table-column prop="drug_name" label="批号" align="center">
78
+          <template slot-scope="scope">
79
+            {{ scope.row.batch_number }}
80
+          </template>
76 81
         </el-table-column>
77
-        <el-table-column prop="drug_name" label="仓库名称" width="200" align="center">
78
-           <template slot-scope="scope">
79
-              <span>{{getHouseName(scope.row.storehouse_id)}}</span>
80
-           </template>
82
+        <el-table-column
83
+          prop="drug_name"
84
+          label="仓库名称"
85
+          width="200"
86
+          align="center"
87
+        >
88
+          <template slot-scope="scope">
89
+            <span>{{ getHouseName(scope.row.storehouse_id) }}</span>
90
+          </template>
81 91
         </el-table-column>
82
-         <el-table-column prop="drug_name" label="数量" align="center">
83
-           <template slot-scope="scope">
84
-             {{scope.row.warehousing_count}}{{scope.row.max_unit}}
85
-           </template>
92
+        <el-table-column prop="drug_name" label="数量" align="center">
93
+          <template slot-scope="scope">
94
+            {{ scope.row.warehousing_count }}{{ scope.row.max_unit }}
95
+          </template>
86 96
         </el-table-column>
87 97
         <el-table-column prop="drug_name" label="零售价" align="center">
88
-           <template slot-scope="scope">
89
-              {{scope.row.retail_price}}
90
-           </template>
98
+          <template slot-scope="scope">
99
+            {{ scope.row.retail_price }}
100
+          </template>
91 101
         </el-table-column>
92 102
         <el-table-column prop="drug_name" label="进货单价" align="center">
93
-           <template slot-scope="scope">
94
-              {{scope.row.price}}
95
-           </template>
103
+          <template slot-scope="scope">
104
+            {{ scope.row.price }}
105
+          </template>
96 106
         </el-table-column>
97
-       </el-table>
98
-       
107
+      </el-table>
108
+
99 109
       <el-pagination
100 110
         @size-change="handleSizeChange"
101 111
         @current-change="handleCurrentChange"
102
-        :page-sizes="[10, 50, 100,500,1000]"
112
+        :page-sizes="[10, 50, 100, 500, 1000]"
103 113
         :page-size="10"
104 114
         background
105 115
         align="right"
106
-        style="margin-top:20px;"
116
+        style="margin-top: 20px"
107 117
         layout="total, sizes, prev, pager, next, jumper"
108 118
         :total="total"
109 119
       >
110 120
       </el-pagination>
111 121
     </div>
112 122
 
113
-    <setting-dialog
114
-      ref="dialog"
115
-    ></setting-dialog>
116
-
123
+    <setting-dialog ref="dialog"></setting-dialog>
117 124
   </div>
118 125
 </template>
119 126
 
120 127
 <script>
121
-  import { uParseTime } from '@/utils/tools'
122
-  import BreadCrumb from '@/xt_pages/components/bread-crumb'
123
-  import { getBatchOrderDetail,getDrugCountList } from '@/api/drug/drug_stock'
124
-  import SettingDialog from './settingDialog/index'
125
-  import { getDictionaryDataConfig } from "@/utils/data";
126
-  export default {
127
-    name: 'stockIn',
128
-    created() {
129
-       var nowDate = new Date();
130
-      var nowYear = nowDate.getFullYear();
131
-      var nowMonth = nowDate.getMonth() + 1;
132
-      var nowDay = nowDate.getDate();
133
-      this.end_time =
134
-        nowYear +
135
-        "-" +
136
-        (nowMonth < 10 ? "0" + nowMonth : nowMonth) +
137
-        "-" +
138
-        (nowDay < 10 ? "0" + nowDay : nowDay);
139
-      nowDate.setMonth(nowDate.getMonth() - 1);
140
-      nowYear = nowDate.getFullYear();
141
-      nowMonth = nowDate.getMonth() + 1;
142
-      nowDay = nowDate.getDate();
143
-      this.start_time =
144
-        nowYear +
145
-        "-" +
146
-        (nowMonth < 10 ? "0" + nowMonth : nowMonth) +
147
-        "-" +
148
-        (nowDay < 10 ? "0" + nowDay : nowDay);
149
-      var drugCategory = getDictionaryDataConfig('system','drug_category')
150
-      this.drugCategory.push(...drugCategory)
151
-      this.drugTypeList = getDictionaryDataConfig('system','drug_type') 
152
-      this.getlist()
153
-    },
154
-    components: {
155
-      SettingDialog,
156
-      BreadCrumb
128
+import { uParseTime } from "@/utils/tools";
129
+import BreadCrumb from "@/xt_pages/components/bread-crumb";
130
+import { getBatchOrderDetail, getDrugCountList } from "@/api/drug/drug_stock";
131
+import SettingDialog from "./settingDialog/index";
132
+import { getDictionaryDataConfig } from "@/utils/data";
133
+export default {
134
+  name: "stockIn",
135
+  created() {
136
+    var nowDate = new Date();
137
+    var nowYear = nowDate.getFullYear();
138
+    var nowMonth = nowDate.getMonth() + 1;
139
+    var nowDay = nowDate.getDate();
140
+    this.end_time =
141
+      nowYear +
142
+      "-" +
143
+      (nowMonth < 10 ? "0" + nowMonth : nowMonth) +
144
+      "-" +
145
+      (nowDay < 10 ? "0" + nowDay : nowDay);
146
+    nowDate.setMonth(nowDate.getMonth() - 1);
147
+    nowYear = nowDate.getFullYear();
148
+    nowMonth = nowDate.getMonth() + 1;
149
+    nowDay = nowDate.getDate();
150
+    this.start_time =
151
+      nowYear +
152
+      "-" +
153
+      (nowMonth < 10 ? "0" + nowMonth : nowMonth) +
154
+      "-" +
155
+      (nowDay < 10 ? "0" + nowDay : nowDay);
156
+    var drugCategory = getDictionaryDataConfig("system", "drug_category");
157
+    this.drugCategory.push(...drugCategory);
158
+    this.drugTypeList = getDictionaryDataConfig("system", "drug_type");
159
+    this.getlist();
160
+  },
161
+  components: {
162
+    SettingDialog,
163
+    BreadCrumb,
164
+  },
165
+  data() {
166
+    return {
167
+      crumbs: [
168
+        { path: false, name: "库存管理" },
169
+        { path: "/stock/drugs/stock/query", name: "药品库存查询" },
170
+        { path: "/drugstock/in/drugstockflow", name: "库存流水" },
171
+      ],
172
+      keywords: "",
173
+      total: 0,
174
+      multipleSelection: [],
175
+      signAndWeighBoxPatients: "sign-and-weigh-box-patients",
176
+      start_time: "",
177
+      end_time: "",
178
+      page: 1,
179
+      limit: 10,
180
+      goodType: [],
181
+      goodInfo: [],
182
+      tempArr: [],
183
+      sameRowArr: [],
184
+      WarehouseInfo: {
185
+        loading: false,
186
+        warehouseInfoDate: [],
187
+      },
188
+      tableData: [],
189
+      drug_category: 0,
190
+      drugCategory: [{ id: 0, name: "全部" }],
191
+      drugTypeList: [],
192
+      tableList: [],
193
+      manufacturerList: [],
194
+      countList: [],
195
+      outCountList: [],
196
+      autoCountList: [],
197
+      minCount: [],
198
+      drugOutList: [],
199
+      drug: {},
200
+      houseList: [],
201
+    };
202
+  },
203
+  watch: {
204
+
205
+  },
206
+
207
+
208
+  methods: {
209
+    getlist() {
210
+      var params = {
211
+        drug_id: this.$route.query.drug_id,
212
+        page: this.page,
213
+        limit: this.limit,
214
+      };
215
+      getBatchOrderDetail(params).then((response) => {
216
+        if (response.data.state == 1) {
217
+          var detail = response.data.data.detail;
218
+
219
+          this.tableList = detail;
220
+          this.manufacturerList = response.data.data.manufacturerList;
221
+          var total = response.data.data.total;
222
+
223
+          this.total = total;
224
+          this.drug = response.data.data.drug;
225
+          this.houseList = response.data.data.houseList;
226
+        }
227
+      });
157 228
     },
158
-    data() {
159
-      return {
160
-        crumbs: [
161
-          { path: false, name: '库存管理' },
162
-          { path: '/stock/drugs/stock/query', name: '药品库存查询' },
163
-          { path:'/drugstock/in/drugstockflow',name:'库存流水'}
164
-        ],
165
-        keywords: '',
166
-        total: 0,
167
-        multipleSelection: [],
168
-        signAndWeighBoxPatients: 'sign-and-weigh-box-patients',
169
-        start_time: '',
170
-        end_time: '',
171
-        page: 1,
172
-        limit: 10,
173
-        goodType: [],
174
-        goodInfo: [],
175
-        tempArr: [],
176
-        sameRowArr: [],
177
-        WarehouseInfo: {
178
-          loading: false,
179
-          warehouseInfoDate: []
180
-        },
181
-        tableData:[],
182
-        drug_category:0,
183
-        drugCategory:[
184
-          {id:0,name:"全部"}
185
-        ],
186
-        drugTypeList:[],
187
-        tableList:[],
188
-        manufacturerList:[],
189
-        countList:[],
190
-        outCountList:[],
191
-        autoCountList:[],
192
-        minCount:[],
193
-        drugOutList:[],
194
-        drug:{},
195
-        houseList:[],
229
+    getTime(val) {
230
+      if (val < 0) {
231
+        return "";
232
+      }
233
+      if (val == "") {
234
+        return "";
235
+      } else {
236
+        return uParseTime(val, "{y}-{m}-{d}");
196 237
       }
197 238
     },
198
-    methods:{
199
-      getlist(){
200
-         var params = {
201
-           drug_id:this.$route.query.drug_id,
202
-           page:this.page,
203
-           limit:this.limit,
204
-         }
205
-        getBatchOrderDetail(params).then(response=>{
206
-           if(response.data.state == 1){
207
-              var detail =  response.data.data.detail
208
-             
209
-              this.tableList = detail
210
-              this.manufacturerList = response.data.data.manufacturerList
211
-              var total = response.data.data.total
212
-              
213
-              this.total = total
214
-              this.drug =  response.data.data.drug
215
-              this.houseList = response.data.data.houseList
216
-           }
217
-        })
218
-      },
219
-      getTime(val) {
220
-       if(val < 0){
221
-           return ""
222
-       }
223
-       if(val == ""){
224
-          return ""
225
-        }else {
226
-          return uParseTime(val, '{y}-{m}-{d}')
227
-        }
228
-     },
229
-   handleSizeChange(val) {
239
+    handleSizeChange(val) {
230 240
       this.limit = val;
231 241
       this.getlist();
232 242
     },
@@ -234,206 +244,205 @@
234 244
       this.page = val;
235 245
       this.getlist();
236 246
     },
237
-    startTimeChange(val){
238
-      this.start_time = val
239
-      this.getlist()
247
+    startTimeChange(val) {
248
+      this.start_time = val;
249
+      this.getlist();
240 250
     },
241
-    endTimeChange(val){
242
-      this.end_time = val
243
-      this.getlist()
251
+    endTimeChange(val) {
252
+      this.end_time = val;
253
+      this.getlist();
244 254
     },
245
-     getDrugCountList(){
246
-         var params = {
247
-          keyword: this.keywords,
248
-          start_time:this.start_time,
249
-          end_time:this.end_time,
250
-         }
251
-      getDrugCountList(params).then(response=>{
252
-          if(response.data.state == 1){
253
-            var countlist =  response.data.data.countList
254
-          
255
-            this.countList = countlist
256
-            var outcountlist = response.data.data.outCountList
257
-           
258
-            this.outCountList = outcountlist
259
-            var aucountlist = response.data.data.auCountList
260
-           
261
-            this.autoCountList = aucountlist
262
-             var minCount = response.data.data.minCount
263
-            
264
-            this.minCount = minCount
265
-            var info = response.data.data.info
266
-            for(let i=0;i<info.length;i++){
267
-              if(info[i].count_unit == info[i].max_unit){
268
-                 info[i].count = info[i].count * info[i].min_number
269
-              }
255
+    getDrugCountList() {
256
+      var params = {
257
+        keyword: this.keywords,
258
+        start_time: this.start_time,
259
+        end_time: this.end_time,
260
+      };
261
+      getDrugCountList(params).then((response) => {
262
+        if (response.data.state == 1) {
263
+          var countlist = response.data.data.countList;
264
+
265
+          this.countList = countlist;
266
+          var outcountlist = response.data.data.outCountList;
267
+
268
+          this.outCountList = outcountlist;
269
+          var aucountlist = response.data.data.auCountList;
270
+
271
+          this.autoCountList = aucountlist;
272
+          var minCount = response.data.data.minCount;
273
+
274
+          this.minCount = minCount;
275
+          var info = response.data.data.info;
276
+          for (let i = 0; i < info.length; i++) {
277
+            if (info[i].count_unit == info[i].max_unit) {
278
+              info[i].count = info[i].count * info[i].min_number;
270 279
             }
271
-          
272
-            this.drugOutList = info
273 280
           }
274
-        })
275
-      },
276
-      getInCount(id){
277
-        var count = ""
278
-        for(let i=0;i<this.countList.length;i++){
279
-           if(id == this.countList[i].drug_id){
280
-             count = this.countList[i].count
281
-           }
282
-        }
283
-        return count
284
-      },
285 281
 
286
-      getOutCount(id){
287
-        var count = ""
288
-        for(let i=0;i<this.outCountList.length;i++){
289
-           if(id == this.outCountList[i].drug_id){
290
-               count = this.outCountList[i].count
291
-           }
282
+          this.drugOutList = info;
292 283
         }
293
-        return count
294
-      },
295
-      getAutoCount(id){
296
-        var count= ""
297
-        for(let i=0;i<this.autoCountList.length;i++){
298
-          if(id == this.autoCountList[i].drug_id){
299
-            count = this.autoCountList[i].count
300
-          }
284
+      });
285
+    },
286
+    getInCount(id) {
287
+      var count = "";
288
+      for (let i = 0; i < this.countList.length; i++) {
289
+        if (id == this.countList[i].drug_id) {
290
+          count = this.countList[i].count;
301 291
         }
302
-        return count
303
-      },
304
-         getMinCount(id){
305
-        var count=""
306
-        for(let i=0;i<this.minCount.length;i++){
307
-          if(id == this.minCount[i].drug_id){
308
-            count = this.minCount[i].count
309
-          }
292
+      }
293
+      return count;
294
+    },
295
+
296
+    getOutCount(id) {
297
+      var count = "";
298
+      for (let i = 0; i < this.outCountList.length; i++) {
299
+        if (id == this.outCountList[i].drug_id) {
300
+          count = this.outCountList[i].count;
310 301
         }
311
-        return count
312
-      },
313
-      getCount(drug_id,min_number,max_unit,min_unit){
314
-        var count= 0
315
-        var str = ""
316
-        var min_str = ""
317
-        for(let i=0;i<this.drugOutList.length;i++){
318
-          if(drug_id == this.drugOutList[i].drug_id){
319
-             count += parseInt(this.drugOutList[i].count)
320
-          }
302
+      }
303
+      return count;
304
+    },
305
+    getAutoCount(id) {
306
+      var count = "";
307
+      for (let i = 0; i < this.autoCountList.length; i++) {
308
+        if (id == this.autoCountList[i].drug_id) {
309
+          count = this.autoCountList[i].count;
321 310
         }
322
-        if(parseInt(count/min_number)!=0){
323
-          str = parseInt(count/min_number)+ max_unit
311
+      }
312
+      return count;
313
+    },
314
+    getMinCount(id) {
315
+      var count = "";
316
+      for (let i = 0; i < this.minCount.length; i++) {
317
+        if (id == this.minCount[i].drug_id) {
318
+          count = this.minCount[i].count;
324 319
         }
325
-        if((count%min_number)!=0){
326
-          min_str =  count%min_number + min_unit
320
+      }
321
+      return count;
322
+    },
323
+    getCount(drug_id, min_number, max_unit, min_unit) {
324
+      var count = 0;
325
+      var str = "";
326
+      var min_str = "";
327
+      for (let i = 0; i < this.drugOutList.length; i++) {
328
+        if (drug_id == this.drugOutList[i].drug_id) {
329
+          count += parseInt(this.drugOutList[i].count);
327 330
         }
328
-        return str + min_str
329
-      },
331
+      }
332
+      if (parseInt(count / min_number) != 0) {
333
+        str = parseInt(count / min_number) + max_unit;
334
+      }
335
+      if (count % min_number != 0) {
336
+        min_str = (count % min_number) + min_unit;
337
+      }
338
+      return str + min_str;
339
+    },
330 340
 
331
-      getCountOne(drug_id){
332
-        var count= 0
333
-        for(let i=0;i<this.drugOutList.length;i++){
334
-          if(drug_id == this.drugOutList[i].drug_id){
335
-             count += parseInt(this.drugOutList[i].count)
336
-          }
341
+    getCountOne(drug_id) {
342
+      var count = 0;
343
+      for (let i = 0; i < this.drugOutList.length; i++) {
344
+        if (drug_id == this.drugOutList[i].drug_id) {
345
+          count += parseInt(this.drugOutList[i].count);
337 346
         }
338
-        return count
339
-      },
340
-     getCountTwo(drug_id,min_number,max_unit,min_unit){
341
-       var total_count = 0
342
-       var out_count = 0
343
-       var count = 0
344
-       var str = ""
345
-       var str_min = ""
346
-       total_count = this.getInCount(drug_id) * min_number
347
-       out_count = this.getCountOne(drug_id)
348
-       count = total_count-out_count
349
-       if(parseInt(count/min_number)!=0){
350
-         str = parseInt(count/min_number) + max_unit
351
-       }
352
-       if((count%min_number)!=0){
353
-         str_min = count%min_number + min_unit
354
-       }
355
-       return str+str_min
356
-     },
357
-     getManufactur(id){
358
-       var name = ""
359
-       for(let i=0;i<this.manufacturerList.length;i++){
360
-          if(id == this.manufacturerList[i].id){
361
-              name = this.manufacturerList[i].manufacturer_name
362
-          }
363
-       }
364
-       return name
365
-     },
366
-    getName(drug_id){
367
-        var name = ""
368
-        if(drug_id == this.drug.id){
369
-           name = this.drug.drug_name
347
+      }
348
+      return count;
349
+    },
350
+    getCountTwo(drug_id, min_number, max_unit, min_unit) {
351
+      var total_count = 0;
352
+      var out_count = 0;
353
+      var count = 0;
354
+      var str = "";
355
+      var str_min = "";
356
+      total_count = this.getInCount(drug_id) * min_number;
357
+      out_count = this.getCountOne(drug_id);
358
+      count = total_count - out_count;
359
+      if (parseInt(count / min_number) != 0) {
360
+        str = parseInt(count / min_number) + max_unit;
361
+      }
362
+      if (count % min_number != 0) {
363
+        str_min = (count % min_number) + min_unit;
364
+      }
365
+      return str + str_min;
366
+    },
367
+    getManufactur(id) {
368
+      var name = "";
369
+      for (let i = 0; i < this.manufacturerList.length; i++) {
370
+        if (id == this.manufacturerList[i].id) {
371
+          name = this.manufacturerList[i].manufacturer_name;
370 372
         }
371
-        return name
372
-     },
373
-     getHouseName(id){
374
-      var storehouse_name = ""
375
-      for(let i=0;i<this.houseList.length;i++){
376
-        if(id == this.houseList[i].id){
377
-          storehouse_name = this.houseList[i].storehouse_name
373
+      }
374
+      return name;
375
+    },
376
+    getName(drug_id) {
377
+      var name = "";
378
+      if (drug_id == this.drug.id) {
379
+        name = this.drug.drug_name;
380
+      }
381
+      return name;
382
+    },
383
+    getHouseName(id) {
384
+      var storehouse_name = "";
385
+      for (let i = 0; i < this.houseList.length; i++) {
386
+        if (id == this.houseList[i].id) {
387
+          storehouse_name = this.houseList[i].storehouse_name;
378 388
         }
379 389
       }
380
-      return storehouse_name
381
-     },
382
-    }
383
-  }
390
+      return storehouse_name;
391
+    },
392
+  },
393
+};
384 394
 </script>
385 395
 
386 396
 <style rel="stylesheet/css" lang="scss" scoped>
387
-  .information {
388
-    border: 1px #dcdfe6 solid;
389
-    padding: 30px 20px 30px 20px;
397
+.information {
398
+  border: 1px #dcdfe6 solid;
399
+  padding: 30px 20px 30px 20px;
390 400
 
391 401
   .border {
392 402
     border-bottom: 1px #dcdfe6 solid;
393 403
     margin: 0px 0 20px 0;
394 404
   }
405
+}
395 406
 
396
-  }
407
+.title {
408
+  background: #409eff;
409
+  height: 44px;
410
+  line-height: 44px;
411
+  padding: 0 0 0 10px;
412
+  color: #fff;
413
+  margin: 0 0 10px 0;
414
+}
397 415
 
398
-  .title {
399
-    background: #409eff;
400
-    height: 44px;
401
-    line-height: 44px;
402
-    padding: 0 0 0 10px;
403
-    color: #fff;
404
-    margin: 0 0 10px 0;
405
-  }
406
-
407
-  .edit_separater {
408
-    border-top: 1px solid rgb(233, 233, 233);
409
-    margin-top: 15px;
410
-    margin-bottom: 15px;
411
-  }
416
+.edit_separater {
417
+  border-top: 1px solid rgb(233, 233, 233);
418
+  margin-top: 15px;
419
+  margin-bottom: 15px;
420
+}
412 421
 </style>
413 422
 
414 423
 <style>
415
-  .sign-and-weigh-box .sign-and-weigh-box-patients .cell {
416
-    font-size: 12px;
417
-  }
424
+.sign-and-weigh-box .sign-and-weigh-box-patients .cell {
425
+  font-size: 12px;
426
+}
418 427
 
419
-  .sign-and-weigh-box .sign-and-weigh-box-patients .current-row > td {
420
-    background: #6fb5fa;
421
-  }
428
+.sign-and-weigh-box .sign-and-weigh-box-patients .current-row > td {
429
+  background: #6fb5fa;
430
+}
422 431
 
423
-  .count {
424
-    color: #bd2c00;
425
-  }
432
+.count {
433
+  color: #bd2c00;
434
+}
426 435
 
427
-  .el-table td,
428
-  .el-table th.is-leaf,
429
-  .el-table--border,
430
-  .el-table--group {
431
-    border-color: #d0d3da;
432
-  }
436
+.el-table td,
437
+.el-table th.is-leaf,
438
+.el-table--border,
439
+.el-table--group {
440
+  border-color: #d0d3da;
441
+}
433 442
 
434
-  .el-table--border::after,
435
-  .el-table--group::after,
436
-  .el-table::before {
437
-    background-color: #d0d3da;
438
-  }
443
+.el-table--border::after,
444
+.el-table--group::after,
445
+.el-table::before {
446
+  background-color: #d0d3da;
447
+}
439 448
 </style>

+ 33 - 29
src/xt_pages/stock/drugs/drugIndex.vue ファイルの表示

@@ -1,11 +1,11 @@
1 1
 <template>
2 2
   <div class="main-contain">
3 3
     <div class="position">
4
-      <bread-crumb :crumbs='crumbs'></bread-crumb>
4
+      <bread-crumb :crumbs="crumbs"></bread-crumb>
5 5
     </div>
6 6
     <div class="app-container">
7 7
       <div class="service-box">
8
-        <el-tabs v-model="activeName" @tab-click="handleClick"> 
8
+        <el-tabs v-model="activeName" @tab-click="handleClick">
9 9
           <el-tab-pane label="入库明细" name="first">
10 10
             <drug-in-order></drug-in-order>
11 11
           </el-tab-pane>
@@ -18,46 +18,50 @@
18 18
           <el-tab-pane label="退库明细">
19 19
             <drug-cancel-detail></drug-cancel-detail>
20 20
           </el-tab-pane>
21
-
22 21
         </el-tabs>
23 22
       </div>
24 23
     </div>
25 24
   </div>
26 25
 </template>
27 26
 <script>
28
-import BreadCrumb from '@/xt_pages/components/bread-crumb'
29
-import DrugInOrder from '@/xt_pages/stock/drugs/components/drugInOrder'
30
-import DrugCancelOrder from '@/xt_pages/stock/drugs/components/drugCancelOrder'
31
-import DrugOutDetail from '@/xt_pages/stock/drugs/components/drugOutDetail'
32
-import DrugCancelDetail from '@/xt_pages/stock/drugs/components/drugCancelDetail'
27
+import BreadCrumb from "@/xt_pages/components/bread-crumb";
28
+import DrugInOrder from "@/xt_pages/stock/drugs/components/drugInOrder";
29
+import DrugCancelOrder from "@/xt_pages/stock/drugs/components/drugCancelOrder";
30
+import DrugOutDetail from "@/xt_pages/stock/drugs/components/drugOutDetail";
31
+import DrugCancelDetail from "@/xt_pages/stock/drugs/components/drugCancelDetail";
33 32
 export default {
34 33
   components: {
35 34
     BreadCrumb,
36 35
     DrugInOrder,
37 36
     DrugCancelOrder,
38 37
     DrugOutDetail,
39
-    DrugCancelDetail
38
+    DrugCancelDetail,
40 39
   },
41
-   data() {
42
-      return {
43
-        crumbs: [
44
-          { path: false, name: '库存管理' },
45
-          { path: '/stock/drugs/stock/detail', name: '出入库明细查询' }
46
-        ],
47
-        activeName: 'first'
48
-
49
-      }
50
-    },
51
-    methods: {
52
-      handleClick(tab, event) {
53
-        window.sessionStorage.setItem('drug_active',this.activeName)
54
-      }
40
+  data() {
41
+    return {
42
+      crumbs: [
43
+        { path: false, name: "库存管理" },
44
+        { path: "/stock/drugs/stock/detail", name: "出入库明细查询" },
45
+      ],
46
+      activeName: "first",
47
+    };
48
+  },
49
+  methods: {
50
+    handleClick(tab, event) {
51
+      window.sessionStorage.setItem("drug_active", this.activeName);
55 52
     },
56
-    created(){
57
-      var active_name =  window.sessionStorage.getItem('drug_active')
58
-      if(active_name!=null){
59
-        this.activeName = active_name
60
-      }
53
+  },
54
+  created() {
55
+    if (this.$route.path == "/Pharmacy/drugs/stock/detail") {
56
+      this.crumbs = [
57
+        { path: false, name: "药品管理" },
58
+        { path: false, name: "出入库明细查询" },
59
+      ];
61 60
     }
62
-}
61
+    var active_name = window.sessionStorage.getItem("drug_active");
62
+    if (active_name != null) {
63
+      this.activeName = active_name;
64
+    }
65
+  },
66
+};
63 67
 </script>

+ 71 - 61
src/xt_pages/stock/drugs/drugInventory.vue ファイルの表示

@@ -1,68 +1,78 @@
1 1
 <template>
2
-  <div class="main-contain" style="height:100%;">
2
+  <div class="main-contain" style="height: 100%">
3 3
     <div class="position">
4 4
       <bread-crumb :crumbs="crumbs"></bread-crumb>
5 5
     </div>
6
-    <div class="app-container" style="height: calc(100vh - 118px);overflow: hidden;">
7
-        <el-tabs v-model="activeName" style="height: 100%;display: flex;flex-direction: column;" @tab-click="handleClick">
8
-            <el-tab-pane label="药品盘点" name="first" v-if="first" >
9
-                <drug-inventory></drug-inventory>
10
-            </el-tab-pane>
11
-            <el-tab-pane label="盘点列表" name="second" v-if="second">
12
-                <inventory-details ref="child"></inventory-details>
13
-            </el-tab-pane>
6
+    <div
7
+      class="app-container"
8
+      style="height: calc(100vh - 118px); overflow: hidden"
9
+    >
10
+      <el-tabs
11
+        v-model="activeName"
12
+        style="height: 100%; display: flex; flex-direction: column"
13
+        @tab-click="handleClick"
14
+      >
15
+        <el-tab-pane label="药品盘点" name="first" v-if="first">
16
+          <drug-inventory></drug-inventory>
17
+        </el-tab-pane>
18
+        <el-tab-pane label="盘点列表" name="second" v-if="second">
19
+          <inventory-details ref="child"></inventory-details>
20
+        </el-tab-pane>
14 21
 
15
-            <el-tab-pane label="报损列表" name="three" v-if="three">
16
-                <drug-damaged ref="childOne"></drug-damaged>
17
-            </el-tab-pane>
18
-        </el-tabs>
22
+        <el-tab-pane label="报损列表" name="three" v-if="three">
23
+          <drug-damaged ref="childOne"></drug-damaged>
24
+        </el-tab-pane>
25
+      </el-tabs>
19 26
     </div>
20
-    
21
-  
22 27
   </div>
23 28
 </template>
24 29
 
25 30
 <script>
26 31
 import BreadCrumb from "../../components/bread-crumb";
27
-import drugInventory from './inventory'
28
-import inventoryDetails from './inventoryDetails'
29
-import drugDamaged from './drugDamaged.vue'
32
+import drugInventory from "./inventory";
33
+import inventoryDetails from "./inventoryDetails";
34
+import drugDamaged from "./drugDamaged.vue";
30 35
 export default {
31
-    name: "stockModifyPrice",
32
-    components:{
33
-        BreadCrumb,
34
-        drugInventory,
35
-        inventoryDetails,
36
-        drugDamaged
37
-    },
38
-    data() {
39
-        return{
40
-            crumbs: [
41
-                { path: false, name: "库存管理" },
42
-                { path: false, name: "药品管理" },
43
-                { path: false, name: "药品盘点" }
44
-            ],
45
-            activeName:'first',
46
-            first:true,
47
-            second:true,
48
-            three:true,
49
-        }
50
-    },
51
-    methods:{
52
-      handleClick(){
53
-        if(this.activeName == "second"){
54
-         this.$refs.child.getlist()
55
-        }
56
-        if(this.activeName =="three"){
57
-          this.$refs.childOne.getlist()
58
-        }
36
+  name: "stockModifyPrice",
37
+  components: {
38
+    BreadCrumb,
39
+    drugInventory,
40
+    inventoryDetails,
41
+    drugDamaged,
42
+  },
43
+  data() {
44
+    return {
45
+      crumbs: [
46
+        { path: false, name: "库存管理" },
47
+        { path: false, name: "药品管理" },
48
+        { path: false, name: "药品盘点" },
49
+      ],
50
+      activeName: "first",
51
+      first: true,
52
+      second: true,
53
+      three: true,
54
+    };
55
+  },
56
+  methods: {
57
+    handleClick() {
58
+      if (this.activeName == "second") {
59
+        this.$refs.child.getlist();
60
+      }
61
+      if (this.activeName == "three") {
62
+        this.$refs.childOne.getlist();
59 63
       }
60 64
     },
61
-    created(){
62
-      
63
-    },
64
-    mounted() {
65
-    },
65
+  },
66
+  created() {
67
+    if (this.$route.path == "/Pharmacy/drugs/drugInventory") {
68
+      this.crumbs = [
69
+        { path: false, name: "药品管理" },
70
+        { path: false, name: "药品管理" },
71
+        { path: false, name: "药品盘点" },
72
+      ];
73
+    }
74
+  },
75
+  mounted() {},
66 76
 };
67 77
 </script>
68 78
 
@@ -71,13 +81,13 @@ export default {
71 81
   // margin: 20px;
72 82
   font-size: 15px;
73 83
 }
74
-.modifyDialog{
75
-    display: flex;
76
-    flex-wrap: wrap;
77
-    margin-bottom: 10px;
78
-    .el-form-item{
79
-        width: 33%;
80
-    }
84
+.modifyDialog {
85
+  display: flex;
86
+  flex-wrap: wrap;
87
+  margin-bottom: 10px;
88
+  .el-form-item {
89
+    width: 33%;
90
+  }
81 91
 }
82 92
 .el-table td,
83 93
 .el-table th.is-leaf,
@@ -90,10 +100,10 @@ export default {
90 100
 .el-table::before {
91 101
   background-color: #d0d3da;
92 102
 }
93
-::-webkit-scrollbar{
94
-    height: 20px !important;
103
+::-webkit-scrollbar {
104
+  height: 20px !important;
95 105
 }
96
-.el-tabs__content{
106
+.el-tabs__content {
97 107
   overflow-y: auto;
98 108
 }
99 109
 </style>

File diff suppressed because it is too large
+ 711 - 664
src/xt_pages/stock/drugs/drugQueryPrint.vue


+ 39 - 38
src/xt_pages/stock/drugs/drugStockDetail.vue ファイルの表示

@@ -6,7 +6,7 @@
6 6
         size="small"
7 7
         @click="AddNewOrder"
8 8
         class="filter-item"
9
-        style="float:right;"
9
+        style="float: right"
10 10
         type="primary"
11 11
         icon="el-icon-circle-plus-outline"
12 12
         >新增
@@ -17,7 +17,7 @@
17 17
       <div class="cell clearfix">
18 18
         <el-input
19 19
           size="small"
20
-          style="width: 400px;"
20
+          style="width: 400px"
21 21
           class="filter-item"
22 22
           v-model.trim="searchKey"
23 23
           placeholder="单据编码/制单人/厂商"
@@ -38,7 +38,7 @@
38 38
           v-model="start_time"
39 39
           prefix-icon="el-icon-date"
40 40
           :editable="false"
41
-          style="width: 196px;"
41
+          style="width: 196px"
42 42
           type="date"
43 43
           placeholder="选择日期时间"
44 44
           align="right"
@@ -51,7 +51,7 @@
51 51
           v-model="end_time"
52 52
           prefix-icon="el-icon-date"
53 53
           :editable="false"
54
-          style="width: 196px;"
54
+          style="width: 196px"
55 55
           type="date"
56 56
           placeholder="选择日期时间"
57 57
           align="right"
@@ -134,7 +134,7 @@
134 134
           :page-sizes="[7]"
135 135
           :page-size="7"
136 136
           background
137
-          style="margin-top:20px;float: right"
137
+          style="margin-top: 20px; float: right"
138 138
           layout="total, sizes, prev, pager, next, jumper"
139 139
           :total="total"
140 140
         >
@@ -154,6 +154,7 @@ export default {
154 154
   name: "salesReturnOrder",
155 155
   components: { BreadCrumb },
156 156
   created() {
157
+
157 158
     var year = new Date().getFullYear();
158 159
     var month = new Date().getMonth() + 1;
159 160
     var day = new Date().getDate();
@@ -185,7 +186,7 @@ export default {
185 186
     return {
186 187
       crumbs: [
187 188
         { path: false, name: "库存管理" },
188
-        { path: "/stock/detail", name: "出入库明细查询" }
189
+        { path: "/stock/detail", name: "出入库明细查询" },
189 190
       ],
190 191
       searchKey: "",
191 192
       type: 1,
@@ -205,11 +206,11 @@ export default {
205 206
       goodInfo: [],
206 207
       manufacturer: [],
207 208
       selectedTableData: [],
208
-      dealer: []
209
+      dealer: [],
209 210
     };
210 211
   },
211 212
   methods: {
212
-    getTypeName: function(row) {
213
+    getTypeName: function (row) {
213 214
       let name = "";
214 215
       let name2 = "";
215 216
       if (row.type == 1) {
@@ -228,7 +229,7 @@ export default {
228 229
       }
229 230
       return name + name2;
230 231
     },
231
-    specificationName: function(good_info_id) {
232
+    specificationName: function (good_info_id) {
232 233
       let name = "";
233 234
       for (let i = 0; i < this.goodInfo.length; i++) {
234 235
         if (this.goodInfo[i].id == good_info_id) {
@@ -237,17 +238,17 @@ export default {
237 238
       }
238 239
       return name;
239 240
     },
240
-    search: function() {
241
+    search: function () {
241 242
       const Params = {
242 243
         page: this.page,
243 244
         limit: this.limit,
244 245
         start_time: this.start_time,
245 246
         end_time: this.end_time,
246 247
         type: this.type,
247
-        keywords: this.searchKey
248
+        keywords: this.searchKey,
248 249
       };
249 250
       this.cancelStockDate = [];
250
-      getStockDetail(Params).then(response => {
251
+      getStockDetail(Params).then((response) => {
251 252
         if (response.data.state == 0) {
252 253
           this.$message.error(response.data.msg);
253 254
           return false;
@@ -259,22 +260,22 @@ export default {
259 260
         }
260 261
       });
261 262
     },
262
-    AddNewOrder: function() {
263
+    AddNewOrder: function () {
263 264
       this.$router.push({
264 265
         name: "cancelStockOrderAdd",
265
-        query: { type: this.type }
266
+        query: { type: this.type },
266 267
       });
267 268
     },
268
-    GetCancelStock: function() {
269
+    GetCancelStock: function () {
269 270
       const Params = {
270 271
         page: this.page,
271 272
         limit: this.limit,
272 273
         start_time: this.start_time,
273 274
         end_time: this.end_time,
274
-        type: this.type
275
+        type: this.type,
275 276
       };
276 277
       this.cancelStockDate = [];
277
-      getStockDetail(Params).then(response => {
278
+      getStockDetail(Params).then((response) => {
278 279
         if (response.data.state == 0) {
279 280
           this.$message.error(response.data.msg);
280 281
           return false;
@@ -310,7 +311,7 @@ export default {
310 311
       return name;
311 312
     },
312 313
     fetchAllAdminUsers() {
313
-      fetchAllAdminUsers().then(response => {
314
+      fetchAllAdminUsers().then((response) => {
314 315
         console.log(response);
315 316
         if (response.data.state == 1) {
316 317
           this.adminUserOptions = response.data.data.users;
@@ -323,7 +324,7 @@ export default {
323 324
         }
324 325
       });
325 326
     },
326
-    handleSelectionChange: function(val) {
327
+    handleSelectionChange: function (val) {
327 328
       this.multipleSelection = val;
328 329
     },
329 330
     handleSizeChange(val) {
@@ -357,11 +358,11 @@ export default {
357 358
       // 把时间日期转成时间戳
358 359
       return new Date(time).getTime() / 1000;
359 360
     },
360
-    calculate: function(val) {
361
+    calculate: function (val) {
361 362
       return Math.round(parseFloat(val) * 100) / 100;
362 363
     },
363
-    GetConfigInfo: function() {
364
-      GetAllConfig().then(response => {
364
+    GetConfigInfo: function () {
365
+      GetAllConfig().then((response) => {
365 366
         if (response.data.state == 0) {
366 367
           this.$message.error(response.data.msg);
367 368
           return false;
@@ -372,42 +373,42 @@ export default {
372 373
         }
373 374
       });
374 375
     },
375
-    getManufactuerName: function(manufacturer_id) {
376
+    getManufactuerName: function (manufacturer_id) {
376 377
       for (let i = 0; i < this.manufacturer.length; i++) {
377 378
         if (this.manufacturer[i].id == manufacturer_id) {
378 379
           return this.manufacturer[i].manufacturer_name;
379 380
         }
380 381
       }
381 382
     },
382
-    getDealerName: function(dealer_id) {
383
+    getDealerName: function (dealer_id) {
383 384
       for (let i = 0; i < this.dealer.length; i++) {
384 385
         if (this.dealer[i].id == dealer_id) {
385 386
           return this.dealer[i].dealer_name;
386 387
         }
387 388
       }
388 389
     },
389
-    handleEdit: function(index, row) {
390
+    handleEdit: function (index, row) {
390 391
       this.$router.push({
391 392
         name: "cancelStockDetail",
392
-        query: { id: row.id, type: this.type }
393
+        query: { id: row.id, type: this.type },
393 394
       });
394 395
     },
395
-    handleDelete: function(index, row) {
396
+    handleDelete: function (index, row) {
396 397
       const ids = [];
397 398
       ids.push(row.id);
398 399
       const idStr = ids.join(",");
399 400
 
400 401
       const params = {
401
-        ids: idStr
402
+        ids: idStr,
402 403
       };
403 404
 
404 405
       this.$confirm("确认删除出库退库单记录?", "删除出库退库单记录", {
405 406
         confirmButtonText: "确定",
406 407
         cancelButtonText: "取消",
407
-        type: "warning"
408
+        type: "warning",
408 409
       })
409 410
         .then(() => {
410
-          deleteCancelStock(params).then(response => {
411
+          deleteCancelStock(params).then((response) => {
411 412
             if (response.data.state == 0) {
412 413
               this.$message.error(response.data.msg);
413 414
               return false;
@@ -416,7 +417,7 @@ export default {
416 417
                 title: "成功",
417 418
                 message: "删除成功",
418 419
                 type: "success",
419
-                duration: 2000
420
+                duration: 2000,
420 421
               });
421 422
               for (let i = 0; i < ids.length; i++) {
422 423
                 for (let y = 0; y < this.cancelStockDate.length; y++) {
@@ -430,7 +431,7 @@ export default {
430 431
         })
431 432
         .catch(() => {});
432 433
     },
433
-    changeAllSelected: function(val) {
434
+    changeAllSelected: function (val) {
434 435
       if (val) {
435 436
         this.$refs.multipleTable.toggleAllSelection();
436 437
       } else {
@@ -451,15 +452,15 @@ export default {
451 452
       }
452 453
       const idStr = ids.join(",");
453 454
       const params = {
454
-        ids: idStr
455
+        ids: idStr,
455 456
       };
456 457
       this.$confirm("确认删除出库退库单记录?", "删除出库退库单记录", {
457 458
         confirmButtonText: "确定",
458 459
         cancelButtonText: "取消",
459
-        type: "warning"
460
+        type: "warning",
460 461
       })
461 462
         .then(() => {
462
-          deleteCancelStock(params).then(response => {
463
+          deleteCancelStock(params).then((response) => {
463 464
             if (response.data.state == 0) {
464 465
               this.$message.error(response.data.msg);
465 466
               return false;
@@ -468,7 +469,7 @@ export default {
468 469
                 title: "成功",
469 470
                 message: "删除成功",
470 471
                 type: "success",
471
-                duration: 2000
472
+                duration: 2000,
472 473
               });
473 474
 
474 475
               for (let i = 0; i < ids.length; i++) {
@@ -482,8 +483,8 @@ export default {
482 483
           });
483 484
         })
484 485
         .catch(() => {});
485
-    }
486
-  }
486
+    },
487
+  },
487 488
 };
488 489
 </script>
489 490
 

File diff suppressed because it is too large
+ 350 - 287
src/xt_pages/stock/drugs/drugStockInOrder.vue


File diff suppressed because it is too large
+ 760 - 685
src/xt_pages/stock/drugs/drugStockInOrderAdd.vue


File diff suppressed because it is too large
+ 766 - 628
src/xt_pages/stock/drugs/drugStockOutOrder.vue


File diff suppressed because it is too large
+ 543 - 437
src/xt_pages/stock/drugs/drugStockOutOrderAdd.vue


File diff suppressed because it is too large
+ 1148 - 889
src/xt_pages/stock/drugs/query.vue