TaskAccount.vue 6.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173
  1. <script setup>
  2. import sHeader from "@/components/SimpleHeader";
  3. import { auditUserApply } from "@/service/taskAccount";
  4. import { ref, onMounted, onBeforeUnmount } from "vue";
  5. import { showToast, showFailToast, showSuccessToast } from "vant";
  6. import { useUserStore } from '@/stores/user';
  7. import { useRouter } from 'vue-router'
  8. const userName = ref('')
  9. const phone = ref('')
  10. const identityCard = ref('')
  11. const payeeCode = ref('')
  12. const allowMaximum = ref('') // 允许最大份额
  13. const cardNo = ref('')
  14. const buyPriorityRank = ref('') // 买卖优先级/奋斗贡献值,文字
  15. const level = ref('') // 买卖优先级/奋斗贡献值,值
  16. const stockNum = ref('') // 初始股票份额
  17. const hisAverage = ref('') // 历史股票均价
  18. const applyId = ref('');
  19. const userStore = useUserStore();
  20. const router = useRouter();
  21. const showPicker = ref(false);
  22. const columns = [
  23. { text: '一级', value: '1' },
  24. { text: '二级', value: '2' },
  25. { text: '三级', value: '3' },
  26. { text: '四级', value: '4' },
  27. { text: '五级', value: '5' },
  28. { text: '六级', value: '6' },
  29. { text: '七级', value: '7' },
  30. { text: '八级', value: '8' },
  31. { text: '九级', value: '9' },
  32. { text: '十级', value: '10' },
  33. { text: '十一级', value: '11' },
  34. { text: '十二级', value: '12' },
  35. { text: '十三级', value: '13' },
  36. { text: '十四级', value: '14' },
  37. { text: '十五级', value: '15' },
  38. { text: '十六级', value: '16' },
  39. { text: '十七级', value: '17' },
  40. { text: '十八级', value: '18' },
  41. { text: '十九级', value: '19' },
  42. { text: '二十级', value: '20' },
  43. ]
  44. const onConfirm = ({ selectedOptions }) => {
  45. buyPriorityRank.value = selectedOptions[0]?.text;
  46. level.value = selectedOptions[0]?.value;
  47. showPicker.value = false;
  48. };
  49. onMounted(() => {
  50. if (userStore.userInfo) {
  51. userName.value = userStore.userInfo.userName;
  52. phone.value = userStore.userInfo.phone;
  53. identityCard.value = userStore.userInfo.identityCard;
  54. payeeCode.value = userStore.userInfo.payeeCode;
  55. cardNo.value = userStore.userInfo.cardNo;
  56. applyId.value = userStore.userInfo.id;
  57. }
  58. });
  59. // 当组件卸载时清除用户信息
  60. onBeforeUnmount(() => {
  61. userStore.clearUserInfo();
  62. });
  63. const validateStockNum = (val) => {
  64. const regex = /^([1-9]\d{0,4}|100000|0)$/;
  65. return regex.test(val) || val === '' ? true : '请输入[0,100000]范围内整数';
  66. }
  67. const validateHisAverage = (val) => {
  68. const regex = /^(0|[1-9][0-9]{0,5}\.[0-9]{0,2})$/;
  69. return regex.test(val) || val === '' ? true : '请输入有效数字,最多保留2位小数';
  70. };
  71. // const showHisAverage = computed(() => {
  72. // return stockNum.value > 0;
  73. // });
  74. // 拒绝
  75. const rejectApply = async () => {
  76. const userCheck = {
  77. // userName: userName.value,
  78. // phone: phone.value,
  79. // identityCard: identityCard.value,
  80. // payeeCode: payeeCode.value,
  81. // cardNo: cardNo.value,
  82. applyId: applyId.value,
  83. pass: false
  84. }
  85. const { data } = await auditUserApply(userCheck);
  86. if (data.code === "00000") {
  87. showToast("已拒绝");
  88. router.go(-1)
  89. } else {
  90. showFailToast(data.message);
  91. }
  92. }
  93. // 同意
  94. const approveApply = async () => {
  95. if (!buyPriorityRank.value || !allowMaximum.value) {
  96. showFailToast('奋斗值和最大分额是必填项');
  97. return;
  98. }
  99. console.log("allowMaximum >>>", allowMaximum.value);
  100. const userCheck = {
  101. allowMaximum: allowMaximum.value,
  102. level: level.value,
  103. stockNum: stockNum.value,
  104. hisAverage: hisAverage.value,
  105. applyId: applyId.value,
  106. pass: true
  107. }
  108. const { data } = await auditUserApply(userCheck);
  109. if (data.code === "00000") {
  110. // 成功
  111. // showToast("已同意");
  112. showSuccessToast("已同意")
  113. router.go(-1)
  114. } else {
  115. showFailToast(data.message);
  116. }
  117. }
  118. </script>
  119. <template>
  120. <!-- 账号申请审批-->
  121. <div class="fife" style="background-color:#ebedf0">
  122. <s-header :name="'用户信息审批'" :noback="false"></s-header>
  123. <br>
  124. <van-form>
  125. <van-cell-group inset>
  126. <van-field v-model="userName" readonly name="用户名" label="用户名" placeholder="用户名" left-icon="smile-o" />
  127. <van-field v-model="phone" readonly name="手机号码" label="手机号码" placeholder="手机号码" left-icon="phone-o"
  128. :rules="[{ required: true, message: '手机号码不能为空' }]" />
  129. <van-field v-model="identityCard" readonly name="身份证号" label="身份证号" placeholder="身份证号" left-icon="contact-o" />
  130. <van-field v-model="payeeCode" readonly name="支付宝号" label="支付宝号" placeholder="支付宝号" left-icon="certificate"
  131. :rules="[{ required: true, message: '支付宝号不能为空' }]" />
  132. <van-field v-model="cardNo" readonly name="银行卡号" label="银行卡号" placeholder="银行卡号" left-icon="debit-pay"
  133. :rules="[{ required: true, message: '银行卡号不能为空' }]" />
  134. <van-field v-model="buyPriorityRank" is-link readonly name="picker" label="奋斗贡献值" placeholder="点击选择买卖优先级"
  135. left-icon="diamond-o" :rules="[{ required: true, message: '奋斗贡献值不能为空' }]" @click="showPicker = true" />
  136. <van-popup v-model:show="showPicker" position="bottom">
  137. <van-picker :columns="columns" @confirm="onConfirm" @cancel="showPicker = false" />
  138. </van-popup>
  139. <van-field v-model="allowMaximum" name="允许买入的最大份额" label="最大买入份额" placeholder="允许买入的最大份额" left-icon="points"
  140. :rules="[{ required: true, message: '最大份额不能为空' }]" />
  141. <van-field v-model="stockNum" name="初始股票份额" label="初始股票份额" placeholder="初始股票份额(默认为0)" left-icon="balance-o"
  142. :rules="[{ validator: validateStockNum }]" />
  143. <van-field v-model="hisAverage" name="历史股票均价" label="历史股票均价" placeholder="历史股票均价(默认为0)"
  144. left-icon="gold-coin-o" :rules="[{ validator: validateHisAverage }]" />
  145. </van-cell-group>
  146. <div style="margin: 20px 30px; display: flex; justify-content: center; align-items: center; gap: 50px;">
  147. <van-button round class="custom-button" type="danger" size="small" @click="rejectApply" block>拒绝</van-button>
  148. <van-button round class="custom-button" type="success" size="small" @click="approveApply" block>通过</van-button>
  149. </div>
  150. </van-form>
  151. </div>
  152. </template>
  153. <style scoped></style>