coin.html 20 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454
  1. <!DOCTYPE html>
  2. <html lang="en">
  3. <head>
  4. <meta charset="UTF-8"/>
  5. <meta http-equiv="X-UA-Compatible" content="IE=edge"/>
  6. <meta name="viewport" content="width=device-width, initial-scale=1.0"/>
  7. <!-- 引入样式 -->
  8. <!-- import CSS -->
  9. <!--引入 element-ui 的样式,-->
  10. <link rel="stylesheet" href="https://unpkg.com/element-ui/lib/theme-chalk/index.css">
  11. <!-- 必须先引入vue, 后使用element-ui -->
  12. <script src="https://cdn.jsdelivr.net/npm/vue@2.5.17/dist/vue.js"></script>
  13. <!-- 引入element 的组件库-->
  14. <script src="https://unpkg.com/element-ui/lib/index.js"></script>
  15. <script src="__STATIC__/js/jquery v1.11.3.min.js"></script>
  16. <link rel="stylesheet" href="__STATIC__/css/coin/topup.css">
  17. <!-- 引入组件库 -->
  18. <title>充值</title>
  19. </head>
  20. <body>
  21. <div id="app" class="coin" style="display: none">
  22. <div class="classifyincreased" v-if="istoday">
  23. <div class="box">
  24. <div class="title" @click="topHide">
  25. <img src="__STATIC__/images/coin/组 430@2x.png" alt=""/>
  26. </div>
  27. <div class="outer-div">
  28. <header class="header">
  29. <ul class="tab-tilte" v-for="(item, index) in payList">
  30. <li :class="{ active: tab == item.tab }" @click="tab = item.tab">
  31. <div class="li_a">
  32. <img :src=item.image alt=""/><span>{{item.name}}</span>
  33. </div>
  34. </li>
  35. </ul>
  36. </header>
  37. <div class="tab-content">
  38. <div v-show="tab == 'zfbsmzf' || tab == 'kdsm' || tab =='kdh5' || tab=='wxsmzf' || tab == 'xzzfbzf' || tab=='wx-wap'">
  39. <!-- 账号: -->
  40. <div class="info">
  41. <div>
  42. <el-select v-model="accountType" class="info_select" placeholder="请选择账号">
  43. <el-option v-for="item in account" :key="item.value" :label="item.label"
  44. :value="item.value">
  45. </el-option>
  46. </el-select>
  47. <span class="b" v-if="accountType==1">{$userinfo['username'] ?? ''}</span>
  48. <span v-if="accountType==2">
  49. <input type="text" placeholder="请输入账号" v-model="username" style="height: 34px;">
  50. 确定账号: <input type="text" placeholder="确定账号" v-model="passusername"
  51. @change="handleChangeUserName" style="height: 34px;">
  52. </span>
  53. </div>
  54. <div v-if="accountType==1">
  55. <span>平台币余额:</span><span span class="b">{$userinfo['amount']??''}</span>
  56. </div>
  57. <div class="c">
  58. <!-- 充值流水-->
  59. </div>
  60. </div>
  61. <div class="but"></div>
  62. <!-- 请选择充值对象: -->
  63. <div class="info_item">请选择充值对象:</div>
  64. <div class="xz">
  65. <el-radio v-model="checkType" label="1">平台币</el-radio>
  66. <el-radio v-model="checkType" label="2">游戏</el-radio>
  67. </div>
  68. <div class="ptb" v-show="checkType == 2">
  69. <div class="ptb_item">请选择需要充值的游戏:</div>
  70. <div class="ptb_index">
  71. <el-select v-model="gameid" placeholder="请选择" @change="handleChangeGame">
  72. <el-option v-for="item in gameList" :key="item.id" :label="item.name"
  73. :value="item.id">
  74. </el-option>
  75. </el-select>
  76. <el-select v-model="serverid" placeholder="请选择区服" @change="handleChangeServer">
  77. <el-option v-for="item in serverList" :key="item.serverid" :label="item.servername"
  78. :value="item.serverid">
  79. </el-option>
  80. </el-select>
  81. <el-select v-model="roleid" placeholder="请选择角色">
  82. <el-option v-for="item in roleList" :key="item.roleid" :label="item.rolename"
  83. :value="item.roleid">
  84. </el-option>
  85. </el-select>
  86. </div>
  87. </div>
  88. <!-- 请选择充值金额: -->
  89. <div class="jo">
  90. <div class="jo_a">
  91. <img src="__STATIC__/images/coin/路径 627@2x.png" alt=""/>
  92. <div class="foot_item">
  93. <div class="foot">兑换比例: 1元=1平台币</div>
  94. </div>
  95. </div>
  96. <span class="jo_b">请选择充值金额:
  97. <div class="foot_index">
  98. <div class="foot">金额将直接充值到所选游戏中</div>
  99. </div>
  100. </span>
  101. </div>
  102. <div class="jo_item">
  103. <el-radio-group v-model="radio" @change="handleChange">
  104. <el-radio :label="10">10元</el-radio>
  105. <el-radio :label="20" style="margin-left: 7px">20元</el-radio>
  106. <el-radio :label="50" style="margin-left: 8px">50元</el-radio>
  107. <el-radio :label="100" style="margin-left: 8px">100元</el-radio>
  108. </el-radio-group>
  109. </div>
  110. <div class="jo_item">
  111. <el-radio-group v-model="radio" @change="handleChange">
  112. <el-radio :label="200">200元</el-radio>
  113. <el-radio :label="400">400元</el-radio>
  114. <el-radio :label="800">800元</el-radio>
  115. <el-radio :label="1200">1200元</el-radio>
  116. </el-radio-group>
  117. </div>
  118. <div class="jo_item">
  119. <el-radio-group v-model="radio" @change="handleChange">
  120. <el-radio :label="-1">其他金额:</el-radio>
  121. </el-radio-group>
  122. <div class="ji_index">¥<input type="text" v-model="amount" name="amount" id="amount" @change="handleAmount" @focus="handleAmount"/></div>
  123. </div>
  124. <div class="butt" @click="pay">
  125. <div class="butt_item">立即充值</div>
  126. </div>
  127. </div>
  128. <div v-show="tab == 'coinpay'">
  129. <!-- 账号: -->
  130. <div class="info">
  131. <div>
  132. <span class="a">账号:</span><span class="b">{$userinfo['username']??''}</span>
  133. </div>
  134. <div>
  135. <span>平台币余额:</span><span span class="b">{$userinfo['amount']??''}</span>
  136. </div>
  137. <div class="c">
  138. <!-- 充值流水-->
  139. </div>
  140. </div>
  141. <div class="but"></div>
  142. <!-- 请选择充值对象: -->
  143. <div class="ptb">
  144. <div class="ptb_item">请选择需要充值的游戏:</div>
  145. <div class="ptb_index">
  146. <el-select v-model="gameid" placeholder="请选择" @change="handleChangeGame">
  147. <el-option v-for="item in gameList" :key="item.id" :label="item.name"
  148. :value="item.id">
  149. </el-option>
  150. </el-select>
  151. <el-select v-model="serverid" placeholder="请选择区服" @change="handleChangeServer">
  152. <el-option v-for="item in serverList" :key="item.serverid" :label="item.servername"
  153. :value="item.serverid">
  154. </el-option>
  155. </el-select>
  156. <el-select v-model="roleid" placeholder="请选择角色">
  157. <el-option v-for="item in roleList" :key="item.roleid" :label="item.rolename"
  158. :value="item.roleid">
  159. </el-option>
  160. </el-select>
  161. </div>
  162. </div>
  163. <!-- 请选择充值金额: -->
  164. <div class="jo">
  165. <div class="jo_a">
  166. <img src="__STATIC__/images/coin/路径 627@2x.png" alt=""/>
  167. <div class="foot_item">
  168. <div class="foot">兑换比例: 1元=1平台币</div>
  169. </div>
  170. </div>
  171. <span class="jo_b">请选择充值金额:
  172. <div class="foot_index">
  173. <div class="foot">金额将直接充值到所选游戏中</div>
  174. </div>
  175. </span>
  176. </div>
  177. <div class="jo_item">
  178. <el-radio-group v-model="radio" @change="handleChange">
  179. <el-radio :label="10">10元</el-radio>
  180. <el-radio :label="20" style="margin-left: 7px">20元</el-radio>
  181. <el-radio :label="50" style="margin-left: 8px">50元</el-radio>
  182. <el-radio :label="100" style="margin-left: 8px">100元</el-radio>
  183. </el-radio-group>
  184. </div>
  185. <div class="jo_item">
  186. <el-radio-group v-model="radio" @change="handleChange">
  187. <el-radio :label="200">200元</el-radio>
  188. <el-radio :label="400">400元</el-radio>
  189. <el-radio :label="800">800元</el-radio>
  190. <el-radio :label="1200">1200元</el-radio>
  191. </el-radio-group>
  192. </div>
  193. <div class="jo_item">
  194. <el-radio-group v-model="radio" @change="handleChange">
  195. <el-radio :label="-1">其他金额:</el-radio>
  196. </el-radio-group>
  197. <div class="ji_index">¥<input type="text" v-model="amount" name="amount" id="amount" @change="handleAmount" @focus="handleAmount"/></div>
  198. </div>
  199. <div class="butt" @click="pay">
  200. <div class="butt_item">立即充值</div>
  201. </div>
  202. </div>
  203. </div>
  204. </div>
  205. </div>
  206. </div>
  207. </div>
  208. </body>
  209. <script>
  210. new Vue({
  211. el: '#app',
  212. data: function () {
  213. return {
  214. istoday: true,
  215. tab: "zfbsmzf",
  216. radio: 10,
  217. amount: 10,
  218. accountType: "1",
  219. isxsyc: false,
  220. checkType: "2",
  221. username: "",
  222. passusername: "",
  223. account: [
  224. {
  225. value: '1',
  226. label: "当前账号:"
  227. },
  228. {
  229. value: '2',
  230. label: "其他账号:"
  231. },
  232. ],
  233. payList: [
  234. {
  235. tab: 'zfbsmzf',
  236. name: "支付宝支付",//现在
  237. image: "__STATIC__/images/coin/m1.png"
  238. },
  239. // {
  240. // tab: 'xzzfbzf',
  241. // name: "支付宝H5支付(现在)",
  242. // image: "__STATIC__/images/coin/m1.png"
  243. // },
  244. {
  245. tab: 'wxsmzf',
  246. name: "微信支付",//(汇付宝)扫码
  247. image: "__STATIC__/images/coin/m2.png"
  248. },
  249. {
  250. tab: 'kdsm',
  251. name: "微信支付",//酷点扫码
  252. image: "__STATIC__/images/coin/m2.png"
  253. },
  254. // {
  255. //
  256. // tab: 'wx-wap',
  257. // name: "微信支付",//(汇付宝)H5
  258. // image: "__STATIC__/images/coin/m2.png"
  259. // },
  260. // {
  261. // tab: 'kdh5',
  262. // name: "微信支付", //酷点H5
  263. // image: "__STATIC__/images/coin/m2.png"
  264. // },
  265. {
  266. tab: 'coinpay',
  267. name: "平台币支付",
  268. image: "__STATIC__/images/coin/m3.png"
  269. },
  270. ],
  271. gameList: [],
  272. serverList: [],
  273. roleList: [],
  274. options: [],
  275. gameid: "",
  276. serverid: "",
  277. roleid: "",
  278. verifyUserNameStatus: 0,
  279. };
  280. },
  281. components: {},
  282. mounted() {
  283. // this.getPaytype()
  284. this.getGameList()
  285. },
  286. methods: {
  287. handleAmount(){
  288. this.radio=-1
  289. },
  290. handleChange(val) {
  291. if (val > 0) {
  292. this.amount = val
  293. } else {
  294. this.amount = null
  295. }
  296. },
  297. handleChangeGame(val) {
  298. that = this
  299. that.serverid = ''
  300. that.roleid = ''
  301. if (this.accountType == 2 && this.verifyUserNameStatus != 1) {
  302. alert('请先输入账号验证')
  303. return
  304. }
  305. $.ajax({
  306. url: '/coin/getServerList',
  307. type: 'post',
  308. data: {gameid: that.gameid},
  309. success: function (data) {
  310. if (data.code == 1) {
  311. that.serverList = data.data
  312. }
  313. }
  314. })
  315. },
  316. handleChangeServer() {
  317. that = this
  318. that.roleid = ''
  319. if (this.accountType == 2 && this.verifyUserNameStatus != 1) {
  320. alert('请先输入账号验证')
  321. return
  322. }
  323. $.ajax({
  324. url: '/coin/getRoleList',
  325. type: 'post',
  326. data: {
  327. gameid: that.gameid,
  328. serverid: that.serverid,
  329. accountType: that.accountType,
  330. username: that.username
  331. },
  332. success: function (data) {
  333. if (data.code == 1) {
  334. that.roleList = data.data
  335. }
  336. }
  337. })
  338. },
  339. handleChangeUserName() {
  340. that = this
  341. that.verifyUserNameStatus = 0
  342. if (that.username != that.passusername) {
  343. alert("两次输入的账号不一致")
  344. } else {
  345. that = this
  346. that.gameid = ''
  347. that.serverid = ''
  348. that.roleid = ''
  349. $.ajax({
  350. url: '/coin/verifyUserName',
  351. type: 'post',
  352. data: {username: that.username},
  353. success: function (data) {
  354. if (data.code == 1) {
  355. that.verifyUserNameStatus = 1
  356. } else {
  357. alert(data.msg)
  358. }
  359. }
  360. })
  361. }
  362. },
  363. getGameList() {
  364. that = this
  365. $.ajax({
  366. url: '/coin/getGameList',
  367. type: 'post',
  368. success: function (data) {
  369. if (data.code == 1) {
  370. that.gameList = data.data
  371. }
  372. }
  373. })
  374. },
  375. // getPaytype() {
  376. // $.ajax({
  377. // url: '/coin/getPayType',
  378. // type: 'post',
  379. // success: function (data) {
  380. // console.log(data)
  381. // }
  382. // })
  383. // },
  384. // 隐藏与显示
  385. changeIxsyc() {
  386. this.isxsyc = !this.isxsyc;
  387. },
  388. topHide() {
  389. $('.coin').hide();
  390. },
  391. pay() {
  392. if (this.accountType == 2 && this.verifyUserNameStatus != 1) {
  393. alert('请先输入账号验证')
  394. return
  395. }
  396. that = this
  397. $.ajax({
  398. url: '/coin/pay',
  399. type: 'post',
  400. data: {
  401. type: that.checkType,
  402. paytype: that.tab,
  403. amount: that.amount,
  404. accountType: that.accountType,
  405. username: that.username,
  406. gameid: that.gameid,
  407. serverid: that.serverid,
  408. roleid: that.roleid
  409. },
  410. success: function (data) {
  411. console.log(data)
  412. paytype = that.tab
  413. if (data.code == 1) {
  414. if (paytype == 'zfbsmzf') { //支付宝扫码(支付宝官方扫码)
  415. const div = document.createElement('div')
  416. div.innerHTML = data.data.zfbsmzf_param
  417. console.log(data.data.zfbsmzf_param)
  418. document.body.appendChild(div)
  419. document.forms[0].submit()
  420. } else if (paytype == 'xzzfbzf') { //支付宝 扫码 (现在支付)
  421. window.location.href = data.data.xzzfbzf_param.mweb_url
  422. } else if (paytype == 'wxsmzf') { //微信扫码(汇付宝)
  423. window.location.href = data.data.wxpaysm_param.mweb_url
  424. } else if (paytype == 'kdsm') { //微信扫码(ku_param)
  425. window.location.href = data.data.kdsm_param.mweb_url
  426. }
  427. } else {
  428. alert(data.msg)
  429. }
  430. }
  431. })
  432. }
  433. },
  434. })
  435. </script>
  436. </html>