赞
踩
这个代码就是基本完结了。我把全部代码都贴出来,供大家参考学习。
- import request from '@/api/request.js'
-
- export const getBannerAds = () => {
- return request({
- url:'/lejuClient/home/bannerAds',
- method: 'GET'
- })
- }
-
- export const doLogin = (data) => {
- return request({
- url:'/lejuClient/login/doLogin',
- method: 'POST',
- data: data
- })
- }
-
- export const findCategory = (id) => {
- return request({
- url:'/lejuClient/productCategory/findCategory/' + id,
- method: 'GET'
- })
- }
-
- export const getHotList = ()=> {
- return request({
- url:'/lejuClient/home/hotList',
- method: 'GET'
- })
- }
-
-
-
-
- import request from '@/api/request.js'
-
-
- export const getDetail = (productId)=> {
- return request({
- url: '/lejuClient/product/productDetail/' + productId,
- method: 'GET'
- })
- }
-
- export const addCart = (data)=> {
- return request({
- url:'/lejuClient/cart/addCart',
- method: 'POST',
- data: data
- })
- }
-
- export const addPreOrder = (data)=> {
- return request({
- url: '/lejuClient/order/addPreOrder',
- method: 'POST',
- data: data
- })
- }
-
-
- import request from '@/api/request.js'
-
-
- export const getProductList = (start,limit,data)=> {
- return request({
- url:`/lejuClient/product/findProductList/${start}/${limit}`,
- method:'POST',
- data:data
- })
- }
-
- import request from '@/api/request.js'
-
- export const getCategory = (categoryId)=>{
- return request({
- url:'/lejuClient/productCategory/findCategory/' + categoryId,
- method: 'GET'
- })
- }
-
-
- export const getProductList = (start,limit,data)=> {
- return request({
- url:`/lejuClient/product/findProductList/${start}/${limit}`,
- method:'POST',
- data:data
- })
- }
-
- import request from '../request.js'
-
- export const getAllCategory = ()=> {
- return request({
- url:'/lejuClient/productCategory/findAllCategory'
- })
- }
-
- import request from '@/api/request.js'
-
- export const doLogin = (data)=> {
- return request({
- url:'/lejuClient/login/doLogin',
- method: 'POST',
- data: data
- })
- }
-
- import request from '@/api/request.js'
-
- export const doRegister = (data)=> {
- return request({
- url:'/lejuClient/member/register',
- method:'POST',
- data: data
- })
- }
-
- import request from '@/api/request.js'
-
- export const getMemberInfo = ()=>{
- return request({
- url:'/lejuClient/login/getMemberInfo',
- method: 'GET'
- })
- }
-
- import request from '@/api/request.js'
-
- export const getAllAddress = ()=> {
- return request({
- url:'/lejuClient/address/findAllAddress',
- method: 'GET'
- })
- }
-
- import request from '@/api/request.js'
-
- export const getPreOrderById = (orderId)=> {
- return request({
- url:'/lejuClient/order/getPreOrderById/' + orderId,
- method: 'GET'
- })
- }
-
- export const addConfirmOrder = (data)=> {
- return request({
- url:'/lejuClient/order/addConfirmOrder',
- method: 'POST',
- data: data
- })
- }
-
- let baseUrl = "";
-
- if(process.env.MODE_ENV == 'development'){
- console.log("开发环境");
- baseUrl = "http://leju.bufan.cloud";
- }else{
- console.log("生产环境");
- baseUrl = "http://leju.bufan.cloud";
- }
-
- export default baseUrl
- import baseUrl from '@/api/baseUrl.js'
-
- let instance = (config) => {
- return new Promise((resolve,rejected)=>{
- uni.request({
- url: baseUrl + config.url,
- timeout: 5000,
- data:config.data,
- method: config.method,
- header:{
- token: uni.getStorageSync("b-token")
- },
- success(res){
- if(res.data.success == false){
- uni.showToast({
- title:res.data.message,
- icon:'none',
- mask: true,
- duration: 3000
- })
- }else{
- resolve(res.data);
- }
- }
- })
- })
- }
-
- export default instance;
-
- let obj = {
- methods:{
- checkLogin(){
- let token = uni.getStorageSync("b-token");
- if(token){
- let userInfo = uni.getStorageSync("b-userInfo");
- this.userInfo = userInfo;
- return true;
- }else{
- uni.showModal({
- title:'登录提示',
- content:'暂未登录,是否重新登录',
- success(res) {
- //console.log(res)
- if(res.confirm){
- //清空本地数据
- uni.clearStorageSync();
- uni.navigateTo({
- url:'/pages/mine/login/login'
- });
- }else{
- uni.showToast({
- title:'已取消登录',
- icon:'error'
- });
- uni.clearStorageSync();
- }
- }
- })
- return false;
- }
- }
- }
- }
-
- export default obj
- <template>
- <view>
-
- </view>
- </template>
-
- <script>
- import mix from '@/minxins/index.js'
-
- export default {
- data() {
- return {
-
- };
- },
- mixins:[mix],
- onShow() {
- this.checkLogin();
- }
- }
- </script>
-
- <style lang="scss" scoped>
-
- </style>
- <template>
- <view>
- <view class="nav-area">
- <!-- 这里状态栏 -->
- </view>
- <!-- 轮播图 -->
- <swiper :indicator-dots="true" :autoplay="true" :interval="3000" :duration="1000" circular>
- <swiper-item v-for="item in barnerList" :key="item.id">
- <img :src="item.pic" alt="" style="width:100%;">
- </swiper-item>
- </swiper>
- <!-- <button type="default" @tap="login">登录</button> -->
- <!-- <button type="default" @tap="doFind">获取分类</button> -->
- <view class="box">
-
- </view>
-
- <view class="parent">
- <view v-for="item in 6" :key="item">
- {{ item}}
- </view>
- </view>
-
- <swiper
- :indicator-dots="true"
- :autoplay="true"
- :interval="3000"
- :duration="1500"
- circular
- :display-multiple-items="3" >
- <swiper-item v-for="item in hotList" :key="item.id">
- <image :src="item.pic" mode="" style="width:95%;"></image>
- </swiper-item>
- </swiper>
- </view>
- </template>
-
- <script>
- import { getBannerAds, doLogin, findCategory, getHotList} from '@/api/home/index.js'
-
- export default {
- data() {
- return {
- barnerList:[],
- hotList:[],
- };
- },
- methods: {
- // login(){
- // doLogin({
- // username:'17596496508',
- // password: '123456'
- // }).then(res=>{
- // //console.log(res)
- // });
- // },
- // doFind(){
- // findCategory(1).then(res=>{
- // //console.log(res)
- // })
- // }
- },
- onLoad(options) {
- getBannerAds().then(res=>{
- this.barnerList = res.data.items;
- })
-
- getHotList().then(res=>{
- console.log(res);
- this.hotList = res.data.items;
- })
- }
- }
- </script>
-
- <style lang="scss">
- .nav-area{
- height: var(--status-bar-height);
- width: 100%;
- }
-
- .box{
- width: 208rpx;
- height: 140rpx;
- background-color: $uni-bg-color-hover;
- }
-
- .parent {
- display: flex;
- align-items: center;
- overflow-x: auto;
- view{
- height: 200rpx;
- width: 300rpx;
- background-color: gray;
- flex-shrink: 0;
- }
- }
- </style>
- <template>
- <view class="content">
- <view>
- {{text}}
- </view>
- <view v-text="text">
-
- </view>
- <view v-for="item in list" :key="item.name" @tap="printName(item)">
- {{item.name}}
- </view>
-
- <view v-show="isShow">这是一行文字</view>
- <button type="default" @tap="toggleText">点击控制文字显示与隐藏</button>
-
- <view :class="{red:isActive}">文字颜色会变化</view>
- <button type="default" @tap="changeColor">点击变换颜色</button>
-
- <view :style="{color:isChange ? 'red':''}">内联样式变化文字颜色</view>
- <button type="default" @tap="changeStyle">点击变换style</button>
- </view>
- </template>
-
- <script>
- export default {
- data(){
- return {
- isChange:false,
- isActive:false,
- isShow: true,
- text:'张三',
- list:[
- {name:'苹果'},
- {name:'香蕉'},
- {name:'橘子'},
- {name:'火龙果'},
- ]
- }
- },
- methods: {
- changeStyle(){
- this.isChange = !this.isChange
- },
- changeColor(){
- this.isActive = !this.isActive;
- },
- toggleText(){
- this.isShow = !this.isShow;
- },
- printName(obj){
- console.log(obj.name);
- }
- }
- }
- </script>
-
- <style>
- .red{
- color: red;
- }
- </style>
- <template>
- <view class="info">
- <swiper :indicator-dots="true" :autoplay="true" :interval="3000" :duration="1000" circular>
- <swiper-item v-for="(item,index) in albumPics" :key="index">
- <view class="swiper-item">
- <img :src="item" alt="" style="width: 100%;">
- </view>
- </swiper-item>
- </swiper>
- <view class="row">商品名称:{{productData.name}}</view>
- <view class="row">商品价格:¥{{productData.price}}</view>
- <view class="row">商品描述:{{productData.description}}</view>
- <view class="row">明细标题:{{productData.detailTitle}}</view>
- <view class="row">明细描述:{{productData.detailDesc}}</view>
- <view class="row">品牌名称:{{productData.brandName}}</view>
- <view class="row">品牌目录:{{productData.productCategoryName}}</view>
- <mp-html :content="productData.detailMobileHtml"></mp-html>
-
- <view class="mask" @touchmove.stop.prevent v-if="isMaskShow">
- <view class="box">
- <image :src="picUrl" mode="" class="pic"></image>
- <uni-icons type="close" @tap="isMaskShow = false" style="position: absolute;right: 120rpx;top: 260rpx;"></uni-icons>
- <view>商品选择</view>
- <view class="sp-data">
- <view
- v-for="(item,idx) in productData.skuList"
- :key="item.id"
- class="sp-data-row"
- :class="spDataSelectedIndex == idx ? 'active': ''" @tap="spDataSelect(idx)">
- <text v-for="(ele,index) in item.spData" :key="index" class="sp-data-item">
- {{ele.key}}:{{ele.value}}
- </text>
- </view>
- </view>
- <view style="width: 60%;margin: 0 auto;">
- <button type="warn" size="default" @tap="confirm">购买</button>
- </view>
- </view>
- </view>
-
- <view class="fixed-btn">
- <uni-icons type="headphones" class="btn-icon"></uni-icons>
- <button type="default" class="btn-cart" @tap="addCart(0)">添加至购物车</button>
- <button type="primary" class="btn-buy" @tap="goBuy(1)">立即购买</button>
- </view>
- </view>
- </template>
-
- <script>
- import { getDetail, addCart, addPreOrder } from '@/api/info/index.js'
- import mix from '@/minxins/index.js'
- import { registerRuntimeCompiler } from "vue";
-
- export default {
-
- mixins:[mix],
- data() {
- return {
- currentTap:0, //0购物车,1立即购买
- picUrl:'',
- spDataSelectedIndex: null,
- isMaskShow: false,
- productId:null,
- productData: {},
- albumPics:[],
- obj:{
- img:"width:90%;"
- }
- };
- },
- methods:{
- //确认购买
- confirm(){
- //先判断是否登录
- if(!this.checkLogin()){
- return;
- }
- //判断是否选择了规格
- if(this.spDataSelectedIndex == null) {
- uni.showToast({
- title:'请选择规格',
- icon:'error'
- });
- return;
- }
- //获取sku
- let sku = this.productData.skuList[this.spDataSelectedIndex];
-
- if(this.currentTap == 0){
- console.log('添加至购物车')
-
-
- addCart({
- productId: sku.productId,
- productSkuId: sku.id,
- quantity: 1 //默认了
- }).then(res=>{
- console.log(res)
- uni.showToast({
- title:res.message,
- icon:'success'
- });
- this.isMaskShow = false;
- })
- }else if(this.currentTap == 1){
- console.log('立即购买');
- addPreOrder({
- addressId: "",
- orderId: "",
- orderItemList: [
- {
- cartId: "",
- productId: sku.productId,
- productQuantity: 1,
- productSkuId: sku.id
- }
- ],
- payType: 0,
- sourceType: 1
- }).then(res=>{
- console.log(res);
- this.isMaskShow = false;
- uni.showToast({
- title:`下单${res.message},订单号是${res.data.orderId}`,
- icon:'none',
- mask:true,
- duration:2000
- });
- setTimeout(()=>{
- uni.navigateTo({
- url:'/pages/order/order?orderId=' + res.data.orderId
- });
- },2000);
-
- })
- }
-
-
- },
- //选中
- spDataSelect(index){
- this.spDataSelectedIndex = index;
- this.picUrl = this.productData.skuList[index].pic;
-
- },
- //添加至购物车
- addCart(val){
- this.goBuy(val);
- },
- //立即购买
- goBuy(val){
- this.currentTap = val;
- this.isMaskShow = !this.isMaskShow;
-
-
- }
- },
- onLoad(options) {
- this.productId = options.id
- getDetail(this.productId).then(res=>{
- console.log(res)
- res.data.product.skuList.forEach(ele=>{
- ele.spData = JSON.parse(ele.spData);
- });
-
- this.productData = res.data.product;
- this.albumPics = this.productData.albumPics.split(",");
- uni.setNavigationBarTitle({
- title: this.productData.name
- });
-
- })
- }
- }
- </script>
-
- <style lang="scss">
- .info{
-
- .row{
- min-height: 100rpx;
- width: 100%;
- font-size: 18px;
- padding: 10px 10px;
- margin-bottom: 20rpx;
- margin-top: 10rpx;
- }
-
- .mask{
- width: 100%;
- height: 100vh;
- position: fixed;
- top: 0;
- left: 0;
- z-index: 999;
- background-color: rgba(0,0,0,0.6);
- display: flex;
- align-items: center;
- justify-content: center;
- .box{
- width: 80%;
- min-height: 1000rpx;
- margin: 0 auto;
- background-color: #fff;
-
- .pic{
- width: 240rpx;
- height: 240rpx;
- border: 2px solid #FFC6CC;
- border-radius: 100rpx;
- position: relative;
- top: -90rpx;
- left: 60rpx;
- background-color: #FFC6CC;
-
- }
-
- .sp-data{
- height: 500rpx;
- overflow-y: scroll;
-
- .sp-data-row{
- height: 60rpx;
- line-height: 60rpx;
- width: 100%;
- margin: 15rpx 0;
- padding-left: 40rpx;
- box-sizing: border-box;
-
- .sp-data-item{
- margin-left: 25rpx;
- border: 1px solid green;
- border-radius: 10rpx;
- padding: 10rpx;
- height: 40rpx;
- font-size: 14px;
- }
-
- }
-
- .active{
- background-color: #E2E2E2;
- }
- }
- }
- }
-
- .fixed-btn{
- display: flex;
- align-items: center;
- position: fixed;
- bottom: 0;
- left: 0;
- width: 100%;
- border: 1px solid #cccccc;
- padding: 10px;
- background-color: #fff;
- button{
- width: 40%;
- margin: 0;
- border-radius: 0;
- }
- .btn-icon{
- width: 15%;
- }
-
- .btn-cart{
- background-color: #E2E2E2;
- }
- .btn-buy{
- background-color: #344B44;
- }
- }
- }
-
- </style>
- <template>
- <view>
- <view class="tab">
- <view class="tab-item" v-for="(item,index) in tabList" :key="index">
- <view :class="{active: index == currentTabIndex }" @tap="tabClick(index)">
- {{item.name}}
- </view>
- <view v-if=" item.name == '销量' || item.name == '价格'" class="icon-box">
- <uni-icons type="up" size="16" :color="item.current == 'up'?'#dd524d': ''"></uni-icons>
- <uni-icons type="down" size="16" :color="item.current == 'down'?'#dd524d': ''"></uni-icons>
- </view>
- </view>
- </view>
- <ul class="product-area">
- <li v-for="item in productList" :key="item.id" @tap="goInfo(item)">
- <img :src="item.pic" alt="" />
- <view>{{item.name}}</view>
- <view>¥{{item.price}}</view>
- <view>{{item.brandName}}</view>
- </li>
- </ul>
- </view>
- </template>
-
- <script>
- import { getProductList } from '@/api/kind/goods/goods.js'
-
- export default {
- data() {
- return {
- total: 0,
- start: 1,
- limit: 4,
- sortBy:'',
- desc: 0,
- currentTabIndex: 0,
- categoryId: 0,
- productList:[],
- tabList:[
- {
- name:'新品',
- current:'default', //default up down
- },
- {
- name:'销量',
- current:'default', //default up down
- },
- {
- name:'价格',
- current:'default', //default up down
- },
- {
- name:'筛选',
- current:'default', //default up down
- },
- ]
- }
- },
- methods: {
- goInfo(item){
- console.log(item)
- uni.navigateTo({
- url:'/pages/info/info?id=' + item.id
- })
- },
- tabClick(index){
- //重置数据
- this.productList = [];
- //当前索引保存起来
- this.currentTabIndex = index;
- //除了当前点击项,其余项恢复默认标识
- this.tabList.forEach((ele,idx)=>{
- if(idx != index){
- ele.current = 'default';
- }
- });
-
- //获取当前项
- let item = this.tabList[index];
- //判断是升序,还是降序
- if(item.current == 'default'){
- this.tabList[index].current = 'up';
- this.desc = 0; //升序
- }else if(item.current == 'up'){
- this.tabList[index].current = 'down';
- this.desc = 1; //降序
- }else {
- this.tabList[index].current = 'up';
- this.desc = 0; //升序
- }
-
- //判断是销量排序,还是价格排序
- if(item.name =='销量'){
- this.sortBy = 'sale'
- }else if(item.name =='价格'){
- this.sortBy = 'price'
- }
- //请求接口获取数据
- this.getData();
- },
- getData(){
- let data = {
- "brandId": "",
- "categoryId": this.categoryId,
- "isDesc": this.desc,
- "keywords": "",
- "sortBy": this.sortBy
- }
- //调用接口函数
- getProductList(this.start,this.limit,data).then(res=>{
- //console.log(res)
- this.productList.push(...res.data.rows);
- this.total = res.data.total;
- uni.stopPullDownRefresh();
- })
- }
- },
- onLoad(options) {
- //从页面传参中获取id
- this.categoryId = options.id;
- //然后获取数据
- this.getData();
- },
- //上拉加载
- onReachBottom(){
- //判断目前数据小于总数据时,继续获取数据
- if(this.productList.length < this.total){
- this.start += 1;
- this.getData();
- }else
- {
- console.log("没有更多了")
- }
-
- },
- //下拉刷新
- onPullDownRefresh(){
- this.start = 1;
- this.productList = [];
- this.getData();
-
- }
- }
- </script>
-
- <style lang="scss">
- .tab{
- display: flex;
- align-items: center;
- justify-content: space-around;
- padding: 10px 0;
- .tab-item{
- display: flex;
- align-items: center;
- .icon-box{
- display: flex;
- align-items: center;
- justify-content: center;
- flex-direction: column;
- }
- .active{
- color: #dd524d;
- }
- }
- }
-
- .product-area{
- list-style: none;
- width: 100%;
- padding: 10rpx;
- li{
- width: 45%;
- height: 600rpx;
- float: left;
- border: 1px solid gray;
- text-align: center;
- margin: 10rpx;
- img{
- width: 100%;
- height: 400rpx;
- }
- text{
- color: gray;
- }
- }
- }
- </style>
- <template>
- <view>
- 二级分类页
- <button type="default" @tap="goKind">api方式跳转回分类页</button>
- <button type="default" @tap="goBack">返回上级菜单</button>
- <navigator url="/pages/kind/kind" open-type="switchTab">组件方式跳转回分类页</navigator>
- <navigator :delta="1" open-type="navigateBack">组件方式回退上一级</navigator>
- <view class="nav-item" v-for="item in categoryList" :key="item.id" @tap="catetoryClick(item)">
- <!-- <image :src="item.icon" mode=""></image> -->
- <text>{{item.name}}</text>
- </view>
- </view>
- </template>
-
- <script>
- import { getCategory} from '@/api/kind/list/list.js'
-
-
- export default {
- data() {
- return {
- categoryId:0,
- categoryList:[]
- };
- },
- methods:{
- catetoryClick(obj){
- console.log(obj)
- uni.navigateTo({
- url:'/pages/kind/goods/goods?id=' + obj.id
- })
- },
- goKind(){
- uni.switchTab({
- url:'/pages/kind/kind'
- })
- },
- goBack(){
- uni.navigateBack({
- delta:1
- })
- }
- },
- onLoad(options) {
- this.categoryId = options.id;
- getCategory(this.categoryId).then(res=>{
- //console.log(res)
- this.categoryList = res.data.category.children;
- })
- }
- }
- </script>
-
- <style lang="scss" scoped>
- .nav-item{
- width: 100%;
- height: 110rpx;
- border: 1px solid gray;
- margin-bottom: 10px;
- box-sizing: border-box;
- text-align: center;
- font-size: 18px;
- font-weight: bold;
- line-height: 110rpx;
- background-color: $uni-bg-color-grey;
- }
- </style>
- <template>
- <view>
- <button type="default" @tap="goProduct">api方式跳转到商品页</button>
- <navigator url="/pages/kind/list/list">组件方式跳转至商品页</navigator>
- <view class="nav-item" v-for="item in categoryList" :key="item.pmsProductCategory.id" @tap="catetoryClick(item)">
- <!-- <image :src="item.pmsProductCategory.icon" mode=""></image> -->
- <text>{{item.pmsProductCategory.name}}</text>
- </view>
- </view>
- </template>
-
- <script>
- import { getAllCategory } from '@/api/kind/index.js'
-
- export default {
- data() {
- return {
- categoryList:[]
- };
- },
- methods: {
- goProduct(){
- uni.navigateTo({
- url:'/pages/kind/list/list'
- })
- },
- catetoryClick(obj){
- uni.navigateTo({
- url:'/pages/kind/list/list?id=' + obj.pmsProductCategory.id
- })
- }
- },
- onLoad() {
- getAllCategory().then(res=>{
- console.log(res)
- this.categoryList = res.data.items;
- })
- }
- }
- </script>
-
- <style lang="scss">
-
- navigator{
- width: 100%;
- height: 150rpx;
- line-height: 150rpx;
- text-align: center;
- }
-
- .nav-item{
- width: 100%;
- height: 150rpx;
- border: 1px solid gray;
- margin-bottom: 10px;
- box-sizing: border-box;
- text-align: center;
- font-size: 18px;
- font-weight: bold;
- line-height: 150rpx;
- background-color: $uni-bg-color-grey;
- }
- </style>
- <template>
- <view class="login-area">
- <view class="row">
- <image src="/static/logo.png" style="width: 300rpx;height: 250rpx;margin: 0 auto;display: block;"></image>
- </view>
- <view class="row">
- <input type="text" class="input" placeholder="用户名" v-model="loginForm.username"/>
- </view>
- <view class="row">
- <input type="password" class="input" placeholder="密码" v-model="loginForm.password"/>
- </view>
- <view class="row">
- <button type="default" @tap="login" class="btn">登录</button>
- </view>
- <navigator url="/pages/mine/register/register" class="register">没有账号?注册一个</navigator>
- </view>
- </template>
-
- <script>
- import {doLogin} from '@/api/mine/login/login.js'
- import { getMemberInfo } from '@/api/mine/index.js'
-
- export default {
- data() {
- return {
- loginForm:{
- username:'17596496508',
- password:'123456'
- }
- };
- },
- methods:{
- login(){
- doLogin(this.loginForm).then(res=>{
- console.log(res)
- uni.showToast({
- title:'登录成功',
- icon:'success'
- });
- //登录成功,存token
- uni.setStorageSync("b-token",res.data.token);
- //同时获取用户信息,存用户
- getMemberInfo().then(res=>{
- uni.setStorageSync("b-userInfo",res.data.userInfo);
- });
- setTimeout(()=>{
- uni.switchTab({
- url:'/pages/mine/mine'
- });
- },1200);
-
- })
- }
- }
- }
- </script>
-
- <style lang="scss">
-
- .login-area{
-
- background-color: #F3EDE7;
- width: 100%;
-
-
- .row{
- margin: 15rpx auto;
- min-height: 150rpx;
- width: 80%;
-
-
- .input{
- margin-top: 30rpx;
- border: 1px solid gray;
- box-sizing: border-box;
- height: 100rpx;
- width: 100%;
- font-size: 30rpx;
- line-height: 30rpx;
- border-radius: 50rpx;
- padding: 15rpx 20rpx;
- }
-
- .btn{
- background-color: #344B44;
- border-radius: 50rpx;
- color: #ffffff;
- }
- }
- .register{
- text-align: center;
- font-size: 14px;
- color: #625D5E;
- }
- }
-
-
- </style>
- <template>
- <view class="register-area">
- <view class="row">
- <image src="/static/logo.png" style="width: 300rpx;height: 250rpx;margin: 0 auto;display: block;"></image>
- </view>
- <view class="row">
- <input type="text" class="input" placeholder="用户名 该用户名将用于账号登录" v-model="relForm.username"/>
- </view>
- <view class="row">
- <input type="password" class="input" placeholder="请输入登录密码" v-model="relForm.password"/>
- </view>
- <view class="row">
- <input type="text" class="input" placeholder="手机号" v-model="relForm.phone"/>
- </view>
- <view class="row">
- <input type="text" class="input" placeholder="请输入昵称" v-model="relForm.nickname"/>
- </view>
- <view class="row">
- <button type="default" @tap="register" class="btn">注 册</button>
- </view>
- <navigator url="/pages/mine/login/login" class="register">返回登录</navigator>
- </view>
- </template>
-
- <script>
- import { doRegister } from '@/api/mine/register/index.js'
-
- export default {
- data() {
- return {
- relForm:{
- phone:'',
- password:'',
- username:'',
- nickname:''
- }
- };
- },
- methods:{
- register(){
- doRegister(this.relForm).then(res=>{
- console.log(res)
- if(res.success){
- uni.showToast({
- title:res.message,
- icon:'success'
- })
- }else{
- uni.showToast({
- title:res.message,
- icon:'none'
- })
- }
- })
- }
- }
- }
- </script>
-
- <style lang="scss">
- .register-area{
-
- background-color: #F3EDE7;
- width: 100%;
-
-
- .row{
- margin: 10rpx auto;
- min-height: 120rpx;
- width: 90%;
-
- .input{
- margin-top: 20rpx;
- border: 1px solid gray;
- box-sizing: border-box;
- height: 100rpx;
- width: 100%;
- font-size: 30rpx;
- line-height: 30rpx;
- border-radius: 50rpx;
- padding: 10rpx 50rpx;
- }
-
- .btn{
- background-color: #344B44;
- border-radius: 50rpx;
- color: #ffffff;
- }
- }
- .register{
- text-align: center;
- font-size: 14px;
- color: #625D5E;
- }
- }
- </style>
- <template>
- <view class="info">
- <view class="user-info">
- <image :src="userInfo.icon" mode="" class="avatar"></image>
- <text class="nickname">{{userInfo.nickname}}</text>
- <text class="username">用户名:{{userInfo.username}}</text>
- </view>
- <navigator url="/pages/mine/login/login">登录</navigator>
- </view>
- </template>
-
- <script>
- import {getMemberInfo} from '@/api/mine/index.js'
- import mix from '@/minxins/index.js'
-
- export default {
- name:'Mine',
- mixins:[mix],
- data() {
- return {
- userInfo:null
- };
- },
- methods:{
- // getUser(){
- // let token = uni.getStorageSync("b-token");
- // if(token){
- // let userInfo = uni.getStorageSync("b-userInfo");
- // this.userInfo = userInfo;
- // }else{
- // uni.showModal({
- // title:'登录提示',
- // content:'暂未登录,是否重新登录',
- // success(res) {
- // console.log(res)
- // if(res.confirm){
- // //清空本地数据
- // uni.clearStorageSync();
- // uni.navigateTo({
- // url:'/pages/mine/login/login'
- // });
- // }
- // }
- // })
- // }
- // }
- },
- onLoad() {
- //this.getUser();
- },
- onShow() {
- this.checkLogin();
- }
-
- }
- </script>
-
- <style lang="scss">
- .info{
- background-color: #F3EDE7;
- width: 100%;
-
- .user-info{
- width: 100%;
- height: 300rpx;
- .avatar{
- width: 230rpx;
- height: 230rpx;
- border: 1px solid black;
- border-radius: 50%;
- margin-top: 40rpx;
- margin-left: 40rpx;
-
- }
-
- .nickname{
- font-size: 30px;
- position: absolute;
- top: 100rpx;
- left: 320rpx;
- color: #6C7A77;
- }
-
- .username{
- font-size: 14px;
- position: absolute;
- top: 200rpx;
- left: 320rpx;
- color: #C5C1C0;
- }
- }
-
-
- }
-
- </style>
- <template>
- <view class="order">
- <navigator url="/pages/order/address/address">选择收货地址</navigator>
- <view class="address">
- <text class="address-name">姓名:{{address.name}}</text>
- <text class="address-phone">电话:{{address.phoneNumber}}</text>
- <view class="address-detail">地址:{{address.province}}{{address.city}}{{address.region}}{{address.detailAddress}}</view>
- </view>
- <view class="row">id:{{orderData.orderBase && orderData.orderBase.id}}</view>
- <view class="row">orderSn:{{orderData.orderBase && orderData.orderBase.orderSn}}</view>
- <view class="row">totalAmount:{{orderData.orderBase && orderData.orderBase.totalAmount}}</view>
- <view class="row">status:{{orderData.orderBase && orderData.orderBase.status}}</view>
- <view class="order-items">
- <view class="order-item" v-for="(item,index) in orderData.orderItems" :key="index">
- <view class="item-row">id:{{item.id}}</view>
- <view class="item-row">orderId:{{item.orderId}}</view>
- <view class="item-row">orderSn:{{item.orderSn}}</view>
- <view class="item-row">productId:{{item.productId}}</view>
- <view class="item-row">productName:{{item.productName}}</view>
- <view class="item-row">productSn:{{item.productSn}}</view>
- <view class="item-row">productQuantity:{{item.productQuantity}}</view>
- <view class="item-row">productSkuId:{{item.productSkuId}}</view>
- <view class="item-row">productCategoryId:{{item.productCategoryId}}</view>
- <view class="item-row">realAmount:{{item.realAmount}}</view>
- <view class="item-row">totalPrice:{{item.totalPrice}}</view>
- <view class="item-row">productAttr:{{item.productAttr}}</view>
- </view>
- </view>
- <view>
- <button type="primary" @tap="save">确认付款</button>
- </view>
- </view>
- </template>
-
- <script>
- import {getPreOrderById, addConfirmOrder} from '@/api/order/index.js'
-
- export default {
- data() {
- return {
- orderId:null,
- orderData:{},
- address:null
- };
- },
- methods: {
- save(){
- addConfirmOrder({
- addressId: uni.getStorageSync("b-address").id,
- orderId: this.orderId,
- orderItemList: this.orderData.orderItems,
- payType: "",
- sourceType: ""
- }).then(res=>{
- console.log(res)
- uni.showToast({
- title:`付款${res.message},订单号是${res.data.orderId},订单查询码是${res.data.ordersn},总金额是${res.data.totalAmount}`,
- icon:'none',
- mask:true,
- duration:2000
- });
- setTimeout(()=>{
- uni.switchTab({
- url:'/pages/home/home'
- });
- },1500);
-
- })
- }
- },
- onLoad(options) {
- this.orderId = options.orderId;
- getPreOrderById(this.orderId).then(res=>{
- console.log(res);
- this.orderData = res.data;
- })
- },
- onShow() {
- let address = uni.getStorageSync("b-address");
- this.address = address;
- }
- }
- </script>
-
- <style lang="scss">
- .order{
- background-color: #F3EDE7;
- width: 100%;
- height: 100vh;
-
- .address{
- padding: 10rpx;
- .address-name{
- font-size: 40rpx;
- font-weight: bold;
- }
-
- .address-phone{
- font-size: 30rpx;
- margin-left: 100rpx;
- }
-
- .address-detail{
- font-size: 30rpx;
- }
- }
-
- .row{
- width: 100%;
- height: 30rpx;
- padding: 2rpx 10rpx;
-
- }
-
- .order-items{
- width: 90%;
- margin: 0 auto;
- background-color: #fff;
- border-radius: 30rpx;
-
- .order-item{
- min-height: 300rpx;
- margin-top: 20rpx;
- .item-row{
- font-size: 14px;
- min-height: 20rpx;
- line-height: 20rpx;
- padding: 2rpx 10rpx;
- margin-top: 15rpx;
-
- }
- }
- }
- }
- </style>
- <template>
- <view class="address">
- <view class="row" v-for="item in addressList" :key="item.id" @tap="save(item)">
- <text class="item-name">{{item.name}}</text>
- <text class="item-address">{{item.province}}{{item.city}}{{item.region}}</text>
- <text class="item-detail">{{item.detailAddress}}</text>
- </view>
-
- <button type="default" @tap="add" style="background-color:#344B44; border-radius: 50rpx;color: white;">新增地址</button>
- </view>
- </template>
-
- <script>
-
-
- import {getAllAddress} from '@/api/order/address/index.js'
- import mix from '@/minxins/index.js'
-
- export default {
- mixins:[mix],
- data() {
- return {
- addressList:[]
- };
- },
- methods:{
- add(){
-
- },
- save(obj){
- uni.setStorageSync("b-address",obj);
- //回退一层
- uni.navigateBack({
- delta:1
- });
- }
- },
- onLoad() {
- //先判断是否登录
- if(!this.checkLogin()){
- uni.showToast({
- title:'请先登录',
- icon:'none'
- });
- return;
- }
- getAllAddress().then(res=>{
- console.log(res)
- this.addressList = res.data.items;
- })
- }
- }
- </script>
-
- <style lang="scss">
- .address{
- background-color: #F3EDE7;
- width: 100%;
- height: 100vh;
-
- .row{
- width: 100%;
- height: 100rpx;
- line-height: 100rpx;
- border-bottom: 1px solid #E4DED9;
-
- .item-name{
- padding: 20rpx;
- font-size: 45rpx;
- margin-right: 40rpx;
- }
-
- }
- }
- </style>
- <script>
- export default {
- onLaunch: function() {
- console.log('App Launch')
- },
- onShow: function() {
- console.log('App Show')
- },
- onHide: function() {
- console.log('App Hide')
- }
- }
- </script>
-
- <style>
- /*每个页面公共css */
- * {
- padding: 0;
- margin: 0;
- }
-
- </style>
- {
- "pages": [ //pages数组中第一项表示应用启动页,参考:https://uniapp.dcloud.io/collocation/pages
- {
- "path" : "pages/home/home",
- "style" :
- {
- "navigationBarTitleText" : "首页",
- "enablePullDownRefresh" : false,
- //也可以去掉导航栏
- "navigationStyle": "custom"
- //在h5中,去掉导航栏
- // "h5": {
- // "titleNView": false
- // }
- }
- },
- {
- "path" : "pages/kind/kind",
- "style" :
- {
- "navigationBarTitleText" : "分类",
- "enablePullDownRefresh" : false
- }
- },
- {
- "path" : "pages/find/find",
- "style" :
- {
- "navigationBarTitleText" : "发现",
- "enablePullDownRefresh" : false
- }
- },
- {
- "path" : "pages/mine/mine",
- "style" :
- {
- "navigationBarTitleText" : "我的",
- "enablePullDownRefresh" : false
- }
- },
- {
- "path" : "pages/index/index",
- "style" :
- {
- "navigationBarTitleText" : "",
- "enablePullDownRefresh" : false
- }
- },
- {
- "path": "pages/index2/index2",
- "style": {
- "navigationBarTitleText": "首页",
- "enablePullDownRefresh" : false
- }
- },
- {
- "path" : "pages/kind/list/list",
- "style" :
- {
- "navigationBarTitleText" : "",
- "enablePullDownRefresh" : false
- }
- },
- {
- "path" : "pages/kind/goods/goods",
- "style" :
- {
- "navigationBarTitleText" : "",
- "enablePullDownRefresh" : true
-
- }
- },
- {
- "path" : "pages/info/info",
- "style" :
- {
- "navigationBarTitleText" : "",
- "enablePullDownRefresh" : false
- }
- },
- {
- "path" : "pages/mine/login/login",
- "style" :
- {
- "navigationBarTitleText" : "",
- "enablePullDownRefresh" : false
- }
- },
- {
- "path" : "pages/mine/register/register",
- "style" :
- {
- "navigationBarTitleText" : "",
- "enablePullDownRefresh" : false
- }
- },
- {
- "path" : "pages/order/order",
- "style" :
- {
- "navigationBarTitleText" : "",
- "enablePullDownRefresh" : false
- }
- },
- {
- "path" : "pages/order/address/address",
- "style" :
- {
- "navigationBarTitleText" : "",
- "enablePullDownRefresh" : false
- }
- }
- ],
- "globalStyle": {
- "navigationBarTextStyle": "black",
- "navigationBarTitleText": "uni-app",
- "navigationBarBackgroundColor": "#F8F8F8",
- "backgroundColor": "#F8F8F8"
- },
- "uniIdRouter": {},
- "tabBar": {
- "color": "#7A7E83",
- "selectedColor": "#3cc51f",
- "borderStyle": "black",
- "backgroundColor": "#ffffff",
- "list": [
- {
- "pagePath": "pages/home/home",
- "iconPath": "static/images/icon1.png",
- "selectedIconPath": "static/images/icon2.png",
- "text": "首页"
- },
- {
- "pagePath": "pages/kind/kind",
- "iconPath": "static/images/icon1.png",
- "selectedIconPath": "static/images/icon2.png",
- "text": "分类"
- },
- {
- "pagePath": "pages/find/find",
- "iconPath": "static/images/icon1.png",
- "selectedIconPath": "static/images/icon2.png",
- "text": "发现"
- },
- {
- "pagePath": "pages/mine/mine",
- "iconPath": "static/images/icon1.png",
- "selectedIconPath": "static/images/icon2.png",
- "text": "我的"
- }
- ]
- }
- }
-
- /*
- 接口文档
- http://leju.bufan.cloud/swagger-ui.html#/23458251433147158583614129289367102716922359/addCartUsingPOST_1
-
- */
以上就是全部代码了,虽然我没有按照视频教程中的内容把剩余的步骤完成。但是这个我学习的差不多了,需要吸收一下。
后续如果我还有uniapp的代码,还是会贴出来的。
感谢大家。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。