5 changed files with 390 additions and 70 deletions
-
5src/api/xm/core/xmTaskOrder.js
-
114src/views/xm/core/xmTask/XmTaskEdit.vue
-
283src/views/xm/core/xmTaskOrder/ToPay.vue
-
26src/views/xm/core/xmTaskOrder/XmTaskOrderEdit.vue
-
32src/views/xm/core/xmTaskOrder/XmTaskOrderMng.vue
@ -0,0 +1,283 @@ |
|||||
|
<template> |
||||
|
<section class="page-container padding"> |
||||
|
<el-row class="page-header"> |
||||
|
<div class="pay_way"> |
||||
|
<h2>支付方式</h2> |
||||
|
<div class="pay_way_items"> |
||||
|
<div class="oItem" @click="selectPayWay(item)" v-for="(item, index) in payWayOptions" :key="index"> |
||||
|
<img :src="item.icon"> |
||||
|
<span>{{item.label}}</span> |
||||
|
<i v-if="item.isChecked" class="select el-icon-success"></i> |
||||
|
</div> |
||||
|
</div> |
||||
|
</div> |
||||
|
</el-row> |
||||
|
<el-row class="page-main"> |
||||
|
<div class="pay_allAmount"> |
||||
|
<h2>订单总额</h2> |
||||
|
<p class="allAmount">¥<b>{{editForm?editForm.finalFee:''}}</b></p> |
||||
|
<el-checkbox v-model="agreementChecked">同意</el-checkbox> <a style="font-size: 14px;color: #409EFF">《服务协议》</a> |
||||
|
</div> |
||||
|
</el-row> |
||||
|
|
||||
|
<el-row class="page-bottom bottom-fixed"> |
||||
|
<el-button @click.native="handleCancel">取消</el-button> |
||||
|
<el-button v-loading="load.edit" type="primary" @click.native="createOrder" :disabled="load.edit==true">提交</el-button> |
||||
|
</el-row> |
||||
|
<el-dialog |
||||
|
title="微信支付" |
||||
|
:visible.sync="weixinPayVisible" |
||||
|
:show-close="false" |
||||
|
@close="closeDialog" |
||||
|
width="350px" |
||||
|
> |
||||
|
<qriously :value="codeUrl" :size="300" /> |
||||
|
</el-dialog> |
||||
|
</section> |
||||
|
</template> |
||||
|
|
||||
|
<script> |
||||
|
import util from '@/common/js/util';//全局公共库 |
||||
|
import config from "@/common/config"; //全局公共库import |
||||
|
import { initDicts, addXmTaskOrder,editXmTaskOrder,editSomeFieldsXmTaskOrder,calcXmTaskOrder} from '@/api/xm/core/xmTaskOrder'; |
||||
|
import { mapGetters } from 'vuex' |
||||
|
import {aliPay, weixinPay, checkWxPayStatus} from '@/api/mdp/pay/pay' |
||||
|
|
||||
|
import aliPayImg from '@/assets/image/module/alipay.png'; |
||||
|
import weixinPayImg from '@/assets/image/module/weixin.png'; |
||||
|
export default { |
||||
|
name:'xmTaskOrderEdit', |
||||
|
components: { |
||||
|
|
||||
|
}, |
||||
|
computed: { |
||||
|
...mapGetters([ 'userInfo' ]), |
||||
|
|
||||
|
}, |
||||
|
props:['taskId'], |
||||
|
|
||||
|
watch: { |
||||
|
'visible':function(visible) { |
||||
|
if(visible==true){ |
||||
|
this.calcOrder(); |
||||
|
} |
||||
|
} |
||||
|
}, |
||||
|
data() { |
||||
|
return { |
||||
|
currOpType:'add',//add/edit |
||||
|
load:{ list: false, edit: false, del: false, add: false },//查询中... |
||||
|
dicts:{},//下拉选择框的所有静态数据 params={categoryId:'all',itemCodes:['sex']} 返回结果 {sex: [{id:'1',name:'男'},{id:'2',name:'女'}]} |
||||
|
editFormRules: { |
||||
|
id: [ |
||||
|
//{ required: true, message: '订单编号不能为空', trigger: 'blur' } |
||||
|
] |
||||
|
}, |
||||
|
editForm: { |
||||
|
ouserid:'',obranchId:'',ostatus:'',ctime:'',ltime:'',payType:'',payStatus:'',payTime:'',prepayId:'',id:'',finalFee:'',othFee:'',originFee:'',payAt:'',payAuthId:'',payOpenid:'',payUserid:'',payUsername:'',discount:'',topFee:'',topStime:'',topEtime:'',hotFee:'',hotStime:'',hotEtime:'',top:'',hot:'',crmSupFee:'',urgentFee:'',urgent:'',crmSup:'',efunds:'',estate:'',etoPlatTime:'',etoDevTime:'',ebackTime:'',taskId:'',topDays:'',hotDays:'',urgentDays:'',urgentStime:'',urgentEtime:'',calcStatus:'',calcTime:'',oshare:'',shareFee:'',payId:'',tranId:'',remark:'',name:'' |
||||
|
}, |
||||
|
maxTableHeight:300, |
||||
|
codeUrl:'', |
||||
|
weixinPayVisible: false, |
||||
|
payType:'1', |
||||
|
payWayOptions: [ |
||||
|
{ |
||||
|
label: '支付宝', |
||||
|
val: '2', |
||||
|
icon: aliPayImg, |
||||
|
isChecked: true |
||||
|
}, |
||||
|
{ |
||||
|
label: '微信', |
||||
|
val: '1', |
||||
|
icon: weixinPayImg, |
||||
|
isChecked: false |
||||
|
} |
||||
|
], |
||||
|
agreementChecked:false, |
||||
|
}//end return |
||||
|
},//end data |
||||
|
methods: { |
||||
|
|
||||
|
...util, |
||||
|
|
||||
|
|
||||
|
selectPayWay(item) { |
||||
|
this.payType = item.val; |
||||
|
this.payWayOptions.forEach(element => { |
||||
|
element.isChecked = false; |
||||
|
if(item.val == element.val) { |
||||
|
element.isChecked = true; |
||||
|
} |
||||
|
}); |
||||
|
}, |
||||
|
// 取消按钮点击 父组件监听@cancel="editFormVisible=false" 监听 |
||||
|
handleCancel:function(){ |
||||
|
this.$emit('cancel'); |
||||
|
}, |
||||
|
calcOrder(){ |
||||
|
var params={taskId:this.taskId,payType:this.payType} |
||||
|
calcXmTaskOrder(params).then(res=>{ |
||||
|
var tips = res.data.tips |
||||
|
if(tips.isOk){ |
||||
|
Object.assign(this.editForm,res.data.data) |
||||
|
}else{ |
||||
|
this.$notify.error(tips.msg); |
||||
|
} |
||||
|
}) |
||||
|
}, |
||||
|
createOrder() { |
||||
|
var params={taskId:this.taskId,payType:this.payType} |
||||
|
addXmTaskOrder(params).then(res => { |
||||
|
if(res.data.tips.isOk){ |
||||
|
//获取订单号 |
||||
|
Object.assign(this.editForm,res.data.data) |
||||
|
let orderId = res.data.data.id; |
||||
|
if(this.payType == '2') { |
||||
|
|
||||
|
this.toAliPay(orderId); |
||||
|
return; |
||||
|
} |
||||
|
if(this.payType == '1') { |
||||
|
this.toWeixinPay(orderId); |
||||
|
return; |
||||
|
} |
||||
|
}else{ |
||||
|
this.$notify.error(res.data.tips.msg); |
||||
|
} |
||||
|
}).catch(err => { |
||||
|
this.$notify.error(err.msg); |
||||
|
}).finally(() => { |
||||
|
}) |
||||
|
}, |
||||
|
|
||||
|
toAliPay(orderId) { |
||||
|
let params = { |
||||
|
id: orderId, |
||||
|
otype: 1, |
||||
|
returnUrl: `${window.location.protocol+"//"+window.location.host}/${process.env.CONTEXT}/${process.env.VERSION}/#/my/order/paySuccess` |
||||
|
} |
||||
|
aliPay(params).then(res => { |
||||
|
if(res.data.tips.isOk) { |
||||
|
const div = document.createElement("divform"); |
||||
|
div.innerHTML = res.data.data.htmlStr; |
||||
|
document.body.appendChild(div); |
||||
|
document.forms[0].submit(); |
||||
|
}else { |
||||
|
this.$notify.error(res.data.tips.msg); |
||||
|
} |
||||
|
}).finally(() => { |
||||
|
setTimeout(() => { |
||||
|
this.load.add = false; |
||||
|
}, 2000); |
||||
|
}) |
||||
|
}, |
||||
|
|
||||
|
toWeixinPay(orderId) { |
||||
|
let params = { |
||||
|
id: orderId, |
||||
|
otype: 1, |
||||
|
returnUrl: "" |
||||
|
} |
||||
|
weixinPay(params).then(res => { |
||||
|
if(res.data.tips.isOk) { |
||||
|
this.codeUrl = res.data.data.codeUrl; |
||||
|
this.weixinPayVisible = true; |
||||
|
this.timer = setInterval(() => { |
||||
|
this.queryOrderStatus(orderId) |
||||
|
}, 3000) |
||||
|
}else { |
||||
|
this.$notify.error(res.data.tips.msg); |
||||
|
} |
||||
|
}).finally(() => { |
||||
|
setTimeout(() => { |
||||
|
this.load.add = false; |
||||
|
}, 2000); |
||||
|
}) |
||||
|
}, |
||||
|
|
||||
|
//查询订单支付状态 |
||||
|
queryOrderStatus(orderId) { |
||||
|
console.log("查询订单"); |
||||
|
checkWxPayStatus({'orderId': orderId, "otype": "1"}).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); |
||||
|
} |
||||
|
},//end method |
||||
|
mounted() { |
||||
|
this.$nextTick(() => { |
||||
|
this.calcOrder(); |
||||
|
}); |
||||
|
} |
||||
|
} |
||||
|
|
||||
|
</script> |
||||
|
|
||||
|
<style lang="scss" scoped> |
||||
|
|
||||
|
.pay_way { |
||||
|
margin-top: 50px; |
||||
|
h2 { |
||||
|
margin-bottom: 20px; |
||||
|
} |
||||
|
.pay_way_items { |
||||
|
display: flex; |
||||
|
.oItem { |
||||
|
display: flex; |
||||
|
flex-direction: row; |
||||
|
align-items: center; |
||||
|
width: 200px; |
||||
|
height: 80px; |
||||
|
margin-right: 30px; |
||||
|
border: 2px solid #E3E4E6; |
||||
|
border-radius: 8px; |
||||
|
margin-top: 5px; |
||||
|
position: relative; |
||||
|
cursor: pointer; |
||||
|
img { |
||||
|
width: 50px; |
||||
|
height: 50px; |
||||
|
margin: 13px 18px 13px 40px; |
||||
|
} |
||||
|
.select { |
||||
|
font-size: 30px; |
||||
|
position: absolute; |
||||
|
right: 5px; |
||||
|
top: 5px; |
||||
|
color: #409EFF; |
||||
|
} |
||||
|
} |
||||
|
} |
||||
|
|
||||
|
.phone { |
||||
|
margin-top: 10px !important; |
||||
|
width: 440px; |
||||
|
} |
||||
|
} |
||||
|
|
||||
|
.pay_allAmount { |
||||
|
margin-top: 30px; |
||||
|
h2 { |
||||
|
margin-bottom: 20px; |
||||
|
} |
||||
|
.allAmount { |
||||
|
font-size: 22px; |
||||
|
font-weight: bold; |
||||
|
color: #FA5A55; |
||||
|
margin-bottom: 20px; |
||||
|
b { |
||||
|
font-size: 38px; |
||||
|
} |
||||
|
} |
||||
|
} |
||||
|
</style> |
||||
Write
Preview
Loading…
Cancel
Save
Reference in new issue