茶.

app

<template>
    <div>
        <!-- 1头部 -->
        <div class="header">
            <!-- 1.0 导航栏头部 -->
            <div class="head-top">
                <div class="section">
                    <div class="left-box">
                        <span>l乐购买买买</span>
                        <a target="_blank" href="#"></a>
                        <a target="_blank" href="#"></a>
                    </div>
                    <div id="menu" class="right-box">
                        <span v-show="!isLogin">
                            <router-link to="/login" class="">登录</router-link>
                            <strong>|</strong>
                            <a href="" class="">注册</a>
                            <strong>|</strong>
                        </span>
                        <span v-show="isLogin">
                            <router-link to="/VipCenter" class="">会员中心</router-link>
                            <strong>|</strong>
                            <a>退出</a>
                            <strong>|</strong>
                        </span>
                        <router-link to="/shopcart" class="">
                            <i class="iconfont icon-cart"></i>购物车(
                            <span id="shoppingCartCount">
                                <span>{{this.$store.getters.getBuyCount}}</span>
                            </span>)</router-link>
                    </div>
                </div>
            </div>

            <!-- 2.0 导航条 -->
            <div class="head-nav">
                <div class="section">
                    <div id="menu2" class="nav-box menuhd">
                        <ul>
                            <li class="index">
                                <a href="#" class="">
                                    <span class="out" style="top: 0px;">首页</span>
                                </a>
                            </li>
                            <li class="news">
                                <a href="#" class="">
                                    <span class="out" style="top: 0px;">每日精选</span>
                                </a>
                            </li>
                            <li class="photo">
                                <a href="#" class="">
                                    <span class="out" style="top: 0px;">秒杀专区</span>
                                </a>
                            </li>
                            <li class="video">
                                <a href="#" class="">
                                    <span class="out" style="top: 0px;">l乐购超市</span>
                                </a>
                            </li>
                            <li class="down">
                                <a href="#" class="">
                                    <span class="out" style="top: 0px;">会员权益</span>
                                </a>
                            </li>
                            <li class="goods">
                                <router-link to="/goodslist" class="router-link-exact-active ">
                                    <span class="out" style="top: 0px;">购物商城</span>
                                </router-link>
                            </li>
                        </ul>
                    </div>
                    <div class="search-box">
                        <div class="input-box">
                            <input id="keywords" name="keywords" type="text" onkeydown="if(event.keyCode==13){};" placeholder="输入关健字" x-webkit-speech="">
                        </div>
                        <a href="javascript:;">
                            <i class="iconfont icon-search"></i>
                        </a>
                    </div>
                </div>
            </div>
        </div>

        <!-- 2.中间组件 -->
        <!-- 2.0 中间部分-路由 -->
        <router-view></router-view>

        <!-- 3.底部 -->
        <div class="footer">
            <div class="section">
                <div class="foot-nav">
                    <a href="">关于我们</a>
                    <strong>|</strong>
                    <a href="">联系我们</a>
                    <strong>|</strong>
                    <a href="">联系客服</a>
                    <strong>|</strong>
                    <a href="">合作招商</a>
                    <strong>|</strong>
                    <a href="">商家帮助</a>
                    <strong>|</strong>
                    <a href="">营销中心</a>
                    <strong>|</strong>
                    <a href="">隐私政策</a>
                </div>
                <div class="foot-box">
                    <div class="copyright">
                        <p>版权所有 乐购买买买 </p>
                        <p>公司地址: 联系电话:</p>
                        <p class="gray">Copyright © 2009-2018 itcast Corporation,All Rights Reserved.</p>
                    </div>
                    <div class="service">
                        <p>周一至周日 9:00-24:00</p>
                        <a href="#">
                            <i class="iconfont icon-phone"></i>在线客服</a>
                    </div>
                </div>
            </div>
        </div>
    </div>
</template>

<script>
import { bus } from "./common/common.js";
//导入JQ
import $ from "jquery";
//把导入的Jquery挂在window
window.$ = $;
window.jQuery = $;

export default {
    data() {
        return {
            isLogin: false
        }
    },
    created() {
        bus.$on("loginSuccess", () => {
            this.isLogin = true
        });
    },
    mounted() {
        $("#menu2 li a").wrapInner('<span class="out"></span>');
        $("#menu2 li a").each(function() {
            $('<span class="over">' + $(this).text() + "</span>").appendTo(
                this
            );
        });

        $("#menu2 li a").hover(
            function() {
                $(".out", this)
                    .stop()
                    .animate({ top: "48px" }, 300); // move down - hide
                $(".over", this)
                    .stop()
                    .animate({ top: "0px" }, 300); // move down - show
            },
            function() {
                $(".out", this)
                    .stop()
                    .animate({ top: "0px" }, 300); // move up - show
                $(".over", this)
                    .stop()
                    .animate({ top: "-48px" }, 300); // move up - hide
            }
        );
    }
};
</script>




<style>
/* nav的的CSS */
@import "./statics/site/jqurey_plugins/hoverNav/css/style.css";

/* 自己的css */
@import "./statics/site/css/style.css";
</style>

main.js

import Vue from 'vue'
import App from './App.vue'
//轮播图element插件
import ElementUI from 'element-ui'
//图片懒加载
import VueLazyload from 'vue-lazyload'

// import lkj from '../test'


//集成
//Element 插件
Vue.use(ElementUI)
import 'element-ui/lib/theme-chalk/index.css';
//懒加载图片
Vue.use(VueLazyload, {
  loading: require('./statics/site/images/01.gif')
})

//导入路由
import router from './router'
//导入过滤器
import './filters/index.js'

//导入vuex 数据仓库

import store from './store/index.js'

new Vue({
  router,
  store,
  render: h => h(App)
}).$mount('#app')

router

import Vue from 'vue'
import VueRouter from 'vue-router'

import {bus} from "../common/common.js"

Vue.use(VueRouter)

//导入组件
    //1.商品列表部分
import goodslist from '../components/goods/goodslist.vue'
    //2.商品详情部分
import goodsinfo from '../components/goods/goodsinfo.vue'
import shopcart from '../components/shopcart/shopcart.vue'
import order from '../components/order/order.vue'
import login from '../components/account/login.vue'
import pay from '../components/pay/pay.vue'
import paySuccess from '../components/pay/paySuccess.vue'
import VipCenter from '../components/VipCenter/Vipcenter.vue'
import theOrder from '../components/VipCenter/theOrder.vue'
import checkOrder from '../components/VipCenter/checkOrder.vue'


//设置网络请求部分放这里,方便后期维护
import axios from 'axios'
//把axios放到vue的原型中
Vue.prototype.$axios = axios
axios.defaults.baseURL = 'http://47.106.148.205:8899/'
axios.defaults.withCredentials=true

//创建路由对象
const router = new VueRouter({
    routes:[
        {path:'/',redirect:'/goodslist'},
        {name:'goodslist',path:'/goodslist',component:goodslist},
        {path:'/goodsinfo/:goodsid',component:goodsinfo},
        {path:'/shopcart',component:shopcart},
        {path:'/login',component:login},
        {path:'/order',meta:{needLogin : true},component:order},
        {path:'/pay',meta:{needLogin : true},component:pay},
        {path:'/paySuccess',meta:{needLogin : true},component:paySuccess},
        {path:'/VipCenter',meta:{needLogin : true},component:VipCenter},
        {path:'/theOrder',meta:{needLogin : true},component:theOrder},
        {path:'/checkOrder',meta:{needLogin : true},component:checkOrder}
    ]
})

router.beforeEach((to,from,next) =>{
    //先保存进来的地址的信息,要判断先除开login进来的
    if(to.fullPath !='/login'){
        //保存地址
        localStorage.setItem('lastVisitPath',to.fullPath)
    } 
    //验证登陆判断
    if(to.meta.needLogin){
        const url = `site/account/islogin`
        axios.get(url).then(response =>{
            if(response.data.code === 'logined'){
                //登陆成功也要隐藏,调用自定义属性
                bus.$emit('loginSuccess')
                next()
            }else{
                router.push({path:'/login'})
            }
        })
    }else{
        next()
    }
})


//es6导出
export default router

filters

import Vue from 'vue'

//导入改时间的插件moment 
import moment from 'moment'

//定义全局过滤器
Vue.filter('dateFmt',(input,formatString='YYYY-MM-DD')=>{
    return moment(input).format(formatString)
})

store

//引入
import Vue from 'vue'
import Vuex from 'vuex'


//集成
Vue.use(Vuex)


//按需导入
import {addLocalGoods,getTotalCount,updateLocalGoods,deleteGoods,deleteLocalGoodsById} from '../common/localStorageTool.js'

