AddDiagBase.vue 29 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743
  1. <!-- 添加常见科室症状 -->
  2. <template>
  3. <div class="AddDiagBaseWrapper" @click="close">
  4. <crumbs
  5. :title="'诊断依据数据维护-'+titleText"
  6. class="topBack"
  7. :param="$route.params"
  8. linkTo="DiagBase"
  9. ></crumbs>
  10. <el-form ref="ruleForm" class="addDepartForm">
  11. <el-form-item class="addDiagName" label="选择添加疾病名称:" >
  12. <input class="searchInput" @focus="focuInput" type="text" v-model = "searchDiagVal">
  13. <span class="searchName" @click="searchDiag">搜索</span>
  14. <ul class="itemList diagList" ref="diagList">
  15. <li
  16. v-for="item in diagList"
  17. class="diagItem ellipsis"
  18. :title="item.name"
  19. @click="selectDiag(item)"
  20. :key="item.conceptId">
  21. {{item.name}}
  22. </li>
  23. </ul>
  24. </el-form-item>
  25. <el-form-item class="isRequired" label="已选添加疾病名称:">
  26. {{disName}}
  27. </el-form-item>
  28. </el-form>
  29. <div class="symptomList">
  30. <p class="moduleTitle">疾病特征:</p>
  31. <table class="diagTable">
  32. <tr class="tableTitle">
  33. <td class="FeatureSort">排序</td>
  34. <td class="FeatureType require">类型</td>
  35. <td class="FeatureNumber require">序号</td>
  36. <td class="FeatureStand require">标准词</td>
  37. <td class="FeatureRelate">关联词</td>
  38. <td class="FeatureResult">结果</td>
  39. <td class="FeatureOpera"></td>
  40. </tr>
  41. <tr v-for="(item, index) in disFeatureList" :key="item.index">
  42. <td class="FeatureSort" >{{index+1}}</td>
  43. <td class="FeatureType" >
  44. <el-select size="mini" :class="{selectType: item.typeNull}" v-model.trim="item.type" placeholder="标签类型" @change="clickItem(index,'FeatureType')" clearable>
  45. <el-option v-for="item in featureTypeList" :label="item.name" :value="item.key" :key="item.key"></el-option>
  46. </el-select>
  47. </td>
  48. <td class="FeatureNumber" >
  49. <el-tooltip :disabled="!item.verifyCode&&!item.codeNull&&!item.codeError" class="item" effect="dark" :content="item.verifyCode||item.codeNull||item.codeError" placement="top">
  50. <input class="groupInput" :class="{borderRed:item.verifyCode||item.codeNull, colorRed: item.codeError}" :title="item.code" type="text" v-model.trim="item.code" @input="handleInp(index,$event,'FeatureNumber')" @click="clickItem(index,'FeatureNumber')">
  51. </el-tooltip>
  52. </td>
  53. <td class="FeatureStand" >
  54. <el-tooltip :disabled="!item.verifyStandard&&!item.standardNull" class="item" effect="dark" :content="item.verifyStandard||item.standardNull" placement="top">
  55. <input class="groupInput" :class="{borderRed:item.verifyStandard||item.standardNull}" :title="item.standard" type="text" v-model.trim="item.standard" @input="handleInp(index,$event,'FeatureStand')" @click="clickItem(index,'FeatureStand')">
  56. </el-tooltip>
  57. </td>
  58. <td class="FeatureRelate">
  59. <el-tooltip :disabled="!item.verifyRelation&&!item.relationNull" class="item" effect="dark" :content="item.verifyRelation||item.relationNull" placement="top">
  60. <input class="groupInput" :class="{borderRed:item.verifyRelation|| item.relationNull}" :title="item.relation" type="text" v-model.trim="item.relation" @input="handleInp(index,$event,'FeatureRelate',item.type)" @click="clickItem(index,'FeatureRelate')">
  61. </el-tooltip>
  62. </td>
  63. <td class="FeatureResult">
  64. <el-tooltip :disabled="!item.verifyResult" class="item" effect="dark" :content="item.verifyResult" placement="top">
  65. <input :readonly="item.type!=3" class="groupInput" :class="{borderRed:item.verifyResult, inpDisabled:item.type!=3}" :title="item.result" type="text" v-model.trim="item.result" @input="handleInp(index,$event,'FeatureResult')" @click="clickItem(index,'FeatureResult')">
  66. </el-tooltip>
  67. </td>
  68. <td class="FeatureOpera">
  69. <el-button type="text" size="small" class="delete" @click="addItem(index, 1)"><div class="btnOpera">+</div></el-button>
  70. <el-button v-if="index !=0" type="text" size="small" class="delete" @click="delItem(index, 1)"><div class="btnOpera">-</div></el-button>
  71. </td>
  72. </tr>
  73. </table>
  74. <p class="moduleTitle">诊断公式:</p>
  75. <p class="inpTips">可输入数字(0~9)规定内汉字:任、一、二、三、四、五、六、七、八、九、十,其余汉字不可输入;可输入的符号:“、”“\”“()”</p>
  76. <table class="diagTable">
  77. <tr class="tableTitle">
  78. <td class="FormulaSort">排序</td>
  79. <td class="FormulaType">类型</td>
  80. <td class="FormulaNumber">公式</td>
  81. <td class="FormulaOpera"></td>
  82. </tr>
  83. <tr v-for="(item, index) in disFormulaList" :key="item.index">
  84. <td class="FormulaSort">{{index +1}}</td>
  85. <td class="FormulaType">
  86. <el-select size="mini" :class="{selectType: item.verifyType}" v-model.trim="item.type" placeholder="标签类型" @change="clickItem(index,'FormulaType')" clearable>
  87. <el-option v-for="item in formulaTypeList" :label="item.name" :value="item.key" :key="item.key"></el-option>
  88. </el-select>
  89. </td>
  90. <td class="FormulaNumber">
  91. <el-tooltip :disabled="!item.verifyFormula" class="item" effect="dark" :content="item.verifyFormula" placement="top">
  92. <input class="groupInput" :class="{borderRed:item.verifyFormula}" :title="item.formula" type="text" v-model.trim="item.formula" @input="handleInp(index,$event,'FormulaNumber')" @click="clickItem(index,'FormulaNumber')">
  93. </el-tooltip>
  94. </td>
  95. <td class="FeatureOpera">
  96. <el-button type="text" size="small" class="delete" @click="addItem(index, 2)"><div class="btnOpera">+</div></el-button>
  97. <el-button v-if="index !=0" type="text" size="small" class="delete" @click="delItem(index, 2)"><div class="btnOpera">-</div></el-button>
  98. </td>
  99. <!-- <td class="selectedContent ">{{item.indexUnique}}</td>
  100. <td class="selectedContentGroup"><input class="groupInput" type="text" v-model="item.indexDesc" @input="handleInp(index,$event)"></td>
  101. <td class="selectedContentOpera"><el-button type="text" size="small" class="delete" @click="delSelectedIndex(item, index)">删除</el-button></td> -->
  102. </tr>
  103. </table>
  104. <div class="btn clearfix">
  105. <div class="btnBox">
  106. <el-button
  107. type="primary"
  108. @click="submitForm()"
  109. >校验并保存数据</el-button>
  110. <el-button
  111. type="primary"
  112. :disabled = "hasQuestion == 1"
  113. @click="exportDiagnosticAll"
  114. >导出诊断依据</el-button>
  115. <el-button
  116. type="primary"
  117. :disabled = "hasQuestion == 1"
  118. @click="updateNeo"
  119. >更新图谱</el-button>
  120. </div>
  121. </div>
  122. </div>
  123. </div>
  124. </template>
  125. <script>
  126. import api from '@api/diagBase.js';
  127. import utils from '@api/utils.js';
  128. import apis from '@api/icss.js';
  129. export default {
  130. name: 'AddChronicAndIndexRelation',
  131. data() {
  132. return{
  133. id: '', //诊断id
  134. disName:'', //诊断名称
  135. modifier: '', //操作人
  136. titleText: '添加',
  137. diagList: [],
  138. featureTypeList: [],
  139. formulaTypeList: [],
  140. disFeatureList: [
  141. {
  142. type:'',
  143. code:'',
  144. standard:'',
  145. relation:'',
  146. result:'',
  147. formula:''
  148. }
  149. ], //疾病特征列表
  150. disFeatureListResult:[], //疾病特征列表(保存用)
  151. disFormulaList:[
  152. {
  153. type:'',
  154. code:'',
  155. standard:'',
  156. relation:'',
  157. result:'',
  158. formula:''
  159. }
  160. ],
  161. disFormulaListResult:[], //诊断公式列表(保存用)
  162. searchDiagVal: '',
  163. isEdit: false,
  164. saveDisable: false ,
  165. hasQuestion: 1, //是否有问题词
  166. }
  167. },
  168. created(){
  169. const userLoginDTO = JSON.parse(localStorage.getItem('userLoginDTO'))
  170. this.modifier = userLoginDTO && userLoginDTO.linkman
  171. this.getDropList()
  172. const { isEdit, data } = this.$route.params;
  173. if(isEdit) {
  174. if(isEdit) {
  175. this.isEdit = isEdit;
  176. this.titleText = '修改';
  177. this.disName = data.disName
  178. this.id = data.id
  179. this.disFeatureList = data.disFeature
  180. if(data.disformula.length) {
  181. this.disFormulaList = data.disformula
  182. }
  183. this.hasQuestion = data.hasQuestion
  184. }
  185. } else {
  186. }
  187. },
  188. watch: {
  189. // searchTagVal(newVal, preVal) {
  190. // if(newVal.trim() == ''){
  191. // this.getTagList()
  192. // }else if(newVal.trim() != preVal.trim()){
  193. // this.getTagList()
  194. // }
  195. // }
  196. },
  197. methods: {
  198. getDropList() {
  199. return apis.getKnowledgeEnums().then((res) =>{
  200. if(res.data.code === '0') {
  201. this.featureTypeList = res.data.data.diagnoseFeatureTypeEnum.filter(item => item.key != 0)
  202. this.formulaTypeList = res.data.data.diagnoseTypeEnum
  203. }
  204. })
  205. },
  206. close() {
  207. this.diagList = [];
  208. if(this.diagList.length>0){this.$refs['diagList'].style.display = 'none';}
  209. },
  210. back(){
  211. this.$router.go(-1);
  212. },
  213. searchDiag() {
  214. if(!this.searchDiagVal) {
  215. return
  216. }
  217. const param = {
  218. "name": this.searchDiagVal,
  219. }
  220. api.diagBaseIndex(param).then((res)=>{
  221. if(res.data.code === '0') {
  222. this.diagList = res.data.data
  223. if(this.diagList.length>0) {this.$refs['diagList'].style.display = 'block'}
  224. }
  225. })
  226. },
  227. selectDiag(item) {
  228. this.disName = item.name
  229. this.$refs['diagList'].style.display='none'
  230. this.searchDiagVal = ''
  231. this.diagList=[]
  232. },
  233. focuInput() {
  234. this.$refs['diagList'].style.display='none'
  235. },
  236. addItem(index, type) {
  237. if(type == 1) {
  238. const item = {
  239. type:'',
  240. code:'',
  241. standard:'',
  242. relation:'',
  243. result:'',
  244. }
  245. this.disFeatureList.splice(index+1, 0, item)
  246. }else if(type == 2) {
  247. const item = {
  248. type:'',
  249. code:'',
  250. standard:'',
  251. relation:'',
  252. result:'',
  253. }
  254. this.disFormulaList.splice(index+1, 0, item)
  255. }
  256. },
  257. delItem(index, type) {
  258. if(type == 1) {
  259. this.disFeatureList.splice(index, 1)
  260. }else if(type == 2) {
  261. this.disFormulaList.splice(index, 1)
  262. }
  263. },
  264. updateNeo() {
  265. this.submitForm().then(() => {
  266. if(this.hasQuestion == 0) {
  267. const param = {
  268. id: this.id,
  269. modifier: this.modifier
  270. }
  271. api.diagBaseUpdateNeo(param).then((res) => {
  272. if(res.data.code == 0) {
  273. this.warning('更新成功')
  274. } else {
  275. this.warning(res.data.msg)
  276. }
  277. })
  278. }
  279. })
  280. // api.diagBaseUpdateNeo(param).then((res) =>{
  281. // })
  282. },
  283. exportDiagnosticAll(){
  284. this.submitForm().then(() => {
  285. if(this.hasQuestion == 0) {
  286. const param = {
  287. diagnoseId: this.id
  288. }
  289. api.exportDiagnosticAll(param).then((res) => {
  290. utils.downloadExportedData(res.data,'诊断依据' )
  291. })
  292. }
  293. })
  294. },
  295. submitForm() {
  296. if(!this.disName) {
  297. this.warning('请选择诊断')
  298. return
  299. }
  300. this.disFeatureListResult = []
  301. this.disFormulaListResult = []
  302. let errStrList = [];
  303. for(let i = 0; i < this.disFeatureList.length; i++) {
  304. if(this.disFeatureList[i].type || this.disFeatureList[i].code || this.disFeatureList[i].standard || this.disFeatureList[i].relation || this.disFeatureList[i].result) {
  305. this.disFeatureListResult.push(this.disFeatureList[i])
  306. }
  307. }
  308. for(let i = 0; i < this.disFormulaList.length; i++) {
  309. if(this.disFormulaList[i].type || this.disFormulaList[i].formula ) {
  310. this.disFormulaListResult.push(this.disFormulaList[i])
  311. }
  312. }
  313. let disFeatureList;
  314. if(this.disFeatureListResult.length) {
  315. disFeatureList = this.disFeatureListResult;
  316. } else {
  317. disFeatureList = [
  318. {
  319. type:'',
  320. code:'',
  321. standard:'',
  322. relation:'',
  323. result:'',
  324. formula:''
  325. }
  326. ];
  327. }
  328. const disFormulaList = this.disFormulaListResult;
  329. let codeErrorNum = 0;
  330. for(let i=0; i < disFeatureList.length; i++) {
  331. if(!disFeatureList[i].type) {
  332. disFeatureList[i].typeNull = "未选择类型"
  333. }
  334. if(!disFeatureList[i].code) {
  335. disFeatureList[i].codeNull = "未填写编码"
  336. }
  337. if(!disFeatureList[i].standard) {
  338. disFeatureList[i].standardNull = "未填写标准词"
  339. }
  340. if(!disFeatureList[i].type||!disFeatureList[i].code||!disFeatureList[i].standard) {
  341. const errStr = "第" + (i+ 1) +"行必填项未填写"
  342. errStrList.push(errStr)
  343. }
  344. if(disFeatureList[i].type == '3' && disFeatureList[i].result && !disFeatureList[i].relation) {
  345. disFeatureList[i].relationNull = "未填写关联词"
  346. const errStr = "第" + (i+ 1) +"行化验项数据填写不完整"
  347. errStrList.push(errStr)
  348. }
  349. let regex =new RegExp(`${disFeatureList[i].type}\\.[1-9]\\d?`)
  350. if(disFeatureList[i].code &&!regex.test(disFeatureList[i].code)) {
  351. codeErrorNum++
  352. disFeatureList[i].codeError = "序号和类型不匹配"
  353. const errStr = "疾病特征第" + (i+ 1) +"行序号和类型不匹配"
  354. errStrList.push(errStr)
  355. }
  356. }
  357. this.disFeatureList = JSON.parse(JSON.stringify(disFeatureList))
  358. let formulaListErrNum = 0
  359. for(let i=0; i < disFormulaList.length; i++) {
  360. if(disFormulaList[i].type&&!disFormulaList[i].formula ) {
  361. disFormulaList[i].verifyFormula = "诊断公式不能为空"
  362. formulaListErrNum++;
  363. const errStr = "诊断公式第" + (i+ 1) +"行诊断公式不能为空"
  364. errStrList.push(errStr)
  365. } else if(disFormulaList[i].formula&&!disFormulaList[i].type) {
  366. disFormulaList[i].verifyType = "诊断类型不能为空"
  367. const errStr = "诊断公式第" + (i+ 1) +"行诊断类型不能为空"
  368. errStrList.push(errStr)
  369. formulaListErrNum++;
  370. }
  371. }
  372. if(disFormulaList.length) {
  373. this.disFormulaList = JSON.parse(JSON.stringify(disFormulaList))
  374. }
  375. let errorStr =''
  376. for(let i = 0; i <errStrList.length; i++) {
  377. errorStr += '<p>'+errStrList[i]+'</p>'
  378. }
  379. if(errStrList.length >0 ||codeErrorNum > 0 ||formulaListErrNum > 0) {
  380. this.$alert(errorStr,'错误信息',{
  381. dangerouslyUseHTMLString: true,
  382. confirmButtonText: '确定',
  383. callback: action => {
  384. /*this.$message({
  385. type: 'info',
  386. message: `action: ${ action }`
  387. });*/
  388. }
  389. });
  390. return
  391. }
  392. // this.showDelDialog()
  393. return this.diagBaseVerifyData()
  394. },
  395. diagBaseVerifyData() {
  396. const param = {
  397. disFeature: this.disFeatureListResult,
  398. disName: this.disName,
  399. disformula: this.disFormulaListResult,
  400. id: this.id,
  401. modifier: this.modifier
  402. }
  403. return api.diagBaseVerifyData(param).then((res) => {
  404. const data = res.data.data
  405. if(data.hasQuestion) {
  406. this.warning('校验完成请先调整问题词')
  407. } else {
  408. this.warning('校验成功')
  409. }
  410. this.id = data.id
  411. this.disFeatureList = data.disFeature
  412. if(data.disformula.length) {
  413. this.disFormulaList = data.disformula
  414. }else {
  415. this.disFormulaList = [
  416. {
  417. type:'',
  418. code:'',
  419. standard:'',
  420. relation:'',
  421. result:'',
  422. formula:''
  423. }
  424. ]
  425. }
  426. this.hasQuestion = data.hasQuestion
  427. })
  428. },
  429. showConfirmDialog(msg, resolve) {
  430. this.$alert(msg, '提示', {
  431. confirmButtonText: '确定',
  432. type: 'warning'
  433. }).then(() => {
  434. resolve();
  435. }).catch(() => {});
  436. },
  437. warning(msg, type,time) {
  438. this.$message({
  439. showClose: true,
  440. message: msg,
  441. type: type || 'warning',
  442. duration:time || '3000'
  443. })
  444. },
  445. handleInp(index,e,type,itemType){ //分组不能输入负数
  446. const value = e.target.value;
  447. if(type === 'FeatureNumber') { //序号只能输入数字和.
  448. this.disFeatureList[index].code = value.replace(/[^\d.]/g,'')
  449. } else if(type==='FeatureStand') { //关联词不能输入顿号
  450. this.disFeatureList[index].standard = value.replace(/、/g,'')
  451. } else if ( type === 'FormulaNumber') {
  452. //计算公式只能输入以下内容: 任、一、二、三、四、五、六、七、八、九、十、0-9、/、.、(、)、(、)
  453. this.disFormulaList[index].formula = value.replace(/[^\u4EFB\u4E00\u4E8C\u4E09\u56DB\u4E94\u516D\u4E03\u516B\u4E5D\u53410-9\/\.+\(\)\(\)]/g,'').replace(/[\(]/g, '(').replace(/[\)]/g, ')').replace(/' '/g, '')
  454. } else if ( type === 'FeatureRelate') {
  455. if(itemType == 3) {
  456. this.disFeatureList[index].relation = value.replace(/、/g,'')
  457. }
  458. }
  459. // const item = this.selectedIndexList[index].indexDesc;
  460. // e.target.value = value.replace(/[^\d]/g,'');
  461. // this.selectedIndexList[index].indexDesc = item.replace(/[^\d]/g,'');
  462. },
  463. clickItem(index, type) {
  464. switch(type) {
  465. case 'FeatureType':
  466. this.disFeatureList[index].typeNull = ''
  467. this.disFeatureList[index].code = ''
  468. this.disFeatureList[index].standard = ''
  469. this.disFeatureList[index].relation = ''
  470. this.disFeatureList[index].result = ''
  471. this.disFeatureList[index].formula = ''
  472. return this.disFeatureList = JSON.parse(JSON.stringify(this.disFeatureList))
  473. case 'FeatureNumber':
  474. this.disFeatureList[index].codeNull = ''
  475. this.disFeatureList[index].verifyCode = ''
  476. this.disFeatureList[index].codeError = ''
  477. return this.disFeatureList = JSON.parse(JSON.stringify(this.disFeatureList))
  478. case 'FeatureStand':
  479. this.disFeatureList[index].verifyStandard =''
  480. this.disFeatureList[index].standardNull =''
  481. return this.disFeatureList = JSON.parse(JSON.stringify(this.disFeatureList))
  482. case 'FeatureRelate':
  483. this.disFeatureList[index].verifyRelation =''
  484. return this.disFeatureList = JSON.parse(JSON.stringify(this.disFeatureList))
  485. case 'FeatureResult':
  486. this.disFeatureList[index].verifyResult =''
  487. return this.disFeatureList = JSON.parse(JSON.stringify(this.disFeatureList))
  488. case 'FeatureResult':
  489. this.disFeatureList[index].verifyResult =''
  490. return this.disFeatureList = JSON.parse(JSON.stringify(this.disFeatureList))
  491. case 'FormulaType':
  492. this.disFormulaList[index].verifyType =''
  493. return this.disFormulaList = JSON.parse(JSON.stringify(this.disFormulaList))
  494. case 'FormulaNumber':
  495. this.disFormulaList[index].verifyFormula =''
  496. return this.disFormulaList = JSON.parse(JSON.stringify(this.disFormulaList))
  497. }
  498. },
  499. warning(msg,type){
  500. this.$message({
  501. showClose: true,
  502. message:msg,
  503. type:type||'warning'
  504. })
  505. }
  506. }
  507. }
  508. </script>
  509. <style lang="less">
  510. @import '../../less/common.less';
  511. .AddDiagBaseWrapper {
  512. color: #606266;
  513. .topBack {
  514. top: 0;
  515. }
  516. .groupTitle {
  517. background-color: #fff;
  518. height: 40px;
  519. line-height: 40px;
  520. padding-left: 20px;
  521. }
  522. .searchInput, .searchName {
  523. display: inline-block;
  524. height: 32px;
  525. line-height: 32px;
  526. border: 1px solid #a9a9a9;
  527. margin: 0px 0 0 0;
  528. padding: 0 5px;
  529. float: left;
  530. margin-top: 4px;
  531. }
  532. .isRequired .el-form-item__label::before {
  533. content: '*';
  534. color: red;
  535. }
  536. .searchName {
  537. border-left: none;
  538. cursor: pointer;
  539. font-size: 16px;
  540. padding: 0 14px;
  541. }
  542. .itemList {
  543. position: absolute;
  544. display: none;
  545. background: #fff;
  546. width: 162px;
  547. max-height: 150px;
  548. border: 1px solid #a9a9a9;
  549. left: 138px;
  550. top: 37px;
  551. z-index: 2;
  552. overflow-y: auto;
  553. }
  554. .diagItem {
  555. padding: 0 5px;
  556. height: 30px;
  557. line-height: 30px;
  558. font-size: 14px;
  559. cursor: pointer;
  560. }
  561. .diagItem:hover {
  562. background: #f5f7fa;
  563. }
  564. .addDepartForm {
  565. position: relative;
  566. background-color: #fff;
  567. padding: 20px;
  568. margin: 70px 20px 0px 20px;
  569. }
  570. .addDiagName {
  571. position: relative;
  572. }
  573. .symptomList {
  574. position: relative;
  575. background-color: #fff;
  576. padding: 20px 20px 100px 20px;
  577. margin: 0px 20px 40px 20px;
  578. min-height: 400px;
  579. }
  580. .diagTable {
  581. width: 100%;
  582. border-collapse: collapse;
  583. margin-bottom: 20px;
  584. tr {
  585. td {
  586. padding: 5px 10px;
  587. border: 1px solid #a9a9a9;
  588. text-align: center;
  589. }
  590. .FormulaOpera, .FeatureOpera{
  591. background: #fff;
  592. border: none;
  593. text-align: left;
  594. padding-left: 30px;
  595. }
  596. }
  597. .selectedContent {
  598. width: 25%;
  599. }
  600. .selectedContentGroup {
  601. width: 55%;
  602. }
  603. .selectedContentOpera {
  604. width: 20%;
  605. }
  606. }
  607. .groupInput {
  608. text-align: center;
  609. height: 28px;
  610. color: #606266;
  611. width: 80%;
  612. }
  613. .btn {
  614. position: absolute;
  615. background-color: #fff;
  616. width: 100%;
  617. margin: 20px 0;
  618. height: 40px;
  619. bottom: 0px;
  620. right: 0px;
  621. .btnBox {
  622. position: absolute;
  623. right: 0px;
  624. }
  625. .el-button {
  626. margin-right: 20px;
  627. }
  628. }
  629. .tableTitle{
  630. background: rgba(239,243,249,1);
  631. }
  632. .require::after{
  633. content:"*";
  634. color: red;
  635. }
  636. .borderRed {
  637. border: 1px solid red !important;
  638. }
  639. .colorRed {
  640. color: red;
  641. }
  642. .FeatureSort {
  643. width: 5%;
  644. }
  645. .FeatureType {
  646. width: 7%;
  647. }
  648. .FeatureNumber {
  649. width: 8%;
  650. }
  651. .FeatureStand {
  652. width: 20%;
  653. }
  654. .FeatureRelate {
  655. width: 20%;
  656. }
  657. .FeatureResult {
  658. width: 20%;
  659. }
  660. .FeatureOpera{
  661. width: 20%;
  662. }
  663. .FormulaSort{
  664. width: 5%;
  665. }
  666. .FormulaType{
  667. width: 7%;
  668. }
  669. .FormulaNumber{
  670. width: 68%;
  671. }
  672. .FormulaOpera{
  673. width: 20%;
  674. }
  675. .btnOpera {
  676. width:16px;
  677. height:16px;
  678. background:rgba(176,190,197,1);
  679. border-radius: 50%;
  680. color: #fff;
  681. line-height: 16px;
  682. text-align: center;
  683. }
  684. /deep/.el-input--mini .el-input__inner {
  685. width: 80px;
  686. }
  687. /deep/ .is-disabled {
  688. background: #ECECEC;
  689. color: #AAAAAA;
  690. border: none;
  691. }
  692. .selectType {
  693. input {
  694. border: 1px solid red;
  695. }
  696. input:hover {
  697. border: 1px solid red;
  698. }
  699. }
  700. .moduleTitle {
  701. margin: 0 0 10px 0;
  702. }
  703. .inpDisabled{
  704. background: #ECECEC;
  705. color: #AAAAAA;
  706. border: none;
  707. cursor: not-allowed;
  708. }
  709. .inpTips {
  710. font-size: 13px;
  711. color: red;
  712. margin-bottom: 10px;
  713. }
  714. }
  715. </style>