addDrugs.vue 47KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697989910010110210310410510610710810911011111211311411511611711811912012112212312412512612712812913013113213313413513613713813914014114214314414514614714814915015115215315415515615715815916016116216316416516616716816917017117217317417517617717817918018118218318418518618718818919019119219319419519619719819920020120220320420520620720820921021121221321421521621721821922022122222322422522622722822923023123223323423523623723823924024124224324424524624724824925025125225325425525625725825926026126226326426526626726826927027127227327427527627727827928028128228328428528628728828929029129229329429529629729829930030130230330430530630730830931031131231331431531631731831932032132232332432532632732832933033133233333433533633733833934034134234334434534634734834935035135235335435535635735835936036136236336436536636736836937037137237337437537637737837938038138238338438538638738838939039139239339439539639739839940040140240340440540640740840941041141241341441541641741841942042142242342442542642742842943043143243343443543643743843944044144244344444544644744844945045145245345445545645745845946046146246346446546646746846947047147247347447547647747847948048148248348448548648748848949049149249349449549649749849950050150250350450550650750850951051151251351451551651751851952052152252352452552652752852953053153253353453553653753853954054154254354454554654754854955055155255355455555655755855956056156256356456556656756856957057157257357457557657757857958058158258358458558658758858959059159259359459559659759859960060160260360460560660760860961061161261361461561661761861962062162262362462562662762862963063163263363463563663763863964064164264364464564664764864965065165265365465565665765865966066166266366466566666766866967067167267367467567667767867968068168268368468568668768868969069169269369469569669769869970070170270370470570670770870971071171271371471571671771871972072172272372472572672772872973073173273373473573673773873974074174274374474574674774874975075175275375475575675775875976076176276376476576676776876977077177277377477577677777877978078178278378478578678778878979079179279379479579679779879980080180280380480580680780880981081181281381481581681781881982082182282382482582682782882983083183283383483583683783883984084184284384484584684784884985085185285385485585685785885986086186286386486586686786886987087187287387487587687787887988088188288388488588688788888989089189289389489589689789889990090190290390490590690790890991091191291391491591691791891992092192292392492592692792892993093193293393493593693793893994094194294394494594694794894995095195295395495595695795895996096196296396496596696796896997097197297397497597697797897998098198298398498598698798898999099199299399499599699799899910001001100210031004100510061007100810091010101110121013101410151016101710181019102010211022102310241025102610271028102910301031103210331034103510361037103810391040104110421043104410451046104710481049105010511052105310541055105610571058
  1. <template>
  2. <el-dialog
  3. :title="formTitle"
  4. width="1000px"
  5. :visible.sync="visible"
  6. :before-close="_close"
  7. class="addDrugsDialog"
  8. >
  9. <el-tabs v-model="activeName">
  10. <el-tab-pane label="基础数据" name="first">
  11. <div>
  12. <el-form :model="form" :rules="rules" ref="form" label-width="120px" style="display: flex;flex-wrap: wrap;justify-content: space-between;">
  13. <el-form-item label="药品名称 : " prop="drug_name">
  14. <el-input v-model="form.drug_name" style="width:160px;" placeholder=""
  15. maxlength="30"></el-input>
  16. </el-form-item>
  17. <el-form-item label="药品别名 : ">
  18. <el-input v-model="form.drug_alias" style="width:160px;" placeholder=""
  19. maxlength="30"></el-input>
  20. </el-form-item>
  21. <el-form-item label="药品类别 : " prop="drug_category">
  22. <el-select v-model="form.drug_category" style="width:160px;" placeholder="请选择">
  23. <el-option
  24. v-for="(item,index) in drugCategoryList"
  25. :key="index"
  26. :label="item.name"
  27. :value="item.value">
  28. </el-option>
  29. </el-select>
  30. </el-form-item>
  31. <div style="width:100%;">
  32. <div><span style="width:120px;text-align:right;display:inline-block;margin-bottom:10px;"><span style="color:red;">*</span>单位&规格:</span><span style="color:#999">例如:0.75 g * 60 粒 / 盒</span></div>
  33. </div>
  34. <div style="width:100%;display:flex;align-items:center;margin-left:120px;">
  35. <el-form-item prop="dose" class="noMargin">
  36. <el-input v-model="form.dose" type="number" style="width:100px;margin-right:5px;" placeholder="剂量" :disabled="dosageShow"></el-input>
  37. </el-form-item>
  38. <el-form-item prop="dose_unit" class="noMargin">
  39. <el-select v-model="form.dose_unit" style="width:160px;" placeholder="剂量单位" @change="changeDoseUnit">
  40. <el-option
  41. v-for="(item,index) in getDataConfig('hemodialysis','units')"
  42. :key="index"
  43. :label="item.name"
  44. :value="item.name">
  45. </el-option>
  46. </el-select>
  47. </el-form-item>
  48. <span style="margin-bottom:20px;font-size:20px;padding:0 10px;">*</span>
  49. <el-form-item prop="min_number" class="noMargin">
  50. <el-input v-model="form.min_number" style="width:100px;margin-right:5px;" :disabled="minNumberShow" type="number" placeholder="拆零"> </el-input>
  51. </el-form-item>
  52. <el-form-item prop="min_unit" class="noMargin">
  53. <el-select v-model="form.min_unit" style="width:160px;" placeholder="拆零单位" @change="changeMinUnit">
  54. <el-option
  55. v-for="(item,index) in getDataConfig('hemodialysis','units')"
  56. :key="index"
  57. :label="item.name"
  58. :value="item.name">
  59. </el-option>
  60. </el-select>
  61. </el-form-item>
  62. <span style="margin-bottom:20px;font-size:20px;padding:0 10px;">/</span>
  63. <el-form-item prop="max_unit" class="noMargin">
  64. <el-select v-model="form.max_unit" style="width:160px;" placeholder="包装单位" @change="changeMaxUnit">
  65. <el-option
  66. v-for="(item,index) in getDataConfig('hemodialysis','units')"
  67. :key="index"
  68. :label="item.name"
  69. :value="item.name">
  70. </el-option>
  71. </el-select>
  72. </el-form-item>
  73. </div>
  74. <el-form-item label="药品类型 : " prop="drug_type">
  75. <el-select v-model="form.drug_type" style="width:160px;" placeholder="请选择">
  76. <el-option
  77. v-for="(item,index) in drugTypeList"
  78. :key="index"
  79. :label="item.name"
  80. :value="item.value">
  81. </el-option>
  82. </el-select>
  83. </el-form-item>
  84. <el-form-item label="默认给药途径:" prop="delivery_way">
  85. <el-select v-model="form.delivery_way" style="width:160px;" placeholder="请选择">
  86. <el-option
  87. v-for="(item, index) in deliveryWayOptions"
  88. :key="index"
  89. :label="item.name"
  90. :value="item.name">
  91. </el-option>
  92. </el-select>
  93. </el-form-item>
  94. <el-form-item label="默认执行频率:" prop="execution_frequency">
  95. <el-select v-model="form.execution_frequency" style="width:160px;" placeholder="请选择">
  96. <el-option
  97. v-for="(item,index) in executionFrequencyOptions"
  98. :key="index"
  99. :label="item.name"
  100. :value="item.name">
  101. </el-option>
  102. </el-select>
  103. </el-form-item>
  104. <el-form-item label="默认单次用量 : " prop="drug_dose">
  105. <el-input v-model="form.drug_dose" style="width:70px;margin-right:5px;" placeholder=""
  106. maxlength="30"></el-input>
  107. <el-select v-model="form.drug_dose_unit" style="width:80px;" placeholder="单次用量单位">
  108. <el-option
  109. v-for="(item,index) in unitList"
  110. :key="index"
  111. :label="item.name"
  112. :value="item.id">
  113. </el-option>
  114. </el-select>
  115. </el-form-item>
  116. <el-form-item label="默认开药数量:" prop="prescribing_number">
  117. <el-input v-model="form.prescribing_number" style="width:70px;margin-right:5px;" placeholder=""
  118. maxlength="30"></el-input>
  119. <el-select v-model="form.prescribing_number_unit" style="width:80px;" placeholder="开药数量单位">
  120. <el-option
  121. v-for="(item,index) in packingUnit"
  122. :key="index"
  123. :label="item.name"
  124. :value="item.name">
  125. </el-option>
  126. </el-select>
  127. </el-form-item>
  128. <!-- <el-form-item label="开药数量单位:" prop="prescribing_number">
  129. <el-select v-model="form.prescribing_number_unit" style="width:160px;" placeholder="开药数量单位">
  130. <el-option
  131. v-for="(item,index) in getDataConfig('hemodialysis','units')"
  132. :key="index"
  133. :label="item.name"
  134. :value="item.name">
  135. </el-option>
  136. </el-select>
  137. </el-form-item> -->
  138. <el-form-item label="默认开药天数:" prop="prescribing_number">
  139. <el-input v-model="form.drug_day" style="width:160px;" placeholder=""
  140. maxlength="30"></el-input>
  141. </el-form-item>
  142. <el-form-item label="库存警戒:" prop="drug_stock_limit">
  143. <el-input v-model="form.drug_stock_limit" style="width:160px;" placeholder=""
  144. maxlength="30"></el-input>
  145. </el-form-item>
  146. <el-form-item label="产地:" prop="drug_origin_place">
  147. <el-input v-model="form.drug_origin_place" style="width:160px;" placeholder=""
  148. maxlength="30"></el-input>
  149. </el-form-item>
  150. <el-form-item label="药品剂型 : " prop="drug_dosage_form">
  151. <el-select v-model="form.drug_dosage_form" style="width:160px;" placeholder="请选择">
  152. <el-option
  153. v-for="(item,index) in drugDosageFormList"
  154. :key="index"
  155. :label="item.name"
  156. :value="item.value">
  157. </el-option>
  158. </el-select>
  159. </el-form-item>
  160. <el-form-item label="医保等级 : ">
  161. <el-select v-model="form.medical_insurance_level" style="width:160px;" placeholder="请选择">
  162. <el-option
  163. v-for="(item,index) in medicalInsuranceLevelList"
  164. :key="index"
  165. :label="item.name"
  166. :value="item.value">
  167. </el-option>
  168. </el-select>
  169. </el-form-item>
  170. <!-- <el-form-item label="单位换算 : ">
  171. <el-input v-model="form.unit_matrixing" style="width:160px;" placeholder=""
  172. maxlength="30"></el-input>
  173. </el-form-item> -->
  174. <el-form-item label="拆零零售价(元) : " prop="min_price">
  175. <el-input v-model="form.min_price" style="width:160px;" placeholder=""
  176. maxlength="30"></el-input>
  177. </el-form-item>
  178. <el-form-item label="包装零售价(元) : " prop="retail_price">
  179. <el-input v-model="form.retail_price" style="width:160px;" placeholder=""
  180. maxlength="30"></el-input>
  181. </el-form-item>
  182. <el-form-item label="进货价(元) : " prop="last_price">
  183. <el-input v-model="form.last_price" style="width:160px;" placeholder=""
  184. maxlength="30"></el-input>
  185. </el-form-item>
  186. <el-form-item label="开药控制 : " prop="drug_control">
  187. <el-select v-model="form.drug_control" style="width:160px;" placeholder="请选择">
  188. <el-option
  189. v-for="(item,index) in drugControlList"
  190. :key="index"
  191. :label="item.name"
  192. :value="item.value">
  193. </el-option>
  194. </el-select>
  195. </el-form-item>
  196. <el-form-item label="批准文号 : " prop="number">
  197. <el-input v-model="form.number" style="width:160px;" placeholder=""
  198. maxlength="30"></el-input>
  199. </el-form-item>
  200. <el-form-item label="药物分类 : " prop="drug_classify">
  201. <el-select v-model="form.drug_classify" style="width:160px;" placeholder="请选择">
  202. <el-option
  203. v-for="(item, index) in drugClassifyList"
  204. :key="index"
  205. :label="item.name"
  206. :value="item.value">
  207. </el-option>
  208. </el-select>
  209. </el-form-item>
  210. <el-form-item label="限制性用药 : ">
  211. <el-select v-model="form.lmt_used_flag" style="width:160px;" placeholder="请选择">
  212. <el-option
  213. v-for="(item,index) in lmt_used_flags"
  214. :key="index"
  215. :label="item.name"
  216. :value="item.id">
  217. </el-option>
  218. </el-select>
  219. </el-form-item>
  220. <el-form-item label="审批标志 : ">
  221. <el-select v-model="form.hosp_appr_flag" style="width:160px;" placeholder="请选择">
  222. <el-option
  223. v-for="(item,index) in hosp_appr_flags"
  224. :key="index"
  225. :label="item.name"
  226. :value="item.id">
  227. </el-option>
  228. </el-select>
  229. </el-form-item>
  230. <el-form-item label="医保编码 : " prop="medical_insurance_number">
  231. <el-input v-model="form.medical_insurance_number" style="width:160px;" placeholder=""
  232. maxlength="30"></el-input>
  233. </el-form-item>
  234. <el-form-item label="生产厂商 : " prop="manufacturer">
  235. <el-select v-model="form.manufacturer" style="width:160px;" filterable placeholder="请选择">
  236. <el-option
  237. v-for="(item,index) in manufacturerList"
  238. :key="index"
  239. :label="item.manufacturer_name"
  240. :value="item.id">
  241. </el-option>
  242. </el-select>
  243. </el-form-item>
  244. <el-form-item label="药理分类 : " prop="pharmacology_category">
  245. <el-select v-model="form.pharmacology_category" style="width:160px;" placeholder="请选择">
  246. <el-option
  247. v-for="(item,index) in pharmacologyCategoryList"
  248. :key="index"
  249. :label="item.name"
  250. :value="item.value">
  251. </el-option>
  252. </el-select>
  253. </el-form-item>
  254. <el-form-item label="统计分类 : " prop="statistics_category">
  255. <el-select v-model="form.statistics_category" style="width:160px;" placeholder="请选择">
  256. <el-option
  257. v-for="(item,index) in statisticsCategoryList"
  258. :key="index"
  259. :label="item.name"
  260. :value="item.value">
  261. </el-option>
  262. </el-select>
  263. </el-form-item>
  264. <el-form-item label="本位码 : " prop="code">
  265. <el-input v-model="form.code" style="width:160px;" placeholder="" maxlength="30"></el-input>
  266. </el-form-item>
  267. <el-form-item label="是否特病目录:" prop="is_special_diseases">
  268. <el-select v-model="form.is_special_diseases" style="width:160px;" placeholder="请选择">
  269. <el-option
  270. v-for="(item,index) in options"
  271. :key="index"
  272. :label="item.label"
  273. :value="item.value">
  274. </el-option>
  275. </el-select>
  276. </el-form-item>
  277. <el-form-item label="是否备案 : " prop="is_record">
  278. <el-select v-model="form.is_record" style="width:160px;" placeholder="请选择">
  279. <el-option
  280. v-for="(item,index) in options"
  281. :key="index"
  282. :label="item.label"
  283. :value="item.value">
  284. </el-option>
  285. </el-select>
  286. </el-form-item>
  287. <el-form-item label="处方药标志">
  288. <el-select v-model="form.prescription_mark" style="width:160px;" placeholder="请选择">
  289. <el-option
  290. v-for="(item,index) in options"
  291. :key="index"
  292. :label="item.label"
  293. :value="item.value">
  294. </el-option>
  295. </el-select>
  296. </el-form-item>
  297. <el-form-item label="社保目录编码">
  298. <el-input v-model="form.social_security_directory_code" style="width:160px"></el-input>
  299. </el-form-item>
  300. <el-form-item label="备案日期:">
  301. <el-date-picker
  302. style="width:160px"
  303. value-format="yyyy-MM-dd"
  304. v-model="form.record_date"
  305. type="date"
  306. placeholder="选择日期时间">
  307. </el-date-picker>
  308. </el-form-item>
  309. <el-form-item label="药品备注:">
  310. <el-input v-model="form.drug_remark" style="width:160px"></el-input>
  311. </el-form-item>
  312. <el-form-item label="经销商: " style="width:100%">
  313. <el-select v-model="form.dealer" style="width:100%;" filterable placeholder="请选择">
  314. <el-option
  315. v-for="(item,index) in dealer"
  316. :key="index"
  317. :label="item.dealer_name"
  318. :value="item.id">
  319. </el-option>
  320. </el-select>
  321. </el-form-item>
  322. <el-form-item label="" style="display:none;">
  323. <el-input style="width:160px;" placeholder="" maxlength="30"></el-input>
  324. </el-form-item>
  325. <el-form-item label="状态 : " prop="drug_status">
  326. <el-checkbox-group v-model="drug_status">
  327. <el-checkbox label="停用">停用</el-checkbox>
  328. <el-checkbox label="贵重">贵重</el-checkbox>
  329. <el-checkbox label="收费">收费</el-checkbox>
  330. <el-checkbox label="库存管理">库存管理</el-checkbox>
  331. <el-checkbox label="默认用药途径收费">默认用药途径收费</el-checkbox>
  332. <el-checkbox label="注射类">注射类</el-checkbox>
  333. </el-checkbox-group>
  334. </el-form-item>
  335. <el-form-item label="限制说明 : " prop="limit_remark" style="width:100%;">
  336. <el-input type="form.restrictions" :rows="2" placeholder="请输入内容"
  337. v-model="form.limit_remark"></el-input>
  338. </el-form-item>
  339. </el-form>
  340. </div>
  341. </el-tab-pane>
  342. <el-tab-pane label="扩展数据" name="second">
  343. <el-form :model="form" label-width="120px"
  344. style="display: flex;flex-wrap: wrap;justify-content: space-between;">
  345. <el-form-item label="标签:" prop="label">
  346. <el-select v-model="form.label" style="width:160px;" placeholder="请选择">
  347. <el-option
  348. v-for="(item,index) in sign"
  349. :key="index"
  350. :label="item.name"
  351. :value="item.id">
  352. </el-option>
  353. </el-select>
  354. </el-form-item>
  355. <el-form-item label="收费项目排序:" prop="sort">
  356. <el-input v-model="form.sort" style="width:160px;" placeholder="" maxlength="30"></el-input>
  357. </el-form-item>
  358. <el-form-item label="是否常用医嘱:" prop="is_use_doctor_advice">
  359. <el-select v-model="form.is_use_doctor_advice" style="width:160px;" placeholder="请选择">
  360. <el-option
  361. v-for="(item,index) in options"
  362. :key="index"
  363. :label="item.label"
  364. :value="item.value">
  365. </el-option>
  366. </el-select>
  367. </el-form-item>
  368. <el-form-item label="是否默认:" prop="is_default">
  369. <el-select v-model="form.is_default" style="width:160px;" placeholder="请选择">
  370. <el-option
  371. v-for="(item,index) in options"
  372. :key="index"
  373. :label="item.label"
  374. :value="item.value">
  375. </el-option>
  376. </el-select>
  377. </el-form-item>
  378. <el-form-item label="是否收费预估项:" prop="is_charge_predict">
  379. <el-select v-model="form.is_charge_predict" style="width:160px;" placeholder="请选择">
  380. <el-option
  381. v-for="item,index in options"
  382. :key="index"
  383. :label="item.label"
  384. :value="item.value">
  385. </el-option>
  386. </el-select>
  387. </el-form-item>
  388. <el-form-item label="是否统计工作量:" prop="is_statistics_work">
  389. <el-select v-model="form.is_statistics_work" style="width:160px;" placeholder="请选择">
  390. <el-option
  391. v-for="item,index in options"
  392. :key="index"
  393. :label="item.label"
  394. :value="item.value">
  395. </el-option>
  396. </el-select>
  397. </el-form-item>
  398. <el-form-item label="是否收费常用项:" prop="is_charge_use">
  399. <el-select v-model="form.is_charge_use" style="width:160px;" placeholder="请选择">
  400. <el-option
  401. v-for="item,index in options"
  402. :key="index"
  403. :label="item.label"
  404. :value="item.value">
  405. </el-option>
  406. </el-select>
  407. </el-form-item>
  408. <el-form-item label="" style="visibility: hidden;">
  409. <el-input style="width:160px;" placeholder="" maxlength="30"></el-input>
  410. </el-form-item>
  411. </el-form>
  412. </el-tab-pane>
  413. </el-tabs>
  414. <span slot="footer" class="dialog-footer">
  415. <el-button @click="cancle('form')">取 消</el-button>
  416. <el-button type="primary" @click="comfirm('form')">保 存</el-button>
  417. </span>
  418. </el-dialog>
  419. </template>
  420. <script>
  421. import { getDataConfig, getDictionaryDataConfig } from '@/utils/data'
  422. import { getAdviceConfig } from '@/api/advice'
  423. import { GetAllConfig, getManufacturerList,getInitializtion } from '@/api/stock'
  424. export default {
  425. data() {
  426. return {
  427. visible: false,
  428. formTitle: '',
  429. activeName: 'first',
  430. // manufacturers:[],
  431. sign: [
  432. { id: 1, name: '透析模式' },
  433. { id: 2, name: '特殊护理' },
  434. { id: 3, name: '抗凝剂' }
  435. ],
  436. options: [{
  437. value: '1',
  438. label: '是'
  439. }, {
  440. value: '2',
  441. label: '否'
  442. }],
  443. lmt_used_flags: [{
  444. id: 0,
  445. name: '否'
  446. }, {
  447. id: 1,
  448. name: '是'
  449. }], hosp_appr_flags: [
  450. {
  451. id: 1,
  452. name: '无需审批'
  453. }, {
  454. id: 2,
  455. name: '审批通过'
  456. }, {
  457. id: 3,
  458. name: '审批不通过'
  459. }
  460. ],
  461. deliveryWayOptions: [],
  462. executionFrequencyOptions: [],
  463. value: '',
  464. radio: '1',
  465. drug_status: [],
  466. form: {
  467. lmt_used_flag: 0, //是否限制用药
  468. hosp_appr_flag: '',//审批标志
  469. drug_name: '',//药品名称
  470. pinyin: '',//拼音
  471. wubi: '',//五笔输入法
  472. drug_alias: '',//药品别名
  473. drug_alias_pinyin: '',//别名拼音
  474. drug_alias_wubi: '',//别名五笔
  475. drug_category: '',//药品类别
  476. drug_spec: '',//药品规格
  477. drug_type: '',//药品类型
  478. drug_stock_limit: '',//库存警戒
  479. drug_origin_place: '',//产地
  480. drug_dosage_form: '',//药品剂型
  481. medical_insurance_level: '',//医保等级
  482. max_unit: '',//最大单位
  483. min_unit: '',//最小单位
  484. unit_matrixing: '',//单位换算
  485. retail_price: '',//零售价
  486. last_price: '',//上次进价
  487. drug_control: '',//开药控制
  488. number: '',//批准文号
  489. drug_classify: '',//药物分类
  490. drug_dose: '',//药品剂量
  491. drug_dose_unit: '',
  492. medical_insurance_number: '',//医保编号
  493. manufacturer: '', //生产产商
  494. pharmacology_category: '',//药理分类
  495. statistics_category: '',//统计分类
  496. code: '',//本位码
  497. is_special_diseases: '',//是否特病目录
  498. is_record: '',//是否备案
  499. agent: '',// 代理商
  500. drug_status: '',// 状态
  501. limit_remark: '',//限制说明
  502. delivery_way: '',//默认给药途径
  503. execution_frequency: '',//默认执行频率
  504. single_dose: '',//默认单次用量
  505. prescribing_number: '',//默认开药数量
  506. label: '',//标签
  507. sort: '',//收费项目排序
  508. is_use_doctor_advice: '',//是否常用医嘱
  509. is_default: '',//是否默认
  510. is_charge_predict: '',//是否收费预估项
  511. is_statistics_work: '',//是否统计工作量
  512. is_charge_use: '',//是否收费常用项
  513. drug_code: '',
  514. dealer: '',
  515. prescription_mark: '',//处方药标志
  516. social_security_directory_code: '',//社保目录编码
  517. record_date: '',//备案日期
  518. drug_remark: '',//药品备注
  519. drug_day:"",//默认开药天数
  520. min_number:"",//拆零数量
  521. min_price:"",//拆零零售价
  522. dose_unit:"",//剂量
  523. dose:"",//剂量单位
  524. prescribing_number_unit:"",
  525. total:"",
  526. },
  527. rules: {
  528. drug_name: [{ required: true, message: '请填写药品名称', trigger: 'blur' }],
  529. drug_alias: [{ required: true, message: '请选择药品类别', trigger: 'change' }],
  530. // drug_spec: [{ required: true, message: '请填写药品规格', trigger: 'blur' }],
  531. dose:[{required:true,message:'请输入剂量',trigger:'blur'}],
  532. dose_unit:[{required:true,message:"请填写剂量",trigger:'blur'}],
  533. max_unit: [{ required: true, message: '请填写包装单位', trigger: 'change' }],
  534. min_unit: [{ required: true, message: '请填写拆零单位', trigger: 'change' }],
  535. unval:[{required:true,message:"请填写拆零",trigger:'change'}],
  536. min_number:[{required:true,message:"请填写拆零",trigger:'change'}],
  537. packing_unit: [{ required: true, message: '请填写包装单位', trigger: 'change' }],
  538. drug_type: [{ required: true, message: '请填写药品类型', trigger: 'blur' }],
  539. drug_stock_limit: [{ required: true, message: '请填写库存警戒', trigger: 'blur' }],
  540. drug_origin_place: [{ required: true, message: '请填写产地', trigger: 'blur' }],
  541. drug_dosage_form: [{ required: true, message: '请填写药品剂型', trigger: 'blur' }],
  542. medical_insurance_level: [{ required: true, message: '请选择医保等级', trigger: 'change' }],
  543. unit_matrixing: [{ required: true, message: '请填写单位换算', trigger: 'blur' }],
  544. retail_price: [{ required: true, message: '请填写拆零零售价', trigger: 'blur' }],
  545. last_price: [{ required: true, message: '请填写进货价', trigger: 'blur' }],
  546. packing_price:[{required:true,message:'请填写包装零售价',trigger:'blur'}],
  547. drug_classify: [{ required: true, message: '请选择药物分类', trigger: 'change' }],
  548. drug_dose: [{ required: true, message: '请填写剂量', trigger: 'blur' }],
  549. manufacturer: [{ required: true, message: '请选择生产产商', trigger: 'change' }],
  550. dealer: [{ required: true, message: '请选择经销商', trigger: 'change' }],
  551. prescription_mark: [{ required: true, message: '请选择处方药标志' }],
  552. social_security_directory_code: [{ required: true, message: '请填写社保目录编码' }],
  553. record_date: [{ required: true, message: '请选择备案日期' }],
  554. drug_remark: [{ required: true, message: '请填写药品备注' }],
  555. lmt_used_flag:[{ required: true, message: '请选择是否限制用药' }],
  556. hosp_appr_flag:[{ required: true, message: '请选择审批标志' }],
  557. },
  558. page: 1,
  559. limit: 500,
  560. manufacturerList: [],
  561. dealer: [],
  562. drugTypeList:[],
  563. drugCategoryList:[],
  564. drugDosageFormList:[],
  565. medicalInsuranceLevelList:[],
  566. drugControlList:[],
  567. drugClassifyList:[],
  568. statisticsCategoryList:[],
  569. pharmacologyCategoryList:[],
  570. dosageShow:false,
  571. unitList:[],
  572. minNumberShow:false,
  573. packingUnit:[]
  574. }
  575. },
  576. props: {
  577. manufacturers: {
  578. type: Array
  579. },
  580. titles: {
  581. type: String,
  582. default: ''
  583. },
  584. formValue: {
  585. type: Object
  586. },
  587. isCreated: {
  588. type: Number,
  589. default: 1
  590. },
  591. },
  592. methods: {
  593. cancle: function(formName) {
  594. this.$emit('dialog-cancle', this.getValue())
  595. },
  596. comfirm: function(formName) {
  597. this.$refs[formName].validate((valid) => {
  598. console.log(valid)
  599. if (valid) {
  600. // console.log(1111,this.getValue())
  601. this.$emit('dialog-comfirm', this.getValue())
  602. }
  603. })
  604. },
  605. getDictionaryDataConfig(module, filed_name) {
  606. return getDictionaryDataConfig(module, filed_name)
  607. },
  608. getDataConfig(module, filed_name) {
  609. return getDataConfig(module, filed_name)
  610. },
  611. _close: function(done) {
  612. // this.clear()
  613. // done()
  614. this.$confirm('是否保存')
  615. .then(_ => {
  616. this.comfirm('form')
  617. // done();
  618. })
  619. .catch(_ => {
  620. done()
  621. });
  622. },
  623. clear: function() {
  624. this.form.id = 0
  625. this.form.name = ''
  626. this.form.intro = ''
  627. },
  628. show(id, obj) {
  629. this.unitList = []
  630. this.packingUnit = []
  631. var arr = getDataConfig('hemodialysis','units')
  632. for(let i=0;i<arr.length;i++){
  633. if(obj.min_unit == arr[i].name){
  634. this.unitList.push(arr[i])
  635. this.packingUnit.push(arr[i])
  636. }
  637. if(obj.max_unit == arr[i].name){
  638. this.unitList.push(arr[i])
  639. this.packingUnit.push(arr[i])
  640. }
  641. }
  642. console.log('this.unitList',this.unitList)
  643. this.getInitializtion()
  644. this.getlist()
  645. this.GetAllConfig()
  646. if(obj.drug_classify == 0){
  647. obj.drug_classify = ""
  648. }else{
  649. obj.drug_classify = parseInt(obj.drug_classify)
  650. }
  651. if(obj.dealer == 0){
  652. obj.dealer = ""
  653. }
  654. this.visible = true
  655. if (id == 0) {
  656. this.formTitle = '新增'
  657. this.form['id'] = 0
  658. for (let key in obj) {
  659. this.form[key] = obj[key]
  660. }
  661. this.form['lmt_used_flag'] = 0
  662. } else {
  663. for (let key in obj) {
  664. this.form[key] = obj[key]
  665. }
  666. this.form.drug_classify = parseInt(this.form.drug_classify)
  667. this.form['id'] = id
  668. this.drug_status = []
  669. if (this.form.drug_status.length > 0) {
  670. for (let i = 0; i < this.form.drug_status.split(",").length; i++) {
  671. this.drug_status.push(this.form.drug_status.split(',')[i])
  672. }
  673. console.log(this.drug_status)
  674. }
  675. this.formTitle = '编辑'
  676. let unitArr = []
  677. this.unitList.map(item => {
  678. unitArr.push(item.id)
  679. })
  680. if(unitArr.indexOf(this.form.drug_dose_unit) == -1){
  681. this.form.drug_dose_unit = ''
  682. }
  683. }
  684. this.getAdviceConfig()
  685. }, getAdviceConfig() {
  686. getAdviceConfig().then(response => {
  687. if (response.data.state == 1) {
  688. this.deliveryWayOptions =
  689. response.data.data.drugways === null
  690. ? []
  691. : response.data.data.drugways
  692. this.executionFrequencyOptions =
  693. response.data.data.efs === null ? [] : response.data.data.efs
  694. }
  695. })
  696. }
  697. ,
  698. hide() {
  699. // this.clear()
  700. this.form.social_security_directory_code = ''
  701. this.form.prescription_mark = ''
  702. this.form.record_date = ''
  703. this.form.drug_remark = ''
  704. this.form.dose = ''
  705. this.form.dose_unit = ""
  706. this.form.min_number= ""
  707. this.form.min_unit = ""
  708. this.form.max_unit = ""
  709. this.form.min_price = ""
  710. this.form.prescribing_number_unit = ""
  711. this.visible = false
  712. },
  713. getValue: function() {
  714. const form = {}
  715. form['id'] = this.form.id
  716. form['drug_name'] = this.form.drug_name
  717. form['pinyin'] = this.form.pinyin
  718. form['wubi'] = this.form.wubi
  719. form['drug_alias'] = this.form.drug_alias
  720. form['drug_alias_pinyin'] = this.form.drug_alias_pinyin
  721. form['drug_alias_wubi'] = this.form.drug_alias_wubi
  722. form['drug_category'] = this.form.drug_category
  723. form['drug_spec'] = this.form.drug_spec
  724. form['drug_type'] = this.form.drug_type
  725. form['drug_stock_limit'] = this.form.drug_stock_limit
  726. form['drug_origin_place'] = this.form.drug_origin_place
  727. form['drug_dosage_form'] = this.form.drug_dosage_form
  728. form['medical_insurance_level'] = this.form.medical_insurance_level
  729. form['max_unit'] = this.form.max_unit
  730. form['min_unit'] = this.form.min_unit
  731. form['unit_matrixing'] = this.form.unit_matrixing
  732. form['retail_price'] = this.form.retail_price
  733. form['last_price'] = this.form.last_price
  734. form['drug_control'] = this.form.drug_control
  735. form['number'] = this.form.number
  736. form['drug_dose'] = this.form.drug_dose
  737. form['drug_dose_unit'] = this.form.drug_dose_unit
  738. form['medical_insurance_number'] = this.form.medical_insurance_number
  739. form['manufacturer'] = this.form.manufacturer
  740. form['pharmacology_category'] = this.form.pharmacology_category
  741. form['statistics_category'] = this.form.statistics_category
  742. form['code'] = this.form.code
  743. form['is_special_diseases'] = this.form.is_special_diseases
  744. form['is_record'] = this.form.is_record
  745. form['agent'] = this.form.agent
  746. form['drug_status'] = this.drug_status.join(',')
  747. form['limit_remark'] = this.form.limit_remark
  748. form['delivery_way'] = this.form.delivery_way
  749. form['execution_frequency'] = this.form.execution_frequency
  750. form['single_dose'] = this.form.single_dose
  751. form['prescribing_number'] = this.form.prescribing_number
  752. form['label'] = this.form.label
  753. form['sort'] = this.form.sort
  754. form['is_use_doctor_advice'] = this.form.is_use_doctor_advice
  755. form['is_default'] = this.form.is_default
  756. form['is_charge_predict'] = this.form.is_charge_predict
  757. form['is_statistics_work'] = this.form.is_statistics_work
  758. form['is_charge_use'] = this.form.is_charge_use
  759. form['drug_code'] = this.form.drug_code
  760. form['drug_classify'] = this.form.drug_classify
  761. form['dealer'] = this.form.dealer
  762. form['prescription_mark'] = this.form.prescription_mark
  763. form['social_security_directory_code'] = this.form.social_security_directory_code
  764. form['record_date'] = this.form.record_date
  765. form['drug_remark'] = this.form.drug_remark
  766. form['hosp_appr_flag'] = this.form.hosp_appr_flag
  767. form['lmt_used_flag'] = this.form.lmt_used_flag
  768. form['total'] = this.form.total
  769. form['min_number'] = this.form.min_number
  770. form["drug_day"] = this.form.drug_day
  771. form['dose'] = this.form.dose,
  772. form['dose_unit'] = this.form.dose_unit
  773. form['min_price'] = this.form.min_price
  774. form['prescribing_number_unit'] = this.form.prescribing_number_unit
  775. return form
  776. },
  777. getlist() {
  778. var params = {
  779. page: this.page,
  780. limit: this.limit
  781. }
  782. getManufacturerList(params).then(response => {
  783. var manufacturerList = response.data.data.manufacturer
  784. this.manufacturerList = manufacturerList
  785. })
  786. },
  787. GetAllConfig() {
  788. GetAllConfig().then(response => {
  789. if (response.data.state == 0) {
  790. this.$message.error(response.data.msg)
  791. return false
  792. } else {
  793. this.dealer = response.data.data.dealer
  794. // console.log('经销商', this.dealer)
  795. }
  796. })
  797. },
  798. getInitializtion(){
  799. getInitializtion().then(response=>{
  800. if(response.data.state ==1){
  801. var drugCategoryList = response.data.data.drugCategoryList
  802. this.drugCategoryList = drugCategoryList
  803. var drugTypeList = response.data.data.drugTypeList
  804. this.drugTypeList = drugTypeList
  805. var drugDosageFormList = response.data.data.drugDosageFormList
  806. this.drugDosageFormList = drugDosageFormList
  807. var medicalInsuranceLevelList = response.data.data.medicalInsuranceLevelList
  808. this.medicalInsuranceLevelList = medicalInsuranceLevelList
  809. var drugControlList = response.data.data.drugControlList
  810. this.drugControlList = drugControlList
  811. var drugClassifyList = response.data.data.drugClassifyList
  812. this.drugClassifyList = drugClassifyList
  813. var statisticsCategoryList = response.data.data.statisticsCategoryList
  814. this.statisticsCategoryList = statisticsCategoryList
  815. var pharmacologyCategoryList = response.data.data.pharmacologyCategoryList
  816. this.pharmacologyCategoryList = pharmacologyCategoryList
  817. }
  818. })
  819. },
  820. changeDoseUnit(val){
  821. if(val == this.form.min_unit){
  822. // this.form.dose = 1
  823. this.form.min_number = 1
  824. this.dosageShow = true
  825. }
  826. if(val !=this.form.min_unit){
  827. this.dosageShow = false
  828. }
  829. var arr = getDataConfig('hemodialysis','units')
  830. this.unitList = []
  831. for(let i=0;i<arr.length;i++){
  832. if(this.form.min_unit == arr[i].name){
  833. this.unitList.push(arr[i])
  834. }
  835. if(val == arr[i].name){
  836. this.unitList.push(arr[i])
  837. }
  838. let idArr = []
  839. this.unitList.map(item => {
  840. idArr.push(item.id)
  841. })
  842. if(idArr.indexOf(this.form.drug_dose_unit) == -1){
  843. if(this.form.drug_dose_unit == arr[i].id){
  844. this.unitList.push(arr[i])
  845. }
  846. }
  847. }
  848. let ojb = {};
  849. this.unitList = this.unitList.reduce(function(prevArr, currentItem) {
  850. //利用对象的键名无法重复的特点,mch_id是唯一区别的属性值
  851. ojb[currentItem.name] ? '' : ojb[currentItem.name] = true && prevArr.push(currentItem);
  852. return prevArr
  853. }, [])
  854. },
  855. changeMinUnit(val){
  856. if(val == this.form.dose_unit){
  857. // this.form.dose = 1
  858. this.form.min_number = 1
  859. this.dosageShow = true
  860. }
  861. // if(val != this.form.max_unit){
  862. // this.dosageShow = false
  863. // }
  864. if(val == this.form.max_unit){
  865. this.form.min_number = 1
  866. this.minNumberShow = true
  867. }else{
  868. this.minNumberShow = false
  869. }
  870. // if(this.form.dosage == "" || this.form.max_unit == ""){
  871. // this.form.min_number = 1
  872. // }
  873. var arr = getDataConfig('hemodialysis','units')
  874. this.unitList = []
  875. this.packingUnit = []
  876. for(let i=0;i<arr.length;i++){
  877. if(val == arr[i].name){
  878. this.unitList.push(arr[i])
  879. this.packingUnit.push(arr[i])
  880. }
  881. if(this.form.max_unit == arr[i].name){
  882. this.unitList.push(arr[i])
  883. this.packingUnit.push(arr[i])
  884. }
  885. if(this.form.drug_dose_unit == arr[i].id){
  886. this.unitList.push(arr[i])
  887. }
  888. if(this.form.prescribing_number_unit == arr[i].id){
  889. this.packingUnit.push(arr[i])
  890. }
  891. let idArr = []
  892. this.unitList.map(item => {
  893. idArr.push(item.id)
  894. })
  895. if(idArr.indexOf(this.form.drug_dose_unit) == -1){
  896. if(this.form.drug_dose_unit == arr[i].id){
  897. this.unitList.push(arr[i])
  898. }
  899. }
  900. let packingIdArr = []
  901. this.packingUnit.map(item => {
  902. packingIdArr.push(item.id)
  903. })
  904. if(packingIdArr.indexOf(this.form.prescribing_number_unit) == -1){
  905. if(this.form.prescribing_number_unit == arr[i].id){
  906. this.packingUnit.push(arr[i])
  907. }
  908. }
  909. }
  910. let ojb = {};
  911. this.unitList = this.unitList.reduce(function(prevArr, currentItem) {
  912. //利用对象的键名无法重复的特点,mch_id是唯一区别的属性值
  913. ojb[currentItem.name] ? '' : ojb[currentItem.name] = true && prevArr.push(currentItem);
  914. return prevArr
  915. }, [])
  916. let newojb = {};
  917. this.packingUnit = this.packingUnit.reduce(function(prevArr, currentItem) {
  918. //利用对象的键名无法重复的特点,mch_id是唯一区别的属性值
  919. newojb[currentItem.name] ? '' : newojb[currentItem.name] = true && prevArr.push(currentItem);
  920. return prevArr
  921. }, [])
  922. },
  923. changeMaxUnit(val){
  924. if(val == this.form.min_unit){
  925. this.form.min_number = 1
  926. this.minNumberShow = true
  927. }else{
  928. this.minNumberShow = false
  929. }
  930. var arr = getDataConfig('hemodialysis','units')
  931. this.packingUnit = []
  932. for(let i=0;i<arr.length;i++){
  933. if(val == arr[i].name){
  934. this.packingUnit.push(arr[i])
  935. }
  936. if(this.form.min_unit == arr[i].name){
  937. this.packingUnit.push(arr[i])
  938. }
  939. let packingIdArr = []
  940. this.packingUnit.map(item => {
  941. packingIdArr.push(item.id)
  942. })
  943. if(packingIdArr.indexOf(this.form.prescribing_number_unit) == -1){
  944. if(this.form.prescribing_number_unit == arr[i].id){
  945. this.packingUnit.push(arr[i])
  946. }
  947. }
  948. }
  949. let newojb = {};
  950. this.packingUnit = this.packingUnit.reduce(function(prevArr, currentItem) {
  951. //利用对象的键名无法重复的特点,mch_id是唯一区别的属性值
  952. newojb[currentItem.name] ? '' : newojb[currentItem.name] = true && prevArr.push(currentItem);
  953. return prevArr
  954. }, [])
  955. }
  956. }, watch: {
  957. visible(val) {
  958. // this.form = this.formValue
  959. }
  960. },
  961. created() {
  962. this.getInitializtion()
  963. //获取所有经销商
  964. this.GetAllConfig()
  965. this.getlist()
  966. }
  967. }
  968. </script>
  969. <style lang="scss">
  970. .addDrugsDialog {
  971. .el-dialog__body {
  972. padding-top: 0px;
  973. }
  974. .noMargin{
  975. .el-form-item__content{
  976. margin-left: 0 !important;
  977. }
  978. }
  979. }
  980. </style>