dec.vue 27 KB

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