//创建空白仓库
const store  = new Vuex.Store({
    state:{//要操作的数据
        buyCount : 0
    },
    getters:{ // 从仓库往外取东西
        getBuyCount:state=>{
            return state.buyCount > 0 ? state.buyCount :  getTotalCount()
            //从新调用统计商品的方法
        }
    },
    mutations:{ //同往仓库中操作数据
        addGoods(state,goods){
            // state.buyCount += goods.count
            //改为调用存储到本地的方法
            state.buyCount = addLocalGoods(goods)
        },
        updateGoods(state,goods){
            state.buyCount = updateLocalGoods(goods)
        },
        deleteGoodsById(state,goodsId){
            state.buyCount = deleteLocalGoodsById(goodsId)
        }

    }

})

//导出到
export default store

common.js

import Vue from 'vue'
const bus = new Vue()

//导出
export {bus}

localStorageTool.js


const KEY = 'goods'


//先取出本地已有的数据
    //1.封装一个获取本地数据的的函数,要么有数据,要么就是一个空的对象
const getLocalGoods = () => {
    return JSON.parse(localStorage.getItem(KEY) || '{}')
}

//2.统计本地最新的商品的总数
const getTotalCount =() =>{
    //2.1获取本地数据
    const localGoods = getLocalGoods()
    // console.log(localGoods);
    
    //2.2取数数组里面的所有商品的key值,相加,则为所有商品的总数
    let totalCount = 0
    for(const key in localGoods){
        totalCount += localGoods[key]

        // console.log(totalCount)
    }
    return totalCount
}

    //3.把goods中的商品存储的本地
const addLocalGoods = goods => {

    //3.1先获取本地数据
    const localGoods = getLocalGoods()
        
        console.log(localGoods);
        
    //先判断有没有商品id这个值
    if(localGoods[goods.goodsId]){

        localGoods[goods.goodsId] += goods.count
    }else{
        localGoods[goods.goodsId] = goods.count
    }
    // console.log(localGoods,localGoods[goods.goodsId]);

    localStorage.setItem(KEY,JSON.stringify(localGoods))

    return getTotalCount()
}

const updateLocalGoods = goods=>{
    //1.获取本地数量数,调用方法
    const localGoods = getLocalGoods()
    //更新
    localGoods[goods.goodsId] = goods.count
    //保存本地
    localStorage.setItem(KEY,JSON.stringify(localGoods))

    //返回数据
    return getTotalCount()

}

//根据id删除商品
const deleteLocalGoodsById = goodsId =>{
    //1.获取本地数量数,调用方法
    const localGoods = getLocalGoods()
    //删除
    
    delete localGoods[goodsId]
    //保存数据到本地

     localStorage.setItem(KEY,JSON.stringify(localGoods))

     //从新计算总和
     return getTotalCount()
}

//按需导出
export {addLocalGoods,getTotalCount,getLocalGoods,updateLocalGoods,deleteLocalGoodsById}

login.vue

<template>
    <div>
         <div class="section">
            <div class="location">
                <span>当前位置:</span>
                <a href="/index.html">首页</a> &gt;
                <a href="/login.html">会员登录</a>
            </div>
        </div>
        <div class="section">
            <div class="wrapper">
                <div class="bg-wrap">
                    <div class="nav-tit">
                        <a class="selected" href="javascript:;">账户登录</a>
                        <i>|</i>
                        <a href="/register.html">免费注册</a>
                    </div>

                    <div id="loginform"  name="loginform" class="login-box">
                        <div class="input-box">
                            <input id="txtUserName" name="txtUserName" type="text" placeholder="用户名/手机/邮箱" maxlength="50" v-model="user_name">
                        </div>
                        <div class="input-box">
                            <input id="txtPassword" name="txtPassword" type="password" placeholder="输入登录密码" maxlength="16" v-model="password">
                        </div>
                        <div class="btn-box">
                            <input id="btnSubmit" name="btnSubmit" type="submit" value="立即登录" @click="login">
                        </div>
                    </div>
                </div>
            </div>
        </div>
    </div>
</template>



<script>

import {bus} from '../../common/common.js'

export default {
    data(){
        return{
            user_name:'',
            password:''
        }
    },
    methods:{
        login(){
            const url = `site/account/login` 
            this.$axios.post(url,{user_name:this.user_name,password:this.password}).then(response =>{
                if(response.data.status === 0 ){
                    //登陆成功,跳转到在登陆判断哪里设置保存的地址
                    this.$router.push({path:localStorage.getItem('lastVisitPath')})
                    console.log(localStorage.getItem('lastVisitPath'));
                    
                    //触发公共bus自定义事件
                    bus.$emit('loginSuccess')
                }
            })
        }
    }
}
</script>

goodsinfo.vue

<template>
    <div>
        <div class="section">
            <div class="location">
                <span>当前位置:</span>
                <a href="/index.html">首页</a> &gt;
                <a href="/goods.html">购物商城</a>
                <a href="/goods/42/1.html">商品详情</a>
            </div>
        </div>
        <div v-if="goodsData.goodsinfo" class="section">
            <div class="wrapper clearfix">
                <div class="wrap-box">
                    <div class="left-925">
                        <div class="goods-box clearfix">

                            <!-- 图片放大镜代码 -->
                            <div class="pic-box">
                                <div class="magnifier" id="magnifier1">
                                    <div class="magnifier-container">
                                        <div class="images-cover"></div>
                                        <!--当前图片显示容器-->
                                        <div class="move-view"></div>
                                        <!--跟随鼠标移动的盒子-->
                                    </div>
                                    <div class="magnifier-assembly">
                                        <div class="magnifier-btn">
                                            <span class="magnifier-btn-left">&lt;</span>
                                            <span class="magnifier-btn-right">&gt;</span>
                                        </div>
                                        <!--按钮组-->
                                        <div class="magnifier-line">
                                            <ul class="clearfix animation03">
                                                <li v-for="item in goodsData.imglist" :key='item.id'>
                                                    <div class="small-img">
                                                        <img :src="item.original_path" />
                                                    </div>
                                                </li>
                                                
                                            </ul>
                                        </div>
                                        <!--缩略图-->
                                    </div>
                                    <div class="magnifier-view"></div>
                                    <!--经过放大的图片显示容器-->
                                </div>
                            </div>

                            <!-- 商品详细代码 -->
                            <div class="goods-spec">
                                <h1>{{goodsData.goodsinfo.title}}</h1>
                                <p class="subtitle">{{goodsData.goodsinfo.sub_title}}</p>
                                <div class="spec-box">
                                    <dl>
                                        <dt>货号</dt>
                                        <dd id="commodityGoodsNo">{{goodsData.goodsinfo.goods_no}}</dd>
                                    </dl>
                                    <dl>
                                        <dt>市场价</dt>
                                        <dd>
                                            <s id="commodityMarketPrice">¥{{goodsData.goodsinfo.market_price}}</s>
                                        </dd>
                                    </dl>
                                    <dl>
                                        <dt>销售价</dt>
                                        <dd>
                                            <em id="commoditySellPrice" class="price">¥{{goodsData.goodsinfo.sell_price}}</em>
                                        </dd>
                                    </dl>
                                </div>
                                <div class="spec-box">
                                    <dl>
                                        <dt>购买数量</dt>
                                        <dd>
                                            <div class="stock-box">
                                                <el-input-number v-model="goodsCount" :min="1" :max="goodsData.goodsinfo.stock_quantity" ></el-input-number>
                                            </div>
                                            <span class="stock-txt">
                                                库存
                                                <em id="commodityStockNum">{{goodsData.goodsinfo.stock_quantity}}</em>件
                                            </span>
                                        </dd>
                                    </dl>
                                    <dl>
                                        <dd>
                                            <div id="buyButton" class="btn-buy">
                                                <button class="buy">立即购买</button>
                                                <button @click="addToShopCart" ref="addToShopCartRef" class="add">加入购物车</button>
                                            </div>
                                        </dd>
                                    </dl>
                                </div>
                            </div>
                        </div>


                        <!-- 评论部分内容 -->
                        <div id="goodsTabs" class="goods-tab bg-wrap">
                            <div id="tabHead" class="tab-head" style="position: static; top: 517px; width: 925px;">
                                <ul>
                                    <li @click="isShowIntroduction = true">
                                        <a href="javascript:;" :class="{selected :isShowIntroduction}">商品介绍</a>
                                    </li>
                                    <li @click="isShowIntroduction = false">
                                        <a href="javascript:;" :class="{selected : !isShowIntroduction}">商品评论</a>
                                    </li>
                                </ul>
                            </div>
                            <div v-if="isShowIntroduction" class="tab-content entry" style="display: block;">
                                <p v-html="goodsData.goodsinfo.content"></p>
                            </div>
                            <div v-if="!isShowIntroduction" class="tab-content" style="display: block;">

                                <!-- 发布评论部分 -->
                                <div class="comment-box">
                                    <div id="commentForm" name="commentForm"
                                        class="form-box">
                                        <div class="avatar-box">
                                            <i class="iconfont icon-user-full"></i>
                                        </div>
                                        <div class="conn-box">
                                            <div class="editor">
                                                <textarea id="txtContent" ref="txtContentRef" sucmsg=" " datatype="*10-1000" nullmsg="请填写评论内容!"></textarea>
                                                <span class="Validform_checktip"></span>
                                            </div>
                                            <div class="subcon">
                                                <input id="btnSubmit" name="submit" type="submit" value="提交评论" class="submit" @click="postComment">
                                                <span class="Validform_checktip"></span>
                                            </div>
                                        </div>
                                    </div>

                                    <!-- 查看评论部分 -->
                                    <ul id="commentList" class="list-box">
                                        <p v-if="commentInfo.totalcount === 0"  style="margin: 5px 0px 15px 69px; line-height: 42px; text-align: center; border: 1px solid rgb(247, 247, 247);">暂无评论,快来抢沙发吧!</p>
                                        <li v-for="item in commentInfo.message" :key="item.id">
                                            <div class="avatar-box">
                                                <i class="iconfont icon-user-full"></i>
                                            </div>
                                            <div class="inner-box">
                                                <div class="info">
                                                    <span>{{item.user_name}}</span>
                                                    <span>{{item.reply_time | dateFmt}}</span>
                                                </div>
                                                <p>{{item.content}}</p>
                                            </div>
                                            
                                        </li>
                                    </ul>

                                    <!-- 分页部分 -->
                                    <div class="page-box" style="margin: 5px 0px 0px 62px;">
                                        <el-pagination
                                            @size-change="handleSizeChange"
                                            @current-change="handleCurrentChange"
                                            :current-page="pageIndex"
                                            :page-sizes="[5, 10, 15, 100]"
                                            :page-size="pageSize"
                                            layout="total, sizes, prev, pager, next, jumper"
                                            :total="commentInfo.totalcount">
                                            </el-pagination>
                                    </div>
                                </div>
                            </div>
                        </div>
                    </div>

                    <!-- 右边商品列表 -->
                    <div class="left-220">
                        <div class="bg-wrap nobg">
                            <div class="sidebar-box">
                                <h4>推荐商品</h4>
                                <ul class="side-img-list">
                                    <li v-for="item in goodsData.hotgoodslist" :key="item.id">
                                        <div class="img-box">
                                            <router-link :to="'/goodsinfo/'+item.id" class="">
                                                <img :src="item.img_url">
                                            </router-link>
                                        </div>
                                        <div class="txt-box">
                                            <router-link :to="'/goodsinfo/'+item.id" class="">{{item.title}}</router-link>
                                            <span>{{item.add_time | dateFmt}}</span>
                                        </div>
                                    </li>

                                </ul>
                            </div>
                        </div>
                    </div>
                </div>
            </div>
        </div>
        <!-- 被动画元素 -->
    <transition
        v-on:before-enter="beforeEnter"
        v-on:enter="enter"
        v-on:after-enter="afterEnter">
        <div ref="animateDivRef" v-show="isShow" v-if="goodsData.imglist" class="animateDiv">
            <img :src="goodsData.imglist[0].original_path" alt="">
        </div>
    </transition>
    </div>

