index.js 7.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231
  1. import {
  2. ApiModel
  3. } from "../../utils/api"
  4. const _Http = new ApiModel();
  5. Component({
  6. options: {
  7. addGlobalClass: true
  8. },
  9. /**
  10. * 组件的属性列表
  11. */
  12. properties: {
  13. /* 类型 */
  14. type: {
  15. type: String,
  16. value: "default" //annunciate
  17. },
  18. /* 标题 */
  19. title: {
  20. type: String,
  21. },
  22. /* 选中列表 */
  23. saleprodclass: {
  24. type: Array,
  25. value: []
  26. },
  27. /* 是否全选 */
  28. isAll: {
  29. type: Number
  30. },
  31. /* 回调 */
  32. saleprodChange: {
  33. type: Function
  34. },
  35. /* 分类列表 */
  36. dataList: {
  37. type: Array,
  38. value: []
  39. },
  40. /* 是否请求 */
  41. isRequest: {
  42. type: Boolean,
  43. value: true
  44. }
  45. },
  46. lifetimes: {
  47. ready: function () {
  48. //查询类目列表
  49. if (this.data.isRequest) _Http.basic({
  50. "accesstoken": wx.getStorageSync('userData').token,
  51. "classname": "enterprise.system.prodclass",
  52. "method": "query_typeselectList",
  53. "content": {}
  54. }, false).then(res => {
  55. if (res.msg != '成功') return;
  56. let dataList = [];
  57. for (let i = 0; i < res.data.length; i++) {
  58. dataList.push({
  59. value: res.data[i],
  60. index: i,
  61. checked: false
  62. })
  63. }
  64. //遍历选中数据
  65. const arr = this.data.saleprodclass;
  66. for (let i = 0; i < arr.length; i++) {
  67. for (let k = 0; k < dataList.length; k++) {
  68. if (arr[i] == dataList[k].value) {
  69. dataList[k].checked = true;
  70. break;
  71. }
  72. }
  73. }
  74. this.setData({
  75. dataList
  76. })
  77. });
  78. if (this.data.type == 'annunciate') {
  79. _Http.basic({
  80. "accesstoken": wx.getStorageSync('userData').token,
  81. "classname": "customer.tagents.tagents",
  82. "method": "query_cooperation",
  83. "content": {
  84. "getdatafromdbanyway": true,
  85. "pageNumber": 1,
  86. "pageSize": 999,
  87. "where": {
  88. "condition": "",
  89. "ftype": "",
  90. "fstatus": ""
  91. }
  92. }
  93. }, false).then(res => {
  94. if (res.msg != '成功') return wx.showToast({
  95. title: res.data,
  96. icon: "none"
  97. })
  98. let data = res.data,
  99. partnerCount = 0;
  100. if (this.data.isAll == 0) {
  101. for (let i = 0; i < data.length; i++) {
  102. data[i].index = i;
  103. data[i].checked = true;
  104. partnerCount = partnerCount + 1
  105. }
  106. } else {
  107. for (let i = 0; i < data.length; i++) {
  108. data[i].index = i;
  109. data[i].checked = false;
  110. }
  111. }
  112. this.setData({
  113. dataList: data,
  114. partnerCount,
  115. manual: this.data.isAll
  116. });
  117. })
  118. }
  119. },
  120. },
  121. observers: {
  122. 'saleprodclass': function (saleprodclass) {
  123. if (this.data.type != "annunciate") return;
  124. setTimeout(() => {
  125. let dataList = this.data.dataList;
  126. for (let i = 0; i < dataList.length; i++) {
  127. if (saleprodclass.some((v) => v == dataList[i].tcooperationagentsid)) {
  128. dataList[i].checked = true;
  129. }
  130. }
  131. this.setData({
  132. dataList
  133. })
  134. }, 1000);
  135. }
  136. },
  137. /**
  138. * 组件的初始数据
  139. */
  140. data: {
  141. pitchOnList: [], //选中列表
  142. manual: 0, //是否手动选择发布范围
  143. },
  144. /**
  145. * 组件的方法列表
  146. */
  147. methods: {
  148. /* 确定 */
  149. confirm() {
  150. if (this.data.type == 'default') {
  151. this.triggerEvent("saleprodChange", this.data.pitchOnList)
  152. } else if (this.data.type == 'annunciate') {
  153. let data = {
  154. isAll: this.data.isAll
  155. };
  156. if (this.data.isAll == 1) {
  157. let include = [], //选中的商户id
  158. list = this.data.dataList,
  159. deleteItem = [], //删除的商户id
  160. saleprodclass = this.data.saleprodclass;
  161. //选中商户id
  162. for (let i = 0; i < list.length; i++) {
  163. if (list[i].checked) include.push(list[i].tcooperationagentsid)
  164. };
  165. //删除商户id
  166. if (saleprodclass.length >= 1) {
  167. for (let i = 0; i < saleprodclass.length; i++) {
  168. if (!include.some((v) => v == saleprodclass[i])) {
  169. deleteItem.push(saleprodclass[i])
  170. }
  171. }
  172. };
  173. data.include = include;
  174. data.deleteItem = deleteItem;
  175. if (include.length == 0) return wx.showToast({
  176. title: '您还未选择可查看通告的合作伙伴',
  177. icon: "none"
  178. })
  179. };
  180. this.triggerEvent("saleprodChange", JSON.stringify(data));
  181. }
  182. },
  183. /* 多选框返回数值 */
  184. checkedChange(e) {
  185. this.setData({
  186. pitchOnList: e.detail.value
  187. });
  188. },
  189. /* 添加背景色 */
  190. pitchOn(e) {
  191. let dataList = this.data.dataList,
  192. index = e.currentTarget.dataset.index,
  193. partnerCount = this.data.partnerCount,
  194. isAll = 1;
  195. //计数
  196. if (dataList[index].checked) {
  197. partnerCount = partnerCount - 1
  198. } else {
  199. partnerCount = partnerCount + 1
  200. }
  201. isAll = (partnerCount == dataList.length) ? isAll = 0 : isAll = 1; //是否指定范围
  202. dataList[index].checked = !dataList[index].checked; //切换状态
  203. if (this.data.manual == 1) isAll = 1;
  204. this.setData({
  205. dataList,
  206. isAll,
  207. partnerCount
  208. })
  209. },
  210. /* 商户全选或指定范围 */
  211. allOrPart(e) {
  212. const {
  213. value
  214. } = e.detail;
  215. if (value == 0) {
  216. let dataList = this.data.dataList;
  217. for (let i = 0; i < dataList.length; i++) {
  218. dataList[i].checked = true;
  219. }
  220. this.setData({
  221. dataList
  222. })
  223. };
  224. this.setData({
  225. isAll: value,
  226. manual: value
  227. })
  228. }
  229. }
  230. })