[200~1.兼容中国台湾、中国香港手机号码

This commit is contained in:
liuyuan
2025-07-10 14:29:44 +08:00
parent c7bab5afb4
commit f71ab1b442
27 changed files with 5393 additions and 4190 deletions

View File

@@ -2,12 +2,13 @@ let baseUrl = "";
let socketUrl = ""; let socketUrl = "";
if (process.env.NODE_ENV === 'development') { if (process.env.NODE_ENV === 'development') {
// 开发环境 // 开发环境
baseUrl = "https://api.nuttyreading.com/"; //线上正式 //baseUrl = "https://api.nuttyreading.com/"; //线上正式
//baseUrl = "http://192.168.110.100:9200/pb/"; //张川川 baseUrl = "http://192.168.110.100:9200/pb/"; //张川川
} else if (process.env.NODE_ENV === 'production') { } else if (process.env.NODE_ENV === 'production') {
// 生产环境11 // 生产环境11
baseUrl = "https://api.nuttyreading.com/"; //baseUrl = "https://api.nuttyreading.com/";
//baseUrl = "http://192.168.110.100:9200/pb/"; //张川川 //baseUrl = "https://testapi.nuttyreading.com/"; //线上正式
baseUrl = "http://192.168.110.100:9200/pb/"; //张川川
} }
const courtConfig = { const courtConfig = {
//微信公众号APPID1 //微信公众号APPID1

View File

@@ -17,8 +17,8 @@ import {
Vue.prototype.$getHours = nowHour Vue.prototype.$getHours = nowHour
// 地址 // 地址
//Vue.prototype.$baseUrl = "http://192.168.110.100:9100/pb/" Vue.prototype.$baseUrl = "http://192.168.110.100:9100/pb/"
Vue.prototype.$baseUrl = "https://api.nuttyreading.com/" //Vue.prototype.$baseUrl = "https://api.nuttyreading.com/"
// 安卓安卓包下载地址 // 安卓安卓包下载地址
// Vue.prototype.$apkUrl = "https://www.nuttyreading.com/nuttyreading.apk" // 本地地址 // Vue.prototype.$apkUrl = "https://www.nuttyreading.com/nuttyreading.apk" // 本地地址

View File

@@ -12,8 +12,8 @@
"src" : "图片路径" "src" : "图片路径"
} }
], ],
"versionName" : "2.0.14", "versionName" : "2.0.15",
"versionCode" : 2014, "versionCode" : 2015,
"app-plus" : { "app-plus" : {
"nvueCompiler" : "uni-app", "nvueCompiler" : "uni-app",
"compatible" : { "compatible" : {

View File

@@ -30,9 +30,9 @@
} }
}, },
{ {
"path": "pages/peanut/shopping", "path": "pages/goods/shopping/index",
"style": { "style": {
"navigationBarTitleText": "购物车", "navigationBarTitleText": "我的购物车",
"enablePullDownRefresh": false "enablePullDownRefresh": false
} }
}, },

View File

@@ -7,8 +7,6 @@
<public-module></public-module> <public-module></public-module>
<z-nav-bar <z-nav-bar
title="我的订单" title="我的订单"
bgColor="#258feb"
fontColor="#fff"
:backState="2000" :backState="2000"
> >
</z-nav-bar> </z-nav-bar>

View File

@@ -59,7 +59,8 @@
<slot name="goodsInfoPriceSlot" :row="v" :rowIndex="i"></slot> <slot name="goodsInfoPriceSlot" :row="v" :rowIndex="i"></slot>
<u-number-box <u-number-box
v-model="orderNumber" v-model="v.productAmount"
@change="valChange($event, v)"
style="float: right" style="float: right"
v-if="showNumber" v-if="showNumber"
> >
@@ -70,13 +71,13 @@
slot="input" slot="input"
style="width: auto; text-align: center; border: none" style="width: auto; text-align: center; border: none"
class="input" class="input"
>{{ orderNumber }}</text >{{ v.productAmount }}</text
> >
<view slot="plus" class="plus"> <view slot="plus" class="plus">
<u-icon name="plus" color="#FFFFFF" size="12"></u-icon> <u-icon name="plus" color="#FFFFFF" size="12"></u-icon>
</view> </view>
</u-number-box> </u-number-box>
<text v-else style="float: right"> X {{ orderNumber }}</text> <text v-else style="float: right"> X {{ v.productAmount }}</text>
</view> </view>
</view> </view>
</view> </view>
@@ -576,9 +577,6 @@
if (this.orderNumber >= 1) { if (this.orderNumber >= 1) {
this.$nextTick(async () => { this.$nextTick(async () => {
await this.getGoodsList(); await this.getGoodsList();
// await this.getVipFei();
// await this.getDistrictAmount();
// await this.getActiveCouponList();
}); });
} }
this.$forceUpdate(); this.$forceUpdate();
@@ -810,33 +808,31 @@
this.xieyiShow = true; this.xieyiShow = true;
}, },
async getGoodsList() { async getGoodsList() {
//获取商品信息 //获取商品信息
// await this.getGoodsDataInfo(); await this.initPrepareOrder();
await this.initPrepareOrder();
this.$nextTick(async () => { if (this.pageType == "vip") {
if (this.pageType == "vip") { await this.getTotalPrice();
await this.getTotalPrice(); } else {
} else { await this.getVipFei();
await this.getVipFei(); await this.getDistrictAmount();
await this.getDistrictAmount(); await this.getActiveCouponList();
await this.getActiveCouponList(); }
}
var list = [...this.goodsDataList];
var list = [...this.goodsDataList]; list = list.map((e) => e.goodsType);
list = list.map((e) => e.goodsType); this.haveCourse = list.some((ele) => ele === "05");
this.haveCourse = list.some((ele) => ele === "05"); if (this.options.sourceType == "curriculum") {
if (this.options.sourceType == "curriculum") { this.goToInfo = {
this.goToInfo = { url: "/pages/course/myCourse",
url: "/pages/course/myCourse", type: 2,
type: 2, };
}; } else {
} else { this.goToInfo = {
this.goToInfo = { url: "/pages/bookShop/orderList",
url: "/pages/bookShop/orderList", type: 1,
type: 1, };
}; }
}
});
}, },
async getVipFei() { async getVipFei() {
let key = []; let key = [];
@@ -844,14 +840,14 @@
this.goodsDataList.forEach((item, index) => { this.goodsDataList.forEach((item, index) => {
key.push({ key.push({
productId: item.productId, productId: item.productId,
quantity: this.orderNumber, quantity: item.productAmount
}); });
}); });
await $http await $http
.request({ .request({
url: "/book/buyOrder/getVipDiscountAmount", url: "/book/buyOrder/getVipDiscountAmount",
method: "POST", // POST、GET、PUT、DELETE具体说明查看官方文档 method: "POST",
data: { data: {
productList: key, productList: key,
}, },
@@ -861,7 +857,7 @@
}) })
.then(async (res) => { .then(async (res) => {
if (res.code == 0) { if (res.code == 0) {
console.log("res.code at line 538:", res); console.log("getVipDiscountAmount---------:", res);
this.vipPrice = res.discountAmount; this.vipPrice = res.discountAmount;
await this.getTotalPrice(); await this.getTotalPrice();
} }
@@ -874,31 +870,24 @@
this.goodsDataList.forEach((item, index) => { this.goodsDataList.forEach((item, index) => {
key.push({ key.push({
productId: item.productId, productId: item.productId,
quantity: this.orderNumber, quantity: item.productAmount
}); });
// dataToString = dataToString.concat(item.productId+"="+item.productAmount+"&")
}); });
console.log(key, "this.adressMoRen.areaidpath");
await $http await $http
.request({ .request({
// url: "book/buyOrder/calculateTransportPrice/",
url: "/book/buyOrder/getDistrictAmount", url: "/book/buyOrder/getDistrictAmount",
// url: "book/buyorder/getTransPrice/" + this.adressMoRen.areaidpath + "?" + dataToString, method: "POST",
method: "POST", // POST、GET、PUT、DELETE具体说明查看官方文档
data: { data: {
productList: key, productList: key,
}, },
header: { header: {
//默认 无 说明:请求头
"Content-Type": "application/json", "Content-Type": "application/json",
}, },
}) })
.then(async (res) => { .then(async (res) => {
if (res.code == 0) { if (res.code == 0) {
console.log("res.code at line 538111111111111111:", res);
this.districtAmount = res.districtAmount; this.districtAmount = res.districtAmount;
// console.log('需要的运费', res.result)
await this.getTotalPrice(); await this.getTotalPrice();
} }
}); });
@@ -923,7 +912,7 @@
this.goodsDataList.forEach((e) => { this.goodsDataList.forEach((e) => {
var str = `${e.productId}:${ var str = `${e.productId}:${
e.activityPrice > 0 ? e.activityPrice : e[this.priceKey] e.activityPrice > 0 ? e.activityPrice : e[this.priceKey]
}:${this.orderNumber}`; }:${e.productAmount}`;
list.push(str); list.push(str);
}); });
@@ -1061,6 +1050,32 @@
this.$forceUpdate(); this.$forceUpdate();
}); });
}, },
//修改数量
valChange(e, item) {
let productItem = {};
productItem = item;
productItem.productAmount = e.value;
this.updateCart(productItem);
this.$nextTick(async () => {
await this.getGoodsList();
});
},
//更新购物车
updateCart(data) {
$http.request({
url: "book/ordercart/update",
method: "POST",
data: data,
header: {
"Content-Type": "application/json",
},
})
.then((res) => {
if (res.code == 0) {
console.log('更新购物车---')
}
});
},
onHandleClickBuy() { onHandleClickBuy() {
this.orderModalShow = false; this.orderModalShow = false;
this.remark = this.content; this.remark = this.content;
@@ -1112,21 +1127,14 @@
}, },
]; ];
} }
if ( if (this.goodsDataList.some(item => item.activityPrice && item.activityPrice > 0)) {
this.goodsDataList[0].activityPrice &&
this.goodsDataList[0].activityPrice > 0
) {
this.priceBreakdownList.push({ this.priceBreakdownList.push({
text: "活动立减", text: "活动立减",
imgUrl: "", imgUrl: "",
type: 5, type: 5,
}); });
} }
if ( if (this.goodsDataList.some(item => item.isVipPrice==1 && item.vipPrice && item.vipPrice > 0)) {
this.goodsDataList[0].isVipPrice &&
this.goodsDataList[0].vipPrice &&
this.goodsDataList[0].vipPrice > 0
) {
this.priceBreakdownList.push({ this.priceBreakdownList.push({
text: "VIP专享立减", text: "VIP专享立减",
imgUrl: "", imgUrl: "",
@@ -1210,7 +1218,7 @@
products: this.goodsDataList.map((e) => { products: this.goodsDataList.map((e) => {
return { return {
productId: e.productId, productId: e.productId,
quantity: this.orderNumber, quantity: e.productAmount
}; };
}), }),
regionCode: this.addressData.regionCode, regionCode: this.addressData.regionCode,
@@ -1244,11 +1252,14 @@
async getTotalPrice() { async getTotalPrice() {
var s = 0; var s = 0;
var that = this; var that = this;
for (var i = this.goodsDataList.length - 1; i >= 0; i--) { that.goodsDataList.forEach((item, index) => {
s += this.goodsDataList[i][this.priceKey]; let price = 0;
} price = (item.productAmount * item.price).toFixed(2);
that.totalPrice = s * this.orderNumber; s += Number(price);
console.log("that.totalPrice at line 1226:", that.totalPrice); });
that.totalPrice = s;
var couponAmount = 0; var couponAmount = 0;
var couponData = this.selectcouponList.filter( var couponData = this.selectcouponList.filter(
(e) => e.couponId == that.curCouponId (e) => e.couponId == that.curCouponId
@@ -1427,12 +1438,11 @@
productList: this.goodsDataList.map((e) => { productList: this.goodsDataList.map((e) => {
return { return {
productId: e.productId, productId: e.productId,
quantity: this.orderNumber, quantity: e.productAmount
}; };
}), //订单列表商品 }), //订单列表商品
orderType: "order", //订单类型 orderType: "order", //订单类型
addressId: addressId: this.options.goods[0].goodsType != "05" ? this.addressData.id : 0, // 地址ID
this.options.goods[0].goodsType != "05" ? this.addressData.id : 0, // 地址ID
appName: this.appName, appName: this.appName,
come: this.come, come: this.come,
}; };
@@ -1855,14 +1865,10 @@
width: calc(100% - 160rpx); width: calc(100% - 160rpx);
height: auto; height: auto;
float: right; float: right;
// overflow: hidden;
.normal_box_top { .normal_box_top {
width: 100%; width: 100%;
display: flex; display: flex;
height: 100rpx;
// margin-bottom: 40rpx;
} }
} }
} }

View File

@@ -333,6 +333,7 @@ export default {
changeCountry(){ changeCountry(){
this.initPickerData(); this.initPickerData();
}, },
//左上角返回操作
handleBack(){ handleBack(){
uni.setStorageSync('fixed',true) uni.setStorageSync('fixed',true)
}, },
@@ -500,6 +501,9 @@ export default {
}) })
} }
}, },
onBackPress(){
uni.setStorageSync('fixed',true)
},
}; };
</script> </script>
<style lang="scss" scoped> <style lang="scss" scoped>