</template>

<style scoped>
/* 放大镜插件 */
@import "../../statics/site/jqurey_plugins/jqimgzoom/css/magnifier.css";

.animateDiv {
  position: absolute;
  top: 0px;
  left: 0px;
  width: 50px;
  height: 50px;
}

.animateDiv img {
  width: 100%;
  height: 100%;
}
</style>


<script>
//导入放大镜的插件
import "../../statics/site/jqurey_plugins/jqimgzoom/js/magnifier.js";

// 导入affix
import { Affix } from "iview";

export default {
  components: { Affix },
  data() {
    return {
      goodsData: [],
      goodsCount: 1, //商品数量
      isShowIntroduction: true,
      pageIndex: 1, //当前第几页,默认是1
      pageSize: 5, //每页显示的条数,默认是10
      commentInfo: [],
      addToShopCartOffset: null, //加入购物车按钮的偏移量【开始】
      shoppingCartCountOffset: null, //购买数量的偏移量【结束】
      isShow: false
    };
  },
  created() {
    this.goodsinfo();
    this.getCommentInfoData();
  },
  watch: {
    $route: function(newValue, oldValue) {
      // 重新获取数据
      this.goodsinfo();
      this.getCommentInfoData();
    }
  },
  updated() {
    //放大镜中的JQ激活代码
    $("#magnifier1").imgzoon({ magnifier: "#magnifier1" });
  },
  methods: {
    //商品介绍的请求
    goodsinfo() {
      const url = `site/goods/getgoodsinfo/${this.$route.params.goodsid}`;
      this.$axios.get(url).then(response => {
        this.goodsData = response.data.message;

        setTimeout(() => {
          //获取动画的偏移量
          this.addToShopCartOffset = $(this.$refs.addToShopCartRef).offset();
          //设置动画元素的位置
          $(this.$refs.animateDivRef).offset(this.addToShopCartOffset);

          //获取动画结束时候的偏移量
          this.shoppingCartCountOffset = $("#shoppingCartCount").offset();
          console.log(this.shoppingCartCountOffset)
        }, 200);
      });
    },
    //获取验证码的请求
    getCommentInfoData() {
      const url = `site/comment/getbypage/goods/${
        this.$route.params.goodsid
      }?pageIndex=${this.pageIndex}&pageSize=${this.pageSize}`;

      this.$axios.get(url).then(response => {
        this.commentInfo = response.data;
      });
    },
    handleSizeChange(pageSize) {
      this.pageSize = pageSize;
      this.pageIndex = 1;
      this.getCommentInfoData();
    },
    handleCurrentChange(pageIndex) {
      this.pageIndex = pageIndex;
      this.getCommentInfoData();
    },
    //提交评论部分
    postComment() {
      const textContent = this.$refs.txtContentRef;
      console.log(txtContent);

      if (textContent.value.trim().length === 0) {
        this.$message({
          message: "评论不能为空!",
          type: "warning"
        });
        return;
      }

      //发起评论请求
      this.$axios
        .post(
          `site/validate/comment/post/goods/${this.$route.params.goodsid}`,
          { commenttxt: textContent.value }
        )
        .then(response => {
          if (response.data.status === 0) {
            //先请空文本框你面的内容
            txtContent.value = "";
            this.$message({
              message: "评论成功",
              type: "success"
            });

            //从新加载第一页数据
            this.pageIndex = 1;
            this.getCommentInfoData();
          }
        });
    },
    //加入购物车
    addToShopCart() {
      this.isShow = true; 
      const goods = {
          goodsId:this.$route.params.goodsid,
          count:this.goodsCount
      }
      this.$store.commit('addGoods',goods)
    },
    beforeEnter: function(el) {
      el.style.left = `${this.addToShopCartOffset.left}px`;
      el.style.top = `${this.addToShopCartOffset.top}px`;
      el.style.transform = `scale(1)`;
    },
    // 此回调函数是可选项的设置
    // 与 CSS 结合时使用
    enter: function(el, done) {
      el.style.transition = `all 0.5s`;
        
      el.offsetHeight;
      el.style.left = this.shoppingCartCountOffset.left+'px';
      el.style.top = this.shoppingCartCountOffset.top+'px';
      el.style.transform = `scale(0.5)`;
      done();
    },
    afterEnter: function(el) {
      this.isShow = false;
    }
  }
};
</script>


goodslist.vue


