index.js 3.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119
  1. // components/l-form/index.js
  2. import { areaList } from "../../utils/util";
  3. Component({
  4. attached () { this._init(); },
  5. pageLifetimes: { show () { this._init() } },
  6. properties: {
  7. formData: { type: Array, value: [] },
  8. },
  9. /**
  10. * 组件的初始数据
  11. */
  12. data: {
  13. areaList,//地址列表
  14. show: true,//控制地址
  15. areaindex: 0,//区分地址所在数据位置
  16. arealist: [],//储存不同地址选项
  17. // 默认提交
  18. Success (data) {
  19. console.log(data)
  20. }
  21. },
  22. /**
  23. * 组件的方法列表
  24. */
  25. methods: {
  26. // 定义调用组件的js方法
  27. _init () {
  28. wx.lxd = wx.lxd || {}, wx.lxd.Form = e => {
  29. this.setData({
  30. // 页面传参
  31. ...e,
  32. })
  33. }
  34. },
  35. // 数据双向绑定
  36. input (e) {
  37. let { detail } = e, { item, index } = e.currentTarget.dataset, { formData } = this.data;
  38. item["value"] = detail;
  39. formData[index] = item;
  40. this.setData({ formData })
  41. },
  42. // 挑选地址
  43. choose (e) {
  44. let { name, index } = e.currentTarget.dataset;
  45. this.setData({ show: false, area: name, areaindex: index })
  46. },
  47. // area完成
  48. areaconfirm (e) {
  49. this.areafunc(e);
  50. },
  51. // area取消
  52. areacancel (e) {
  53. this.areafunc(e);
  54. },
  55. // area改变
  56. areachange (e) { this.areafunc(e, true); },
  57. // area 共同执行
  58. areafunc (e, boolean) {
  59. let { values } = e.detail, addresss = '', { formData } = this.data, { index } = e.currentTarget.dataset;
  60. values.forEach(item => {
  61. !!item ? addresss += item.name + " " : ''
  62. })
  63. formData[index]["value"] = addresss;
  64. formData[index]["values"] = values;
  65. this.setData({
  66. formData,
  67. show: boolean ? false : true
  68. })
  69. },
  70. // 复选框
  71. onChange (e) {
  72. let { item, index } = e.currentTarget.dataset, { formData } = this.data, { detail } = e;
  73. item["value"] = detail;
  74. formData[index] = item;
  75. this.setData({
  76. formData
  77. })
  78. },
  79. // 保存
  80. submit () {
  81. let { formData } = this.data,
  82. lock = [], i = 0 //提交锁
  83. ;
  84. formData.forEach((item, index) => {
  85. if (item.require) {
  86. i++;
  87. let reg = /\S/;
  88. item.err = false;
  89. switch (item.rule) {
  90. case 'tel':
  91. reg = /^1[34578]\d{9}$/;
  92. reg.test(item.value) ? lock.push(true) : item.err = true;
  93. break;
  94. case 'address':
  95. if (!item.values || !item.values[2] || item.values[2].code == '') {
  96. item.err = true;
  97. item.errmsg = "请正确选择地址"
  98. break;
  99. }
  100. lock.push(true);
  101. break
  102. default:
  103. reg.test(item.value) ? lock.push(true) : item.err = true;
  104. break;
  105. }
  106. }
  107. })
  108. if (lock.length < i) {
  109. this.setData({
  110. formData
  111. })
  112. return false;
  113. }
  114. this.data.Success(formData);
  115. },
  116. }
  117. })