View File

@@ -2,7 +2,7 @@
<view class="container commonPageBox commonDetailPage"> <view class="container commonPageBox commonDetailPage">
<!-- 公共组件-每个页面必须引入 --> <!-- 公共组件-每个页面必须引入 -->
<public-module></public-module> <public-module></public-module>
<z-nav-bar title="商品详情" bgColor="#258feb" fontColor="#fff"></z-nav-bar> <z-nav-bar title="商品详情"></z-nav-bar>
<view <view
class="contentBox commonPageContentBox" class="contentBox commonPageContentBox"
@@ -424,7 +424,7 @@
:fill="true" :fill="true"
:options="buyOptions" :options="buyOptions"
:button-group="customButtonGroup1" :button-group="customButtonGroup1"
@click="onHandleClickBuy" @click="onHandleClick"
@buttonClick="onHandleClickBuy1" @buttonClick="onHandleClickBuy1"
/> />
</view> </view>
@@ -540,7 +540,10 @@ export default {
parameterList: [], parameterList: [],
booksList: [], booksList: [],
coursesList: [], coursesList: [],
buyOptions: [], buyOptions: [{
icon: "cart",
text: "购物车",
}],
swiperList: [], swiperList: [],
goodsList: [], goodsList: [],
@@ -611,14 +614,21 @@ export default {
visitorDetailInfo: "visitor/getProductDetail", // 游客状态下的商品详情 visitorDetailInfo: "visitor/getProductDetail", // 游客状态下的商品详情
}, },
customButtonGroup1: [ customButtonGroup1: [
{
text: "加入购物车",
backgroundColor: "linear-gradient(90deg, #FFCD1E, #FF8A18)",
color: "#fff",
},
{ {
with: 200, text: "立即购买",
text: "立即购买", backgroundColor: "linear-gradient(90deg, #FE6035, #EF1224)",
backgroundColor: "linear-gradient(90deg, #FE6035, #EF1224)", color: "#fff",
color: "#fff",
}, },
], ],
requestType: "", // 数据请求类型是否为游客登陆状态 requestType: "", // 数据请求类型是否为游客登陆状态
buttonType: '', //点击的是加入购物车还是购买
cartList: [], // 购物车列表
productAmount: 1, // 商品数量
}; };
}, },
filters: { filters: {
@@ -749,11 +759,19 @@ export default {
} }
this.selectGoodsData = data; this.selectGoodsData = data;
this.$refs.commonSelectGoods.open(); this.$refs.commonSelectGoods.open();
// this.show = true;
this.$forceUpdate(); this.$forceUpdate();
}, },
onHandleClickBuy1() { //点击购物车
onHandleClick(){
console.log('点击购物车')
uni.navigateTo({
url: "/pages/goods/shopping/index",
});
},
//点击筛选商品
onHandleClickBuy1(e) {
this.buttonType = e.index;
if (this.requestType == "visitor") { if (this.requestType == "visitor") {
uni.showModal({ uni.showModal({
content: "登陆后可购买本商品", content: "登陆后可购买本商品",
@@ -770,34 +788,126 @@ export default {
return; return;
} }
this.$refs.commonSelectGoods.open(); this.$refs.commonSelectGoods.open();
// this.show = true;
}, },
//点击下单按钮
onHandleClickBuy() { onHandleClickBuy() {
console.log( if(this.buttonType==0){ //如果是加入购物车
this.selectGoodsData, console.log('剩余', this.selectGoodsData.productStock)
"this.selectGoodsDatathis.selectGoodsDatathis.selectGoodsData" if(this.selectGoodsData.productStock==0){
); uni.showToast({
var mynavData = JSON.stringify({ title: "商品库存不足",
goods: [ icon: "none",
{ duration: 1000,
productImages: this.selectGoodsData.productImages, });
productId: this.selectGoodsData.productId, }else{
productName: this.selectGoodsData.productName, this.$http.post(`book/ordercart/getCartList?userId=${this.userInfo.id}`)
activityPrice: this.selectGoodsData.activityPrice, .then((res) => {
price: this.selectGoodsData.price, this.cartList = res.cartList;
goodsType: this.selectGoodsData.goodsType, this.isAddLink(this.selectGoodsData);
}, });
], }
}else{
navTitle: this.options.navTitle, var mynavData = JSON.stringify({
title: this.options.title, goods: [
typeId: 0, {
}); // 这里转换成 字符串 productImages: this.selectGoodsData.productImages,
productId: this.selectGoodsData.productId,
uni.navigateTo({ productName: this.selectGoodsData.productName,
url: `/pages/goods/order/index?data=${mynavData}`, activityPrice: this.selectGoodsData.activityPrice,
}); price: this.selectGoodsData.price,
goodsType: this.selectGoodsData.goodsType,
productAmount: 1,
},
],
navTitle: this.options.navTitle,
title: this.options.title,
typeId: 0,
});
uni.navigateTo({
url: `/pages/goods/order/index?data=${mynavData}`,
});
}
}, },
//统计商品信息
isAddLink(item) {
let data = {
userId: this.userInfo.id,
productId: item.productId,
productAmount: this.productAmount,
price: item.price,
};
// 判断列表是否为空
if (this.cartList.length > 0) {
let flag = "";
let shagnpin = {};
// 循环购物车列表
flag = this.cartList.some((item, index) => {
if (item.productId == data.productId) {
shagnpin = item;
shagnpin.productAmount = item.productAmount + 1;
return true;
}
});
if (flag) {
// 已在购物车中添加
$http.request({
url: "book/ordercart/update",
method: "POST",
data: shagnpin,
header: {
"Content-Type": "application/json",
},
})
.then((res) => {
if (res.code == 0) {
uni.showToast({
title: "加入购物车成功",
duration: 1000,
});
}
});
} else {
// 加入购物车
$http.request({
url: "book/ordercart/save",
method: "POST",
data,
header: {
"Content-Type": "application/json",
},
})
.then((res) => {
if (res.code == 0) {
uni.showToast({
title: "加入购物车成功",
duration: 1000,
});
}
});
}
} else {
// 购物车列表为空时直接加入购物车
$http.request({
url: "book/ordercart/save",
method: "POST",
data,
header: {
"Content-Type": "application/json",
},
})
.then((res) => {
if (res.code == 0) {
uni.showToast({
title: "加入购物车成功",
duration: 1000,
});
}
});
}
this.$refs.commonSelectGoods.close();
},
buttonClick(e) { buttonClick(e) {
this.options[2].info++; this.options[2].info++;
}, },

View File

@@ -2,7 +2,7 @@
<view class="container commonPageBox commonDetailPage"> <view class="container commonPageBox commonDetailPage">
<!-- 公共组件-每个页面必须引入 --> <!-- 公共组件-每个页面必须引入 -->
<public-module></public-module> <public-module></public-module>
<z-nav-bar title="确认订单" bgColor="#258feb" fontColor="#fff"></z-nav-bar> <z-nav-bar title="确认订单"></z-nav-bar>
<common-order-submit <common-order-submit
v-if="showOrder" v-if="showOrder"
@@ -33,32 +33,19 @@
> >
</template> </template>
<template slot="goodsInfoImgSlot" slot-scope="slotProps"> <template slot="goodsInfoImgSlot" slot-scope="slotProps">
<image
v-if="pageType == 'vip'"
src="/static/icon/vip.png"
class="goods_item_img"
mode="widthFix"
></image>
<image <image
v-if="pageType == 'vip'" v-if="pageType!= 'vip'&&slotProps.row.productImages && slotProps.row.productImages != ''"
src="/static/icon/vip.png"
class="goods_item_img"
mode="widthFix"
@click="goDetail(slotProps.row.productId)"
></image>
<image
v-else-if="
(pageType == 'goods' || pageType == 'fudu') &&
slotProps.row.productImages &&
slotProps.row.productImages != ''
"
class="goods_item_img" class="goods_item_img"
:src="slotProps.row.productImages" :src="slotProps.row.productImages"
mode="aspectFit" mode="aspectFit"
> >
</image> </image>
<image
v-else
src="/static/nobg1.jpg"
class="goods_item_img"
mode="widthFix"
@click="goDetail(slotProps.row.productId)"
></image>
</template> </template>
<template slot="goodsInfoNameSlot" slot-scope="slotProps"> <template slot="goodsInfoNameSlot" slot-scope="slotProps">
<span v-if="pageType == 'vip'" <span v-if="pageType == 'vip'"
@@ -173,7 +160,6 @@ export default {
//vip订单 //vip订单
this.pageType = "vip"; this.pageType = "vip";
this.showNumber = false; this.showNumber = false;
// this.isHideAddress = true;
this.priceKey = "rebateFee"; this.priceKey = "rebateFee";
await this.getVipDataInfo(); await this.getVipDataInfo();
} else { } else {
@@ -221,7 +207,7 @@ export default {
productList: this.options.goods.map((e) => { productList: this.options.goods.map((e) => {
return { return {
productId: e.productId || e.id, productId: e.productId || e.id,
quantity: 1, quantity: e.productAmount,
}; };
}), }),
}; };
@@ -295,7 +281,6 @@ export default {
this.goodsDataList = res.productList.filter( this.goodsDataList = res.productList.filter(
(e) => this.options.goods[0].productName == e.productName (e) => this.options.goods[0].productName == e.productName
); );
}); });
}, },
@@ -320,7 +305,6 @@ export default {
{ {
...data, ...data,
productId: data.id, productId: data.id,
price: data.rebateFee, price: data.rebateFee,
}, },
]; ];
@@ -340,7 +324,11 @@ export default {
}, },
}) })
.then(async (res) => { .then(async (res) => {
this.goodsDataList = res.shopProductList; res.shopProductList.forEach(product => {
const cartItem = this.options.goods.find(item => item.productId === product.productId);
product.productAmount = cartItem ? cartItem.productAmount : 1;
});
this.goodsDataList = res.shopProductList;
}); });
}, },
}, },
@@ -353,6 +341,9 @@ export default {
</script> </script>
<style lang="scss" scoped> <style lang="scss" scoped>
.commonPage, .commonPageBox {
height: calc(100vh - 50px);
}
.goodsvipLabel { .goodsvipLabel {
position: absolute; position: absolute;
z-index: 10; z-index: 10;

View File

@@ -0,0 +1,384 @@
<template>
<view>
<z-nav-bar title="我的购物车"></z-nav-bar>
<view class="shopCarContent">
<scroll-view scroll-y="true" v-if="cartList.length>0">
<view class="cartItem" v-for="(item,index) in cartList" :key="index">
<view class="select">
<checkbox style="transform:scale(0.8)" :checked="item.checked" @click="checkboxGroupChange(index,item)" class="round checkedItem" />
</view>
<view class="cartContent" style="position: relative;">
<span v-if="item.isVipPrice==1&&item.vipPrice!=0&&item.vipPrice!=null"
style="position: absolute;z-index: 1;top: 4px;left: 0px; text-align: center;font-size: 18rpx;background-color: #f94f04;color: #fff; border-radius:4px; padding:2px 4px;line-height: 14px;">VIP优惠</span>
<image :src="item.image" mode="" @click="goDetail(item.productId)"></image>
<view class="itemCenter">
<view class="cartTitle" @click="goDetail(item.productId)" style="display: flex;align-items: center;">
<text>{{item.productName}}</text>
</view>
<view class="itemPrice">
<text v-if="item.isVipPrice==1&&item.vipPrice!=0&&item.vipPrice!=null">
<text style="color: #e97512;font-size: 16px;font-weight: bold;">{{(item.vipPrice).toFixed(2)}}</text>
<text style="color: #8a8a8a;font-size: 14px;margin-left: 4px;font-weight: bold;text-decoration: line-through;">{{(item.price).toFixed(2)}}</text>
</text>
<text
v-else-if="item.activityPrice && item.activityPrice > 0">
<text style="color: #e97512;font-size: 16px;font-weight: bold;">{{(item.activityPrice).toFixed(2)}}</text>
<text style="color: #8a8a8a;font-size: 14px;margin-left: 4px;font-weight: bold;text-decoration: line-through;">{{(item.price).toFixed(2)}}</text>
</text>
<text v-else style="color: #e97512;font-size: 16px;font-weight: bold;">{{item.price}}</text>
<u-number-box button-size="20" v-model="item.productAmount" @change="valChange($event,item)"
:input-width="25" :input-height="10" :min="1" :max="item.productStock" integer
@overlimit='overlimit'></u-number-box>
</view>
</view>
</view>
</view>
</scroll-view>
<view v-else style=" font-size: 28rpx; text-align: center; padding-top: 100rpx; color: #999;">暂无数据</view>
</view>
<!-- 底部操作区 -->
<view class="shopCarFooter">
<view class="selectAll">
<checkbox :checked="all" style="transform:scale(0.8)" @click="isSelectAll()" class="round checkedItem" />
<text class="cartCho">全选</text>
<button class="mini-btn"
style="border-radius: 10rpx; font-size: 26rpx; line-height: 30rpx; padding: 10rpx 25rpx; margin-left: 20rpx;"
v-if="isCartDelShow" @click="delCart()" type="warn" size="mini">删除</button>
</view>
<view class="exhibition">
<view class="total">合计: <b>{{totalPrice}}</b>
</view>
<view class="settlement" @click="setTment()">
结算
</view>
</view>
</view>
</view>
</template>
<script>
import $http from '@/config/requestConfig.js';
import {
mapState
} from 'vuex';
export default {
data() {
return {
playData: {},
totalPrice: 0, // 总价
all: false, // 是否全选
isCartDelShow: false, // 是否展示删除按钮
cartList: [] // 购物车列表
};
},
//第一次加载
onLoad(e) {
this.getCartList()
},
//页面显示
onShow() {
this.getCartList();
this.all = false;
this.isCartDelShow = false
this.totalPrice = 0
},
computed: {
...mapState(['userInfo']),
},
//方法
methods: {
// 获取购物车列表
getCartList() {
this.$http.post(`book/ordercart/getCartList?userId=${this.userInfo.id}`).then(res => {
this.cartList = res.cartList
if (res.cartList.length > 0) {
res.cartList.forEach((item, index) => {
item.checked = false
})
this.cartList = res.cartList
}
})
},
// 是否全选
isSelectAll(e) {
if (this.cartList.length > 0) {
this.all = !this.all
this.cartList.forEach((item, index) => {
item.checked = this.all
})
this.isCartDelShow = this.all
this.total()
} else {
this.all = false
}
},
// 选中单独商品
checkboxGroupChange(index, item) {
// 修改当前item的checked
this.cartList[index].checked = !item.checked
// 判断是否全选
this.all = this.cartList.every((item, index) => {
return item.checked == true
})
// 判断是否展示删除按钮
this.isCartDelShow = this.cartList.some((item, index) => {
return item.checked == true
})
// 计算总价
this.total()
},
// 计算总价
total() {
let allprice = 0;
this.cartList.forEach((item, index) => {
let price = 0;
if (item.checked) {
if (item.isVipPrice == 1 && item.vipPrice != 0) {
price = (item.productAmount * item.vipPrice).toFixed(2);
} else {
if (item.activityPrice && item.activityPrice > 0) {
price = (item.productAmount * item.activityPrice).toFixed(2);
} else {
price = (item.productAmount * item.price).toFixed(2);
}
}
}
allprice += Number(price)
})
this.totalPrice = allprice.toFixed(2)
},
// 超出阈值时
overlimit() {
uni.showToast({
title: '超出商品数量',
icon: 'error',
duration: 1000
})
},
valChange(e, item) {
console.log(e)
let productItem = {}
productItem = item
productItem.productAmount = e.value
this.updateCart(productItem)
setTimeout(() => {
this.total()
}, 300)
},
// 更新购物车
updateCart(shagnpin) {
// 已在购物车中添加
$http.request({
url: "book/ordercart/update",
method: "POST",
data: shagnpin,
header: {
'Content-Type': 'application/json'
}
}).then(res => {
if (res.code == 0) {
}
})
},
// 删除购物车
delCart() {
let cartIdArr = [];
this.cartList.forEach((item, index) => {
if (item.checked) {
cartIdArr.push(item.cartId)
}
})
uni.showModal({
title: '提示',
content: '是否删除这个商品',
confirmText: '确定',
success: (res) => {
if (res.confirm) {
uni.showLoading({
title: '加载中',
mask: true
})
console.log(cartIdArr)
$http.request({
url: "book/ordercart/delete",
method: "POST",
data: cartIdArr,
header: {
'Content-Type': 'application/json'
},
}).then(res => {
this.isCartDelShow = false
this.totalPrice = 0
this.getCartList()
uni.hideLoading();
this.all = false;
})
} else {
console.log('cancel') //点击取消之后执行的代码
}
}
})
},
// 跳转结算页面
setTment() {
let goods = []
this.cartList.forEach((item, index) => {
if (item.checked) {
goods.push({
productImages: item.productImages,
productId: item.productId,
productName: item.productName,
goodsType: item.goodsType,
productAmount: item.productAmount,
price: item.price,
activityPrice: item.activityPrice,
})
}
})
let mynavData = JSON.stringify({
goods: goods,
typeId: 1
})
// 如果没有勾选
if (goods.length == 0) {
uni.showToast({
title: "请先勾选商品",
icon: 'error',
duration: 1000,
})
} else {
uni.navigateTo({
url: '/pages/goods/order/index?data='+ mynavData
});
}
},
//商品内容跳转
goDetail(id) {
uni.navigateTo({
url: '/pages/goods/index?isMiaosha=1&id='+id
});
},
},
};
</script>
<style lang="scss" scoped>
@import '@/style/mixin.scss';
.shopCarContent {
width: 100%;
height: 100%;
padding-bottom: 104rpx;
padding-top: 20rpx;
.cartItem {
padding: 10rpx 10rpx 10rpx 10rpx;
margin-bottom: 20rpx;
display: flex;
align-items: center;
background-color: #fff;
.cartContent {
flex: 1;
display: flex;
image {
width: 130rpx;
height: 150rpx;
border-radius: 10rpx;
padding: 10rpx;
margin-right: 15rpx;
}
.itemCenter {
flex: 1;
flex-direction: column;
justify-content: space-around;
}
.cartTitle {
font-size: 30rpx;
margin: 35rpx 0 20rpx 0;
}
.itemPrice {
font-size: 28rpx;
display: flex;
justify-content: space-between;
}
}
}
}
.shopCarFooter {
width: 100%;
height: 100rpx;
padding: 20rpx;
background-color: #fff;
display: flex;
align-items: center;
justify-content: space-between;
position: fixed;
bottom: 0;
z-index: 9;
.selectAll {
display: flex;
.cartCho {
font-size: 26rpx;
color: #888;
}
.cartDel {
font-weight: bold;
color: #bf0c0c;
font-size: 14px;
margin: 12rpx 0 0 20rpx;
}
}
.exhibition {
display: flex;
align-items: center;
.total {
font-size: 15px;
padding: 0 40rpx 0 0;
color: #888;
b {
margin-left: 10rpx;
color: #ef1224;
font-size: 35rpx;
}
}
.settlement {
font-size: 28rpx;
font-weight: 700;
padding: 10rpx 50rpx;
background-image: linear-gradient(90deg, rgb(254, 96, 53), rgb(239, 18, 36));
color: #fff;
border-radius: 40rpx;
}
}
}
/deep/.uni-checkbox-input{
border-radius: 50rpx;
}
.shopCarFooter .selectAll{
display: flex;
align-items: center;
}
</style>

View File

@@ -203,8 +203,8 @@
type: "switchTab" type: "switchTab"
}, },
{ {
name: "我的证书", name: "我的购物车",
url: "/pages/certificate/certificate", url: "/pages/goods/shopping/index",
type: "pageJump", type: "pageJump",
}, },
{ {
@@ -212,6 +212,11 @@
url: "/pages/trainingCourse/index", url: "/pages/trainingCourse/index",
type: "pageJump", type: "pageJump",
}, },
{
name: "我的证书",
url: "/pages/certificate/certificate",
type: "pageJump",
},
{ {
name: "我的湖分", name: "我的湖分",
url: "/pages/hufen/hufen", url: "/pages/hufen/hufen",
@@ -427,7 +432,7 @@
url: "/pages/miniClass/DirectorModalList?type=mine", url: "/pages/miniClass/DirectorModalList?type=mine",
type: "pageJump" type: "pageJump"
} }
this.pageList.splice(3, 0, item); this.pageList.splice(4, 0, item);
} }
} }
// 是班长 // 是班长
@@ -441,7 +446,7 @@
url: "/pages/miniClass/MonitorClassList?type=mine", url: "/pages/miniClass/MonitorClassList?type=mine",
type: "pageJump" type: "pageJump"
} }
this.pageList.splice(3, 0, item); this.pageList.splice(4, 0, item);
} }
} }
// 是学员 // 是学员
@@ -455,7 +460,7 @@
url: "/pages/miniClass/myClassList?type=mine", url: "/pages/miniClass/myClassList?type=mine",
type: "pageJump" type: "pageJump"
} }
this.pageList.splice(3, 0, item); this.pageList.splice(4, 0, item);
} }
} }

