AddDiagBase.vue 54 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697989910010110210310410510610710810911011111211311411511611711811912012112212312412512612712812913013113213313413513613713813914014114214314414514614714814915015115215315415515615715815916016116216316416516616716816917017117217317417517617717817918018118218318418518618718818919019119219319419519619719819920020120220320420520620720820921021121221321421521621721821922022122222322422522622722822923023123223323423523623723823924024124224324424524624724824925025125225325425525625725825926026126226326426526626726826927027127227327427527627727827928028128228328428528628728828929029129229329429529629729829930030130230330430530630730830931031131231331431531631731831932032132232332432532632732832933033133233333433533633733833934034134234334434534634734834935035135235335435535635735835936036136236336436536636736836937037137237337437537637737837938038138238338438538638738838939039139239339439539639739839940040140240340440540640740840941041141241341441541641741841942042142242342442542642742842943043143243343443543643743843944044144244344444544644744844945045145245345445545645745845946046146246346446546646746846947047147247347447547647747847948048148248348448548648748848949049149249349449549649749849950050150250350450550650750850951051151251351451551651751851952052152252352452552652752852953053153253353453553653753853954054154254354454554654754854955055155255355455555655755855956056156256356456556656756856957057157257357457557657757857958058158258358458558658758858959059159259359459559659759859960060160260360460560660760860961061161261361461561661761861962062162262362462562662762862963063163263363463563663763863964064164264364464564664764864965065165265365465565665765865966066166266366466566666766866967067167267367467567667767867968068168268368468568668768868969069169269369469569669769869970070170270370470570670770870971071171271371471571671771871972072172272372472572672772872973073173273373473573673773873974074174274374474574674774874975075175275375475575675775875976076176276376476576676776876977077177277377477577677777877978078178278378478578678778878979079179279379479579679779879980080180280380480580680780880981081181281381481581681781881982082182282382482582682782882983083183283383483583683783883984084184284384484584684784884985085185285385485585685785885986086186286386486586686786886987087187287387487587687787887988088188288388488588688788888989089189289389489589689789889990090190290390490590690790890991091191291391491591691791891992092192292392492592692792892993093193293393493593693793893994094194294394494594694794894995095195295395495595695795895996096196296396496596696796896997097197297397497597697797897998098198298398498598698798898999099199299399499599699799899910001001100210031004100510061007100810091010101110121013101410151016101710181019102010211022102310241025102610271028102910301031103210331034103510361037103810391040104110421043104410451046104710481049105010511052105310541055105610571058105910601061106210631064106510661067106810691070107110721073107410751076107710781079108010811082108310841085108610871088108910901091109210931094109510961097109810991100110111021103110411051106110711081109111011111112111311141115111611171118111911201121112211231124112511261127112811291130113111321133113411351136113711381139114011411142114311441145114611471148114911501151115211531154115511561157115811591160116111621163116411651166116711681169117011711172117311741175117611771178117911801181118211831184118511861187118811891190119111921193119411951196119711981199120012011202120312041205120612071208120912101211121212131214121512161217121812191220122112221223122412251226122712281229123012311232123312341235123612371238123912401241124212431244124512461247124812491250125112521253125412551256125712581259126012611262126312641265126612671268126912701271127212731274127512761277127812791280128112821283128412851286128712881289129012911292129312941295129612971298129913001301130213031304130513061307130813091310131113121313131413151316131713181319132013211322132313241325132613271328132913301331133213331334133513361337133813391340134113421343134413451346134713481349135013511352135313541355135613571358135913601361136213631364136513661367136813691370
  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 v-if="showDiagList&&diagList.length > 0" 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="已选添加疾病名称:" :class="{colorRed: !disNameExist}">
  26. {{disName}}
  27. </el-form-item>
  28. </el-form>
  29. <div class="symptomList">
  30. <p class="moduleTitle">疾病特征:</p>
  31. <p class="inpTips">序号输入规则“序号+.”后可输入的范围0~99;标准词只能有一个词;化验类型关联只能出现一个词,其他类型可以输入多个词;化验类型可输入结果列,其他类型不可输入</p>
  32. <table class="diagTable">
  33. <tr class="tableTitle">
  34. <td class="FeatureSort">排序</td>
  35. <td class="FeatureType require">类型</td>
  36. <td class="FeatureNumber require">序号</td>
  37. <td class="FeatureStand require">标准词</td>
  38. <td class="FeatureRelate">关联词</td>
  39. <td class="FeatureuniqueName">化验公表项</td>
  40. <td class="FeatureResult">结果</td>
  41. <td class="FeatureOpera"></td>
  42. </tr>
  43. <DisFeatureItem
  44. v-for="(item, index) in disFeatureList"
  45. :key="index"
  46. :item = "item"
  47. :index = "index"
  48. :featureTypeList = 'featureTypeList'
  49. :showDiagList = 'showDiagList'
  50. :searchIndex = 'searchIndex'
  51. :searchFiled = 'searchFiled'
  52. :searchResultList = 'searchResultList'
  53. @handleInp="handleInp($event)"
  54. @clickItem="clickItem($event)"
  55. @addItem ="addItem($event)"
  56. @delItem ="delItem($event)"
  57. @selectSearchItem = "selectSearchItem($event)"
  58. >
  59. </DisFeatureItem>
  60. </table>
  61. <p class="moduleTitle">诊断公式:</p>
  62. <p class="inpTips">可输入数字(0~9);可输入规定汉字:任、一、二、三、四、五、六、七、八、九、十,其余汉字不可输入可输入的符号:“.”、“/”、“()” “+”;确诊还可输入“拟、诊”二字;鉴别诊断的序号不可输入公式中,数据放入后该条件无效;</p>
  63. <table class="diagTable">
  64. <tr class="tableTitle">
  65. <td class="FormulaSort">排序</td>
  66. <td class="FormulaType">类型</td>
  67. <td class="FormulaNumber">公式</td>
  68. <td class="FormulaOpera"></td>
  69. </tr>
  70. <DisFormulaItem
  71. v-for="(item, index) in disFormulaList"
  72. :key="index"
  73. :item = "item"
  74. :index = "index"
  75. :formulaTypeList = 'formulaTypeList'
  76. @handleInp="handleInp($event)"
  77. @clickItem="clickItem($event)"
  78. @addItem ="addItem($event)"
  79. @delItem ="delItem($event)"
  80. >
  81. </DisFormulaItem>
  82. </table>
  83. <div class="btn clearfix">
  84. <div class="btnBox">
  85. <el-button
  86. type="primary"
  87. :disabled = "isReady"
  88. @click="saveTemp"
  89. >临时保存</el-button>
  90. <el-button
  91. type="primary"
  92. :disabled = "isReady"
  93. @click="submitForm('save')"
  94. >校验并保存数据</el-button>
  95. <el-button
  96. type="primary"
  97. :disabled = "hasQuestion != 0"
  98. @click="exportDiagnosticAll"
  99. >导出诊断依据</el-button>
  100. <el-button
  101. type="primary"
  102. :disabled = "hasQuestion != 0"
  103. @click="updateNeo"
  104. >更新图谱</el-button>
  105. </div>
  106. </div>
  107. </div>
  108. </div>
  109. </template>
  110. <script>
  111. import api from '@api/diagBase.js';
  112. import utils from '@api/utils.js';
  113. import apis from '@api/icss.js';
  114. import Textarea from './Textarea';
  115. import DisFeatureItem from './DisFeatureItem'
  116. import DisFormulaItem from './DisFormulaItem'
  117. export default {
  118. name: 'AddChronicAndIndexRelation',
  119. data() {
  120. return{
  121. id: '', //诊断id
  122. disName:'', //诊断名称
  123. modifier: '', //操作人
  124. titleText: '添加',
  125. diagList: [],
  126. featureTypeList: [],
  127. formulaTypeList: [],
  128. disFeatureList: [
  129. {
  130. type:1,
  131. code:'',
  132. standard:'',
  133. relation:'',
  134. midResult:'',
  135. formula:'',
  136. result:'',
  137. uniqueName:''
  138. }
  139. ], //疾病特征列表
  140. disFeatureListResult:[], //疾病特征列表(保存用)
  141. disFormulaList:[
  142. {
  143. type:92,
  144. code:'',
  145. standard:'',
  146. relation:'',
  147. midResult:'',
  148. result:'',
  149. formula:'',
  150. uniqueName:''
  151. }
  152. ],
  153. disFormulaListResult:[], //诊断公式列表(保存用)
  154. searchDiagVal: '',
  155. isEdit: false,
  156. saveDisable: false ,
  157. hasQuestion: 1, //是否有问题词
  158. disNameExist: true, //诊断名称是否存在
  159. hasNoUniqueName: false, //是否存在没有公表项的化验
  160. isReady:false,
  161. showDiagList: false,
  162. searchIndex: -1,
  163. searchFiled: '',
  164. searchResultList: [],
  165. loading: undefined,
  166. showSearchList: true //是否展示搜索列表(解决引接口回来比较迟输入内容为空搜索内容还存在)
  167. }
  168. },
  169. created(){
  170. this.loading = this.$loading({
  171. lock: true,
  172. text: 'Loading',
  173. spinner: 'el-icon-loading',
  174. background: 'rgba(0, 0, 0, 0.7)'
  175. });
  176. const userLoginDTO = JSON.parse(localStorage.getItem('userLoginDTO'))
  177. this.modifier = userLoginDTO && userLoginDTO.linkman
  178. this.getDropList()
  179. const { isEdit,isCopy, data } = this.$route.params;
  180. if(isEdit) {
  181. if(isEdit) {
  182. this.isEdit = isEdit;
  183. this.titleText = '修改';
  184. this.disName = data.disName
  185. this.id = data.id
  186. this.disNameExist = data.disNameExist
  187. if(data.disFeature.length) {
  188. this.disFeatureList = data.disFeature
  189. }
  190. if(data.disformula.length) {
  191. this.disFormulaList = data.disformula
  192. }
  193. this.hasQuestion = data.hasQuestion
  194. }
  195. } else if(isCopy) {
  196. this.isEdit = isEdit;
  197. this.titleText = '添加';
  198. this.disName = ''
  199. this.id = ''
  200. this.disNameExist = true
  201. if(data.disFeature.length) {
  202. const disFeatureCopy = JSON.parse(JSON.stringify(data.disFeature))
  203. for(let i = 0; i < disFeatureCopy.length; i++) {
  204. disFeatureCopy[i].verifyCode == ""
  205. disFeatureCopy[i].verifyFormula == ""
  206. disFeatureCopy[i].verifyRelation == ""
  207. disFeatureCopy[i].verifyResult == ""
  208. disFeatureCopy[i].verifyStandard == ""
  209. disFeatureCopy[i].verifyUnique == ""
  210. }
  211. this.disFeatureList = disFeatureCopy
  212. }
  213. if(data.disformula.length) {
  214. const disformulaCopy = JSON.parse(JSON.stringify(data.disformula))
  215. for(let i = 0; i < disformulaCopy.length; i++) {
  216. disformulaCopy[i].verifyCode == ""
  217. disformulaCopy[i].verifyFormula == ""
  218. disformulaCopy[i].verifyRelation == ""
  219. disformulaCopy[i].verifyResult == ""
  220. disformulaCopy[i].verifyStandard == ""
  221. disformulaCopy[i].verifyUnique == ""
  222. }
  223. this.disFormulaList = disformulaCopy
  224. }
  225. this.hasQuestion = 1
  226. }
  227. },
  228. mounted(){
  229. this.$nextTick(()=>{
  230. if(Array.isArray(this.$refs.textarea)) {
  231. for(let i=0; i <this.$refs.textarea.length; i++) {
  232. this.$refs.textarea[i].resizeTextarea()
  233. }
  234. }else {
  235. this.$refs.textarea&&this.$refs.textarea.resizeTextarea()
  236. }
  237. this.loading.close()
  238. })
  239. },
  240. watch: {
  241. // searchTagVal(newVal, preVal) {
  242. // if(newVal.trim() == ''){
  243. // this.getTagList()
  244. // }else if(newVal.trim() != preVal.trim()){
  245. // this.getTagList()
  246. // }
  247. // }
  248. },
  249. beforeRouteLeave(to, from, next) {
  250. this.showConfirmDialog('是否离开当前页面?(如果未校验并保存数据/暂存数据时请先保存)',()=>{
  251. next()
  252. })
  253. },
  254. methods: {
  255. getDropList() {
  256. return apis.getKnowledgeEnums().then((res) =>{
  257. if(res.data.code === '0') {
  258. this.featureTypeList = res.data.data.diagnoseFeatureTypeEnum.filter(item => item.key != 0)
  259. this.formulaTypeList = res.data.data.diagnoseTypeEnum
  260. }
  261. })
  262. },
  263. close() {
  264. this.showDiagList = false
  265. this.searchResultList = []
  266. this.diagList = []
  267. },
  268. back(){
  269. this.$router.go(-1);
  270. },
  271. searchDiag() {
  272. if(!this.searchDiagVal) {
  273. return
  274. }
  275. const param = {
  276. "name": this.searchDiagVal,
  277. }
  278. api.diagBaseIndex(param).then((res)=>{
  279. if(res.data.code === '0') {
  280. this.diagList = res.data.data
  281. this.showDiagList = true
  282. }
  283. })
  284. },
  285. selectDiag(item) {
  286. this.disName = item.name
  287. this.searchDiagVal = ''
  288. this.diagList=[]
  289. },
  290. selectSearchItem(event){
  291. const {index, item, searchType} = event
  292. if(searchType === 'FeatureStand') {
  293. const SelectResult = this.getSelectResult(this.disFeatureList[index].standard, item)
  294. this.disFeatureList[index].standard = SelectResult
  295. this.disFeatureList = JSON.parse(JSON.stringify(this.disFeatureList))
  296. this.searchResultList = []
  297. } else if(searchType === 'FeatureRelate') {
  298. const SelectResult = this.getSelectResult(this.disFeatureList[index].relation, item)
  299. this.disFeatureList[index].relation = SelectResult
  300. this.disFeatureList = JSON.parse(JSON.stringify(this.disFeatureList))
  301. this.searchResultList = []
  302. }
  303. },
  304. getSelectResult(val,item) {
  305. const index = val.lastIndexOf('、')
  306. if(index < 0) {
  307. return item
  308. } else {
  309. return val.slice(0,index+1)+item
  310. }
  311. },
  312. focuInput() {
  313. this.showDiagList = false
  314. },
  315. clickItemBox(e) {
  316. e.target.children[0].focus()
  317. },
  318. getSearchVal(val) {
  319. const index = val.lastIndexOf('、')
  320. if(index < 0) {
  321. return val
  322. } else {
  323. return val.slice(index+1)
  324. }
  325. },
  326. diagBaseSearch(field, name, type) {
  327. this.showDiagList = true
  328. const param = {
  329. field,
  330. name,
  331. type
  332. }
  333. api.diagBaseSearch(param).then((res)=>{
  334. if(res.data.code == '0'&&this.showSearchList) {
  335. this.searchResultList = res.data.data
  336. } else {
  337. this.searchResultList = []
  338. }
  339. })
  340. },
  341. addItem(event) {
  342. const {index, type } = event
  343. if(type == 1) {
  344. const item = {
  345. type:1,
  346. code:'',
  347. standard:'',
  348. relation:'',
  349. midResult:'',
  350. result:'',
  351. uniqueName:''
  352. }
  353. this.disFeatureList.splice(index+1, 0, item)
  354. }else if(type == 2) {
  355. const item = {
  356. type:92,
  357. code:'',
  358. standard:'',
  359. relation:'',
  360. midResult:'',
  361. result:'',
  362. uniqueName:''
  363. }
  364. this.disFormulaList.splice(index+1, 0, item)
  365. }
  366. },
  367. delItem(event) {
  368. const {index, type} = event
  369. if(type == 1) {
  370. this.disFeatureList.splice(index, 1)
  371. }else if(type == 2) {
  372. this.disFormulaList.splice(index, 1)
  373. }
  374. },
  375. //导入
  376. // uploadClick() {
  377. // let inp = document.getElementById("upFile");
  378. // inp.click();
  379. // },
  380. // uploadFile(e){
  381. // let fileInfo = e.target.files[0];
  382. // e.preventDefault();
  383. // let formData = new FormData();
  384. // formData.append('uploadfile', fileInfo);
  385. // const header = {
  386. // headers:{
  387. // 'Content-Type': 'multipart/form-data'
  388. // }
  389. // }
  390. // api.importDiagnosticBasis(formData,header).then((res)=>{
  391. //
  392. // if(res.data.code==0){
  393. // const data = res.data.data
  394. // this.warning('上传成功','success')
  395. // let feature = data.feature
  396. // let equation = data.equation
  397. // const featureList = []
  398. // const formulaList = []
  399. // if(feature&&feature.length > 0) {
  400. // for(let i = 1; i <feature.length; i++) {
  401. // const item = {}
  402. // item.type = '';
  403. // for (let j = 0; j < this.featureTypeList.length; j++) {
  404. // if(feature[i].type.indexOf(this.featureTypeList[j].name) > -1) {
  405. // item.type = this.featureTypeList[j].key
  406. // break;
  407. // }
  408. // }
  409. // item.code = feature[i].code
  410. // item.standard = feature[i].standard
  411. // item.relation = feature[i].associated
  412. // if(item.type === 4) {
  413. // item.midResult = ''
  414. // } else {
  415. // item.midResult = feature[i].midResult
  416. // }
  417. // featureList.push(item)
  418. // }
  419. // }
  420. // if(equation&&equation.length > 0) {
  421. // for(let i = 1; i <equation.length; i++) {
  422. // const item = {}
  423. // item.type = '';
  424. // for (let j = 0; j < this.formulaTypeList.length; j++) {
  425. // if(equation[i].type.indexOf(this.formulaTypeList[j].name) > -1) {
  426. // item.type = this.formulaTypeList[j].key
  427. // break;
  428. // }
  429. // }
  430. // item.formula = equation[i].associated
  431. // formulaList.push(item)
  432. // }
  433. // }
  434. // this.disFeatureList = featureList
  435. // this.disFormulaList = formulaList
  436. //
  437. // }else{
  438. // /*this.$message({
  439. // dangerouslyUseHTMLString: true,
  440. // message:res.data.msg,
  441. // type:'warning'
  442. // });*/
  443. // this.$alert(res.data.msg,'错误信息',{
  444. // dangerouslyUseHTMLString: true,
  445. // confirmButtonText: '确定',
  446. // callback: action => {
  447. // /*this.$message({
  448. // type: 'info',
  449. // message: `action: ${ action }`
  450. // });*/
  451. // }
  452. // });
  453. // }
  454. // })
  455. // //解决上传相同文件不触发change
  456. // let inp = document.getElementById("upFile");
  457. // inp.value = "";
  458. // },
  459. updateNeo() {
  460. const submitFormResult = this.submitForm('updateNeo')
  461. if(!submitFormResult) {
  462. return
  463. } else {
  464. submitFormResult.then((data) => {
  465. if(data !== false) {
  466. if(this.hasQuestion == 0) {
  467. const param = {
  468. id: this.id,
  469. modifier: this.modifier
  470. }
  471. api.diagBaseUpdateNeo(param).then((res) => {
  472. if(res.data.code == 0) {
  473. this.warning('更新成功', 'success');
  474. } else {
  475. this.warning(res.data.msg)
  476. }
  477. })
  478. } else {
  479. this.warning('更新失败');
  480. }
  481. }
  482. })
  483. }
  484. },
  485. exportDiagnosticAll(){
  486. const submitFormResult = this.submitForm('export')
  487. if(!submitFormResult) {
  488. return
  489. } else {
  490. submitFormResult.then(() => {
  491. if(this.hasQuestion == 0) {
  492. const param = {
  493. diagnoseId: this.id
  494. }
  495. api.exportDiagnosticAll(param).then((res) => {
  496. utils.downloadExportedData(res.data,'诊断依据.xls');
  497. })
  498. }else {
  499. if(!this.hasNoUniqueName) {
  500. this.warning('导出失败');
  501. }
  502. }
  503. }).catch((e)=>{
  504. })
  505. }
  506. },
  507. saveTemp(){
  508. if(!this.disName) {
  509. this.warning('请选择诊断');
  510. return
  511. }
  512. const loading = this.$loading({
  513. lock: true,
  514. text: 'Loading',
  515. spinner: 'el-icon-loading',
  516. background: 'rgba(0, 0, 0, 0.7)'
  517. });
  518. this.hasQuestion= 1
  519. const param = {
  520. disFeature: this.disFeatureList,
  521. disName: this.disName,
  522. disformula: this.disFormulaList,
  523. id: this.id,
  524. modifier: this.modifier
  525. }
  526. api.tempSaveOrUpate(param).then((res)=>{
  527. loading.close()
  528. if(res.data.code === '0') {
  529. this.id = res.data.data
  530. this.warning('临时保存成功','success')
  531. }else {
  532. this.warning(res.data.msg)
  533. }
  534. })
  535. },
  536. submitForm(type) {
  537. if(!this.disName) {
  538. this.warning('请选择诊断');
  539. return
  540. }
  541. this.disFeatureListResult = []
  542. this.disFormulaListResult = []
  543. for(let i = 0; i < this.disFeatureList.length; i++) { //如果有任意一项有值,就检测,所有项都没值,则删掉这条数据
  544. if(this.disFeatureList[i].type || this.disFeatureList[i].code || this.disFeatureList[i].standard || this.disFeatureList[i].relation || this.disFeatureList[i].midResult) {
  545. this.disFeatureListResult.push(this.disFeatureList[i])
  546. }
  547. }
  548. let disFeatureList;
  549. if(this.disFeatureListResult.length) {
  550. disFeatureList = this.disFeatureListResult;
  551. } else {
  552. disFeatureList = [
  553. {
  554. type:'',
  555. code:'',
  556. standard:'',
  557. relation:'',
  558. midResult:'',
  559. result:'',
  560. formula:'',
  561. uniqueName:''
  562. }
  563. ];
  564. }
  565. this.disFeatureList = disFeatureList
  566. // this.showDelDialog()
  567. this.hasQuestion = 1
  568. return this.diagBaseVerifyData(type)
  569. },
  570. diagBaseVerifyData(type) {
  571. //判断诊断依据先判断化验有没有公表项
  572. const labArr= []
  573. for (let i = 0; i < this.disFeatureList.length; i++) {
  574. if(+this.disFeatureList[i].type === 3) {
  575. labArr.push({index: i, mealName: this.disFeatureList[i].standard, itemName: this.disFeatureList[i].relation, uniqueName:''})
  576. }
  577. }
  578. if(type == 'save'){
  579. this.isReady = true
  580. }
  581. if(labArr.length > 0) {
  582. const hasErrorData = this.errorDataVerify()
  583. if(!hasErrorData) {
  584. return false
  585. } else {
  586. this.hasNoUniqueName = false
  587. const labVerifyData = this.labVerifyData(labArr,type)
  588. if(labVerifyData) {
  589. return labVerifyData.then((data) =>{
  590. if(this.hasNoUniqueName||data===false) {
  591. return false
  592. }else {
  593. return this.verifyDiagBase(type)
  594. }
  595. })
  596. }
  597. }
  598. } else {
  599. const hasErrorData = this.errorDataVerify()
  600. if(!hasErrorData) {
  601. return false
  602. } else {
  603. return this.verifyDiagBase(type)
  604. }
  605. }
  606. },
  607. errorDataVerify() {
  608. for(let i = 0; i < this.disFormulaList.length; i++) { //如果有任意一项有值,就检测,所有项都没值,则删掉这条数据
  609. if( this.disFormulaList[i].formula ) {
  610. this.disFormulaListResult.push(this.disFormulaList[i])
  611. }
  612. }
  613. const disFeatureList = this.disFeatureList;
  614. const disFormulaList = this.disFormulaListResult;
  615. let codeErrorNum = 0;
  616. let errStrList = [];
  617. //必填项是否填写
  618. for(let i=0; i < disFeatureList.length; i++) {
  619. if(!disFeatureList[i].type) {
  620. disFeatureList[i].typeNull = "未选择类型"
  621. }
  622. if(!disFeatureList[i].code) {
  623. disFeatureList[i].codeNull = "未填写编码"
  624. }
  625. if(!disFeatureList[i].standard) {
  626. disFeatureList[i].standardNull = "未填写标准词"
  627. }
  628. if(!disFeatureList[i].type||!disFeatureList[i].code||!disFeatureList[i].standard) {
  629. const errStr = "第" + (i+ 1) +"行必填项未填写"
  630. errStrList.push(errStr)
  631. }
  632. let regex =new RegExp(`^${disFeatureList[i].type}\\.(0|[1-9]\\d?)$`,)
  633. if(disFeatureList[i].code &&!regex.test(disFeatureList[i].code)) { //序号和类型不匹配
  634. codeErrorNum++
  635. disFeatureList[i].codeError = "序号和类型不匹配"
  636. const errStr = "疾病特征第" + (i+ 1) +"行序号和类型不匹配"
  637. errStrList.push(errStr)
  638. } else { //序号和类型匹配但序号重复
  639. let codeArr = disFeatureList.filter(item => item.code ===disFeatureList[i].code)
  640. if(codeArr.length > 1) {
  641. codeErrorNum++
  642. disFeatureList[i].codeError = "序号重复"
  643. const errStr = "疾病特征第" + (i+ 1) +"行序号重复"
  644. errStrList.push(errStr)
  645. }
  646. }
  647. //化验项有结果则必须有关联词
  648. if(disFeatureList[i].type == '3' && disFeatureList[i].midResult && !disFeatureList[i].relation) {
  649. disFeatureList[i].relationNull = "未填写关联词"
  650. const errStr = "第" + (i+ 1) +"行化验项数据填写不完整"
  651. errStrList.push(errStr)
  652. }
  653. //导入后判断
  654. // let regexPause = new RegExp(`、`) //判断标准词是否有顿号
  655. // if(disFeatureList[i].standard &&regexPause.test(disFeatureList[i].standard)) {
  656. // disFeatureList[i].verifyStandard ='数据异常'
  657. // const errStr = "疾病特征第" + (i+ 1) +"行标准词数据异常"
  658. // errStrList.push(errStr)
  659. // }
  660. // if(disFeatureList[i].type == '3'&&regexPause.test(disFeatureList[i].relation)) {
  661. // disFeatureList[i].verifyRelation ='数据异常'
  662. // const errStr = "疾病特征第" + (i+ 1) +"行化验关联词数据异常"
  663. // errStrList.push(errStr)
  664. // }
  665. //导入后判断
  666. if(disFeatureList[i].type == '3') {
  667. disFeatureList[i].verifyRelation = ""
  668. disFeatureList[i].verifyResult = ""
  669. if(!disFeatureList[i].midResult ) {//化验项下面诊断公式如果有用到,判断是否填写结果项
  670. const regex2 = new RegExp(`(?<=\\D|\\b)${disFeatureList[i].code.replace('.','\\.')}(?=\\D|\\b)`) //序号+前面是单词边界或者是非数字+后面是单词边界或者是非数字
  671. // const regex2 = new RegExp(`、\\s*、{1,}`)
  672. // const regex2 = new RegExp(`([^0-9]|\\s{0,1})${disFeatureList[i].code}([^0-9]|\\s{0,1})`)
  673. let hasError = disFormulaList.find(item => {return regex2.test(item.formula)})
  674. if(hasError) {
  675. if(!disFeatureList[i].relation) {
  676. disFeatureList[i].verifyRelation = "数据异常"
  677. }
  678. disFeatureList[i].verifyResult = "数据异常"
  679. const errStr = "第" + (i+ 1) +"行化验项数据异常"
  680. errStrList.push(errStr)
  681. }
  682. }
  683. }
  684. if(disFeatureList[i].type == '4') {
  685. disFeatureList[i].verifyRelation = ""
  686. if(!disFeatureList[i].relation) { //辅检项下面诊断公式如果有用到,判断是否填写结果项(辅检结果是填在关联词列)
  687. const regex2 = new RegExp(`(?<=\\D|\\b)${disFeatureList[i].code.replace('.','\\.')}(?=\\D|\\b)`)
  688. let hasError = disFormulaList.find(item => {return regex2.test(item.formula)})
  689. if(hasError) {
  690. disFeatureList[i].verifyRelation = "数据异常"
  691. const errStr = "第" + (i+ 1) +"行辅捡项数据异常"
  692. errStrList.push(errStr)
  693. }
  694. }
  695. }
  696. let regex1 =new RegExp(`、\\s*、{1,}|^、|、$`)
  697. if(disFeatureList[i].relation &&regex1.test(disFeatureList[i].relation)) { //不能输入连续的、,前后也不能是、
  698. disFeatureList[i].verifyRelation ='数据异常'
  699. const errStr = "疾病特征第" + (i+ 1) +"行数据异常"
  700. errStrList.push(errStr)
  701. }
  702. if(disFeatureList[i].midResult &&regex1.test(disFeatureList[i].midResult)) {
  703. disFeatureList[i].verifyResult ='数据异常'
  704. const errStr = "疾病特征第" + (i+ 1) +"行数据异常"
  705. errStrList.push(errStr)
  706. }
  707. }
  708. this.disFeatureList = JSON.parse(JSON.stringify(disFeatureList))
  709. let formulaListErrNum = 0
  710. for(let i=0; i < disFormulaList.length; i++) {
  711. if(disFormulaList[i].type&&!disFormulaList[i].formula ) {
  712. disFormulaList[i].verifyFormula = "诊断公式不能为空"
  713. formulaListErrNum++;
  714. const errStr = "诊断公式第" + (i+ 1) +"行诊断公式不能为空"
  715. errStrList.push(errStr)
  716. } else if(disFormulaList[i].formula&&!disFormulaList[i].type) {
  717. disFormulaList[i].verifyType = "诊断类型不能为空"
  718. const errStr = "诊断公式第" + (i+ 1) +"行诊断类型不能为空"
  719. errStrList.push(errStr)
  720. formulaListErrNum++;
  721. }
  722. //导入后判断
  723. // if(disFormulaList[i].type == 91) { //确诊中有没有包含其他不可输入内容
  724. // let regexDisFormula = /[^\u4EFB\u4E00\u4E8C\u4E09\u56DB\u4E94\u516D\u4E03\u516B\u4E5D\u5341\u62df\u8bca0-9\/\.+\(\)\(\)]/g
  725. // if(regexDisFormula.test(disFormulaList[i].formula)) {
  726. // disFormulaList[i].verifyFormula = "公式格式错误"
  727. // const errStr = "诊断公式第" + (i+ 1) +"行公式格式错误,"
  728. // errStrList.push(errStr)
  729. // formulaListErrNum++;
  730. // }
  731. // } else { //其他诊断中有没有包含其他不可输入内容
  732. // //计算公式只能输入以下内容: 任、一、二、三、四、五、六、七、八、九、十、0-9、/、.、(、)、(、)
  733. // let regexDisFormula = /[^\u4EFB\u4E00\u4E8C\u4E09\u56DB\u4E94\u516D\u4E03\u516B\u4E5D\u53410-9\/\.+\(\)\(\)]/g
  734. // if(regexDisFormula.test(disFormulaList[i].formula)) {
  735. // disFormulaList[i].verifyFormula = "公式格式错误"
  736. // const errStr = "诊断公式第" + (i+ 1) +"行公式格式错误"
  737. // errStrList.push(errStr)
  738. // formulaListErrNum++;
  739. // }
  740. // }
  741. //导入后判断
  742. if(disFormulaList[i].type == 91 && disFormulaList[i].formula.indexOf("拟诊") > -1) { //确诊项如果有拟诊这两个字,判断公式列表中有没有拟诊这项
  743. const noError = disFormulaList.filter(item => item.type == 92).length > 0
  744. if(!noError) {
  745. disFormulaList[i].verifyFormula = "公式格式错误"
  746. const errStr = "诊断公式第" + (i+ 1) +"行公式格式错误"
  747. errStrList.push(errStr)
  748. formulaListErrNum++;
  749. }
  750. }
  751. }
  752. if(disFormulaList.length) {
  753. this.disFormulaList = JSON.parse(JSON.stringify(disFormulaList))
  754. }
  755. let errorStr =''
  756. for(let i = 0; i <errStrList.length; i++) {
  757. errorStr += '<p>'+errStrList[i]+'</p>'
  758. }
  759. if(errStrList.length >0 ||codeErrorNum > 0 ||formulaListErrNum > 0) {
  760. this.disFeatureList = JSON.parse(JSON.stringify(disFeatureList))
  761. this.errorTips(errorStr)
  762. this.isReady=false
  763. return false
  764. }
  765. return true
  766. },
  767. labVerifyData(labArr,type) {
  768. const labArrParam = {
  769. lisMappingSearchList : labArr
  770. }
  771. const loading = this.$loading({
  772. lock: true,
  773. text: 'Loading',
  774. spinner: 'el-icon-loading',
  775. background: 'rgba(0, 0, 0, 0.7)'
  776. });
  777. return api.getUniqueNameWithList(labArrParam).then((res) => {
  778. this.isReady=false
  779. loading.close();
  780. if(res.data.code === '0') {
  781. const data = res.data.data
  782. let errorStr = ''
  783. for (let i = 0; i < data.length; i++ ) {
  784. if(!data[i].uniqueName) { //判断是否存在公表项
  785. if(!this.hasNoUniqueName) {
  786. this.hasNoUniqueName = true
  787. }
  788. errorStr +=`<p>第${+data[i].index+1}行化验公表项不存在</p>`
  789. this.disFeatureListResult[data[i].index].verifyUnique="公表项不存在"
  790. this.disFeatureListResult[data[i].index].uniqueName=""
  791. } else {
  792. this.disFeatureListResult[data[i].index].verifyUnique=""
  793. }
  794. this.disFeatureListResult[data[i].index].uniqueName = data[i].uniqueName
  795. if(data[i].uniqueName) { //有公表项和结果,则将公表项和结果拼接起来,结果用、分隔
  796. if(this.disFeatureListResult[data[i].index].midResult) {
  797. let midResult = this.disFeatureListResult[data[i].index].midResult.replace(' ', '').split('、')
  798. for (let j = 0; j < midResult.length; j++) {
  799. if(midResult[j]) {
  800. midResult[j] = data[i].uniqueName+midResult[j]
  801. }
  802. }
  803. this.disFeatureListResult[data[i].index].result = midResult.join('、')
  804. }
  805. }
  806. }
  807. this.disFeatureList = JSON.parse(JSON.stringify(this.disFeatureListResult))
  808. this.disFeatureListResult = JSON.parse(JSON.stringify(this.disFeatureListResult))
  809. if(errorStr) {
  810. return this.errorTips(errorStr);
  811. }
  812. } else {
  813. this.warning(res.data.msg)
  814. return false
  815. }
  816. }).catch(()=>{ this.isReady=false;loading.close()})
  817. },
  818. verifyDiagBase(type) {
  819. const param = {
  820. disFeature: this.disFeatureListResult,
  821. disName: this.disName,
  822. disformula: this.disFormulaListResult,
  823. id: this.id,
  824. modifier: this.modifier
  825. }
  826. const loading = this.$loading({
  827. lock: true,
  828. text: 'Loading',
  829. spinner: 'el-icon-loading',
  830. background: 'rgba(0, 0, 0, 0.7)'
  831. });
  832. const diagBaseVerifyDataResult = api.diagBaseVerifyData(param)
  833. return diagBaseVerifyDataResult.then((res) => {
  834. if(+res.data.code === 0) {
  835. const data = res.data.data
  836. this.isReady=false
  837. if(type =='save') {
  838. if(data.hasQuestion) {
  839. this.warning('校验完成请先调整错误数据,该数据已保存')
  840. } else {
  841. this.warning('校验成功', 'success')
  842. }
  843. }
  844. this.id = data.id
  845. this.disNameExist = data.disNameExist
  846. this.disFeatureList = data.disFeature
  847. if(data.disformula.length) {
  848. this.disFormulaList = data.disformula
  849. }else {
  850. this.disFormulaList = [
  851. {
  852. type:92,
  853. code:'',
  854. standard:'',
  855. relation:'',
  856. result:'',
  857. midResult:'',
  858. formula:'',
  859. uniqueName:''
  860. }
  861. ]
  862. }
  863. this.hasQuestion = data.hasQuestion
  864. } else {
  865. this.hasQuestion = 1
  866. this.warning(res.data.msg)
  867. }
  868. loading.close()
  869. }).catch(()=>{ this.hasQuestion = false; this.isReady=false; loading.close()})
  870. },
  871. showConfirmDialog(msg, resolve) {
  872. this.$alert(msg, '提示', {
  873. confirmButtonText: '确定',
  874. type: 'warning'
  875. }).then(() => {
  876. resolve();
  877. }).catch(() => {});
  878. },
  879. // handleInp(index,e,type,itemType){ //分组不能输入负数
  880. handleInp(event){
  881. const {index,e,type,itemType} = event
  882. const value = e
  883. if(type === 'FeatureNumber') { //序号只能输入数字和.
  884. this.$nextTick(() => {
  885. this.disFeatureList[index].code = value.replace(/[^\d.]/g,'')
  886. })
  887. } else if(type==='FeatureStand') { //标准词不能输入顿号
  888. this.$nextTick(() => {
  889. const resultVal = value.replace(/、/g,'').replace(' ','')
  890. this.disFeatureList[index].standard = resultVal
  891. if(resultVal) {
  892. const searchVal = this.getSearchVal(resultVal)
  893. if(searchVal) {
  894. this.showSearchList = true
  895. this.searchIndex = index
  896. this.searchFiled = 'FeatureStand'
  897. this.diagBaseSearch(2,searchVal,itemType)
  898. } else {
  899. this.showSearchList = false
  900. this.searchResultList = []
  901. }
  902. } else {
  903. this.showSearchList = false
  904. this.searchResultList = []
  905. }
  906. })
  907. // this.disFeatureList[index].standard = value.replace(/、/g,'')
  908. } else if ( type === 'FormulaNumber') {
  909. //计算公式确诊只能输入以下内容: 任、一、二、三、四、五、六、七、八、九、十、拟、诊、0-9、/、.、(、)、(、)
  910. if(itemType == 91) {
  911. this.$nextTick(() => {
  912. 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, '')
  913. })
  914. } else { //计算公式其他只能输入以下内容: 任、一、二、三、四、五、六、七、八、九、十、0-9、/、.、(、)、(、)
  915. //计算公式只能输入以下内容: 任、一、二、三、四、五、六、七、八、九、十、0-9、/、.、(、)、(、)
  916. this.$nextTick(() => {
  917. 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, '')
  918. })
  919. }
  920. } else if ( type === 'FeatureRelate') {
  921. let resultVal;
  922. if(itemType == 3) {
  923. resultVal = value.replace(/、/g,'').replace(' ','')
  924. } else {
  925. resultVal = value.replace(' ','')
  926. }
  927. this.$nextTick(() => {
  928. this.disFeatureList[index].relation = resultVal
  929. })
  930. if(resultVal) {
  931. const searchVal = this.getSearchVal(resultVal)
  932. if(searchVal) {
  933. this.showSearchList = true
  934. this.searchIndex = index
  935. this.searchFiled = 'FeatureRelate'
  936. this.diagBaseSearch(3,searchVal,itemType)
  937. } else {
  938. this.showSearchList = false
  939. this.searchResultList = []
  940. }
  941. } else {
  942. this.showSearchList = false
  943. this.searchResultList = []
  944. }
  945. }
  946. // const item = this.selectedIndexList[index].indexDesc;
  947. // e.target.value = value.replace(/[^\d]/g,'');
  948. // this.selectedIndexList[index].indexDesc = item.replace(/[^\d]/g,'');
  949. },
  950. clickItem(e) {
  951. const {index, type} = e
  952. this.showDiagList = false
  953. switch(type) {
  954. case 'FeatureType':
  955. this.disFeatureList[index].typeNull = ''
  956. this.disFeatureList[index].code = ''
  957. this.disFeatureList[index].standard = ''
  958. this.disFeatureList[index].relation = ''
  959. this.disFeatureList[index].midResult = ''
  960. this.disFeatureList[index].result = ''
  961. this.disFeatureList[index].formula = ''
  962. this.disFeatureList[index].uniqueName = ''
  963. return this.disFeatureList = JSON.parse(JSON.stringify(this.disFeatureList))
  964. case 'FeatureNumber':
  965. this.disFeatureList[index].codeNull = ''
  966. this.disFeatureList[index].verifyCode = ''
  967. this.disFeatureList[index].codeError = ''
  968. return this.disFeatureList = JSON.parse(JSON.stringify(this.disFeatureList))
  969. case 'FeatureStand':
  970. this.disFeatureList[index].verifyStandard =''
  971. this.disFeatureList[index].standardNull =''
  972. return this.disFeatureList = JSON.parse(JSON.stringify(this.disFeatureList))
  973. case 'FeatureRelate':
  974. this.disFeatureList[index].verifyRelation =''
  975. this.disFeatureList[index].relationNull =''
  976. return this.disFeatureList = JSON.parse(JSON.stringify(this.disFeatureList))
  977. case 'FeatureResult':
  978. this.disFeatureList[index].verifyResult =''
  979. return this.disFeatureList = JSON.parse(JSON.stringify(this.disFeatureList))
  980. case 'FormulaType':
  981. this.disFormulaList[index].verifyType =''
  982. this.disFormulaList[index].formula =''
  983. return this.disFormulaList = JSON.parse(JSON.stringify(this.disFormulaList))
  984. case 'FormulaNumber':
  985. this.disFormulaList[index].verifyFormula =''
  986. return this.disFormulaList = JSON.parse(JSON.stringify(this.disFormulaList))
  987. }
  988. },
  989. warning(msg, type,time) {
  990. this.$message({
  991. showClose: true,
  992. message: msg,
  993. type: type || 'warning',
  994. duration:time || '3000'
  995. })
  996. },
  997. errorTips(errorStr) {
  998. this.$alert(errorStr,'错误信息',{
  999. dangerouslyUseHTMLString: true,
  1000. confirmButtonText: '确定',
  1001. callback: action => {
  1002. /*this.$message({
  1003. type: 'info',
  1004. message: `action: ${ action }`
  1005. });*/
  1006. }
  1007. });
  1008. return
  1009. }
  1010. },
  1011. components: {
  1012. Textarea,
  1013. DisFeatureItem,
  1014. DisFormulaItem
  1015. }
  1016. }
  1017. </script>
  1018. <style lang="less">
  1019. @import '../../less/common.less';
  1020. .AddDiagBaseWrapper {
  1021. font-size: 14px;
  1022. table,tr,td {
  1023. list-style: none;
  1024. }
  1025. color: #606266;
  1026. .topBack {
  1027. top: 0;
  1028. }
  1029. .groupTitle {
  1030. background-color: #fff;
  1031. height: 40px;
  1032. line-height: 40px;
  1033. padding-left: 20px;
  1034. }
  1035. .searchInput, .searchName {
  1036. display: inline-block;
  1037. height: 32px;
  1038. line-height: 32px;
  1039. border: 1px solid #a9a9a9;
  1040. margin: 0px 0 0 0;
  1041. padding: 0 5px;
  1042. float: left;
  1043. margin-top: 4px;
  1044. }
  1045. .isRequired .el-form-item__label::before {
  1046. content: '*';
  1047. color: red;
  1048. }
  1049. .searchName {
  1050. border-left: none;
  1051. cursor: pointer;
  1052. font-size: 16px;
  1053. padding: 0 14px;
  1054. }
  1055. .itemList {
  1056. position: absolute;
  1057. background: #fff;
  1058. width: 162px;
  1059. max-height: 150px;
  1060. border: 1px solid #a9a9a9;
  1061. left: 138px;
  1062. top: 37px;
  1063. z-index: 2;
  1064. overflow-y: auto;
  1065. }
  1066. .diagItem {
  1067. padding: 0 5px;
  1068. height: 30px;
  1069. line-height: 30px;
  1070. font-size: 14px;
  1071. cursor: pointer;
  1072. }
  1073. .diagItem:hover {
  1074. background: #f5f7fa;
  1075. }
  1076. .addDepartForm {
  1077. position: relative;
  1078. background-color: #fff;
  1079. padding: 20px;
  1080. margin: 70px 20px -35px 20px;
  1081. }
  1082. .addDiagName {
  1083. position: relative;
  1084. }
  1085. .symptomList {
  1086. position: relative;
  1087. background-color: #fff;
  1088. padding: 0px 20px 100px 20px;
  1089. margin: 0px 20px 40px 20px;
  1090. min-height: 400px;
  1091. }
  1092. .diagTable {
  1093. width: 100%;
  1094. border-collapse: collapse;
  1095. margin-bottom: 20px;
  1096. tr {
  1097. td {
  1098. /deep/textarea::-webkit-scrollbar{
  1099. display: none;
  1100. }
  1101. position: relative;
  1102. border: 1px solid #a9a9a9;
  1103. text-align: center;
  1104. /deep/textarea::-webkit-scrollbar {
  1105. display: none;
  1106. }
  1107. }
  1108. .FormulaOpera, .FeatureOpera{
  1109. background: #fff;
  1110. border: none;
  1111. text-align: left;
  1112. padding-left: 30px;
  1113. }
  1114. /deep/.el-textarea__inner {
  1115. width: 100%;
  1116. line-height: 20px;
  1117. resize:none;
  1118. border: none;
  1119. border-radius: 0;
  1120. text-align: center;
  1121. }
  1122. }
  1123. .selectedContent {
  1124. width: 25%;
  1125. }
  1126. .selectedContentGroup {
  1127. width: 55%;
  1128. }
  1129. .selectedContentOpera {
  1130. width: 20%;
  1131. }
  1132. }
  1133. .groupInput {
  1134. text-align: center;
  1135. color: #606266;
  1136. width: 80%;
  1137. }
  1138. .groupTextarea {
  1139. text-align: center;
  1140. color: #606266;
  1141. width: 100%;
  1142. }
  1143. .btn {
  1144. position: absolute;
  1145. background-color: #fff;
  1146. width: 100%;
  1147. margin: 20px 0;
  1148. height: 40px;
  1149. bottom: 0px;
  1150. right: 0px;
  1151. .btnBox {
  1152. position: absolute;
  1153. right: 0px;
  1154. }
  1155. .el-button {
  1156. margin-right: 20px;
  1157. }
  1158. }
  1159. .tableTitle{
  1160. background: rgba(239,243,249,1);
  1161. height: 40px;
  1162. }
  1163. .require::after{
  1164. content:"*";
  1165. color: red;
  1166. }
  1167. .borderRed {
  1168. border: 3px solid red ;
  1169. box-sizing: border-box;
  1170. }
  1171. .colorRed {
  1172. color: red;
  1173. }
  1174. .FeatureSort {
  1175. width: 5%;
  1176. }
  1177. .FeatureType {
  1178. width: 7%;
  1179. padding: 0 5px;
  1180. }
  1181. .FeatureNumber {
  1182. width: 8%;
  1183. }
  1184. .FeatureStand {
  1185. width: 20%;
  1186. }
  1187. .FeatureRelate {
  1188. width: 30%;
  1189. }
  1190. .FeatureuniqueName {
  1191. width: 10%;
  1192. }
  1193. .FeatureResult {
  1194. width: 10%;
  1195. }
  1196. .FeatureOpera{
  1197. width: 10%;
  1198. }
  1199. .FormulaSort{
  1200. width: 5%;
  1201. }
  1202. .FormulaType{
  1203. width: 7%;
  1204. padding: 0 5px;
  1205. }
  1206. .FormulaNumber{
  1207. width: 78%;
  1208. }
  1209. .FormulaOpera{
  1210. width: 10%;
  1211. }
  1212. .btnOpera {
  1213. width:16px;
  1214. height:16px;
  1215. background:rgba(176,190,197,1);
  1216. border-radius: 50%;
  1217. color: #fff;
  1218. line-height: 16px;
  1219. text-align: center;
  1220. }
  1221. /deep/.el-input--mini .el-input__inner {
  1222. width: 80px;
  1223. }
  1224. /deep/ .is-disabled {
  1225. background: #ECECEC;
  1226. color: #AAAAAA;
  1227. border: none;
  1228. }
  1229. .selectType {
  1230. input {
  1231. border: 3px solid red;
  1232. }
  1233. input:hover {
  1234. border: 3px solid red;
  1235. }
  1236. }
  1237. .moduleTitle {
  1238. margin: 0 0 10px 0;
  1239. font-weight: 600;
  1240. }
  1241. .inpDisabled{
  1242. background: #ECECEC;
  1243. cursor: not-allowed;
  1244. textarea {
  1245. background: #ECECEC;
  1246. color: #AAAAAA;
  1247. border: none;
  1248. cursor: not-allowed;
  1249. height: 100%;
  1250. }
  1251. }
  1252. .inpTips {
  1253. font-size: 14px;
  1254. color: red;
  1255. margin-bottom: 10px;
  1256. }
  1257. #upFile{
  1258. display: none
  1259. }
  1260. .disableDiv {
  1261. background: rgb(236, 236, 236);
  1262. box-sizing: border-box;
  1263. cursor: not-allowed;
  1264. font-size: 14px;
  1265. line-height: 20px;
  1266. padding: 5px 0;
  1267. min-height: 30px;
  1268. }
  1269. .searchItemBox{
  1270. position: relative;
  1271. bottom: 0px;
  1272. }
  1273. .searchItemList {
  1274. position: absolute;
  1275. border: 1px solid #a9a9a9;
  1276. box-sizing: border-box;
  1277. top: 4px;
  1278. z-index: 2;
  1279. width: 100%;
  1280. max-height: 150px;
  1281. overflow: auto;
  1282. background: #fff;
  1283. margin: 0 0 20px 0;
  1284. }
  1285. }
  1286. </style>