addDrugs.vue 44KB

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