<template>
    <div>
        <!-- 1.顶部面包屑 -->
        <div class="section">
            <div class="location">
                <span>当前位置:</span>
                <a href="#/" class="router-link-active">首页</a> &gt;
                <a href="#/site/goodslist" class="router-link-exact-active router-link-active">购物商城</a>
            </div>
        </div>

        <!-- 2.topData内容 -->
        <!-- 2.1左边列表部分渲染 -->
        <div class="section">
            <div class="wrapper">
                <div class="wrap-box">
                    <div class="left-220" style="margin: 0px;">
                        <div class="banner-nav">
                            <ul>
                                <li v-for="item in topData.catelist" :key="item.id">
                                    <h3>
                                        <i class="iconfont icon-arrow-right"></i>
                                        <span>{{item.title}}</span>
                                        <p>
                                            <span v-for="subitem in item.subcates" :key="subitem.id">
                                                {{subitem.title}}&nbsp;
                                            </span>
                                        </p>
                                    </h3>
                                    <div class="item-box">
                                        <dl>
                                            <dt>
                                                <a href="/goods/40.html">{{item.title}}}</a>
                                            </dt>
                                            <dd>
                                                <a v-for="subitem in item.subcates" :key="subitem.id" href="/goods/43.html">{{subitem.title}}</a>
                                                <!-- <a href="/goods/43.html">摄影摄像</a>
                                                <a href="/goods/43.html">存储设备</a> -->
                                            </dd>
                                        </dl>
                                    </div>
                                </li>
  
                            </ul>
                        </div>
                    </div>
                    <!--2.2幻灯片部分-->
                    <div class="left-705">
                        <div class="banner-img">
                            <div id="focus-box" class="focus-box">
                               <el-carousel height='341px' arrow="always">
                                    <el-carousel-item v-for="item in topData.sliderlist" :key="item.id">
                                    <img :src="item.img_url">
                                    </el-carousel-item>
                                </el-carousel>          </div>
                        </div>
                    </div>
                    <!--2.3右边列表部分渲染 -->
                    <div class="left-220">
                        <ul class="side-img-list">
                            <li  v-for="(item,index) in topData.toplist" :key="item.id">
                                <div class="img-box">
                                    <label>{{index + 1}}</label>
                                    <img :src="item.img_url">
                                </div>
                                <div class="txt-box">
                                    <a href="/goods/show-98.html">{{item.title}}</a>
                                    <span>{{item.add_time | dateFmt}}</span>
                                </div>
                            </li>
                        </ul>
                    </div>
                   
                </div>
            </div>
        </div>



        <!-- 3.商品列表部分 -->
        <div class="section" v-for="item in goodsList" :key="item.level1cateid">
            <div class="main-tit">
                <h2>{{item.catetitle}}</h2>
                <p>
                    <a v-for="subitem in item.level2catelist" :key="subitem.subcateid" href="/goods/43.html">{{subitem.subcatetitle}}</a>
                    <a href="/goods/40.html">更多
                        <i>+</i>
                    </a>
                </p>
            </div>
            <div class="wrapper clearfix">
                <div class="wrap-box">
                    <ul class="img-list">

                        <li v-for="subitem in item.datas" :key="subitem.artID">
                            <router-link :to="'/goodsinfo/'+subitem.artID" class="">
                                <div class="img-box">
                                    <img v-lazy="subitem.img_url">
                                </div>
                                <div class="info">
                                    <h3>{{subitem.artTitle}}</h3>
                                    <p class="price">
                                        <b>{{subitem.market_price}}</b>元</p>
                                    <p>
                                        <strong>库存 {{subitem.stock_quantity}}</strong>
                                        <span>市场价:
                                            <s>{{subitem.sell_price}}</s>
                                        </span>
                                    </p>
                                </div>
                            </router-link>
                        </li>

                    </ul>
                </div>
            </div>
        </div>
    </div>
</template>

<style scoped>
/* 给轮播图设置样式 */
.el-carousel__container img {
  width: 100%;
  height: 100%;
}
</style>

<script>
//1.发起请求
//2.页面渲染
// import axios from "axios";
//导入这个已经在main里面做了处理

export default {
  data() {
    return {
      topData: {},
      goodsList:{}
    };
  },
  created() {
    this.getTopData();
    this.getGoodsGroupData()
  },
  methods: {
    // 轮播图那一部分的请求
    getTopData() {
      const url = `site/goods/gettopdata/goods`;

      this.$axios.get(url).then(response => {
        this.topData = response.data.message;
      })
    },
     // 商品列表部分请求
    getGoodsGroupData(){
        const url = `site/goods/getgoodsgroup`
        this.$axios.get(url).then(response=>{
            this.goodsList = response.data.message
        })
    }
  }
};
</script>

order.vue

<template>
    <div>
        <div class="section">
            <div class="location">
                <span>当前位置:</span>
                <a href="/index.html">首页</a> &gt;
                <a href="/cart.html">购物车</a>
            </div>
        </div>

        <div class="section">
            <div class="wrapper">
                <div class="bg-wrap">
                    <!--购物车头部-->
                    <div class="cart-head clearfix">
                        <h2>
                            <i class="iconfont icon-cart"></i>我的购物车</h2>
                        <div class="cart-setp">
                            <ul>
                                <li class="first active">
                                    <div class="progress">
                                        <span>1</span>
                                        放进购物车
                                    </div>
                                </li>
                                <li class="active">
                                    <div class="progress">
                                        <span>2</span>
                                        填写订单信息
                                    </div>
                                </li>
                                <li class="last">
                                    <div class="progress">
                                        <span>3</span>
                                        支付/确认订单
                                    </div>
                                </li>
                            </ul>
                        </div>
                    </div>
                    <!--购物车头部-->
                    <div class="cart-box">
                        <h2 class="slide-tit">
                            <span>1、收货地址</span>
                        </h2>
                        <div id="orderForm" name="orderForm" url="">

                            <el-form :model="order" :rules="rules" ref="orderForm" label-width="150px" class="orm-box address-info">
                                <el-form-item label="收件人姓名" prop="accept_name" style="width:500px">
                                    <el-input v-model="order.accept_name"></el-input>
                                </el-form-item>
                                <el-form-item label="所属地区" prop="area">
                                    <v-distpicker :province='order.area.province.value' :city='order.area.city.value' :area='order.area.area.value' @selected='onSelected'></v-distpicker>
                                </el-form-item>
                                <el-form-item label="详细地址" prop="address" style="width:500px">
                                    <el-input v-model="order.address"></el-input>
                                </el-form-item>
                                <el-form-item label="手机号码" prop="mobile" style="width:500px">
                                    <el-input v-model="order.mobile"></el-input>
                                </el-form-item>
                                <el-form-item label="电子邮箱" style="width:500px"> 
                                    <el-input v-model="order.email"></el-input>
                                </el-form-item>
                                <el-form-item label="邮政编码" style="width:500px">
                                    <el-input v-model="order.post_code"></el-input>
                                </el-form-item>
                            </el-form>

                            <h2 class="slide-tit">
                                <span>2、支付方式</span>
                            </h2>
                            <ul class="item-box clearfix">
                                <!--取得一个DataTable-->
                                <li>
                                    <label>
                                        <el-radio v-model="order.payment_id" label="6">在线支付</el-radio>
                                        <em>手续费:0.00元</em>
                                    </label>
                                </li>
                            </ul>
                            <h2 class="slide-tit">
                                <span>3、配送方式</span>
                            </h2>
                            <ul class="item-box clearfix">
                                <!--取得一个DataTable-->
                                <li>
                                    <label>
                                        <el-radio-group v-model="order.express_id">
                                            <el-radio label="1" @change="order.expressMoment=20">顺丰
                                                <em>费用:20.00元</em>
                                            </el-radio>
                                            <el-radio label="2" @change="order.expressMoment=10">圆通
                                                <em>费用:10.00元</em>
                                            </el-radio>
                                            <el-radio label="3" @change="order.expressMoment=8">韵达
                                                <em>费用:8.00元</em>
                                            </el-radio>
                                        </el-radio-group>

                                        <span class="Validform_checktip"></span>
                                    </label>
                                </li>
                            </ul>
                            <h2 class="slide-tit">
                                <span>4、商品清单</span>
                            </h2>
                            <div class="line15"></div>
                            <table width="100%" border="0" align="center" cellpadding="8" cellspacing="0" class="cart-table">
                                <tbody>
                                    <tr>
                                        <th colspan="2" align="left">商品信息</th>
                                        <th width="84" align="left">单价</th>
                                        <th width="84" align="center">购买数量</th>
                                        <th width="104" align="left">金额(元)</th>
                                    </tr>
                                    <tr v-for="item in goodsList" :key="item.id">
                                        <td width="68">
                                            <a target="_blank" href="/goods/show-89.html">
                                                <img :src='item.img_url' class="img">
                                            </a>
                                        </td>
                                        <td>
                                            <a target="_blank" href="/goods/show-89.html">小米(Mi)小米Note 16G双网通版</a>
                                        </td>
                                        <td>
                                            <span class="red">
                                                ¥{{item.sell_price}}
                                            </span>
                                        </td>
                                        <td align="center">{{item.buycount}}</td>
                                        <td>
                                            <span class="red">
                                                ¥{{item.sell_price * item.buycount}}
                                            </span>
                                        </td>
                                    </tr>
                                </tbody>
                            </table>
                            <div class="line15"></div>
                            <h2 class="slide-tit">
                                <span>5、结算信息</span>
                            </h2>
                            <div class="buy-foot clearfix">
                                <div class="left-box">
                                    <dl>
                                        <dt>订单备注(100字符以内)</dt>
                                        <dd>
                                            <textarea name="message" class="input" style="height:35px;" v-model="order.message">
                                            </textarea>
                                        </dd>
                                    </dl>
                                </div>
                                <div class="right-box">
                                    <p>
                                        商品
                                        <label class="price">{{totalCount}}</label> 件&nbsp;&nbsp;&nbsp;&nbsp; 商品金额:¥
                                        <label id="goodsAmount" class="price">{{totalPrice}}</label> 元&nbsp;&nbsp;&nbsp;&nbsp;
                                    </p>
                                    <p>
                                        运费:¥
                                        <label id="expressFee" class="price">{{order.expressMoment}}</label> 元
                                    </p>
                                    <p class="txt-box">
                                        应付总金额:¥
                                        <label id="totalAmount" class="price">{{getTotalAmount}}</label>
                                    </p>
                                    <p class="btn-box">
                                        <a class="btn button" href="/cart.html">返回购物车</a>
                                        <input id="btnSubmit" @click="goOrder" name="btnSubmit" type="submit" value="确认提交" class="btn submit">
                                    </p>
                                </div>
                            </div>
                        </div>
                    </div>
                </div>
            </div>
        </div>

    </div>
