陈裕财 4 years ago
parent
commit
c277d8f00a
  1. 1
      src/api/mdp/pay/pay.js
  2. 3
      src/main.js
  3. 100
      src/views/order/createOrder.vue
  4. 2
      src/views/order/enterprise.vue
  5. 13
      src/views/order/flagShip.vue
  6. 44
      src/views/order/index.vue
  7. 40
      src/views/order/paySuccess.vue

1
src/api/mdp/pay/pay.js

@ -4,3 +4,4 @@ let base = config.getPayBasePath();
export const aliPay = params => { return axios.post(`${base}/alipay/uniOrder`, params) } export const aliPay = params => { return axios.post(`${base}/alipay/uniOrder`, params) }
export const weixinPay = params => { return axios.post(`${base}/wxpay/uniOrder/native`, params) } export const weixinPay = params => { return axios.post(`${base}/wxpay/uniOrder/native`, params) }
export const checkWxPayStatus = params => { return axios.get(`${base}/wxpay/uniOrder/checkOrderStatus`, {params}) }

3
src/main.js

@ -19,7 +19,8 @@ import './permission' // permission control
import * as echarts from 'echarts' import * as echarts from 'echarts'
import * as filters from './filters' // global filters import * as filters from './filters' // global filters
import Print from 'vue-print-nb' import Print from 'vue-print-nb'
import VueQriously from 'vue-qriously'
Vue.use(VueQriously)
import DateRange from '@/components/dateRange/index' import DateRange from '@/components/dateRange/index'

100
src/views/order/createOrder.vue

