AddTerm.vue 77 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970971972973974975976977978979980981982983984985986987988989990991992993994995996997998999100010011002100310041005100610071008100910101011101210131014101510161017101810191020102110221023102410251026102710281029103010311032103310341035103610371038103910401041104210431044104510461047104810491050105110521053105410551056105710581059106010611062106310641065106610671068106910701071107210731074107510761077107810791080108110821083108410851086108710881089109010911092109310941095109610971098109911001101110211031104110511061107110811091110111111121113111411151116111711181119112011211122112311241125112611271128112911301131113211331134113511361137113811391140114111421143114411451146114711481149115011511152115311541155115611571158115911601161116211631164116511661167116811691170117111721173117411751176117711781179118011811182118311841185118611871188118911901191119211931194119511961197119811991200120112021203120412051206120712081209121012111212121312141215121612171218121912201221122212231224122512261227122812291230123112321233123412351236123712381239124012411242124312441245124612471248124912501251125212531254125512561257125812591260126112621263126412651266126712681269127012711272127312741275127612771278127912801281128212831284128512861287128812891290129112921293129412951296129712981299130013011302130313041305130613071308130913101311131213131314131513161317131813191320132113221323132413251326132713281329133013311332133313341335133613371338133913401341134213431344134513461347134813491350135113521353135413551356135713581359136013611362136313641365136613671368136913701371137213731374137513761377137813791380138113821383138413851386138713881389139013911392139313941395139613971398139914001401140214031404140514061407140814091410141114121413141414151416141714181419142014211422142314241425142614271428142914301431143214331434143514361437143814391440144114421443144414451446144714481449145014511452145314541455145614571458145914601461146214631464146514661467146814691470147114721473147414751476147714781479148014811482148314841485148614871488148914901491149214931494149514961497149814991500150115021503150415051506150715081509151015111512151315141515151615171518151915201521152215231524152515261527152815291530153115321533153415351536153715381539154015411542154315441545154615471548154915501551155215531554155515561557155815591560156115621563156415651566156715681569157015711572157315741575157615771578157915801581158215831584158515861587158815891590159115921593159415951596159715981599160016011602160316041605160616071608160916101611161216131614161516161617161816191620162116221623162416251626162716281629163016311632163316341635163616371638163916401641164216431644164516461647164816491650165116521653165416551656165716581659166016611662166316641665166616671668166916701671167216731674167516761677167816791680168116821683168416851686168716881689169016911692169316941695169616971698169917001701170217031704170517061707170817091710171117121713171417151716171717181719172017211722172317241725172617271728172917301731173217331734173517361737173817391740174117421743174417451746174717481749175017511752175317541755175617571758175917601761176217631764176517661767176817691770177117721773177417751776177717781779178017811782178317841785178617871788178917901791179217931794179517961797179817991800180118021803180418051806180718081809181018111812181318141815181618171818181918201821182218231824182518261827182818291830183118321833183418351836183718381839184018411842184318441845184618471848184918501851185218531854185518561857185818591860186118621863186418651866186718681869187018711872187318741875187618771878187918801881188218831884188518861887188818891890189118921893189418951896189718981899190019011902190319041905190619071908190919101911191219131914191519161917191819191920192119221923192419251926192719281929193019311932193319341935193619371938193919401941194219431944194519461947194819491950195119521953195419551956195719581959196019611962196319641965196619671968196919701971197219731974197519761977197819791980198119821983198419851986198719881989199019911992199319941995199619971998199920002001200220032004200520062007200820092010201120122013201420152016201720182019202020212022202320242025202620272028202920302031203220332034203520362037203820392040204120422043204420452046204720482049205020512052205320542055205620572058205920602061206220632064206520662067206820692070207120722073207420752076207720782079208020812082208320842085208620872088208920902091209220932094209520962097209820992100210121022103210421052106210721082109211021112112211321142115211621172118211921202121212221232124212521262127212821292130213121322133213421352136213721382139214021412142214321442145214621472148214921502151215221532154215521562157215821592160216121622163216421652166216721682169217021712172217321742175217621772178217921802181218221832184218521862187218821892190219121922193219421952196219721982199220022012202220322042205220622072208220922102211221222132214221522162217221822192220222122222223222422252226222722282229223022312232223322342235223622372238223922402241224222432244224522462247224822492250225122522253225422552256225722582259226022612262226322642265226622672268226922702271227222732274227522762277227822792280228122822283228422852286228722882289229022912292229322942295229622972298229923002301230223032304230523062307230823092310231123122313231423152316231723182319232023212322232323242325232623272328232923302331233223332334233523362337233823392340234123422343234423452346234723482349235023512352235323542355235623572358235923602361236223632364236523662367236823692370237123722373237423752376237723782379238023812382238323842385238623872388238923902391239223932394239523962397239823992400240124022403240424052406240724082409241024112412241324142415241624172418241924202421242224232424242524262427242824292430243124322433243424352436243724382439244024412442244324442445244624472448244924502451245224532454245524562457245824592460246124622463246424652466246724682469247024712472247324742475
  1. <template>
  2. <div>
  3. <crumbs
  4. :title="minTitle"
  5. :param="$route.params"
  6. linkTo="BasicTermsMaintenance"
  7. ></crumbs>
  8. <div class="contents">
  9. <div class="content">
  10. <h3>添加术语:</h3>
  11. <p class="titl">医学标准术语:</p>
  12. <table class="deptbox" v-if="id == ''">
  13. <tr>
  14. <td class="ind">序号</td>
  15. <td>
  16. 医学标准术语
  17. <span class="necess">*</span>
  18. </td>
  19. <td>拼音</td>
  20. <td>
  21. 术语类型
  22. <span class="necess">*</span>
  23. </td>
  24. <td class="desc">说明</td>
  25. </tr>
  26. <tr>
  27. <td class="ind">1</td>
  28. <td
  29. :title="
  30. data.libName && data.libName.length > 9 ? data.libName : ''
  31. "
  32. >
  33. <!-- 修改时标准词不能修改,修改了会当做新增处理 4-17 -->
  34. <p v-if="id">{{ data.libName }}</p>
  35. <!-- 4-18 需求变更 -->
  36. <input
  37. v-else
  38. type="text"
  39. v-model.trim="data.libName"
  40. placeholder="请输入术语"
  41. maxlength="70"
  42. @blur="handleBlur(1)"
  43. />
  44. <SimilarListDrag
  45. :searchType="searchType"
  46. :similarList="similarList"
  47. isShow="true"
  48. @closeTable="closeTable"
  49. ></SimilarListDrag>
  50. </td>
  51. <td>
  52. <input
  53. type="text"
  54. v-model.trim="data.spell"
  55. placeholder="请输入拼音"
  56. maxlength="50"
  57. @input="handlePinyin($event, 1)"
  58. />
  59. </td>
  60. <td>
  61. <!-- <el-select v-if="!id" v-model="data.type" filterable placeholder="请选择" size="small" @change="selectType">
  62. <el-option
  63. v-for="item in typeList"
  64. :key="item.id"
  65. :label="item.name"
  66. :value="item.name">
  67. </el-option>
  68. </el-select>-->
  69. <template v-if="!id">
  70. <el-select
  71. v-model="data.type"
  72. filterable
  73. clearable
  74. popper-class="horizontal-drop"
  75. placeholder="请选择"
  76. @clear="clearDataCi"
  77. size="small"
  78. @change="selectType"
  79. >
  80. <el-option-group v-for="group in options" :key="group.label">
  81. <el-option
  82. v-for="item in group.options"
  83. :key="item.id"
  84. :label="item.name"
  85. :value="item.name"
  86. ></el-option>
  87. </el-option-group>
  88. </el-select>
  89. </template>
  90. <span v-else>{{ data.type }}</span>
  91. </td>
  92. <td class="desc">
  93. <input
  94. v-model.trim="data.remark"
  95. placeholder="请输入术语说明"
  96. maxlength="120"
  97. />
  98. </td>
  99. </tr>
  100. </table>
  101. <div class="deptboxChange" v-else>
  102. <table class="deptbox deptboxTable">
  103. <tr>
  104. <td class="ind">序号</td>
  105. <td class="desc">医学标准术语</td>
  106. <td>拼音</td>
  107. <td>术语类型</td>
  108. <td class="desc">说明</td>
  109. <td class="descs">术语性质</td>
  110. <td v-if="id">操作</td>
  111. </tr>
  112. <tr v-for="(item, index) in allwords" :key="index">
  113. <td class="ind">{{ index + 1 }}</td>
  114. <td
  115. :title="
  116. item.libName && item.libName.length > 9 ? item.libName : ''
  117. "
  118. >
  119. <!-- 使用原生input,输入限制 -->
  120. <!-- <el-input v-model="item.name" placeholder="请输入术语" maxlength="30" size="small" @input.native="handleInput(2,index)"></el-input> -->
  121. <input
  122. type="text"
  123. v-model.trim="item.libName"
  124. :title="item.name"
  125. placeholder="请输入术语"
  126. maxlength="70"
  127. @blur="handleBlur(2, index, 99)"
  128. />
  129. <SimilarListDrag
  130. :searchType="searchType"
  131. :similarList="similarList"
  132. :isShow="index === searchIndex"
  133. @closeTable="closeTable"
  134. ></SimilarListDrag>
  135. </td>
  136. <!-- <td v-if="!item.isEdit">
  137. {{item.spell}}
  138. </td>
  139. <td v-else>-->
  140. <td>
  141. <input
  142. type="text"
  143. v-model.trim="item.spell"
  144. placeholder="请输入拼音"
  145. maxlength="50"
  146. @input="handlePinyin($event, 2, index)"
  147. class="spell"
  148. />
  149. </td>
  150. <td>
  151. <template v-if="index == 0 && copy">
  152. <el-select
  153. v-model="data.type"
  154. filterable
  155. popper-class="horizontal-drop"
  156. placeholder="请选择"
  157. size="small"
  158. @clear="clearDataCi"
  159. @change="selectType"
  160. >
  161. <el-option-group
  162. v-for="group in options"
  163. :key="group.label"
  164. >
  165. <el-option
  166. v-for="item in group.options"
  167. :key="item.id"
  168. :label="item.name"
  169. :value="item.name"
  170. ></el-option>
  171. </el-option-group>
  172. </el-select>
  173. </template>
  174. <span v-else>{{ data.type }}</span>
  175. </td>
  176. <td class="desc">
  177. <input
  178. v-model.trim="item.remark"
  179. placeholder="请输入术语说明"
  180. maxlength="120"
  181. />
  182. </td>
  183. <td class="desc">
  184. {{ item.isConcept == 1 ? "医学标准术语" : "同义词" }}
  185. </td>
  186. <td v-if="id">
  187. <span class="displayColor" v-if="item.isConcept == 1"
  188. >删除</span
  189. >
  190. <span @click="deleLine(index, 55, item)" class="delete" v-else
  191. >删除</span
  192. >
  193. </td>
  194. </tr>
  195. <tr @click="addSpan(55)">
  196. <td colspan="7" class="addSpan">+</td>
  197. </tr>
  198. </table>
  199. <div class="actionDo"></div>
  200. </div>
  201. <p class="titl" v-if="id == ''">同义词:</p>
  202. <table class="deptbox" v-if="id == ''">
  203. <tr>
  204. <td class="ind">序号</td>
  205. <td>医学标准术语</td>
  206. <td>拼音</td>
  207. <td>术语类型</td>
  208. <td class="desc">说明</td>
  209. <td v-if="id">操作</td>
  210. </tr>
  211. <tr v-for="(item, index) in synonymous" :key="index">
  212. <td class="ind">{{ index + 1 }}</td>
  213. <td
  214. :title="
  215. item.libName && item.libName.length > 9 ? item.libName : ''
  216. "
  217. >
  218. <!-- 使用原生input,输入限制 -->
  219. <!-- <el-input v-model="item.name" placeholder="请输入术语" maxlength="30" size="small" @input.native="handleInput(2,index)"></el-input> -->
  220. <input
  221. type="text"
  222. v-model.trim="item.libName"
  223. placeholder="请输入术语"
  224. maxlength="70"
  225. @blur="handleBlur(2, index)"
  226. />
  227. <SimilarListDrag
  228. :searchType="searchType"
  229. :similarList="similarList"
  230. :isShow="index === searchIndex"
  231. @closeTable="closeTable"
  232. ></SimilarListDrag>
  233. </td>
  234. <td>
  235. <input
  236. type="text"
  237. v-model.trim="item.spell"
  238. placeholder="请输入拼音"
  239. maxlength="50"
  240. @input="handlePinyin($event, 3, index)"
  241. />
  242. </td>
  243. <td>{{ data.type }}</td>
  244. <td class="desc">
  245. <input
  246. v-model.trim="item.remark"
  247. placeholder="请输入术语说明"
  248. maxlength="120"
  249. />
  250. </td>
  251. <td v-if="id">
  252. <span @click="deleLine(index, 1, item)" class="delete">删除</span>
  253. </td>
  254. </tr>
  255. <tr @click="addSpan">
  256. <td :colspan="colspan" class="addSpan">+</td>
  257. </tr>
  258. </table>
  259. <div class="moreInfo" v-if="showMore == 1">
  260. <p>更多信息:</p>
  261. <el-form label-width="150px">
  262. <el-form-item label="性别:">
  263. <el-select v-model="sexType">
  264. <el-option
  265. v-for="(it, i) in sex"
  266. :key="i"
  267. :label="it.name"
  268. :value="it.value"
  269. ></el-option>
  270. </el-select>
  271. </el-form-item>
  272. <el-form-item label="年龄:" class="ages is-required">
  273. <el-input
  274. v-model.number="minAge"
  275. type="number"
  276. @input="inputAge"
  277. ></el-input>
  278. <span class="ageLine">~</span>
  279. <el-input
  280. v-model.number="maxAge"
  281. type="number"
  282. @input="inputAge"
  283. ></el-input>
  284. </el-form-item>
  285. <el-form-item
  286. v-if="data.type == '实验室检查子项目'"
  287. label="参考范围"
  288. class="ages"
  289. >
  290. <el-radio-group v-model="radio" @change="changeRadio">
  291. <el-radio :label="1">数值内容</el-radio>
  292. <el-radio :label="2">文本内容</el-radio>
  293. </el-radio-group>
  294. </el-form-item>
  295. <el-form-item
  296. v-if="
  297. data.type == '实验室检查子项目' &&
  298. (radio == 1 || klLisVO.minValue || klLisVO.maxValue)
  299. "
  300. class="ages"
  301. >
  302. <el-input
  303. v-model.trim="klLisVO.minValue"
  304. type="number"
  305. @input="inputAge"
  306. ></el-input>
  307. <span class="ageLine">~</span>
  308. <el-input
  309. v-model.trim="klLisVO.maxValue"
  310. type="number"
  311. @input="inputAge"
  312. ></el-input>
  313. <el-input
  314. class="inp"
  315. v-model.trim="klLisVO.unit"
  316. placeholder="输入单位"
  317. maxlength="6"
  318. type="text"
  319. @input="inputAge"
  320. ></el-input>
  321. </el-form-item>
  322. <el-form-item
  323. v-if="
  324. data.type == '实验室检查子项目' &&
  325. (radio == 2 || klLisVO.qualitative != '')
  326. "
  327. class="ages tips"
  328. >
  329. <div-editable
  330. class="divBox"
  331. v-if="hackReset"
  332. v-model="klLisVO.qualitative"
  333. :Maincontent="'Maincontent'"
  334. title="请输入"
  335. ></div-editable>
  336. <span class="titles"
  337. >注:输入结果内容以顿号隔开,例如:阴性、阳性</span
  338. >
  339. </el-form-item>
  340. <div
  341. v-if="
  342. data.type == '实验室检查子项目' &&
  343. (radio == 1 || klLisVO.minValue || klLisVO.maxValue)
  344. "
  345. style="
  346. width: 300px;
  347. display: inlne;
  348. position: relative;
  349. right: -530px;
  350. top: -40px;
  351. "
  352. >
  353. <span style="margin-right: 15px">范围</span>
  354. <el-select v-model="klLisVO.type">
  355. <el-option
  356. v-for="(it, i) in range"
  357. :key="i"
  358. :label="it.name"
  359. :value="it.value"
  360. ></el-option>
  361. </el-select>
  362. </div>
  363. <el-form-item label="科室:" v-if="dioType" class="marT">
  364. <el-select v-model="dept">
  365. <!-- <el-option v-for="(it,i) in deptList" :label="it.name" :value="it.name"></el-option> -->
  366. <el-option-group
  367. v-for="group in deptListArr"
  368. :key="group.label"
  369. >
  370. <el-option
  371. v-for="item in group.deptList"
  372. :key="item.id"
  373. :label="item.name"
  374. :value="item.name"
  375. ></el-option>
  376. </el-option-group>
  377. </el-select>
  378. </el-form-item>
  379. <el-form-item label="归属类型:" v-if="dioType" class="marT">
  380. <el-select v-model="dioType">
  381. <el-option
  382. v-for="(it, i) in dioTypeList"
  383. :key="i"
  384. :label="it.name"
  385. :value="it.val"
  386. ></el-option>
  387. </el-select>
  388. </el-form-item>
  389. <el-form-item
  390. label="药品类型:"
  391. v-if="data.type == '药品通用名'"
  392. class="marT is-required"
  393. >
  394. <el-select v-model="klDrugVO.drug">
  395. <el-option
  396. v-for="(it, i) in drugTypeList"
  397. :key="i"
  398. :label="it.name"
  399. :value="it.val"
  400. ></el-option>
  401. </el-select>
  402. </el-form-item>
  403. <el-form-item
  404. label="药品级别:"
  405. v-if="data.type == '药品通用名'"
  406. class="marT is-required"
  407. >
  408. <el-select v-model="klDrugVO.drugGrade">
  409. <el-option
  410. v-for="item in drugGradeList"
  411. :key="item.value"
  412. :label="item.label"
  413. :value="item.value"
  414. ></el-option>
  415. </el-select>
  416. </el-form-item>
  417. <el-form-item
  418. label="药品分类:"
  419. v-if="data.type == '药品通用名'"
  420. class="marT is-required"
  421. >
  422. <div-editable
  423. class="divBox"
  424. v-if="hackReset"
  425. v-model="klDrugVO.drugC"
  426. :Maincontent="'drugC'"
  427. title="请输入"
  428. ></div-editable>
  429. </el-form-item>
  430. <el-form-item
  431. label="危急标识:"
  432. v-if="
  433. data.type == '辅助检查项目' || data.type == '辅助检查子项目'
  434. "
  435. class="marT"
  436. >
  437. <el-radio-group v-model="klPacsVO.emergencySign">
  438. <el-radio :label="1">是</el-radio>
  439. <el-radio :label="0">否</el-radio>
  440. </el-radio-group>
  441. </el-form-item>
  442. <el-form-item
  443. label="方法:"
  444. v-if="
  445. data.type == '辅助检查项目' || data.type == '辅助检查子项目'
  446. "
  447. class="marT"
  448. >
  449. <div-editable
  450. v-if="hackReset"
  451. v-model="klPacsVO.checkMethod"
  452. :Maincontent="'checkMethod'"
  453. title="请输入"
  454. ></div-editable>
  455. </el-form-item>
  456. <el-form-item
  457. label="检查技术:"
  458. v-if="
  459. data.type == '辅助检查项目' || data.type == '辅助检查子项目'
  460. "
  461. class="marT"
  462. >
  463. <div-editable
  464. v-if="hackReset"
  465. v-model="klPacsVO.checkSkillful"
  466. :Maincontent="'checkSkillful'"
  467. title="请输入"
  468. ></div-editable>
  469. </el-form-item>
  470. <el-form-item
  471. label="项目定义:"
  472. v-if="
  473. data.type == '辅助检查项目' || data.type == '辅助检查子项目'
  474. "
  475. class="marT"
  476. >
  477. <el-input
  478. class="txt"
  479. type="textarea"
  480. :autosize="{ minRows: 1, maxRows: 3 }"
  481. v-model.trim="klPacsVO.definition"
  482. placeholder="请输入"
  483. maxlength="500"
  484. ></el-input>
  485. </el-form-item>
  486. <el-form-item
  487. label="检查目的:"
  488. v-if="
  489. data.type == '辅助检查项目' || data.type == '辅助检查子项目'
  490. "
  491. class="marT"
  492. >
  493. <el-input
  494. type="textarea"
  495. :autosize="{ minRows: 1, maxRows: 3 }"
  496. v-model.trim="klPacsVO.checkObjective"
  497. placeholder="请输入"
  498. maxlength="500"
  499. ></el-input>
  500. </el-form-item>
  501. <el-form-item
  502. label="禁忌症和局限性:"
  503. v-if="
  504. data.type == '辅助检查项目' || data.type == '辅助检查子项目'
  505. "
  506. class="marT"
  507. >
  508. <el-input
  509. type="textarea"
  510. :autosize="{ minRows: 1, maxRows: 3 }"
  511. v-model.trim="klPacsVO.condLimit"
  512. placeholder="请输入"
  513. maxlength="500"
  514. ></el-input>
  515. </el-form-item>
  516. <el-form-item
  517. label="适应症:"
  518. v-if="
  519. data.type == '辅助检查项目' || data.type == '辅助检查子项目'
  520. "
  521. class="marT"
  522. >
  523. <el-input
  524. type="textarea"
  525. :autosize="{ minRows: 1, maxRows: 3 }"
  526. v-model.trim="klPacsVO.interventional"
  527. placeholder="请输入"
  528. maxlength="500"
  529. ></el-input>
  530. </el-form-item>
  531. <el-form-item
  532. label="检查前准备:"
  533. v-if="
  534. data.type == '辅助检查项目' || data.type == '辅助检查子项目'
  535. "
  536. class="marT"
  537. >
  538. <el-input
  539. type="textarea"
  540. :autosize="{ minRows: 1, maxRows: 3 }"
  541. v-model.trim="klPacsVO.checkPrepare"
  542. placeholder="请输入"
  543. maxlength="500"
  544. ></el-input>
  545. </el-form-item>
  546. <el-form-item
  547. v-if="data.type == '症状'"
  548. label="阳性症状:"
  549. prop="description"
  550. class="marT"
  551. >
  552. <el-radio v-model="klSymptomVO.isPositive" :label="1"
  553. >是</el-radio
  554. >
  555. <el-radio v-model="klSymptomVO.isPositive" :label="0"
  556. >否</el-radio
  557. >
  558. </el-form-item>
  559. <el-form-item
  560. v-if="data.type == '症状'"
  561. label="英文名称:"
  562. prop="description"
  563. class="marT"
  564. >
  565. <div-editable
  566. v-if="hackReset"
  567. v-model="klSymptomVO.enName"
  568. :Maincontent="'enNamekl'"
  569. title="请输入"
  570. ></div-editable>
  571. </el-form-item>
  572. <el-form-item
  573. v-if="data.type == '症状'"
  574. label="就诊科室:"
  575. prop="description"
  576. class="marT"
  577. >
  578. <searchTerm
  579. v-if="hackReset"
  580. :refbool.sync="klSymptomVO.deptList"
  581. :id="id"
  582. :type="115"
  583. ></searchTerm>
  584. </el-form-item>
  585. <el-form-item
  586. v-if="data.type == '症状'"
  587. label="发病部位:"
  588. prop="description"
  589. class="marT"
  590. >
  591. <searchTerm
  592. v-if="hackReset"
  593. :refbool.sync="klSymptomVO.partList"
  594. :id="id"
  595. :type="122"
  596. ></searchTerm>
  597. </el-form-item>
  598. <el-form-item
  599. v-if="data.type == '症状'"
  600. label="常见伴随症状:"
  601. prop="description"
  602. class="marT"
  603. >
  604. <searchTerm
  605. v-if="hackReset"
  606. :refbool.sync="klSymptomVO.conSymptomList"
  607. :id="id"
  608. :type="103"
  609. ></searchTerm>
  610. </el-form-item>
  611. <el-form-item
  612. v-if="data.type == '症状'"
  613. label="性质:"
  614. prop="description"
  615. class="marT"
  616. >
  617. <searchTerm
  618. v-if="hackReset"
  619. :refbool.sync="klSymptomVO.natureList"
  620. :id="id"
  621. :type="126"
  622. ></searchTerm>
  623. </el-form-item>
  624. <el-form-item
  625. v-if="data.type == '症状'"
  626. label="缓解因素:"
  627. prop="description"
  628. class="marT"
  629. >
  630. <div-editable
  631. v-if="hackReset"
  632. v-model="klSymptomVO.mitigatingFac"
  633. :Maincontent="'mitigatingFac'"
  634. title="请输入"
  635. ></div-editable>
  636. </el-form-item>
  637. <el-form-item
  638. v-if="data.type == '症状'"
  639. label="加重因素:"
  640. prop="description"
  641. class="marT"
  642. >
  643. <div-editable
  644. v-if="hackReset"
  645. v-model="klSymptomVO.aggravateFac"
  646. :Maincontent="'aggravateFac'"
  647. title="请输入"
  648. ></div-editable>
  649. </el-form-item>
  650. <el-form-item
  651. v-if="data.type == '症状'"
  652. label="通俗解释:"
  653. prop="description"
  654. class="marT"
  655. >
  656. <div-editable
  657. v-if="hackReset"
  658. v-model="klSymptomVO.commonExplain"
  659. :Maincontent="'commonExplain'"
  660. title="请输入"
  661. ></div-editable>
  662. </el-form-item>
  663. <el-form-item
  664. v-if="data.type == '症状'"
  665. label="定义:"
  666. prop="description"
  667. class="marT"
  668. >
  669. <el-input
  670. type="textarea"
  671. :autosize="{ minRows: 1, maxRows: 3 }"
  672. v-model.trim="klSymptomVO.definition"
  673. placeholder="请输入"
  674. maxlength="500"
  675. ></el-input>
  676. </el-form-item>
  677. <el-form-item
  678. v-if="data.type == '症状'"
  679. label="症状起因:"
  680. prop="description"
  681. class="marT"
  682. >
  683. <el-input
  684. type="textarea"
  685. :autosize="{ minRows: 1, maxRows: 3 }"
  686. v-model.trim="klSymptomVO.cause"
  687. placeholder="请输入"
  688. maxlength="500"
  689. ></el-input>
  690. </el-form-item>
  691. <el-form-item
  692. v-if="data.type == '症状'"
  693. label="常见疾病:"
  694. prop="description"
  695. class="marT"
  696. >
  697. <el-input
  698. type="textarea"
  699. :autosize="{ minRows: 1, maxRows: 3 }"
  700. v-model.trim="klSymptomVO.commonDis"
  701. placeholder="请输入"
  702. maxlength="500"
  703. ></el-input>
  704. </el-form-item>
  705. <el-form-item
  706. v-if="data.type == '症状'"
  707. label="预防措施:"
  708. prop="description"
  709. class="marT"
  710. >
  711. <el-input
  712. type="textarea"
  713. :autosize="{ minRows: 1, maxRows: 3 }"
  714. v-model.trim="klSymptomVO.preMeasures"
  715. placeholder="请输入"
  716. maxlength="500"
  717. ></el-input>
  718. </el-form-item>
  719. <el-form-item
  720. v-if="data.type == '症状'"
  721. label="饮食禁忌:"
  722. prop="description"
  723. class="marT"
  724. >
  725. <el-input
  726. type="textarea"
  727. :autosize="{ minRows: 1, maxRows: 3 }"
  728. v-model.trim="klSymptomVO.foodProhibition"
  729. placeholder="请输入"
  730. maxlength="500"
  731. ></el-input>
  732. </el-form-item>
  733. <el-form-item
  734. v-if="data.type == '疾病'"
  735. label="ICD10医保版:"
  736. prop="description"
  737. class="marT description"
  738. >
  739. <el-input
  740. v-model.trim="klDiseaseVO.icd10Code"
  741. maxlength="30"
  742. placeholder="请输入编码"
  743. ></el-input>
  744. </el-form-item>
  745. <el-form-item
  746. v-if="data.type == '疾病'"
  747. label="ICD10国临版:"
  748. prop="description"
  749. class="marT description"
  750. >
  751. <el-row>
  752. <el-col :span="5"
  753. ><el-input
  754. @blur="handleBlurGuo"
  755. v-model.trim="klDiseaseVO.guoname"
  756. maxlength="70"
  757. placeholder="请输入名称"
  758. ></el-input
  759. ></el-col>
  760. <el-col :span="5"
  761. ><el-input
  762. v-model.trim="klDiseaseVO.guospell"
  763. maxlength="70"
  764. placeholder="请输入拼音"
  765. ></el-input
  766. ></el-col>
  767. <el-col :span="5"
  768. ><el-input
  769. v-model.trim="klDiseaseVO.guocode"
  770. maxlength="30"
  771. placeholder="请输入编码"
  772. ></el-input
  773. ></el-col>
  774. </el-row>
  775. </el-form-item>
  776. <el-form-item
  777. v-if="data.type == '疾病'"
  778. label="发病率:"
  779. prop="description"
  780. class="marT description"
  781. >
  782. <el-input
  783. v-model.trim="klDiseaseVO.incidence"
  784. type="number"
  785. oninput="if(value.length>6)value=value.slice(0,6)"
  786. placeholder="请输入"
  787. ></el-input>
  788. </el-form-item>
  789. <el-form-item
  790. label="遗传性:"
  791. v-if="data.type == '疾病'"
  792. class="marT"
  793. >
  794. <el-radio-group v-model="klDiseaseVO.isHeredity">
  795. <el-radio :label="1">是</el-radio>
  796. <el-radio :label="0">否</el-radio>
  797. </el-radio-group>
  798. </el-form-item>
  799. <el-form-item
  800. label="常见病:"
  801. v-if="data.type == '疾病'"
  802. class="marT"
  803. >
  804. <el-radio-group v-model="klDiseaseVO.isCommonDis">
  805. <el-radio :label="1">是</el-radio>
  806. <el-radio :label="0">否</el-radio>
  807. </el-radio-group>
  808. </el-form-item>
  809. <el-form-item
  810. label="传染性:"
  811. v-if="data.type == '疾病'"
  812. class="marT"
  813. >
  814. <el-radio-group v-model="klDiseaseVO.isInfect">
  815. <el-radio :label="1">是</el-radio>
  816. <el-radio :label="0">否</el-radio>
  817. </el-radio-group>
  818. </el-form-item>
  819. <el-form-item
  820. v-if="data.type == '疾病' && klDiseaseVO.isInfect === 1"
  821. label="传染病分类:"
  822. prop="description"
  823. class="marT"
  824. >
  825. <div-editable
  826. v-if="hackReset"
  827. v-model="klDiseaseVO.infectClassification"
  828. :Maincontent="'infectClassification'"
  829. title="请输入"
  830. ></div-editable>
  831. </el-form-item>
  832. <el-form-item
  833. v-if="data.type == '疾病' && klDiseaseVO.isInfect === 1"
  834. label="传染病上报时限:"
  835. prop="description"
  836. class="marT"
  837. >
  838. <div-editable
  839. v-if="hackReset"
  840. v-model="klDiseaseVO.infectDeadline"
  841. :Maincontent="'infectDeadline'"
  842. title="请输入"
  843. ></div-editable>
  844. </el-form-item>
  845. <el-form-item
  846. label="疾病就诊科室:"
  847. v-if="data.type == '疾病'"
  848. class="marT"
  849. >
  850. <searchTerm
  851. v-if="hackReset"
  852. :refbool.sync="klDiseaseVO.deptList"
  853. :id="id"
  854. :type="115"
  855. ></searchTerm>
  856. </el-form-item>
  857. <el-form-item
  858. label="疾病发病部位:"
  859. v-if="data.type == '疾病'"
  860. class="marT"
  861. >
  862. <searchTerm
  863. v-if="hackReset"
  864. :refbool.sync="klDiseaseVO.partList"
  865. :id="id"
  866. :type="122"
  867. ></searchTerm>
  868. </el-form-item>
  869. <el-form-item
  870. label="疾病系统分类:"
  871. v-if="data.type == '疾病'"
  872. class="marT"
  873. >
  874. <searchTerm
  875. v-if="hackReset"
  876. :refbool.sync="klDiseaseVO.systemTypeList"
  877. :id="id"
  878. :type="307"
  879. ></searchTerm>
  880. </el-form-item>
  881. <el-form-item
  882. v-if="data.type == '疾病'"
  883. label="肿瘤/细胞类型:"
  884. prop="description"
  885. class="marT"
  886. >
  887. <div-editable
  888. v-if="hackReset"
  889. v-model="klDiseaseVO.tumorCellType"
  890. :Maincontent="'tumorCellType'"
  891. title="请输入"
  892. ></div-editable>
  893. </el-form-item>
  894. <el-form-item
  895. v-if="data.type == '疾病'"
  896. label="形态学分类代码:"
  897. prop="description"
  898. class="marT"
  899. >
  900. <div-editable
  901. v-if="hackReset"
  902. v-model="klDiseaseVO.morphology"
  903. :Maincontent="'morphology'"
  904. title="请输入"
  905. ></div-editable>
  906. </el-form-item>
  907. <el-form-item
  908. v-if="data.type == '疾病'"
  909. label="英文名称:"
  910. prop="description"
  911. class="marT"
  912. >
  913. <div-editable
  914. v-if="hackReset"
  915. v-model="klDiseaseVO.enName"
  916. :Maincontent="'enNamej'"
  917. title="请输入"
  918. ></div-editable>
  919. </el-form-item>
  920. <el-form-item
  921. v-if="data.type == '疾病'"
  922. label="英文简称:"
  923. prop="description"
  924. class="marT"
  925. >
  926. <div-editable
  927. v-if="hackReset"
  928. v-model="klDiseaseVO.enNameSimple"
  929. :Maincontent="'enNameSimple'"
  930. title="请输入"
  931. ></div-editable>
  932. </el-form-item>
  933. <el-form-item
  934. v-if="data.type == '疾病'"
  935. label="疾病简称:"
  936. prop="description"
  937. class="marT"
  938. >
  939. <div-editable
  940. v-if="hackReset"
  941. v-model="klDiseaseVO.nameSimple"
  942. :Maincontent="'nameSimple'"
  943. title="请输入"
  944. ></div-editable>
  945. </el-form-item>
  946. <el-form-item
  947. v-if="data.type == '疾病'"
  948. label="好发人群:"
  949. prop="description"
  950. class="marT"
  951. >
  952. <div-editable
  953. v-if="hackReset"
  954. v-model="klDiseaseVO.vulCrowd"
  955. :Maincontent="'vulCrowd'"
  956. title="请输入"
  957. ></div-editable>
  958. </el-form-item>
  959. <el-form-item
  960. v-if="data.type == '疾病'"
  961. label="好发地区:"
  962. prop="description"
  963. class="marT"
  964. >
  965. <div-editable
  966. v-if="hackReset"
  967. v-model="klDiseaseVO.vulArea"
  968. :Maincontent="'vulArea'"
  969. title="请输入"
  970. ></div-editable>
  971. </el-form-item>
  972. <el-form-item
  973. v-if="data.type == '疾病'"
  974. label="病程:"
  975. prop="description"
  976. class="marT"
  977. >
  978. <div-editable
  979. v-if="hackReset"
  980. v-model="klDiseaseVO.course"
  981. :Maincontent="'course'"
  982. title="请输入"
  983. ></div-editable>
  984. </el-form-item>
  985. <el-form-item
  986. v-if="data.type == '疾病'"
  987. label="危害性:"
  988. prop="description"
  989. class="marT"
  990. >
  991. <div-editable
  992. v-if="hackReset"
  993. v-model="klDiseaseVO.pernicious"
  994. :Maincontent="'pernicious'"
  995. title="请输入"
  996. ></div-editable>
  997. </el-form-item>
  998. <el-form-item
  999. v-if="data.type == '疾病'"
  1000. label="治愈性:"
  1001. prop="description"
  1002. class="marT"
  1003. >
  1004. <div-editable
  1005. v-if="hackReset"
  1006. v-model="klDiseaseVO.healing"
  1007. :Maincontent="'healing'"
  1008. title="请输入"
  1009. ></div-editable>
  1010. </el-form-item>
  1011. <el-form-item
  1012. v-if="data.type == '疾病'"
  1013. label="诱因:"
  1014. prop="description"
  1015. class="marT"
  1016. >
  1017. <div-editable
  1018. v-if="hackReset"
  1019. v-model="klDiseaseVO.inducement"
  1020. :Maincontent="'inducement'"
  1021. title="请输入"
  1022. ></div-editable>
  1023. </el-form-item>
  1024. <el-form-item
  1025. v-if="data.type == '疾病'"
  1026. label="疾病分型:"
  1027. prop="description"
  1028. class="marT"
  1029. >
  1030. <el-input
  1031. v-model.trim="klDiseaseVO.disType"
  1032. maxlength="500"
  1033. placeholder="请输入"
  1034. :autosize="{ minRows: 1, maxRows: 3 }"
  1035. type="textarea"
  1036. ></el-input>
  1037. </el-form-item>
  1038. <el-form-item
  1039. v-if="data.type == '疾病'"
  1040. label="并发症:"
  1041. prop="description"
  1042. class="marT"
  1043. >
  1044. <el-input
  1045. v-model.trim="klDiseaseVO.complication"
  1046. maxlength="500"
  1047. placeholder="请输入"
  1048. :autosize="{ minRows: 1, maxRows: 3 }"
  1049. type="textarea"
  1050. ></el-input>
  1051. </el-form-item>
  1052. <el-form-item
  1053. v-if="data.type == '疾病'"
  1054. label="临床分类:"
  1055. prop="description"
  1056. class="marT"
  1057. >
  1058. <el-input
  1059. v-model.trim="klDiseaseVO.clinicType"
  1060. maxlength="500"
  1061. placeholder="请输入"
  1062. :autosize="{ minRows: 1, maxRows: 3 }"
  1063. type="textarea"
  1064. ></el-input>
  1065. </el-form-item>
  1066. <el-form-item
  1067. v-if="data.type == '疾病'"
  1068. label="病因:"
  1069. prop="description"
  1070. class="marT"
  1071. >
  1072. <el-input
  1073. v-model.trim="klDiseaseVO.pathogeny"
  1074. maxlength="500"
  1075. placeholder="请输入"
  1076. :autosize="{ minRows: 1, maxRows: 3 }"
  1077. type="textarea"
  1078. ></el-input>
  1079. </el-form-item>
  1080. <el-form-item
  1081. v-if="data.type == '疾病'"
  1082. label="危险因素:"
  1083. prop="description"
  1084. class="marT"
  1085. >
  1086. <el-input
  1087. v-model.trim="klDiseaseVO.hazard"
  1088. maxlength="500"
  1089. placeholder="请输入"
  1090. :autosize="{ minRows: 1, maxRows: 3 }"
  1091. type="textarea"
  1092. ></el-input>
  1093. </el-form-item>
  1094. <el-form-item
  1095. v-if="data.type == '疾病'"
  1096. label="饮食禁忌:"
  1097. prop="description"
  1098. class="marT"
  1099. >
  1100. <el-input
  1101. v-model.trim="klDiseaseVO.foodProhibition"
  1102. maxlength="500"
  1103. placeholder="请输入"
  1104. :autosize="{ minRows: 1, maxRows: 3 }"
  1105. type="textarea"
  1106. ></el-input>
  1107. </el-form-item>
  1108. <el-form-item
  1109. v-if="
  1110. data.type == '实验室检查套餐' || data.type == '实验室检查子项目'
  1111. "
  1112. label="英文缩写:"
  1113. prop="description"
  1114. class="marT"
  1115. >
  1116. <div-editable
  1117. v-if="hackReset"
  1118. v-model="klLisVO.enName"
  1119. :Maincontent="'enName'"
  1120. title="请输入"
  1121. ></div-editable>
  1122. </el-form-item>
  1123. <el-form-item
  1124. v-if="
  1125. data.type == '实验室检查套餐' || data.type == '实验室检查子项目'
  1126. "
  1127. label="所属类别:"
  1128. prop="description"
  1129. class="marT"
  1130. >
  1131. <div-editable
  1132. v-if="hackReset"
  1133. v-model="klLisVO.category"
  1134. :Maincontent="'category'"
  1135. title="请输入"
  1136. ></div-editable>
  1137. </el-form-item>
  1138. <el-form-item
  1139. v-if="
  1140. data.type == '实验室检查套餐' || data.type == '实验室检查子项目'
  1141. "
  1142. label="检查标本:"
  1143. prop="description"
  1144. class="marT"
  1145. >
  1146. <div-editable
  1147. v-if="hackReset"
  1148. v-model="klLisVO.checkSpecimen"
  1149. :Maincontent="'checkSpecimen'"
  1150. title="请输入"
  1151. ></div-editable>
  1152. </el-form-item>
  1153. <el-form-item
  1154. v-if="
  1155. data.type == '实验室检查套餐' || data.type == '实验室检查子项目'
  1156. "
  1157. label="临床意义:"
  1158. prop="description"
  1159. class="marT"
  1160. >
  1161. <el-input
  1162. v-model.trim="klLisVO.clinicalSig"
  1163. maxlength="500"
  1164. placeholder="请输入"
  1165. :autosize="{ minRows: 1, maxRows: 3 }"
  1166. type="textarea"
  1167. ></el-input>
  1168. </el-form-item>
  1169. <el-form-item
  1170. v-if="
  1171. data.type == '实验室检查套餐' || data.type == '实验室检查子项目'
  1172. "
  1173. label="影响因素:"
  1174. prop="description"
  1175. class="marT"
  1176. >
  1177. <el-input
  1178. v-model.trim="klLisVO.influenceFac"
  1179. maxlength="500"
  1180. placeholder="请输入"
  1181. :autosize="{ minRows: 1, maxRows: 3 }"
  1182. type="textarea"
  1183. ></el-input>
  1184. </el-form-item>
  1185. <el-form-item
  1186. v-if="
  1187. data.type == '实验室检查套餐' || data.type == '实验室检查子项目'
  1188. "
  1189. label="检查方法:"
  1190. prop="description"
  1191. class="marT"
  1192. >
  1193. <el-input
  1194. v-model.trim="klLisVO.checkMethod"
  1195. maxlength="500"
  1196. placeholder="请输入"
  1197. :autosize="{ minRows: 1, maxRows: 3 }"
  1198. type="textarea"
  1199. ></el-input>
  1200. </el-form-item>
  1201. <el-form-item
  1202. v-if="data.type == '体格检查结果'"
  1203. label="科室:"
  1204. prop="description"
  1205. class="marT"
  1206. >
  1207. <searchTerm
  1208. v-if="hackReset"
  1209. :refbool.sync="klVitalResultVO.deptList"
  1210. :id="id"
  1211. :type="115"
  1212. ></searchTerm>
  1213. </el-form-item>
  1214. <el-form-item
  1215. v-if="data.type == '体格检查结果'"
  1216. label="部位:"
  1217. prop="description"
  1218. class="marT"
  1219. >
  1220. <searchTerm
  1221. v-if="hackReset"
  1222. :refbool.sync="klVitalResultVO.partList"
  1223. :id="id"
  1224. :type="122"
  1225. ></searchTerm>
  1226. </el-form-item>
  1227. <el-form-item
  1228. v-if="data.type == '体格检查结果'"
  1229. label="不适宜人群:"
  1230. prop="description"
  1231. class="marT"
  1232. >
  1233. <div-editable
  1234. v-if="hackReset"
  1235. v-model="klVitalResultVO.suitablePopNo"
  1236. :Maincontent="'Maincontent1'"
  1237. title="请输入"
  1238. ></div-editable>
  1239. </el-form-item>
  1240. <el-form-item
  1241. v-if="data.type == '体格检查结果'"
  1242. label="操作方法:"
  1243. prop="description"
  1244. class="marT"
  1245. >
  1246. <el-input
  1247. v-model.trim="klVitalResultVO.checkMethod"
  1248. maxlength="500"
  1249. placeholder="请输入"
  1250. :autosize="{ minRows: 1, maxRows: 3 }"
  1251. type="textarea"
  1252. ></el-input>
  1253. </el-form-item>
  1254. <el-form-item
  1255. v-if="data.type == '手术和操作'"
  1256. label="级别分类:"
  1257. prop="description"
  1258. class="marT"
  1259. >
  1260. <el-select
  1261. v-model="klOperationVO.operationLevel"
  1262. placeholder="请选择"
  1263. >
  1264. <el-option
  1265. v-for="item in operationLevelList"
  1266. :key="item.id"
  1267. :label="item.label"
  1268. :value="item.id"
  1269. ></el-option>
  1270. </el-select>
  1271. </el-form-item>
  1272. <el-form-item
  1273. v-if="data.type == '手术和操作'"
  1274. label="手术操作代码:"
  1275. prop="description"
  1276. class="marT"
  1277. >
  1278. <div-editable
  1279. v-if="hackReset"
  1280. v-model="klOperationVO.operationCode"
  1281. :Maincontent="'Maincontent'"
  1282. title="请输入"
  1283. ></div-editable>
  1284. </el-form-item>
  1285. <el-form-item
  1286. v-if="data.type == '中医疾病'"
  1287. label="代码:"
  1288. class="marT"
  1289. >
  1290. <el-input
  1291. style="width: 300px"
  1292. v-model.trim="klTcmDiseaseVO.code"
  1293. maxlength="30"
  1294. placeholder="请输入"
  1295. ></el-input>
  1296. </el-form-item>
  1297. <el-form-item
  1298. v-if="data.type == '中医证候'"
  1299. label="代码:"
  1300. class="marT"
  1301. >
  1302. <el-input
  1303. style="width: 300px"
  1304. v-model.trim="klTcmSyndromeVO.code"
  1305. maxlength="30"
  1306. placeholder="请输入"
  1307. ></el-input>
  1308. </el-form-item>
  1309. <!-- <el-form-item
  1310. v-if="data.type=='症状'"
  1311. label="填写单患者界面展示通俗内容:"
  1312. prop="description"
  1313. class="marT description"
  1314. >
  1315. <span class="necess">*</span>
  1316. <el-input v-model.trim="description" maxlength="7" placeholder="请输入填写单患者界面展示通俗内容"></el-input>
  1317. </el-form-item>-->
  1318. <!-- <el-form-item v-if="data.type=='症状'" label="医学教育说明:" prop="explains" class="marT">
  1319. <el-input
  1320. type="textarea"
  1321. v-model.trim="explains"
  1322. maxlength="100"
  1323. style="width: 500px;"
  1324. :rows="4"
  1325. ></el-input>
  1326. </el-form-item>-->
  1327. </el-form>
  1328. </div>
  1329. <div class="btn">
  1330. <el-button
  1331. type="primary"
  1332. :disabled="saveDisable"
  1333. @click="handleConfirm"
  1334. >确 定</el-button
  1335. >
  1336. </div>
  1337. </div>
  1338. </div>
  1339. </div>
  1340. </template>
  1341. <script type="text/javascript">
  1342. import DivEditable from "./DivEditable";
  1343. import searchTerm from "./searchTerm";
  1344. import api from "@api/knowledgeTree.js";
  1345. import pinyin from "../../js/Convert_Pinyin.js";
  1346. import utils from "@api/utils.js";
  1347. import SimilarListDrag from "./SimilarListDrag";
  1348. export default {
  1349. name: "AddMedicalName",
  1350. data() {
  1351. return {
  1352. radio: 1,
  1353. minTitle: "基础术语维护-添加",
  1354. hackReset: true,
  1355. drugGradeList: [
  1356. //药品级别相关数据
  1357. { label: "非限制使用级", value: 0 },
  1358. { label: "限制使用级", value: 1 },
  1359. { label: "特殊使用级", value: 2 },
  1360. ],
  1361. data: {
  1362. libName: "",
  1363. type: "",
  1364. libType: "",
  1365. remark: "",
  1366. isConcept: 1,
  1367. spell: "",
  1368. libId: "",
  1369. isHasCommon: "",
  1370. },
  1371. klDrugVO: {
  1372. drug: "",
  1373. drugC: "",
  1374. drugGrade: "", //药品级别
  1375. },
  1376. klOperationVO: {
  1377. conceptId: null,
  1378. remark: null,
  1379. operationLevel: 0, //手术级别
  1380. operationCode: "", //手术操作码
  1381. },
  1382. klVitalResultVO: {
  1383. conceptId: null,
  1384. remark: null,
  1385. deptList: [], //科室
  1386. partList: [], //部位
  1387. suitablePopNo: "", //不适宜人群
  1388. checkMethod: "", //操作方法
  1389. },
  1390. klPacsVO: {
  1391. checkMethod: "", //检查方法
  1392. definition: "", //项目定义
  1393. checkObjective: "", //检查目的
  1394. checkSkillful: "", //检查技术
  1395. condLimit: "", //禁忌症和局限性
  1396. interventional: "", //适应症
  1397. emergencySign: 0, //危急标识(0:不危急,1:危急)
  1398. checkPrepare: "", //检查前准备
  1399. remark: "", //备注
  1400. },
  1401. klLisVO: {
  1402. minValue: null, //最小值
  1403. maxValue: null, //最大值
  1404. unit: "",
  1405. checkSpecimen: "", //检查标本
  1406. checkMethod: "", //检查方法
  1407. influenceFac: "", //影响因素
  1408. clinicalSig: "", //临床意义
  1409. qualitative: "", //定性(阴、阳性)
  1410. category: "", //所属类别
  1411. enName: "", //英文名称
  1412. remark: "", //备注
  1413. type: 1,
  1414. },
  1415. klSymptomVO: {
  1416. isPositive: 1,
  1417. enName: "", //英文名称
  1418. definition: "", //定义
  1419. chWestern: "", //中西医症状(0:通用,1:西,2:中)
  1420. mitigatingFac: "", //缓解因素
  1421. aggravateFac: "", //加重因素
  1422. cause: "", //症状起因
  1423. commonDis: "", //常见疾病
  1424. preMeasures: "", //预防措施
  1425. foodProhibition: "", //饮食禁忌
  1426. commonExplain: "", //通俗解释
  1427. remark: "", //备注
  1428. deptList: [], //科室列表
  1429. partList: [], //发病部位
  1430. conSymptomList: [], //常见伴随症状
  1431. natureList: [], //性质
  1432. },
  1433. klDiseaseVO: {
  1434. icd10Code: "", //ICD10编号
  1435. guoname: "", //国临版名称
  1436. guocode: "", //国临版编码
  1437. guospell: "", //国临版拼音
  1438. course: "", //病程
  1439. inducement: "", //诱因
  1440. foodProhibition: "", //饮食禁忌
  1441. hazard: "", //危险因素
  1442. healing: "", //治愈性
  1443. pernicious: "", //危害性
  1444. clinicType: "", //临床分类
  1445. vulArea: "", //好发地区
  1446. vulCrowd: "", //好发人群
  1447. incidence: "", //发病率
  1448. isInfect: 0, //是否传染(0:否,1:是)
  1449. complication: "", //并发症
  1450. pathogeny: "", //病因
  1451. disType: "", //疾病分型
  1452. chWestern: "", //中西医疾病(0:通用,1:西,2:中)
  1453. isCommonDis: 1, //是否常见病(0:否,1:是)
  1454. isHeredity: 0, //是否遗传(0:否,1:是)
  1455. nameSimple: "", //简称
  1456. enNameSimple: "", //英文简称
  1457. enName: "", //英文名称
  1458. remark: "", //备注
  1459. tumorCellType: "", //肿瘤细胞类型
  1460. morphology: "", //形态学分类代码
  1461. deptList: [], //科室列表
  1462. partList: [], //部位列表
  1463. systemTypeList: [], //疾病系统分类列表
  1464. infectClassification: "", //传染病分类
  1465. infectDeadline: "", //传染病上报时限
  1466. },
  1467. klTcmDiseaseVO: {
  1468. code: "",
  1469. },
  1470. klTcmSyndromeVO: {
  1471. code: "",
  1472. },
  1473. operationLevelList: [
  1474. {
  1475. id: "0",
  1476. label: "0",
  1477. },
  1478. {
  1479. id: "1",
  1480. label: "1",
  1481. },
  1482. {
  1483. id: "2",
  1484. label: "2",
  1485. },
  1486. {
  1487. id: "3",
  1488. label: "3",
  1489. },
  1490. {
  1491. id: "4",
  1492. label: "4",
  1493. },
  1494. ],
  1495. typeList: [],
  1496. id: "",
  1497. synonymous: [], //同义词
  1498. singleword: [],
  1499. allwords: [], //标准词和同义词
  1500. colspan: 5,
  1501. colspans: 6,
  1502. currentPage: 1,
  1503. pageSize: 10,
  1504. tmpSynonymous: [],
  1505. sexType: 3,
  1506. maxAge: 200,
  1507. minAge: 0,
  1508. maxValue: null,
  1509. minValue: null,
  1510. showMore: "",
  1511. sex: [
  1512. {
  1513. name: "通用",
  1514. value: 3,
  1515. },
  1516. {
  1517. name: "男",
  1518. value: 1,
  1519. },
  1520. {
  1521. name: "女",
  1522. value: 2,
  1523. },
  1524. ],
  1525. range: [
  1526. {
  1527. name: "内",
  1528. value: 1,
  1529. },
  1530. {
  1531. name: "外",
  1532. value: 2,
  1533. },
  1534. ],
  1535. unfit: false, //点确认时是否弹提示,
  1536. guounfix: false, //国临版名称是否符合要求
  1537. saveDisable: false, //保存按钮禁止点击
  1538. options: [],
  1539. copy: null,
  1540. drugTypeList: [
  1541. { val: 0, name: "西药" },
  1542. { val: 1, name: "中成药" },
  1543. ], //药品类型
  1544. drug: "",
  1545. dioTypeList: [], //更多信息-类型
  1546. dioType: "", //默认展示一类
  1547. deptList: [], //更多信息-科室
  1548. deptListArr: [], //科室信息分组
  1549. dept: "", //默认展示全科
  1550. similarList: [], //相似词列表
  1551. searchIndex: -1, //展示哪个的同义词
  1552. searchType: "",
  1553. description: "",
  1554. explains: "",
  1555. composing: false,
  1556. critical: "", //危急标识
  1557. conceptList: [],
  1558. };
  1559. },
  1560. created() {
  1561. this.getTypeList();
  1562. const id = this.$route.params.id;
  1563. const libType = this.$route.params.libType;
  1564. const copy = this.$route.params.copy || "";
  1565. this.copy = copy;
  1566. if (id) {
  1567. this.minTitle = copy ? "基础术语维护-复制" : "基础术语维护-修改";
  1568. this.id = id;
  1569. this.colspan = 5;
  1570. this.getDetail(id, libType);
  1571. }
  1572. },
  1573. methods: {
  1574. changeRadio() {
  1575. this.klLisVO.maxValue = null;
  1576. this.klLisVO.minValue = null;
  1577. this.klLisVO.qualitative = "";
  1578. this.klLisVO.unit = "";
  1579. },
  1580. //获取科室
  1581. searchConcept(val) {
  1582. const param = {
  1583. excludedConceptIds: [],
  1584. libType: "115",
  1585. name: val,
  1586. };
  1587. api
  1588. .searchConcept(param)
  1589. .then((res) => {
  1590. if (res.data.code == "0") {
  1591. const data = res.data.data;
  1592. this.conceptList = data;
  1593. }
  1594. })
  1595. .catch((error) => {
  1596. console.log(error);
  1597. });
  1598. },
  1599. clearDataCi() {
  1600. this.data.libType = "";
  1601. },
  1602. dragAdd(ev) {
  1603. utils.dragBox("dragModalWrap", "dragModalTitle", "add");
  1604. },
  1605. dragDel() {
  1606. utils.dragBox("dragModalWrap", "dragModalTitle", "del");
  1607. },
  1608. closeTable() {
  1609. this.searchType = "";
  1610. this.similarList = [];
  1611. },
  1612. // 诊断类型下--更多信息-类型
  1613. getDioType(flag) {
  1614. api.getknowledgeList().then((res) => {
  1615. const data = res.data;
  1616. if (data.code == 0) {
  1617. this.dioTypeList = data.data[2];
  1618. // 修改时无需赋值
  1619. if (!flag) {
  1620. this.dioType = this.dioTypeList[0].val;
  1621. }
  1622. }
  1623. });
  1624. },
  1625. // 诊断类型下--更多信息-科室
  1626. getDdeptList(conptId) {
  1627. api.getDeptList({ type: 1 }).then((res) => {
  1628. const data = res.data;
  1629. if (data.code == 0) {
  1630. this.deptList = data.data;
  1631. if (!conptId) {
  1632. this.dept = "全科"; //默认展示全科
  1633. } else {
  1634. // 科室id转成name显示
  1635. this.deptList.map((v, i) => {
  1636. if (v.conceptId == conptId) {
  1637. this.dept = v.name;
  1638. }
  1639. });
  1640. }
  1641. const total = this.deptList.length;
  1642. const average = parseInt(total / 3);
  1643. const mod = total % 3; //余数
  1644. const firstGroup = this.deptList.slice(0, average);
  1645. let secGroup = [];
  1646. let thirdGroup = [];
  1647. let tempArr = [];
  1648. if (mod == 2) {
  1649. secGroup = this.deptList.slice(average, average * 2 + 1);
  1650. thirdGroup = this.deptList.slice(average * 2 + 1, total);
  1651. } else {
  1652. secGroup = this.deptList.slice(average, average * 2);
  1653. thirdGroup = this.deptList.slice(average * 2, total);
  1654. }
  1655. tempArr.push(
  1656. { label: 1, deptList: firstGroup },
  1657. { label: 2, deptList: secGroup },
  1658. { label: 3, deptList: thirdGroup }
  1659. );
  1660. this.deptListArr = tempArr;
  1661. }
  1662. });
  1663. },
  1664. reViewData(data) {
  1665. let tmpObj = [
  1666. {
  1667. isConcept: data.isConcept,
  1668. libName: data.libName,
  1669. remark: data.remark,
  1670. spell: data.spell,
  1671. type: data.typeName,
  1672. conceptId: this.copy ? "" : data.conceptId,
  1673. libId: this.copy ? "" : data.libId,
  1674. isHasCommon: data.isHasCommon,
  1675. synonymName: data.synonymName,
  1676. status: data.status,
  1677. libType: data.libType,
  1678. },
  1679. ];
  1680. for (let i = 0; i < data.klConceptSub.length; i++) {
  1681. let tmp = data.klConceptSub[i];
  1682. tmp.libName = tmp.synonymName;
  1683. tmp.type = tmp.typeName;
  1684. tmp.libType = tmp.libType;
  1685. }
  1686. data.libName = tmpObj;
  1687. data.otherNames = data.klConceptSub;
  1688. return data;
  1689. },
  1690. getDetail(ids, libType) {
  1691. if (ids) {
  1692. api
  1693. .getBaseConceptAll({ conceptId: ids, libType: libType })
  1694. .then((res) => {
  1695. const result = res.data;
  1696. let redata = this.reViewData(result.data);
  1697. if (result.code == 0) {
  1698. this.data = redata.libName[0];
  1699. this.klOperationVO = redata.klOperationDTO
  1700. ? redata.klOperationDTO
  1701. : this.klOperationVO;
  1702. this.klVitalResultVO = redata.klVitalResultDTO
  1703. ? redata.klVitalResultDTO
  1704. : this.klVitalResultVO;
  1705. this.klPacsVO = redata.klPacsDTO
  1706. ? redata.klPacsDTO
  1707. : this.klPacsVO;
  1708. this.klLisVO = redata.klLisDTO ? redata.klLisDTO : this.klLisVO;
  1709. this.klSymptomVO = redata.klSymptomDTO
  1710. ? redata.klSymptomDTO
  1711. : this.klSymptomVO;
  1712. this.klDiseaseVO = redata.klDiseaseDTO
  1713. ? redata.klDiseaseDTO
  1714. : this.klDiseaseVO;
  1715. this.radio = this.klLisVO.qualitative == "" ? 1 : 2;
  1716. this.klTcmDiseaseVO = redata.klTcmDiseaseDTO
  1717. ? redata.klTcmDiseaseDTO
  1718. : this.klTcmDiseaseVO;
  1719. this.klTcmSyndromeVO = redata.klTcmSyndromeDTO
  1720. ? redata.klTcmSyndromeDTO
  1721. : this.klTcmSyndromeVO;
  1722. this.klDrugVO = redata.klDrugDTO
  1723. ? redata.klDrugDTO
  1724. : this.klDrugVO;
  1725. this.singleword = redata.libName;
  1726. this.synonymous = redata.otherNames;
  1727. this.allwords = redata.libName.concat(redata.otherNames);
  1728. this.showMore = redata.isHasCommon; //是否支持通用扩展
  1729. this.maxAge = redata.maxAge;
  1730. this.minAge = redata.minAge;
  1731. this.maxValue = redata.maxVal;
  1732. this.minValue = redata.minVal;
  1733. this.description = redata.description;
  1734. this.explains = redata.explains;
  1735. this.drug = redata.drug;
  1736. this.drugC = redata.drugC;
  1737. // console.log("redata.drugC:", redata.drugC);
  1738. // console.log("sexType:", result.data.sexType);
  1739. this.sexType = result.data.sexType;
  1740. if (type == "诊断") {
  1741. this.dioType = redata.classify || "Ⅰ"; //类型,默认展示Ⅰ类
  1742. const deptConptId = redata.deptId;
  1743. this.getDioType(true);
  1744. this.getDdeptList(deptConptId);
  1745. }
  1746. // this.sexType = result.data.sexType;
  1747. // let sexType = redata.sexType;
  1748. // this.sex.map((v, i) => {
  1749. // if (v.value == sexType) {
  1750. // this.sexType = v.name;
  1751. // }
  1752. // });
  1753. } else {
  1754. this.$message({
  1755. message: result.msg,
  1756. type: "warning",
  1757. });
  1758. }
  1759. });
  1760. }
  1761. },
  1762. getTypeList() {
  1763. api
  1764. .baseTypeGetPage({ name: "", size: 1000 })
  1765. .then((res) => {
  1766. const data = res.data;
  1767. if (data.code == 0) {
  1768. let types = data.data.records;
  1769. this.typeList = types;
  1770. // 类型改成平铺
  1771. this.options.push({ label: 1, options: types });
  1772. // this.typeList = data.data;
  1773. /*if (types.length > 0) {
  1774. const total = types.length;
  1775. const average = parseInt(total / 3);
  1776. const mod = total % 3; //余数
  1777. const firstGroup = types.slice(0, average);
  1778. let secGroup = [];
  1779. let thirdGroup = [];
  1780. if (mod == 2) {
  1781. secGroup = types.slice(average, average * 2 + 1);
  1782. thirdGroup = types.slice(average * 2 + 1, total);
  1783. } else {
  1784. secGroup = types.slice(average, average * 2);
  1785. thirdGroup = types.slice(average * 2, total);
  1786. }
  1787. this.options.push(
  1788. { label: 1, options: firstGroup },
  1789. { label: 2, options: secGroup },
  1790. { label: 3, options: thirdGroup }
  1791. );
  1792. }*/
  1793. } else {
  1794. this.$message({
  1795. message: data.msg,
  1796. type: "warning",
  1797. });
  1798. }
  1799. })
  1800. .catch((error) => {
  1801. console.log(error);
  1802. });
  1803. },
  1804. handleBlurGuo() {
  1805. const pattern = /[^0-9]/g;
  1806. if (this.klDiseaseVO.guoname && !pattern.test(this.klDiseaseVO.guoname)) {
  1807. this.$message({
  1808. message: "无法输入纯数字,请输入正确数据!",
  1809. type: "warning",
  1810. });
  1811. this.guounfix = true;
  1812. } else {
  1813. let data = this.klDiseaseVO;
  1814. data.guospell = pinyin.getCamelChars(data.guoname);
  1815. this.guounfix = false;
  1816. }
  1817. },
  1818. handleBlur(type, index, flg) {
  1819. // 不能为纯数字、纯字符、纯数字加字符 4-18
  1820. // const pattern = /[^~@#$%^&*_\-+=,,.。::"“??”;;、!!0-9]/g;
  1821. // 需求更改:不能为纯数字,其余均可输入 5-20
  1822. const pattern = /[^0-9]/g;
  1823. if (type == 1) {
  1824. //标准词输入
  1825. if (this.data.libName && !pattern.test(this.data.libName)) {
  1826. this.$message({
  1827. // message:'无法输入纯数字或者纯字符,请输入正确数据!',
  1828. message: "无法输入纯数字,请输入正确数据!",
  1829. type: "warning",
  1830. });
  1831. // this.data.libName = '';
  1832. this.unfit = true;
  1833. } else {
  1834. let data = this.data;
  1835. data.spell = pinyin.getCamelChars(data.libName);
  1836. this.unfit = false;
  1837. this.searchType = "standard";
  1838. this.getSimilarList(this.data.libName);
  1839. }
  1840. } else if (type == 2) {
  1841. // 修改时术语名称、拼音和类型均不能修改
  1842. if (flg == 99) {
  1843. // if(this.synonymous[index-1].name && !pattern.test(this.synonymous[index-1].name)){
  1844. if (
  1845. this.allwords[index].libName &&
  1846. !pattern.test(this.allwords[index].libName)
  1847. ) {
  1848. this.$message({
  1849. message: "无法输入纯数字,请输入正确数据!",
  1850. type: "warning",
  1851. });
  1852. // this.synonymous[index-1].name = '';
  1853. this.unfit = true;
  1854. } else {
  1855. // let current = this.synonymous[index-1];
  1856. let current = this.allwords[index];
  1857. current.spell = pinyin.getCamelChars(current.libName);
  1858. this.unfit = false;
  1859. this.searchType = "standard";
  1860. this.searchIndex = index;
  1861. this.getSimilarList(this.allwords[index].libName);
  1862. }
  1863. } else {
  1864. if (
  1865. this.synonymous[index].libName &&
  1866. !pattern.test(this.synonymous[index].libName)
  1867. ) {
  1868. this.$message({
  1869. message: "无法输入纯数字,请输入正确数据!",
  1870. type: "warning",
  1871. });
  1872. // this.synonymous[index].name = '';
  1873. this.unfit = true;
  1874. } else {
  1875. let current = this.synonymous[index];
  1876. current.spell = pinyin.getCamelChars(current.libName);
  1877. this.unfit = false;
  1878. this.searchType = "similar";
  1879. this.searchIndex = index;
  1880. this.getSimilarList(current.libName);
  1881. }
  1882. }
  1883. }
  1884. },
  1885. handlePinyin(e, flag, index) {
  1886. //只能输入英文
  1887. e.target.value = e.target.value.replace(/[^a-zA-Z]/g, "");
  1888. // 解决输入数字不触发更新
  1889. if (flag == 1) {
  1890. //标准词
  1891. this.data.spell = e.target.value;
  1892. } else if (flag == 2) {
  1893. //同义词-修改
  1894. this.allwords[index].spell = e.target.value;
  1895. } else if (flag == 3) {
  1896. //同义词-新增
  1897. this.synonymous[index].spell = e.target.value;
  1898. }
  1899. // e.target.value = e.target.value.replace(/[^a-zA-Z]/g,'');
  1900. },
  1901. getSimilarList(name) {
  1902. //不知道还有没有用
  1903. return;
  1904. if (!name) {
  1905. this.closeTable();
  1906. return;
  1907. }
  1908. const param = {
  1909. inputStr: name,
  1910. };
  1911. api.getSimilarList(param).then((res) => {
  1912. this.similarList = res.data.data;
  1913. });
  1914. },
  1915. addSpan(type) {
  1916. let singleSpan = {
  1917. libName: "",
  1918. remark: "",
  1919. isConcept: 0,
  1920. isEdit: true,
  1921. spell: null,
  1922. };
  1923. if (type == 55) {
  1924. this.allwords.push(singleSpan);
  1925. this.synonymous.push(singleSpan);
  1926. } else {
  1927. this.synonymous.push(singleSpan);
  1928. }
  1929. },
  1930. warning(msg, type) {
  1931. this.$message({
  1932. showClose: true,
  1933. message: msg,
  1934. type: type || "warning",
  1935. });
  1936. },
  1937. showConfirmDialog(msg, resolve) {
  1938. this.$alert(msg, "提示", {
  1939. confirmButtonText: "确定",
  1940. type: "warning",
  1941. })
  1942. .then(() => {
  1943. resolve();
  1944. })
  1945. .catch(() => {});
  1946. },
  1947. deleLine(index, type, item) {
  1948. // 只在界面删除数据,待点确认 后参才真正删除
  1949. if (type == 55) {
  1950. const { libId } = item;
  1951. if (libId) {
  1952. api.clearConceptInfo({ libId }).then((res) => {
  1953. const result = res.data;
  1954. if (result.code == 0) {
  1955. this.synonymous.splice(index - 1, 1);
  1956. this.allwords.splice(index, 1);
  1957. }
  1958. });
  1959. } else {
  1960. this.synonymous.splice(index - 1, 1);
  1961. this.allwords.splice(index, 1);
  1962. }
  1963. } else {
  1964. this.synonymous.splice(index, 1);
  1965. }
  1966. },
  1967. // 保存基础术语
  1968. handleConfirm(flg) {
  1969. // console.log(this.synonymous);
  1970. if (!this.data.libName) {
  1971. this.warning("请输入医学标准术语名称");
  1972. return;
  1973. }
  1974. if (!this.data.libType && !this.unfit && !this.data.type) {
  1975. this.warning("请选择术语类型");
  1976. return;
  1977. }
  1978. if (this.guounfix) {
  1979. this.warning("ICD10国临版名称不能为纯数字");
  1980. return;
  1981. }
  1982. // 年龄为必填项--2019-6-5需求
  1983. if (this.showMore == 1) {
  1984. if ((!this.minAge && this.minAge !== 0) || !this.maxAge) {
  1985. this.warning("年龄不能为空,区间为0-200");
  1986. return;
  1987. }
  1988. if (
  1989. this.minAge < 0 ||
  1990. this.minAge > 200 ||
  1991. this.maxAge < 0 ||
  1992. this.maxAge > 200
  1993. ) {
  1994. this.warning("年龄必须是0-200");
  1995. return;
  1996. }
  1997. if (this.minAge >= this.maxAge) {
  1998. this.warning("年龄最小值应该小于最大值");
  1999. return;
  2000. }
  2001. if (this.data.type == "实验室检查子项目") {
  2002. if (
  2003. this.minValue < 0 ||
  2004. this.minValue > 99999 ||
  2005. this.maxValue < 0 ||
  2006. this.maxValue > 99999
  2007. ) {
  2008. this.warning("取值范围必须是0-99999切单位不能为空");
  2009. return;
  2010. }
  2011. if (
  2012. this.minValue &&
  2013. this.maxValue &&
  2014. this.minValue >= this.maxValue
  2015. ) {
  2016. this.warning("最小值应该小于最大值");
  2017. return;
  2018. }
  2019. }
  2020. }
  2021. if (
  2022. this.data.type == "药品通用名" &&
  2023. (this.klDrugVO.drug === "" || this.klDrugVO.drug === null)
  2024. ) {
  2025. this.warning("请选择药品类型");
  2026. return;
  2027. }
  2028. // 过滤同义词空数据
  2029. let realData = [];
  2030. if (this.id) {
  2031. //修改用暂存的列表
  2032. realData = this.synonymous.filter((item) => {
  2033. return item.libName;
  2034. });
  2035. let tmpArr = [];
  2036. for (let k = 0; k < realData.length; k++) {
  2037. if (realData[k].isConcept == 1) {
  2038. let tmpdata = JSON.parse(JSON.stringify(this.data));
  2039. tmpArr.push(realData[k]);
  2040. realData.splice(k, 1);
  2041. tmpdata.isConcept = 0;
  2042. realData.push(tmpdata);
  2043. this.data = tmpArr[0];
  2044. }
  2045. }
  2046. } else {
  2047. realData = this.synonymous.filter((item) => {
  2048. return item.libName;
  2049. });
  2050. }
  2051. let detailList = [];
  2052. for (let i = 0; i < realData.length; i++) {
  2053. let obj = {};
  2054. realData[i].synonymName = realData[i].libName;
  2055. realData[i].conceptId = undefined;
  2056. realData[i].status = undefined;
  2057. realData[i].libType = this.data.libType;
  2058. if (this.copy) {
  2059. realData[i].libId = undefined;
  2060. }
  2061. // obj.isConcept=realData[i].isConcept
  2062. // obj.remark=realData[i].remark
  2063. // obj.spell=realData[i].spell
  2064. detailList.push(realData[i]);
  2065. // detailList.push(obj);
  2066. }
  2067. // 校验是否有名称全为数字
  2068. const pattern = /[^0-9]/g;
  2069. const tmpData = this.data.libName;
  2070. if (tmpData && !tmpData.match(pattern)) {
  2071. this.$message({
  2072. message: "无法输入纯数字,请输入正确数据!",
  2073. type: "warning",
  2074. });
  2075. return false;
  2076. }
  2077. for (let d = 0; d < detailList.length; d++) {
  2078. let dname = detailList[d].name;
  2079. // if(detailList[d].name && !pattern.test(detailList[d].name)){
  2080. if (dname && !dname.match(pattern)) {
  2081. if (!this.unfit) {
  2082. //避免和失焦事件同事弹出
  2083. this.$message({
  2084. message: "无法输入纯数字,请输入正确数据!",
  2085. type: "warning",
  2086. });
  2087. }
  2088. this.unfit = false;
  2089. return false;
  2090. break;
  2091. }
  2092. }
  2093. // if (this.data.type == '症状' && !this.description) {
  2094. // this.warning('请输入填写单患者界面展示通俗内容');
  2095. // return;
  2096. // }
  2097. let params;
  2098. let sexCode = this.sexType;
  2099. params =
  2100. this.data.libType == 106
  2101. ? {
  2102. ...this.data,
  2103. klOperationVO: this.klOperationVO,
  2104. klConceptSub: detailList || [],
  2105. sexType: sexCode,
  2106. maxAge: this.maxAge,
  2107. minAge: this.minAge,
  2108. status: this.data.status || 1,
  2109. }
  2110. : this.data.libType == 105
  2111. ? {
  2112. ...this.data,
  2113. klVitalResultVO: this.klVitalResultVO,
  2114. klConceptSub: detailList || [],
  2115. sexType: sexCode,
  2116. maxAge: this.maxAge,
  2117. minAge: this.minAge,
  2118. status: this.data.status || 1,
  2119. }
  2120. : this.data.libType == 110 || this.data.libType == 109
  2121. ? {
  2122. ...this.data,
  2123. klPacsVO: this.klPacsVO,
  2124. klConceptSub: detailList || [],
  2125. sexType: sexCode,
  2126. maxAge: this.maxAge,
  2127. minAge: this.minAge,
  2128. status: this.data.status || 1,
  2129. }
  2130. : this.data.libType == 107
  2131. ? {
  2132. ...this.data,
  2133. klLisVO: this.klLisVO,
  2134. klConceptSub: detailList || [],
  2135. sexType: sexCode,
  2136. maxAge: this.maxAge,
  2137. minAge: this.minAge,
  2138. status: this.data.status || 1,
  2139. }
  2140. : this.data.libType == 108
  2141. ? {
  2142. ...this.data,
  2143. klLisVO: this.klLisVO,
  2144. klConceptSub: detailList || [],
  2145. sexType: sexCode,
  2146. maxAge: this.maxAge,
  2147. minAge: this.minAge,
  2148. status: this.data.status || 1,
  2149. }
  2150. : this.data.libType == 103
  2151. ? {
  2152. ...this.data,
  2153. klSymptomVO: this.klSymptomVO,
  2154. klConceptSub: detailList || [],
  2155. sexType: sexCode,
  2156. maxAge: this.maxAge,
  2157. minAge: this.minAge,
  2158. status: this.data.status || 1,
  2159. }
  2160. : this.data.libType == 100
  2161. ? {
  2162. ...this.data,
  2163. klDiseaseVO: this.klDiseaseVO,
  2164. klConceptSub: detailList || [],
  2165. sexType: sexCode,
  2166. maxAge: this.maxAge,
  2167. minAge: this.minAge,
  2168. status: this.data.status || 1,
  2169. }
  2170. : this.data.libType == 127
  2171. ? {
  2172. ...this.data,
  2173. klTcmDiseaseVO: this.klTcmDiseaseVO,
  2174. klConceptSub: detailList || [],
  2175. sexType: sexCode,
  2176. maxAge: this.maxAge,
  2177. minAge: this.minAge,
  2178. status: this.data.status || 1,
  2179. }
  2180. : this.data.libType == 128
  2181. ? {
  2182. ...this.data,
  2183. klTcmSyndromeVO: this.klTcmSyndromeVO,
  2184. klConceptSub: detailList || [],
  2185. sexType: sexCode,
  2186. maxAge: this.maxAge,
  2187. minAge: this.minAge,
  2188. status: this.data.status || 1,
  2189. }
  2190. : this.data.libType == 101
  2191. ? {
  2192. ...this.data,
  2193. klDrugVO: this.klDrugVO,
  2194. klConceptSub: detailList || [],
  2195. sexType: sexCode,
  2196. maxAge: this.maxAge,
  2197. minAge: this.minAge,
  2198. status: this.data.status || 1,
  2199. }
  2200. : {
  2201. ...this.data,
  2202. klConceptSub: detailList || [],
  2203. status: this.data.status || 1,
  2204. sexType: sexCode,
  2205. maxAge: this.maxAge,
  2206. minAge: this.minAge,
  2207. };
  2208. // console.log(params);
  2209. // return false
  2210. this.saveDisable = true; //提交保存按钮不可点击,返回结果时才可点击,防止频繁发送请求
  2211. api.saveBaseConceptInfo(params).then((res) => {
  2212. const result = res.data;
  2213. if (result.code == 0) {
  2214. this.warning(res.data.msg || "操作成功", "success");
  2215. //返回带搜索条件的首页
  2216. this.$router.push({
  2217. name: "BasicTermsMaintenance",
  2218. params: Object.assign({}, this.$route.params, { currentPage: 1 }),
  2219. });
  2220. } else {
  2221. this.warning(res.data.msg);
  2222. }
  2223. this.saveDisable = false;
  2224. });
  2225. },
  2226. inputAge() {
  2227. // console.log("输入年龄")
  2228. },
  2229. destroyed() {
  2230. this.hackReset = false; //销毁组件
  2231. this.$nextTick(() => {
  2232. this.hackReset = true; //重建组件
  2233. });
  2234. },
  2235. selectType(e) {
  2236. this.typeList.map((v, i) => {
  2237. if (v.name == e) {
  2238. // console.log(v.code);
  2239. this.showMore = v.isHasCommon;
  2240. this.data.libType = v.code;
  2241. this.data.isHasCommon = v.isHasCommon;
  2242. this.conceptList = [];
  2243. this.destroyed();
  2244. }
  2245. });
  2246. if (e == "诊断") {
  2247. this.getDioType();
  2248. this.getDdeptList();
  2249. } else {
  2250. this.dioType = "";
  2251. this.dept = "";
  2252. }
  2253. },
  2254. },
  2255. components: {
  2256. SimilarListDrag,
  2257. DivEditable,
  2258. searchTerm,
  2259. },
  2260. };
  2261. </script>
  2262. <style lang="less" scoped>
  2263. @import "../../less/admin.less";
  2264. table,
  2265. tr,
  2266. td {
  2267. list-style: none;
  2268. }
  2269. /deep/ .radioWrap .el-radio {
  2270. display: block;
  2271. height: 41px;
  2272. line-height: 41px;
  2273. text-align: right;
  2274. margin-left: 0;
  2275. }
  2276. /deep/ .moreInfo .el-form-item .el-form-item__label {
  2277. width: 85px;
  2278. text-align: left;
  2279. }
  2280. .txt {
  2281. /deep/.el-textarea__inner {
  2282. min-height: 40px;
  2283. max-height: 73px;
  2284. }
  2285. }
  2286. .tips {
  2287. /deep/.el-form-item__content {
  2288. display: flex;
  2289. align-items: center;
  2290. .divBox {
  2291. flex: 1;
  2292. }
  2293. .titles {
  2294. flex: 0.25;
  2295. font-size: 14px;
  2296. line-height: 20px;
  2297. color: red;
  2298. margin-left: 10px;
  2299. }
  2300. }
  2301. }
  2302. // 饿了么分组下拉
  2303. el-select-dropdown {
  2304. .el-scrollbar {
  2305. /deep/.el-scrollbar__view {
  2306. display: flex !important;
  2307. max-width: 100% !important;
  2308. /deep/.el-select-group__wrap {
  2309. min-width: 160px !important;
  2310. display: inline-block !important;
  2311. vertical-align: top !important;
  2312. }
  2313. }
  2314. }
  2315. }
  2316. .range {
  2317. margin-top: 20px;
  2318. }
  2319. .el-select-group__wrap::after {
  2320. background: #fff !important;
  2321. }
  2322. .displayColor {
  2323. color: #ccc;
  2324. cursor: not-allowed;
  2325. }
  2326. .delete {
  2327. cursor: pointer;
  2328. }
  2329. .content {
  2330. background: #fff;
  2331. padding: 20px 20px 30px;
  2332. color: #545455;
  2333. }
  2334. .titl {
  2335. margin: 25px 0 10px;
  2336. }
  2337. input:focus {
  2338. border-color: #48c5d7 !important;
  2339. }
  2340. .deptbox {
  2341. // width: 100%;
  2342. background: #fff;
  2343. padding: 20px 10px 30px;
  2344. font-size: 14px;
  2345. text-align: left;
  2346. border-collapse: collapse;
  2347. > tr {
  2348. height: 30px;
  2349. text-align: center;
  2350. td {
  2351. width: 135px;
  2352. border: 1px solid #666;
  2353. padding: 5px;
  2354. position: relative;
  2355. }
  2356. input {
  2357. border: none;
  2358. border: 1px solid #ccc;
  2359. width: 100%;
  2360. height: 30px;
  2361. padding: 0 7px;
  2362. box-sizing: border-box;
  2363. border-radius: 4px;
  2364. }
  2365. .ind {
  2366. width: 55px;
  2367. }
  2368. .desc {
  2369. width: 280px;
  2370. }
  2371. .descs {
  2372. width: 50px;
  2373. }
  2374. }
  2375. .addSpan {
  2376. text-align: center;
  2377. cursor: pointer;
  2378. }
  2379. }
  2380. .deptboxTable {
  2381. width: 100%;
  2382. }
  2383. .deptboxChange {
  2384. padding-right: 210px;
  2385. position: relative;
  2386. }
  2387. .actionDo {
  2388. width: 200px;
  2389. position: absolute;
  2390. top: 1px;
  2391. right: 0;
  2392. .btnWrap {
  2393. height: 30px;
  2394. }
  2395. }
  2396. .btn {
  2397. text-align: right;
  2398. margin-top: 20px;
  2399. margin-bottom: 20px;
  2400. }
  2401. .necess {
  2402. display: inline-block;
  2403. vertical-align: middle;
  2404. color: red;
  2405. margin-left: 2px;
  2406. }
  2407. .moreInfo {
  2408. border-top: 1px solid #c0c4cc;
  2409. margin-top: 45px;
  2410. p {
  2411. margin: 15px 0;
  2412. }
  2413. }
  2414. .spell {
  2415. text-align: center;
  2416. }
  2417. /deep/.ages {
  2418. margin-top: 20px;
  2419. position: relative;
  2420. .el-input {
  2421. display: inline-block;
  2422. width: auto;
  2423. .el-input__inner {
  2424. width: 80px;
  2425. padding: 0 5px;
  2426. text-align: center;
  2427. }
  2428. .el-input__inner::-webkit-outer-spin-button,
  2429. .el-input__inner::-webkit-inner-spin-button {
  2430. -webkit-appearance: none;
  2431. }
  2432. .el-input__inner[type="number"] {
  2433. -moz-appearance: textfield;
  2434. }
  2435. }
  2436. .ageLine {
  2437. display: inline-block;
  2438. margin: 0 35px;
  2439. }
  2440. .inp {
  2441. margin-left: 20px;
  2442. }
  2443. }
  2444. /deep/ .marT {
  2445. margin-top: 20px;
  2446. }
  2447. /deep/.description {
  2448. position: relative;
  2449. .necess {
  2450. position: absolute;
  2451. left: -158px;
  2452. z-index: 2;
  2453. }
  2454. .el-input__inner {
  2455. width: 200px;
  2456. height: 40px;
  2457. line-height: 40px;
  2458. // text-align: center;
  2459. }
  2460. }
  2461. </style>