query.vue 11KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298
  1. <template>
  2. <div class="main-contain">
  3. <div class="position">
  4. <bread-crumb :crumbs="crumbs"></bread-crumb>
  5. <div>
  6. <el-button
  7. size="small"
  8. :loading="downloadLoading"
  9. @click="exportList"
  10. class="filter-item"
  11. type="primary"
  12. >导出
  13. </el-button>
  14. <el-button
  15. size="small"
  16. @click="toPrint"
  17. class="filter-item"
  18. type="primary"
  19. >打印
  20. </el-button>
  21. </div>
  22. </div>
  23. <div class="app-container">
  24. <div class="cell clearfix">
  25. <el-date-picker
  26. v-model="start_time"
  27. prefix-icon="el-icon-date"
  28. :editable="false"
  29. style="width: 196px;margin-right:10px;"
  30. type="date"
  31. placeholder="选择日期时间"
  32. align="right"
  33. format="yyyy-MM-dd"
  34. value-format="yyyy-MM-dd"
  35. @change="changeStartime"
  36. ></el-date-picker>
  37. <el-date-picker
  38. v-model="end_time"
  39. prefix-icon="el-icon-date"
  40. :editable="false"
  41. style="width: 196px;margin-right:10px;"
  42. type="date"
  43. placeholder="选择日期时间"
  44. align="right"
  45. format="yyyy-MM-dd"
  46. value-format="yyyy-MM-dd"
  47. @change="changeEndtime"
  48. ></el-date-picker>
  49. <el-select v-model="drug_name" placeholder="药品名称" style="margin-right:10px;"
  50. @change="changeDrugName">
  51. <el-option
  52. v-for="item in drugName"
  53. :key="item.id"
  54. :label="item.drug_name"
  55. :value="item.id">
  56. </el-option>
  57. </el-select>
  58. <el-select v-model="drug_spec" placeholder="规格名称"
  59. @change="changeRullName">
  60. <el-option
  61. v-for="item in rulleName"
  62. :key="item.id"
  63. :label="item.drug_spec"
  64. :value="item.id">
  65. </el-option>
  66. </el-select>
  67. <el-input style="width: 180px;margin:0 10px;" @keyup.enter.native='searchAction' v-model.trim="search_input" class="filter-item"/>
  68. <el-button class="filter-item" type="primary" icon="el-icon-search" @click="searchAction">搜索</el-button>
  69. </div>
  70. <el-table :data="tableData" border style="width: 100%;" height="500" :row-style="{ color: '#303133' }" :header-cell-style="{backgroundColor: 'rgb(245, 247, 250)',color: '#606266'}" highlight-current-row>
  71. <el-table-column align="center" label="序号" width="60">
  72. <template slot-scope="scope">{{ scope.$index +1 }}</template>
  73. </el-table-column>
  74. <el-table-column align="center" prop="name" label="透析号" width="80">
  75. <template slot-scope="scope">{{ scope.row.dialysis_no }}</template>
  76. </el-table-column>
  77. <el-table-column align="center" prop="name" label="姓名" width="80">
  78. <template slot-scope="scope">{{ scope.row.name }}</template>
  79. </el-table-column>
  80. <el-table-column align="center" prop="name" label="药品名称">
  81. <template slot-scope="scope">{{ scope.row.drug_name }}</template>
  82. </el-table-column>
  83. <el-table-column align="center" prop="name" label="规格名称">
  84. <template slot-scope="scope">{{ scope.row.drug_spec }}</template>
  85. </el-table-column>
  86. <!-- <el-table-column align="center" prop="name" label="单位" width="80">
  87. <template slot-scope="scope">{{ scope.row.min_unit }}</template>
  88. </el-table-column> -->
  89. <el-table-column align="center" prop="name" label="自备量" width="80">
  90. <template slot-scope="scope">{{ scope.row.Total?scope.row.Total:0 }}</template>
  91. </el-table-column>
  92. <el-table-column align="center" prop="name" label="已使用" width="80">
  93. <template slot-scope="scope">{{ scope.row.Count }}</template>
  94. </el-table-column>
  95. <el-table-column align="center" prop="name" label="剩余" width="80">
  96. <template slot-scope="scope">{{ (scope.row.Total?scope.row.Total:0) - scope.row.Count }}</template>
  97. </el-table-column>
  98. </el-table>
  99. </div>
  100. </div>
  101. </template>
  102. <script>
  103. import BreadCrumb from "../../components/bread-crumb";
  104. import { parseTime } from '@/utils'
  105. import { getAllMedicalList,getRulleName,getAllPatientStockList } from "@/api/drug/drug"
  106. const moment = require('moment')
  107. export default {
  108. components:{
  109. BreadCrumb
  110. },
  111. data(){
  112. return{
  113. crumbs: [
  114. { path: false, name: "库存管理" },
  115. { path: false, name: "自备药管理" },
  116. { path: false, name: "自备药查询" },
  117. ],
  118. tableData: [],
  119. downloadLoading: false,
  120. search_input:"",
  121. options:[],
  122. value:"",
  123. start_time:moment(new Date()).add('year',0).format("YYYY-MM-DD"),
  124. end_time:moment(new Date()).add('year',0).format("YYYY-MM-DD"),
  125. // start_time:"",
  126. // end_time:"",
  127. drug_name:"",
  128. drug_spec:"",
  129. drugName:[],
  130. rulleName:[]
  131. }
  132. },
  133. methods:{
  134. toPrint(){
  135. this.$router.push({path: '/stock/selfPreparedMedicineQueryPrint?start_time='+this.start_time+"&end_time="+this.end_time+"&drug_name="+this.drug_name+"&drug_spec="+this.drug_spec+"&keyword="+this.search_input})
  136. },
  137. exportList(){
  138. import('@/vendor/Export2Excel').then(excel => {
  139. const tHeader = ['序号', '透析号', '姓名','药品名称','规格名称','自备量','已使用','剩余']
  140. const filterVal = ['index', 'dialysis_no', 'name','drug_name','drug_spec','Total','Count','margin']
  141. for(let i=0;i<this.tableData.length;i++){
  142. this.tableData[i].margin = (this.tableData[i].Total?this.tableData[i].Total:0) - this.tableData[i].Count
  143. }
  144. const data = this.formatJson(filterVal, this.tableData)
  145. excel.export_json_to_excel({
  146. header: tHeader,
  147. data,
  148. filename: '自备药查询'
  149. })
  150. this.downloadLoading = false
  151. })
  152. },
  153. formatJson(filterVal, jsonData) {
  154. return jsonData.map(v => filterVal.map(j => v[j]));
  155. },
  156. changeStartime(){
  157. this.getlist()
  158. },
  159. changeEndtime(){
  160. this.getlist()
  161. },
  162. getAllMedicalList(){
  163. getAllMedicalList().then(response=>{
  164. if(response.data.state == 1){
  165. var drugName = response.data.data.drugName
  166. var obj = {
  167. id:0,
  168. drug_name:"全部"
  169. }
  170. var arr = []
  171. arr.push(obj)
  172. arr.push(...drugName)
  173. console.log("arrr",arr)
  174. this.drugName = arr
  175. this.getlist()
  176. }
  177. })
  178. },
  179. getRulleName(id){
  180. const params = {
  181. id:id
  182. }
  183. getRulleName(params).then(response=>{
  184. if(response.data.state == 1){
  185. var rulleName = response.data.data.rullerList
  186. var obj = {
  187. id:0,
  188. drug_spec:"全部"
  189. }
  190. var arr = []
  191. arr.push(obj)
  192. arr.push(...rulleName)
  193. console.log("rulleName",arr)
  194. this.rulleName = arr
  195. }
  196. })
  197. },
  198. searchAction(){
  199. this.getlist()
  200. },
  201. changeDrugName(id){
  202. if(id == 0){
  203. this.drug_name = 0
  204. }
  205. if(id != 0 ){
  206. var drug_name = ""
  207. for(let i=0;i<this.drugName.length;i++){
  208. if(id == this.drugName[i].id){
  209. drug_name = this.drugName[i].drug_name
  210. }
  211. }
  212. this.drug_name = drug_name
  213. this.getRulleName(id)
  214. }
  215. this.getlist()
  216. },
  217. changeRullName(id){
  218. var drug_spec = ""
  219. for(let i=0;i<this.rulleName.length;i++){
  220. if(id == this.rulleName[i].id){
  221. drug_spec = this.rulleName[i].drug_spec
  222. }
  223. }
  224. this.drug_spec = drug_spec
  225. this.getlist()
  226. },
  227. getlist(){
  228. var name = ""
  229. if(this.drug_name == 0){
  230. name = ""
  231. }
  232. if(this.drug_name != 0){
  233. name = this.drug_name
  234. }
  235. if(this.drug_spec == "全部"){
  236. this.drug_spec = ""
  237. }
  238. const params = {
  239. start_time:this.start_time,
  240. end_time:this.end_time,
  241. drug_name:name,
  242. drug_spec:this.drug_spec,
  243. search_input:this.search_input
  244. }
  245. console.log("params9999999",params)
  246. getAllPatientStockList(params).then(response=>{
  247. if(response.data.state == 1){
  248. var stocklist = response.data.data.stocklist
  249. for(let i=0;i<stocklist.length;i++){
  250. stocklist[i].index = i+1
  251. stocklist[i].Count = 0
  252. }
  253. var outStockList = response.data.data.outStockList
  254. // for(let i=0;i<stocklist.length;i++){
  255. // for(let j=0;j<outStockList.length;j++){
  256. // if(stocklist[i].patient_id == outStockList[j].patient_id &&stocklist[i].drug_name == outStockList[j].drug_name && stocklist[i].drug_spec == outStockList[j].drug_spec){
  257. // stocklist[i].Count = outStockList[j].Count
  258. // }
  259. // }
  260. // }
  261. for(let i=0;i<outStockList.length;i++){
  262. for(let j=0;j<stocklist.length;j++){
  263. if(outStockList[i].patient_id == stocklist[j].patient_id &&outStockList[i].drug_name == stocklist[j].drug_name && outStockList[i].drug_spec == stocklist[j].drug_spec){
  264. if(!stocklist[j].Total){
  265. outStockList[i].Total = 0
  266. }
  267. outStockList[i].Total = stocklist[j].Total
  268. }
  269. }
  270. }
  271. console.log("outStockList",outStockList)
  272. this.tableData = outStockList
  273. }
  274. })
  275. }
  276. },
  277. created(){
  278. //获取所有药品名称
  279. this.getAllMedicalList()
  280. }
  281. }
  282. </script>