</template>


<script>
import VDistpicker from "v-distpicker";

export default {
    components: { VDistpicker },
    computed:{ //计算属性
        getTotalAmount(){
            this.order.goodsAmount = this.order.expressMoment + this.totalPrice
            return  this.order.expressMoment + this.totalPrice
        }
    },
    data() {
        return {
            order: {
                area: {
                    // 所属地区
                    province: {
                        code: "440000",
                        value: "广东省"
                    },
                    city: {
                        code: "440300",
                        value: "深圳市"
                    },
                    area: {
                        code: "440306",
                        value: "宝安区"
                    }
                },
                accept_name:'刘德华',
                address: '中粮商务公园', // 详细地址
                mobile: '13812345678', // 手机号码
                email: 'meilaoban@126.com', // 电子邮箱
                post_code: '518101', //邮政编码
                payment_id: '6', //支付方式,在线支付
                express_id: '1', //快递方式 1 顺丰 2 圆通  3 韵达
                expressMoment:20, // 快递费用
                message:'请快点发货',
                goodsAmount: 0  //商品总额
            },
            rules: {
                accept_name: [
                    {
                        required: true,
                        message: "姓名不能为空噢!",
                        trigger: "blur"
                    }
                ],
                area: [
                    {
                        required: true,
                        message: "请选择所属区域",
                        trigger: "blur"
                    }
                ],
                address: [
                    {
                        required: true,
                        message: "地址不能为空噢!",
                        trigger: "blur"
                    }
                ],
                mobile: [
                    {
                        required: true,
                        message: "手机号码不能为空噢!",
                        trigger: "blur"
                    }
                ]
            },
            radio: "6",
            radio2: 3,
            goodsList: [], //商品列表信息
            totalCount: 0, //总件数
            totalPrice: 0 //总价格
        };
    },
    created() {
        this.getGoodsList();
    },
    methods: {
        getGoodsList() {
            const url = `site/validate/order/getgoodslist/${
                this.$route.query.ids
            }`;
            //获取本地数据
            const localGoods = JSON.parse(
                localStorage.getItem("goods") || "{}"
            );
            //把地址栏上的id值赋值给goods
            this.order.goodsids = this.$route.query.ids

            //把结算几个反倒对象中去
            const cargoodsobj ={}

            const ids = this.order.goodsids.split(',')
            ids.forEach(key=>{
                //遍历取得新的数量
                cargoodsobj[key]=localGoods[key]
            })
            this.order.cargoodsobj=cargoodsobj
            //发起请求
            this.$axios.get(url).then(response => {
                //这里算出总价格,总数量
                response.data.message.forEach(goods => {
                    goods.buycount = localGoods[goods.id];
                    this.totalCount += goods.buycount;
                    this.totalPrice += goods.buycount * goods.sell_price;
                });
                this.goodsList = response.data.message;
            });
        },
          onSelected(data){
            this.order.area = data
        },
        goOrder(){  
            this.$refs.orderForm.validate((valid)=>{
                if(valid){
                    const url = 'site/validate/order/setorder'

                    this.$axios.post(url,this.order).then(response=>{
                        if(response.data.status === 0){
                           
                           this.$router.push({path:'/pay',query:{orderid:response.data.message.orderid}})
                           console.log(response.data.message.orderid);
                           
                           //删除本地已经下单的商品
                           const ids = this.order.goodsids.split(',')
                           ids.forEach(id=>{
                               this.$store.commit('deleteGoodsById',id)
                           })
                        }
                    })
                }else{
                    this.$message.error('信息必须填写完整!')
                }
            })
        }
      
    }
};
</script>

pay.vue

<template>
    <div>
        <div class="section">
            <div class="location">
                <span>当前位置:</span>
                <a href="/index.html">首页</a> &gt;
                <a href="javascript:;">支付中心</a>
            </div>
        </div>

        <div class="section">
            <div class="wrapper">
                <div class="bg-wrap">
                    <div class="nav-tit pay">
                        <a href="javascript:;" class="selected">支付中心</a>
                    </div>
                    <div class="form-box payment">
                        <div class="el-row">
                            <div class="el-col el-col-16">
                                <div class="el-row">
                                    <div class="el-col el-col-12">
                                        <dl class="form-group">
                                            <dt>订 单 号:</dt>
                                            <dd>{{orderInfo.order_no}}</dd>
                                        </dl>
                                    </div>
                                    <div class="el-col el-col-12">
                                        <dl class="form-group">
                                            <dt>收货人姓名:</dt>
                                            <dd>{{orderInfo.accept_name}}</dd>
                                        </dl>
                                    </div>
                                </div>
                                <div class="el-row">
                                    <div class="el-col el-col-12">
                                        <dl class="form-group">
                                            <dt>送货地址:</dt>
                                            <dd>{{orderInfo.area}},{{orderInfo.address}}
                                            </dd>
                                        </dl>
                                    </div>
                                    <div class="el-col el-col-12">
                                        <dl class="form-group">
                                            <dt>手机号码:</dt>
                                            <dd>{{orderInfo.mobile}}</dd>
                                        </dl>
                                    </div>
                                </div>
                                <div class="el-row">
                                    <div class="el-col el-col-12">
                                        <dl class="form-group">
                                            <dt>支付金额:</dt>
                                            <dd>{{orderInfo.order_amount}} 元</dd>
                                        </dl>
                                    </div>
                                    <div class="el-col el-col-12">
                                        <dl class="form-group">
                                            <dt>支付方式:</dt>
                                            <dd>在线支付</dd>
                                        </dl>
                                    </div>
                                </div>
                                <div class="message">
                                    <span>备&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;注:</span>
                                    <span>{{orderInfo.message}}</span>
                                </div>
                            </div>
                            <div class="el-col el-col-8">
                                <div id="container2">
                                    <dzh-qrcode :url="url" img_url="https://gss2.bdstatic.com/9fo3dSag_xI4khGkpoWK1HF6hhy/baike/c0%3Dbaike80%2C5%2C5%2C80%2C26/sign=37a542f55ada81cb5aeb8b9f330fbb73/d6ca7bcb0a46f21f24c2f452fd246b600c33ae39.jpg"></dzh-qrcode>
                                </div>
                            </div>
                        </div>
                    </div>
                </div>
            </div>
        </div>
    </div>
</template>
<script>

import DZHQRCode from 'dzh-qrcode'

export default {
    components: { 'dzh-qrcode': DZHQRCode },
    data() {
        return {
            orderInfo: [],
            tiemid: -1,
            url: ""
        };
    },
    created() {
        this.getOrderInfo();
        this.getOrderStatus();
    },
    beforeDestroy() {
        clearInterval(this.tiemid);
    },
    methods: {
        //页面渲染部分
        getOrderInfo() {
            //先看看有没有支付成功,有就跳转.
            const url = `site/validate/order/getorder/${
                this.$route.query.orderid
            }`;
            
            this.$axios.get(url).then(response => {
                //发起请求.要是后台回来的数据为2就是支付成功了,要是支付成功了就要跳转到支付成功的页面
                if (response.data.message[0].status === 2) {
                    this.$router.push({path:"/paySuccess"})
                    
                } else {
                    //反之就渲染页面,发起对某笔订单进行支付的请求
                    this.orderInfo = response.data.message[0]
                    this.url = `http://47.106.148.205:8899/site/validate/pay/alipay/${
                        this.$route.query.orderid
                    }`
                
                }
            });
        }, //轮询订单状态,弄一个计时器,定时请求看看有没有支付成功,要是支付成功就跳转得到成功页面
        getOrderStatus() {
            this.tiemid = setInterval(() => {
                const url = `site/validate/order/getorder/${this.$route.query.orderid}`

                this.$axios.get(url).then(response => {
                    if (response.data.message[0].status === 2) {
                        this.$router.push({ path: "/paySuccess" });
                    }
                });
            }, 3000);
        }
    }
};
</script>


paySuccess.vue

