ba-dec.vue 24 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705
  1. <template>
  2. <div v-loading="loading">
  3. <div class="white-box">
  4. <el-form ref="form" label-width="180px" class="form-page">
  5. <div class="hr-tip"><span>Account Information<!--账号信息--></span></div>
  6. <el-form-item label="New member code"><!--会员编号-->
  7. <el-input v-model="form.insertUserName" readonly="readonly"></el-input>
  8. </el-form-item>
  9. <!-- <el-form-item>-->
  10. <!-- <template slot="label">-->
  11. <!-- Entry level&lt;!&ndash;实时报单级别&ndash;&gt;-->
  12. <!-- </template>-->
  13. <!-- <el-select v-model="form.decLv" placeholder="Select entry level" @change="selectOne($event)">-->
  14. <!-- <el-option v-for="(item,index) in allDecLevel" :key="index" :label="item.LEVEL_NAME"-->
  15. <!-- :value="item.ID"></el-option>-->
  16. <!-- </el-select>&lt;!&ndash;请选择报单级别&ndash;&gt;-->
  17. <!-- </el-form-item>-->
  18. <el-form-item label="Stockist Code"><!--报单中心编号-->
  19. <el-input v-model="form.decUserName" readonly></el-input>
  20. </el-form-item>
  21. <el-form-item>
  22. <template slot="label">
  23. Select Welcome Pack<!--报单方式二选一-->
  24. </template>
  25. <el-tabs type="border-card" v-model="decWay" style="position: relative;width: 1200px;">
  26. <el-tab-pane label="Product" name="2"><!-- 商品报单 -->
  27. <el-table class="table-box" v-if="numList.length > 0" :data="tableDatas" stripe style="width: 100%;" highlight-current-row @selection-change="handleSelectionChange">
  28. <el-table-column
  29. type="selection"
  30. width="55">
  31. </el-table-column>
  32. <el-table-column label="Product Name" prop="GOODS_NAME" width="300"><!-- 商品名称 -->
  33. </el-table-column>
  34. <el-table-column label="Product code" prop="GOODS_NO" width="120"><!-- 商品编号 -->
  35. </el-table-column>
  36. <el-table-column label="Product price" prop="SELL_PRICE" width="120"><!-- 卖价 -->
  37. </el-table-column>
  38. <el-table-column label="Product BV" prop="PRICE_PV" width="100"><!-- BV价格 -->
  39. </el-table-column>
  40. <el-table-column label="Tax rate" prop="TAX_RATE" width="100">
  41. <template slot-scope="scope">
  42. {{ Math.round(scope.row.TAX_RATE * 100) / 100 }}
  43. </template>
  44. </el-table-column>
  45. <el-table-column label="Tax" width="100">
  46. <template slot-scope="scope">
  47. {{ Math.round((scope.row.SELL_PRICE - scope.row.SELL_PRICE / (1 + scope.row.TAX_RATE / 100)) * 100) / 100 }}
  48. </template>
  49. </el-table-column>
  50. <el-table-column label="Quantity" width="150"><!-- 数量 -->
  51. <template slot-scope="scope">
  52. <el-input-number size="mini" v-model="numList[scope.$index]" :min="0" :max="Number(scope.row.STORE_NUMS)" @change="value=>{handleChange(value,scope.row.ID)}"></el-input-number>
  53. </template>
  54. <!-- <template slot-scope="scope">
  55. <el-input-number v-if="form.goodsId.some(item=>item==scope.row.ID)" v-model='scope.row.goodsNum' @change="value=>{handleChange(value,scope.row.ID)}" controls-position="right" style="width: 70px;" size="mini"></el-input-number>
  56. </template> -->
  57. </el-table-column>
  58. </el-table>
  59. <div class="white-box-footer flex">
  60. <el-button @click="getSum()">Total Calculation</el-button><!--计算合计-->
  61. <div class='flex data' style="flex:1;justify-content: flex-end;">
  62. <div style="margin-right:2rem">Price:₦{{sell_price_sum}}</div><!--商品价格-->
  63. <div style="margin-right:2rem">BV:{{price_pv_sum}}</div><!--商品BV-->
  64. <div>Tax:₦{{tax_sum}}</div><!--商品BV-->
  65. </div>
  66. </div>
  67. </el-tab-pane>
  68. </el-tabs>
  69. </el-form-item>
  70. <div class="hr-tip"><span>Network Information</span></div><!--网络信息-->
  71. <el-form-item label="Sponsor code"><!--推荐人编号-->
  72. <el-input v-model="form.recUserName" @change="handleChkRecUser">
  73. <template slot="append">【{{recRealName}}】</template>
  74. </el-input>
  75. </el-form-item>
  76. <!-- <el-form-item label="Placement code">&lt;!&ndash;接点人编号&ndash;&gt;-->
  77. <!-- <el-input v-model="form.conUserName" @change="handleChkConUser">-->
  78. <!-- <template slot="append">【{{conRealName}}】</template>-->
  79. <!-- </el-input>-->
  80. <!-- </el-form-item>-->
  81. <!-- <el-form-item label="Placement tree">&lt;!&ndash;安置区位&ndash;&gt;-->
  82. <!-- <el-radio-group v-model="form.location">-->
  83. <!-- <el-radio :label="1" >Left</el-radio>&lt;!&ndash;左区&ndash;&gt;-->
  84. <!-- <el-radio :label="2" >Right</el-radio>&lt;!&ndash;右区&ndash;&gt;-->
  85. <!-- </el-radio-group>-->
  86. <!-- </el-form-item>-->
  87. <!-- <el-form-item label="">&lt;!&ndash;自动安置区位&ndash;&gt;-->
  88. <!-- <el-button type="primary" @click="setAutoPlace('left')">Placement Auto Location: L</el-button>-->
  89. <!-- <el-button type="primary" @click="setAutoPlace('right')">Placement Auto Location: R</el-button>-->
  90. <!-- </el-form-item>-->
  91. <div class="hr-tip"><span>Personal Information<!--个人信息--></span></div>
  92. <el-form-item>
  93. <template slot="label">
  94. Member Name<!-- 会员姓名 -->
  95. </template>
  96. <el-input v-model="form.realName"></el-input>
  97. </el-form-item>
  98. <el-form-item>
  99. <template slot="label">
  100. Phone Number<!-- 会员手机 -->
  101. </template>
  102. <el-input v-model="form.mobile"></el-input>
  103. </el-form-item>
  104. <el-form-item>
  105. <template slot="label">
  106. Email
  107. </template>
  108. <el-input v-model="form.email"></el-input>
  109. </el-form-item>
  110. <el-form-item>
  111. <template slot="label">
  112. Login Password<!-- 登录密码 -->
  113. </template>
  114. <el-input v-model="form.password" maxlength="32" placeholder="Enter password"></el-input>
  115. </el-form-item>
  116. <el-form-item>
  117. <template slot="label">
  118. Payment Password<!-- 支付密码 -->
  119. </template>
  120. <el-input v-model="form.payPassword" maxlength="32" placeholder="Enter Payment password"></el-input>
  121. </el-form-item>
  122. <el-form-item>
  123. <template slot="label">
  124. Recipient Name<!-- 收货人 -->
  125. </template>
  126. <el-input v-model="form.consignee"></el-input>
  127. </el-form-item>
  128. <el-form-item>
  129. <template slot="label">
  130. Phone Number<!-- 收货人手机 -->
  131. </template>
  132. <el-input v-model="form.acceptMobile"></el-input>
  133. </el-form-item>
  134. <el-form-item>
  135. <template slot="label">
  136. Shipping<!-- 收货方式 -->
  137. </template>
  138. <el-radio-group v-model="form.way" @change="wayChange">
  139. <el-radio label="express">Delivery</el-radio>
  140. <el-radio label="pickup">Self Pick-up<!--自提--></el-radio>
  141. </el-radio-group>
  142. </el-form-item>
  143. <el-form-item prop="areaSelected">
  144. <template slot="label">
  145. State<!-- 地区 -->
  146. </template>
  147. <el-cascader
  148. :disabled="areaDisabled"
  149. size="large"
  150. :options="regionData"
  151. v-model="form.areaSelected">
  152. </el-cascader>
  153. </el-form-item>
  154. <el-form-item>
  155. <template slot="label">
  156. Full address<!-- 详细地址 -->
  157. </template>
  158. <el-input :disabled="addressDisabled" v-model="form.address"></el-input>
  159. </el-form-item>
  160. <el-form-item>
  161. <template slot="label">
  162. City<!-- 详细地址 -->
  163. </template>
  164. <el-input :disabled="addressDisabled" v-model="form.cityName"></el-input>
  165. </el-form-item>
  166. <el-form-item>
  167. <template slot="label">
  168. Local Government Area<!-- 详细地址 -->
  169. </template>
  170. <el-input :disabled="addressDisabled" v-model="form.lgaName"></el-input>
  171. </el-form-item>
  172. <!-- <div class="hr-tip"><span>Bank Info&lt;!&ndash; 银行信息 &ndash;&gt;</span></div>-->
  173. <!-- <el-form-item label="Bank Name">&lt;!&ndash; 开户行 &ndash;&gt;-->
  174. <!-- <el-select v-model="form.openBank" placeholder="Select Bank">&lt;!&ndash; 请选择开户行 &ndash;&gt;-->
  175. <!-- <el-option v-for="(item,index) in allOpenBank" :key="index" :label="item.BANK_NAME"-->
  176. <!-- :value="item.BANK_CODE"></el-option>-->
  177. <!-- </el-select>-->
  178. <!-- </el-form-item>-->
  179. <!-- <el-form-item label="Account Name">&lt;!&ndash; 开户支行 &ndash;&gt;-->
  180. <!-- <el-input v-model="form.bankAddress"></el-input>-->
  181. <!-- </el-form-item>-->
  182. <!-- <el-form-item label="Account Number">&lt;!&ndash; 银行账号 &ndash;&gt;-->
  183. <!-- <el-input v-model="form.bankNo" maxlength="19"></el-input>-->
  184. <!-- </el-form-item>-->
  185. <div class="hr-tip"><span>Pay Info<!-- 支付信息 --></span></div>
  186. <el-form-item label="Payment method" required><!-- 支付方式 -->
  187. <el-radio-group v-model="form.payType" @change="payMethodChange">
  188. <el-radio v-for="(item, index) in payList" :key='index' :label="item.label">{{ item.name }}</el-radio>
  189. </el-radio-group>
  190. </el-form-item>
  191. <el-form-item>
  192. <el-button type="primary" @click="onSubmit" :loading="submitButtonStat">Save<!-- 保存 --></el-button>
  193. </el-form-item>
  194. </el-form>
  195. </div>
  196. <el-dialog title="Pay" v-if="visible" :visible.sync="visible" width="30%" v-loading="payStackLoading" :before-close="handleClose">
  197. <section>
  198. <div class="formcontainer">
  199. <el-divider></el-divider>
  200. <div class="container">
  201. <el-form :model="PayStackForm">
  202. <el-form-item label="Email" label-width="100px" required>
  203. <el-input v-model="PayStackForm.email" autocomplete="off"></el-input>
  204. </el-form-item>
  205. <el-form-item label="Amount" label-width="100px" required>
  206. <el-input v-model="PayStackForm.amount" autocomplete="off" readonly></el-input>
  207. </el-form-item>
  208. </el-form>
  209. </div>
  210. </div>
  211. </section>
  212. <paystack
  213. :firstname="PayStackForm.firstname"
  214. :lastname="PayStackForm.lastname"
  215. :amount="PayStackForm.amount * 100"
  216. :email="PayStackForm.email"
  217. :metadata="PayStackForm.metadata"
  218. :currency="PayStackForm.currency"
  219. :paystackkey="PayStackForm.publicKey"
  220. :reference="reference"
  221. :channels="channels"
  222. :callback="processPayment"
  223. :close="processClose"
  224. >
  225. <el-button type="primary" size="small">Pay</el-button>
  226. </paystack>
  227. <el-button type="danger" size="small" class="cancelButton" @click="handleClose">Cancel</el-button>
  228. </el-dialog>
  229. <el-dialog title="Tips" :visible.sync="payDialog" :show-close="false" width="350px" :close="handleOrderList">
  230. <el-result icon="success" title="the order is successful">
  231. <template slot="extra">
  232. <span style="color: #008efa; font-size: 30px;">{{ countdown }}</span>
  233. </template>
  234. </el-result>
  235. </el-dialog>
  236. </div>
  237. </template>
  238. <script>
  239. import Vue from 'vue'
  240. import network from '@/utils/network'
  241. import baseInfo from '@/utils/baseInfo'
  242. import store from '@/utils/vuexStore'
  243. import tool from '@/utils/tool'
  244. import userInfo from '@/utils/userInfo'
  245. import { PAY_STACK_PUBLIC_KEY, PAY_STACK_CURRENCY } from '@/utils/config'
  246. import paystack from 'vue-paystack'
  247. export default {
  248. name: 'user_dec',
  249. async created () {
  250. await this.getData()
  251. },
  252. computed: {
  253. // _tableData () {
  254. // if (this.tableData == null) {
  255. // return []
  256. // }
  257. // if (this.form.decLv === '') {
  258. // return this.tableData
  259. // }
  260. // return this.tableData.filter(item => {
  261. // return item.LEVEL_ID === this.form.decLv
  262. // })
  263. // },
  264. reference () {
  265. let text = ''
  266. let possible = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789'
  267. for (let i = 0; i < 10; i++) {
  268. text += possible.charAt(Math.floor(Math.random() * possible.length))
  269. }
  270. return text
  271. }
  272. },
  273. data () {
  274. return {
  275. currentRow: null,
  276. decWay: '2',
  277. regionData: store.state.regionInfo.regionData,
  278. form: {
  279. realName: '',
  280. decLv: '',
  281. insertUserName: '',
  282. decUserName: userInfo.userName(),
  283. recUserName: '',
  284. conUserName: '',
  285. insertUserIdCard: '',
  286. consignee: '',
  287. acceptMobile: '',
  288. areaSelected: [],
  289. address: '',
  290. openBank: '',
  291. bankAddress: '',
  292. bankProvince: '',
  293. bankCity: '',
  294. bankCounty: '',
  295. bankNo: '',
  296. bankAreaSelected: [],
  297. password: '111111',
  298. payPassword: '111111',
  299. mobile: '',
  300. email: '',
  301. packageId: '',
  302. goodsId: [],
  303. goodsNum: [],
  304. province: '',
  305. cityName: '',
  306. lgaName: '',
  307. way: 'express',
  308. payType: '',
  309. autoPlace: '',
  310. location: ''
  311. },
  312. conRealName: '-',
  313. recRealName: '-',
  314. num: 1,
  315. // tableData: null,
  316. tableDatas: null,
  317. allOpenBank: null,
  318. // allDecPackage: {},
  319. allDecLevel: baseInfo.decLevels(),
  320. loading: false,
  321. submitButtonStat: false,
  322. submitButton: false,
  323. allGoods: [],
  324. multipleSelection: [],
  325. goodsNums: [],
  326. numList: [],
  327. sell_price_sum: 0.00,
  328. price_pv_sum: 0.00,
  329. tax_sum: 0.00,
  330. areaDisabled: false,
  331. addressDisabled: false,
  332. category_type: '',
  333. payList: [],
  334. sn: '',
  335. payDialog: false,
  336. countdown: 5,
  337. visible: false,
  338. payStackLoading: false,
  339. channels: ['card', 'bank', 'ussd', 'qr'], // eft(南非) mobile_money(加纳)
  340. PayStackForm: {
  341. publicKey: PAY_STACK_PUBLIC_KEY,
  342. currency: PAY_STACK_CURRENCY,
  343. firstname: userInfo.userName(),
  344. lastname: '',
  345. email: userInfo.userEmail(),
  346. amount: 0, // kobo
  347. orderSn: '',
  348. metadata: {
  349. cart_id: this.sn,
  350. custom_fields: [
  351. {
  352. display_name: 'orderSn',
  353. variable_name: 'orderSn',
  354. value: this.sn
  355. },
  356. {
  357. display_name: 'isBrandAmbassador',
  358. variable_name: 'isBrandAmbassador',
  359. value: true,
  360. },
  361. ]
  362. }
  363. }
  364. }
  365. },
  366. components: {
  367. paystack
  368. },
  369. methods: {
  370. wayChange () {
  371. if (this.form.way === 'pickup') {
  372. this.areaDisabled = true
  373. this.addressDisabled = true
  374. } else {
  375. this.areaDisabled = false
  376. this.addressDisabled = false
  377. }
  378. },
  379. getSum () {
  380. let sell_price_sum = 0, price_pv_sum = 0, tax_sum = 0
  381. this.multipleSelection.map((item, index) => {
  382. sell_price_sum += Number(item.SELL_PRICE) * item.goodsNum
  383. price_pv_sum += Number(item.PRICE_PV) * item.goodsNum
  384. tax_sum += Number(item.SELL_PRICE - item.SELL_PRICE / (1 + item.TAX_RATE / 100)) * item.goodsNum
  385. })
  386. this.sell_price_sum = tool.formatPrice(sell_price_sum)
  387. this.price_pv_sum = tool.formatPrice(price_pv_sum)
  388. this.tax_sum = tool.formatPrice(tax_sum)
  389. },
  390. async getData () {
  391. await network.getData(`user/ba-dec`).then(response => {
  392. this.loading = false
  393. this.form.insertUserName = response.userName
  394. // this.allOpenBank = response.allOpenBank
  395. // this.allDecPackage = response.allDecPackage
  396. this.allGoods = response.allGoods
  397. this.categoryType = 1
  398. // let settingObj = this.allDecPackage
  399. // let settingArr = Object.keys(settingObj).map(key => {
  400. // return settingObj[key] // 把每个对象返回出去生成一个新的数组中相当于0:{id:1}
  401. // })
  402. // this.tableData = settingArr
  403. let settingObj1 = this.allGoods
  404. for (let i in settingObj1) {
  405. this.numList[i] = 1
  406. settingObj1[i].goodsNum = 1
  407. }
  408. this.tableDatas = settingObj1
  409. // 支付方式
  410. this.payList = response.sellType[0]['sell_type']
  411. // 支付方式的第一项默认选中
  412. this.form.payType = Object.values(this.payList)[1]['label']
  413. })
  414. },
  415. handleCurrentChange (val) {
  416. if (!val) { return }
  417. this.currentRow = val
  418. this.form.packageId = this.currentRow.ID
  419. },
  420. handleSelectionChange (val) {
  421. let idx = -1, num
  422. for (let i in this.tableDatas) {
  423. for (let v in val) {
  424. if (val[v].ID === this.tableDatas[i].ID) {
  425. idx = i
  426. num = this.numList[idx]
  427. val[v]['goodsNum'] = num
  428. break
  429. }
  430. }
  431. }
  432. this.multipleSelection = val
  433. },
  434. handleChange (value, ID) {
  435. for (let i in this.multipleSelection) {
  436. if (this.multipleSelection[i]['ID'] === ID) {
  437. this.multipleSelection[i]['goodsNum'] = value
  438. }
  439. }
  440. },
  441. getGoods () {
  442. this.form.goodsId = []
  443. this.form.goodsNum = []
  444. this.multipleSelection.map((item, index) => {
  445. this.form.goodsId.push(item.ID)
  446. this.form.goodsNum.push(item.goodsNum)
  447. })
  448. },
  449. onSubmit () {
  450. let _this = this
  451. _this.getGoods()
  452. _this.submitButtonStat = true
  453. let path = 'user/ba-dec'
  454. let postData = {
  455. consignee: _this.form.consignee,
  456. acceptMobile: _this.form.acceptMobile,
  457. province: _this.form.areaSelected[0] ? _this.form.areaSelected[0] : '',
  458. city: _this.form.areaSelected[1] ? _this.form.areaSelected[1] : '',
  459. county: _this.form.areaSelected[2] ? _this.form.areaSelected[2] : '',
  460. address: _this.form.address,
  461. insertUserName: _this.form.insertUserName,
  462. decLv: _this.form.decLv,
  463. realName: _this.form.realName,
  464. decUserName: _this.form.decUserName,
  465. conUserName: _this.form.conUserName,
  466. recUserName: _this.form.recUserName,
  467. insertUserIdCard: _this.form.insertUserIdCard,
  468. openBank: _this.form.openBank,
  469. bankAddress: _this.form.bankAddress,
  470. mobile: _this.form.mobile,
  471. email: _this.form.email,
  472. cityName: _this.form.cityName,
  473. lgaName: _this.form.lgaName,
  474. bankProvince: _this.form.bankAreaSelected[0] ? _this.form.bankAreaSelected[0] : '',
  475. bankCity: _this.form.bankAreaSelected[1] ? _this.form.bankAreaSelected[1] : '',
  476. bankCounty: _this.form.bankAreaSelected[2] ? _this.form.bankAreaSelected[2] : '',
  477. bankNo: _this.form.bankNo,
  478. password: _this.form.password,
  479. payPassword: _this.form.payPassword,
  480. packageId: _this.form.packageId,
  481. goodsId: _this.form.goodsId,
  482. goodsNum: _this.form.goodsNum,
  483. location: _this.form.location,
  484. decWay: _this.decWay,
  485. payType: _this.form.payType
  486. }
  487. return network.postData(path, postData).then((response) => {
  488. // 非PayStack支付
  489. if (_this.form.payType !== 'pay_stack') {
  490. console.log(response)
  491. _this.$message({
  492. message: response,
  493. type: 'success'
  494. })
  495. _this.submitButtonStat = false
  496. _this.$router.push({path: `/shop/ba-dec-order-list`})
  497. } else {
  498. // PayStack支付
  499. _this.submitButtonStat = false
  500. _this.PayStackForm.orderSn = response.SN
  501. _this.PayStackForm.amount = response.ORDER_AMOUNT
  502. _this.PayStackForm.metadata.custom_fields[0].value = response.SN
  503. _this.visible = true
  504. }
  505. }).catch(response => {
  506. _this.submitButtonStat = false
  507. _this.$message({
  508. message: response,
  509. type: 'error'
  510. })
  511. })
  512. },
  513. selectOne (event, item) {
  514. network.getData(`user/ba-dec`).then(response => {
  515. })
  516. },
  517. handleChkConUser () {
  518. if (this.form.conUserName) {
  519. this.loading = true
  520. network.getData('user/full-info', {userName: this.form.conUserName}).then(response => {
  521. this.conRealName = response.REAL_NAME + response.isLocation
  522. this.loading = false
  523. }).catch(response => {
  524. this.conRealName = '-'
  525. this.loading = false
  526. })
  527. }
  528. },
  529. handleChkRecUser () {
  530. this.form.conUserName = ''
  531. this.conRealName = '-'
  532. this.form.autoPlace = ''
  533. if (this.form.recUserName) {
  534. this.loading = true
  535. network.getData('user/full-info', {userName: this.form.recUserName}).then(response => {
  536. // console.log(response)
  537. this.recRealName = response.REAL_NAME
  538. this.loading = false
  539. }).catch(response => {
  540. this.recRealName = '-'
  541. this.loading = false
  542. })
  543. }
  544. },
  545. // 切换支付方式
  546. payMethodChange (type) {
  547. this.form.payType = type
  548. },
  549. // 关闭支付回调
  550. handleClose () {
  551. let _this = this
  552. _this.$confirm('Confirm to close?').then(() => {
  553. return network.postData('shop/delete-approach-order', {orderSn: this.PayStackForm.orderSn}).then(() => {
  554. // 关闭支付模态框
  555. _this.visible = false
  556. })
  557. }).catch(() => {
  558. // 关闭支付模态框
  559. _this.visible = false
  560. })
  561. },
  562. // 支付成功回调
  563. processPayment (response) {
  564. // 关闭支付页面
  565. this.visible = false
  566. this.payStackLoading = false
  567. // 显示支付成功模态框
  568. this.payDialog = true
  569. this.handleCountdown()
  570. },
  571. // 关闭支付回调
  572. processClose () {
  573. // 关闭支付模态框
  574. this.visible = false
  575. },
  576. // 支付tips结束,跳转到报单列表
  577. handleOrderList () {
  578. this.$router.push({path: `/shop/ba-dec-order-list`})
  579. },
  580. // 启动倒计时
  581. handleCountdown () {
  582. // 创建定时器
  583. setInterval(() => {
  584. // 每隔1秒把time的值减一,赋值给span标签
  585. this.countdown--
  586. if (this.countdown === 0) {
  587. // 倒计时结束,跳转到报单列表
  588. this.$router.push({path: `/shop/ba-dec-order-list`})
  589. }
  590. }, 1000)
  591. }
  592. }
  593. }
  594. </script>
  595. <style>
  596. .hr-tip {
  597. font-size: 12px;
  598. position: relative;
  599. text-align: center;
  600. height: 30px;
  601. line-height: 30px;
  602. color: #999;
  603. margin-bottom: 20px;
  604. }
  605. .hr-tip:before {
  606. content: '';
  607. display: block;
  608. position: absolute;
  609. left: 0;
  610. right: 0;
  611. top: 14px;
  612. border-bottom: 1px dashed #ddd;
  613. height: 1px;
  614. }
  615. .hr-tip span {
  616. display: inline-block;
  617. background: #fff;
  618. position: relative;
  619. padding: 0 10px;
  620. }
  621. .el-input-number--mini .el-input-number__decrease, .el-input-number--mini .el-input-number__increase{
  622. width: 22px!important
  623. }
  624. .el-input-number.is-controls-right .el-input__inner{
  625. padding-left: 10px;
  626. padding-right: 30px;
  627. }
  628. .el-tabs--border-card{
  629. position: relative;
  630. width: 600px;
  631. }
  632. .flex{
  633. display: flex;
  634. }
  635. .address{
  636. /* height: 3rem; */
  637. line-height: 3.5rem;
  638. }
  639. .address_box{
  640. border-bottom: 1px solid #e3e3e3;
  641. }
  642. .sum{
  643. display: inline-block;
  644. }
  645. .box{
  646. margin: 1rem 0;
  647. display: flex;
  648. justify-content: flex-start;
  649. align-items: center;
  650. padding-bottom: 1rem;
  651. }
  652. .sum_box{
  653. display: flex;
  654. margin-left: 1rem;
  655. }
  656. .sum_box > div{
  657. line-height: 2rem;
  658. }
  659. .sum_box > div:nth-child(1){
  660. margin-right: 1rem;
  661. }
  662. .payButton {
  663. border: none;
  664. padding: 0;
  665. }
  666. </style>