| 
					
				 | 
			
			
				@@ -1,5 +1,5 @@ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 <template> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-  <div class="payment"> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  <div class="payment" v-if="data"> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     <ul class="payment-left"> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         <li v-for="(itemP,indexP) in payList" :key="indexP" @click="handleChangePay(itemP.type)" :class="[payType===itemP.type?'active':'']"> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             <img :src="itemP.img" /> 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -8,20 +8,21 @@ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     </ul> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     <div class="payment-right"> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         <i class="el-icon-close" @click="closeDialogue"></i> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        <h2>{{data.title}}</h2> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        <h3>{{data.org}}</h3> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        <p class="price">¥{{data.price|cutMoneyFiter}}</p> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        <h2>{{data.name}}</h2> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        <h3>{{data.org_name}}</h3> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        <p class="price">¥{{data.price_discount|cutMoneyFiter}}</p> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         <template v-if="payType==='dui'"> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             <el-input class="code" placeholder="在此输入兑换码" v-model="codeValue"></el-input> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             <a class="exchange" @click="handleExchange">兑换</a> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             <b class="tips">输入兑换码</b> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         </template> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        <template v-else-if="payType==='wei'"> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            <img class="img-code" src="../../../assets/img-code.png" /> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        <template v-else> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            <canvas id="QRCode_header" style="width: 338px; height: 338px; cursor: pointer;" @click="handleRefresh"></canvas> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        </template> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        <template v-if="payType==='wei'"> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             <b class="tips">请使用微信扫一扫</b> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         </template> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         <template v-else-if="payType==='zhi'"> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            <img class="img-code" src="../../../assets/img-code.png" /> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             <b class="tips">请使用支付宝扫一扫</b> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         </template> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     </div> 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -32,10 +33,12 @@ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 //这里可以导入其它文件(比如:组件,工具js,第三方插件js,json文件,图片文件等等) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 //例如:import 《组件名称》from ‘《组件路径》'; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 import { cutMoneyFiter } from '@/utils/defined'; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+import { getLogin } from "@/api/ajax"; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+import QRCode from "qrcode"; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 export default { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   //import引入的组件需要注入到对象中才能使用 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   components: { }, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-  props: ["data", "payWay"], 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  props: ["data", "payWay", "qr_code_url", "orderId"], 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   filters:{ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     cutMoneyFiter 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   }, 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -61,19 +64,73 @@ export default { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         ], // 支付方式 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         payType: 'dui', 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         codeValue: '', // 兑换码的值 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        codeImg: '', 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        payCode:{ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            wei: 'http://localhost:9970/#/people_manage', 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            zhi: 'http://localhost:9970/#/organize_manage' 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        }, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        opts: { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            errorCorrectionLevel: "H", //容错级别 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            type: "image/png", //生成的二维码类型 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            quality: 1, //二维码质量 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            margin: 0, //二维码留白边距 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            width: 330, //宽 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            height: 330, //高 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            text: "", //二维码内容 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            color: { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                dark: "#333333", //前景色 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                light: "#fff", //背景色 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            }, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        }, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        timer: null, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   }, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   //计算属性 类似于data概念 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   computed: {}, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   //监控data中数据变化 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   watch: { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    //  data:{ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    //   handler(val, oldVal) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    //     const _this = this; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    //     if (val) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    //        
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    //     } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    //   }, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    //   // 深度观察监听 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    //   deep: true, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    // }, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   }, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   //方法集合 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   methods: { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     // 支付方式 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     handleChangePay(type){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         this.payType = type; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        if(type==='dui'){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            return false 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        let MethodName = "/ShopServer/Client/OrderManager/UpdateOrderPayType"; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        let data = { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            id: this.orderId, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            pay_type: this.payType==='wei'?3:this.payType==='zhi'?4:null 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        getLogin(MethodName, data) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        .then((res) => { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            if(res.status === 1){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                this.payCode[this.payType] = res.qr_code_url 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                this.createQRCode() 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        }) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    }, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    createQRCode(){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        let msg = document.getElementById("QRCode_header"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        setTimeout(() => { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            QRCode.toCanvas(msg, this.payCode[this.payType], this.opts, function (error) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                if (error) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    console.log("二维码加载失败", error); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    this.$message.error("二维码加载失败"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            }); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        }, 1000); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     }, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     closeDialogue(){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         this.$emit("handleClose") 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -81,6 +138,40 @@ export default { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     // 兑换 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     handleExchange(){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    }, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    handleRefresh(){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        let MethodName = "/ShopServer/Client/OrderManager/GetOrderNewPayQRCode"; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        let data = { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            id: this.orderId, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        getLogin(MethodName, data) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        .then((res) => { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            if(res.status === 1){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                this.payCode[this.payType] = res.qr_code_url 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                this.createQRCode() 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        }) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        // this.payCode = { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        //     wei: 'https://baidu.com', 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        //     zhi: 'https://xdf.cn' 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        // } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        // this.createQRCode() 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    }, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    getOrderStatus(){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        let MethodName = "/ShopServer/Client/OrderManager/GetOrderPayStatus"; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        let data = { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            id: this.orderId, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        getLogin(MethodName, data) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        .then((res) => { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            if(res.status === 1){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                if(res.is_success==='true'){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    clearInterval(this.timer); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    this.$emit("handleClose") 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        }) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   }, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   //生命周期 - 创建完成(可以访问当前this实例) 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -89,7 +180,14 @@ export default { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   }, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   //生命周期 - 挂载完成(可以访问DOM元素) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   mounted() { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    if(this.qr_code_url){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        this.payCode[this.payType] = this.qr_code_url 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        this.createQRCode() 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        this.timer = null; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        this.timer = setInterval(() => { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            this.getOrderStatus() 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        }, 5000); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   }, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   //生命周期-创建之前 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   beforeCreated() { }, 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -210,7 +308,7 @@ export default { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             display: block; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             margin-top: 40px; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        .img-code{ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        #QRCode_header{ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             border: 1px solid #EBEBEB; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             padding: 8px; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         } 
			 |