<template>
    <div class="center">
        <div class="el-row">
            <div class="el-col el-col-24">
                <div class="comp">
                    <div class="goodsinfo routeanimate">
                        <div class="section">
                            <div class="location">
                                <span>当前位置:</span>
                                <a href="/index.html">首页</a> &gt;
                                <a href="javascript:;">支付中心</a>
                            </div>
                        </div>
                        <div class="section">
                            <div class="wrapper">
                                <div class="bg-wrap">
                                    <div class="nav-tit pay">
                                        <a href="javascript:;" class="selected">支付中心</a>
                                    </div>
                                    <div class="msg-tips">
                                        <div class="icon">
                                            <i class="iconfont icon-check"></i>
                                        </div>
                                        <div class="info">
                                            <strong>订单已支付成功!</strong>
                                            <p>您可以点击这里进入
                                                <a href="/user/center/index.html">会员中心</a>查看订单状态!</p>
                                            <p>如有其它问题,请立即与我们客服人员联系。</p>
                                        </div>
                                    </div>
                                </div>
                            </div>
                        </div>
                    </div>
                </div>
            </div>
        </div>
    </div>
</template>

shopcart.vue

<template>
    <div>
        <div class="section">
            <div class="location">
                <span>当前位置:</span>
                <a href="/index.html">首页</a> &gt;
                <a href="/cart.html">购物车</a>
            </div>
        </div>
        <div class="section">
            <div class="wrapper">
                <div class="bg-wrap">
                    <!--购物车头部-->
                    <div class="cart-head clearfix">
                        <h2>
                            <i class="iconfont icon-cart"></i>我的购物车</h2>
                        <div class="cart-setp">
                            <ul>
                                <li class="first active">
                                    <div class="progress">
                                        <span>1</span>
                                        放进购物车
                                    </div>
                                </li>
                                <li>
                                    <div class="progress">
                                        <span>2</span>
                                        填写订单信息
                                    </div>
                                </li>
                                <li class="last">
                                    <div class="progress">
                                        <span>3</span>
                                        支付/确认订单
                                    </div>
                                </li>
                            </ul>
                        </div>
                    </div>
                    <!--购物车头部-->
                    <!--商品列表-->
                    <div class="cart-box">
                        <input id="jsondata" name="jsondata" type="hidden">
                        <table width="100%" align="center" class="cart-table" border="0" cellspacing="0" cellpadding="8">
                            <tbody>
                                <tr>
                                    <th width="48" align="center">
                                        <a>选择</a>
                                    </th>
                                    <th align="left" colspan="2">商品信息</th>
                                    <th width="84" align="left">单价</th>
                                    <th width="104" align="center">数量</th>
                                    <th width="104" align="left">金额(元)</th>
                                    <th width="54" align="center">操作</th>
                                </tr>

                                <tr v-for="(item,index) in goodsList" :key="item.id">
                                    <td width="48" align="center">
                                        <el-switch v-model="item.isSelected" active-color="#409eff" inactive-color="#555555">
                                        </el-switch>
                                    </td>
                                    <td align="left" colspan="2">
                                        <div style="display:flex;align-items:center;"><img :src="item.img_url" alt="" style="width: 50px; height: 50px; margin-right: 10px;">
                                            <span>{{item.title}}</span>
                                        </div>
                                    </td>
                                    <td width="84" align="left">{{item.sell_price}}</td>
                                    <td width="104" align="center">
                                        <inputnumber :initCount="item.buycount" :goodsId="item.id" @goodsCountChange="getChangedGoods" />
                                    </td>
                                    <td width="104" align="left">{{item.sell_price * item.buycount}}</td>
                                    <td width="54" align="center">
                                        <a @click ="deleteGoods(item.id,index)">删除</a>
                                    </td>
                                </tr>

                                <tr v-if="goodsList.length === 0 ">
                                    <td colspan="10">
                                        <div class="msg-tips">
                                            <div class="icon warning">
                                                <i class="iconfont icon-tip"></i>
                                            </div>
                                            <div class="info">
                                                <strong>购物车没有商品!</strong>
                                                <p>您的购物车为空,
                                                    <a href="/index.html">马上去购物</a>吧!</p>
                                            </div>
                                        </div>
                                    </td>
                                </tr>
                                <tr>
                                    <th align="right" colspan="8">
                                        已选择商品
                                        <b class="red" id="totalQuantity">{{getTotalCount}}</b> 件 &nbsp;&nbsp;&nbsp; 商品总金额(不含运费):
                                        <span class="red">¥</span>
                                        <b class="red" id="totalAmount">{{getTotalPrice}}</b>元
                                    </th>
                                </tr>
                            </tbody>
                        </table>
                    </div>
                    <!--/商品列表-->
                    <!--购物车底部-->
                    <div class="cart-foot clearfix">
                        <div class="right-box">
                            <button class="button" @click="continueBuy">继续购物</button>
                            <button class="submit" @click="goToOrder">立即结算</button>
                        </div>
                    </div>
                    <!--购物车底部-->
                </div>
            </div>
        </div>

    </div>
</template>


<script>
import { getLocalGoods } from "../../common/localStorageTool.js";

import inputnumber from "../subcomponents/inputnumber.vue";

export default {
    //局部注册
    components: { inputnumber },
    data() {
        return {
            goodsList: [],
            value2: true
        }
    },
    computed: {
        //商品总数
        getTotalCount() {
            let totalCount = 0;
            this.goodsList.forEach(goods => {
                if (goods.isSelected) {
                    totalCount += goods.buycount;
                }
            });
            console.log( this.goodsList);
            
            return totalCount;
        },
        getTotalPrice() {
            let totalPrice = 0;
            this.goodsList.forEach(goods => {
                if (goods.isSelected) {
                    totalPrice += goods.sell_price * goods.buycount;
                }
            });
            return totalPrice;
        }
    },
    created() {
        this.getGoodsListData();
    },
    methods: {
        getGoodsListData() {
            //1.获取商品列表,返回的是一个对象 {87:1,88:3}
            const localGoods = getLocalGoods();
            // console.log(localGoods);

            //2.获取对象中的key,放到数组中去
            const keys = Object.keys(localGoods);
            //3.判断,要是获取的key值为0则是没有数据,打断
            if (keys.length === 0) return;
            //发起请求,获取数据,渲染.
            const url = `site/comment/getshopcargoods/${keys.join(",")}`;

            this.$axios.get(url).then(response => {
                response.data.message.forEach(goods => {
                    // console.log(goods, localGoods[goods.id]);

                    goods.buycount = localGoods[goods.id];
                    goods.isSelected = true;
                });
                this.goodsList = response.data.message;
            });
        },
        getChangedGoods(updateGoods) {
            this.goodsList.forEach(goods => {
                if (goods.id === updateGoods.goodsId) {
                    goods.buycount = updateGoods.count;
                }
            })
            const goods = {
                goodsId : updateGoods.goodsId,
                count : updateGoods.count
            }

            this.$store.commit('updateGoods',goods)

        },
        //删除商品,导入ID,下标
        deleteGoods(goodsId,index){
            this.goodsList.splice(index,1)
            
            //在调用mutations的deleteGoodsById
            this.$store.commit('deleteGoodsById',goodsId)
        },
        //继续购物
        continueBuy(){
            this.$router.push({name:'goodslist'})
        },
        goToOrder(){
            const ids = []

            this.goodsList.forEach(goods =>{
                if(goods.isSelected){
                    ids.push(goods.id)
                }
            })

            if(ids.length ===0){
                this.$message({
                    message:'至少要选择一个商品结算啦!',
                    type:"warning"
                })
                return
            }

            //然后要跳转到下订单页面组件去
            this.$router.push({path:'/order',query:{ids:ids.join(',')}})
        }
    }
};
</script>

inputnumber.vue

<template>
    <div>
        <div class="left" @click="substrict">-</div>
        <div class="middle">{{count}}</div>
        <div class="right" @click="add">+</div>
    </div>
</template>

<script>
export default {
    data(){
        return {
            count:1
        }
    },
    props:{
        initCount:Number,
        goodsId:Number
    },
    created(){
        this.count = this.initCount
    },
    methods:{
        substrict(){
            if(this.count <=1)
            return

            this.count--
            this.notify()
        },
        add(){
            this.count++
            this.notify()
        },
        notify(){
            //子组件的值传给父组件
            const updateGoods = {
                goodsId:this.goodsId,
                count: this.count
            }
            console.log(updateGoods);
            
            //点击自定义事件,传递载荷
            this.$emit('goodsCountChange',updateGoods)
        }
    }
};
</script>

<style scoped>
    .left,.middle,.right{
        display: inline-block;
        border: 1px solid rgba(92,92,92,0.3);
        width:30px;
        height: 30px;
        text-align: center;
        line-height: 30px;
    }
    .middle{
        width:35px;
    }
</style>

checkOrder.vue

