AddDiagBase.vue 30 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763
  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('save')"
  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. if(data.disFeature.length) {
  180. this.disFeatureList = data.disFeature
  181. }
  182. if(data.disformula.length) {
  183. this.disFormulaList = data.disformula
  184. }
  185. this.hasQuestion = data.hasQuestion
  186. }
  187. } else {
  188. }
  189. },
  190. watch: {
  191. // searchTagVal(newVal, preVal) {
  192. // if(newVal.trim() == ''){
  193. // this.getTagList()
  194. // }else if(newVal.trim() != preVal.trim()){
  195. // this.getTagList()
  196. // }
  197. // }
  198. },
  199. methods: {
  200. getDropList() {
  201. return apis.getKnowledgeEnums().then((res) =>{
  202. if(res.data.code === '0') {
  203. this.featureTypeList = res.data.data.diagnoseFeatureTypeEnum.filter(item => item.key != 0)
  204. this.formulaTypeList = res.data.data.diagnoseTypeEnum
  205. }
  206. })
  207. },
  208. close() {
  209. this.diagList = [];
  210. if(this.diagList.length>0){this.$refs['diagList'].style.display = 'none';}
  211. },
  212. back(){
  213. this.$router.go(-1);
  214. },
  215. searchDiag() {
  216. if(!this.searchDiagVal) {
  217. return
  218. }
  219. const param = {
  220. "name": this.searchDiagVal,
  221. }
  222. api.diagBaseIndex(param).then((res)=>{
  223. if(res.data.code === '0') {
  224. this.diagList = res.data.data
  225. if(this.diagList.length>0) {this.$refs['diagList'].style.display = 'block'}
  226. }
  227. })
  228. },
  229. selectDiag(item) {
  230. this.disName = item.name
  231. this.$refs['diagList'].style.display='none'
  232. this.searchDiagVal = ''
  233. this.diagList=[]
  234. },
  235. focuInput() {
  236. this.$refs['diagList'].style.display='none'
  237. },
  238. addItem(index, type) {
  239. if(type == 1) {
  240. const item = {
  241. type:'',
  242. code:'',
  243. standard:'',
  244. relation:'',
  245. result:'',
  246. }
  247. this.disFeatureList.splice(index+1, 0, item)
  248. }else if(type == 2) {
  249. const item = {
  250. type:'',
  251. code:'',
  252. standard:'',
  253. relation:'',
  254. result:'',
  255. }
  256. this.disFormulaList.splice(index+1, 0, item)
  257. }
  258. },
  259. delItem(index, type) {
  260. if(type == 1) {
  261. this.disFeatureList.splice(index, 1)
  262. }else if(type == 2) {
  263. this.disFormulaList.splice(index, 1)
  264. }
  265. },
  266. updateNeo() {
  267. this.submitForm('updateNeo').then(() => {
  268. if(this.hasQuestion == 0) {
  269. const param = {
  270. id: this.id,
  271. modifier: this.modifier
  272. }
  273. api.diagBaseUpdateNeo(param).then((res) => {
  274. if(res.data.code == 0) {
  275. this.warning('更新成功', 'success');
  276. } else {
  277. this.warning(res.data.msg)
  278. }
  279. })
  280. } else {
  281. this.warning('更新失败');
  282. }
  283. })
  284. // api.diagBaseUpdateNeo(param).then((res) =>{
  285. // })
  286. },
  287. exportDiagnosticAll(){
  288. this.submitForm('export').then(() => {
  289. if(this.hasQuestion == 0) {
  290. const param = {
  291. diagnoseId: this.id
  292. }
  293. api.exportDiagnosticAll(param).then((res) => {
  294. utils.downloadExportedData(res.data,'诊断依据');
  295. })
  296. }else {
  297. this.warning('导出失败');
  298. }
  299. })
  300. },
  301. submitForm(type) {
  302. if(!this.disName) {
  303. this.warning('请选择诊断');
  304. return
  305. }
  306. this.disFeatureListResult = []
  307. this.disFormulaListResult = []
  308. let errStrList = [];
  309. for(let i = 0; i < this.disFeatureList.length; i++) {
  310. if(this.disFeatureList[i].type || this.disFeatureList[i].code || this.disFeatureList[i].standard || this.disFeatureList[i].relation || this.disFeatureList[i].result) {
  311. this.disFeatureListResult.push(this.disFeatureList[i])
  312. }
  313. }
  314. for(let i = 0; i < this.disFormulaList.length; i++) {
  315. if(this.disFormulaList[i].type || this.disFormulaList[i].formula ) {
  316. this.disFormulaListResult.push(this.disFormulaList[i])
  317. }
  318. }
  319. let disFeatureList;
  320. if(this.disFeatureListResult.length) {
  321. disFeatureList = this.disFeatureListResult;
  322. } else {
  323. disFeatureList = [
  324. {
  325. type:'',
  326. code:'',
  327. standard:'',
  328. relation:'',
  329. result:'',
  330. formula:''
  331. }
  332. ];
  333. }
  334. const disFormulaList = this.disFormulaListResult;
  335. let codeErrorNum = 0;
  336. for(let i=0; i < disFeatureList.length; i++) {
  337. if(!disFeatureList[i].type) {
  338. disFeatureList[i].typeNull = "未选择类型"
  339. }
  340. if(!disFeatureList[i].code) {
  341. disFeatureList[i].codeNull = "未填写编码"
  342. }
  343. if(!disFeatureList[i].standard) {
  344. disFeatureList[i].standardNull = "未填写标准词"
  345. }
  346. if(!disFeatureList[i].type||!disFeatureList[i].code||!disFeatureList[i].standard) {
  347. const errStr = "第" + (i+ 1) +"行必填项未填写"
  348. errStrList.push(errStr)
  349. }
  350. if(disFeatureList[i].type == '3' && disFeatureList[i].result && !disFeatureList[i].relation) {
  351. disFeatureList[i].relationNull = "未填写关联词"
  352. const errStr = "第" + (i+ 1) +"行化验项数据填写不完整"
  353. errStrList.push(errStr)
  354. }
  355. let regex =new RegExp(`${disFeatureList[i].type}\\.[1-9]\\d?`)
  356. if(disFeatureList[i].code &&!regex.test(disFeatureList[i].code)) { //序号和类型不匹配
  357. codeErrorNum++
  358. disFeatureList[i].codeError = "序号和类型不匹配"
  359. const errStr = "疾病特征第" + (i+ 1) +"行序号和类型不匹配"
  360. errStrList.push(errStr)
  361. } else { //序号和类型匹配但序号重复
  362. let codeArr = disFeatureList.filter(item => item.code ===disFeatureList[i].code)
  363. console.log('codeArr',codeArr)
  364. if(codeArr.length > 1) {
  365. codeErrorNum++
  366. disFeatureList[i].codeError = "序号重复"
  367. const errStr = "疾病特征第" + (i+ 1) +"序号重复"
  368. errStrList.push(errStr)
  369. }
  370. }
  371. }
  372. this.disFeatureList = JSON.parse(JSON.stringify(disFeatureList))
  373. let formulaListErrNum = 0
  374. for(let i=0; i < disFormulaList.length; i++) {
  375. if(disFormulaList[i].type&&!disFormulaList[i].formula ) {
  376. disFormulaList[i].verifyFormula = "诊断公式不能为空"
  377. formulaListErrNum++;
  378. const errStr = "诊断公式第" + (i+ 1) +"行诊断公式不能为空"
  379. errStrList.push(errStr)
  380. } else if(disFormulaList[i].formula&&!disFormulaList[i].type) {
  381. disFormulaList[i].verifyType = "诊断类型不能为空"
  382. const errStr = "诊断公式第" + (i+ 1) +"行诊断类型不能为空"
  383. errStrList.push(errStr)
  384. formulaListErrNum++;
  385. }
  386. }
  387. if(disFormulaList.length) {
  388. this.disFormulaList = JSON.parse(JSON.stringify(disFormulaList))
  389. }
  390. let errorStr =''
  391. for(let i = 0; i <errStrList.length; i++) {
  392. errorStr += '<p>'+errStrList[i]+'</p>'
  393. }
  394. if(errStrList.length >0 ||codeErrorNum > 0 ||formulaListErrNum > 0) {
  395. this.$alert(errorStr,'错误信息',{
  396. dangerouslyUseHTMLString: true,
  397. confirmButtonText: '确定',
  398. callback: action => {
  399. /*this.$message({
  400. type: 'info',
  401. message: `action: ${ action }`
  402. });*/
  403. }
  404. });
  405. return
  406. }
  407. // this.showDelDialog()
  408. return this.diagBaseVerifyData(type)
  409. },
  410. diagBaseVerifyData(type) {
  411. const param = {
  412. disFeature: this.disFeatureListResult,
  413. disName: this.disName,
  414. disformula: this.disFormulaListResult,
  415. id: this.id,
  416. modifier: this.modifier
  417. }
  418. return api.diagBaseVerifyData(param).then((res) => {
  419. const data = res.data.data
  420. if(type =='save') {
  421. if(data.hasQuestion) {
  422. this.warning('校验完成请先调整问题词,该数据已保存')
  423. } else {
  424. this.warning('校验成功', 'success')
  425. }
  426. }
  427. this.id = data.id
  428. this.disFeatureList = data.disFeature
  429. if(data.disformula.length) {
  430. this.disFormulaList = data.disformula
  431. }else {
  432. this.disFormulaList = [
  433. {
  434. type:'',
  435. code:'',
  436. standard:'',
  437. relation:'',
  438. result:'',
  439. formula:''
  440. }
  441. ]
  442. }
  443. this.hasQuestion = data.hasQuestion
  444. })
  445. },
  446. showConfirmDialog(msg, resolve) {
  447. this.$alert(msg, '提示', {
  448. confirmButtonText: '确定',
  449. type: 'warning'
  450. }).then(() => {
  451. resolve();
  452. }).catch(() => {});
  453. },
  454. warning(msg, type,time) {
  455. this.$message({
  456. showClose: true,
  457. message: msg,
  458. type: type || 'warning',
  459. duration:time || '3000'
  460. })
  461. },
  462. handleInp(index,e,type,itemType){ //分组不能输入负数
  463. const value = e.target.value;
  464. if(type === 'FeatureNumber') { //序号只能输入数字和.
  465. this.disFeatureList[index].code = value.replace(/[^\d.]/g,'')
  466. } else if(type==='FeatureStand') { //关联词不能输入顿号
  467. this.disFeatureList[index].standard = value.replace(/、/g,'')
  468. } else if ( type === 'FormulaNumber') {
  469. //计算公式只能输入以下内容: 任、一、二、三、四、五、六、七、八、九、十、拟、诊、0-9、/、.、(、)、(、)
  470. this.disFormulaList[index].formula = value.replace(/[^\u4EFB\u4E00\u4E8C\u4E09\u56DB\u4E94\u516D\u4E03\u516B\u4E5D\u5341\u62df\u8bca0-9\/\.+\(\)\(\)]/g,'').replace(/[\(]/g, '(').replace(/[\)]/g, ')').replace(/' '/g, '')
  471. } else if ( type === 'FeatureRelate') {
  472. if(itemType == 3) {
  473. this.disFeatureList[index].relation = value.replace(/、/g,'')
  474. }
  475. }
  476. // const item = this.selectedIndexList[index].indexDesc;
  477. // e.target.value = value.replace(/[^\d]/g,'');
  478. // this.selectedIndexList[index].indexDesc = item.replace(/[^\d]/g,'');
  479. },
  480. clickItem(index, type) {
  481. switch(type) {
  482. case 'FeatureType':
  483. this.disFeatureList[index].typeNull = ''
  484. this.disFeatureList[index].code = ''
  485. this.disFeatureList[index].standard = ''
  486. this.disFeatureList[index].relation = ''
  487. this.disFeatureList[index].result = ''
  488. this.disFeatureList[index].formula = ''
  489. return this.disFeatureList = JSON.parse(JSON.stringify(this.disFeatureList))
  490. case 'FeatureNumber':
  491. this.disFeatureList[index].codeNull = ''
  492. this.disFeatureList[index].verifyCode = ''
  493. this.disFeatureList[index].codeError = ''
  494. return this.disFeatureList = JSON.parse(JSON.stringify(this.disFeatureList))
  495. case 'FeatureStand':
  496. this.disFeatureList[index].verifyStandard =''
  497. this.disFeatureList[index].standardNull =''
  498. return this.disFeatureList = JSON.parse(JSON.stringify(this.disFeatureList))
  499. case 'FeatureRelate':
  500. this.disFeatureList[index].verifyRelation =''
  501. return this.disFeatureList = JSON.parse(JSON.stringify(this.disFeatureList))
  502. case 'FeatureResult':
  503. this.disFeatureList[index].verifyResult =''
  504. return this.disFeatureList = JSON.parse(JSON.stringify(this.disFeatureList))
  505. case 'FeatureResult':
  506. this.disFeatureList[index].verifyResult =''
  507. return this.disFeatureList = JSON.parse(JSON.stringify(this.disFeatureList))
  508. case 'FormulaType':
  509. this.disFormulaList[index].verifyType =''
  510. return this.disFormulaList = JSON.parse(JSON.stringify(this.disFormulaList))
  511. case 'FormulaNumber':
  512. this.disFormulaList[index].verifyFormula =''
  513. return this.disFormulaList = JSON.parse(JSON.stringify(this.disFormulaList))
  514. }
  515. },
  516. warning(msg,type){
  517. this.$message({
  518. showClose: true,
  519. message:msg,
  520. type:type||'warning'
  521. })
  522. }
  523. }
  524. }
  525. </script>
  526. <style lang="less">
  527. @import '../../less/common.less';
  528. .AddDiagBaseWrapper {
  529. color: #606266;
  530. .topBack {
  531. top: 0;
  532. }
  533. .groupTitle {
  534. background-color: #fff;
  535. height: 40px;
  536. line-height: 40px;
  537. padding-left: 20px;
  538. }
  539. .searchInput, .searchName {
  540. display: inline-block;
  541. height: 32px;
  542. line-height: 32px;
  543. border: 1px solid #a9a9a9;
  544. margin: 0px 0 0 0;
  545. padding: 0 5px;
  546. float: left;
  547. margin-top: 4px;
  548. }
  549. .isRequired .el-form-item__label::before {
  550. content: '*';
  551. color: red;
  552. }
  553. .searchName {
  554. border-left: none;
  555. cursor: pointer;
  556. font-size: 16px;
  557. padding: 0 14px;
  558. }
  559. .itemList {
  560. position: absolute;
  561. display: none;
  562. background: #fff;
  563. width: 162px;
  564. max-height: 150px;
  565. border: 1px solid #a9a9a9;
  566. left: 138px;
  567. top: 37px;
  568. z-index: 2;
  569. overflow-y: auto;
  570. }
  571. .diagItem {
  572. padding: 0 5px;
  573. height: 30px;
  574. line-height: 30px;
  575. font-size: 14px;
  576. cursor: pointer;
  577. }
  578. .diagItem:hover {
  579. background: #f5f7fa;
  580. }
  581. .addDepartForm {
  582. position: relative;
  583. background-color: #fff;
  584. padding: 20px;
  585. margin: 70px 20px 0px 20px;
  586. }
  587. .addDiagName {
  588. position: relative;
  589. }
  590. .symptomList {
  591. position: relative;
  592. background-color: #fff;
  593. padding: 20px 20px 100px 20px;
  594. margin: 0px 20px 40px 20px;
  595. min-height: 400px;
  596. }
  597. .diagTable {
  598. width: 100%;
  599. border-collapse: collapse;
  600. margin-bottom: 20px;
  601. tr {
  602. td {
  603. padding: 5px 10px;
  604. border: 1px solid #a9a9a9;
  605. text-align: center;
  606. }
  607. .FormulaOpera, .FeatureOpera{
  608. background: #fff;
  609. border: none;
  610. text-align: left;
  611. padding-left: 30px;
  612. }
  613. }
  614. .selectedContent {
  615. width: 25%;
  616. }
  617. .selectedContentGroup {
  618. width: 55%;
  619. }
  620. .selectedContentOpera {
  621. width: 20%;
  622. }
  623. }
  624. .groupInput {
  625. text-align: center;
  626. height: 28px;
  627. color: #606266;
  628. width: 80%;
  629. }
  630. .btn {
  631. position: absolute;
  632. background-color: #fff;
  633. width: 100%;
  634. margin: 20px 0;
  635. height: 40px;
  636. bottom: 0px;
  637. right: 0px;
  638. .btnBox {
  639. position: absolute;
  640. right: 0px;
  641. }
  642. .el-button {
  643. margin-right: 20px;
  644. }
  645. }
  646. .tableTitle{
  647. background: rgba(239,243,249,1);
  648. }
  649. .require::after{
  650. content:"*";
  651. color: red;
  652. }
  653. .borderRed {
  654. border: 1px solid red !important;
  655. }
  656. .colorRed {
  657. color: red;
  658. }
  659. .FeatureSort {
  660. width: 5%;
  661. }
  662. .FeatureType {
  663. width: 7%;
  664. }
  665. .FeatureNumber {
  666. width: 8%;
  667. }
  668. .FeatureStand {
  669. width: 25%;
  670. }
  671. .FeatureRelate {
  672. width: 25%;
  673. }
  674. .FeatureResult {
  675. width: 20%;
  676. }
  677. .FeatureOpera{
  678. width: 10%;
  679. }
  680. .FormulaSort{
  681. width: 5%;
  682. }
  683. .FormulaType{
  684. width: 7%;
  685. }
  686. .FormulaNumber{
  687. width: 78%;
  688. }
  689. .FormulaOpera{
  690. width: 10%;
  691. }
  692. .btnOpera {
  693. width:16px;
  694. height:16px;
  695. background:rgba(176,190,197,1);
  696. border-radius: 50%;
  697. color: #fff;
  698. line-height: 16px;
  699. text-align: center;
  700. }
  701. /deep/.el-input--mini .el-input__inner {
  702. width: 80px;
  703. }
  704. /deep/ .is-disabled {
  705. background: #ECECEC;
  706. color: #AAAAAA;
  707. border: none;
  708. }
  709. .selectType {
  710. input {
  711. border: 1px solid red;
  712. }
  713. input:hover {
  714. border: 1px solid red;
  715. }
  716. }
  717. .moduleTitle {
  718. margin: 0 0 10px 0;
  719. }
  720. .inpDisabled{
  721. background: #ECECEC;
  722. color: #AAAAAA;
  723. border: none;
  724. cursor: not-allowed;
  725. }
  726. .inpTips {
  727. font-size: 13px;
  728. color: red;
  729. margin-bottom: 10px;
  730. }
  731. }
  732. </style>