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 @@ @@ -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 @@