<template>
    <div class="center">
        <div class="el-row">
            <div class="el-col el-col-24">
                <div class="comp">
                    <div class="tmpl routeanimate">
                        <div class="section">
                            <div class="location">
                                <span>当前位置:</span>
                                <a href="/index.html">首页</a> &gt;
                                <a href="#/site/member/center" class="">会员中心</a>&gt;
                                <a href="#/site/member/orderlist" class="">我的订单</a>
                            </div>
                        </div>
                        <div class="section clearfix">
                            <div class="left-260">
                                <div class="bg-wrap">
                                    <div class="avatar-box">
                                        <a href="/user/center/avatar.html" class="img-box">
                                            <i class="iconfont icon-user-full"></i>
                                        </a>
                                        <h3>

                                            ivanyb

                                        </h3>
                                        <p>
                                            <b>注册会员</b>
                                        </p>
                                    </div>
                                    <div class="center-nav">
                                        <ul>
                                            <li>
                                                <h2>
                                                    <i class="iconfont icon-order"></i>
                                                    <span>订单管理</span>
                                                </h2>
                                                <div class="list">
                                                    <p>
                                                        <router-link to="/theOrder" class="">
                                                            <i class="iconfont icon-arrow-right"></i>交易订单</router-link>
                                                    </p>
                                                </div>
                                            </li>
                                            <li>
                                                <h2>
                                                    <i class="iconfont icon-user"></i>
                                                    <span>账户管理</span>
                                                </h2>
                                                <div class="list">
                                                    <p>
                                                        <a href="#/site/member/center" class="">
                                                            <i class="iconfont icon-arrow-right"></i>账户资料</a>
                                                    </p>
                                                    <p>
                                                        <a href="#/site/member/center" class="">
                                                            <i clrouter-linkss="iconfont icon-router-linkrrow-right"></i>头像设置</a>
                                                    </p>
                                                    <p>
                                                        <a href="#/site/member/center" class="">
                                                            <i class="iconfont icon-arrow-right"></i>修改密码</a>
                                                    </p>
                                                    <p>
                                                        <a href="javascript:void(0)">
                                                            <i class="iconfont icon-arrow-right"></i>退出登录</a>
                                                    </p>
                                                </div>
                                            </li>
                                        </ul>
                                    </div>
                                </div>
                            </div>
                            <div class="right-auto">
                                <div class="bg-wrap" style="min-height: 765px;">
                                    <div class="sub-tit">
                                        <a href="javascript:void(0)" class="add">
                                            <i class="iconfont icon-reply"></i>返回</a>
                                        <ul>
                                            <li class="selected">
                                                <a href="javascript:;">查看订单</a>
                                            </li>
                                        </ul>
                                    </div>
                                    <div class="order-progress">
                                        <ul>
                                            <li class="first active">
                                                <div class="progress">下单</div>
                                                <div class="info">2017-10-25 21:38:15</div>
                                            </li>
                                            <li class="">
                                                <div class="progress">已付款</div>
                                                <div class="info">2017-10-25 21:38:15</div>
                                            </li>
                                            <li class="">
                                                <div class="progress">已经发货</div>
                                                <div class="info">2017-10-25 21:38:15</div>
                                            </li>
                                            <li class="last">
                                                <div class="progress">已完成</div>
                                                <div class="info">2017-10-25 21:38:15</div>
                                            </li>
                                        </ul>
                                    </div>
                                    <div class="form-box accept-box form-box1" v-if="order.orderinfo">
                                        <dl class="head form-group">
                                            <dd>
                                                订单号:{{order.orderinfo.order_no}}

                                                <router-link :to="'/pay?orderid='+order.orderinfo.id" class="btn-pay">去付款</router-link>
                                                <!---->
                                            </dd>
                                        </dl>
                                        <dl class="form-group">
                                            <dt>订单状态:</dt>
                                            <dd>
                                                {{order.orderinfo.statusName}}
                                            </dd>
                                        </dl>
                                        <dl class="form-group">
                                            <dt>快递单号:</dt>
                                            <dd>

                                            </dd>
                                        </dl>
                                        <dl class="form-group">
                                            <dt>支付方式:</dt>
                                            <dd>{{order.orderinfo.paymentTitle}}</dd>
                                        </dl>
                                    </div>
                                    <div class="table-wrap" v-if="this.order.orderinfo">
                                        <table width="100%" border="0" cellspacing="0" cellpadding="5" class="ftable">
                                            <tbody>
                                                <tr>
                                                    <th align="left">商品信息</th>
                                                    <th width="60%">名称</th>
                                                    <th width="10%">单价
                                                    </th>
                                                    <th width="10%">数量</th>
                                                    <th width="10%">金额</th>
                                                </tr>
                                                <tr  v-for="item in order.goodslist" :key="item.id">
                                                    <td width="60">
                                                        <img :src="item.imgurl" class="img">
                                                    </td>
                                                    <td align="left">
                                                        <a target="_blank" href="/goods/show-92.html">{{item.goods_title}}</a>
                                                    </td>
                                                    <td align="center">
                                                        <s>¥{{item.goods_price}}</s>
                                                        <p>¥{{item.real_price}}</p>
                                                    </td>
                                                    <td align="center">{{item.quantity}}</td>
                                                    <td align="center">¥{{item.real_price * item.quantity}}</td>
                                                </tr>
                                                <tr>
                                                    <td colspan="7" align="right">
                                                        <p>商品金额:
                                                            <b class="red">¥{{goods_price}}</b>&nbsp;&nbsp;+&nbsp;&nbsp;运费:
                                                            <b class="red">¥{{this.order.orderinfo.express_fee}}</b>
                                                        </p>
                                                        <p style="font-size: 22px;">应付总金额:
                                                            <b class="red">¥{{goods_amount}}</b>
                                                        </p>
                                                    </td>
                                                </tr>
                                            </tbody>
                                        </table>
                                    </div>
                                    <div class="form-box accept-box" v-if="this.order.orderinfo">
                                        <dl class="head form-group">
                                            <dd>收货信息</dd>
                                        </dl>
                                        <dl class="form-group">
                                            <dt>顾客姓名:</dt>
                                            <dd>{{this.order.orderinfo.accept_name}}</dd>
                                        </dl>
                                        <dl class="form-group">
                                            <dt>送货地址:</dt>
                                            <dd>{{this.order.orderinfo.area}} {{this.order.orderinfo.address}} </dd>
                                        </dl>
                                        <dl class="form-group">
                                            <dt>联系电话:</dt>
                                            <dd>{{this.order.orderinfo.mobile}}</dd>
                                        </dl>
                                        <dl class="form-group">
                                            <dt>电子邮箱:</dt>
                                            <dd>{{this.order.orderinfo.email}}</dd>
                                        </dl>
                                        <dl class="form-group">
                                            <dt>备注留言:</dt>
                                            <dd>{{this.order.orderinfo.message}}</dd>
                                        </dl>
                                    </div>
                                </div>
                            </div>
                        </div>
                    </div>
                </div>
            </div>
        </div>
    </div>
</template>
<script>
export default {
    data(){
        return{
            order:[],
            goods_price:0,//商品金额
            goods_amount:0//总价格
        }
    },
    created(){
        this.getorderdetial()
    },
    methods:{
       getorderdetial(){
           const url = `site/validate/order/getorderdetial/${this.$route.query.ids}`
           this.$axios.get(url).then(response=>{
               response.data.message.goodslist.forEach(goods=>{
                   this.goods_price += goods.real_price * goods.quantity
               })
               this.goods_amount = this.goods_price + response.data.message.orderinfo.express_fee
                this.order = response.data.message
           }) 
       }
    }
}
</script>

theOrder.vue

