378af2d89c98c7b59d499e0fcb293d25b2c6d7f8.svn-base 5.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137
  1. <template>
  2. <!--filterable 只可选择最后一级菜单的选项
  3. filterable
  4. change-on-select 可选择任意一级菜单的选项-->
  5. <div>
  6. <p style="margin-bottom: 5px;">问题类别 / 问题描述</p>
  7. <el-cascader
  8. ref="refSubCat"
  9. :options="problemList"
  10. :show-all-levels="true"
  11. v-model="selectedOptions"
  12. popper-class="cascader_option_width"
  13. filterable
  14. clearable
  15. @change="handleSubCat">
  16. <template slot-scope="{ node, data }">
  17. <span>{{ data.label }}</span>
  18. </template>
  19. </el-cascader>
  20. </div>
  21. </template>
  22. <script>
  23. import request from '@util/gw_ajax_request'
  24. export default {
  25. props: ['objType','vmodelData','t3','prjType'],
  26. data(){
  27. return{
  28. selectedOptions: [],
  29. problemList: [],
  30. checkedNodeLabel: ""
  31. }
  32. },
  33. mounted(){
  34. this.$nextTick(() =>{
  35. this.selectedOptions = this.vmodelData ? this.vmodelData.model : [];
  36. this.checkedNodeLabel = this.t3 ? this.t3 : "";
  37. this.getproblemSmallType();
  38. })
  39. },
  40. methods:{
  41. getproblemSmallType() {
  42. let result = [];
  43. request.get('/dc/insp/pblms/getPblmType', {
  44. params: {
  45. type: this.objType,
  46. }
  47. }).then(res => {
  48. if (res.success) {
  49. res.data.forEach((ele) => {
  50. let haveinspPblmsName = false;
  51. result.forEach((inspPblm) => {
  52. if (inspPblm['inspPblmsName'] == ele.inspPblmsName) {
  53. //
  54. let havechekPoint = false;
  55. inspPblm['checkPoints'].forEach((chekPoint) => {
  56. if (chekPoint['checkPointName'] == ele.checkPoint) {
  57. //
  58. chekPoint['pblmDescs'].push({
  59. pblmDesc: ele.pblmDesc,
  60. sn: ele.sn,
  61. guid: ele.guid,
  62. });
  63. havechekPoint = true;
  64. }
  65. });
  66. if (!havechekPoint) {
  67. let newCheckPoint = {};
  68. newCheckPoint['checkPointName'] = ele.checkPoint;
  69. newCheckPoint['sort2'] = ele.sort2;
  70. newCheckPoint['pblmDescs'] = [{
  71. pblmDesc: ele.pblmDesc,
  72. sn: ele.sn,
  73. guid: ele.guid,
  74. }]
  75. inspPblm['checkPoints'].push(newCheckPoint);
  76. }
  77. haveinspPblmsName = true;
  78. }
  79. });
  80. if (!haveinspPblmsName) {
  81. let haveinspPblmsObj = {};
  82. haveinspPblmsObj['inspPblmsName'] = ele.inspPblmsName;
  83. haveinspPblmsObj['sort1'] = ele.sort1;
  84. haveinspPblmsObj['checkPoints'] = [{
  85. checkPointName: ele.checkPoint,
  86. sort2: ele.sort2,
  87. pblmDescs: [{
  88. pblmDesc: ele.pblmDesc,
  89. sn: ele.sn,
  90. guid: ele.guid,
  91. }]
  92. }];
  93. result.push(haveinspPblmsObj);
  94. }
  95. })
  96. this.problemList = result;
  97. console.log(this.problemList);
  98. this.problemList.forEach((ele,index)=>{
  99. ele['label'] = ele.inspPblmsName
  100. ele['value'] = ele.inspPblmsName
  101. ele['children'] = ele.checkPoints
  102. ele.children.forEach((elem,index)=>{
  103. elem['label'] = elem.checkPointName
  104. elem['value'] = elem.pblmDescs[0].guid
  105. })
  106. })
  107. }
  108. })
  109. },
  110. handleSubCat() {
  111. this.checkedNodeLabel = this.$refs["refSubCat"].getCheckedNodes()[0] ? this.$refs["refSubCat"].getCheckedNodes()[0].label : "";
  112. },
  113. },
  114. watch:{
  115. selectedOptions(val){
  116. this.$nextTick(()=>{
  117. if(val.length){
  118. this.$emit('modelData',{"model": val,"dataList":this.problemList,"label":this.checkedNodeLabel});
  119. }else{
  120. this.$emit('modelData',{"model": val,"dataList":this.problemList});
  121. }
  122. })
  123. }
  124. }
  125. }
  126. </script>
  127. <style>
  128. .cascader_option_width {
  129. max-width: 1000px;
  130. }
  131. </style>