index.vue 10 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326
  1. <template>
  2. <div class="mianBox">
  3. <!-- <van-row class="balance">
  4. <van-col span="24">余额:32.00元</van-col>
  5. </van-row> -->
  6. <van-row class="contentBox">
  7. <van-row class="input_wrap">
  8. <span>¥</span>
  9. <input
  10. type="number"
  11. placeholder="请输入充值金额( 元 )"
  12. class="input"
  13. @input="Input"
  14. v-model="data.money"
  15. />
  16. </van-row>
  17. </van-row>
  18. <van-row class="select_amount" >
  19. <van-col span="8" @tap="btn50" :style="state1" data="50" >50</van-col>
  20. <van-col style="margin-left:8%" span="8" @tap="btn100" :style="state2" data="100">100</van-col>
  21. <van-col style="margin-left:8%" span="8" @tap="btn150" :style="state3" data="150">150</van-col>
  22. <van-col span="8" @tap="btn200" :style="state4" data="200">200</van-col>
  23. <van-col style="margin-left:8%" span="8" @tap="btn250" :style="state5" data="250">250</van-col>
  24. <van-col style="margin-left:8%" span="8" @tap="btn300" :style="state6" data="300">300</van-col>
  25. </van-row>
  26. <van-row class="pay_money" type="flex" justify="space-around">
  27. <van-col span="12" class="left">到账金额</van-col>
  28. <van-col span="12" class="right">¥{{data.money}}元</van-col>
  29. </van-row>
  30. <!-- <van-row class="tip">
  31. 服务费 ¥0元<br>
  32. 费率 0%
  33. </van-row> -->
  34. <van-button class="amount" color="#F22E3C" @tap="recharge">立即充值</van-button>
  35. <van-dialog id="van-dialog" />
  36. <van-toast id="van-toast" />
  37. <!-- <van-loading size="24px" v-if = "loading" vertical style="z-index:999999;position:fixed;top:40%;left:0;right:0;" >加载中...</van-loading>
  38. <van-overlay :show="loading" style="z-index:100;position:fixed"/> -->
  39. </div>
  40. </template>
  41. <script>
  42. import Toast from '../../wxcomponents/vant/weapp/dist/toast/toast';
  43. import Dialog from '../../wxcomponents/vant/weapp/dist/dialog/dialog'
  44. export default {
  45. data() {
  46. return {
  47. show: false,
  48. loading: false,
  49. overlayShow: false,
  50. env:null, //识别是否为扫描用户进入,以便直接进入支付跳转
  51. state1:"color:#000;background: #fff;border:1px solid rgba(242, 46, 60, 1);",
  52. state2:"color:#000;background: #fff;border:1px solid rgba(242, 46, 60, 1);",
  53. state3:"color:#000;background: #fff;border:1px solid rgba(242, 46, 60, 1);",
  54. state4:"color:#000;background: #fff;border:1px solid rgba(242, 46, 60, 1);",
  55. state5:"color:#000;background: #fff;border:1px solid rgba(242, 46, 60, 1);",
  56. state6:"color:#000;background: #fff;border:1px solid rgba(242, 46, 60, 1);",
  57. data:{
  58. money: "0",
  59. openid:null
  60. }
  61. };
  62. },
  63. watch: {
  64. money(val) {
  65. // if (/^0[1-9]/.test(val)) {
  66. // this.data.money = val.substring(1);
  67. // }
  68. },
  69. },
  70. components: {
  71. // [Field.name]: Field,
  72. // [NumberKeyboard.name]: NumberKeyboard,
  73. // [Dialog.name]: Dialog,
  74. // [Toast.name]: Toast,
  75. },
  76. onLoad(options){
  77. },
  78. created(){
  79. let _this = this
  80. uni.getStorage({
  81. key: 'openid',
  82. success: function (res) {
  83. _this.data.openid = res.data
  84. }
  85. });
  86. },
  87. methods: {
  88. recharge(){
  89. if(this.data.money && this.data.money != 0 && this.data.money != "0.00"){
  90. if(this.data.money.toString().indexOf(".")<1){
  91. this.data.money = this.data.money + ".00"
  92. }
  93. if(this.data.openid){
  94. //console.log(`"去支付页1"${JSON.stringify(this.data)}`)
  95. uni.navigateTo({
  96. url: `../order/index?params=${JSON.stringify(this.data)}`
  97. });
  98. }else{
  99. //console.log(`"去支付页2"${JSON.stringify(this.data)}`)
  100. uni.navigateTo({
  101. url: `../login/index?params=${JSON.stringify(this.data)}`
  102. });
  103. }
  104. }else{
  105. Toast('支付金额不能为空或0元');
  106. }
  107. },
  108. Input(e){
  109. let val = e.target.value.replace(/(^\s*)|(\s*$)/g, "")
  110. if (!val) {
  111. this.amount = '';
  112. return
  113. }
  114. var reg = /[^\d.]/g
  115. // 只能是数字和小数点,不能是其他输入
  116. val = val.replace(reg, "")
  117. // // 保证第一位只能是数字,不能是点
  118. val = val.replace(/^\./g, "");
  119. // // 小数只能出现1位
  120. val = val.replace(".", "$#$").replace(/\./g, "").replace("$#$", ".");
  121. // // 小数点后面保留2位
  122. val = val.replace(/^(\-)*(\d+)\.(\d\d).*$/, '$1$2.$3');
  123. if(val.indexOf("0") == 0){
  124. if(val.length == 2){
  125. val = "0."
  126. }
  127. }
  128. this.$nextTick(() => {
  129. this.data.money = val;
  130. })
  131. this.state1 = "color:#000;background: #fff;border:1px solid rgba(242, 46, 60, 1);",
  132. this.state2 = "color:#000;background: #fff;border:1px solid rgba(242, 46, 60, 1);",
  133. this.state3 = "color:#000;background: #fff;border:1px solid rgba(242, 46, 60, 1);",
  134. this.state4 = "color:#000;background: #fff;border:1px solid rgba(242, 46, 60, 1);",
  135. this.state5 = "color:#000;background: #fff;border:1px solid rgba(242, 46, 60, 1);",
  136. this.state6 = "color:#000;background: #fff;border:1px solid rgba(242, 46, 60, 1);",
  137. this.data.money = this.data.money + "";
  138. },
  139. jumpMode(){
  140. //console.log(this.data.money)
  141. if(this.data.money && this.data.money != 0 && this.data.money != "0.00"){
  142. //this.pay(this.data.money, "A01", "3")
  143. }else{
  144. Toast('支付金额不能为空或0元');
  145. Dialog.alert({
  146. context: this, // 增加this可用
  147. selector:"#van-dialog",//选择器
  148. title: '提示',
  149. message: '充值金额不能为0元!'
  150. }).then(() => {
  151. // on close
  152. });
  153. }
  154. },
  155. // recharge(){
  156. // this.jumpMode()
  157. // },
  158. btn50() {
  159. this.state1 = "color:#fff;background:rgba(242, 46, 60, 1);",
  160. this.state2 = "color:#000;background: #fff;border:1px solid rgba(242, 46, 60, 1);",
  161. this.state3 = "color:#000;background: #fff;border:1px solid rgba(242, 46, 60, 1);",
  162. this.state4 = "color:#000;background: #fff;border:1px solid rgba(242, 46, 60, 1);",
  163. this.state5 = "color:#000;background: #fff;border:1px solid rgba(242, 46, 60, 1);",
  164. this.state6 = "color:#000;background: #fff;border:1px solid rgba(242, 46, 60, 1);",
  165. this.data.money = 50
  166. },
  167. btn100() {
  168. this.state1 = "color:#000;background: #fff;border:1px solid rgba(242, 46, 60, 1);",
  169. this.state2 = "color:#fff;background: rgba(242, 46, 60, 1);",
  170. this.state3 = "color:#000;background: #fff;border:1px solid rgba(242, 46, 60, 1);",
  171. this.state4 = "color:#000;background: #fff;border:1px solid rgba(242, 46, 60, 1);",
  172. this.state5 = "color:#000;background: #fff;border:1px solid rgba(242, 46, 60, 1);",
  173. this.state6 = "color:#000;background: #fff;border:1px solid rgba(242, 46, 60, 1);",
  174. this.data.money = 100
  175. },
  176. btn150() {
  177. this.state1 = "color:#000;background: #fff;border:1px solid rgba(242, 46, 60, 1);",
  178. this.state2 = "color:#000;background: #fff;border:1px solid rgba(242, 46, 60, 1);",
  179. this.state3 = "color:#fff;background: rgba(242, 46, 60, 1);",
  180. this.state4 = "color:#000;background: #fff;border:1px solid rgba(242, 46, 60, 1);",
  181. this.state5 = "color:#000;background: #fff;border:1px solid rgba(242, 46, 60, 1);",
  182. this.state6 = "color:#000;background: #fff;border:1px solid rgba(242, 46, 60, 1);",
  183. this.data.money = 150
  184. },
  185. btn200() {
  186. this.state1 = "color:#000;background: #fff;border:1px solid rgba(242, 46, 60, 1);",
  187. this.state2 = "color:#000;background: #fff;border:1px solid rgba(242, 46, 60, 1);",
  188. this.state3 = "color:#000;background: #fff;border:1px solid rgba(242, 46, 60, 1);",
  189. this.state4 = "color:#fff;background: rgba(242, 46, 60, 1);",
  190. this.state5 = "color:#000;background: #fff;border:1px solid rgba(242, 46, 60, 1);",
  191. this.state6 = "color:#000;background: #fff;border:1px solid rgba(242, 46, 60, 1);",
  192. this.data.money = 200
  193. },
  194. btn250() {
  195. this.state1 = "color:#000;background: #fff;border:1px solid rgba(242, 46, 60, 1);",
  196. this.state2 = "color:#000;background: #fff;border:1px solid rgba(242, 46, 60, 1);",
  197. this.state3 = "color:#000;background: #fff;border:1px solid rgba(242, 46, 60, 1);",
  198. this.state4 = "color:#000;background: #fff;border:1px solid rgba(242, 46, 60, 1);",
  199. this.state5 = "color:#fff;background: rgba(242, 46, 60, 1);",
  200. this.state6 = "color:#000;background: #fff;border:1px solid rgba(242, 46, 60, 1);",
  201. this.data.money = 250
  202. },
  203. btn300() {
  204. this.state1 = "color:#000;background: #fff;border:1px solid rgba(242, 46, 60, 1);",
  205. this.state2 = "color:#000;background: #fff;border:1px solid rgba(242, 46, 60, 1);",
  206. this.state3 = "color:#000;background: #fff;border:1px solid rgba(242, 46, 60, 1);",
  207. this.state4 = "color:#000;background: #fff;border:1px solid rgba(242, 46, 60, 1);",
  208. this.state5 = "color:#000;background: #fff;border:1px solid rgba(242, 46, 60, 1);",
  209. this.state6 = "color:#fff;background: rgba(242, 46, 60, 1);",
  210. this.data.money = 300
  211. },
  212. },
  213. };
  214. </script>
  215. <style lang="scss" scoped>
  216. .mianBox {
  217. width: 90%;
  218. padding: 0 5% 0 5%;
  219. height: 100%;
  220. position: absolute;
  221. // .balance{
  222. // font-size: 16px;
  223. // margin-top:20px;
  224. // display: block;
  225. // /deep/ .van-col{
  226. // color:red;
  227. // display: block;
  228. // }
  229. // }
  230. .contentBox {
  231. width: 90%;
  232. position: absolute;
  233. background-color: orange !important;
  234. .input_wrap{
  235. width:100%;
  236. box-sizing: border-box;
  237. border:1px solid #E6E6E6;
  238. position: absolute;
  239. margin-top:20px;
  240. span{
  241. font-size: 20px;
  242. margin-left:10px;
  243. color:rgba(242, 46, 60, 1);
  244. display: inline-block;
  245. vertical-align: middle;
  246. }
  247. input{
  248. color:#000;
  249. width:70%;
  250. padding:8px 10px;
  251. display: inline-block;
  252. vertical-align: middle;
  253. }
  254. ::placeholder{
  255. color:#000000;
  256. }
  257. }
  258. }
  259. .select_amount{
  260. width:100%;
  261. margin-top:60px;
  262. display: block;
  263. text-align: center;
  264. /deep/ van-col{
  265. padding:10px 0;
  266. background-color: #ccc;
  267. color:#000;
  268. text-align: center;
  269. font-size: 16px;
  270. border-radius: 6px;
  271. margin-top:20px;
  272. float:left;
  273. width:28%;
  274. box-sizing: border-box;
  275. border:1px solid transparent;
  276. }
  277. .van-col.active{
  278. background: rgba(242, 46, 60, 1);
  279. color:#fff;
  280. }
  281. /deep/ .van-col{
  282. text-align: center !important;
  283. width:100%;
  284. display: block;
  285. }
  286. }
  287. .pay_money{
  288. font-size: 16px;
  289. margin:15px 0;
  290. display: block;
  291. .left{
  292. text-align: left;
  293. }
  294. .right{
  295. text-align: right;
  296. color: rgba(242, 46, 60, 1);
  297. }
  298. }
  299. .tip{
  300. font-size: 14px;
  301. color: #CCC;
  302. }
  303. /deep/ .van-button{
  304. border-radius: 6px;
  305. width: 100% !important;
  306. }
  307. .amount{
  308. position: absolute;
  309. bottom: 25px;
  310. width:90%;
  311. height: 50px;
  312. font-size: 18px;
  313. border-radius: 10px;
  314. }
  315. .van-field__label{
  316. color:rgba(242, 46, 60, 1) !important;
  317. }
  318. }
  319. </style>