index.js 5.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172
  1. import { $wuxForm } from '../../dist/index'
  2. import data from '../cascader/data'
  3. import ad from '../index/ad'
  4. function getDateString(date = new Date) {
  5. return {
  6. year: date.getFullYear() + '',
  7. month: date.getMonth() + '',
  8. day: date.getDate() + '',
  9. hour: date.getHours() + '',
  10. minute: date.getMinutes() + '',
  11. }
  12. }
  13. const { year, month, day, hour, minute } = getDateString()
  14. ad({
  15. data: {
  16. checkbox: ['1'],
  17. radio: '1',
  18. switch: true,
  19. picker: [],
  20. datePicker: [],
  21. // datePicker: [year, month, day, hour, minute],
  22. popupSelect: '',
  23. options1: [],
  24. options2: ['顺丰速运', '中通快递', '圆通快递', '申通快递', '韵达快递', '天天快递', '京东物流'],
  25. layout: 'horizontal',
  26. validateMessages: {
  27. required: '%s 字段为必填',
  28. },
  29. confirmDirty: false,
  30. },
  31. onLoad() {
  32. this.setData({ options1: data })
  33. },
  34. onSegmentedControlChange(e) {
  35. console.log(e)
  36. const { key, values } = e.detail
  37. const layout = values[key]
  38. this.setData({
  39. layout,
  40. })
  41. },
  42. onCheckboxChange(e) {
  43. const { value } = e.detail
  44. const data = this.data.checkbox
  45. const index = data.indexOf(value)
  46. const checkbox = index === -1 ? [...data, value] : data.filter((n) => n !== value)
  47. this.setData({ checkbox })
  48. },
  49. onRadioChange(e) {
  50. this.setData({ radio: e.detail.value })
  51. },
  52. onSwitchChange(e) {
  53. this.setData({ switch: e.detail.value })
  54. },
  55. onPickerChange(e) {
  56. this.setData({ picker: e.detail.value, pickerLabel: e.detail.label })
  57. },
  58. onDatePickerChange(e) {
  59. this.setData({ datePicker: e.detail.value, datePickerLabel: e.detail.label })
  60. },
  61. onArrowClick() {
  62. const { setFieldsValue } = $wuxForm()
  63. setFieldsValue({ datePicker: [] })
  64. this.setValues({ datePicker: [] }, true)
  65. },
  66. onPopupSelectChange(e) {
  67. this.setData({ popupSelect: e.detail.value, popupSelectLabel: e.detail.label })
  68. },
  69. onSelectableChange(e) {
  70. this.setData({ checkEmail: e.detail.checked }, () => {
  71. const form = $wuxForm()
  72. form.validateFields(['email'], { force: true })
  73. })
  74. },
  75. formSubmit(e) {
  76. console.log('Default Form Submit \n', e.detail.value)
  77. },
  78. onSubmit() {
  79. const { validateFields } = $wuxForm()
  80. validateFields((err, values) => {
  81. if (!err) {
  82. wx.showModal({
  83. content: JSON.stringify(values, null, 2),
  84. showCancel: !1,
  85. })
  86. console.log('Received values of form: ', values);
  87. }
  88. })
  89. },
  90. onValuesChange(e) {
  91. const { changedValues, allValues } = e.detail
  92. this.setValues(changedValues)
  93. console.log('onValuesChange \n', changedValues, allValues)
  94. },
  95. onFieldsChange(e) {
  96. console.log('onFieldsChange \n', e.detail)
  97. },
  98. onReset() {
  99. const { getFieldsValue, resetFields } = $wuxForm()
  100. resetFields()
  101. const values = getFieldsValue()
  102. this.setValues({ ...values, checkEmail: false })
  103. console.log('Wux Form Reset \n', values)
  104. },
  105. onFill() {
  106. const { setFieldsValue } = $wuxForm()
  107. setFieldsValue({
  108. code: this.data.codeMSG || '1234',
  109. })
  110. },
  111. setValues(changedValues, clearLabel) {
  112. Object.keys(changedValues).forEach((field) => {
  113. this.setData(clearLabel ? {
  114. [field]: changedValues[field],
  115. [`${field}Label`]: null,
  116. }: {
  117. [field]: changedValues[field],
  118. })
  119. })
  120. },
  121. onSendCode() {
  122. const NUMBER_STRING = '0123456789';
  123. const randomNum = (min, max) => {
  124. return Math.floor(Math.random() * (max - min) + min);
  125. }
  126. const codeMSG = [...new Array(4)].map(_ => NUMBER_STRING[randomNum(0, NUMBER_STRING.length)]).join('')
  127. this.setData({
  128. codeMSG,
  129. })
  130. wx.showModal({
  131. content: `【WuxUI】验证码:${codeMSG},有效期10分钟,请勿泄露。`,
  132. showCancel: !1,
  133. })
  134. },
  135. checkCode(rule, value) {
  136. if (!value) {
  137. return Promise.reject(new Error('验证码不能为空!'))
  138. }
  139. if (this.data.codeMSG && value === this.data.codeMSG) {
  140. return Promise.resolve()
  141. }
  142. return Promise.reject(new Error('验证码输入错误!'))
  143. },
  144. validateToNextPassword(rule, value, callback){
  145. const form = $wuxForm()
  146. if (value && this.data.confirmDirty) {
  147. form.validateFields(['confirm'], { force: true })
  148. }
  149. callback()
  150. },
  151. compareToFirstPassword(rule, value, callback) {
  152. const form = $wuxForm()
  153. if (value && value !== form.getFieldValue('password')) {
  154. callback('您输入的两个密码不一致!')
  155. } else {
  156. callback()
  157. }
  158. },
  159. handleConfirmBlur(e) {
  160. const { value } = e.detail
  161. this.setData({ confirmDirty: this.data.confirmDirty || !!value })
  162. },
  163. })