@ -21,7 +21,7 @@
<el-descriptions-item label="购买版本">企业版</el-descriptions-item> <el-descriptions-item label="购买版本">企业版</el-descriptions-item>
<el-descriptions-item label="创建人">谢家豪</el-descriptions-item> <el-descriptions-item label="创建人">谢家豪</el-descriptions-item>
<!-- <el-descriptions-item label="手机号码">18826103122</el-descriptions-item> --> <!-- <el-descriptions-item label="手机号码">18826103122</el-descriptions-item> -->
<el-descriptions-item label="支付方式">{{data.payWay == 'aliPay' ? '支付宝' : '微信'}}</el-descriptions-item>
<el-descriptions-item label="支付方式">{{data.payway == 'aliPay' ? '支付宝' : '微信'}}</el-descriptions-item>
</el-descriptions> </el-descriptions>
</div> </div>
<div class="table"> <div class="table">
@ -50,21 +50,6 @@
label="账号数量" label="账号数量"
width="120"> width="120">
</el-table-column> </el-table-column>
<!-- <el-table-column
prop="city"
label="单价"
width="120">
</el-table-column>
<el-table-column
prop="address"
label="有效期"
width="300">
</el-table-column>
<el-table-column
prop="zip"
label="总金额"
>
</el-table-column> -->
</el-table> </el-table>
</div> </div>
</div> </div>
@ -73,8 +58,8 @@
<span class="allAmount"> <span class="allAmount">
总金额: <b>{{data.amount}}</b> 总金额: <b>{{data.amount}}</b>
</span> </span>
<el-button size="larget">上一步</el-button>
<el-button size="larget" type="primary" @click="createOrder">确认支付</el-button>
<el-button size="larget" @click="returnPage">上一步</el-button>
<el-button size="larget" type="primary" :loading="createOrderLonding" @click="createOrder">确认支付</el-button>
</div> </div>
</div> </div>
</div> </div>
@ -82,26 +67,39 @@
</div> </div>
</div> </div>
<el-dialog
title="微信支付"
:visible.sync="weixinPayVisible"
:show-close="false"
@close="closeDialog"
width="350px"
>
<qriously :value="codeUrl" :size="300" />
</el-dialog>
</div> </div>
</template> </template>
<script> <script>
import {createOrder} from '@/api/mdp/sys/order' import {createOrder} from '@/api/mdp/sys/order'
import {aliPay, weixinPay} from '@/api/mdp/pay/pay'
import {aliPay, weixinPay, checkWxPayStatus} from '@/api/mdp/pay/pay'
export default { export default {
data() { data() {
return { return {
data: null, data: null,
createOrderLonding: false
createOrderLonding: false,
weixinPayVisible: false,
codeUrl: ""
} }
}, },
methods: { methods: {
returnPage() {
this.$router.go(-1);
},
createOrder() { createOrder() {
// this.$router.push('/my/order/paySuccess')
//
console.log(this.data, 'data');
//s
//
this.data.osource = "1"; this.data.osource = "1";
// //
this.data.otype = "1"; this.data.otype = "1";
@ -111,7 +109,6 @@ export default {
this.createOrderLonding = true; this.createOrderLonding = true;
createOrder(this.data).then(res => { createOrder(this.data).then(res => {
if(res.data.tips.isOk){ if(res.data.tips.isOk){
console.log(res, "res--->");
// //
let orderId = res.data.data; let orderId = res.data.data;
if(this.data.payway == 'aliPay') { if(this.data.payway == 'aliPay') {
@ -128,7 +125,6 @@ export default {
}).catch(err => { }).catch(err => {
this.$message.error(err.msg); this.$message.error(err.msg);
}).finally(() => { }).finally(() => {
this.createOrderLonding = false;
}) })
}, },
@ -136,37 +132,71 @@ export default {
let params = { let params = {
id: orderId, id: orderId,
otype: 1, otype: 1,
returnUrl: "www.baidu.com"
returnUrl: "http://359n6r5527.wicp.vip/#/my/order/paySuccess"
} }
aliPay(params).then(res => { aliPay(params).then(res => {
console.log(res, "res---->");
if(res.data.tips.isOk) {
const div = document.createElement("divform"); const div = document.createElement("divform");
div.innerHTML = res.data.data.htmlStr; div.innerHTML = res.data.data.htmlStr;
document.body.appendChild(div); document.body.appendChild(div);
document.forms[0].submit(); document.forms[0].submit();
}else {
this.$message.error(res.data.tips.msg);
}
}).finally(() => {
setTimeout(() => {
this.createOrderLonding = false;
}, 2000);
}) })
}, },
toWeixinPay(orderId) { toWeixinPay(orderId) {
let params = { let params = {
orderId: orderId
id: orderId,
otype: 1,
returnUrl: ""
} }
weixinPay(params).then(res => { weixinPay(params).then(res => {
console.log(res, "res---->");
})
if(res.data.tips.isOk) {
this.codeUrl = res.data.data.codeUrl;
this.weixinPayVisible = true;
this.timer = setInterval(() => {
this.queryOrderStatus(orderId)
}, 3000)
}else {
this.$message.error(res.data.tips.msg);
} }
}).finally(() => {
setTimeout(() => {
this.createOrderLonding = false;
}, 2000);
})
},
//
queryOrderStatus(orderId) {
console.log("查询订单");
checkWxPayStatus({'orderId': orderId}).then(res => {
if(res.data.tips.isOk) {
this.$router.push({path:'/my/order/paySuccess', query:{total_amount: this.data.amount, out_trade_no: orderId}});
clearInterval(this.timer);
}else {
}
}).finally(() => {
})
},
closeDialog() {
clearInterval(this.timer);
}
}, },
created() { created() {
let data = JSON.parse(window.localStorage.getItem("BUY_MODULES")); let data = JSON.parse(window.localStorage.getItem("BUY_MODULES"));
this.data = data
console.log(data, "data");
this.data = data;
console.log(this.data, "data-->");
}, },
} }

2
src/views/order/enterprise.vue

@ -313,7 +313,7 @@ export default {
map.set(t[0], t[1]); map.set(t[0], t[1]);
}); });
map.forEach(function(value, key){ map.forEach(function(value, key){
if(new Decimal(month).comparedTo(key) >= 0) {
if(new Decimal(month).comparedTo(key) == 0) {
sale = new Decimal(value).div(new Decimal(100)) sale = new Decimal(value).div(new Decimal(100))
} }
}); });

13
src/views/order/flagShip.vue

@ -82,6 +82,7 @@ export default {
} }
], ],
form: { form: {
phone: '',
contacts: '', contacts: '',
usePeoples: '', usePeoples: '',
needs: [], needs: [],
@ -106,9 +107,15 @@ export default {
methods: { methods: {
getForm() { getForm() {
// //
console.log("验证表单");
return new Promise((resolve, reject) => {
this.$refs['form'].validate((valid) => {
if (valid) {
resolve(this.form);
} else {
reject(new Error('前检查表单项是否填写正确'))
}
});
})
}, },

44
src/views/order/index.vue

@ -91,38 +91,46 @@ export default {
submitOrder() { submitOrder() {
// //
if(this.currentSelectVersion = "企业版") {
if(this.currentSelectVersion == "企业版") {
let data = this.$refs.enterprise.getForm(); let data = this.$refs.enterprise.getForm();
// //
// if(data.phone == "" || data.phone == null || data.phone == undefined) {
// this.$message({
// message: '',
// type: 'warning'
// });
// return;
// }
if(data.phone == "" || data.phone == null || data.phone == undefined) {
this.$message({
message: '请输入手机号',
type: 'warning'
});
return;
}
// //
// if(!data.checked) {
// this.$message({
// message: '',
// type: 'warning'
// });
// return;
// }
if(!data.checked) {
this.$message({
message: '请先同意服务协议',
type: 'warning'
});
return;
}
// //
if(data.data.length < 0) {
if(data.data.length <= 0) {
this.$message({ this.$message({
message: '请选择要购买的模块', message: '请选择要购买的模块',
type: 'warning' type: 'warning'
}); });
return return
} }
console.log(data, "data");
window.localStorage.setItem("BUY_MODULES", undefined) window.localStorage.setItem("BUY_MODULES", undefined)
window.localStorage.setItem("BUY_MODULES", JSON.stringify(data)) window.localStorage.setItem("BUY_MODULES", JSON.stringify(data))
this.$router.push('/my/order/create') this.$router.push('/my/order/create')
}else { }else {
let data = this.$refs.flagship.getForm();
let flagData = this.$refs.flagship.getForm();
flagData.then((res) => {
console.log(res, "res-->");
}).catch(err => {
})
} }
}, },

40
src/views/order/paySuccess.vue

@ -5,13 +5,12 @@
<p style="font-size: 24px;">恭喜您支付成功</p> <p style="font-size: 24px;">恭喜您支付成功</p>
</template> </template>
<template class="subTitle" slot="subTitle"> <template class="subTitle" slot="subTitle">
<p style="margin-bottom: 6px;font-size: 16px;">您已成功支付299.00</p>
<p style="margin-bottom: 6px;font-size: 16px;">支付方式 支付宝</p>
<p style="margin-bottom: 6px;font-size: 16px;">订单号2022042417501233 查看订单</p>
<p style="margin-bottom: 6px;font-size: 16px;">您已成功支付 {{params.total_amount}} </p>
<p style="margin-bottom: 6px;font-size: 16px;">订单号{{params.out_trade_no}} 查看订单</p>
</template> </template>
<template slot="extra"> <template slot="extra">
<el-button type="primary" size="larget">继续购买</el-button>
<el-button size="larget">返回首页</el-button>
<el-button type="primary" size="larget" @click="goBuyAgain()">继续购买</el-button>
<el-button size="larget" @click="returnHome()">返回首页</el-button>
</template> </template>
</el-result> </el-result>
</div> </div>
@ -19,8 +18,39 @@
<script> <script>
export default { export default {
data() {
return {
params: {},
}
},
created() {
const href = window.location.href;
this.params = this.urlParamsHash(href);
console.log(this.params, "params");
},
methods: {
returnHome() {
this.$router.push({path:'/dashboard'})
},
goBuyAgain() {
this.$router.push({path:'/my/order/index'})
},
urlParamsHash(url) {
var params = {}
var h
var hash = url.slice(url.indexOf('?') + 1).split('&')
for(var i = 0; i < hash.length; i++) {
h = hash[i].split('=')
params[h[0]] = h[1]
}
return params;
}
},
} }
</script> </script>

Loading…
Cancel
Save