123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228 |
- <template>
- <view class="pages confirmOrder">
- <view class="order-list">
- <custom-nodata v-if="cartList.length === 0"></custom-nodata>
- <view class="order-list-item" v-for="(item,index) in cartList" :key="index">
- <view class="image-content">
- <image :src="$onlineImg + item.goodsImages | firstImg" mode="aspectFill"></image>
- </view>
- <view class="text-content">
- <view class="title">{{item.goodsName}} </view>
- <!-- <view class="oId">产品编号: {{ item.oId }}</view> -->
- <view class="price">{{item.price}}元 / KG</view>
- <view class="totalcarbon">累计碳汇量{{item.carbonVal}}kg</view>
- <view class="total"><text>¥</text>{{item.totalPrice | keepTwoNum}}</view>
- <view class="nums">
- <view class="countNum">
- <view class="countNum-action reduce" @click="calcValue('reduce',item)">-</view>
- <view class="countNum-input">
- <input class="uni-input" v-model="item.carbonVal" type="number" @blur="onInput(item)"/>
- </view>
- <view class="countNum-action add" @click="calcValue('add',item)">+</view>
- </view>
- </view>
- <!-- {{cartListTmp}} -->
- </view>
- </view>
- </view>
- <!-- <uni-list class="pay-way">
- <uni-list-item title="支付方式" rightText="微信支付"></uni-list-item>
- </uni-list> -->
- <view class="pay-wrap" @click="submitOrder">
- <view class="pay-con">
- <text class="pay-con-til">立即支付</text>
- <view class="num">
- <text>¥</text>
- {{totalPrice | keepTwoNum}}
- </view>
- </view>
- </view>
- </view>
- </template>
- <script>
- import { mapMutations } from 'vuex';
- // import uniList from "@/components/uni-list/uni-list.vue"
- // import uniListItem from "@/components/uni-list-item/uni-list-item.vue"
- import customNodata from '@/components/custom-nodata/custom-nodata.vue'
- import { debounce } from '@/utils/util.js'
- export default{
- components:{
- // uniList,
- // uniListItem,
- customNodata
- },
- onLoad(options) {
- let self = this;
- let arr = this.$store.state.cartListTmp
- // console.log('options',JSON.parse(JSON.stringify(options)));
- console.log('this.$store.state.cartListTmp',JSON.parse(JSON.stringify(this.$store.state.cartListTmp)));
- for(let i = 0; i < arr.length; i++){
- this.cartList.push({
- goodsName:arr[i].goodsName,
- goodsImages:arr[i].goodsImages,
- goodsId:arr[i].guid,
- price:arr[i].price,
- carbonVal:arr[i].carbonSkin,
- // total:arr[i].carbonSkin,
- totalPrice:arr[i].carbonSkin * arr[i].price,
- // totalcarbon:arr[i].carbonSkin
- })
- };
- uni.getStorage({
- key:'accessToken',
- success: function (res) {
- self.token = res.data.accessToken;
- // console.log('token',res.data.accessToken);
- }
- });
- },
- onUnload() {
- //页面卸载购物清单
- this.clearCart()
- },
- data(){
- return{
- token:'',
- requested:true,//是否请求中
- min:1,
- cartList:[]
- }
- },
- methods:{
- ...mapMutations(['clearCart']),
- onInput(item){
- console.log(item.carbonVal)
- if(!(/(^[1-9]\d*$)/.test(item.carbonVal))){
- item.carbonVal = 1
- if(item.carbonVal < this.min){
- item.carbonVal = 1
- }
- }
- item.totalPrice = item.price * item.carbonVal
- },
- //数量计算
- calcValue(type,item){
- if (type === "reduce") {
- item.total--
- if (item.carbonVal < this.min) {
- item.carbonVal = 1
- }
- item.totalPrice = item.price * item.carbonVal;
- // item.totalcarbon = item.carbonVal*10;
- } else if (type === "add") {
- // console.log('this.$store.state.cartListTmp',JSON.parse(JSON.stringify(this.$store.state.cartListTmp)));
- // console.log('this.$store.state.cartListTmp.canSold',this.$store.state.cartListTmp[0].canSold);
- item.carbonVal++
- item.totalPrice = item.price * item.carbonVal
- console.log('this.cartList',this.cartList);
- // item.totalcarbon = item.carbonVal*10;
- }
- },
- //提交校验
- submitOrder(){
- if(this.requested){
- this.requested = false;
- uni.showLoading({
- title: '订单生成中。'
- });
- if(this.cartList.length == 0){
- this.$api.msg("请先选择产品!")
- return;
- }else{
- let userInfo = uni.getStorageSync("userInfo");
- // console.log( uni.getStorageSync("linkType") );
- let params = {
- // customerId:userInfo.guid,
- goods:this.cartList,
- // linkType: uni.getStorageSync("linkType") || '',
- // activityId:uni.getStorageSync("togetherId") || ''
- }
- this.syncData(params);
- }
- }else{
- this.$api.msg('请求中,请稍等!', 2500);
- return
- };
-
- },
- //订单提交,拿到订单id
- syncData(data){
- console.log('data',data);
- // return
- this.$api.http.post(this.config.apiBaseurl + "/carbon-h5/wap/order/createOrder",data,{
- header: {
- Accept:'application/json',
- Authorization: 'Bearer '+ this.token, //注意Bearer后面有一空格
- },
- }).then(res=>{
- console.log('res',res);
- this.requested = true;
- if(res.data.retHead.errCode == 0){
- this.pullWeichatPay(res.data.retBody)
- }else{
- this.$api.msg(res.data.retHead.errMsg)
- }
- uni.hideLoading()
- }).catch( err =>{
- this.requested = true;
- console.log('createOrder err',err)
- })
-
- },
- //拉起微信支付
- pullWeichatPay(item){
- let self = this;
- console.log('pay item',item);
- let userInfo = uni.getStorageSync("userInfo");
- console.log('userInfo',userInfo);
- // return
- let params = {
- orderId:item.guid,
- // payType:item.payType,
- openid:userInfo.wxId,
- "tradeType":"test"
- };
- this.$api.http.post(this.config.apiBaseurl + "/carbon-h5/wechat/pay",params,{
- header: {
- Accept:'application/json',
- Authorization: 'Bearer '+ this.token, //注意Bearer后面有一空格
- },
- }).then(res=>{
- uni.requestPayment({
- provider: 'wxpay',
- timeStamp:res.data.retBody.timeStamp,
- nonceStr: res.data.retBody.nonceStr,
- package: res.data.retBody.packageValue,
- signType: 'MD5',
- paySign: res.data.retBody.paySign,
- success: function (res) {
- self.$api.href('/pages/usercenter/orderList/orderList')
- console.log('success:' + JSON.stringify(res));
- },
- fail: function (err) {
- console.log('fail:' + JSON.stringify(err));
- }
- });
- }).catch( err =>{
- console.log('pay err',err)
- })
- }
- },
- computed:{
- //订单总价计算
- totalPrice:function(){
- let totalPrice = 0
- let len = this.cartList.length
- for(let i = 0; i < len;i++){
- totalPrice += this.cartList[i].totalPrice
- }
- return totalPrice
- }
- }
- }
- </script>
- <style>
- @import url("confirmOrder.css");
- </style>
|