Form.vue 5.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166
  1. <template>
  2. <view>
  3. <view class="form-card" v-if="viewStatus">
  4. <view class="flex_c_l form-item hr-solid">
  5. <view class="form-lable">规格说明</view>
  6. <up-input v-model="formData.name" clearable border="none" placeholder="填写本服务内容说明" class="form-input"
  7. placeholder-class="form-placeholder"></up-input>
  8. </view>
  9. <view class="flex_c_l form-item hr-solid">
  10. <view class="form-lable">服务价格</view>
  11. <up-input v-model="formData.name" clearable border="none" placeholder="单次服务的价格" class="form-input"
  12. placeholder-class="form-placeholder"></up-input>
  13. </view>
  14. <view class="flex_c_l form-item hr-solid">
  15. <view class="form-lable">购买单位</view>
  16. <up-input v-model="formData.name" clearable border="none" placeholder="购买单位如次、平方" class="form-input"
  17. placeholder-class="form-placeholder"></up-input>
  18. </view>
  19. <view class="flex_c_l form-item hr-solid">
  20. <view class="form-lable">最少购买</view>
  21. <up-input v-model="formData.name" clearable border="none" placeholder="用户下单最少购买数量" class="form-input"
  22. placeholder-class="form-placeholder"></up-input>
  23. </view>
  24. <view class="flex_c_l form-item hr-solid">
  25. <view class="form-lable">服务时长</view>
  26. <up-input v-model="formData.name" clearable border="none" placeholder="预计单次服务时常" class="form-input"
  27. placeholder-class="form-placeholder"></up-input>
  28. </view>
  29. </view>
  30. <view class="form-card" v-else>
  31. <view class="flex_c_l form-item hr-solid">
  32. <view class="form-lable">规格说明</view>
  33. <view class="form-input">{{ formData.name }}</view>
  34. </view>
  35. <view class="flex_c_l form-item hr-solid">
  36. <view class="form-lable">服务价格</view>
  37. <view class="form-input">{{ formData.name }}</view>
  38. </view>
  39. <view class="flex_c_l form-item hr-solid">
  40. <view class="form-lable">购买单位</view>
  41. <view class="form-input">{{ formData.name }}</view>
  42. </view>
  43. <view class="flex_c_l form-item hr-solid">
  44. <view class="form-lable">最少购买</view>
  45. <view class="form-input">{{ formData.name }}</view>
  46. </view>
  47. <view class="flex_c_l form-item hr-solid">
  48. <view class="form-lable">服务时长</view>
  49. <view class="form-input">{{ formData.name }}</view>
  50. </view>
  51. </view>
  52. </view>
  53. </template>
  54. <script setup>
  55. import { computed, ref, reactive } from 'vue';
  56. const status = ref(false);
  57. import { provide, inject } from 'vue'
  58. import { sendCode } from '@/api/sm.js';
  59. const formData = inject('formData');
  60. const props = defineProps({
  61. viewStatus: {
  62. type: Boolean,
  63. default: true
  64. },
  65. form:{
  66. type: Object,
  67. default: () => {
  68. return {
  69. name: '',
  70. }
  71. }
  72. }
  73. })
  74. //年龄校验
  75. const ageVer = () => {
  76. return new Promise((resolve, reject) => {
  77. const isNum = uni.$u.test.digits(formData.age)
  78. if (!isNum) {
  79. formData.age = formData.age.replace(/[^0-9.]/g, '');// 移除非数字字符
  80. reject('请输入数字');
  81. }
  82. const value = Number(formData.age);
  83. if (value < 12) {
  84. reject('年龄过小');
  85. }
  86. resolve();
  87. })
  88. }
  89. // 校验
  90. const blurInput = async (key) => {
  91. try {
  92. const verFun = {
  93. age: ageVer,
  94. }
  95. const res = await verFun[key]();
  96. console.log("TCL: numberInput -> res", res)
  97. } catch (error) {
  98. uni.showToast({
  99. title: error,
  100. icon: 'none',
  101. duration: 1000
  102. });
  103. console.log("TCL: numberInput -> error", error)
  104. }
  105. }
  106. </script>
  107. <style lang="scss" scoped>
  108. .form-card {
  109. background: #fff;
  110. border-radius: 20rpx;
  111. margin-bottom: 20rpx;
  112. .form-item {
  113. padding: 32rpx 0;
  114. margin-left: 32rpx;
  115. padding-right: 32rpx;
  116. .form-lable {
  117. font-size: 32rpx;
  118. line-height: 44rpx;
  119. color: #1D2129;
  120. margin-right: 48rpx;
  121. }
  122. }
  123. .form-input {
  124. flex: 1;
  125. font-family: PingFang SC;
  126. font-size: 32rpx;
  127. line-height: 44rpx;
  128. color: #130F26;
  129. }
  130. }
  131. .code-btn {
  132. border-radius: 14rpx;
  133. background: linear-gradient(180deg, #FD8F7C -75%, #FE534B 140%);
  134. // margin-right: 32rpx;
  135. font-family: PingFang SC;
  136. font-size: 26rpx;
  137. font-weight: normal;
  138. line-height: 42rpx;
  139. letter-spacing: normal;
  140. color: #FFFFFF;
  141. padding: 13rpx 20rpx;
  142. }
  143. </style>
  144. <style>
  145. .form-placeholder {
  146. color: #C9CDD4;
  147. }
  148. </style>