<template>
    <div class="center">
        <div class="el-row">
            <div class="el-col el-col-24">
                <div class="comp">
                    <div class="tmpl routeanimate">
                        <div class="section">
                            <div class="location">
                                <span>当前位置:</span>
                                <a href="/index.html">首页</a> &gt;
                                <a href="#/site/member/center" class="">会员中心</a>&gt;
                                <a href="#/site/member/orderlist" class="router-link-exact-active ">我的订单</a>
                            </div>
                        </div>
                        <div class="section clearfix">
                            <div class="left-260">
                                <div class="bg-wrap">
                                    <div class="avatar-box">
                                        <a href="/user/center/avatar.html" class="img-box">
                                            <i class="iconfont icon-user-full"></i>
                                        </a>
                                        <h3>

                                            ivanyb

                                        </h3>
                                        <p>
                                            <b>注册会员</b>
                                        </p>
                                    </div>
                                    <div class="center-nav">
                                        <ul>
                                            <li>
                                                <h2>
                                                    <i class="iconfont icon-order"></i>
                                                    <span>订单管理</span>
                                                </h2>
                                                <div class="list">
                                                    <p>
                                                        <router-link to="/theOrder" class="router-link-exact-active ">
                                                            <i class="iconfont icon-arrow-right"></i>交易订单</router-link>
                                                    </p>
                                                </div>
                                            </li>
                                            <li>
                                                <h2>
                                                    <i class="iconfont icon-user"></i>
                                                    <span>账户管理</span>
                                                </h2>
                                                <div class="list">
                                                    <p>
                                                        <a href="#/site/member/center" class="">
                                                            <i class="iconfont icon-arrow-right"></i>账户资料</a>
                                                    </p>
                                                    <p>
                                                        <a href="#/site/member/center" class="">
                                                            <i clrouter-linkss="iconfont icon-router-linkrrow-right"></i>头像设置</a>
                                                    </p>
                                                    <p>
                                                        <a href="#/site/member/center" class="">
                                                            <i class="iconfont icon-arrow-right"></i>修改密码</a>
                                                    </p>
                                                    <p>
                                                        <a href="javascript:void(0)">
                                                            <i class="iconfont icon-arrow-right"></i>退出登录</a>
                                                    </p>
                                                </div>
                                            </li>
                                        </ul>
                                    </div>
                                </div>
                            </div>
                            <div class="right-auto">
                                <div class="bg-wrap" style="min-height: 765px;">
                                    <div class="sub-tit">
                                        <ul>
                                            <li class="selected">
                                                <a href="/user/order-list.html">交易订单</a>
                                            </li>
                                        </ul>
                                    </div>
                                    <div class="table-wrap">
                                        <table width="100%" border="0" cellspacing="0" cellpadding="0" class="ftable">
                                            <tbody>
                                                <tr>
                                                    <th width="16%" align="left">订单号</th>
                                                    <th width="10%">姓名</th>
                                                    <th width="12%">订单金额</th>
                                                    <th width="11%">下单时间</th>
                                                    <th width="10%">状态</th>
                                                    <th width="12%">操作</th>
                                                </tr>
                                                <tr v-for="item in goodsList.message" :key="item.id">
                                                    <td>{{item.order_no}}</td>
                                                    <td align="left">{{item.accept_name}}</td>
                                                    <td align="left">
                                                        <strong style="color: red;">¥{{item.order_amount}}</strong>
                                                        <br> {{item.paymentTitle}}
                                                    </td>
                                                    <td align="left">{{item.add_tiem | dateFmt('YYYY-MM-DD')}}</td>
                                                    <td align="left">
                                                        {{item.statusName}}
                                                    </td>
                                                    <td align="left">
                                                        <router-link :to="'/checkOrder/?ids='+item.id" class=" ">查看订单</router-link>
                                                        <br>
                                                        <router-link :to="'/pay?orderid='+ item.id" class="btn-pay">去付款</router-link>
                                                        <br>
                                                        <a href="javascript:void(0)">|取消</a>
                                                        <br>
                                                    </td>
                                                </tr>
                                            </tbody>
                                        </table>
                                        <div class="page-foot">
                                            <el-pagination
                                                @size-change="handleSizeChange"
                                                @current-change="handleCurrentChange"
                                                :current-page="pageIndex"
                                                :page-sizes="[10, 20, 50, 100]"
                                                :page-size="pageSize"
                                                layout="total, sizes, prev, pager, next, jumper"
                                                :total="goodsList.totalcount">
                                            </el-pagination>
                                        </div>
                                    </div>
                                </div>
                            </div>
                        </div>
                    </div>
                </div>
            </div>
        </div>
    </div>
</template>

<script>
export default {
    data(){
        return{
            goodsList:[],
            pageIndex: 1,
            pageSize: 10,
        }
    },
    created(){
        this.userorderlist()
    },
    methods:{
        userorderlist(){
            const url = `site/validate/order/userorderlist?pageIndex=${this.pageIndex}&pageSize=${this.pageSize}`
            this.$axios.get(url).then(response=>{
                this.goodsList = response.data
            })
        },
        handleSizeChange(pageIndex){
            this.pageIndex = pageIndex
            this.userorderlist()  
        },
        handleCurrentChange(pageSize){
            this.pageIndex = pageSize
            this.userorderlist()
        }
    }
}
</script>

Vipcenter.vue

<template>
    <div class="center">
                <div class="el-row">
                    <div class="el-col el-col-24">
                        <div class="comp">
                            <div class="tmpl routeanimate">
                                <div class="section">
                                    <div class="location">
                                        <span>当前位置:</span>
                                        <a href="/index.html">首页</a> &gt;
                                        <a href="/user/center/index.html">会员中心</a>
                                    </div>
                                </div>
                                <div class="section clearfix">
                                    <div class="left-260">
                                        <div class="bg-wrap">
                                            <div class="avatar-box">
                                                <a href="/user/center/avatar.html" class="img-box">
                                                    <i class="iconfont icon-user-full"></i>
                                                </a>
                                                <h3>

                                                    ivanyb

                                                </h3>
                                                <p>
                                                    <b>注册会员</b>
                                                </p>
                                            </div>
                                            <div class="center-nav">
                                                <ul>
                                                    <li>
                                                        <h2>
                                                            <i class="iconfont icon-order"></i>
                                                            <span>订单管理</span>
                                                        </h2>
                                                        <div class="list">
                                                            <p>
                                                                <router-link to="/theOrder" class="">
                                                                    <i class="iconfont icon-arrow-right"></i>交易订单</router-link>
                                                            </p>
                                                        </div>
                                                    </li>
                                                    <li>
                                                        <h2>
                                                            <i class="iconfont icon-user"></i>
                                                            <span>账户管理</span>
                                                        </h2>
                                                        <div class="list">
                                                            <p>
                                                                <a href="#/site/member/center" class="router-link-exact-active ">
                                                                    <i class="iconfont icon-arrow-right"></i>账户资料</a>
                                                            </p>
                                                            <p>
                                                                <a href="#/site/member/center" class="router-link-exact-active ">
                                                                    <i clrouter-linkss="iconfont icon-router-linkrrow-right"></i>头像设置</a>
                                                            </p>
                                                            <p>
                                                                <a href="#/site/member/center" class="router-link-exact-active ">
                                                                    <i class="iconfont icon-arrow-right"></i>修改密码</a>
                                                            </p>
                                                            <p>
                                                                <a href="javascript:void(0)">
                                                                    <i class="iconfont icon-arrow-right"></i>退出登录</a>
                                                            </p>
                                                        </div>
                                                    </li>
                                                </ul>
                                            </div>
                                        </div>
                                    </div>
                                    <div class="right-auto">
                                        <div class="bg-wrap" style="min-height: 765px;">
                                            <div class="sub-tit">
                                                <ul>
                                                    <li class="selected">
                                                        <a href="javascript:;">个人中心</a>
                                                    </li>
                                                </ul>
                                            </div>
                                            <div class="center-head clearfix">
                                                <div class="img-box">
                                                    <i class="iconfont icon-user-full"></i>
                                                </div>
                                                <div class="list-box">
                                                    <h3>欢迎您~ ivanyb</h3>
                                                    <ul>
                                                        <li>组别:注册会员</li>
                                                        <li>手机:13987654321</li>
                                                        <li>Email:ivanyb1@qq.com</li>
                                                    </ul>
                                                </div>
                                            </div>
                                            <div class="center-info clearfix"></div>
                                            <div class="center-tit">
                                                <span>
                                                    <a href="/user/order-list.html">更多..</a>
                                                </span>
                                                <h3>
                                                    <i class="iconfont icon-order"></i>我的订单</h3>
                                            </div>
                                            <div class="center-info clearfix">
                                                <ul>
                                                    <li>已完成订单:0个</li>
                                                    <li>待完成订单:2个</li>
                                                </ul>
                                            </div>
                                        </div>
                                    </div>
                                </div>
                            </div>
                        </div>
                    </div>
                </div>
            </div>
</template>

package.json

{
  "name": "szhmqd21_vue",
  "version": "0.1.0",
  "private": true,
  "scripts": {
    "serve": "vue-cli-service serve --open",
    "build": "vue-cli-service build",
    "lint": "vue-cli-service lint"
  },
  "dependencies": {
    "axios": "^0.18.0",
    "dzh-qrcode": "^1.0.4",
    "element": "^0.1.4",
    "element-ui": "^2.4.6",
    "iview": "^3.1.0",
    "jquery": "^3.3.1",
    "moment": "^2.22.2",
    "v-distpicker": "^1.0.17",
    "vue": "^2.5.17",
    "vue-lazyload": "^1.2.6",
    "vue-router": "^3.0.1",
    "vuex": "^3.0.1"
  },
  "devDependencies": {
    "@vue/cli-plugin-babel": "^3.0.1",
    "@vue/cli-plugin-eslint": "^3.0.1",
    "@vue/cli-service": "^3.0.1",
    "vue-template-compiler": "^2.5.17"
  },
  "eslintConfig": {
    "root": true,
    "env": {
      "node": true
    },
    "extends": [
      "plugin:vue/essential",
      "eslint:recommended"
    ],
    "rules": {},
    "parserOptions": {
      "parser": "babel-eslint"
    }
  },
  "postcss": {
    "plugins": {
      "autoprefixer": {}
    }
  },
  "browserslist": [
    "> 1%",
    "last 2 versions",
    "not ie <= 8"
  ]
}

vue.config.js

module.exports = {
    lintOnSave: false,
    baseUrl: './',
    productionSourceMap: false,
    // configureWebpack: {
    //     externals: {
    //         vue: 'Vue'
    //     }
    // }
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值