dk-dropdown-switch.js 2.7 KB

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