dk-dropdown-switch.js 2.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123
  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 dataListCodeTemp = [];
  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. values.push(item.value)
  57. }
  58. }
  59. this.triggerEvent('commit', {
  60. values: values.join(','),
  61. dataList: dataListTemp,
  62. code: this.data.switchCode
  63. })
  64. },
  65. // 切换功能
  66. onSwitchChange(e) {
  67. var index = e.target.dataset.index;
  68. var dataList = this.data.dataList;
  69. var truenumber = 0
  70. var falsenumber = 0
  71. var allflag=false
  72. // 设置点击的项目 的值
  73. for (let i = 0; i < dataList.length; i++) {
  74. if (i == index) {
  75. dataList[i].checked = !dataList[i].checked
  76. break;
  77. }
  78. }
  79. for (let i = 0; i < dataList.length; i++) {
  80. if (dataList[i].checked) {
  81. truenumber++
  82. } else {
  83. falsenumber++
  84. }
  85. }
  86. if(dataList.length==truenumber){
  87. allflag=true
  88. }
  89. if(dataList.length==falsenumber){
  90. allflag=false
  91. }
  92. this.setData({
  93. dataList: dataList,
  94. allCheck:allflag
  95. });
  96. this.triggerEvent('onSwitchChange', {
  97. index: index
  98. })
  99. },
  100. /**
  101. * 全选/全不选
  102. * @param {*} e
  103. */
  104. onAllChanage(e) {
  105. let allCheck = e.detail
  106. var dataList = this.data.dataList;
  107. // 设置点击的项目 的值
  108. for (let i = 0; i < dataList.length; i++) {
  109. dataList[i].checked = allCheck
  110. }
  111. this.setData({
  112. dataList: dataList,
  113. allCheck: allCheck
  114. });
  115. },
  116. }
  117. })