DiagBaseGroup.vue 5.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180
  1. <template>
  2. <div class="sub-groups">
  3. <div class="group-items">
  4. <!--<el-form ref="form" class="add-new-form" label-width="140px" :model="data" :rules="rules">-->
  5. <DiagBaseItem v-for="(rules,i) in data.klDiagnoseDetail"
  6. ref="group"
  7. :groupData="rules"
  8. :ind="i"
  9. :inx="inx"
  10. :parInx="parInx"
  11. :hideDel="isLast&&len===1"
  12. :baseTypes="diagTypeList"
  13. @changeVal="handleInput"
  14. @delRule="delRule"></DiagBaseItem>
  15. <div class="inner-oper">
  16. <span>新增基础依据:</span>
  17. <span class="add-btn" @click="addRule"><img src="../../images/add.png" alt="新增基础依据"></span>
  18. </div>
  19. <el-form-item label="符合条件的数量:" :prop="'klDiagnoseTypeVO.'+parInx+'.groupVO.'+inx+'.fitNo'" class="diag-num">
  20. <el-select v-model="data.fitNo"
  21. placeholder="请选择"
  22. size="small">
  23. <el-option
  24. v-for="item in numArr"
  25. :key="item.id"
  26. :label="item.name"
  27. :value="item.id">
  28. </el-option>
  29. </el-select>
  30. </el-form-item>
  31. </div>
  32. <div class="group-oper">
  33. <el-button size="small" @click="addGroup">+新增分组</el-button>
  34. <el-button :disabled="isLast" size="small" type="danger" plain @click="delGroup">-删除分组</el-button>
  35. </div>
  36. <!--</el-form>-->
  37. </div>
  38. </template>
  39. <script>
  40. import DiagBaseItem from './DiagBaseItem.vue';
  41. import util from '../../api/utils.js'
  42. export default {
  43. name:'DiagBaseGroup',
  44. props:['data','inx','isLast','diagTypeList','parInx'],
  45. data(){
  46. return {
  47. }
  48. },
  49. computed:{
  50. len:function(){
  51. return util.delNullObj(this.data.klDiagnoseDetail).length;
  52. },
  53. numArr:function(){
  54. let arr=[];
  55. for(let i=0;i<this.len;i++){
  56. arr.push({id:i+1,name:i+1});
  57. }
  58. return arr;
  59. },
  60. },
  61. methods:{
  62. handleInput(val,i){
  63. if(val){
  64. this.data[i]=val;
  65. }
  66. },
  67. setRules(){
  68. this.$emit('setRules');
  69. },
  70. addRule(){
  71. let temp={
  72. "basConceptId": '',
  73. "basDescription": "",
  74. "basLename": "",
  75. "basLibName": "",
  76. "basLibType": null,
  77. "basType": '',
  78. "eqOperator": "",
  79. "eqUnit": "",
  80. "eqValue": "",
  81. "maxOperator": "",
  82. "maxUnit": "",
  83. "maxVal": "",
  84. "minOperator": "",
  85. "minUnit": "",
  86. "minVal": "",
  87. "dataType":"",
  88. };
  89. this.data.klDiagnoseDetail.push(temp);
  90. this.$emit("setRules");
  91. },
  92. delRule(i){
  93. if(this.len===1){
  94. this.$emit("delGroup",this.inx);
  95. this.$emit("setRules");
  96. return;
  97. }
  98. this.data.klDiagnoseDetail.splice(i,1,null);
  99. this.$emit("setRules");
  100. //符合条件数量列表同步变化
  101. //if(this.numArr.length){
  102. this.data.fitNo='';
  103. //}
  104. },
  105. addGroup(){
  106. this.$emit("addGroup",this.inx);
  107. },
  108. delGroup(){
  109. this.$emit("delGroup",this.inx);
  110. },
  111. warning(msg,type){
  112. this.$message({
  113. showClose: true,
  114. message:msg,
  115. type:type||'warning'
  116. })
  117. },
  118. showConfirmDialog(msg,resolve){
  119. this.$alert(msg, '提示', {
  120. confirmButtonText: '确定',
  121. type: 'warning'
  122. }).then(() => {
  123. resolve();
  124. }).catch(() => {
  125. this.warning("删除失败,请重试!")
  126. });
  127. },
  128. },
  129. components:{
  130. DiagBaseItem
  131. }
  132. }
  133. </script>
  134. <style lang="less" scoped>
  135. .sub-groups{
  136. }
  137. .group-items{
  138. padding:10px 20px;
  139. margin: 10px 20px;
  140. background: #E3EAF4;
  141. border:1px #ccc dashed;
  142. }
  143. .diag-num{
  144. background: #fff;
  145. padding: 10px 0;
  146. /*border-bottom: 1px solid #E6E6E6;*/
  147. }
  148. .inner-oper{
  149. background: #fff;
  150. padding: 10px 0 10px 21px;
  151. .add-btn {
  152. cursor: pointer;
  153. img {
  154. vertical-align: middle;
  155. }
  156. }
  157. }
  158. .group-oper{
  159. /*text-align: center;*/
  160. padding: 8px 0 8px 205px;;
  161. border-top: 4px solid #F5F5F5;
  162. background: #fff;
  163. margin: 0 20px;
  164. .el-button{
  165. margin-right: 60px;
  166. }
  167. }
  168. .el-button--danger.is-plain:focus, .el-button--danger.is-plain:hover{
  169. color: #fbc4c4;
  170. border-color:#fbc4c4;
  171. }
  172. .el-button--danger.is-plain{
  173. background: none;
  174. &.is-disabled{
  175. color: #f9a7a7;
  176. background-color: #fef0f0;
  177. border-color: #fde2e2;
  178. }
  179. }
  180. </style>