dk-dropdown-switch.js 2.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130
  1. /*******************************************************************************
  2. * Copyright(c) 2021 dongke All rights reserved. / Confidential
  3. * 类的信息:
  4. * 1.程序名称:
  5. * 2.功能描述:一览界面状态下拉组件-switch
  6. * 编辑履历:
  7. * 作者 日期 版本 修改内容
  8. * jyh 2021-4-28 1.00 新建
  9. *******************************************************************************/
  10. Component({
  11. /**
  12. * 组件的属性列表
  13. */
  14. properties: {
  15. dataList: {
  16. type: [Array],
  17. default: []
  18. },
  19. onAllChanageFlag:{
  20. type:Boolean,
  21. value:true
  22. },
  23. switchCode:{
  24. type:String,
  25. },
  26. switchKey:{
  27. type:String,
  28. }
  29. },
  30. /**
  31. * 组件的初始数据
  32. */
  33. data: {
  34. allCheck: true
  35. },
  36. lifetimes: {
  37. attached: function () {},
  38. detached: function () {
  39. // 在组件实例被从页面节点树移除时执行
  40. },
  41. },
  42. /**
  43. * 组件的方法列表
  44. */
  45. methods: {
  46. /**
  47. * 调用查询
  48. * @param {*} e
  49. */
  50. commit(e) {
  51. // 取出被选中的数据
  52. let dataListTemp = [];
  53. let dataListNameTemp = [];
  54. let values = []
  55. for (let index = 0; index < this.data.dataList.length; index++) {
  56. let item = this.data.dataList[index]
  57. dataListTemp.push(item);
  58. if (item.checked) {
  59. dataListNameTemp.push(item.title);
  60. values.push(item.value)
  61. }
  62. }
  63. this.triggerEvent('commit', {
  64. values: values.join(','),
  65. valueList:values,
  66. dataTitle:dataListNameTemp,
  67. dataList: dataListTemp,
  68. code: this.data.switchCode,
  69. key: this.data.switchKey
  70. })
  71. },
  72. // 切换功能
  73. onSwitchChange(e) {
  74. var index = e.target.dataset.index;
  75. var dataList = this.data.dataList;
  76. var truenumber = 0
  77. var falsenumber = 0
  78. var allflag=false
  79. // 设置点击的项目 的值
  80. for (let i = 0; i < dataList.length; i++) {
  81. if (i == index) {
  82. dataList[i].checked = !dataList[i].checked
  83. break;
  84. }
  85. }
  86. for (let i = 0; i < dataList.length; i++) {
  87. if (dataList[i].checked) {
  88. truenumber++
  89. } else {
  90. falsenumber++
  91. }
  92. }
  93. if(dataList.length==truenumber){
  94. allflag=true
  95. }
  96. if(dataList.length==falsenumber){
  97. allflag=false
  98. }
  99. this.setData({
  100. dataList: dataList,
  101. allCheck:allflag
  102. });
  103. this.triggerEvent('onSwitchChange', {
  104. index: index
  105. })
  106. },
  107. /**
  108. * 全选/全不选
  109. * @param {*} e
  110. */
  111. onAllChanage(e) {
  112. let allCheck = e.detail
  113. var dataList = this.data.dataList;
  114. // 设置点击的项目 的值
  115. for (let i = 0; i < dataList.length; i++) {
  116. dataList[i].checked = allCheck
  117. }
  118. this.setData({
  119. dataList: dataList,
  120. allCheck: allCheck
  121. });
  122. },
  123. }
  124. })