AddDiagBase.vue 31 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780
  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" :readonly="!item.type" :class="{borderRed:item.verifyFormula,inpDisabled:!item.type}" :title="item.formula" type="text" v-model.trim="item.formula" @input="handleInp(index,$event,'FormulaNumber',item.type)" @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. if(disFormulaList[i].type == 91 && disFormulaList[i].formula.indexOf("拟诊") > -1) {
  387. const noError = disFormulaList.filter(item => item.type == 92).length > 0
  388. if(!noError) {
  389. disFormulaList[i].verifyFormula = "公式格式错误"
  390. const errStr = "诊断公式第" + (i+ 1) +"行公式格式错误"
  391. errStrList.push(errStr)
  392. formulaListErrNum++;
  393. } else {
  394. disFormulaList[i].verifyFormula = ""
  395. }
  396. }
  397. }
  398. if(disFormulaList.length) {
  399. this.disFormulaList = JSON.parse(JSON.stringify(disFormulaList))
  400. }
  401. let errorStr =''
  402. for(let i = 0; i <errStrList.length; i++) {
  403. errorStr += '<p>'+errStrList[i]+'</p>'
  404. }
  405. if(errStrList.length >0 ||codeErrorNum > 0 ||formulaListErrNum > 0) {
  406. this.$alert(errorStr,'错误信息',{
  407. dangerouslyUseHTMLString: true,
  408. confirmButtonText: '确定',
  409. callback: action => {
  410. /*this.$message({
  411. type: 'info',
  412. message: `action: ${ action }`
  413. });*/
  414. }
  415. });
  416. return
  417. }
  418. // this.showDelDialog()
  419. return this.diagBaseVerifyData(type)
  420. },
  421. diagBaseVerifyData(type) {
  422. const param = {
  423. disFeature: this.disFeatureListResult,
  424. disName: this.disName,
  425. disformula: this.disFormulaListResult,
  426. id: this.id,
  427. modifier: this.modifier
  428. }
  429. return api.diagBaseVerifyData(param).then((res) => {
  430. const data = res.data.data
  431. if(type =='save') {
  432. if(data.hasQuestion) {
  433. this.warning('校验完成请先调整问题词,该数据已保存')
  434. } else {
  435. this.warning('校验成功', 'success')
  436. }
  437. }
  438. this.id = data.id
  439. this.disFeatureList = data.disFeature
  440. if(data.disformula.length) {
  441. this.disFormulaList = data.disformula
  442. }else {
  443. this.disFormulaList = [
  444. {
  445. type:'',
  446. code:'',
  447. standard:'',
  448. relation:'',
  449. result:'',
  450. formula:''
  451. }
  452. ]
  453. }
  454. this.hasQuestion = data.hasQuestion
  455. })
  456. },
  457. showConfirmDialog(msg, resolve) {
  458. this.$alert(msg, '提示', {
  459. confirmButtonText: '确定',
  460. type: 'warning'
  461. }).then(() => {
  462. resolve();
  463. }).catch(() => {});
  464. },
  465. warning(msg, type,time) {
  466. this.$message({
  467. showClose: true,
  468. message: msg,
  469. type: type || 'warning',
  470. duration:time || '3000'
  471. })
  472. },
  473. handleInp(index,e,type,itemType){ //分组不能输入负数
  474. const value = e.target.value;
  475. if(type === 'FeatureNumber') { //序号只能输入数字和.
  476. this.disFeatureList[index].code = value.replace(/[^\d.]/g,'')
  477. } else if(type==='FeatureStand') { //关联词不能输入顿号
  478. this.disFeatureList[index].standard = value.replace(/、/g,'')
  479. } else if ( type === 'FormulaNumber') {
  480. console.log(itemType, 555555555)
  481. //计算公式确诊只能输入以下内容: 任、一、二、三、四、五、六、七、八、九、十、拟、诊、0-9、/、.、(、)、(、)
  482. if(itemType == 91) {
  483. 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, '')
  484. } else { //计算公式其他只能输入以下内容: 任、一、二、三、四、五、六、七、八、九、十、0-9、/、.、(、)、(、)
  485. 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, '')
  486. }
  487. } else if ( type === 'FeatureRelate') {
  488. if(itemType == 3) {
  489. this.disFeatureList[index].relation = value.replace(/、/g,'')
  490. }
  491. }
  492. // const item = this.selectedIndexList[index].indexDesc;
  493. // e.target.value = value.replace(/[^\d]/g,'');
  494. // this.selectedIndexList[index].indexDesc = item.replace(/[^\d]/g,'');
  495. },
  496. clickItem(index, type) {
  497. switch(type) {
  498. case 'FeatureType':
  499. this.disFeatureList[index].typeNull = ''
  500. this.disFeatureList[index].code = ''
  501. this.disFeatureList[index].standard = ''
  502. this.disFeatureList[index].relation = ''
  503. this.disFeatureList[index].result = ''
  504. this.disFeatureList[index].formula = ''
  505. return this.disFeatureList = JSON.parse(JSON.stringify(this.disFeatureList))
  506. case 'FeatureNumber':
  507. this.disFeatureList[index].codeNull = ''
  508. this.disFeatureList[index].verifyCode = ''
  509. this.disFeatureList[index].codeError = ''
  510. return this.disFeatureList = JSON.parse(JSON.stringify(this.disFeatureList))
  511. case 'FeatureStand':
  512. this.disFeatureList[index].verifyStandard =''
  513. this.disFeatureList[index].standardNull =''
  514. return this.disFeatureList = JSON.parse(JSON.stringify(this.disFeatureList))
  515. case 'FeatureRelate':
  516. this.disFeatureList[index].verifyRelation =''
  517. return this.disFeatureList = JSON.parse(JSON.stringify(this.disFeatureList))
  518. case 'FeatureResult':
  519. this.disFeatureList[index].verifyResult =''
  520. return this.disFeatureList = JSON.parse(JSON.stringify(this.disFeatureList))
  521. case 'FeatureResult':
  522. this.disFeatureList[index].verifyResult =''
  523. return this.disFeatureList = JSON.parse(JSON.stringify(this.disFeatureList))
  524. case 'FormulaType':
  525. this.disFormulaList[index].verifyType =''
  526. return this.disFormulaList = JSON.parse(JSON.stringify(this.disFormulaList))
  527. case 'FormulaNumber':
  528. this.disFormulaList[index].verifyFormula =''
  529. return this.disFormulaList = JSON.parse(JSON.stringify(this.disFormulaList))
  530. }
  531. },
  532. warning(msg,type){
  533. this.$message({
  534. showClose: true,
  535. message:msg,
  536. type:type||'warning'
  537. })
  538. }
  539. }
  540. }
  541. </script>
  542. <style lang="less">
  543. @import '../../less/common.less';
  544. .AddDiagBaseWrapper {
  545. color: #606266;
  546. .topBack {
  547. top: 0;
  548. }
  549. .groupTitle {
  550. background-color: #fff;
  551. height: 40px;
  552. line-height: 40px;
  553. padding-left: 20px;
  554. }
  555. .searchInput, .searchName {
  556. display: inline-block;
  557. height: 32px;
  558. line-height: 32px;
  559. border: 1px solid #a9a9a9;
  560. margin: 0px 0 0 0;
  561. padding: 0 5px;
  562. float: left;
  563. margin-top: 4px;
  564. }
  565. .isRequired .el-form-item__label::before {
  566. content: '*';
  567. color: red;
  568. }
  569. .searchName {
  570. border-left: none;
  571. cursor: pointer;
  572. font-size: 16px;
  573. padding: 0 14px;
  574. }
  575. .itemList {
  576. position: absolute;
  577. display: none;
  578. background: #fff;
  579. width: 162px;
  580. max-height: 150px;
  581. border: 1px solid #a9a9a9;
  582. left: 138px;
  583. top: 37px;
  584. z-index: 2;
  585. overflow-y: auto;
  586. }
  587. .diagItem {
  588. padding: 0 5px;
  589. height: 30px;
  590. line-height: 30px;
  591. font-size: 14px;
  592. cursor: pointer;
  593. }
  594. .diagItem:hover {
  595. background: #f5f7fa;
  596. }
  597. .addDepartForm {
  598. position: relative;
  599. background-color: #fff;
  600. padding: 20px;
  601. margin: 70px 20px 0px 20px;
  602. }
  603. .addDiagName {
  604. position: relative;
  605. }
  606. .symptomList {
  607. position: relative;
  608. background-color: #fff;
  609. padding: 20px 20px 100px 20px;
  610. margin: 0px 20px 40px 20px;
  611. min-height: 400px;
  612. }
  613. .diagTable {
  614. width: 100%;
  615. border-collapse: collapse;
  616. margin-bottom: 20px;
  617. tr {
  618. td {
  619. padding: 5px 10px;
  620. border: 1px solid #a9a9a9;
  621. text-align: center;
  622. }
  623. .FormulaOpera, .FeatureOpera{
  624. background: #fff;
  625. border: none;
  626. text-align: left;
  627. padding-left: 30px;
  628. }
  629. }
  630. .selectedContent {
  631. width: 25%;
  632. }
  633. .selectedContentGroup {
  634. width: 55%;
  635. }
  636. .selectedContentOpera {
  637. width: 20%;
  638. }
  639. }
  640. .groupInput {
  641. text-align: center;
  642. height: 28px;
  643. color: #606266;
  644. width: 80%;
  645. }
  646. .btn {
  647. position: absolute;
  648. background-color: #fff;
  649. width: 100%;
  650. margin: 20px 0;
  651. height: 40px;
  652. bottom: 0px;
  653. right: 0px;
  654. .btnBox {
  655. position: absolute;
  656. right: 0px;
  657. }
  658. .el-button {
  659. margin-right: 20px;
  660. }
  661. }
  662. .tableTitle{
  663. background: rgba(239,243,249,1);
  664. }
  665. .require::after{
  666. content:"*";
  667. color: red;
  668. }
  669. .borderRed {
  670. border: 1px solid red !important;
  671. }
  672. .colorRed {
  673. color: red;
  674. }
  675. .FeatureSort {
  676. width: 5%;
  677. }
  678. .FeatureType {
  679. width: 7%;
  680. }
  681. .FeatureNumber {
  682. width: 8%;
  683. }
  684. .FeatureStand {
  685. width: 25%;
  686. }
  687. .FeatureRelate {
  688. width: 25%;
  689. }
  690. .FeatureResult {
  691. width: 20%;
  692. }
  693. .FeatureOpera{
  694. width: 10%;
  695. }
  696. .FormulaSort{
  697. width: 5%;
  698. }
  699. .FormulaType{
  700. width: 7%;
  701. }
  702. .FormulaNumber{
  703. width: 78%;
  704. }
  705. .FormulaOpera{
  706. width: 10%;
  707. }
  708. .btnOpera {
  709. width:16px;
  710. height:16px;
  711. background:rgba(176,190,197,1);
  712. border-radius: 50%;
  713. color: #fff;
  714. line-height: 16px;
  715. text-align: center;
  716. }
  717. /deep/.el-input--mini .el-input__inner {
  718. width: 80px;
  719. }
  720. /deep/ .is-disabled {
  721. background: #ECECEC;
  722. color: #AAAAAA;
  723. border: none;
  724. }
  725. .selectType {
  726. input {
  727. border: 1px solid red;
  728. }
  729. input:hover {
  730. border: 1px solid red;
  731. }
  732. }
  733. .moduleTitle {
  734. margin: 0 0 10px 0;
  735. }
  736. .inpDisabled{
  737. background: #ECECEC;
  738. color: #AAAAAA;
  739. border: none;
  740. cursor: not-allowed;
  741. }
  742. .inpTips {
  743. font-size: 13px;
  744. color: red;
  745. margin-bottom: 10px;
  746. }
  747. }
  748. </style>