View File

@@ -141,12 +141,6 @@
</common-select-vip> </common-select-vip>
<u-popup :show="orderModalShow" mode="bottom" :round="20"> <u-popup :show="orderModalShow" mode="bottom" :round="20">
<view class="orderModalShow popup_box"> <view class="orderModalShow popup_box">
<!-- <u-icon name="close" color="#333" size="18" @click="closeOrderModalShow" style="
display: inline-block;
position: absolute;
right: 20rpx;
top: 20rpx;
"></u-icon> -->
<orderPay ref="orderPay" :dataInfo="selectVipData"></orderPay> <orderPay ref="orderPay" :dataInfo="selectVipData"></orderPay>
</view> </view>
</u-popup> </u-popup>

View File

@@ -3,8 +3,6 @@
class="container commonDetailPage" class="container commonDetailPage"
style="background-color: #fff !important" style="background-color: #fff !important"
> >
<!-- 公共组件-每个页面必须引入 -->
<view class="contentBox commonPageContentBox order_box"> <view class="contentBox commonPageContentBox order_box">
<view class="order_top goods_box pay_box"> <view class="order_top goods_box pay_box">
<view class="pay_title">支付方式</view> <view class="pay_title">支付方式</view>

View File

@@ -2,14 +2,7 @@
<view> <view>
<!-- 公共组件-每个页面必须引入 --> <!-- 公共组件-每个页面必须引入 -->
<public-module></public-module> <public-module></public-module>
<z-nav-bar title="我的班级管理"> <z-nav-bar title="班级管理"></z-nav-bar>
</z-nav-bar>
<!-- <view class="tabsBox" :class="[fixed ? 'fixed' : '' ]">
<u-tabs v-if="tabList.length > 0" :class="['tabList']" @click="fatherClick" :current="curTagId"
:activeStyle="activeStyle" :scrollable="scrollable" :list="tabList"
itemStyle="padding-left: 15px; background-color:#fff; padding-right: 15px; height: 50px;"></u-tabs>
</view> -->
<view class="containerBg"> <view class="containerBg">
<view class="subCate flex" v-if="subList1.length> 0"> <view class="subCate flex" v-if="subList1.length> 0">
<text :class="['item',subTabId == item.id ? 'active' : '']" v-for="(item, index) in subList1" <text :class="['item',subTabId == item.id ? 'active' : '']" v-for="(item, index) in subList1"
@@ -77,13 +70,14 @@
</text> </text>
</view> </view>
<view class="jianjie"> <view class="jianjie">
目标学员人数{{item.number}} 目标学员人数{{item.number}} <br/>
<text v-if="item.startTime&&item.studyEndTime">学习日期{{(item.startTime).split('T')[0]}}{{(item.studyEndTime).substring(0, 10)}}<br/></text>
<text v-if="item.examStartTime&&item.examEndTime">考试周日期{{item.examStartTime.substring(0, 10)}}{{(item.examEndTime).substring(0, 10)}}</text>
</view> </view>
<view class="jianjie"> <view class="jianjie">
班内职务{{item.roleName}} 班内职务{{item.roleName}}
</view> </view>
<view class="btn_box"> <view class="btn_box">
<!-- <text @click="enterClass" v-show="item.state == '0'">一键加入</text> -->
<text class="seeInfo">进入班级</text> <text class="seeInfo">进入班级</text>
</view> </view>
</view> </view>
@@ -115,13 +109,14 @@
</text> </text>
</view> </view>
<view class="jianjie"> <view class="jianjie">
目标学员人数{{item.number}} 目标学员人数{{item.number}} <br/>
<text v-if="item.startTime&&item.studyEndTime">学习日期{{(item.startTime).split('T')[0]}}{{(item.studyEndTime).substring(0, 10)}}<br/></text>
<text v-if="item.examStartTime&&item.examEndTime">考试周日期{{item.examStartTime.substring(0, 10)}}{{(item.examEndTime).substring(0, 10)}}</text>
</view> </view>
<view class="jianjie"> <view class="jianjie">
班内职务{{item.roleName}} 班内职务{{item.roleName}}
</view> </view>
<view class="btn_box"> <view class="btn_box">
<!-- <text @click="enterClass" v-show="item.state == '0'">一键加入</text> -->
<text class="seeInfo">进入班级</text> <text class="seeInfo">进入班级</text>
</view> </view>
</view> </view>
@@ -625,7 +620,7 @@
@include mshadow(10px, 1) .imgcontainer { @include mshadow(10px, 1) .imgcontainer {
display: block; display: block;
width: 110rpx; width: 90rpx;
margin-right: 20rpx; margin-right: 20rpx;
// background-size: cover; // background-size: cover;
// background-position: center; // background-position: center;
@@ -643,6 +638,7 @@
.btn_box { .btn_box {
text-align: right; text-align: right;
margin-top:20rpx;
text { text {
border-radius: 20rpx; border-radius: 20rpx;
@@ -660,19 +656,10 @@
margin-left: 20rpx; margin-left: 20rpx;
} }
} }
.buyItems {
width: 60%;
}
.jianjie { .jianjie {
line-height: 30rpx; line-height: 36rpx;
margin-bottom: 10rpx; margin-top: 10rpx;
overflow: hidden;
overflow: hidden !important;
font-size: 24rpx; font-size: 24rpx;
// @include bov();
color: #9c9c9c; color: #9c9c9c;
} }

View File

@@ -18,7 +18,15 @@
<view class="mainContent" v-if="thisClass.id"> <view class="mainContent" v-if="thisClass.id">
<view class="className"> <view class="className">
<h3>{{thisClass.title}}</h3> <view>
<h3>{{thisClass.title}}</h3>
<span v-if="examStartTime&&examEndTime" style=" font-size: 26rpx; color: #999; font-weight: normal; display: block; padding-top: 10rpx; line-height: 34rpx;">
学习日期{{thisClass.startTime.substring(0,10)}} {{thisClass.studyEndTime.substring(0,10)}}<br/>
考试周日期{{examStartTime.substring(0,10)}} {{examEndTime.substring(0,10)}}
<b style="font-size: 26rpx;line-height: 34rpx;color: red; font-weight: normal; display: block;">距离考试周开始还有{{examEndDays}}</b>
<b style="font-size: 26rpx;line-height: 34rpx;color: red; font-weight: normal; display: block;">(考试周开始后无法提交答案)</b>
</span>
</view>
<text class="tuichu" v-if="thisClass.state == '0' && isHave" @click="outClass()">退出班级</text> <text class="tuichu" v-if="thisClass.state == '0' && isHave" @click="outClass()">退出班级</text>
</view> </view>
<view class="otherItems flex_box"> <view class="otherItems flex_box">
@@ -168,11 +176,6 @@
<text class="ciyao"><i <text class="ciyao"><i
class="mainTxt PM_font">{{performanceScore.questionScore}}</i></text> class="mainTxt PM_font">{{performanceScore.questionScore}}</i></text>
</view> </view>
<!-- <view v-if="classModel.isExam == 1 && thisClass.state == '2'">
<text class="ciyao">考试分</text>
<text class="ciyao"><i
class="mainTxt PM_font">{{performanceScore.questionScore}}</i></text>
</view> -->
</view> </view>
</view> </view>
</template> </template>
@@ -207,9 +210,6 @@
<view class="" v-show="courses.length == 0"> <view class="" v-show="courses.length == 0">
<u-divider text="暂无课程"></u-divider> <u-divider text="暂无课程"></u-divider>
</view> </view>
<!-- <view class="" v-if="thisClass.content != ''">
<text class="adminName">教学目标/班级简介</text>
</view> -->
<uni-section class="mb-10 nobg" title="教学目标/班内简介" type="line"></uni-section> <uni-section class="mb-10 nobg" title="教学目标/班内简介" type="line"></uni-section>
<rich-text class="banjiJianjie" :nodes="formatRichText(thisClass.content)"></rich-text> <rich-text class="banjiJianjie" :nodes="formatRichText(thisClass.content)"></rich-text>
<view class="qrcode" v-if="thisClass.qrcode != ''"> <view class="qrcode" v-if="thisClass.qrcode != ''">
@@ -223,7 +223,6 @@
<template v-if="students.length> 0"> <template v-if="students.length> 0">
<view class="" style=" overflow: hidden; margin:20rpx 0"> <view class="" style=" overflow: hidden; margin:20rpx 0">
<text style="font-size: 26rpx; color: #666;"> {{students.length}} 名学员</text> <text style="font-size: 26rpx; color: #666;"> {{students.length}} 名学员</text>
<!-- <uni-section class="mb-10 nobg xueyuanTitle" title="班内学员" type="line" sub-title=""></uni-section> -->
</view> </view>
<view class="classMateBox" v-if="(thisClass.state == '0' || thisClass.state == '1')"> <view class="classMateBox" v-if="(thisClass.state == '0' || thisClass.state == '1')">
<view class="newBox flexbox"> <view class="newBox flexbox">
@@ -254,8 +253,6 @@
<u-divider text="暂无学员加入"></u-divider> <u-divider text="暂无学员加入"></u-divider>
</view> </view>
</template> </template>
<!-- {{getTijiaoTitleList}} -->
<!-- 班内提交 --> <!-- 班内提交 -->
<view class="" v-if="tabId == '3' && thisClass.state != '0' && isHave"> <view class="" v-if="tabId == '3' && thisClass.state != '0' && isHave">
<view class="flex_box tijiaoTitle"> <view class="flex_box tijiaoTitle">
@@ -296,8 +293,7 @@
</view> </view>
</radio-group> </radio-group>
</view> </view>
<!-- <uni-section class="mb-10 nobg" title="任务列表" type="line"></uni-section> -->
<view v-if="taskList.length > 0 "> <view v-if="taskList.length > 0 ">
<view class="submitRecode"> <view class="submitRecode">
<view class="newBox"> <view class="newBox">
@@ -321,9 +317,6 @@
<view class="score" v-if="item.scoreSuccess == 0"> <view class="score" v-if="item.scoreSuccess == 0">
等待评分 等待评分
</view> </view>
<!-- <view class="score" v-if="item.scoreSuccess > 0 && item.scoreSuccess ">
正在评分
</view> -->
<view class="score" v-if="item.scoreSuccess >= 3"> <view class="score" v-if="item.scoreSuccess >= 3">
分数{{item.score}} 分数{{item.score}}
</view> </view>
@@ -338,7 +331,6 @@
<text class="pIng" v-if="item.otherInfo[0].scoreSuccess < 3 && item.otherInfo[0].scoreSuccess > 0">正在评分</text> <text class="pIng" v-if="item.otherInfo[0].scoreSuccess < 3 && item.otherInfo[0].scoreSuccess > 0">正在评分</text>
<view class="" v-if="item.otherInfo[0].scoreSuccess >2"> <view class="" v-if="item.otherInfo[0].scoreSuccess >2">
<text class="score" >{{item.otherInfo[0].score}} </text> <text class="score" >{{item.otherInfo[0].score}} </text>
<!-- <text style="color: #999; padding-left: 10rpx; font-size: 26rpx;"></text> -->
</view> </view>
</template> </template>
<template <template
@@ -360,9 +352,6 @@
<u-divider v-show="status == 2" text="已加载全部"></u-divider> <u-divider v-show="status == 2" text="已加载全部"></u-divider>
<u-divider v-show="status == 3" text="暂无数据"></u-divider> <u-divider v-show="status == 3" text="暂无数据"></u-divider>
<u-divider v-show="status == 1" text="加载中..."></u-divider> <u-divider v-show="status == 1" text="加载中..."></u-divider>
<!-- <view class="" v-else>
<u-divider text="暂无数据"></u-divider>
</view> -->
</view> </view>
<template <template
v-if="tijiaoTitleId == '3' && questionsList.length > 0 && questionsList[curCourseIndex].chapterList.length > 0"> v-if="tijiaoTitleId == '3' && questionsList.length > 0 && questionsList[curCourseIndex].chapterList.length > 0">
@@ -380,8 +369,6 @@
<text v-if="thisClass.state == '2' || thisClass.state == '3'" style="color: #999; font-size: 26rpx;">已不可作答</text> <text v-if="thisClass.state == '2' || thisClass.state == '3'" style="color: #999; font-size: 26rpx;">已不可作答</text>
</template> </template>
<template v-else> <template v-else>
<!-- <text class=""
style="padding-left: 10rpx; color: #55aaff; font-size: 26rpx;">已作答</text> -->
<text style="padding-left: 10rpx; color: #55aa7f; font-size: 26rpx;" v-if="item.reply.scoreSuccess <= 2 && thisClass.state != '2'"> <text style="padding-left: 10rpx; color: #55aa7f; font-size: 26rpx;" v-if="item.reply.scoreSuccess <= 2 && thisClass.state != '2'">
等待评分 等待评分
</text> </text>
@@ -417,7 +404,6 @@
<text class="adminName">班长</text> <text class="adminName">班长</text>
<view class="personbox" v-if="admins.monitor.user != null"> <view class="personbox" v-if="admins.monitor.user != null">
<text>{{admins.monitor.user.nickname != null && admins.monitor.user.nickname != '' ? admins.monitor.user.nickname : '匿名用户'}}</text> <text>{{admins.monitor.user.nickname != null && admins.monitor.user.nickname != '' ? admins.monitor.user.nickname : '匿名用户'}}</text>
<!-- <text v-if="admins.monitor.id">({{admins.monitor.user.tel}})</text> -->
</view> </view>
<text v-else>暂未设置</text> <text v-else>暂未设置</text>
</view> </view>
@@ -425,8 +411,6 @@
<text class="adminName">副班长</text> <text class="adminName">副班长</text>
<view class="personbox" v-if="admins.dmonitor.user != null"> <view class="personbox" v-if="admins.dmonitor.user != null">
<text>{{admins.dmonitor.user.nickname != null && admins.dmonitor.user.nickname != '' ? admins.dmonitor.user.nickname : '匿名用户'}}</text> <text>{{admins.dmonitor.user.nickname != null && admins.dmonitor.user.nickname != '' ? admins.dmonitor.user.nickname : '匿名用户'}}</text>
<!-- <text>({{admins.dmonitor.user.tel}})</text> -->
</view> </view>
<text v-else>暂未设置</text> <text v-else>暂未设置</text>
</view> </view>
@@ -434,21 +418,9 @@
<view class="personbox" v-if="admins.learner.user != null"> <view class="personbox" v-if="admins.learner.user != null">
<text>{{admins.learner.user.nickname != null && admins.learner.user.nickname != '' ? admins.learner.user.nickname : '匿名用户'}}</text> <text>{{admins.learner.user.nickname != null && admins.learner.user.nickname != '' ? admins.learner.user.nickname : '匿名用户'}}</text>
<!-- <text>({{admins.learner.user.tel}})</text> -->
</view> </view>
<text v-else>暂未设置</text> <text v-else>暂未设置</text>
</view> </view>
<!-- <view class="item arryItem"><text class="adminName">记分员</text>
<template v-if="admins.counter.length > 0">
<view class="arryItemSub" v-for="(item,index) in admins.counter" :key="index">
<template v-if="item.user != null">
<text>{{item.user.nickname != null && item.user.nickname != '' ? item.user.nickname : '匿名用户'}}</text>
<text>({{item.user.tel}}) </text>
</template>
</view>
</template>
<text v-else>暂未设置</text>
</view> -->
<view class="item arryItem"><text class="adminName">评分员</text> <view class="item arryItem"><text class="adminName">评分员</text>
<template v-if="admins.scorer.length > 0"> <template v-if="admins.scorer.length > 0">
<view class="arryItemSub" v-for="(item,index) in admins.scorer" :key="index"> <view class="arryItemSub" v-for="(item,index) in admins.scorer" :key="index">
@@ -500,9 +472,6 @@
</view> </view>
</template> </template>
</template> </template>
<!-- && thisClass.state == '2' -->
<!-- <view v-if="classModel.isExam == 1" :class="['PM_font','zhengshu',thisStudent.student.score.certificateType == 'A' ? 'Azheng' : 'Bzheng']"
></view> -->
</view> </view>
</view> </view>
</u-popup> </u-popup>
@@ -515,7 +484,6 @@
<text style="color: #666;">请确认以下证书信息证书一经生成后不可更改</text> <text style="color: #666;">请确认以下证书信息证书一经生成后不可更改</text>
</view> </view>
<view class="tips border_radius_10"> <view class="tips border_radius_10">
<!-- {{submitInfo.name}}-{{submitInfo.photo}} -->
<view class="flex_box align-items_box item"> <view class="flex_box align-items_box item">
<text class="mr20rpx">证书姓名</text> <text class="mr20rpx">证书姓名</text>
<text class="mr20rpx"> <text class="mr20rpx">
@@ -544,7 +512,6 @@
<view class="btn_box_certificate"><button @click="createCertificate">立即生成证书</button></view> <view class="btn_box_certificate"><button @click="createCertificate">立即生成证书</button></view>
</view> </view>
</u-popup> </u-popup>
<!-- <z-navigation></z-navigation> -->
<view> <view>
<u-back-top :scroll-top="scrollTop" bottom="60" :customStyle='bgiStyle' :iconStyle="iconStyle"></u-back-top> <u-back-top :scroll-top="scrollTop" bottom="60" :customStyle='bgiStyle' :iconStyle="iconStyle"></u-back-top>
</view> </view>
@@ -556,7 +523,6 @@
import addCerInfo from "@/components/addCerInfo.vue"; import addCerInfo from "@/components/addCerInfo.vue";
import debounce from "@/common/debounce.js"; import debounce from "@/common/debounce.js";
import sutdentScoreList from "./components/sutdent_score_list.vue"; import sutdentScoreList from "./components/sutdent_score_list.vue";
// import permission from "@/js_sdk/wa-permission/permission.js"
import $http from '@/config/requestConfig.js'; import $http from '@/config/requestConfig.js';
import { import {
mapState mapState
@@ -614,10 +580,6 @@
name: '班内课程', name: '班内课程',
id: '0' id: '0'
}, },
// {
// name: '班内讨论',
// id: '1'
// },
{ {
name: '班内学员', name: '班内学员',
id: '2' id: '2'
@@ -628,10 +590,6 @@
name: '班内课程', name: '班内课程',
id: '0' id: '0'
}, },
// {
// name: '班内讨论',
// id: '1'
// },
{ {
name: '班内学员', name: '班内学员',
id: '2' id: '2'
@@ -642,10 +600,6 @@
name: '历史提交', name: '历史提交',
id: '3' id: '3'
}, },
// {
// name: '班内讨论',
// id: '1'
// },
{ {
name: '班内学员', name: '班内学员',
id: '2' id: '2'
@@ -666,9 +620,7 @@
}, },
activeStyle: { activeStyle: {
color: '#333', color: '#333',
fontWeight: 'bold', fontWeight: 'bold'
// transform: 'scale(1.2)',
// backgroundColor: '#258feb'
}, },
classModel: {}, classModel: {},
@@ -728,7 +680,9 @@
ingPaper: undefined, // 正在进行中的试卷信息 ingPaper: undefined, // 正在进行中的试卷信息
newCLass: undefined, // 同模型的待开班班级 newCLass: undefined, // 同模型的待开班班级
certificate: undefined, // 证书 certificate: undefined, // 证书
// stickyBgColor:'#ff9277', examStartTime: '',
examEndTime: '',
examEndDays: ''
} }
}, },
onPageScroll(e) { onPageScroll(e) {
@@ -743,20 +697,6 @@
console.log('this.classId', this.classId); console.log('this.classId', this.classId);
this.getUserRole() this.getUserRole()
this.getUserInfo() this.getUserInfo()
// uni.$on('refreshData', () => {
// console.log('开始刷新列表数据');
// this.pPage = 0
// this.taskList = []
// this.getList()
// })
// uni.$on('refreshUserAnswerList',() => {
// console.log('开始刷新用户提交列表');
// this.pPage = 0
// this.taskList = []
// this.getList()
// })
}, },
onReachBottom() { onReachBottom() {
if(this.tijiaoTitleId != 3){ if(this.tijiaoTitleId != 3){
@@ -766,15 +706,10 @@
} }
}, },
async onPullDownRefresh() { async onPullDownRefresh() {
// this.curTagIndex = 0
console.log('this.tabId------', this.tabId); console.log('this.tabId------', this.tabId);
this.getClassInfo() this.getClassInfo()
this.getScore() this.getScore()
var ll = await this.getPaperList() var ll = await this.getPaperList()
// this.pPage = 0
// this.taskList = []
// this.getList()
uni.stopPullDownRefresh() uni.stopPullDownRefresh()
}, },
async onShow() { async onShow() {
@@ -783,7 +718,6 @@
if (this.thisClass.state == '0' && this.isHave) { if (this.thisClass.state == '0' && this.isHave) {
this.buyCourseMsg = await this.checkUserCourse() this.buyCourseMsg = await this.checkUserCourse()
} }
// this.curTagIndex = 0
if (this.thisClass.state != '0') { if (this.thisClass.state != '0') {
this.getScore() this.getScore()
} }
@@ -807,10 +741,7 @@
var historyPaper = await this.getingPaper() var historyPaper = await this.getingPaper()
console.log('正在进行中的试卷信息', historyPaper); console.log('正在进行中的试卷信息', historyPaper);
this.ingPaper = historyPaper this.ingPaper = historyPaper
// console.log('对比----------------', historyPaper.classId, this.classId);
if (historyPaper && historyPaper != null && historyPaper.relationId == this.classId) { if (historyPaper && historyPaper != null && historyPaper.relationId == this.classId) {
// var planEndTimeDate = new Date(historyPaper.planEndTime)
// paperEndTime = planEndTimeDate.getTime(); // 结束的时间戳
paperEndTime = historyPaper.planEndTime paperEndTime = historyPaper.planEndTime
console.log('+++++++++', paperEndTime); console.log('+++++++++', paperEndTime);
this.examId = historyPaper.id this.examId = historyPaper.id
@@ -838,7 +769,6 @@
if (userObj) { if (userObj) {
this.submitInfo.name = userObj.name this.submitInfo.name = userObj.name
this.submitInfo.photo = userObj.photo this.submitInfo.photo = userObj.photo
// this.showSubmitInfoBlank = true
} }
} }
}, },
@@ -906,14 +836,12 @@
if (this.classModel.isQuestion == 1) { if (this.classModel.isQuestion == 1) {
_list.push(this.defaultTijiaoTitleList[3]) _list.push(this.defaultTijiaoTitleList[3])
} }
// return _list
if (_list.length > 0) { if (_list.length > 0) {
console.log('是否进入了这里666666666666',this.tijiaoTitleIndex); console.log('是否进入了这里666666666666',this.tijiaoTitleIndex);
this.tijiaoTitleList = _list this.tijiaoTitleList = _list
this.titleClick(this.tijiaoTitleList[this.tijiaoTitleIndex], this.tijiaoTitleIndex ) this.titleClick(this.tijiaoTitleList[this.tijiaoTitleIndex], this.tijiaoTitleIndex )
// this.tijiaoTitleId = this.tijiaoTitleList[0].id
} }
// this.tabId =
}, },
getBlankNumber() { getBlankNumber() {
this.blankNumber = 0 this.blankNumber = 0
@@ -929,16 +857,11 @@
if (this.classModel.isQuestion == 1) { if (this.classModel.isQuestion == 1) {
this.blankNumber++ this.blankNumber++
} }
// if(this.classModel.isExam == 1){
// this.blankNumber++
// }
} }
}, },
methods: { methods: {
// 获得思考题列表及答案 // 获得思考题列表及答案
async getQuestionsList() { async getQuestionsList() {
console.log('是否进入了思考题请求????????????');
var list = [] var list = []
await $http.request({ await $http.request({
url: "common/class/getThinkQuestionListStudent", url: "common/class/getThinkQuestionListStudent",
@@ -946,7 +869,7 @@
data: { data: {
"classId": this.classId "classId": this.classId
}, },
header: { //默认 无 说明:请求头 header: {
'Content-Type': 'application/json' 'Content-Type': 'application/json'
}, },
}) })
@@ -971,16 +894,10 @@
return list return list
}, },
async showSubmit() { async showSubmit() {
// if (this.certificate && this.certificate.id && this.certificate.certificateUrl.length > 3) { // 已生成
// 已生成 uni.navigateTo({
uni.navigateTo({ url: '/pages/certificate/certificate'
url: '/pages/certificate/certificate' })
})
// } else { // 未生成
// this.showSubmitInfoBlank = true
// }
}, },
async getUserData() { async getUserData() {
let that = this; let that = this;
@@ -1059,9 +976,6 @@
}, },
selectImage() { selectImage() {
this.chooseImage() this.chooseImage()
// .then(res => {
// this.submitInfo.img = res.tempFilePaths[0];
// });
}, },
// 选中了学生 // 选中了学生
chooseStudent(data) { chooseStudent(data) {
@@ -1159,14 +1073,11 @@
data: { data: {
"classId": parseInt(this.classId) "classId": parseInt(this.classId)
}, },
header: { //默认 无 说明:请求头 header: {
'Content-Type': 'application/json' 'Content-Type': 'application/json'
}, },
}) })
.then(res => { .then(res => {
// console.log('考试周班状态下,学员的信息', this.classId, res, );
// this.userMsg = res.user
// list = studentList
if (res.code == 0) { if (res.code == 0) {
res.result.forEach(item => { res.result.forEach(item => {
item.task0Score ? '' : item.task0Score = 0 // 固定任务 item.task0Score ? '' : item.task0Score = 0 // 固定任务
@@ -1284,7 +1195,6 @@
var data = { var data = {
"id": this.certificate.id //证书id "id": this.certificate.id //证书id
} }
// console.log('证书提交数据',data,this.performanceScore.userScore);
$http.request({ $http.request({
url: "common/class/generateCertificateClass", url: "common/class/generateCertificateClass",
method: "POST", method: "POST",
@@ -1934,11 +1844,11 @@ uni.navigateTo({
}) })
await $http.request({ await $http.request({
url: "common/class/getClassInfo", url: "common/class/getClassInfo",
method: "POST", // POST、GET、PUT、DELETE具体说明查看官方文档 method: "POST",
data: { data: {
"classId": this.classId // 班类型 0小班 1联合班 2精英班 "classId": this.classId // 班类型 0小班 1联合班 2精英班
}, },
header: { //默认 无 说明:请求头 header: {
'Content-Type': 'application/json' 'Content-Type': 'application/json'
}, },
}) })
@@ -1948,25 +1858,8 @@ uni.navigateTo({
if (res.code == 0) { if (res.code == 0) {
this.isHave = res.result.isJoin this.isHave = res.result.isJoin
this.thisClass = res.result.class this.thisClass = res.result.class
const nowTime = new Date().getTime(); const nowTime = new Date().getTime();
console.log("nowTime at line 107:", nowTime, this.thisClass.startTime);
// var studyTime =
// Number(nowTime - new Date(this.thisClass.startTime).getTime()) / (1000 * 60 * 60 * 24) / 7;
// console.log("studyTime at line 108:", Math.ceil(studyTime));
// this.currentStudyNumber = Math.ceil(studyTime);
// if (this.thisClass.state == '0') {
// this.tabId = '0'
// } else {
// this.tijiaoTitleId = '0'
// this.tabId = '3'
// console.log('-------------------+');
// }
this.admins.list = res.result.admins this.admins.list = res.result.admins
this.admins.monitor = {} this.admins.monitor = {}
this.admins.dmonitor = {} this.admins.dmonitor = {}
@@ -1985,16 +1878,15 @@ uni.navigateTo({
this.admins.learner = item this.admins.learner = item
} }
if (item.role == '4') { if (item.role == '4') {
// console.log('this.admins.counter',this.admins.counter);
this.admins.scorer.push(item) this.admins.scorer.push(item)
} }
// if (item.role == '5') {
// // console.log('this.admins.counter',this.admins.counter);
// this.admins.counter.push(item)
// }
}) })
} }
//考试周日期和剩余
this.examStartTime = res.result.examStartTime;
this.examEndTime = res.result.examEndTime;
this.examEndDays = res.result.examEndDays;
this.classModel = res.result.classModel this.classModel = res.result.classModel
this.courses = res.result.courses this.courses = res.result.courses

View File

@@ -28,6 +28,12 @@
<view class="welComeText"> <view class="welComeText">
<text> 班内职务{{ getRoleName }} </text> <text> 班内职务{{ getRoleName }} </text>
</view> </view>
<span v-if="examStartTime&&examEndTime" style=" font-size: 26rpx; color: #999; font-weight: normal; display: block; padding:20rpx 0; line-height: 34rpx;">
学习日期{{thisClass.startTime.substring(0,10)}} {{thisClass.studyEndTime.substring(0,10)}}<br/>
考试周日期{{examStartTime.substring(0,10)}} {{examEndTime.substring(0,10)}}
<b style="font-size: 26rpx;line-height: 34rpx;color: red; font-weight: normal; display: block;">距离考试周开始还有{{examEndDays}}</b>
<b style="font-size: 26rpx;line-height: 34rpx;color: red; font-weight: normal; display: block;">(考试周开始后无法提交答案)</b>
</span>
</view> </view>
<view class="optionsBtn daikaibtn" v-show="thisClass.state == '0'"> <view class="optionsBtn daikaibtn" v-show="thisClass.state == '0'">
<view class="flex_box"> <view class="flex_box">
@@ -705,6 +711,9 @@ export default {
color: "#258feb", color: "#258feb",
}, },
classStatus: false, //点击结班改变按钮状态 classStatus: false, //点击结班改变按钮状态
examStartTime: '',
examEndTime: '',
examEndDays: ''
}; };
}, },
onLoad(e) { onLoad(e) {
@@ -1376,6 +1385,11 @@ export default {
); );
} }
//考试周日期和剩余
this.examStartTime = res.result.examStartTime;
this.examEndTime = res.result.examEndTime;
this.examEndDays = res.result.examEndDays;
this.admins.list = res.result.admins; this.admins.list = res.result.admins;
this.admins.monitor = {}; this.admins.monitor = {};
this.admins.dmonitor = {}; this.admins.dmonitor = {};
@@ -1456,7 +1470,7 @@ export default {
.welComeText { .welComeText {
font-size: 28rpx; font-size: 28rpx;
padding: 20rpx 0; padding: 10rpx 0 0;
color: #e58d44; color: #e58d44;
} }

View File

@@ -2,14 +2,7 @@
<view style="min-height: 100vh; background-color: #f6f6f8;"> <view style="min-height: 100vh; background-color: #f6f6f8;">
<!-- 公共组件-每个页面必须引入 --> <!-- 公共组件-每个页面必须引入 -->
<public-module></public-module> <public-module></public-module>
<z-nav-bar title="我的班级"> <z-nav-bar title="我的班级"></z-nav-bar>
</z-nav-bar>
<!-- <view class="tabsBox" :class="[fixed ? 'fixed' : '' ]">
<u-tabs v-if="tabList.length > 0" :class="['tabList']" @click="fatherClick" :current="curTagId"
:activeStyle="activeStyle" :scrollable="scrollable" :list="tabList"
itemStyle="padding-left: 15px; background-color:#fff; padding-right: 15px; height: 50px;"></u-tabs>
</view> -->
<view class="containerBg" style="background-color: #f6f6f8;"> <view class="containerBg" style="background-color: #f6f6f8;">
<view class="subCate flex" v-if="subList1.length> 0"> <view class="subCate flex" v-if="subList1.length> 0">
<text :class="['item',subTabId == item.id ? 'active' : '']" v-for="(item, index) in subList1" <text :class="['item',subTabId == item.id ? 'active' : '']" v-for="(item, index) in subList1"
@@ -42,10 +35,7 @@
<view class="jianjie"> <view class="jianjie">
目标学员人数{{item.number}} 目标学员人数{{item.number}}
</view> </view>
<!-- <view class="jianjie" v-html="item.content">
</view> -->
<view class="btn_box"> <view class="btn_box">
<!-- <text @click="enterClass" v-show="item.state == '0'">一键加入</text> -->
<text class="seeInfo">进入班级</text> <text class="seeInfo">进入班级</text>
</view> </view>
</view> </view>
@@ -59,7 +49,6 @@
<view class="newBox" v-if="learningClassList.length > 0"> <view class="newBox" v-if="learningClassList.length > 0">
<view class="item flexbox" v-for="(item, index) in learningClassList" :key="index" <view class="item flexbox" v-for="(item, index) in learningClassList" :key="index"
@click="onPageJump('/pages/miniClass/classInfo',item.id)"> @click="onPageJump('/pages/miniClass/classInfo',item.id)">
<!-- <view class="imgcontainer" :style="{backgroundImage:surl(item.image)}"> -->
<view class="imgcontainer" v-if="item.icon != ''"> <view class="imgcontainer" v-if="item.icon != ''">
<image :src="item.icon" mode="aspectFit"></image> <image :src="item.icon" mode="aspectFit"></image>
</view> </view>
@@ -76,12 +65,12 @@
</text> </text>
</view> </view>
<view class="jianjie"> <view class="jianjie">
目标学员人数{{item.number}} 目标学员人数{{item.number}} <br/>
<text v-if="item.startTime&&item.studyEndTime">学习日期{{(item.startTime).split('T')[0]}}{{(item.studyEndTime).substring(0, 10)}}<br/></text>
<text v-if="item.examStartTime&&item.examEndTime">考试周日期{{item.examStartTime.substring(0, 10)}}{{(item.examEndTime).substring(0, 10)}}</text>
</view> </view>
<!-- <view class="jianjie" v-html="item.content">
</view> -->
<view class="btn_box"> <view class="btn_box">
<!-- <text @click="enterClass" v-show="item.state == '0'">一键加入</text> -->
<text class="seeInfo">进入班级</text> <text class="seeInfo">进入班级</text>
</view> </view>
</view> </view>
@@ -95,7 +84,6 @@
<view class="newBox" v-if="examingClassList.length > 0"> <view class="newBox" v-if="examingClassList.length > 0">
<view class="item flexbox" v-for="(item, index) in examingClassList" :key="index" <view class="item flexbox" v-for="(item, index) in examingClassList" :key="index"
@click="onPageJump('/pages/miniClass/classInfo',item.id)"> @click="onPageJump('/pages/miniClass/classInfo',item.id)">
<!-- <view class="imgcontainer" :style="{backgroundImage:surl(item.image)}"> -->
<view class="imgcontainer" v-if="item.icon != ''"> <view class="imgcontainer" v-if="item.icon != ''">
<image :src="item.icon" mode="aspectFit"></image> <image :src="item.icon" mode="aspectFit"></image>
</view> </view>
@@ -112,12 +100,11 @@
</text> </text>
</view> </view>
<view class="jianjie"> <view class="jianjie">
目标学员人数{{item.number}} 目标学员人数{{item.number}} <br/>
<text v-if="item.startTime&&item.studyEndTime">学习日期{{(item.startTime).split('T')[0]}}{{(item.studyEndTime).substring(0, 10)}}<br/></text>
<text v-if="item.examStartTime&&item.examEndTime">考试周日期{{item.examStartTime.substring(0, 10)}}{{(item.examEndTime).substring(0, 10)}}</text>
</view> </view>
<!-- <view class="jianjie" v-html="item.content">
</view> -->
<view class="btn_box"> <view class="btn_box">
<!-- <text @click="enterClass" v-show="item.state == '0'">一键加入</text> -->
<text class="seeInfo">进入班级</text> <text class="seeInfo">进入班级</text>
</view> </view>
</view> </view>
@@ -153,10 +140,7 @@
<view class="jianjie"> <view class="jianjie">
目标学员人数{{item.number}} 目标学员人数{{item.number}}
</view> </view>
<!-- <view class="jianjie" v-html="item.content">
</view> -->
<view class="btn_box"> <view class="btn_box">
<!-- <text @click="enterClass" v-show="item.state == '0'">一键加入</text> -->
<text class="seeInfo">进入班级</text> <text class="seeInfo">进入班级</text>
</view> </view>
</view> </view>
@@ -508,7 +492,8 @@
@include mshadow(10px, 1) .imgcontainer { @include mshadow(10px, 1) .imgcontainer {
display: block; display: block;
width: 110rpx; width: 90rpx;
flex-shrink: 0;
margin-right: 20rpx; margin-right: 20rpx;
// background-size: cover; // background-size: cover;
// background-position: center; // background-position: center;
@@ -526,6 +511,7 @@
.btn_box { .btn_box {
text-align: right; text-align: right;
margin-top:20rpx;
text { text {
border-radius: 20rpx; border-radius: 20rpx;
@@ -544,18 +530,10 @@
} }
} }
.buyItems {
width: 60%;
}
.jianjie { .jianjie {
line-height: 30rpx; line-height: 36rpx;
height: 60rpx;
overflow: hidden;
overflow: hidden !important;
margin-top: 10rpx; margin-top: 10rpx;
font-size: 24rpx; font-size: 24rpx;
@include bov();
color: #9c9c9c; color: #9c9c9c;
} }

View File

@@ -129,6 +129,105 @@
</view> </view>
</view> </view>
</view> </view>
<!-- 限时秒杀 -->
<view class="seckillBox" v-if="seckillList.length > 0">
<view class="hightLightTitleBox">
<text>限时秒杀</text>
</view>
<view class="seckill">
<view class="borderbb">
<view class="main">
<view class="ftitle">
<text>天天秒杀 时时返积分</text>
</view>
<scroll-view
class="scroll-view_H"
scroll-x="true"
style="
display: flex;
align-items: center;
justify-content: space-between;
"
>
<!-- <view class=""> -->
<view
class="item"
v-for="(item, index) in seckillList"
:key="index"
@click="goGoodsDetail(item, 1)"
>
<view class="imgcontainer" style="position: relative">
<view v-if="item.isVipPrice==1&&item.vipPrice!=0&&item.vipPrice!=null"
style="z-index: 10;position: absolute;top: 10rpx;left: 10px;text-align: center;font-size: 22rpx;background-color: #f94f04;color: #fff;font-weight: bold;border-radius:4px;width: 120rpx; padding:4rpx;box-sizing: border-box;">
VIP优惠</view>
<image :src="item.productImages" mode="aspectFit"></image>
</view>
<view class="name">
{{ item.productName }}
</view>
<view>
<text
class="price"
v-if="
item.isVipPrice == 1 &&
item.vipPrice != 0 &&
item.vipPrice != null
"
>
<text
style="color: #e97512; font-size: 12px; font-weight: bold"
>¥{{ item.vipPrice }}</text
>
<text
style="
color: #8a8a8a;
font-size: 10px;
margin-left: 4px;
font-weight: bold;
text-decoration: line-through;
"
>¥{{ Number(item.price) }}</text
>
</text>
<text
v-else-if="item.activityPrice && item.activityPrice > 0"
class="price"
>
<text
style="color: #e97512; font-size: 12px; font-weight: bold"
>¥{{ item.activityPrice }}</text
>
<text
style="
color: #8a8a8a;
font-size: 10px;
margin-left: 4px;
font-weight: bold;
text-decoration: line-through;
"
>¥{{ Number(item.price) }}</text
>
</text>
<text v-else class="price" style="color: #e97512; font-size: 12px; font-weight: bold"
>¥{{ Number(item.price) }}</text
>
<view>
</view>
</view>
</view>
</scroll-view>
</view>
</view>
</view>
</view>
<!-- 正在学习 --> <!-- 正在学习 -->
<view class="" style="padding: 0 5px" v-if="learnList.length > 0"> <view class="" style="padding: 0 5px" v-if="learnList.length > 0">
<view class="learnBox"> <view class="learnBox">
@@ -211,17 +310,6 @@
</view> </view>
</view> </view>
</swiper-item> </swiper-item>
<!-- <swiper-item v-for="(item, index) in classList" :key="index">
<view class="classItem flex_box" @click="onPageJump('/pages/miniClass/classInfo',item.id)">
<view class="img" style="overflow: hidden;">
<image v-if="item.icon && item.icon != ''" :src="item.icon" mode="aspectFit"></image>
<image v-else src="@/static/my_04.png" mode="widthFix"></image>
</view>
<view class="txt555">
{{item.title}}
</view>
</view>
</swiper-item> -->
</swiper> </swiper>
</view> </view>
</view> </view>
@@ -293,122 +381,7 @@
</view> </view>
</view> </view>
</view> </view>
<!-- 限时秒杀 -->
<view class="seckillBox" v-if="seckillList.length > 0">
<view class="hightLightTitleBox">
<text>限时秒杀</text>
</view>
<view class="seckill">
<view class="borderbb">
<view class="main">
<view class="ftitle">
<text>天天秒杀 时时返积分</text>
</view>
<scroll-view
class="scroll-view_H"
scroll-x="true"
style="
display: flex;
align-items: center;
justify-content: space-between;
"
>
<!-- <view class=""> -->
<view
class="item"
v-for="(item, index) in seckillList"
:key="index"
@click="goGoodsDetail(item, 1)"
>
<view class="imgcontainer" style="position: relative">
<view v-if="item.isVipPrice==1&&item.vipPrice!=0&&item.vipPrice!=null"
style="z-index: 10;position: absolute;top: 10rpx;left: 10px;text-align: center;font-size: 22rpx;background-color: #f94f04;color: #fff;font-weight: bold;border-radius:4px;width: 120rpx; padding:4rpx;box-sizing: border-box;">
VIP优惠</view>
<image :src="item.productImages" mode="aspectFit"></image>
</view>
<view class="name">
{{ item.productName }}
</view>
<view>
<!-- v-if="
item.isVipPrice == 1 &&
item.vipPrice != 0 &&
item.vipPrice != null
" -->
<text
class="price"
v-if="
item.isVipPrice == 1 &&
item.vipPrice != 0 &&
item.vipPrice != null
"
>
<text
style="color: #e97512; font-size: 12px; font-weight: bold"
>¥{{ item.vipPrice }}</text
>
<text
style="
color: #8a8a8a;
font-size: 10px;
margin-left: 4px;
font-weight: bold;
text-decoration: line-through;
"
>¥{{ Number(item.price) }}</text
>
</text>
<text
v-else-if="item.activityPrice && item.activityPrice > 0"
class="price"
>
<text
style="color: #e97512; font-size: 12px; font-weight: bold"
>¥{{ item.activityPrice }}</text
>
<text
style="
color: #8a8a8a;
font-size: 10px;
margin-left: 4px;
font-weight: bold;
text-decoration: line-through;
"
>¥{{ Number(item.price) }}</text
>
</text>
<text v-else class="price" style="color: #e97512; font-size: 12px; font-weight: bold"
>¥{{ Number(item.price) }}</text
>
<view>
</view>
</view>
<!-- <view class="fall">
<text class="mprice"
>¥{{
item.activityPrice && item.activityPrice > 0
? item.activityPrice
: item.price
}}</text
>
</view> -->
</view>
<!-- </view> -->
</scroll-view>
</view>
</view>
</view>
</view>
<!-- 新闻播报 --> <!-- 新闻播报 -->
<view class="fourBox" v-if="newsList.length > 0"> <view class="fourBox" v-if="newsList.length > 0">
<view class="newsBox flexbox"> <view class="newsBox flexbox">

View File

@@ -107,7 +107,7 @@
// 返回true表示校验通过返回false表示不通过 // 返回true表示校验通过返回false表示不通过
// 过滤第一层先判断输入为不为空因为required: false不是必填项所以为空应该返回true // 过滤第一层先判断输入为不为空因为required: false不是必填项所以为空应该返回true
if (value) { if (value) {
return this.$u.test.mobile(value); return /^\d{5,15}$/.test(value);
} else { } else {
return true return true
} }

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long