daiJiaoDanWeiHuiFei.vue 3.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136
  1. <template>
  2. <view class="container">
  3. <view class="form-box">
  4. <u-form :model="formData.form" ref="formRef" label-width="160" :label-style="{fontWeight: 'bold', fontSize: '26rpx'}">
  5. <u-form-item label="机构名称" prop="name"><u-input v-model="formData.form.name" :border="true" type="text" placeholder="请输入缴交机构名称"/></u-form-item>
  6. <u-form-item label="机构备案证号" prop="number"><u-input v-model="formData.form.number" :border="true" type="text" placeholder="请输入缴交对象机构备案证号"/></u-form-item>
  7. <u-form-item label="缴费年限" prop="year"><u-input v-model="formData.form.year" :border="true" type="select" @click="showYear = true" placeholder="请选择缴费时间"/></u-form-item>
  8. <u-form-item label="代缴人姓名" prop="giver">
  9. <u-input disabled v-model="formData.form.giver" :border="false" type="text" />
  10. </u-form-item>
  11. <u-form-item label="代缴人联系方式" prop="giverPhone">
  12. <u-input disabled v-model="formData.form.giverPhone" :border="false" type="text" />
  13. </u-form-item>
  14. </u-form>
  15. </view>
  16. <u-select v-model="showYear" :list="yearList" @confirm="onYearConfirm"></u-select>
  17. <view class="bottom-box">
  18. <u-button type="error" shape="circle" @click="onSubmit">点击缴费</u-button>
  19. </view>
  20. </view>
  21. </template>
  22. <script setup>
  23. import { ref, reactive } from 'vue'
  24. import { onLoad, onReady } from '@dcloudio/uni-app'
  25. import { dept } from '@/api/cost.js'
  26. import { msgError } from '../../utils/common'
  27. const formRef = ref()
  28. const formData = reactive({
  29. form: {
  30. name: null, // 机构名称
  31. number: null, // 机构备案证号
  32. year: null, // 缴费年限
  33. giver: "", //默认当前用户名
  34. giverPhone: "" //默认当前用户手机号
  35. },
  36. rules: {
  37. name: [
  38. {
  39. required: true,
  40. message: '请输入缴交对象机构名称',
  41. // 可以单个或者同时写两个触发验证方式
  42. trigger: 'blur',
  43. }
  44. ],
  45. number: [
  46. {
  47. required: true,
  48. message: '请输入缴交对象机构备案证号',
  49. // 可以单个或者同时写两个触发验证方式
  50. trigger: 'blur',
  51. }
  52. ],
  53. year: [
  54. {
  55. required: true,
  56. message: '请输入缴费年限',
  57. // 可以单个或者同时写两个触发验证方式
  58. trigger: 'change',
  59. }
  60. ],
  61. }
  62. })
  63. const showYear = ref(false)
  64. const yearList = ref([
  65. {
  66. value: '2025',
  67. label: '2025'
  68. },
  69. {
  70. value: '2024',
  71. label: '2024'
  72. }
  73. ])
  74. function onYearConfirm(val) {
  75. formData.form.year = val[0].value
  76. }
  77. function onSubmit() {
  78. formRef.value.validate((valid) => {
  79. if (valid) {
  80. dept(formData.form).then(res => {
  81. if(res && res.code === 0) {
  82. const data = res.data
  83. if (data.canPay) {
  84. uni.navigateTo({
  85. url: `/pages/daiJiaoDanWeiChaXunJieGuo/daiJiaoDanWeiChaXunJieGuo?name=${formData.form.name}&number=${formData.form.number}&year=${formData.form.year}&price=${data.duePrice}&userId=${data.userId}&giver=${formData.form.giver}&giverPhone=${formData.form.giverPhone}`
  86. })
  87. } else {
  88. msgError('无法代支付')
  89. }
  90. } else {
  91. msgError(res.message)
  92. }
  93. })
  94. }
  95. })
  96. }
  97. onReady(() => {
  98. formRef.value.setRules(formData.rules)
  99. })
  100. onLoad(() => {
  101. yearList.value = []
  102. const year = new Date().getFullYear()
  103. const user = uni.getStorageSync("USER_INFO")
  104. formData.form.giver = user.name
  105. formData.form.giverPhone = user.phone
  106. for (let i = 0; i < 10; i++) {
  107. yearList.value.push({
  108. value: `${year - i}`,
  109. label: `${year - i}`
  110. })
  111. }
  112. // console.log('onLoad')
  113. })
  114. </script>
  115. <style lang="scss" scoped>
  116. .container {
  117. height: 100vh;
  118. width: 100vw;
  119. background-color: $uni-bg-color;
  120. padding: 20rpx;
  121. .form-box {
  122. padding: 20rpx 0;
  123. }
  124. .bottom-box {
  125. margin-top: 100rpx;
  126. padding: 0 50rpx;
  127. }
  128. }
  129. </style>