dk-dropdown-switch.js 2.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125
  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. },
  27. /**
  28. * 组件的初始数据
  29. */
  30. data: {
  31. allCheck: true
  32. },
  33. lifetimes: {
  34. attached: function () {},
  35. detached: function () {
  36. // 在组件实例被从页面节点树移除时执行
  37. },
  38. },
  39. /**
  40. * 组件的方法列表
  41. */
  42. methods: {
  43. /**
  44. * 调用查询
  45. * @param {*} e
  46. */
  47. commit(e) {
  48. // 取出被选中的数据
  49. let dataListTemp = [];
  50. let dataListNameTemp = [];
  51. let values = []
  52. for (let index = 0; index < this.data.dataList.length; index++) {
  53. let item = this.data.dataList[index]
  54. dataListTemp.push(item);
  55. if (item.checked) {
  56. dataListNameTemp.push(item.title);
  57. values.push(item.value)
  58. }
  59. }
  60. this.triggerEvent('commit', {
  61. values: values.join(','),
  62. dataTitle:dataListNameTemp,
  63. dataList: dataListTemp,
  64. code: this.data.switchCode
  65. })
  66. },
  67. // 切换功能
  68. onSwitchChange(e) {
  69. var index = e.target.dataset.index;
  70. var dataList = this.data.dataList;
  71. var truenumber = 0
  72. var falsenumber = 0
  73. var allflag=false
  74. // 设置点击的项目 的值
  75. for (let i = 0; i < dataList.length; i++) {
  76. if (i == index) {
  77. dataList[i].checked = !dataList[i].checked
  78. break;
  79. }
  80. }
  81. for (let i = 0; i < dataList.length; i++) {
  82. if (dataList[i].checked) {
  83. truenumber++
  84. } else {
  85. falsenumber++
  86. }
  87. }
  88. if(dataList.length==truenumber){
  89. allflag=true
  90. }
  91. if(dataList.length==falsenumber){
  92. allflag=false
  93. }
  94. this.setData({
  95. dataList: dataList,
  96. allCheck:allflag
  97. });
  98. this.triggerEvent('onSwitchChange', {
  99. index: index
  100. })
  101. },
  102. /**
  103. * 全选/全不选
  104. * @param {*} e
  105. */
  106. onAllChanage(e) {
  107. let allCheck = e.detail
  108. var dataList = this.data.dataList;
  109. // 设置点击的项目 的值
  110. for (let i = 0; i < dataList.length; i++) {
  111. dataList[i].checked = allCheck
  112. }
  113. this.setData({
  114. dataList: dataList,
  115. allCheck: allCheck
  116. });
  117. },
  118. }
  119. })