diff --git a/apis/cartApi.js b/apis/cartApi.js
new file mode 100644
index 0000000..766467b
--- /dev/null
+++ b/apis/cartApi.js
@@ -0,0 +1,23 @@
+
+import http from '../utils/http/index.js'
+// 获取购物车列表
+export function getShoppingCarList(data) {
+ return http.get(
+ {
+ url: '/base-paper-trading/get/shopping-car-list',
+ data
+ },
+ {
+ hideLoading: true
+ }
+ )
+}
+// 移除购物车
+export function removeShoppingCar(data) {
+ return http.post(
+ {
+ url: '/base-paper-trading/delete/shopping-car',
+ data
+ }
+ )
+}
\ No newline at end of file
diff --git a/apis/paperDetailsApi.js b/apis/paperDetailsApi.js
index 7d2ae67..55db36c 100644
--- a/apis/paperDetailsApi.js
+++ b/apis/paperDetailsApi.js
@@ -11,4 +11,24 @@ export const getPaperDetail = (data = {}) => {
url: '/base-paper-trading/get/product-detail/for/customer',
data
})
+}
+/**
+ * 立即订购
+ * swagger:https://api-ops-yyt-test.qniao.cn//base-paper-trading/swagger-ui/index.html?urls.primaryName=CustomerApi#/
+ */
+export const createGoodsReserve = (data = {}) => {
+ return http.post({
+ url: '/base-paper-trading/buyer/paper/goods/reserve',
+ data
+ })
+}
+/**
+ * 加入购物车
+ * swagger:http://api-ops-yyt-test.qniao.cn/base-paper-trading/swagger-ui/index.html?urls.primaryName=CustomerApi#/%E8%B4%AD%E7%89%A9%E8%BD%A6/addShoppingCarUsingPOST
+ */
+export const createShoppingCar = (data = {}) => {
+ return http.post({
+ url: '/base-paper-trading/add/shopping-car',
+ data
+ })
}
\ No newline at end of file
diff --git a/components/qn-input-number/qn-input-number.vue b/components/qn-input-number/qn-input-number.vue
index ac5d749..8ce8f74 100644
--- a/components/qn-input-number/qn-input-number.vue
+++ b/components/qn-input-number/qn-input-number.vue
@@ -41,9 +41,11 @@
return
}
this.value--
+ this.$emit('change', this.value)
},
addTap() {
this.value++
+ this.$emit('change', this.value)
}
}
}
diff --git a/pages/cart/index.vue b/pages/cart/index.vue
index 81db55d..b520ef1 100644
--- a/pages/cart/index.vue
+++ b/pages/cart/index.vue
@@ -1,39 +1,39 @@
-
+
购物车
- 删除
+ 删除
+
-
+
- 广州市荔湾区强丰纸业
+ {{item.supplierName}}
-
+
- 晨鸣丽品白卡
- 245g|787*1092
- 预估重量:1.6346吨
+ {{subItem.productName}}
+ {{subItem.gramWeight}}g|{{subItem.width}}*{{subItem.length}}
+ 预估重量:{{subItem.weight}}吨
- ¥3600.00
+ ¥{{subItem.price}}
-
-
-
@@ -75,10 +78,13 @@ import uGap from '@/components/u-gap/u-gap.vue'
import qnFooter from '@/components/qn-footer/qn-footer.vue'
import { back, go2 } from '@/utils/hook.js'
import qnInputNumber from '@/components/qn-input-number/qn-input-number.vue'
+import { getShoppingCarList, removeShoppingCar } from '@/apis/cartApi.js'
+import noData from './no-data.vue'
export default {
- components: { uGap, qnInputNumber, qnFooter },
+ components: { uGap, qnInputNumber, qnFooter, noData },
data() {
return {
+ pageShow: true,
option: {
size: 10,
auto: true,
@@ -87,30 +93,83 @@ export default {
background: '#F7F8FA',
disabled: false
},
- params: {},
+ params: {
+ userId : this.$store.state.userInfo.userId || null,
+
+ },
pagination: {
pageNum: 0, // 初始会执行一次下拉加载
pageSize: 10
},
checked: false,
+ list: [],
}
},
created() {
let that = this
uni.getSystemInfo({
- success: function (res) {
- console.log( '状态栏的高', res.statusBarHeight);
- that.option.height = (res.windowHeight) * (750/res.windowWidth) - 180
-
- }
- });
- },
- onLoad() {
-
+ success: function(res) {
+ console.log('状态栏的高', res.statusBarHeight)
+ that.option.height = res.windowHeight * (750 / res.windowWidth) - 180
+ }
+ })
},
+ onLoad() {},
methods: {
- downCallback() {},
- upCallback() {},
+ getList() {
+ return new Promise((resolve, reject) => {
+ getShoppingCarList({ ...this.params, ...this.pagination })
+ .then(res => {
+ // console.log('购物车', res)
+ if (res) {
+ if(res.records.length == 0) {
+ this.pageShow = false
+ return
+ }
+ if (this.pagination.pageNum == 1) {
+ this.list = res.records
+ } else {
+ this.list = this.list.concat(res.records)
+ }
+ // this.list = []
+ // this.list = [...this.list, ...[1, 2, 3, 4, 5, 6, 7, 8, 9, 10]]
+ resolve({ list: this.list, total: res.total })
+ }
+ })
+ .catch(err => {
+ reject(err)
+ })
+ })
+ },
+ downCallback() {
+ this.pagination.pageNum = 1
+ this.getList()
+ .then(({ list, total }) => {
+ this.$refs.list.refreshSuccess({ list, total })
+ })
+ .catch(() => {
+ this.$refs.list.refreshFail()
+ })
+ },
+ upCallback() {
+ this.pagination.pageNum++
+ this.getList()
+ .then(({ list, total }) => {
+ this.$refs.list.loadSuccess({ list, total })
+ })
+ .catch(() => {
+ this.$refs.list.loadFail()
+ })
+ },
+ delTap() {
+ this.$refs.popup.open('center')
+ },
+ confirmTap() {
+ this.$refs.popup.close()
+ },
+ cancelTap() {
+ this.$refs.popup.close()
+ },
/**
* @param {Number} num
* 计数器返回值
@@ -133,6 +192,7 @@ export default {
color: #f5222d;
text-align: right;
font-weight: 500;
+ float: right;
}
.group-box {
// padding: 0rpx 32rpx;
@@ -269,5 +329,57 @@ export default {
}
}
}
+ .popup-box {
+ width: 540rpx;
+ height: 226rpx;
+ background: #FFFFFF;
+ border-radius: 14rpx;
+ .tip-title {
+ display: flex;
+ flex-direction: row;
+ justify-content: center;
+ align-items: center;
+ height: 126rpx;
+ font-size: 32rpx;
+ color: #333333;
+ letter-spacing: 0;
+ text-align: center;
+ font-weight: 400;
+ }
+ .operation-row {
+ display: flex;
+ flex-direction: row;
+ justify-content: space-around;
+ align-items: center;
+ height: 100rpx;
+ background: #FFFFFF;
+ border-top: 2rpx solid #DDDDDD;
+ .cancel-text {
+ flex-grow: 1;
+ flex-shrink: 1;
+ font-size: 36rpx;
+ color: #000000;
+ letter-spacing: 0;
+ text-align: center;
+ font-weight: 400;
+ }
+ .line {
+ flex-grow: 0;
+ flex-shrink: 0;
+ width: 2rpx;
+ height: 100rpx;
+ border-left: 2rpx solid #DCDEE3;
+ }
+ .confirm-text{
+ flex-grow: 1;
+ flex-shrink: 1;
+ font-size: 36rpx;
+ color: #108EE9;
+ letter-spacing: 0;
+ text-align: center;
+ font-weight: 400;
+ }
+ }
+ }
}
diff --git a/pages/cart/no-data.vue b/pages/cart/no-data.vue
new file mode 100644
index 0000000..f5d074b
--- /dev/null
+++ b/pages/cart/no-data.vue
@@ -0,0 +1,69 @@
+
+
+
+
+
+ 购物车是空的,快去
+
+
+ 逛逛
+
+
+
+
+
+
+
+
diff --git a/pages/paper-details/index.vue b/pages/paper-details/index.vue
index 77ba95e..c67040e 100644
--- a/pages/paper-details/index.vue
+++ b/pages/paper-details/index.vue
@@ -1,10 +1,12 @@
-
-
+
+
-
+
+
+
@@ -13,179 +15,112 @@
- ¥{{info.skuList[0].listPrice}}
- /{{info.skuList[0].stockUnit}}
+ ¥{{ info.skuList[0].listPrice }}
+ /{{ info.skuList[0].stockUnit }}
-
- {{ info.name }}
-
-
- 库存:{{info.skuList[0].stock || XX}}{{info.skuList[0].stockUnit}}
-
+ {{ info.name }}
+ 库存:{{ info.skuList[0].stock || XX }}{{ info.skuList[0].stockUnit }}
-
- 克重:
-
+ 克重:
- {{titem.weight}}g
+ {{ titem.weight }}g
-
- 规格:
-
-
- 787*1092
-
-
- 899*1194
-
+ 规格:
+ 787*1092
+ 899*1194
-
- 商品卖点
-
-
- {{info.sellingProposition}}
-
+ 商品卖点
+ {{ info.sellingProposition }}
-
- 商品描述
-
-
- {{info.description}}
-
+ 商品描述
+ {{ info.description }}
-
- 送货说明
-
-
- {{info.shippingNote}}
-
+ 送货说明
+ {{ info.shippingNote }}
-
- 其他说明
-
-
- {{info.otherNote}}
-
+ 其他说明
+ {{ info.otherNote }}
-
@@ -196,33 +131,81 @@ import uGap from '@/components/u-gap/u-gap.vue'
import qnFooter from '@/components/qn-footer/qn-footer.vue'
import qnInputNumber from '@/components/qn-input-number/qn-input-number.vue'
import { go2 } from '@/utils/hook.js'
-import { getPaperDetail } from '@/apis/paperDetailsApi.js'
+import { getPaperDetail, createGoodsReserve, createShoppingCar } from '@/apis/paperDetailsApi.js'
export default {
components: { uGap, qnFooter, qnInputNumber },
data() {
return {
current: 0,
weightList: ['240', '250', '280'],
- specificationList: ['正度', '大度', '特规分切'],
+ specificationList: [
+ {
+ name: '正度',
+ width: '787',
+ length: '1092',
+ disabled: true
+ },
+ {
+ name: '特规分切',
+ width: '889',
+ length: '1194',
+ disabled: true
+ },
+ {
+ name: '特规分切',
+ width: '',
+ length: '',
+ disabled: false
+ }
+ ],
kgActive: 0,
- ggActive: 0,
+ specificationObj: {
+ active: 0,
+ width: '787',
+ length: '1092',
+ disabled: true
+ },
value: null,
params: {
+ productId: ''
+ },
+ buyPaperDto: {
+ buyTon: '',
+ gramWeight: '',
+ length: '',
+ mallSupplierId: '',
+ pieceQuantity: '',
productId: '',
+ productSkuId: '',
+ unitPrice: '',
+ width: '',
+ img: '',
+ listPrice: '',
+ name: ''
},
- info: {}
+ shoppingCarType: 1, // 1:加购物车 2:订购
+ info: {},
}
},
onLoad(option) {
this.params.productId = option.id
this.queryData()
},
- methods:{
+ computed: {
+ buyTon() {
+ let num = 0
+ num = Number(this.buyPaperDto.gramWeight) * Number(this.buyPaperDto.pieceQuantity)
+
+ this.buyPaperDto.buyTon = num / (1000 * 1000)
+ return this.buyPaperDto.buyTon
+ }
+ },
+ methods: {
// 查询店铺纸品详情
queryData() {
getPaperDetail(this.params).then(res => {
console.log('店铺纸品详情', res)
- if(res) {
+ if (res) {
this.info = res
}
})
@@ -235,12 +218,26 @@ export default {
shoppingCartTap() {
go2('cart')
},
- addShoppingTap() {
+ // 立即订购
+ addShoppingTap(type) {
+ this.shoppingCarType = type
+ this.buyPaperDto = {
+ buyTon: 0,
+ gramWeight: this.info.skuList[0].weight,
+ length: this.specificationObj.length,
+ mallSupplierId: this.info.supplierId,
+ pieceQuantity: 0,
+ productId: this.info.id,
+ productSkuId: this.info.skuList[0].id,
+ unitPrice: this.info.skuList[0].listPrice,
+ width: this.specificationObj.width
+ }
this.$refs.popup.open('bottom')
},
+
// 路由到实单询比价
inquiryTap() {
- go2('for-comparison', {id: null})
+ go2('for-comparison', { id: null })
},
closeTap() {
this.$refs.popup.close()
@@ -248,32 +245,78 @@ export default {
// 重量切换
weightTap(item, index) {
this.kgActive = index
+ this.buyPaperDto.gramWeight = item.weight
},
// 规格切换
specificationTap(item, index) {
- this.ggActive = index
+ this.specificationObj.active = index
+ this.specificationObj.width = item.width
+ this.specificationObj.length = item.length
+ this.specificationObj.disabled = item.disabled
+ this.buyPaperDto.width = item.width
+ this.buyPaperDto.length = item.length
},
/**
* @param {Number} num
* 计数器返回值
*/
change(num) {
-
+ this.buyPaperDto.pieceQuantity = num
},
// 确定
confirm() {
- this.$refs.popup.close()
+ // 加入购物车
+ if(this.shoppingCarType == 1) {
+ const params = {
+ length: this.specificationObj.length,
+ productId: this.info.id,
+ productSkuId: this.info.skuList[0].id,
+ quantity: this.buyPaperDto.pieceQuantity,
+ supplierId: this.info.supplierId,
+ width: this.specificationObj.width,
+ enterpriseId: this.$store.state.companyInfo.id,
+ userId: this.$store.state.userInfo.userId
+ }
+ // console.log('加入购物车', params)
+ createShoppingCar(params).then(res => {
+ if(res) {
+ uni.showToast({
+ title: '加入成功!',
+ icon: 'success'
+ })
+ this.$refs.popup.close()
+ }
+ })
+ }else { // 立即订购
+ const params = {
+ orderGoodsList: [{ ...this.buyPaperDto }],
+ purchaserEnterpriseId: this.$store.state.companyInfo.id
+ }
+ createGoodsReserve(params).then(res => {
+ if (res) {
+ uni.showToast({
+ title: '订购成功!',
+ icon: 'success'
+ })
+ this.$refs.popup.close()
+ setTimeout(() => {
+ go2('order-make', { orderId: res.orderId })
+ }, 1000)
+ }
+ })
+ }
+
},
// 轮播图片滑动
swiperChange(e) {
- this.current = e.detail.current;
+ this.current = e.detail.current
},
previewImg(index, list) {
uni.previewImage({
urls: list,
current: index
- });
- },
+ })
+ }
}
}
@@ -290,7 +333,7 @@ export default {
}
.info-box {
height: 370rpx;
- background: #FFFFFF;
+ background: #ffffff;
.info {
padding: 0rpx 32rpx;
.price-row {
@@ -298,15 +341,14 @@ export default {
}
.price {
font-size: 48rpx;
- color: #F5222D;
+ color: #f5222d;
letter-spacing: 0;
text-align: left;
font-weight: 500;
-
}
.unit {
font-size: 28rpx;
- color: #F5222D;
+ color: #f5222d;
letter-spacing: 0;
text-align: left;
font-weight: 400;
@@ -326,7 +368,7 @@ export default {
}
.value {
font-size: 24rpx;
- color: rgba(0,0,0,0.55);
+ color: rgba(0, 0, 0, 0.55);
letter-spacing: 0;
text-align: left;
font-weight: 400;
@@ -339,7 +381,7 @@ export default {
display: flex;
flex-direction: row;
align-items: center;
- border-top: 2rpx solid rgba($color: #DDDDDD, $alpha: 0.8);
+ border-top: 2rpx solid rgba($color: #dddddd, $alpha: 0.8);
.label {
flex: 0 0 84rpx;
font-size: 28rpx;
@@ -352,7 +394,7 @@ export default {
height: 60rpx;
line-height: 60rpx;
text-align: center;
- background: #F4F5F6;
+ background: #f4f5f6;
border-radius: 4rpx;
font-size: 28rpx;
color: #555555;
@@ -365,8 +407,8 @@ export default {
}
.other {
padding: 0rpx 32rpx;
- border-bottom: 2rpx solid #D8D8D8;
- background: #FFFFFF;
+ border-bottom: 2rpx solid #d8d8d8;
+ background: #ffffff;
.title {
font-size: 28rpx;
color: #000000;
@@ -412,23 +454,23 @@ export default {
flex-direction: row;
align-items: center;
font-size: 28rpx;
- color: #FFFFFF;
+ color: #ffffff;
letter-spacing: 0;
text-align: center;
font-weight: 400;
- .inquiry-btn{
+ .inquiry-btn {
width: 200rpx;
height: 80rpx;
line-height: 80rpx;
- background: #FAAB0C;
+ background: #faab0c;
border-top-left-radius: 2002000rpx;
border-bottom-left-radius: 2002000rpx;
}
- .book-btn{
+ .book-btn {
width: 200rpx;
height: 80rpx;
line-height: 80rpx;
- background: #EE0A24;
+ background: #ee0a24;
border-top-right-radius: 2002000rpx;
border-bottom-right-radius: 2002000rpx;
}
@@ -436,7 +478,7 @@ export default {
}
.popup_modal {
// height: 960rpx;
- background: #FFFFFF;
+ background: #ffffff;
border-radius: 20rpx 20rpx 0 0;
.card-box {
padding: 0rpx 32rpx;
@@ -445,8 +487,8 @@ export default {
flex-direction: row;
// align-items: center;
// height: 240rpx;
- background: #FFFFFF;
- border-bottom: 2rpx solid #D8D8D8;
+ background: #ffffff;
+ border-bottom: 2rpx solid #d8d8d8;
padding: 40rpx 0rpx;
.image {
flex: 0 0 160rpx;
@@ -472,26 +514,26 @@ export default {
font-weight: 600;
padding-bottom: 30rpx;
}
- .close-icon{
+ .close-icon {
position: relative;
top: -20rpx;
}
}
- .price{
+ .price {
font-size: 40rpx;
- color: #F5222D;
+ color: #f5222d;
letter-spacing: 0;
text-align: left;
font-weight: 600;
}
}
}
- .choose-box{
- border-bottom: 2rpx solid #D8D8D8;
+ .choose-box {
+ border-bottom: 2rpx solid #d8d8d8;
padding: 24rpx 32rpx;
- .label{
+ .label {
font-size: 30rpx;
- color: rgba(0,0,0,0.85);
+ color: rgba(0, 0, 0, 0.85);
letter-spacing: 0;
text-align: left;
font-weight: 400;
@@ -502,62 +544,61 @@ export default {
flex-direction: row;
align-items: center;
}
- .tag-box{
+ .tag-box {
padding: 0rpx 47rpx;
height: 60rpx;
line-height: 60rpx;
- background: #F5F5F5;
+ background: #f5f5f5;
border-radius: 8px;
margin-right: 12rpx;
font-size: 28rpx;
- color: rgba(0,0,0,0.75);
+ color: rgba(0, 0, 0, 0.75);
text-align: center;
font-weight: 400;
}
.kg-select {
- background: #1890FF;
- color: #FFFFFF;
-
+ background: #1890ff;
+ color: #ffffff;
}
- .input-row{
+ .input-row {
display: flex;
flex-direction: row;
align-items: center;
padding-top: 20rpx;
- .easyinput{
+ .easyinput {
height: 64rpx;
- background: #F5F5F5;
+ background: #f5f5f5;
border-radius: 8rpx;
}
- .symbol{
+ .symbol {
padding: 0rpx 16rpx;
font-size: 32rpx;
- color: rgba(0,0,0,0.85);
+ color: rgba(0, 0, 0, 0.85);
font-weight: 400;
}
}
}
- .quantity-row{
+ .quantity-row {
display: flex;
flex-direction: row;
justify-content: space-between;
align-items: center;
padding: 32rpx 32rpx 0rpx 32rpx;
- .label{
+ .label {
font-size: 30rpx;
- color: rgba(0,0,0,0.85);
+ color: rgba(0, 0, 0, 0.85);
letter-spacing: 0;
font-weight: 400;
}
}
- .ygzl-text{
- padding:20rpx 32rpx 0rpx ;
+ .ygzl-text {
+ padding: 20rpx 32rpx 0rpx;
display: flex;
flex-direction: row;
justify-content: flex-end;
font-family: PingFangSC-Regular;
font-size: 24rpx;
- color: rgba(0,0,0,0.50);
+ color: rgba(0, 0, 0, 0.5);
font-weight: 400;
}
.popup-footer-row {
@@ -570,10 +611,10 @@ export default {
height: 96rpx;
line-height: 96rpx;
text-align: center;
- background: #007AFF;
+ background: #007aff;
border-radius: 10rpx;
font-size: 36rpx;
- color: #FFFFFF;
+ color: #ffffff;
font-weight: 500;
}
}
diff --git a/static/imgs/cart/no-data-icon.png b/static/imgs/cart/no-data-icon.png
new file mode 100644
index 0000000..d31f2b3
Binary files /dev/null and b/static/imgs/cart/no-data-icon.png differ
diff --git a/uni_modules/uni-nav-bar/components/uni-nav-bar/uni-nav-bar.vue b/uni_modules/uni-nav-bar/components/uni-nav-bar/uni-nav-bar.vue
index 2fdfe35..59a5cc4 100644
--- a/uni_modules/uni-nav-bar/components/uni-nav-bar/uni-nav-bar.vue
+++ b/uni_modules/uni-nav-bar/components/uni-nav-bar/uni-nav-bar.vue
@@ -181,7 +181,7 @@
display: flex;
/* #endif */
flex-wrap: nowrap;
- width: 120rpx;
+ // width: 120rpx;
// padding: 0 6px;
justify-content: center;
align-items: center;