picker.js 3.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165
  1. import log from './log';
  2. /**
  3. * picker逐级获取-获取访问接口时的自定义携带参数
  4. * @param {Object} obj
  5. */
  6. export function getSendData(obj) {
  7. const {
  8. // 以下参数供以判断
  9. value, //picker的value值
  10. launch, // 是否是初始化
  11. customId, // 自定义标识
  12. index, // 改变的列的下标(第几列改变)
  13. linkageNum, // 联动级数
  14. type, // picker的type
  15. datas, // 页面当前数据: {data_0: 第一列数据, data_1: 第二列数据, data_2: 第三列数据}
  16. column // 三级联动中 是第几列获取sendData
  17. } = obj
  18. const {
  19. data_0, // 第一列数据
  20. data_1 // 第二列数据
  21. } = datas; // 页面当前数据: {data_0: 第一列数据, data_1: 第二列数据, data_2: 第三列数据}
  22. let vbName_0; // 第一列数据获取value值的变量名
  23. let vbName_1; // 第二列数据获取value值的变量名
  24. switch (customId) { // 根据customId决定vbName的赋值走向
  25. case '自定义标识':
  26. vbName_0 = '';
  27. vbName_1 = '';
  28. break;
  29. default:
  30. vbName_0 = 'value';
  31. vbName_1 = 'value';
  32. break;
  33. }
  34. let sendData = {}; // 访问接口携带的数据
  35. switch (linkageNum) {
  36. case 2: // 二级联动
  37. sendData.id = data_0[value[0]][vbName_0];
  38. break;
  39. case 3: // 三级联动
  40. if (launch || index === 0) { // 首次初始化 或 第一列更改
  41. switch (column) {
  42. case 0: // 获取第一列中用以获取sendData的数据
  43. sendData.id = data_0[value[0]][vbName_0];
  44. break;
  45. case 1: // 获取第二列中用以获取sendData的数据
  46. sendData.id = data_1[0][vbName_1];
  47. break;
  48. default:
  49. log('column 超限');
  50. break;
  51. }
  52. } else { // 第二列更改
  53. sendData.id = data_1[value[1]][vbName_1];
  54. }
  55. break;
  56. default:
  57. log('级数不存在');
  58. break;
  59. }
  60. return sendData; // 最终return sendData
  61. }
  62. /**
  63. * picker逐级获取-获取逐级数据
  64. * @param {Object} obj
  65. */
  66. export function getAsyncDataFc(obj) { // 访问接口获取picker自定义逐级数据
  67. return new Promise((rs, rj) => {
  68. uni.showLoading({ //不需要可以删除, 别忘了下面的hideLoading
  69. title: '获取数据中……'
  70. })
  71. setTimeout(() => { // 访问接口获取数据 (需自己修改)
  72. let data;
  73. switch (obj.id) {
  74. case 'a':
  75. data = [{
  76. name: 'a_a',
  77. value: 'a_a'
  78. }, {
  79. name: 'a_b',
  80. value: 'a_b'
  81. }];
  82. break;
  83. case 'b':
  84. data = [{
  85. name: 'b_a',
  86. value: 'b_a'
  87. }, {
  88. name: 'b_b',
  89. value: 'b_b'
  90. }];
  91. break;
  92. case 'c':
  93. data = [{
  94. name: 'c_a',
  95. value: 'c_a'
  96. }, {
  97. name: 'c_b',
  98. value: 'c_b'
  99. }];
  100. break;
  101. case 'a_a':
  102. data = [{
  103. name: 'a_a_a',
  104. value: 'a_a_a'
  105. }, {
  106. name: 'a_a_b',
  107. value: 'a_a_b'
  108. }]
  109. break;
  110. case 'a_b':
  111. data = [{
  112. name: 'a_b_a',
  113. value: 'a_b_a'
  114. }, {
  115. name: 'a_b_b',
  116. value: 'a_b_b'
  117. }]
  118. break;
  119. case 'b_a':
  120. data = [{
  121. name: 'b_a_a',
  122. value: 'b_a_a'
  123. }, {
  124. name: 'b_a_b',
  125. value: 'b_a_b'
  126. }]
  127. break;
  128. case 'b_b':
  129. data = [{
  130. name: 'b_b_a',
  131. value: 'b_b_a'
  132. }, {
  133. name: 'b_b_b',
  134. value: 'b_b_b'
  135. }]
  136. break;
  137. case 'c_a':
  138. data = [{
  139. name: 'c_a_a',
  140. value: 'c_a_a'
  141. }, {
  142. name: 'c_a_b',
  143. value: 'c_a_b'
  144. }]
  145. break;
  146. case 'c_b':
  147. data = [{
  148. name: 'c_b_a',
  149. value: 'c_b_a'
  150. }, {
  151. name: 'c_b_b',
  152. value: 'c_b_b'
  153. }]
  154. break;
  155. default:
  156. break;
  157. }
  158. rs(data);
  159. uni.hideLoading(); //不需要可以删除
  160. }, 1000);
  161. })
  162. }