AddMedicalName.vue 26 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819
  1. <template>
  2. <div>
  3. <crumbs :title="minTitle"
  4. :param="$route.params"
  5. linkTo="MedicalName"></crumbs>
  6. <div class="contents">
  7. <div class="content">
  8. <h3>添加术语:</h3>
  9. <p class="titl">医学标准术语:</p>
  10. <table class="deptbox" v-if="id == ''">
  11. <tr>
  12. <td class="ind">序号</td>
  13. <td>标准词<span class="necess">*</span></td>
  14. <td>拼音</td>
  15. <td>类型<span class="necess">*</span></td>
  16. <td class="desc">说明</td>
  17. </tr>
  18. <tr>
  19. <td class="ind">1</td>
  20. <td :title="data.name&&data.name.length>9?data.name:''">
  21. <!-- 修改时标准词不能修改,修改了会当做新增处理 4-17 -->
  22. <p v-if="id">{{data.name}}</p>
  23. <!-- 4-18 需求变更 -->
  24. <input v-else type="text" v-model="data.name" placeholder="请输入术语" maxlength="50" @blur="handleBlur(1)">
  25. </td>
  26. <td>
  27. <input type="text" v-model="data.spell" placeholder="请输入拼音" maxlength="50" @input="handlePinyin($event,1)">
  28. </td>
  29. <td>
  30. <!-- <el-select v-if="!id" v-model="data.type" filterable placeholder="请选择" size="small" @change="selectType">
  31. <el-option
  32. v-for="item in typeList"
  33. :key="item.id"
  34. :label="item.name"
  35. :value="item.name">
  36. </el-option>
  37. </el-select> -->
  38. <template v-if="!id">
  39. <el-select v-model="data.type" filterable clearable placeholder="请选择" size="small" @change="selectType">
  40. <el-option-group
  41. v-for="group in options"
  42. :key="group.label">
  43. <el-option
  44. v-for="item in group.options"
  45. :key="item.id"
  46. :label="item.name"
  47. :value="item.name">
  48. </el-option>
  49. </el-option-group>
  50. </el-select>
  51. </template>
  52. <span v-else>{{data.type}}</span>
  53. </td>
  54. <td class="desc">
  55. <input v-model="data.remark" placeholder="请输入术语说明" maxlength="120"></input>
  56. </td>
  57. </tr>
  58. </table>
  59. <div class="deptboxChange" v-else>
  60. <table class="deptbox deptboxTable">
  61. <tr>
  62. <td class="ind">序号</td>
  63. <td>术语</td>
  64. <td>拼音</td>
  65. <td>类型</td>
  66. <td class="desc">说明</td>
  67. <td class="descs">术语性质</td>
  68. <td v-if="id">操作</td>
  69. </tr>
  70. <tr v-for="(item,index) in allwords">
  71. <td class="ind">{{index+1}}</td>
  72. <td :title="item.name&&item.name.length>9?item.name:''">
  73. <!-- 使用原生input,输入限制 -->
  74. <!-- <el-input v-model="item.name" placeholder="请输入术语" maxlength="30" size="small" @input.native="handleInput(2,index)"></el-input> -->
  75. <input type="text" v-model="item.name" :title="item.name" placeholder="请输入术语" maxlength="50" @blur="handleBlur(2,index,99)" >
  76. </td>
  77. <!-- <td v-if="!item.isEdit">
  78. {{item.spell}}
  79. </td>
  80. <td v-else> -->
  81. <td>
  82. <input type="text" v-model="item.spell" placeholder="请输入拼音" maxlength="50" @input="handlePinyin($event,2,index)" class="spell">
  83. </td>
  84. <td>
  85. <!-- {{data.type}} -->
  86. <template v-if="index==0&&copy">
  87. <el-select v-model="data.type" filterable placeholder="请选择" size="small" @change="selectType">
  88. <el-option-group
  89. v-for="group in options"
  90. :key="group.label">
  91. <el-option
  92. v-for="item in group.options"
  93. :key="item.id"
  94. :label="item.name"
  95. :value="item.name">
  96. </el-option>
  97. </el-option-group>
  98. </el-select>
  99. </template>
  100. <span v-else>{{data.type}}</span>
  101. </td>
  102. <td class="desc">
  103. <input v-model="item.remark" placeholder="请输入术语说明" maxlength="120"></input>
  104. </td>
  105. <td class="desc">
  106. {{item.isConcept == 1?"标准词":"同义词"}}
  107. </td>
  108. <td v-if="id">
  109. <span class="displayColor" v-if="item.isConcept == 1">删除</span>
  110. <span @click="deleLine(index,55)" class="delete" v-else>删除</span>
  111. </td>
  112. </tr>
  113. <tr @click="addSpan(55)">
  114. <td colspan="7" class="addSpan">+</td>
  115. </tr>
  116. </table>
  117. <div class="actionDo">
  118. <!-- <div class="btnWrap"> -->
  119. <!-- <el-button type="primary" size="mini" v-if="show" @click="comfirn(14)">确认修改</el-button> -->
  120. <!-- <el-button plain size="mini" v-if="show" @click="toggleShow(1)">放弃修改</el-button>
  121. <el-button plain size="mini" @click="toggleShow(2)" v-if="!show">修改标准词</el-button> -->
  122. <!-- </div> -->
  123. <div class="radioWrap" v-if="show">
  124. <el-radio-group v-model="radioVal" size="mini">
  125. <el-radio v-for="(item,index) in allwords" :label="index" :disabled="index == 0">选为标准词</el-radio>
  126. </el-radio-group>
  127. </div>
  128. </div>
  129. </div>
  130. <p class="titl" v-if="id == ''">同义词:</p>
  131. <table class="deptbox" v-if="id == ''">
  132. <tr>
  133. <td class="ind">序号</td>
  134. <td>术语</td>
  135. <td>拼音</td>
  136. <td>类型</td>
  137. <td class="desc">说明</td>
  138. <td v-if="id">操作</td>
  139. </tr>
  140. <tr v-for="(item,index) in synonymous">
  141. <td class="ind">{{index+1}}</td>
  142. <td :title="item.name&&item.name.length>9?item.name:''">
  143. <!-- 使用原生input,输入限制 -->
  144. <!-- <el-input v-model="item.name" placeholder="请输入术语" maxlength="30" size="small" @input.native="handleInput(2,index)"></el-input> -->
  145. <input type="text" v-model="item.name" placeholder="请输入术语" maxlength="50" @blur="handleBlur(2,index)">
  146. </td>
  147. <td>
  148. <input type="text" v-model="item.spell" placeholder="请输入拼音" maxlength="50" @input="handlePinyin($event,3,index)">
  149. </td>
  150. <td>
  151. {{data.type}}
  152. </td>
  153. <td class="desc">
  154. <input v-model="item.remark" placeholder="请输入术语说明" maxlength="120"></input>
  155. </td>
  156. <td v-if="id">
  157. <span @click="deleLine(index)" class="delete">删除</span>
  158. </td>
  159. </tr>
  160. <tr @click="addSpan">
  161. <td :colspan="colspan" class="addSpan">+</td>
  162. </tr>
  163. </table>
  164. <div class="moreInfo" v-if="showMore==1">
  165. <p>更多信息:</p>
  166. <el-form>
  167. <el-form-item label="性别:">
  168. <el-select v-model="sexType">
  169. <el-option v-for="(it,i) in sex" :label="it.name" :value="it.name"></el-option>
  170. </el-select>
  171. </el-form-item>
  172. <el-form-item label="年龄:" class="ages">
  173. <el-input
  174. v-model.number="minAge"
  175. type="number"
  176. @input="inputAge">
  177. </el-input>
  178. <span class="ageLine">~</span>
  179. <el-input
  180. v-model.number="maxAge"
  181. type="number"
  182. @input="inputAge"
  183. ></el-input>
  184. </el-form-item>
  185. <el-form-item label="科室:" v-if="dioType" class="marT">
  186. <el-select v-model="dept">
  187. <el-option v-for="(it,i) in deptList" :label="it.name" :value="it.name"></el-option>
  188. </el-select>
  189. </el-form-item>
  190. <el-form-item label="类型:" v-if="dioType" class="marT">
  191. <el-select v-model="dioType">
  192. <el-option v-for="(it,i) in dioTypeList" :label="it.name" :value="it.val"></el-option>
  193. </el-select>
  194. </el-form-item>
  195. </el-form>
  196. </div>
  197. <div class="btn">
  198. <el-button
  199. type="primary"
  200. :disabled = 'saveDisable'
  201. @click="comfirn"
  202. >确 定</el-button>
  203. </div>
  204. </div>
  205. </div>
  206. </div>
  207. </template>
  208. <script type="text/javascript">
  209. import api from '@api/icss.js';
  210. import pinyin from '../../js/Convert_Pinyin.js';
  211. export default {
  212. name:'AddMedicalName',
  213. data(){
  214. return{
  215. minTitle:'医学术语命名维护-添加',
  216. data:{
  217. name:'',
  218. type:'',
  219. remark:'',
  220. isConcept:1,
  221. spell:''
  222. },
  223. radioVal:'',
  224. typeList:[],
  225. id:'',
  226. synonymous:[],//同义词
  227. singleword:[],
  228. allwords:[],//标准词和同义词
  229. colspan:5,
  230. colspans:6,
  231. currentPage:1,
  232. pageSize:10,
  233. show:false,
  234. tmpSynonymous:[],
  235. sexType:'通用',
  236. maxAge:200,
  237. minAge:0,
  238. showMore:'',
  239. sex:[
  240. {
  241. name:'通用',
  242. value:3
  243. },
  244. {
  245. name:'男',
  246. value:1
  247. },
  248. {
  249. name:'女',
  250. value:2
  251. }
  252. ],
  253. unfit:false, //点确认时是否弹提示,
  254. saveDisable: false, //保存按钮禁止点击
  255. options:[],
  256. copy:null,
  257. dioTypeList:[],//更多信息-类型
  258. dioType:'', //默认展示一类
  259. deptList:[], //更多信息-科室
  260. dept:'', //默认展示全科
  261. }
  262. },
  263. created(){
  264. this.getTypeList();
  265. const id = this.$route.params.id || '';
  266. const copy = this.$route.params.copy || '';
  267. this.copy = copy;
  268. if(id){
  269. this.minTitle = copy?'医学术语命名维护-复制':'医学术语命名维护-修改';
  270. this.id = id;
  271. this.colspan = 5;
  272. this.getDetail(id);
  273. }
  274. },
  275. watch:{
  276. radioVal(newVal,preVal){
  277. if(newVal && newVal != preVal){
  278. this.changeState(newVal);
  279. }
  280. },
  281. },
  282. methods:{
  283. // 诊断类型下--更多信息-类型
  284. getDioType(flag){
  285. api.getknowledgeList().then((res)=>{
  286. const data = res.data;
  287. if(data.code==0){
  288. this.dioTypeList = data.data[2];
  289. // 修改时无需赋值
  290. if(!flag){
  291. this.dioType = this.dioTypeList[0].val;
  292. }
  293. }
  294. })
  295. },
  296. // 诊断类型下--更多信息-科室
  297. getDdeptList(conptId){
  298. api.getDeptList({"type":1}).then((res)=>{
  299. const data = res.data;
  300. if(data.code==0){
  301. this.deptList = data.data;
  302. if(!conptId){
  303. this.dept = "全科"; //默认展示全科
  304. }else{
  305. // 科室id转成name显示
  306. this.deptList.map((v,i)=>{
  307. if(v.conceptId==conptId){
  308. this.dept = v.name;
  309. }
  310. })
  311. }
  312. }
  313. })
  314. },
  315. changeState(val){
  316. let tmpAllwords = JSON.parse(JSON.stringify(this.synonymous));
  317. for(let i = 0;i < tmpAllwords.length;i++){
  318. if(i+1 == val){
  319. tmpAllwords[i].isConcept = 1
  320. tmpAllwords[i].type = this.data.type
  321. }else{
  322. tmpAllwords[i].isConcept = 0
  323. }
  324. }
  325. this.tmpSynonymous = tmpAllwords
  326. this.synonymous = tmpAllwords
  327. },
  328. toggleShow(num){
  329. let tmpShow = this.show
  330. this.show = !tmpShow
  331. if(num == 1){
  332. this.changeState(-1)
  333. this.radioVal = ''
  334. }
  335. },
  336. getDetail(ids){
  337. if(ids){
  338. api.getMedicalDetail({'conceptId':ids}).then((res)=>{
  339. const result = res.data;
  340. if(result.code == 0){
  341. this.data = result.data.libName[0];
  342. this.singleword = result.data.libName;
  343. this.synonymous = result.data.otherNames;
  344. this.allwords = (result.data.libName).concat(result.data.otherNames);
  345. this.showMore = result.data.isHasCommon;
  346. this.maxAge = result.data.maxAge;
  347. this.minAge = result.data.minAge;
  348. const type = result.data.type;
  349. if(type == '诊断'){
  350. this.dioType = result.data.classify; //类型
  351. const deptConptId = result.data.deptId;
  352. this.getDioType(true);
  353. this.getDdeptList(deptConptId);
  354. }
  355. // this.sexType = result.data.sexType;
  356. let sexType = result.data.sexType;
  357. this.sex.map((v,i)=>{
  358. if(v.value==sexType){
  359. this.sexType = v.name;
  360. }
  361. })
  362. }else{
  363. this.$message({
  364. message:result.msg,
  365. type:'warning'
  366. });
  367. }
  368. })
  369. }
  370. },
  371. getTypeList(){
  372. api.allKnowledgeType({'name':''}).then((res)=>{
  373. const data = res.data;
  374. if(data.code==0){
  375. // this.typeList = data.data.records;
  376. this.typeList = data.data;
  377. // 类型改成平铺
  378. if(data.data.length>0){
  379. const total = data.data.length;
  380. const average = parseInt(total/3);
  381. const mod = total%3; //余数
  382. const firstGroup = data.data.slice(0,average);
  383. let secGroup = [];
  384. let thirdGroup = [];
  385. if(mod == 2){
  386. secGroup = data.data.slice(average,average*2+1);
  387. thirdGroup = data.data.slice(average*2+1,total);
  388. }else{
  389. secGroup = data.data.slice(average,average*2);
  390. thirdGroup = data.data.slice(average*2,total);
  391. }
  392. this.options.push({label:1,options:firstGroup},{label:2,options:secGroup},{label:3,options:thirdGroup});
  393. }
  394. }else{
  395. this.$message({
  396. message:data.msg,
  397. type:'warning'
  398. });
  399. }
  400. }).catch((error) => {
  401. console.log(error);
  402. });
  403. },
  404. // handleInput(index,name){
  405. /* handleInput(type,index){
  406. // 可输入内容:字母、数字、汉字、特殊字符:% —— 其余不可输入;
  407. // if(!name){//标准词输入
  408. if(type==1){//标准词输入
  409. this.data.name = this.data.name.replace(/[^%0-9a-zA-Z\u4e00-\u9fa5]/g,'');
  410. }else{
  411. this.synonymous[index].name = this.synonymous[index].name.replace(/[^%0-9a-zA-Z\u4e00-\u9fa5]/g,'');
  412. }
  413. },*/
  414. handleBlur(type,index,flg){
  415. // 不能为纯数字、纯字符、纯数字加字符 4-18
  416. // const pattern = /[^~@#$%^&*_\-+=,,.。::"“??”;;、!!0-9]/g;
  417. // 需求更改:不能为纯数字,其余均可输入 5-20
  418. const pattern = /[^0-9]/g;
  419. if(type==1){//标准词输入
  420. if(this.data.name && !pattern.test(this.data.name)){
  421. this.$message({
  422. // message:'无法输入纯数字或者纯字符,请输入正确数据!',
  423. message:'无法输入纯数字,请输入正确数据!',
  424. type:'warning'
  425. });
  426. // this.data.name = '';
  427. this.unfit = true;
  428. }else{
  429. let data = this.data;
  430. data.spell = pinyin.getCamelChars(data.name);
  431. this.unfit = false;
  432. }
  433. }else if(type==2){
  434. // 修改时术语名称、拼音和类型均不能修改
  435. if(flg == 99){
  436. // if(this.synonymous[index-1].name && !pattern.test(this.synonymous[index-1].name)){
  437. if(this.allwords[index].name && !pattern.test(this.allwords[index].name)){
  438. this.$message({
  439. message:'无法输入纯数字,请输入正确数据!',
  440. type:'warning'
  441. });
  442. // this.synonymous[index-1].name = '';
  443. this.unfit = true;
  444. }else{
  445. // let current = this.synonymous[index-1];
  446. let current = this.allwords[index];
  447. current.spell = pinyin.getCamelChars(current.name);
  448. this.unfit = false;
  449. }
  450. }else{
  451. if(this.synonymous[index].name && !pattern.test(this.synonymous[index].name)){
  452. this.$message({
  453. message:'无法输入纯数字,请输入正确数据!',
  454. type:'warning'
  455. });
  456. // this.synonymous[index].name = '';
  457. this.unfit = true;
  458. }else{
  459. let current = this.synonymous[index];
  460. current.spell = pinyin.getCamelChars(current.name);
  461. this.unfit = false;
  462. }
  463. }
  464. }
  465. },
  466. handlePinyin(e,flag,index){//只能输入英文
  467. e.target.value = e.target.value.replace(/[^a-zA-Z]/g,'');
  468. // 解决输入数字不触发更新
  469. if(flag==1){//标准词
  470. this.data.spell = e.target.value;
  471. }else if(flag==2){//同义词-修改
  472. this.allwords[index].spell = e.target.value;
  473. }else if(flag==3){//同义词-新增
  474. this.synonymous[index].spell = e.target.value;
  475. }
  476. // e.target.value = e.target.value.replace(/[^a-zA-Z]/g,'');
  477. },
  478. addSpan(type){
  479. let singleSpan = {
  480. name:'',
  481. remark:'',
  482. isConcept:0,
  483. isEdit:true,
  484. spell:null
  485. }
  486. if(type == 55){
  487. this.allwords.push(singleSpan);
  488. this.synonymous.push(singleSpan);
  489. }else{
  490. this.synonymous.push(singleSpan);
  491. }
  492. },
  493. warning(msg,type){
  494. this.$message({
  495. showClose: true,
  496. message:msg,
  497. type:type||'warning'
  498. })
  499. },
  500. showConfirmDialog(msg,resolve){
  501. this.$alert(msg, '提示', {
  502. confirmButtonText: '确定',
  503. type: 'warning'
  504. }).then(() => {
  505. resolve();
  506. }).catch(() => {});
  507. },
  508. deleLine(index,type){
  509. // 只在界面删除数据,待点确认 后参才真正删除
  510. if(type == 55){
  511. this.synonymous.splice(index-1,1);
  512. this.allwords.splice(index,1);
  513. }else{
  514. this.synonymous.splice(index,1);
  515. }
  516. },
  517. comfirn(flg){
  518. if(!this.data.name){
  519. this.warning('请输入标准词');
  520. return
  521. }
  522. if(!this.data.type && !this.unfit){
  523. this.warning('请选择术语类型');
  524. return
  525. }
  526. // 处于修改标准词状态且没有选中,不能保存
  527. if(this.show && !this.radioVal){
  528. this.warning('请先选择标准词');
  529. return
  530. }
  531. // 年龄为必填项--2019-6-5需求
  532. if(this.showMore == 1){
  533. if(!this.minAge && this.minAge != 0 || !this.maxAge){
  534. this.warning('年龄不能为空,区间为0-200');
  535. return
  536. }
  537. if(this.minAge < 0 || this.minAge > 200 || this.maxAge < 0 || this.maxAge > 200){
  538. this.warning('年龄必须是0-200');
  539. return
  540. }
  541. }
  542. // 过滤同义词空数据
  543. let realData=[];
  544. if(this.id){//修改用暂存的列表
  545. realData = this.synonymous.filter((item)=>{
  546. return item.name;
  547. })
  548. let tmpArr = []
  549. for(let k = 0;k < realData.length;k++){
  550. if(realData[k].isConcept == 1){
  551. let tmpdata = JSON.parse(JSON.stringify(this.data))
  552. tmpArr.push(realData[k])
  553. realData.splice(k,1)
  554. tmpdata.isConcept = 0
  555. realData.push(tmpdata)
  556. this.data = tmpArr[0]
  557. }
  558. }
  559. }else{
  560. realData = this.synonymous.filter((item)=>{
  561. return item.name;
  562. })
  563. }
  564. let detailList = [];
  565. detailList[0] = this.data;
  566. for(let i=0; i<realData.length; i++){
  567. realData[i].type = this.data.type;
  568. detailList.push(realData[i]);
  569. }
  570. // 校验是否有名称全为数字
  571. const pattern = /[^0-9]/g;
  572. for(let d=0; d<detailList.length; d++){
  573. let dname = detailList[d].name;
  574. // if(detailList[d].name && !pattern.test(detailList[d].name)){
  575. if(dname && !dname.match(pattern)){
  576. if(!this.unfit){//避免和失焦事件同事弹出
  577. this.$message({
  578. message:'无法输入纯数字,请输入正确数据!',
  579. type:'warning'
  580. });
  581. }
  582. this.unfit = false;
  583. return false;
  584. break
  585. }
  586. }
  587. let params;
  588. if(this.showMore==1){
  589. // 下拉文字转code
  590. let sexCode;
  591. this.sex.map((v,i)=>{
  592. if(v.name==this.sexType){
  593. sexCode = v.value;
  594. }
  595. })
  596. if(this.dioType){
  597. const deptList = this.deptList;
  598. let conptId = null;
  599. for(let i in deptList){
  600. if(deptList[i].name == this.dept){
  601. conptId = deptList[i].conceptId;
  602. }
  603. }
  604. params = {
  605. "addCptDiseaseExtVO": {
  606. "classify": this.dioType,
  607. "deptId": conptId
  608. },
  609. 'name':this.data.name,
  610. 'type':this.data.type,
  611. 'detailList':detailList,
  612. 'conceptId':this.copy?'':this.id,//复制当新增,把id置空
  613. 'sexType':sexCode,
  614. 'maxAge':this.maxAge,
  615. 'minAge':this.minAge
  616. }
  617. }else{
  618. params = {
  619. 'name':this.data.name,
  620. 'type':this.data.type,
  621. 'detailList':detailList,
  622. 'conceptId':this.copy?'':this.id,//复制当新增,把id置空
  623. 'sexType':sexCode,
  624. 'maxAge':this.maxAge,
  625. 'minAge':this.minAge
  626. }
  627. }
  628. }else{
  629. params = {
  630. 'name':this.data.name,
  631. 'type':this.data.type,
  632. 'detailList':detailList,
  633. 'conceptId':this.copy?'':this.id
  634. }
  635. }
  636. this.saveDisable = true //提交保存按钮不可点击,返回结果时才可点击,防止频繁发送请求
  637. api.addMedicalName(params).then((res)=>{
  638. const result = res.data;
  639. if(result.code==0){
  640. this.warning(res.data.msg||'操作成功','success');
  641. //返回带搜索条件的首页
  642. this.$router.push({name:'MedicalName',params:Object.assign({},this.$route.params,{currentPage:1})});
  643. /*if(flg == 14){
  644. this.getDetail(this.id)
  645. this.radioVal = ''
  646. this.show = false
  647. }else{
  648. this.$router.push({name:'MedicalName'});
  649. }*/
  650. }else{
  651. this.warning(res.data.msg);
  652. }
  653. this.saveDisable = false
  654. })
  655. },
  656. inputAge(){
  657. // console.log("输入年龄")
  658. },
  659. selectType(e){
  660. this.typeList.map((v,i)=>{
  661. if(v.name==e){
  662. this.showMore = v.isHasCommon;
  663. }
  664. })
  665. if(e == '诊断'){
  666. this.getDioType();
  667. this.getDdeptList();
  668. }else{
  669. this.dioType = '';
  670. this.dept = '';
  671. }
  672. }
  673. }
  674. }
  675. </script>
  676. <style lang="less" scoped>
  677. @import "../../less/admin.less";
  678. /deep/ .radioWrap .el-radio {
  679. display: block;
  680. height: 41px;
  681. line-height: 41px;
  682. text-align: right;
  683. margin-left: 0;
  684. }
  685. // 饿了么分组下拉
  686. .el-scrollbar{
  687. .el-select-dropdown__list{
  688. .el-select-group__wrap{
  689. min-width: 160px !important;
  690. display: inline-block !important;
  691. vertical-align: top !important;
  692. }
  693. }
  694. }
  695. .el-select-group__wrap::after{
  696. background:#fff !important;
  697. }
  698. .displayColor {
  699. color: #ccc;
  700. cursor:not-allowed;
  701. }
  702. .delete {
  703. cursor: pointer;
  704. }
  705. .content{
  706. background: #fff;
  707. padding: 20px 20px 30px;
  708. color: #545455;
  709. }
  710. .titl{
  711. margin: 25px 0 10px;
  712. }
  713. .deptbox{
  714. // width: 100%;
  715. background: #fff;
  716. padding: 20px 10px 30px;
  717. font-size: 14px;
  718. text-align: left;
  719. border-collapse: collapse;
  720. >tr{
  721. height: 30px;
  722. text-align: center;
  723. td{
  724. width: 135px;
  725. border: 1px solid #666;
  726. padding:5px;
  727. }
  728. input{
  729. border:none;
  730. border: 1px solid #ccc;
  731. width: 100%;
  732. height: 30px;
  733. padding: 0 7px;
  734. box-sizing: border-box;
  735. border-radius: 4px;
  736. }
  737. .ind{
  738. width: 55px;
  739. }
  740. .desc{
  741. width: 280px;
  742. }
  743. .descs{
  744. width: 50px;
  745. }
  746. }
  747. .addSpan{
  748. text-align: center;
  749. cursor: pointer;
  750. }
  751. }
  752. .deptboxTable {
  753. width: 100%;
  754. }
  755. .deptboxChange {
  756. padding-right: 210px;
  757. position: relative;
  758. }
  759. .actionDo {
  760. width: 200px;
  761. position: absolute;
  762. top: 1px;
  763. right: 0;
  764. .btnWrap {
  765. height: 30px;
  766. }
  767. }
  768. .btn {
  769. text-align: right;
  770. margin-top: 20px;
  771. }
  772. .necess{
  773. display: inline-block;
  774. vertical-align: middle;
  775. color: red;
  776. margin-left: 2px;
  777. }
  778. .moreInfo{
  779. border-top: 1px solid #c0c4cc ;
  780. margin-top: 45px;
  781. p{
  782. margin:15px 0;
  783. }
  784. }
  785. .spell{
  786. text-align: center;
  787. }
  788. /deep/.ages{
  789. margin-top: 20px;
  790. .el-input {
  791. display: inline-block;
  792. width: auto;
  793. .el-input__inner {
  794. width: 60px;
  795. padding: 0 5px;
  796. text-align: center;
  797. }
  798. .el-input__inner::-webkit-outer-spin-button,
  799. .el-input__inner::-webkit-inner-spin-button {
  800. -webkit-appearance: none;
  801. }
  802. .el-input__inner[type="number"] {
  803. -moz-appearance: textfield;
  804. }
  805. }
  806. .ageLine{
  807. display: inline-block;
  808. margin: 0 35px;
  809. }
  810. }
  811. /deep/ .marT{
  812. margin-top: 20px;
  813. }
  814. </style>