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

addDrugs.vue 49KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697989910010110210310410510610710810911011111211311411511611711811912012112212312412512612712812913013113213313413513613713813914014114214314414514614714814915015115215315415515615715815916016116216316416516616716816917017117217317417517617717817918018118218318418518618718818919019119219319419519619719819920020120220320420520620720820921021121221321421521621721821922022122222322422522622722822923023123223323423523623723823924024124224324424524624724824925025125225325425525625725825926026126226326426526626726826927027127227327427527627727827928028128228328428528628728828929029129229329429529629729829930030130230330430530630730830931031131231331431531631731831932032132232332432532632732832933033133233333433533633733833934034134234334434534634734834935035135235335435535635735835936036136236336436536636736836937037137237337437537637737837938038138238338438538638738838939039139239339439539639739839940040140240340440540640740840941041141241341441541641741841942042142242342442542642742842943043143243343443543643743843944044144244344444544644744844945045145245345445545645745845946046146246346446546646746846947047147247347447547647747847948048148248348448548648748848949049149249349449549649749849950050150250350450550650750850951051151251351451551651751851952052152252352452552652752852953053153253353453553653753853954054154254354454554654754854955055155255355455555655755855956056156256356456556656756856957057157257357457557657757857958058158258358458558658758858959059159259359459559659759859960060160260360460560660760860961061161261361461561661761861962062162262362462562662762862963063163263363463563663763863964064164264364464564664764864965065165265365465565665765865966066166266366466566666766866967067167267367467567667767867968068168268368468568668768868969069169269369469569669769869970070170270370470570670770870971071171271371471571671771871972072172272372472572672772872973073173273373473573673773873974074174274374474574674774874975075175275375475575675775875976076176276376476576676776876977077177277377477577677777877978078178278378478578678778878979079179279379479579679779879980080180280380480580680780880981081181281381481581681781881982082182282382482582682782882983083183283383483583683783883984084184284384484584684784884985085185285385485585685785885986086186286386486586686786886987087187287387487587687787887988088188288388488588688788888989089189289389489589689789889990090190290390490590690790890991091191291391491591691791891992092192292392492592692792892993093193293393493593693793893994094194294394494594694794894995095195295395495595695795895996096196296396496596696796896997097197297397497597697797897998098198298398498598698798898999099199299399499599699799899910001001100210031004100510061007100810091010101110121013101410151016101710181019102010211022102310241025102610271028102910301031103210331034103510361037103810391040104110421043104410451046104710481049105010511052105310541055105610571058105910601061106210631064106510661067106810691070107110721073107410751076107710781079108010811082108310841085108610871088108910901091109210931094109510961097109810991100110111021103
  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.dose_unit == arr[i].name){
  638. this.unitList.push(arr[i])
  639. }
  640. if(obj.max_unit == arr[i].name){
  641. this.packingUnit.push(arr[i])
  642. }
  643. let idArr = []
  644. this.unitList.map(item => {
  645. idArr.push(item.id)
  646. })
  647. if(idArr.indexOf(obj.drug_dose_unit) == -1){
  648. if(obj.drug_dose_unit == arr[i].id){
  649. this.unitList.push(arr[i])
  650. }
  651. }
  652. let packingIdArr = []
  653. this.packingUnit.map(item => {
  654. packingIdArr.push(item.id)
  655. })
  656. if(packingIdArr.indexOf(obj.prescribing_number_unit) == -1){
  657. if(obj.prescribing_number_unit == arr[i].id || obj.prescribing_number_unit == arr[i].name){
  658. this.packingUnit.push(arr[i])
  659. }
  660. }
  661. }
  662. let ojb = {};
  663. this.unitList = this.unitList.reduce(function(prevArr, currentItem) {
  664. //利用对象的键名无法重复的特点,mch_id是唯一区别的属性值
  665. ojb[currentItem.name] ? '' : ojb[currentItem.name] = true && prevArr.push(currentItem);
  666. return prevArr
  667. }, [])
  668. let newojb = {};
  669. this.packingUnit = this.packingUnit.reduce(function(prevArr, currentItem) {
  670. //利用对象的键名无法重复的特点,mch_id是唯一区别的属性值
  671. newojb[currentItem.name] ? '' : newojb[currentItem.name] = true && prevArr.push(currentItem);
  672. return prevArr
  673. }, [])
  674. console.log('this.unitList',this.unitList)
  675. this.getInitializtion()
  676. this.getlist()
  677. this.GetAllConfig()
  678. if(obj.drug_classify == 0){
  679. obj.drug_classify = ""
  680. }else{
  681. obj.drug_classify = parseInt(obj.drug_classify)
  682. }
  683. if(obj.dealer == 0){
  684. obj.dealer = ""
  685. }
  686. this.visible = true
  687. if (id == 0) {
  688. this.formTitle = '新增'
  689. this.form['id'] = 0
  690. for (let key in obj) {
  691. this.form[key] = obj[key]
  692. }
  693. this.form['lmt_used_flag'] = 0
  694. } else {
  695. for (let key in obj) {
  696. this.form[key] = obj[key]
  697. }
  698. this.form.drug_classify = parseInt(this.form.drug_classify)
  699. this.form['id'] = id
  700. this.drug_status = []
  701. if (this.form.drug_status.length > 0) {
  702. for (let i = 0; i < this.form.drug_status.split(",").length; i++) {
  703. this.drug_status.push(this.form.drug_status.split(',')[i])
  704. }
  705. console.log(this.drug_status)
  706. }
  707. this.formTitle = '编辑'
  708. let unitArr = []
  709. this.unitList.map(item => {
  710. unitArr.push(item.id)
  711. })
  712. if(unitArr.indexOf(this.form.drug_dose_unit) == -1){
  713. this.form.drug_dose_unit = ''
  714. }
  715. if(obj.dose_unit == obj.min_unit){
  716. this.dosageShow = true
  717. }else{
  718. this.dosageShow = false
  719. }
  720. if(obj.min_unit == obj.max_unit){
  721. this.minNumberShow = true
  722. }else{
  723. this.minNumberShow = false
  724. }
  725. }
  726. this.getAdviceConfig()
  727. }, getAdviceConfig() {
  728. getAdviceConfig().then(response => {
  729. if (response.data.state == 1) {
  730. this.deliveryWayOptions =
  731. response.data.data.drugways === null
  732. ? []
  733. : response.data.data.drugways
  734. this.executionFrequencyOptions =
  735. response.data.data.efs === null ? [] : response.data.data.efs
  736. }
  737. })
  738. }
  739. ,
  740. hide() {
  741. // this.clear()
  742. this.form.social_security_directory_code = ''
  743. this.form.prescription_mark = ''
  744. this.form.record_date = ''
  745. this.form.drug_remark = ''
  746. this.form.dose = ''
  747. this.form.dose_unit = ""
  748. this.form.min_number= ""
  749. this.form.min_unit = ""
  750. this.form.max_unit = ""
  751. this.form.min_price = ""
  752. this.form.prescribing_number_unit = ""
  753. this.dosageShow = false
  754. this.visible = false
  755. },
  756. getValue: function() {
  757. const form = {}
  758. form['id'] = this.form.id
  759. form['drug_name'] = this.form.drug_name
  760. form['pinyin'] = this.form.pinyin
  761. form['wubi'] = this.form.wubi
  762. form['drug_alias'] = this.form.drug_alias
  763. form['drug_alias_pinyin'] = this.form.drug_alias_pinyin
  764. form['drug_alias_wubi'] = this.form.drug_alias_wubi
  765. form['drug_category'] = this.form.drug_category
  766. form['drug_spec'] = this.form.drug_spec
  767. form['drug_type'] = this.form.drug_type
  768. form['drug_stock_limit'] = this.form.drug_stock_limit
  769. form['drug_origin_place'] = this.form.drug_origin_place
  770. form['drug_dosage_form'] = this.form.drug_dosage_form
  771. form['medical_insurance_level'] = this.form.medical_insurance_level
  772. form['max_unit'] = this.form.max_unit
  773. form['min_unit'] = this.form.min_unit
  774. form['unit_matrixing'] = this.form.unit_matrixing
  775. form['retail_price'] = this.form.retail_price
  776. form['last_price'] = this.form.last_price
  777. form['drug_control'] = this.form.drug_control
  778. form['number'] = this.form.number
  779. form['drug_dose'] = this.form.drug_dose
  780. form['drug_dose_unit'] = this.form.drug_dose_unit
  781. form['medical_insurance_number'] = this.form.medical_insurance_number
  782. form['manufacturer'] = this.form.manufacturer
  783. form['pharmacology_category'] = this.form.pharmacology_category
  784. form['statistics_category'] = this.form.statistics_category
  785. form['code'] = this.form.code
  786. form['is_special_diseases'] = this.form.is_special_diseases
  787. form['is_record'] = this.form.is_record
  788. form['agent'] = this.form.agent
  789. form['drug_status'] = this.drug_status.join(',')
  790. form['limit_remark'] = this.form.limit_remark
  791. form['delivery_way'] = this.form.delivery_way
  792. form['execution_frequency'] = this.form.execution_frequency
  793. form['single_dose'] = this.form.single_dose
  794. form['prescribing_number'] = this.form.prescribing_number
  795. form['label'] = this.form.label
  796. form['sort'] = this.form.sort
  797. form['is_use_doctor_advice'] = this.form.is_use_doctor_advice
  798. form['is_default'] = this.form.is_default
  799. form['is_charge_predict'] = this.form.is_charge_predict
  800. form['is_statistics_work'] = this.form.is_statistics_work
  801. form['is_charge_use'] = this.form.is_charge_use
  802. form['drug_code'] = this.form.drug_code
  803. form['drug_classify'] = this.form.drug_classify
  804. form['dealer'] = this.form.dealer
  805. form['prescription_mark'] = this.form.prescription_mark
  806. form['social_security_directory_code'] = this.form.social_security_directory_code
  807. form['record_date'] = this.form.record_date
  808. form['drug_remark'] = this.form.drug_remark
  809. form['hosp_appr_flag'] = this.form.hosp_appr_flag
  810. form['lmt_used_flag'] = this.form.lmt_used_flag
  811. form['total'] = this.form.total
  812. form['min_number'] = this.form.min_number
  813. form["drug_day"] = this.form.drug_day
  814. form['dose'] = this.form.dose,
  815. form['dose_unit'] = this.form.dose_unit
  816. form['min_price'] = this.form.min_price
  817. form['prescribing_number_unit'] = this.form.prescribing_number_unit
  818. return form
  819. },
  820. getlist() {
  821. var params = {
  822. page: this.page,
  823. limit: this.limit
  824. }
  825. getManufacturerList(params).then(response => {
  826. var manufacturerList = response.data.data.manufacturer
  827. this.manufacturerList = manufacturerList
  828. })
  829. },
  830. GetAllConfig() {
  831. GetAllConfig().then(response => {
  832. if (response.data.state == 0) {
  833. this.$message.error(response.data.msg)
  834. return false
  835. } else {
  836. this.dealer = response.data.data.dealer
  837. // console.log('经销商', this.dealer)
  838. }
  839. })
  840. },
  841. getInitializtion(){
  842. getInitializtion().then(response=>{
  843. if(response.data.state ==1){
  844. var drugCategoryList = response.data.data.drugCategoryList
  845. this.drugCategoryList = drugCategoryList
  846. var drugTypeList = response.data.data.drugTypeList
  847. this.drugTypeList = drugTypeList
  848. var drugDosageFormList = response.data.data.drugDosageFormList
  849. this.drugDosageFormList = drugDosageFormList
  850. var medicalInsuranceLevelList = response.data.data.medicalInsuranceLevelList
  851. this.medicalInsuranceLevelList = medicalInsuranceLevelList
  852. var drugControlList = response.data.data.drugControlList
  853. this.drugControlList = drugControlList
  854. var drugClassifyList = response.data.data.drugClassifyList
  855. this.drugClassifyList = drugClassifyList
  856. var statisticsCategoryList = response.data.data.statisticsCategoryList
  857. this.statisticsCategoryList = statisticsCategoryList
  858. var pharmacologyCategoryList = response.data.data.pharmacologyCategoryList
  859. this.pharmacologyCategoryList = pharmacologyCategoryList
  860. }
  861. })
  862. },
  863. changeDoseUnit(val){
  864. if(val == this.form.min_unit){
  865. // this.form.dose = 1
  866. this.form.min_number = 1
  867. this.dosageShow = true
  868. }
  869. if(val !=this.form.min_unit){
  870. this.dosageShow = false
  871. }
  872. var arr = getDataConfig('hemodialysis','units')
  873. this.unitList = []
  874. for(let i=0;i<arr.length;i++){
  875. if(this.form.min_unit == arr[i].name){
  876. this.unitList.push(arr[i])
  877. }
  878. if(val == arr[i].name){
  879. this.unitList.push(arr[i])
  880. }
  881. let idArr = []
  882. this.unitList.map(item => {
  883. idArr.push(item.id)
  884. })
  885. if(idArr.indexOf(this.form.drug_dose_unit) == -1){
  886. if(this.form.drug_dose_unit == arr[i].id){
  887. this.unitList.push(arr[i])
  888. }
  889. }
  890. }
  891. let ojb = {};
  892. this.unitList = this.unitList.reduce(function(prevArr, currentItem) {
  893. //利用对象的键名无法重复的特点,mch_id是唯一区别的属性值
  894. ojb[currentItem.name] ? '' : ojb[currentItem.name] = true && prevArr.push(currentItem);
  895. return prevArr
  896. }, [])
  897. },
  898. changeMinUnit(val){
  899. if(val == this.form.dose_unit){
  900. // this.form.dose = 1
  901. this.form.min_number = 1
  902. this.dosageShow = true
  903. }
  904. // if(val != this.form.max_unit){
  905. // this.dosageShow = false
  906. // }
  907. if(val == this.form.max_unit){
  908. this.form.min_number = 1
  909. this.minNumberShow = true
  910. }else{
  911. this.minNumberShow = false
  912. }
  913. // if(this.form.dosage == "" || this.form.max_unit == ""){
  914. // this.form.min_number = 1
  915. // }
  916. var arr = getDataConfig('hemodialysis','units')
  917. this.unitList = []
  918. this.packingUnit = []
  919. for(let i=0;i<arr.length;i++){
  920. if(val == arr[i].name){
  921. this.unitList.push(arr[i])
  922. this.packingUnit.push(arr[i])
  923. }
  924. if(this.form.max_unit == arr[i].name){
  925. this.unitList.push(arr[i])
  926. this.packingUnit.push(arr[i])
  927. }
  928. if(this.form.drug_dose_unit == arr[i].id){
  929. this.unitList.push(arr[i])
  930. }
  931. if(this.form.prescribing_number_unit == arr[i].id){
  932. this.packingUnit.push(arr[i])
  933. }
  934. let idArr = []
  935. this.unitList.map(item => {
  936. idArr.push(item.id)
  937. })
  938. if(idArr.indexOf(this.form.drug_dose_unit) == -1){
  939. if(this.form.drug_dose_unit == arr[i].id){
  940. this.unitList.push(arr[i])
  941. }
  942. }
  943. let packingIdArr = []
  944. this.packingUnit.map(item => {
  945. packingIdArr.push(item.id)
  946. })
  947. if(packingIdArr.indexOf(this.form.prescribing_number_unit) == -1){
  948. if(this.form.prescribing_number_unit == arr[i].id){
  949. this.packingUnit.push(arr[i])
  950. }
  951. }
  952. }
  953. let ojb = {};
  954. this.unitList = this.unitList.reduce(function(prevArr, currentItem) {
  955. //利用对象的键名无法重复的特点,mch_id是唯一区别的属性值
  956. ojb[currentItem.name] ? '' : ojb[currentItem.name] = true && prevArr.push(currentItem);
  957. return prevArr
  958. }, [])
  959. let newojb = {};
  960. this.packingUnit = this.packingUnit.reduce(function(prevArr, currentItem) {
  961. //利用对象的键名无法重复的特点,mch_id是唯一区别的属性值
  962. newojb[currentItem.name] ? '' : newojb[currentItem.name] = true && prevArr.push(currentItem);
  963. return prevArr
  964. }, [])
  965. },
  966. changeMaxUnit(val){
  967. if(val == this.form.min_unit){
  968. this.form.min_number = 1
  969. this.minNumberShow = true
  970. }else{
  971. this.minNumberShow = false
  972. }
  973. var arr = getDataConfig('hemodialysis','units')
  974. this.packingUnit = []
  975. for(let i=0;i<arr.length;i++){
  976. if(val == arr[i].name){
  977. this.packingUnit.push(arr[i])
  978. }
  979. if(this.form.min_unit == arr[i].name){
  980. this.packingUnit.push(arr[i])
  981. }
  982. let packingIdArr = []
  983. this.packingUnit.map(item => {
  984. packingIdArr.push(item.id)
  985. })
  986. if(packingIdArr.indexOf(this.form.prescribing_number_unit) == -1){
  987. if(this.form.prescribing_number_unit == arr[i].id){
  988. this.packingUnit.push(arr[i])
  989. }
  990. }
  991. }
  992. let newojb = {};
  993. this.packingUnit = this.packingUnit.reduce(function(prevArr, currentItem) {
  994. //利用对象的键名无法重复的特点,mch_id是唯一区别的属性值
  995. newojb[currentItem.name] ? '' : newojb[currentItem.name] = true && prevArr.push(currentItem);
  996. return prevArr
  997. }, [])
  998. }
  999. }, watch: {
  1000. visible(val) {
  1001. // this.form = this.formValue
  1002. }
  1003. },
  1004. created() {
  1005. this.getInitializtion()
  1006. //获取所有经销商
  1007. this.GetAllConfig()
  1008. this.getlist()
  1009. }
  1010. }
  1011. </script>
  1012. <style lang="scss">
  1013. .addDrugsDialog {
  1014. .el-dialog__body {
  1015. padding-top: 0px;
  1016. }
  1017. .noMargin{
  1018. .el-form-item__content{
  1019. margin-left: 0 !important;
  1020. }
  1021. }
  1022. }
  1023. </style>