DiagBaseGroup.vue 5.8 KB

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