Elizabeth's proactive approach involves introducing urinal toilet attachment , an ingenious concept that optimizes space and functionality.

drugOutDetail.vue 30KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926
  1. <template>
  2. <div>
  3. <el-button
  4. style="float: right"
  5. size="small"
  6. icon="el-icon-printer"
  7. @click="PrintAction"
  8. type="primary"
  9. >打印
  10. </el-button>
  11. <el-button
  12. style="float: right;margin-right:10px"
  13. size="small"
  14. @click="exportListDetai"
  15. type="primary"
  16. >明细导出
  17. </el-button>
  18. <el-button
  19. style="float: right;margin-right:10px"
  20. size="small"
  21. @click="exportList"
  22. type="primary"
  23. >汇总导出
  24. </el-button>
  25. <div class="cell clearfix">
  26. <label class="title"><span class="name">仓库</span> :</label>
  27. <el-select size="small" v-model="storehouse_id" filterable placeholder="请选择仓库" style="width:200px" @change="changeHouseList">
  28. <el-option
  29. v-for="(option, index) in houseList"
  30. :key="index"
  31. :label="option.storehouse_name"
  32. :value="option.id">
  33. </el-option>
  34. </el-select>
  35. <el-input
  36. size="small"
  37. style="width: 200px;"
  38. class="filter-item"
  39. v-model.trim="searchKey"
  40. placeholder="单据编码/制单人/药品名称"
  41. />
  42. <el-button
  43. size="small"
  44. class="filter-item"
  45. type="primary"
  46. icon="el-icon-search"
  47. @click="search"
  48. >搜索</el-button
  49. >
  50. <label class="title"><span class="name">日期查询</span> : </label>
  51. <el-date-picker
  52. size="small"
  53. v-model="start_time"
  54. prefix-icon="el-icon-date"
  55. :editable="false"
  56. style="width: 150px;"
  57. type="date"
  58. placeholder="选择日期时间"
  59. align="right"
  60. format="yyyy-MM-dd"
  61. value-format="yyyy-MM-dd"
  62. @change="startTimeChange"
  63. ></el-date-picker>
  64. <span class="cellLine"> - </span>
  65. <el-date-picker
  66. size="small"
  67. v-model="end_time"
  68. prefix-icon="el-icon-date"
  69. :editable="false"
  70. style="width: 150px;"
  71. type="date"
  72. placeholder="选择日期时间"
  73. align="right"
  74. format="yyyy-MM-dd"
  75. value-format="yyyy-MM-dd"
  76. @change="endTimeChange"
  77. ></el-date-picker>
  78. </div>
  79. <el-row :gutter="12" style="margin-top: 10px">
  80. <el-table
  81. :data="tableData"
  82. :class="signAndWeighBoxPatients"
  83. border
  84. highlight-current-row
  85. ref="multipleTable"
  86. @selection-change="select"
  87. :row-style="{ color: '#303133' }"
  88. :header-cell-style="{
  89. backgroundColor: 'rgb(245, 247, 250)',
  90. color: '#606266'
  91. }"
  92. >
  93. <el-table-column label="单据编号" align="center" width="200">
  94. <template slot-scope="scope">
  95. {{ scope.row.warehouse_out_order_number }}
  96. </template>
  97. </el-table-column>
  98. <el-table-column label="药品类型" align="center">
  99. <template slot-scope="scope">
  100. <span v-if="scope.row.drug_type == 1">西药</span>
  101. <span v-if="scope.row.drug_type == 2">草药</span>
  102. <span v-if="scope.row.drug_type == 3">成药</span>
  103. <!-- {{getTypeList(scope.row.drug_type)}} -->
  104. </template>
  105. </el-table-column>
  106. <el-table-column label="药品名称" align="center">
  107. <template slot-scope="scope">
  108. {{scope.row.drug_name}}
  109. </template>
  110. </el-table-column>
  111. <el-table-column label="规格型号" align="center">
  112. <template slot-scope="scope">
  113. <!-- {{scope.row.drug_spec}} -->
  114. {{scope.row.specification_name}}
  115. </template>
  116. </el-table-column>
  117. <el-table-column label="操作时间" align="center">
  118. <template slot-scope="scope">
  119. <span>{{getTime(scope.row.ctime)}}</span>
  120. </template>
  121. </el-table-column>
  122. <el-table-column label="制单人" align="center">
  123. <template slot-scope="scope">
  124. {{getAdminUser(scope.row.creater)}}
  125. </template>
  126. </el-table-column>
  127. <el-table-column label="仓库名称" align="center">
  128. <template slot-scope="scope">
  129. {{getStorehouseName(scope.row.storehouse_id)}}
  130. </template>
  131. </el-table-column>
  132. <el-table-column label="出货价" align="center">
  133. <template slot-scope="scope">
  134. <span v-if="org_id == 9919">{{scope.row.last_price}} </span>
  135. <span v-else>
  136. <span v-if="scope.row.price >0"> {{scope.row.price}}</span>
  137. <span v-if="scope.row.price == 0"> {{getPrice(scope.row.drug_id)}}</span>
  138. </span>
  139. </template>
  140. </el-table-column>
  141. <el-table-column label="数量" align="center">
  142. <template slot-scope="scope">
  143. {{scope.row.count}}
  144. </template>
  145. </el-table-column>
  146. <el-table-column label="单位" align="center">
  147. <template slot-scope="scope">
  148. {{scope.row.count_unit}}
  149. </template>
  150. </el-table-column>
  151. <el-table-column label="总价" align="center">
  152. <template slot-scope="scope">
  153. <span v-if="org_id == 9919">{{(scope.row.last_price * scope.row.count).toFixed(2)}} </span>
  154. <span v-if="org_id == 10210 ">{{(scope.row.price * scope.row.count).toFixed(2)}} </span>
  155. <span v-if="org_id == 9671 ">{{(scope.row.price * scope.row.count).toFixed(2)}} </span>
  156. <span v-if ="org_id!=9919 && org_id!=10210 && org_id!=9671">
  157. <!-- <span v-if="scope.row.price >0">
  158. <span v-if="scope.row.count_unit == scope.row.min_unit">
  159. {{(scope.row.price * scope.row.count).toFixed(2)}}
  160. </span>
  161. <span v-if="scope.row.count_unit == scope.row.max_unit">{{(scope.row.price * scope.row.count * scope.row.min_number).toFixed(2)}}</span>
  162. </span>
  163. <span v-if="scope.row.price == 0">
  164. <span v-if="scope.row.count_unit == scope.row.min_unit">
  165. {{((getPrice(scope.row.drug_id)* scope.row.count)).toFixed(2)}}
  166. </span>
  167. <span v-if="scope.row.count_unit == scope.row.max_unit">
  168. {{(getPrice(scope.row.drug_id)* scope.row.count * scope.row.min_number).toFixed(2)}}
  169. </span>
  170. </span> -->
  171. {{scope.row.total_price}}
  172. </span>
  173. </template>
  174. </el-table-column>
  175. </el-table>
  176. <el-pagination
  177. @size-change="handleSizeChange"
  178. @current-change="handleCurrentChange"
  179. :page-sizes="[10, 50, 100,1000]"
  180. :page-size="10"
  181. background
  182. style="margin-top:20px;float: right"
  183. layout="total, sizes, prev, pager, next, jumper"
  184. :total="total"
  185. >
  186. </el-pagination>
  187. </el-row>
  188. </div>
  189. </template>
  190. <script>
  191. import { uParseTime } from "@/utils/tools";
  192. import { fetchAllAdminUsers } from "@/api/doctor";
  193. import {GetAllConfig } from "@/api/stock";
  194. import {getDrugOutDetail,getDrugOutOrderPrint } from "@/api/drug/drug_stock"
  195. import {getBaseDrugLibList} from '@/api/data'
  196. export default {
  197. name: "stockOutDetail",
  198. created() {
  199. this.org_id = this.$store.getters.xt_user.org.id
  200. var nowDate = new Date();
  201. var nowYear = nowDate.getFullYear();
  202. var nowMonth = nowDate.getMonth() + 1;
  203. var nowDay = nowDate.getDate();
  204. this.end_time =
  205. nowYear +
  206. "-" +
  207. (nowMonth < 10 ? "0" + nowMonth : nowMonth) +
  208. "-" +
  209. (nowDay < 10 ? "0" + nowDay : nowDay);
  210. nowDate.setMonth(nowDate.getMonth() - 1);
  211. nowYear = nowDate.getFullYear();
  212. nowMonth = nowDate.getMonth() + 1;
  213. nowDay = nowDate.getDate();
  214. this.start_time =
  215. nowYear +
  216. "-" +
  217. (nowMonth < 10 ? "0" + nowMonth : nowMonth) +
  218. "-" +
  219. (nowDay < 10 ? "0" + nowDay : nowDay);
  220. var start_time = window.sessionStorage.getItem('start_out_time')
  221. var end_time = window.sessionStorage.getItem('end_out_time')
  222. if(start_time!=null){
  223. this.start_time = start_time
  224. }
  225. if(end_time!=null){
  226. this.end_time = end_time
  227. }
  228. this.getDrugOutOrderPrint()
  229. this.GetConfigInfo();
  230. this.fetchAllAdminUsers();
  231. this.getlist()
  232. this.getBaseDrugLibList()
  233. },
  234. data() {
  235. return {
  236. orderTypeArr: [
  237. { value: 1, label: "药品出库单" },
  238. { value: 2, label: "其他入库单" }
  239. ],
  240. manufacturer_id: "",
  241. dealer_id: "",
  242. order_type:"",
  243. searchKey: "",
  244. type: 2,
  245. page: 1,
  246. limit: 10,
  247. checked: false,
  248. total: 0,
  249. pageTotal: 0,
  250. pageSelect: 0,
  251. adminUserOptions: [],
  252. multipleSelection: [],
  253. signAndWeighBoxPatients: "sign-and-weigh-box-patients",
  254. start_time: "",
  255. cancelStockDate: [],
  256. end_time: "",
  257. goodType: [],
  258. goodInfo: [],
  259. manufacturer: [],
  260. selectedTableData: [],
  261. dealer: [],
  262. tableData:[],
  263. tableList:[],
  264. drugList:[],
  265. tablePrint:[],
  266. org_id:0,
  267. drugTypeList:[],
  268. storehouse_id:0,
  269. houseList:[],
  270. };
  271. },
  272. methods: {
  273. changeType: function(val) {
  274. this.order_type = val;
  275. this.getlist()
  276. },
  277. changeManufacturer: function(val) {
  278. this.manufacturer_id = val;
  279. this.getlist()
  280. },
  281. getTypeName: function(row) {
  282. let name = "";
  283. const name2 = "";
  284. if (row.type == 1) {
  285. name = "药品出库单";
  286. } else if (row.type == 2) {
  287. name = "其他出库单";
  288. }
  289. return name;
  290. },
  291. search: function() {
  292. this.getlist()
  293. this.getDrugOutOrderPrint()
  294. },
  295. getXuserName(id) {
  296. if (id <= 0) {
  297. return "";
  298. }
  299. var name = "";
  300. if (
  301. this.adminUserOptions == null ||
  302. typeof this.adminUserOptions.length === "undefined"
  303. ) {
  304. return name;
  305. }
  306. var leng = this.adminUserOptions.length;
  307. if (leng == 0) {
  308. return name;
  309. }
  310. for (let index = 0; index < leng; index++) {
  311. if (this.adminUserOptions[index].id == id) {
  312. name = this.adminUserOptions[index].name;
  313. break;
  314. }
  315. }
  316. return name;
  317. },
  318. fetchAllAdminUsers() {
  319. fetchAllAdminUsers().then(response => {
  320. if (response.data.state == 1) {
  321. this.adminUserOptions = response.data.data.users;
  322. }
  323. });
  324. },
  325. handleSelectionChange: function(val) {
  326. this.multipleSelection = val;
  327. },
  328. handleSizeChange(val) {
  329. this.limit = val;
  330. this.getlist()
  331. },
  332. handleCurrentChange(val) {
  333. this.page = val;
  334. this.getlist()
  335. },
  336. startTimeChange(val) {
  337. var time = this.getTimestamp(val) - this.getTimestamp(this.end_time);
  338. if (time > 0) {
  339. this.$message.error("结束时间不能小于开始时间");
  340. this.start_time = "";
  341. } else {
  342. this.getlist()
  343. this.getDrugOutOrderPrint()
  344. }
  345. },
  346. endTimeChange(val) {
  347. var time = this.getTimestamp(val) - this.getTimestamp(this.start_time);
  348. if (time < 0) {
  349. this.$message.error("结束时间不能小于开始时间");
  350. this.end_time = "";
  351. } else {
  352. this.getlist()
  353. this.getDrugOutOrderPrint()
  354. }
  355. },
  356. getTimestamp(time) {
  357. // 把时间日期转成时间戳
  358. return new Date(time).getTime() / 1000;
  359. },
  360. calculate: function(val) {
  361. return Math.round(parseFloat(val) * 100) / 100;
  362. },
  363. GetConfigInfo() {
  364. GetAllConfig().then(response => {
  365. if (response.data.state == 0) {
  366. this.$message.error(response.data.msg);
  367. return false;
  368. } else {
  369. this.manufacturer = response.data.data.manufacturer;
  370. this.dealer = response.data.data.dealer;
  371. this.goodInfo = response.data.data.goodInfo;
  372. this.goodType = response.data.data.goodType;
  373. }
  374. });
  375. },
  376. getTime: function(val) {
  377. if (val == 0) {
  378. return "";
  379. } else {
  380. return uParseTime(val, "{y}-{m}-{d}");
  381. }
  382. },
  383. PrintAction: function() {
  384. // window.sessionStorage.setItem('start_out_time',this.start_time)
  385. // window.sessionStorage.setItem('end_out_time',this.end_time)
  386. this.$router.push("/stock/drugoutorderprint?start_time="+this.start_time+"&end_time="+this.end_time+"&order_type="+2+"&manufacturer_id="+this.manufacturer_id+"&keyword="+this.keyword+"&limit="+this.limit+"&page="+this.page)
  387. },
  388. getlist(){
  389. var params = {
  390. start_time:this.start_time,
  391. end_time:this.end_time,
  392. order_type:this.order_type,
  393. manufacturer_id:this.manufacturer_id,
  394. keyword:this.searchKey,
  395. page:this.page,
  396. limit:this.limit,
  397. storehouse_id:this.storehouse_id,
  398. }
  399. getDrugOutDetail(params).then(response=>{
  400. this.tableData = []
  401. this.tableList = []
  402. if(response.data.state == 1){
  403. var order = response.data.data.order
  404. console.log("order233322332323223",order)
  405. var obj = {id:0,storehouse_name:"全部"}
  406. this.houseList = []
  407. this.houseList.push(obj)
  408. for(let i=0;i<response.data.data.houseList.length;i++){
  409. this.houseList.push(response.data.data.houseList[i])
  410. }
  411. var total_price = 0
  412. for(let i=0;i<order.length;i++){
  413. order[i].specification_name = order[i].dose + order[i].dose_unit + "*" + order[i].min_number + order[i].min_unit + "/" + order[i].max_unit
  414. order[i].is_total = 0
  415. if(this.org_id == 9919){
  416. order[i].total_price = order[i].count * order[i].last_price
  417. total_price += order[i].count * order[i].last_price
  418. }else{
  419. if(order[i].price > 0){
  420. if(order[i].count_unit == order[i].min_unit && order[i].max_unit!=order[i].min_unit){
  421. order[i].total_price = order[i].count * order[i].price
  422. total_price += order[i].total_price
  423. }
  424. if(order[i].count_unit == order[i].max_unit){
  425. if(order[i].is_sys == 0){
  426. order[i].total_price += order[i].count * order[i].price
  427. }else{
  428. order[i].total_price += order[i].count * order[i].price * order[i].min_number
  429. }
  430. }
  431. }
  432. if(order[i].price ==0 ){
  433. if(order[i].count_unit == order[i].min_unit && order[i].max_unit!=order[i].min_unit){
  434. order[i].total_price = order[i].count * this.getPrice(order[i].drug_id)
  435. total_price +=order[i].total_price
  436. order[i].price = this.getPrice(order[i].drug_id)
  437. }
  438. if(order[i].count_unit == order[i].max_unit){
  439. if(order[i].is_sys == 0){
  440. order[i].total_price += order[i].count * this.getPrice(order[i].drug_id)
  441. }else{
  442. order[i].total_price += order[i].count * this.getPrice(order[i].drug_id) * order[i].min_number
  443. }
  444. order[i].price = this.getPrice(order[i].drug_id)
  445. }
  446. }
  447. }
  448. }
  449. order.push({
  450. warehouse_out_order_number: "合计",
  451. is_total: 1,
  452. specification_name:"",
  453. ctime:"",
  454. total_price:total_price,
  455. });
  456. for(let i=0;i<order.length;i++){
  457. order[i].total_price = order[i].total_price.toFixed(2)
  458. }
  459. console.log("233223322323322332232323",order)
  460. this.tableData = order
  461. let objInfo = {}
  462. order.forEach((item,index)=>{
  463. let { drug_id } = item
  464. if( this.org_id == 9919){
  465. if(!objInfo[drug_id]){
  466. objInfo[drug_id] = {
  467. drug_id,
  468. child:[],
  469. drug_name:item.drug_name,
  470. drug_spec:item.drug_spec,
  471. min_unit:item.min_unit,
  472. count:0,
  473. price:item.last_price,
  474. remark:item.remark,
  475. total_price:0.0,
  476. dose:item.dose,
  477. dose_unit:item.dose_unit,
  478. min_number:item.min_number,
  479. max_unit:item.max_unit
  480. }
  481. }
  482. }else{
  483. if(!objInfo[drug_id]){
  484. objInfo[drug_id] = {
  485. drug_id,
  486. child:[],
  487. drug_name:item.drug_name,
  488. drug_spec:item.drug_spec,
  489. min_unit:item.min_unit,
  490. count:0,
  491. price:item.price,
  492. remark:item.remark,
  493. total_price:0.0,
  494. dose:item.dose,
  495. dose_unit:item.dose_unit,
  496. min_number:item.min_number,
  497. max_unit:item.max_unit
  498. }
  499. }
  500. }
  501. })
  502. let list = Object.values(objInfo);
  503. for(let i=0;i<order.length;i++){
  504. list.map(item=>{
  505. if(order[i].drug_id == item.drug_id){
  506. item.child.push(order[i])
  507. }
  508. })
  509. }
  510. for(let i=0;i<list.length;i++){
  511. for(let j=0;j<list[i].child.length;j++){
  512. if(list[i].child[j].count!=null || list[i].child[j].count != "" || list[i].child[j].count!=0){
  513. list[i].count += list[i].child[j].count
  514. }
  515. }
  516. }
  517. for(let i=0;i<list.length;i++){
  518. list[i].total_price = list[i].count * list[i].price
  519. }
  520. this.tableList = list
  521. var total = response.data.data.total
  522. this.total = total
  523. }
  524. })
  525. },
  526. select(){
  527. },
  528. getAdminUser(id){
  529. var name = ""
  530. for(let i=0;i<this.adminUserOptions.length;i++){
  531. if(id == this.adminUserOptions[i].id){
  532. name = this.adminUserOptions[i].name
  533. }
  534. }
  535. return name
  536. },
  537. exportList(){
  538. for(let i=0;i<this.tablePrint.length;i++){
  539. this.tablePrint[i].index = i+1
  540. }
  541. for(let i=0;i<this.tablePrint.length;i++){
  542. if(this.org_id == 9919 ){
  543. this.tablePrint[i].count = this.getCountSix(this.tablePrint[i].drug_id,this.tablePrint[i].child)
  544. this.tablePrint[i].total_price = this.getCountSenven(this.tablePrint.drug_id,this.tablePrint[i].child,this.tablePrint[i].price)
  545. this.tablePrint[i].unit = this.tablePrint[i].dose + this.tablePrint[i].dose_unit + "*" + this.tablePrint[i].min_number +this.tablePrint[i].min_unit +"/"+this.tablePrint[i].max_unit
  546. this.tablePrint[i].total = this.getCountSenvenOne(this.tablePrint.drug_id,this.tablePrint[i].child,this.tablePrint[i].price)
  547. }else{
  548. this.tablePrint[i].count = this.getCount(this.tablePrint[i].child,this.tablePrint[i].max_unit,this.tablePrint[i].min_unit,this.tablePrint[i].min_number)
  549. this.tablePrint[i].total_price = this.getTotalPrice(this.tablePrint[i].child,this.tablePrint[i].max_unit,this.tablePrint[i].min_number,this.tablePrint[i].min_price)
  550. this.tablePrint[i].unit = this.tablePrint[i].dose + this.tablePrint[i].dose_unit + "*" + this.tablePrint[i].min_number +this.tablePrint[i].min_unit +"/"+this.tablePrint[i].max_unit
  551. this.tablePrint[i].total = this.getTotalPriceOne(this.tablePrint[i].child,this.tablePrint[i].max_unit,this.tablePrint[i].min_number,this.tablePrint[i].min_price)
  552. }
  553. }
  554. import('@/vendor/Export2Excel').then(excel => {
  555. const tHeader = ['序号','药品名称', '规格型号', '单位','数量','单价','总价','备注']
  556. const filterVal = ['index','drug_name', 'unit', 'min_unit','count','min_price','total_price','remark']
  557. let obj = {'index':'合计','total_price':0.00}
  558. for(let i=0;i<this.tablePrint.length;i++){
  559. obj.total_price += this.tablePrint[i].total
  560. }
  561. obj.total_price = obj.total_price.toFixed(2)
  562. this.tablePrint.push(obj)
  563. const data = this.formatJson(filterVal, this.tablePrint)
  564. excel.export_json_to_excel({
  565. header: tHeader,
  566. data,
  567. filename: '药品出库明细'
  568. })
  569. this.downloadLoading = false
  570. })
  571. },
  572. formatJson(filterVal, jsonData) {
  573. return jsonData.map(v => filterVal.map(j => v[j]));
  574. },
  575. exportListDetai(){
  576. import('@/vendor/Export2Excel').then(excel => {
  577. const tHeader = ['序号','单据编号', '药品类型', '药品名称','规格型号','操作时间','制单人','出货价','数量','总价']
  578. const filterVal = ['index','warehouse_out_order_number', 'drugtype', 'drug_name','specification_name','time','user_name','price','count','total_price']
  579. for(let i=0;i<this.tableData.length;i++){
  580. if(this.tableData[i].is_total == 0){
  581. this.tableData[i].index = i+1
  582. if(this.tableData[i].drug_type == 1){
  583. this.tableData[i].drugtype = "西药"
  584. }
  585. if(this.tableData[i].drug_type == 2){
  586. this.tableData[i].drugtype = "草药"
  587. }
  588. if(this.tableData[i].drug_type == 3){
  589. this.tableData[i].drugtype = "成药"
  590. }
  591. // this.tableData[i].drugtype = this.getTypeList(this.tableData[i].drugtype)
  592. this.tableData[i].specification_name = this.tableData[i].dose + this.tableData[i].dose_unit +"*" + this.tableData[i].min_number + this.tableData[i].min_unit + "/" + this.tableData[i].max_unit
  593. this.tableData[i].time = this.getTime(this.tableData[i].ctime)
  594. this.tableData[i].user_name = this.getAdminUser(this.tableData[i].creater)
  595. if(this.org_id == 9919){
  596. this.tableData[i].total = (this.tableData[i].count * this.tableData[i].last_price)
  597. if(this.tableData[i].count >=this.tableData[i].min_number){
  598. this.tableData[i].total_price = (this.tableData[i].count * this.tableData[i].last_price)/this.tableData[i].min_number
  599. }else{
  600. this.tableData[i].total_price = (this.tableData[i].count * this.tableData[i].last_price)
  601. }
  602. }else{
  603. this.tableData[i].total = (this.tableData[i].count * this.tableData[i].price)
  604. if(this.tableData[i].count_unit == this.tableData[i].min_unit && this.tableData[i].max_unit!=this.tableData[i].min_unit){
  605. this.tableData[i].total_price = (this.tableData[i].count * this.tableData[i].price)
  606. }
  607. if(this.tableData[i].count_unit == this.tableData[i].max_unit){
  608. this.tableData[i].total_price = (this.tableData[i].count * this.tableData[i].price)*this.tableData[i].min_number
  609. }
  610. }
  611. }
  612. }
  613. const data = this.formatJson(filterVal, this.tableData)
  614. excel.export_json_to_excel({
  615. header: tHeader,
  616. data,
  617. filename: '药品出库明细'
  618. })
  619. this.downloadLoading = false
  620. })
  621. },
  622. getBaseDrugLibList() {
  623. let params = {
  624. page: 1,
  625. limit: 1000,
  626. keyword:"",
  627. is_use: "",
  628. is_charge: "",
  629. is_inject: "",
  630. manufacturer:"",
  631. is_record:""
  632. }
  633. getBaseDrugLibList(params).then(response => {
  634. if (response.data.state == 0) {
  635. this.$message.error(response.data.msg)
  636. return false
  637. } else {
  638. this.drugList = []
  639. for (let i = 0; i < response.data.data.list.length; i++) {
  640. this.drugList.push(response.data.data.list[i])
  641. }
  642. }
  643. })
  644. },
  645. getDrugOutOrderPrint(){
  646. var params = {
  647. start_time:this.start_time,
  648. end_time:this.end_time,
  649. order_type:2,
  650. }
  651. getDrugOutOrderPrint(params).then(response=>{
  652. if(response.data.state == 1){
  653. var list = response.data.data.list
  654. let objInfo = {}
  655. if(this.org_id == 9919){
  656. list.forEach((item,index)=>{
  657. let { drug_id } = item
  658. if(!objInfo[drug_id]){
  659. objInfo[drug_id] = {
  660. drug_id,
  661. child:[],
  662. drug_name:item.XtBaseDrug.drug_name,
  663. drug_spec:item.XtBaseDrug.drug_spec,
  664. min_unit:item.XtBaseDrug.min_unit,
  665. count:0,
  666. price:item.XtBaseDrug.last_price,
  667. remark:item.XtBaseDrug.remark,
  668. total_price:"",
  669. dose:item.XtBaseDrug.dose,
  670. dose_unit:item.XtBaseDrug.dose_unit,
  671. min_number:item.XtBaseDrug.min_number,
  672. max_unit:item.XtBaseDrug.max_unit,
  673. min_price:item.XtBaseDrug.min_price,
  674. }
  675. }
  676. })
  677. }else{
  678. list.forEach((item,index)=>{
  679. let { drug_id } = item
  680. if(!objInfo[drug_id]){
  681. objInfo[drug_id] = {
  682. drug_id,
  683. child:[],
  684. drug_name:item.XtBaseDrug.drug_name,
  685. drug_spec:item.XtBaseDrug.drug_spec,
  686. min_unit:item.XtBaseDrug.min_unit,
  687. count:0,
  688. price:item.XtBaseDrug.last_price,
  689. remark:item.XtBaseDrug.remark,
  690. total_price:"",
  691. dose:item.XtBaseDrug.dose,
  692. dose_unit:item.XtBaseDrug.dose_unit,
  693. min_number:item.XtBaseDrug.min_number,
  694. max_unit:item.XtBaseDrug.max_unit,
  695. min_price:item.XtBaseDrug.min_price,
  696. }
  697. }
  698. })
  699. }
  700. let newArr = Object.values(objInfo);
  701. for(let i=0;i<newArr.length;i++){
  702. for(let j=0;j<list.length;j++){
  703. if(newArr[i].drug_id == list[j].drug_id){
  704. newArr[i].child.push(list[j])
  705. }
  706. }
  707. }
  708. this.tablePrint = newArr
  709. }
  710. })
  711. },
  712. getCount(arr,max_unit,min_unit,min_number){
  713. var total = 0
  714. var str = ""
  715. var min_str = ""
  716. for(let i=0;i<arr.length;i++){
  717. if(arr[i].count_unit == max_unit){
  718. arr[i].count = arr[i].count * min_number
  719. }
  720. }
  721. for(let i=0;i<arr.length;i++){
  722. total+= arr[i].count
  723. }
  724. if(total<min_number){
  725. str = ""
  726. min_str = total + min_unit
  727. }
  728. if(total >= min_number){
  729. if(parseInt(total/min_number)!=0){
  730. str = parseInt(total/min_number)+ max_unit
  731. }
  732. if((total%min_number)!=0){
  733. min_str = total%min_number + min_unit
  734. }
  735. }
  736. return str + min_str
  737. },
  738. getTotalPrice(arr,max_unit,min_number,min_price){
  739. var total = 0
  740. for(let i=0;i<arr.length;i++){
  741. if(arr[i].count_unit == max_unit){
  742. arr[i].count = arr[i].count * min_number
  743. }else{
  744. arr[i].count = arr[i].count
  745. }
  746. }
  747. for(let j=0;j<arr.length;j++){
  748. total +=arr[j].count
  749. }
  750. return (total*min_price).toFixed(2)
  751. },
  752. getTotalPriceOne(arr,max_unit,min_number,min_price){
  753. var total = 0
  754. for(let i=0;i<arr.length;i++){
  755. if(arr[i].count_unit == max_unit){
  756. arr[i].count = arr[i].count * min_number
  757. }else{
  758. arr[i].count = arr[i].count
  759. }
  760. }
  761. for(let j=0;j<arr.length;j++){
  762. total +=arr[j].count
  763. }
  764. return total*min_price
  765. },
  766. getCountSix(drug_id,val){
  767. var count = 0
  768. for(let i=0;i<val.length;i++){
  769. count+= val[i].count
  770. }
  771. return count
  772. },
  773. getCountSenven(drug_id,val,price){
  774. var count = 0
  775. for(let i=0;i<val.length;i++){
  776. count+= val[i].count
  777. }
  778. return (count*price).toFixed(2)
  779. },
  780. getCountSenvenOne(drug_id,val,price){
  781. var count = 0
  782. for(let i=0;i<val.length;i++){
  783. count+= val[i].count
  784. }
  785. return (count*price)
  786. },
  787. getTypeList(id){
  788. var name = ""
  789. for(let i=0;i<this.drugTypeList.length;i++){
  790. if(id == this.drugTypeList[i].value){
  791. name = this.drugTypeList[i].name
  792. }
  793. }
  794. return name
  795. },
  796. getPrice(drug_id){
  797. var price = ""
  798. for(let i=0;i<this.drugList.length;i++){
  799. if(drug_id == this.drugList[i].id){
  800. price = this.drugList[i].min_price
  801. }
  802. }
  803. return price
  804. },
  805. getStorehouseName(id){
  806. var storehouse_name = ""
  807. for(let i=0;i<this.houseList.length;i++){
  808. if(id == this.houseList[i].id){
  809. storehouse_name = this.houseList[i].storehouse_name
  810. }
  811. }
  812. if(storehouse_name == "全部"){
  813. return ""
  814. }else{
  815. return storehouse_name
  816. }
  817. },
  818. changeHouseList(){
  819. this.houseList = []
  820. this.getlist()
  821. }
  822. }
  823. };
  824. </script>
  825. <style rel="stylesheet/css" lang="scss" scoped>
  826. .information {
  827. border: 1px #dcdfe6 solid;
  828. padding: 30px 20px 30px 20px;
  829. .border {
  830. border-bottom: 1px #dcdfe6 solid;
  831. margin: 0px 0 20px 0;
  832. }
  833. }
  834. .edit_separater {
  835. border-top: 1px solid rgb(233, 233, 233);
  836. margin-top: 15px;
  837. margin-bottom: 15px;
  838. }
  839. </style>
  840. <style>
  841. .sign-and-weigh-box .sign-and-weigh-box-patients .cell {
  842. font-size: 12px;
  843. }
  844. .sign-and-weigh-box .sign-and-weigh-box-patients .current-row > td {
  845. background: #6fb5fa;
  846. }
  847. .count {
  848. color: #bd2c00;
  849. }
  850. .el-table td,
  851. .el-table th.is-leaf,
  852. .el-table--border,
  853. .el-table--group {
  854. border-color: #d0d3da;
  855. }
  856. .el-table--border::after,
  857. .el-table--group::after,
  858. .el-table::before {
  859. background-color: #d0d3da;
  860. }
  861. </style>