paycard.html 17 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380
  1. <!DOCTYPE html>
  2. <html lang="en">
  3. <head>
  4. <meta charset="UTF-8" />
  5. <title>Payment</title>
  6. <meta http-equiv="X-UA-Compatible" content="ie=edge" />
  7. <meta name="full-screen" content="yes" />
  8. <meta name="x5-fullscreen" content="true" />
  9. <meta name="viewport"
  10. content="width=device-width, initial-scale=1, minimum-scale=1, maximum-scale=1, user-scalable=no" />
  11. <link rel="stylesheet" href="../css/element-ui.css" />
  12. <link rel="stylesheet" href="../css/element@2.12.2.css" />
  13. <link rel="stylesheet" href="../assets/iconfont/iconfont.css" />
  14. <link rel="stylesheet" href="../css/pay.css" />
  15. <link rel="stylesheet" href="../assets/css/bootstrap.min.css" />
  16. <style>
  17. [v-cloak] {
  18. display: none;
  19. }
  20. .dialog_header_w .dia-content .icon i.iconchenggong {
  21. font-size: 80px;
  22. /* @include font_green_icon_1(); */
  23. }
  24. .iconfont {
  25. color: #eb3f57;
  26. }
  27. .dialog_header_w .dia-content .icon i.iconjingshi {
  28. font-size: 80px;
  29. }
  30. .dialog_header_w .dia-content .icon i.icondengdai {
  31. font-size: 80px;
  32. }
  33. .dialog_header_w .dia-content .des1 {
  34. font-weight: bold;
  35. font-size: 14px;
  36. margin: 60px 0 30px;
  37. }
  38. .dialog_header_w .dia-content .des2 {
  39. font-size: 12px;
  40. margin-bottom: 30px;
  41. }
  42. .dialog_header_w .dia-content .myRED {
  43. color: #eb3f57;
  44. }
  45. /* ---------------- header_w styles ---------------- */
  46. .dialog_header_w {
  47. width: 650px;
  48. }
  49. .dialog_header_w .el-dialog__header i {
  50. font-weight: bold;
  51. font-size: 18px;
  52. }
  53. .dialog_header_w .el-dialog__body {
  54. text-align: center;
  55. }
  56. .dialog_header_w .dialog-footer {
  57. margin-top: 20px;
  58. }
  59. .dialog_header_w .dialog-footer .el-button {
  60. min-width: 100px;
  61. }
  62. @media screen and (max-width: 768px) {
  63. .el-dialog__wrapper .dialog_header_w {
  64. width: 80%;
  65. }
  66. }
  67. .el-button {
  68. display: inline-block;
  69. line-height: 1;
  70. white-space: nowrap;
  71. cursor: pointer;
  72. background: #FFF;
  73. border: 1px solid #DCDFE6;
  74. color: #606266;
  75. -webkit-appearance: none;
  76. text-align: center;
  77. -webkit-box-sizing: border-box;
  78. box-sizing: border-box;
  79. outline: 0;
  80. margin: 0;
  81. -webkit-transition: 0.1s;
  82. transition: 0.1s;
  83. font-weight: 500;
  84. padding: 12px 20px;
  85. font-size: 14px;
  86. border-radius: 4px;
  87. }
  88. .el-button:active {
  89. color: #d4394e;
  90. border-color: #d4394e;
  91. outline: 0;
  92. }
  93. .el-button:focus,
  94. .el-button:hover {
  95. color: #EB3F57;
  96. border-color: #f9c5cd;
  97. background-color: #fdecee;
  98. }
  99. .el-button--primary {
  100. color: #FFF;
  101. background-color: #EB3F57;
  102. border-color: #EB3F57;
  103. }
  104. .el-button--primary:focus,
  105. .el-button--primary:hover {
  106. background: #ef6579;
  107. border-color: #ef6579;
  108. color: #FFF;
  109. }
  110. .el-button--primary.is-active,
  111. .el-button--primary:active {
  112. background: #d4394e;
  113. border-color: #d4394e;
  114. color: #FFF;
  115. }
  116. .alert-warning {
  117. margin: 5px;
  118. font-size: 14px;
  119. }
  120. .el-select {
  121. position: relative;
  122. font-size: 14px;
  123. display: inline-block;
  124. width: 100%;
  125. }
  126. .el-form-item__label {
  127. width: 100%;
  128. padding: 0 !important;
  129. }
  130. .el-select-dropdown__item {
  131. text-align: left;
  132. }
  133. .return-block {
  134. display: flex;
  135. justify-content: center;
  136. padding-bottom: 30px;
  137. border-bottom: 1px dashed #333;
  138. }
  139. ul {
  140. padding: 0;
  141. }
  142. .myCode {
  143. position: relative;
  144. margin-right: 15px;
  145. }
  146. .myCode .getCode {
  147. position: absolute;
  148. top: 0;
  149. right: -15px;
  150. margin: 0;
  151. min-width: 100px;
  152. overflow: hidden;
  153. border: 1px solid;
  154. border-radius: 50px;
  155. cursor: pointer;
  156. padding: 0 10px;
  157. user-select: none;
  158. white-space: nowrap;
  159. background-color: #e61f1e;
  160. color: #fff;
  161. text-align: center;
  162. }
  163. .myCode .getCode:hover {
  164. color: #fff;
  165. background-color: #ff0000;
  166. }
  167. </style>
  168. </head>
  169. <body>
  170. <div class="container" id="paycard" v-if="isShow" v-cloak>
  171. <nav class="navbar header">
  172. <div class="container-fluid">
  173. <div class="navbar-header">
  174. <h1>
  175. <span class="navbar-brand logo"><img
  176. src="data:image/png;base64,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" /></span>
  177. </h1>
  178. </div>
  179. <div class="navbar-form visible-md-block visible-lg-block navbar-right">
  180. <div style="display: flex; justify-content: flex-end">
  181. <div class="menu-logo chooseLang">
  182. <el-dropdown trigger="click" @command="chooseLang">
  183. <span class="menu">
  184. {{langList[language]}}
  185. <i class="el-icon-arrow-down el-icon--right"></i>
  186. </span>
  187. <el-dropdown-menu slot="dropdown">
  188. <el-dropdown-item v-for="(label, key) in langList" :key="key" :command="key">
  189. {{ label }}
  190. </el-dropdown-item>
  191. </el-dropdown-menu>
  192. </el-dropdown>
  193. </div>
  194. </div>
  195. </div>
  196. </div>
  197. </nav>
  198. <div class="container-fluid">
  199. <div class="panel" style="border-color: #e4e7ed;">
  200. <div class="panel-body" style="padding-top: 40px;">
  201. <div style="
  202. display: flex;
  203. justify-content: center;
  204. margin-bottom: 10px;
  205. " class="form-group lang-mobile text-center hidden-lg hidden-md">
  206. <div class="menu-logo chooseLang">
  207. <el-dropdown trigger="click" @command="chooseLang">
  208. <span class="menu">
  209. {{langList[language]}}
  210. <i class="el-icon-arrow-down el-icon--right"></i>
  211. </span>
  212. <el-dropdown-menu slot="dropdown">
  213. <el-dropdown-item v-for="(label, key) in langList" :key="key" :command="key">
  214. {{ label }}
  215. </el-dropdown-item>
  216. </el-dropdown-menu>
  217. </el-dropdown>
  218. </div>
  219. </div>
  220. <div class="row">
  221. <div class="col-xs-12 col-sm-8 col-lg-9">
  222. <div class="row">
  223. <div class="col-xs-12 col-sm-12">
  224. <div v-if="pagesStatus" class="alert alert-warning text-center">
  225. <strong>{{ lang.Msg.pagesStatus }} </strong>
  226. </div>
  227. <div v-else-if="callbackStatus" class="alert alert-warning text-center">
  228. <strong>{{ lang.Msg.callbackStatus }} </strong>
  229. </div>
  230. <div v-else-if="form.payTime && timeLeft > 0" class="alert alert-warning text-center">
  231. <strong>{{ lang.PaymentDeadline }}: </strong>
  232. <span>{{ countdownText }}</span>
  233. </div>
  234. <div v-else-if="form.payTime && timeLeft == 0" class="alert alert-danger text-center">
  235. <strong>{{ lang.PaymentExpired }}</strong>
  236. </div>
  237. <el-form ref="form" :model="form" label-position="top" :rules="rules">
  238. <el-form-item prop="serial" :label="lang.p1">
  239. <div style="display: flex; align-items: center;">
  240. <el-input readonly v-model="form.serial" :placeholder="lang.Title3"></el-input>
  241. <el-button type="primary" size="small" style="margin-left: 10px;" @click="copySerial"
  242. v-if="form.serial">
  243. {{lang.Copy}}
  244. </el-button>
  245. </div>
  246. </el-form-item>
  247. <el-form-item prop="amount" :label="form.currency ? lang.Title3+'('+form.currency +')' : ''">
  248. <el-input readonly v-model="form.amount" :placeholder="lang.Title3"></el-input>
  249. </el-form-item>
  250. <template v-if="timeLeft > 0 && !pagesStatus && !callbackStatus">
  251. <el-form-item prop="deductionAccount" :label="lang.Title6">
  252. <el-select filterable v-model="form.deductionAccount" :placeholder="lang.Title7"
  253. @change="changeAccount">
  254. <el-option v-for="(item, index) in loginOptionsDisplay" :key="index" :disabled="item.disabled"
  255. :label="item.lable" :value="item.value"></el-option>
  256. </el-select>
  257. </el-form-item>
  258. <template v-if="form.type == '1'">
  259. <el-form-item prop="cvv" label="CVV">
  260. <el-input v-model="form.cvv" :placeholder="lang.p2"></el-input>
  261. </el-form-item>
  262. <el-form-item prop="pin" :label="'PIN'">
  263. <el-input v-model="form.pin" :placeholder="lang.p3"></el-input>
  264. </el-form-item>
  265. </template>
  266. <el-form-item prop="emailCode" :label="lang.newSignup.item9">
  267. <div class="myCode">
  268. <el-input class="code" v-model.trim="form.emailCode"
  269. :placeholder="lang.newSignup.item10"></el-input>
  270. <span @click="getCode(1)" class="getCode" v-text="getCodeString"></span>
  271. </div>
  272. </el-form-item>
  273. </template>
  274. </el-form>
  275. </div>
  276. </div>
  277. <p class="return-block" v-if="timeLeft > 0 && !pagesStatus && !callbackStatus">
  278. <el-button size="medium" type="primary" class="s-btn" @click="payCard" :disabled="timeLeft <= 0">
  279. {{lang.Title8}}
  280. </el-button>
  281. <el-button size="medium" type="warning" class="s-btn" @click="Cancle">{{lang.Title9}}</el-button>
  282. </p>
  283. <div class="block" style="margin: 40px 0; text-align: left;">
  284. <p>{{lang.t1}}</p>
  285. </div>
  286. <div class="block" style="text-align: left;">
  287. <el-timeline>
  288. <el-timeline-item color="#EB3F57" v-for="(item, index) in tips" :key="index">
  289. <p>{{lang[item]}}</p>
  290. </el-timeline-item>
  291. </el-timeline>
  292. <div class="block" style="text-align: left;">
  293. <p>{{lang.t6}}</p>
  294. </div>
  295. </div>
  296. </div>
  297. </div>
  298. </div>
  299. </div>
  300. </div>
  301. <!--提交后的弹出框-->
  302. <el-dialog :visible.sync="dialogCheck" center :close-on-click-modal="false" :show-close="false"
  303. custom-class="dialog_header_w">
  304. <div class="dia-content">
  305. <div class="icon"><i class="iconfont iconjingshi"></i></div>
  306. <div class="des1">{{ RES }}</div>
  307. <div slot="footer" class="dialog-footer">
  308. <el-button type="primary" @click="closeDia1">{{lang.Confirm}}</el-button>
  309. <el-button @click="closeDia1">{{lang.Cancel}}</el-button>
  310. </div>
  311. </div>
  312. </el-dialog>
  313. <!--提交后完成弹出框-->
  314. <el-dialog :visible.sync="dialogCheckOK" center :close-on-click-modal="false" :show-close="false"
  315. custom-class="dialog_header_w">
  316. <div class="dia-content">
  317. <div class="icon"><i class="iconfont iconchenggong"></i></div>
  318. <div class="des1">{{lang.Des1}}</div>
  319. <div slot="footer" class="dialog-footer">
  320. <el-button type="primary" @click="closeDia">{{lang.Confirm}}</el-button>
  321. <el-button @click="closeDia">{{lang.Cancel}}</el-button>
  322. </div>
  323. </div>
  324. </el-dialog>
  325. <!--提交后等待弹出框-->
  326. <el-dialog :visible.sync="dialogCheckWait" center :close-on-click-modal="false" :show-close="false"
  327. custom-class="dialog_header_w">
  328. <div class="dia-content">
  329. <div class="icon"><i class="iconfont icondengdai"></i></div>
  330. <div class="des1">{{lang.Des38}}</div>
  331. </div>
  332. </el-dialog>
  333. </div>
  334. <script src="../assets/js/ucard-crypt.js"></script>
  335. <script src="../js/vue.min.js"></script>
  336. <script src="../assets/iconfont/iconfont.js"></script>
  337. <script src="../js/axios.min.js"></script>
  338. <script src="../js/element-ui.js"></script>
  339. <script src="../js/element@2.12.2.js"></script>
  340. <script src="../assets/js/crypt-helper.js"></script>
  341. <script src="../assets/js/ucard-paycard1.js"></script>
  342. </body>
  343. </html>