drugDamaged.vue 41KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970971972973974975976977978979980981982983984985986987988989990991992993994995996997998999100010011002100310041005100610071008100910101011101210131014101510161017101810191020102110221023102410251026102710281029103010311032103310341035103610371038103910401041104210431044104510461047104810491050105110521053105410551056105710581059106010611062106310641065
  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 style="display: flex;align-items: center;justify-content: space-between;margin-bottom:10px;">
  8. <div>
  9. <el-input
  10. size="small"
  11. style="width: 200px;"
  12. class="filter-item"
  13. v-model.trim="searchKey"
  14. placeholder="请输入单据编号或操作人姓名"
  15. />
  16. <el-button
  17. size="small"
  18. class="filter-item"
  19. type="primary"
  20. icon="el-icon-search"
  21. @click="search"
  22. >搜索</el-button
  23. >
  24. <el-date-picker
  25. size="small"
  26. v-model="start_time"
  27. type="date"
  28. style="margin-left:5px;width:140px;"
  29. placeholder="选择日期"
  30. @change="changeStartTime">
  31. </el-date-picker>
  32. <el-date-picker
  33. size="small"
  34. v-model="end_time"
  35. type="date"
  36. style="margin-left:5px;width:140px;"
  37. placeholder="选择日期"
  38. @change="changeEndTime">
  39. </el-date-picker>
  40. </div>
  41. <div>
  42. <el-button size="small" type="primary" @click="dialogVisible = true">新增</el-button>
  43. <el-button size="small" type="primary" @click="toCheck">核对</el-button>
  44. <!-- <el-button size="small" type="primary" @click="print">打印</el-button>
  45. <el-button size="small" type="primary">导出</el-button> -->
  46. </div>
  47. </div>
  48. <el-table :data="tableList" border :header-cell-style="{ backgroundColor: 'rgb(245, 247, 250)' }" @selection-change="changePrice">
  49. <el-table-column type="selection" width="55" align="center"> </el-table-column>
  50. <el-table-column prop="date" label="报损编码" align="center">
  51. <template slot-scope="scope">
  52. {{scope.row.warehousing_order}}
  53. </template>
  54. </el-table-column>
  55. <el-table-column prop="date" label="报损日期" align="center">
  56. <template slot-scope="scope">
  57. {{getTime(scope.row.start_time)}}
  58. </template>
  59. </el-table-column>
  60. <el-table-column prop="name" label="药品名称" align="center">
  61. <template slot-scope="scope">
  62. {{scope.row.drug_name}}
  63. </template>
  64. </el-table-column>
  65. <el-table-column prop="name" label="规格" align="center">
  66. <template slot-scope="scope">
  67. {{scope.row.specification_name}}
  68. </template>
  69. </el-table-column>
  70. <el-table-column prop="name" label="报损数量" align="center">
  71. <template slot-scope="scope">
  72. {{scope.row.count}}
  73. </template>
  74. </el-table-column>
  75. <el-table-column prop="name" label="操作人" align="center">
  76. <template slot-scope="scope">
  77. {{getDoctorName(scope.row.creater)}}
  78. </template>
  79. </el-table-column>
  80. <el-table-column prop="name" label="审核日期" align="center">
  81. <template slot-scope="scope">
  82. {{getTime(scope.row.checker_time)}}
  83. </template>
  84. </el-table-column>
  85. <el-table-column prop="name" label="核对人" align="center">
  86. <template slot-scope="scope">
  87. {{getDoctorName(scope.row.checker)}}
  88. </template>
  89. </el-table-column>
  90. <el-table-column prop="name" label="状态" align="center">
  91. <template slot-scope="scope">
  92. <span v-if="scope.row.checker_status == 1">已核对</span>
  93. <span v-if="scope.row.checker_status == 2">未核对</span>
  94. </template>
  95. </el-table-column>
  96. <el-table-column label="操作" align="center" width="200">
  97. <template slot-scope="scope">
  98. <el-button type="primary" size="small" @click="moDrugDamage(scope.row.id,scope.row.checker_status)">编辑</el-button>
  99. <el-button type="danger" size="small" @click="deleteDrugDamage(scope.row.id,scope.row.checker_status,scope.$index)">删除</el-button>
  100. </template>
  101. </el-table-column>
  102. </el-table>
  103. <el-pagination
  104. @size-change="handleSizeChange"
  105. @current-change="handleCurrentChange"
  106. :page-sizes="[10, 20, 40, 100]"
  107. :page-size="10"
  108. background
  109. style="margin-top:20px;text-align: right"
  110. layout="total, sizes, prev, pager, next, jumper"
  111. :total="total">
  112. </el-pagination>
  113. </div>
  114. <el-dialog
  115. title="药品报损"
  116. :visible.sync="dialogVisible"
  117. width="1200px">
  118. <el-form :model="form" class="modifyDialog" label-width="120px">
  119. <el-form-item label="药品ID">
  120. <el-input v-model="form.drug_id" :disabled="true"></el-input>
  121. </el-form-item>
  122. <el-form-item label="药品名称">
  123. <el-autocomplete
  124. class="checkSearch"
  125. popper-class="my-autocomplete"
  126. v-model="form.drug_name"
  127. :fetch-suggestions="querySearchAsync"
  128. :trigger-on-focus="true"
  129. placeholder="请输入药品名称"
  130. @select="handleSelect"
  131. @input="changeGoodName(scope.$index)"
  132. style="width:260px;"
  133. >
  134. <i class="el-icon-search el-input__icon" slot="suffix"></i>
  135. <template slot-scope="{ item }">
  136. <div class="name">{{ item.drug_name + item.dose + item.dose_unit + "*" +item.min_number + item.min_unit +"/" + item.max_unit + " "+item.manufacturer}}</div>
  137. </template>
  138. </el-autocomplete>
  139. </el-form-item>
  140. <el-form-item label="批次">
  141. <el-select v-model="form.batch_number" filterable placeholder="请选择" @change="changeNumber">
  142. <el-option
  143. v-for="(item,index) in numberList"
  144. :key="index"
  145. :label="item.batch_number"
  146. :value="item.id">
  147. </el-option>
  148. </el-select>
  149. </el-form-item>
  150. <el-form-item label="单位">
  151. <el-input v-model="form.warehousing_unit" :disabled="true"></el-input>
  152. </el-form-item>
  153. <el-form-item label="进货价">
  154. <el-input v-model="form.last_price" :disabled="true"></el-input>
  155. </el-form-item>
  156. <el-form-item label="零售价">
  157. <el-input v-model="form.retail_price" :disabled="true"></el-input>
  158. </el-form-item>
  159. <el-form-item label="报损数量">
  160. <el-input v-model="form.count"></el-input>
  161. </el-form-item>
  162. <el-form-item label="库存">
  163. <el-input v-model="form.total" :disabled="true" ></el-input>
  164. </el-form-item>
  165. <el-form-item label="产地">
  166. <el-input v-model="form.drug_origin_place" :disabled="true"></el-input>
  167. </el-form-item>
  168. <el-form-item label="批准文号">
  169. <el-input v-model="form.number" :disabled="true"></el-input>
  170. </el-form-item>
  171. <el-form-item label="生产厂商">
  172. <el-input v-model="form.manufacturer" :disabled="true"></el-input>
  173. </el-form-item>
  174. <el-form-item label="备注">
  175. <div style="display:flex;">
  176. <el-input v-model="form.remark"></el-input>
  177. <el-button style="margin-left:5px;" type="primary" @click="addPrice">添加</el-button>
  178. </div>
  179. </el-form-item>
  180. </el-form>
  181. <el-table :data="tableData" border :header-cell-style="{ backgroundColor: 'rgb(245, 247, 250)' }">
  182. <el-table-column prop="date" label="药品ID" width="100" align="center">
  183. <template slot-scope="scope">
  184. {{scope.row.drug_id}}
  185. </template>
  186. </el-table-column>
  187. <el-table-column prop="date" label="药品名称" width="100" align="center">
  188. <template slot-scope="scope">
  189. {{scope.row.drug_name}}
  190. </template>
  191. </el-table-column>
  192. <el-table-column prop="name" label="规格" width="100" align="center">
  193. <template slot-scope="scope">
  194. {{scope.row.specification_name}}
  195. </template>
  196. </el-table-column>
  197. <el-table-column prop="name" label="单位" width="100" align="center">
  198. <template slot-scope="scope">
  199. {{scope.row.warehousing_unit}}
  200. </template>
  201. </el-table-column>
  202. <el-table-column prop="name" label="报损数量" width="100" align="center">
  203. <template slot-scope="scope">
  204. {{scope.row.count}}
  205. </template>
  206. </el-table-column>
  207. <el-table-column prop="name" label="原进货价" width="100" align="center">
  208. <template slot-scope="scope">
  209. {{scope.row.last_price}}
  210. </template>
  211. </el-table-column>
  212. <el-table-column prop="name" label="原零售价" width="100" align="center">
  213. <template slot-scope="scope">
  214. {{scope.row.retail_price}}
  215. </template>
  216. </el-table-column>
  217. <el-table-column prop="name" label="生产厂商" width="100" align="center">
  218. <template slot-scope="scope">
  219. {{scope.row.manufacturer}}
  220. </template>
  221. </el-table-column>
  222. <el-table-column prop="name" label="产地" width="100" align="center">
  223. <template slot-scope="scope">
  224. {{scope.row.drug_origin_place}}
  225. </template>
  226. </el-table-column>
  227. <el-table-column prop="name" label="批准文号" width="100" align="center">
  228. <template slot-scope="scope">
  229. {{scope.row.number}}
  230. </template>
  231. </el-table-column>
  232. <el-table-column prop="name" label="备注" width="100" align="center">
  233. <template slot-scope="scope">
  234. {{scope.row.remark}}
  235. </template>
  236. </el-table-column>
  237. <el-table-column
  238. fixed="right"
  239. width="100"
  240. label="操作">
  241. <template slot-scope="scope">
  242. <el-button type="text" size="small" @click="toDel(scope.$index)">删除</el-button>
  243. <el-button type="text" size="small" @click="toEdit(scope.row,scope.$index)">编辑</el-button>
  244. </template>
  245. </el-table-column>
  246. </el-table>
  247. <span slot="footer" class="dialog-footer">
  248. <el-button @click="dialogVisible = false">取 消</el-button>
  249. <el-button type="primary" @click="saveDrugDamage">确 定</el-button>
  250. </span>
  251. </el-dialog>
  252. <el-dialog
  253. title="药品盘点核对"
  254. :visible.sync="checkDialogVisible"
  255. width="30%"
  256. >
  257. <span>
  258. <el-form :model="form">
  259. <el-row>
  260. <el-col>
  261. <el-form-item label="核对时间">
  262. <el-date-picker
  263. size="small"
  264. v-model="check_time"
  265. type="date"
  266. style="margin-left:5px;width:140px;"
  267. placeholder="选择日期">
  268. </el-date-picker>
  269. </el-form-item>
  270. </el-col>
  271. </el-row>
  272. <el-row>
  273. <el-col>
  274. <el-form-item label="核对人">
  275. <el-select v-model="checker" placeholder="请选择">
  276. <el-option
  277. v-for="item in doctorList"
  278. :key="item.admin_user_id"
  279. :label="item.user_name"
  280. :value="item.admin_user_id">
  281. </el-option>
  282. </el-select>
  283. </el-form-item>
  284. </el-col>
  285. </el-row>
  286. </el-form>
  287. </span>
  288. <span slot="footer" class="dialog-footer">
  289. <el-button @click="checkDialogVisible = false">取 消</el-button>
  290. <el-button type="primary" @click="SaveDrugDamagePrice">保 存</el-button>
  291. </span>
  292. </el-dialog>
  293. <el-dialog
  294. title="库房调价"
  295. :visible.sync="editDialogVisible"
  296. width="1200px">
  297. <el-form :model="form" class="modifyDialog" label-width="120px">
  298. <el-form-item label="药品ID">
  299. <el-input v-model="form.drug_id" :disabled="true"></el-input>
  300. </el-form-item>
  301. <el-form-item label="药品名称">
  302. <el-autocomplete
  303. class="checkSearch"
  304. popper-class="my-autocomplete"
  305. v-model="form.drug_name"
  306. :fetch-suggestions="querySearchAsync"
  307. :trigger-on-focus="true"
  308. placeholder="请输入药品名称"
  309. @select="handleSelect"
  310. @input="changeGoodName(scope.$index)"
  311. style="width:160px;"
  312. >
  313. <i class="el-icon-search el-input__icon" slot="suffix"></i>
  314. <template slot-scope="{ item }">
  315. <div class="name">{{ item.drug_name + item.dose + item.dose_unit + "*" +item.min_number + item.min_unit +"/" + item.max_unit + " "+item.manufacturer}}</div>
  316. </template>
  317. </el-autocomplete>
  318. </el-form-item>
  319. <el-form-item label="批次">
  320. <el-select v-model="form.batch_number" filterable placeholder="请选择" @change="changeNumber">
  321. <el-option
  322. v-for="(item,index) in numberList"
  323. :key="index"
  324. :label="item.batch_number"
  325. :value="item.id">
  326. </el-option>
  327. </el-select>
  328. </el-form-item>
  329. <el-form-item label="规格">
  330. <el-input v-model="form.specification_name" :disabled="true"></el-input>
  331. </el-form-item>
  332. <el-form-item label="单位">
  333. <el-input v-model="form.warehousing_unit" :disabled="true"></el-input>
  334. </el-form-item>
  335. <el-form-item label="进货价">
  336. <el-input v-model="form.last_price" :disabled="true"></el-input>
  337. </el-form-item>
  338. <el-form-item label="零售价">
  339. <el-input v-model="form.retail_price" :disabled="true"></el-input>
  340. </el-form-item>
  341. <el-form-item label="报损数量">
  342. <el-input v-model="form.count"></el-input>
  343. </el-form-item>
  344. <el-form-item label="库存">
  345. <el-input v-model="form.total" :disabled="true"></el-input>
  346. </el-form-item>
  347. <el-form-item label="产地">
  348. <el-input v-model="form.drug_origin_place" :disabled="true"></el-input>
  349. </el-form-item>
  350. <el-form-item label="批准文号">
  351. <el-input v-model="form.number" :disabled="true"></el-input>
  352. </el-form-item>
  353. <el-form-item label="生产厂商">
  354. <el-input v-model="form.manufacturer" :disabled="true"></el-input>
  355. </el-form-item>
  356. <el-form-item label="备注">
  357. <div style="display:flex;">
  358. <el-input v-model="form.remark"></el-input>
  359. </div>
  360. </el-form-item>
  361. </el-form>
  362. <span slot="footer" class="dialog-footer">
  363. <el-button @click="editDialogVisible = false">取 消</el-button>
  364. <el-button type="primary" @click="EditDrugDamage">确 定</el-button>
  365. </span>
  366. </el-dialog>
  367. <el-dialog
  368. title="库房调价"
  369. :visible.sync="modifyDialogVisible"
  370. width="1200px">
  371. <el-form :model="form" class="modifyDialog" label-width="120px">
  372. <el-form-item label="药品ID">
  373. <el-input v-model="form.drug_id" :disabled="true"></el-input>
  374. </el-form-item>
  375. <el-form-item label="药品名称">
  376. <el-autocomplete
  377. class="checkSearch"
  378. popper-class="my-autocomplete"
  379. v-model="form.drug_name"
  380. :fetch-suggestions="querySearchAsync"
  381. :trigger-on-focus="true"
  382. placeholder="请输入药品名称"
  383. @select="handleSelect"
  384. @input="changeGoodName(scope.$index)"
  385. style="width:160px;"
  386. >
  387. <i class="el-icon-search el-input__icon" slot="suffix"></i>
  388. <template slot-scope="{ item }">
  389. <div class="name">{{ item.drug_name + item.dose + item.dose_unit + "*" +item.min_number + item.min_unit +"/" + item.max_unit + " "+item.manufacturer}}</div>
  390. </template>
  391. </el-autocomplete>
  392. </el-form-item>
  393. <!-- <el-form-item label="规格">
  394. <el-input v-model="form.name"></el-input>
  395. </el-form-item> -->
  396. <el-form-item label="单位">
  397. <el-input v-model="form.warehousing_unit" :disabled="true"></el-input>
  398. </el-form-item>
  399. <el-form-item label="进货价">
  400. <el-input v-model="form.last_price" :disabled="true"></el-input>
  401. </el-form-item>
  402. <el-form-item label="零售价">
  403. <el-input v-model="form.retail_price" :disabled="true"></el-input>
  404. </el-form-item>
  405. <el-form-item label="报损数量">
  406. <el-input v-model="form.count"></el-input>
  407. </el-form-item>
  408. <el-form-item label="库存">
  409. <el-input v-model="form.total" :disabled="true"></el-input>
  410. </el-form-item>
  411. <el-form-item label="产地">
  412. <el-input v-model="form.drug_origin_place" :disabled="true"></el-input>
  413. </el-form-item>
  414. <el-form-item label="批准文号">
  415. <el-input v-model="form.number" :disabled="true"></el-input>
  416. </el-form-item>
  417. <el-form-item label="生产厂商">
  418. <el-input v-model="form.manufacturer" :disabled="true"></el-input>
  419. </el-form-item>
  420. <el-form-item label="备注">
  421. <div style="display:flex;">
  422. <el-input v-model="form.remark"></el-input>
  423. </div>
  424. </el-form-item>
  425. </el-form>
  426. <span slot="footer" class="dialog-footer">
  427. <el-button @click="modifyDialogVisible = false">取 消</el-button>
  428. <el-button type="primary" @click="modifyDrugDamage">确 定</el-button>
  429. </span>
  430. </el-dialog>
  431. </div>
  432. </template>
  433. <script>
  434. import BreadCrumb from "../../components/bread-crumb";
  435. import { postSearchDrugWarehouseList,saveDrugDamage,getDrugDamageList,SaveDrugDamagePrice,getDrugDamageDetail,modifyDrugDamage,deleteDrugDamage,getDrugWarehouseInfoList,getDrugWarehouseInfoTotal } from "@/api/drug/drug"
  436. import { getDrugBatchNumber } from "@/api/drug/drug_stock"
  437. import { uParseTime } from '@/utils/tools'
  438. import { getDataConfig } from '@/utils/data'
  439. export default {
  440. name: "stockModifyPrice",
  441. components:{
  442. BreadCrumb
  443. },
  444. data() {
  445. return{
  446. crumbs: [
  447. { path: false, name: "库存管理" },
  448. { path: false, name: "药品管理" },
  449. { path: false, name: "药品报损" }
  450. ],
  451. searchKey:'',
  452. value1:'',
  453. value2:'',
  454. tableData: [],
  455. dialogVisible:false,
  456. form: {
  457. id:"",
  458. drug_name: '',
  459. retail_price :'',
  460. new_price:"",
  461. count:"",
  462. remark:"",
  463. warehousing_order:"",
  464. manufacturer:"",
  465. dealer:"",
  466. number:"",
  467. warehousing_unit:"",
  468. specification_name:"",
  469. buy_price:"",
  470. drug_id:"",
  471. packing_unit:"",
  472. drug_origin_place:"",
  473. report_count:"",
  474. total:"",
  475. dose:"",
  476. dose_unit:"",
  477. min_number:"",
  478. min_unit:"",
  479. max_unit:"",
  480. batch_number:"",
  481. last_price:"",
  482. warehouse_info_id:"",
  483. expiry_date:"",
  484. product_date:"",
  485. stock_max_number:"",
  486. stock_min_number:"",
  487. },
  488. drugList:[],
  489. manufacturerList:[],
  490. dealerList:[],
  491. currentIndex: 0,
  492. limit:10,
  493. page:1,
  494. tableList:[],
  495. total: 0,
  496. start_time:"",
  497. end_time:"",
  498. doctorList:[],
  499. ids:"",
  500. checkDialogVisible:false,
  501. checker:this.$store.getters.xt_user.user.id,
  502. check_time:new Date(),
  503. editDialogVisible:false,
  504. modifyDialogVisible:false,
  505. id:"",
  506. numberList:[],
  507. index:0,
  508. unitList:[],
  509. }
  510. },
  511. methods:{
  512. search(){
  513. this.getlist()
  514. },
  515. print(){
  516. if(this.ids == ""){
  517. this.$message.error("请勾选打印数据")
  518. return false
  519. }else{
  520. this.$router.push({path:'/stock/drugs/drugDamagePrint?ids='+this.ids})
  521. }
  522. },
  523. handleSizeChange(val){
  524. this.limit = val
  525. this.getlist()
  526. },
  527. handleCurrentChange(val){
  528. this.page = val
  529. this.getlist()
  530. },
  531. querySearchAsync(keyword, cb) {
  532. let key = '';
  533. if (keyword != undefined) {
  534. key = keyword
  535. }
  536. postSearchDrugWarehouseList(key).then(response => {
  537. if (response.data.state == 1) {
  538. var list = response.data.data.list
  539. console.log("列表数据",list)
  540. this.drugList = list
  541. var manufacturerList = response.data.data.manufacturerList
  542. this.manufacturerList = manufacturerList
  543. var dealer = response.data.data.dealerList
  544. this.dealerList = dealer
  545. for(let i=0;i<this.drugList.length;i++){
  546. for(let j=0;j<this.manufacturerList.length;j++){
  547. if(this.drugList[i].manufacturer == this.manufacturerList[j].id){
  548. this.drugList[i].manufacturer = this.manufacturerList[j].manufacturer_name
  549. }
  550. }
  551. }
  552. for(let i=0;i<this.drugList.length;i++){
  553. for(let j=0;j<this.dealerList.length;j++){
  554. if(this.drugList[i].dealer == this.dealerList[j].id){
  555. this.drugList[i].dealer = this.dealerList[j].dealer_name
  556. }
  557. }
  558. }
  559. cb(this.drugList)
  560. } else {
  561. cb([])
  562. }
  563. })
  564. },
  565. changeGoodName(val){
  566. this.currentIndex = val
  567. },
  568. handleSelect(val){
  569. console.log("val232323223",val)
  570. this.getDrugBatchNumber(val.drug_id)
  571. var params = {
  572. id:val.drug_id
  573. }
  574. getDrugWarehouseInfoList(params).then(response=>{
  575. if(response.data.state == 1){
  576. var list = response.data.data.list
  577. for(let i=0;i<list.length;i++){
  578. list[i].stock_max_number = val.min_number * list[i].stock_max_number
  579. }
  580. var total = 0
  581. for(let i=0;i<list.length;i++){
  582. total += (list[i].stock_max_number+list[i].stock_min_number)
  583. }
  584. this.form.id = val.id
  585. this.form.drug_id = val.drug_id,
  586. this.form.drug_name = val.drug_name
  587. this.form.retail_price = val.retail_price
  588. this.form.warehousing_order = val.warehousing_order
  589. this.form.number = val.number
  590. this.form.dealer = val.dealer
  591. this.form.manufacturer = val.manufacturer
  592. this.form.remark = val.remark
  593. this.form.warehousing_unit = val.max_unit
  594. this.form.total = ""
  595. // this.form.total = this.getTotal(total,val.max_unit,val.min_unit,val.min_number)
  596. // this.form.batch_number = val.batch_number
  597. this.form.last_price = val.last_price
  598. this.form.expiry_date = val.expiry_date
  599. this.form.product_date = val.product_date
  600. this.form.specification_name = val.dose + val.dose_unit +"*"+val.min_number+val.min_unit+"/"+val.max_unit
  601. this.form.drug_origin_place = val.drug_origin_place
  602. this.form.batch_number = ""
  603. this.form.total = ""
  604. }
  605. })
  606. },
  607. getTotal(total,max_unit,min_unit,min_number){
  608. var str = ""
  609. var min_str = ""
  610. if(total<min_number){
  611. str = ""
  612. min_str = total + min_unit
  613. }
  614. if(total >= min_number){
  615. if(parseInt(total/min_number)!=0){
  616. str = parseInt(total/min_number)+ max_unit
  617. }
  618. if((total%min_number)!=0){
  619. min_str = total%min_number + min_unit
  620. }
  621. }
  622. return str + min_str
  623. },
  624. changeNumber(val){
  625. console.log("val",val)
  626. this.form.warehousing_info_id = val
  627. this.getDrugWarehouseInfoTotal(val)
  628. },
  629. getDrugBatchNumber(id){
  630. var params = {
  631. id:id
  632. }
  633. getDrugBatchNumber(params).then(response=>{
  634. if(response.data.state == 1){
  635. var list = response.data.data.list
  636. console.log("list2222",list)
  637. this.numberList = list
  638. }
  639. })
  640. },
  641. getTime(val) {
  642. if(val < 0){
  643. return ""
  644. }
  645. if(val == ""){
  646. return ""
  647. }else {
  648. return uParseTime(val, '{y}-{m}-{d}')
  649. }
  650. },
  651. addPrice(){
  652. console.log("批次号",this.form.batch_number)
  653. if(this.form.drug_name == ""){
  654. this.$message.error("请输入药品名称")
  655. return
  656. }
  657. if(this.form.batch_number == ""){
  658. this.$message.error("请选择批次号")
  659. return false
  660. }
  661. if(this.form.count == ""){
  662. this.$message.error("请输入报损数量")
  663. return false
  664. }
  665. var obj = {
  666. drug_id:this.form.drug_id,
  667. drug_name:this.form.drug_name,
  668. warehousing_unit:this.form.warehousing_unit,
  669. count:this.form.count,
  670. retail_price:this.form.retail_price.toString(),
  671. manufacturer:this.form.manufacturer,
  672. drug_origin_place:this.form.drug_origin_place,
  673. number:this.form.number,
  674. remark:this.form.remark,
  675. new_price:this.form.new_price.toString(),
  676. warehousing_order:this.form.warehousing_order,
  677. dealer:this.form.dealer,
  678. last_price:this.form.last_price,
  679. start_time:this.getTime(new Date()),
  680. number:this.form.number,
  681. expiry_date:this.form.expiry_date,
  682. product_date:this.form.product_date,
  683. specification_name:this.form.specification_name,
  684. drug_origin_place:this.form.drug_origin_place,
  685. warehousing_info_id:this.form.warehousing_info_id,
  686. batch_number:this.form.batch_number,
  687. stock_max_number:this.form.stock_max_number,
  688. stock_min_number:this.form.stock_min_number,
  689. total:this.form.total,
  690. }
  691. this.tableData.push(obj)
  692. this.form.drug_name = ""
  693. this.form.warehousing_unit = ""
  694. this.form.count = ""
  695. this.form.retail_price = ""
  696. this.form.manufacturer = ""
  697. this.form.drug_origin_place = ""
  698. this.form.number = ""
  699. this.form.remark = ""
  700. this.form.new_price = ""
  701. this.form.warehousing_order = ""
  702. this.form.dealer = ""
  703. this.form.last_price = ""
  704. this.form.number = ""
  705. this.form.expiry_date = ""
  706. this.form.product_date = ""
  707. this.form.specification_name = ""
  708. this.form.drug_origin_place = ""
  709. this.form.total = ""
  710. },
  711. saveDrugDamage(){
  712. for(let i=0;i<this.tableData.length;i++){
  713. this.tableData[i].retail_price = this.tableData[i].retail_price.toString()
  714. this.tableData[i].last_price = this.tableData[i].last_price.toString()
  715. this.tableData[i].new_price = this.tableData[i].new_price.toString()
  716. this.tableData[i].count = parseInt(this.tableData[i].count)
  717. if(this.tableData[i].stock_max_number == ""){
  718. this.tableData[i].stock_max_number = 0
  719. }else{
  720. this.tableData[i].stock_max_number = parseInt(this.tableData[i].stock_max_number)
  721. }
  722. if(this.tableData[i].stock_min_number == ""){
  723. this.tableData[i].stock_min_number = 0
  724. }else{
  725. this.tableData[i].stock_min_number = parseInt(this.tableData[i].stock_min_number)
  726. }
  727. if(this.tableData[i].expiry_date == undefined){
  728. this.tableData[i].expiry_date = 0
  729. }else{
  730. this.tableData[i].expiry_date = this.tableData[i].expiry_date
  731. }
  732. if( this.tableData[i].product_date == undefined){
  733. this.tableData[i].product_date = 0
  734. }else{
  735. this.tableData[i].product_date = this.tableData[i].product_date
  736. }
  737. if(this.tableData[i].dealer == 0){
  738. console.log("你啦")
  739. this.tableData[i].dealer = ""
  740. }
  741. }
  742. var params= {
  743. tableData:this.tableData,
  744. }
  745. console.log("parasm222",params)
  746. saveDrugDamage(params).then(response=>{
  747. if(response.data.state == 1){
  748. var msg = response.data.data.msg
  749. console.log("msg",msg)
  750. this.$message.success("保存成功!")
  751. this.dialogVisible = false
  752. this.tableData = []
  753. this.getlist()
  754. }
  755. })
  756. },
  757. getlist(){
  758. var params = {
  759. limit:this.limit,
  760. page:this.page,
  761. start_time:this.start_time,
  762. end_time:this.end_time,
  763. keyword:this.searchKey,
  764. }
  765. getDrugDamageList(params).then(response=>{
  766. if(response.data.state == 1){
  767. this.tableList = response.data.data.list
  768. this.total = response.data.data.total
  769. this.doctorList = response.data.data.doctorList
  770. }
  771. })
  772. },
  773. getDoctorName(id){
  774. var user_name = ""
  775. for(let i=0;i<this.doctorList.length;i++){
  776. if(id == this.doctorList[i].admin_user_id){
  777. user_name = this.doctorList[i].user_name
  778. }
  779. }
  780. return user_name
  781. },
  782. changePrice(val){
  783. var arr = []
  784. for(let i=0;i<val.length;i++){
  785. arr.push(val[i].id)
  786. }
  787. var str = arr.join(",")
  788. console.log("str",str)
  789. this.ids = str
  790. },
  791. toCheck(){
  792. if(this.ids.length <=0){
  793. this.$message.error("请勾选核对数据")
  794. return
  795. }else{
  796. this.checkDialogVisible = true
  797. }
  798. },
  799. SaveDrugDamagePrice(){
  800. var params = {
  801. ids:this.ids,
  802. check_time:this.getTime(this.check_time),
  803. checker:this.checker,
  804. }
  805. console.log("params",params)
  806. SaveDrugDamagePrice(params).then(response=>{
  807. if(response.data.state == 1){
  808. this.$message.success("保存成功")
  809. var damage = response.data.data.damage
  810. this.checkDialogVisible = false
  811. this.getlist()
  812. }
  813. })
  814. },
  815. toDel(index){
  816. this.tableList.splice(index,1)
  817. },
  818. toEdit(val,index){
  819. this.index = index
  820. this.form.drug_name = val.drug_name
  821. this.form.drug_origin_place = val.drug_origin_place
  822. this.form.last_price = val.last_price
  823. this.form.drug_id = val.drug_id,
  824. this.form.manufacturer = val.manufacturer
  825. this.form.new_price = val.new_price
  826. this.form.number = val.number
  827. this.form.retail_price = val.retail_price
  828. this.form.remark = val.remark
  829. this.form.id = val.id
  830. this.form.count = val.count
  831. this.form.specification_name = val.specification_name
  832. this.form.warehousing_unit = val.warehousing_unit
  833. this.form.stock_max_number = val.stock_max_number
  834. this.form.stock_min_number = val.stock_min_number,
  835. this.editDialogVisible = true
  836. },
  837. EditDrugDamage(){
  838. for(let i=0;i<this.tableData.length;i++){
  839. if(this.form.id == this.tableData[i].id){
  840. this.tableData[i].drug_name = this.form.drug_name
  841. this.tableData[i].drug_origin_place = this.form.drug_origin_place
  842. this.tableData[i].last_price = this.form.last_price
  843. this.tableData[i].new_price = this.form.new_price
  844. this.tableData[i].number = this.form.number
  845. this.tableData[i].retail_price = this.form.retail_price
  846. this.tableData[i].remark = this.form.remark
  847. this.tableData[i].count = this.form.count
  848. this.tableData[i].stock_max_number = this.form.stock_max_number
  849. this.tableData[i].stock_min_number = this.form.stock_min_number
  850. this.tableData[i].manufacturer = this.form.manufacturer
  851. this.tableData[i].dealer = this.form.dealer
  852. }
  853. if(this.index == i){
  854. this.tableData[i].drug_name = this.form.drug_name
  855. this.tableData[i].drug_origin_place = this.form.drug_origin_place
  856. this.tableData[i].last_price = this.form.last_price
  857. this.tableData[i].new_price = this.form.new_price
  858. this.tableData[i].number = this.form.number
  859. this.tableData[i].retail_price = this.form.retail_price
  860. this.tableData[i].remark = this.form.remark
  861. this.tableData[i].count = this.form.count
  862. this.tableData[i].stock_max_number = this.form.stock_max_number
  863. this.tableData[i].stock_min_number = this.form.stock_min_number
  864. this.tableData[i].manufacturer = this.form.manufacturer
  865. this.tableData[i].dealer = this.form.dealer
  866. }
  867. }
  868. this.editDialogVisible = false
  869. this.form.drug_name = ""
  870. this.form.drug_origin_place = ""
  871. this.form.last_price = ""
  872. this.form.manufacturer = ""
  873. this.form.new_price = ""
  874. this.form.number = ""
  875. this.form.retail_price = ""
  876. this.form.remark = ""
  877. this.form.count = ""
  878. },
  879. moDrugDamage(id,checker_status){
  880. if(checker_status == 1){
  881. this.$message.error("已核对不能编辑")
  882. return false
  883. }
  884. getDrugDamageDetail(id).then(response=>{
  885. if(response.data.state ==1){
  886. var detail = response.data.data.detail
  887. console.log("系准给",detail)
  888. this.form.drug_id = detail.drug_id
  889. this.form.drug_name = detail.drug_name
  890. this.form.drug_origin_place = detail.drug_origin_place
  891. this.form.last_price = detail.last_price
  892. this.form.manufacturer = detail.manufacturer
  893. this.form.new_price = detail.new_price
  894. this.form.number = detail.number
  895. this.form.retail_price = detail.retail_price
  896. this.form.remark = detail.remark
  897. this.form.count = detail.count
  898. this.id = detail.id
  899. this.form.warehousing_unit = detail.warehousing_unit
  900. this.form.stock_max_number = detail.stock_max_number
  901. this.form.stock_min_number = detail.stock_min_number
  902. this.form.total = detail.total
  903. this.form.warehousing_info_id = detail.warehousing_info_id
  904. this.modifyDialogVisible = true
  905. }
  906. })
  907. },
  908. modifyDrugDamage(){
  909. if(this.form.stock_max_number == ""){
  910. this.form.stock_max_number = 0
  911. }else{
  912. this.form.stock_max_number = parseInt(this.form.stock_max_number)
  913. }
  914. if(this.form.stock_min_number == ""){
  915. this.form.stock_min_number = 0
  916. }else{
  917. this.form.stock_min_number = parseInt(this.form.stock_min_number)
  918. }
  919. var params = {
  920. drug_id:this.form.drug_id,
  921. drug_name:this.form.drug_name,
  922. drug_origin_place:this.form.drug_origin_place,
  923. last_price:this.form.last_price,
  924. manufacturer:this.form.manufacturer,
  925. new_price:this.form.new_price.toString(),
  926. number:this.form.number,
  927. retail_price:this.form.retail_price,
  928. remark:this.form.remark,
  929. count:parseInt(this.form.count),
  930. warehousing_unit:this.form.warehousing_unit,
  931. id:this.id,
  932. total:this.form.total,
  933. stock_max_number:this.form.stock_max_number,
  934. stock_min_number:this.form.stock_min_number,
  935. }
  936. modifyDrugDamage(params).then(response=>{
  937. if(response.data.state == 1){
  938. var damage = response.data.data.damage
  939. this.$message.success("保存成功")
  940. this.modifyDialogVisible = false
  941. this.getlist()
  942. }
  943. })
  944. },
  945. deleteDrugDamage(id,checker_status,index){
  946. if(checker_status == 1){
  947. this.$message.error("已核对不能删除")
  948. return false
  949. }
  950. this.$confirm('是否删除所选内容?', '提示', {
  951. confirmButtonText: '确定',
  952. cancelButtonText: '取消',
  953. type: 'warning'
  954. }).then(() => {
  955. let params = {
  956. id:id,
  957. }
  958. deleteDrugDamage(params).then(response => {
  959. if (response.data.state == 1) {
  960. var msg = response.data.data.msg
  961. this.$message.success("保存成功")
  962. this.tableList.splice(index,1)
  963. }
  964. })
  965. }).catch(() => {
  966. this.loading = false
  967. });
  968. },
  969. changeStartTime(val){
  970. this.start_time = this.getTime(val)
  971. this.getlist()
  972. },
  973. changeEndTime(val){
  974. this.end_time = this.getTime(val)
  975. this.getlist()
  976. },
  977. getDrugWarehouseInfoTotal(val){
  978. var params = {
  979. id:val,
  980. }
  981. getDrugWarehouseInfoTotal(params).then(response=>{
  982. if(response.data.state == 1){
  983. var list = response.data.data.list
  984. console.log("list",list)
  985. if(list.stock_max_number >0 ){
  986. this.form.total = list.stock_max_number + list.XtBaseDrug.max_unit
  987. }
  988. if(list.stock_min_number > 0){
  989. this.form.total = this.form.total + list.stock_min_number + list.XtBaseDrug.min_unit
  990. }
  991. // this.form.total = list.stock_max_number + list.XtBaseDrug.max_unit + list.stock_min_number + list.XtBaseDrug.min_unit
  992. }
  993. })
  994. },
  995. changeMaxUnit(){
  996. }
  997. },
  998. created(){
  999. this.getlist()
  1000. },
  1001. mounted() {
  1002. },
  1003. };
  1004. </script>
  1005. <style rel="stylesheet/scss" lang="scss">
  1006. .app-container {
  1007. // margin: 20px;
  1008. font-size: 15px;
  1009. }
  1010. .modifyDialog{
  1011. display: flex;
  1012. flex-wrap: wrap;
  1013. margin-bottom: 10px;
  1014. .el-form-item{
  1015. width: 33%;
  1016. }
  1017. }
  1018. .el-table td,
  1019. .el-table th.is-leaf,
  1020. .el-table--border,
  1021. .el-table--group {
  1022. border-color: #d0d3da;
  1023. }
  1024. .el-table--border::after,
  1025. .el-table--group::after,
  1026. .el-table::before {
  1027. background-color: #d0d3da;
  1028. }
  1029. ::-webkit-scrollbar{
  1030. height: 20px !important;
  1031. }
  1032. </style>