diff --git a/env b/env
deleted file mode 100644
index da303d9..0000000
--- a/env
+++ /dev/null
@@ -1,20 +0,0 @@
-# 版本号
-SHOPRO_VERSION = v1.8.3
-
-# 正式环境接口域名
-SHOPRO_BASE_URL = https://api.shopro.sheepjs.com
-
-# 开发环境接口域名
-SHOPRO_DEV_BASE_URL = https://api.shopro.sheepjs.com
-
-# 开发环境运行端口
-SHOPRO_DEV_PORT = 3000
-
-# 接口地址前缀
-SHOPRO_API_PATH = /shop/api/
-
-# 客户端静态资源地址 空=默认使用服务端指定的CDN资源地址前缀 | local=本地 | http(s)://xxx.xxx=自定义静态资源地址前缀
-SHOPRO_STATIC_URL = https://file.sheepjs.com
-
-# 是否开启直播 1 开启直播 | 0 关闭直播 (小程序官方后台未审核开通直播权限时请勿开启)
-SHOPRO_MPLIVE_ON = 0
\ No newline at end of file
diff --git a/pages/goods/comment/list.vue b/pages/goods/comment/list.vue
index f8958ad..138b5f5 100644
--- a/pages/goods/comment/list.vue
+++ b/pages/goods/comment/list.vue
@@ -1,160 +1,170 @@
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
-
+ }" @tap="loadmore" />
+
+ .avatar {
+ width: 52rpx;
+ height: 52rpx;
+ border-radius: 50%;
+ }
+
+ .nickname {
+ font-size: 26rpx;
+ font-weight: 500;
+ color: #999999;
+ }
+
+ .create-time {
+ font-size: 24rpx;
+ font-weight: 500;
+ color: #c4c4c4;
+ }
+
+ .content-title {
+ font-size: 26rpx;
+ font-weight: 400;
+ color: #666666;
+ line-height: 42rpx;
+ }
+
+ .content-img {
+ width: 174rpx;
+ height: 174rpx;
+ }
+
+ .cicon-info-o {
+ font-size: 26rpx;
+ color: #c4c4c4;
+ }
+
+ .foot-title {
+ font-size: 24rpx;
+ font-weight: 500;
+ color: #999999;
+ }
+ }
+
+ .btn-box {
+ width: 100%;
+ height: 120rpx;
+ background: #fff;
+ border-top: 2rpx solid #eee;
+ }
+
+ .tab-btn {
+ width: 130rpx;
+ height: 62rpx;
+ background: #eeeeee;
+ border-radius: 31rpx;
+ font-size: 28rpx;
+ font-weight: 400;
+ color: #999999;
+ border: 1px solid #e5e5e5;
+ margin-right: 10rpx;
+ }
+
\ No newline at end of file
diff --git a/pages/goods/components/detail/comment-item.vue b/pages/goods/components/detail/comment-item.vue
index d81bac3..2c96ac0 100644
--- a/pages/goods/components/detail/comment-item.vue
+++ b/pages/goods/components/detail/comment-item.vue
@@ -5,19 +5,19 @@
- {{ item.user_nickname }}
+ {{ item.userNickname }}
-
+
{{ item.content }}
-
+
-
+
diff --git a/pages/goods/components/detail/detail-comment-card.vue b/pages/goods/components/detail/detail-comment-card.vue
index 10b4fa3..90cd4df 100644
--- a/pages/goods/components/detail/detail-comment-card.vue
+++ b/pages/goods/components/detail/detail-comment-card.vue
@@ -46,9 +46,10 @@
async function getComment(id) {
const { data } = await sheep.$api.goods.comment(id, {
list_rows: 3,
- });
- state.commentList = data.data;
- state.total = data.total;
+ });
+ const {data:datas} = await sheep.$api.goods.comment2(id);
+ state.commentList = data;
+ state.total = datas.total;
}
onBeforeMount(() => {
getComment(props.goodsId);
diff --git a/pages/goods/index.vue b/pages/goods/index.vue
index 5f20fe1..2c70b59 100644
--- a/pages/goods/index.vue
+++ b/pages/goods/index.vue
@@ -95,7 +95,7 @@
-
+
{
+ console.log('页面被访问')
// 非法参数
if (!options.id) {
state.goodsInfo = null;
@@ -250,10 +251,17 @@
state.goodsId = options.id;
// 加载商品信息
sheep.$api.goods.detail(state.goodsId).then((res) => {
+ console.log(res)
state.skeletonLoading = false;
- if (res.error === 0) {
+ if (res.code === 0) {
+ // 在此处对数据做出转换
+ res.data.sales=res.data.salesCount
+ res.data.original_price=res.data.marketPrice/100
+ res.data.subtitle=res.data.introduction
+ res.data.title=res.data.name
+ res.data.price=[res.data.price/100]
state.goodsInfo = res.data;
- state.goodsSwiper = formatGoodsSwiper(state.goodsInfo.images);
+ state.goodsSwiper = formatGoodsSwiper(state.goodsInfo.sliderPicUrls);
} else {
// 未找到商品
state.goodsInfo = null;
diff --git a/pages/goods/list.vue b/pages/goods/list.vue
index d7de122..19923d1 100644
--- a/pages/goods/list.vue
+++ b/pages/goods/list.vue
@@ -261,12 +261,12 @@
sort: Sort,
order: Order,
category_id: !keyword ? categoryId : '',
- list_rows,
+ pageSize:list_rows,
keyword: keyword,
- page,
+ pageNo:page,
});
- if (res.error === 0) {
- let couponList = _.concat(state.pagination.data, res.data.data);
+ if (res.code === 0) {
+ let couponList = _.concat(state.pagination.data, res.data.list);
state.pagination = {
...res.data,
data: couponList,
diff --git a/pages/index/cart.vue b/pages/index/cart.vue
index 2485ae8..aba9db4 100644
--- a/pages/index/cart.vue
+++ b/pages/index/cart.vue
@@ -36,19 +36,19 @@
/>
@@ -112,9 +112,9 @@
isAllSelected: computed(() => cart.isAllSelected),
totalPriceSelected: computed(() => cart.totalPriceSelected),
});
-
// 单选选中
function onSelectSingle(id) {
+ console.log('单选')
cart.selectSingle(id);
}
// 全选
@@ -154,7 +154,7 @@
if(cartItem.goods_num === e) return;
cartItem.goods_num = e;
cart.update({
- goods_id: cartItem.goods_id,
+ goods_id: cartItem.id,
goods_num: e,
goods_sku_price_id: cartItem.goods_sku_price_id,
});
diff --git a/pages/index/category.vue b/pages/index/category.vue
index 9024ef0..e6e049e 100644
--- a/pages/index/category.vue
+++ b/pages/index/category.vue
@@ -1,250 +1,232 @@
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
-
-
-
-
+ }" @tap="loadmore" />
+
+
+
+
+ .banner-img {
+ width: calc(100vw - 130px);
+ border-radius: 5px;
+ margin-bottom: 20rpx;
+ }
+ }
+ }
+
\ No newline at end of file
diff --git a/pages/index/index.vue b/pages/index/index.vue
index 8d953c6..41567d9 100644
--- a/pages/index/index.vue
+++ b/pages/index/index.vue
@@ -1,70 +1,84 @@
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
-
+
\ No newline at end of file
diff --git a/sheep/api/cart.js b/sheep/api/cart.js
index efa5c8a..a319ec5 100644
--- a/sheep/api/cart.js
+++ b/sheep/api/cart.js
@@ -1,9 +1,10 @@
import request from '@/sheep/request';
+import request2 from '@/sheep/request2';
export default {
list: (data) =>
- request({
- url: 'cart',
+ request2({
+ url: 'trade/cart/list',
method: 'GET',
custom: {
showLoading: false,
@@ -25,14 +26,14 @@ export default {
}),
// 删除购物车
delete: (ids) =>
- request({
- url: 'cart/' + ids,
+ request2({
+ url: 'trade/cart/delete?ids=' + ids,
method: 'DELETE',
}),
update: (data) =>
- request({
- url: 'cart',
- method: 'POST',
+ request2({
+ url: 'trade/cart/update-count',
+ method: 'PUT',
data: {
...data,
type: 'cover',
diff --git a/sheep/api/category.js b/sheep/api/category.js
index 742f9c0..9c82506 100644
--- a/sheep/api/category.js
+++ b/sheep/api/category.js
@@ -1,9 +1,9 @@
-import request from '@/sheep/request';
+import request2 from '@/sheep/request2';
export default {
list: (params) =>
- request({
- url: 'category',
+ request2({
+ url: 'product/category/list',
method: 'GET',
params,
}),
diff --git a/sheep/api/goods.js b/sheep/api/goods.js
index 72b0a80..c2dfe61 100644
--- a/sheep/api/goods.js
+++ b/sheep/api/goods.js
@@ -1,10 +1,11 @@
import request from '@/sheep/request';
+import request2 from '@/sheep/request2';
export default {
// 商品详情
detail: (id, params = {}) =>
- request({
- url: 'goods/goods/' + id,
+ request2({
+ url: 'product/spu/get-detail?id=' + id,
method: 'GET',
params,
custom: {
@@ -15,8 +16,8 @@ export default {
// 商品列表
list: (params) =>
- request({
- url: 'goods/goods',
+ request2({
+ url: 'product/spu/page',
method: 'GET',
params,
custom: {
@@ -39,8 +40,18 @@ export default {
// 商品评价列表
comment: (id, params = {}) =>
- request({
- url: 'goods/comment/' + id,
+ request2({
+ url: 'product/comment/list?spuId=' + id,
+ method: 'GET',
+ params,
+ custom: {
+ showLoading: false,
+ showError: false,
+ },
+ }),
+ comment2: (id, params = {pageNo:1,pageSize:10,type:0}) =>
+ request2({
+ url: 'product/comment/page?spuId='+id,
method: 'GET',
params,
custom: {
diff --git a/sheep/api/index2.js b/sheep/api/index2.js
new file mode 100644
index 0000000..60fa605
--- /dev/null
+++ b/sheep/api/index2.js
@@ -0,0 +1,9 @@
+import request2 from '@/sheep/request2';
+
+export default {
+ decorate: () =>
+ request2({
+ url: 'promotion/decorate/list?page=1',
+ method: 'GET',
+ }),
+};
diff --git a/sheep/config/index.js b/sheep/config/index.js
index dfd5bbb..2d6a870 100644
--- a/sheep/config/index.js
+++ b/sheep/config/index.js
@@ -7,7 +7,7 @@ if (process.env.NODE_ENV === 'development') {
baseUrl = import.meta.env.SHOPRO_BASE_URL;
}
version = import.meta.env.SHOPRO_VERSION;
-console.log(`[Shopro ${version}] https://www.sheepjs.com/`);
+console.log(`[Shopro ${version}] http://api-dashboard.yudao.iocoder.cn/`);
export const apiPath = import.meta.env.SHOPRO_API_PATH;
export const staticUrl = import.meta.env.SHOPRO_STATIC_URL;
diff --git a/sheep/request2/index.js b/sheep/request2/index.js
new file mode 100644
index 0000000..358ddcc
--- /dev/null
+++ b/sheep/request2/index.js
@@ -0,0 +1,217 @@
+/**
+ * Shopro-request
+ * @description api模块管理,loading配置,请求拦截,错误处理
+ */
+
+import Request from 'luch-request';
+import { baseUrl, apiPath } from '@/sheep/config';
+import $store from '@/sheep/store';
+import $platform from '@/sheep/platform';
+import { showAuthModal } from '@/sheep/hooks/useModal';
+
+const options = {
+ // 显示操作成功消息 默认不显示
+ showSuccess: false,
+ // 成功提醒 默认使用后端返回值
+ successMsg: '',
+ // 显示失败消息 默认显示
+ showError: true,
+ // 失败提醒 默认使用后端返回信息
+ errorMsg: '',
+ // 显示请求时loading模态框 默认显示
+ showLoading: true,
+ // loading提醒文字
+ loadingMsg: '加载中',
+ // 需要授权才能请求 默认放开
+ auth: false,
+ // ...
+};
+
+// Loading全局实例
+let LoadingInstance = {
+ target: null,
+ count: 0,
+};
+
+/**
+ * 关闭loading
+ */
+function closeLoading() {
+ if (LoadingInstance.count > 0) LoadingInstance.count--;
+ if (LoadingInstance.count === 0) uni.hideLoading();
+}
+
+/**
+ * @description 请求基础配置 可直接使用访问自定义请求
+ */
+const http = new Request({
+ baseURL: 'https://api.shopro.sheepjs.com/',
+ timeout: 8000,
+ method: 'GET',
+ header: {
+ Accept: 'text/json',
+ 'Content-Type': 'application/json;charset=UTF-8',
+ platform: $platform.name,
+ },
+ // #ifdef APP-PLUS
+ sslVerify: false,
+ // #endif
+ // #ifdef H5
+ // 跨域请求时是否携带凭证(cookies)仅H5支持(HBuilderX 2.6.15+)
+ withCredentials: false,
+ // #endif
+ custom: options,
+});
+
+/**
+ * @description 请求拦截器
+ */
+http.interceptors.request.use(
+ (config) => {
+ // console.log(config);
+ if (config.custom.auth && !$store('user').isLogin) {
+ showAuthModal();
+ return Promise.reject();
+ }
+ if (config.custom.showLoading) {
+ LoadingInstance.count++;
+ LoadingInstance.count === 1 &&
+ uni.showLoading({
+ title: config.custom.loadingMsg,
+ mask: true,
+ fail: () => {
+ uni.hideLoading();
+ },
+ });
+ }
+ const token = uni.getStorageSync('token');
+ if (token) config.header['Authorization'] = token;
+ // TODO 芋艿:特殊处理
+ if (config.url.indexOf('/app-api/') !== -1) {
+ config.header['Accept'] = '*/*'
+ config.header['tenant-id'] = '1';
+ config.header['Authorization'] = 'Bearer test247';
+ }
+ return config;
+ },
+ (error) => {
+ return Promise.reject(error);
+ },
+);
+
+/**
+ * @description 响应拦截器
+ */
+http.interceptors.response.use(
+ (response) => {
+ // 自动设置登陆令牌
+ if (response.header.authorization || response.header.Authorization) {
+ $store('user').setToken(response.header.authorization || response.header.Authorization);
+ }
+
+ response.config.custom.showLoading && closeLoading();
+ if (response.data.code !== 0) {
+ if (response.config.custom.showError)
+ uni.showToast({
+ title: response.data.msg || '服务器开小差啦,请稍后再试~',
+ icon: 'none',
+ mask: true,
+ });
+ return Promise.resolve(response.data);
+ }
+ if (
+ response.data.error === 0 &&
+ response.data.msg !== '' &&
+ response.config.custom.showSuccess
+ ) {
+ uni.showToast({
+ title: response.config.custom.successMsg || response.data.msg,
+ icon: 'none',
+ });
+ }
+ return Promise.resolve(response.data);
+ },
+ (error) => {
+ const userStore = $store('user');
+ const isLogin = userStore.isLogin;
+ let errorMessage = '网络请求出错';
+ if (error !== undefined) {
+ switch (error.statusCode) {
+ case 400:
+ errorMessage = '请求错误';
+ break;
+ case 401:
+ if (isLogin) {
+ errorMessage = '您的登陆已过期';
+ } else {
+ errorMessage = '请先登录';
+ }
+ userStore.logout(true);
+ showAuthModal();
+ break;
+ case 403:
+ errorMessage = '拒绝访问';
+ break;
+ case 404:
+ errorMessage = '请求出错';
+ break;
+ case 408:
+ errorMessage = '请求超时';
+ break;
+ case 429:
+ errorMessage = '请求频繁, 请稍后再访问';
+ break;
+ case 500:
+ errorMessage = '服务器开小差啦,请稍后再试~';
+ break;
+ case 501:
+ errorMessage = '服务未实现';
+ break;
+ case 502:
+ errorMessage = '网络错误';
+ break;
+ case 503:
+ errorMessage = '服务不可用';
+ break;
+ case 504:
+ errorMessage = '网络超时';
+ break;
+ case 505:
+ errorMessage = 'HTTP版本不受支持';
+ break;
+ }
+ if (error.errMsg.includes('timeout')) errorMessage = '请求超时';
+ // #ifdef H5
+ if (error.errMsg.includes('Network'))
+ errorMessage = window.navigator.onLine ? '服务器异常' : '请检查您的网络连接';
+ // #endif
+ }
+
+ if (error && error.config) {
+ if (error.config.custom.showError === false) {
+ uni.showToast({
+ title: error.data?.msg || errorMessage,
+ icon: 'none',
+ mask: true,
+ });
+ }
+ error.config.custom.showLoading && closeLoading();
+ }
+
+ return false;
+ },
+);
+
+const request = (config) => {
+ if (config.url[0] !== '/') {
+ config.url = '/app-api/' + config.url;
+ }
+ // TODO 芋艿:额外拼接
+ if (config.url.indexOf('/app-api/') >= 0) {
+ config.url = 'http://api-dashboard.yudao.iocoder.cn' + config.url; // 调用【云端】
+ // config.url = 'http://127.0.0.1:48080' + config.url; // 调用【本地】
+ }
+ return http.middleware(config);
+};
+
+export default request;
diff --git a/sheep/router/index.js b/sheep/router/index.js
index 86796e5..e4c18c5 100644
--- a/sheep/router/index.js
+++ b/sheep/router/index.js
@@ -58,10 +58,10 @@ const _go = (
}
// 页面登录拦截
- if (nextRoute.meta?.auth && !$store('user').isLogin) {
- showAuthModal();
- return;
- }
+ // if (nextRoute.meta?.auth && !$store('user').isLogin) {
+ // showAuthModal();
+ // return;
+ // }
url = page;
if (!isEmpty(query)) {
diff --git a/sheep/store/cart.js b/sheep/store/cart.js
index 829dd08..8e07634 100644
--- a/sheep/store/cart.js
+++ b/sheep/store/cart.js
@@ -15,7 +15,7 @@ const cart = defineStore({
if (!state.selectedIds.length) return price.toFixed(2);
state.list.forEach((item) => {
price += state.selectedIds.includes(item.id)
- ? Number(item.sku_price.price) * item.goods_num
+ ? Number(item.sku.price/100) * item.count
: 0;
});
return price.toFixed(2);
@@ -24,9 +24,9 @@ const cart = defineStore({
actions: {
// 获取购物车列表
async getList() {
- const { data, error } = await cartApi.list();
- if (error === 0) {
- this.list = data;
+ const { data, code } = await cartApi.list();
+ if (code === 0) {
+ this.list = data.validList;
}
},
// 添加购物车
@@ -44,8 +44,8 @@ const cart = defineStore({
// 更新购物车
async update(goodsInfo) {
const { error } = await cartApi.update({
- goods_id: goodsInfo.goods_id,
- goods_num: goodsInfo.goods_num,
+ id: goodsInfo.goods_id,
+ count: goodsInfo.goods_num,
goods_sku_price_id: goodsInfo.goods_sku_price_id,
});
if (error === 0) {
@@ -58,8 +58,8 @@ const cart = defineStore({
if (typeof ids === 'array') {
ids = ids.join(',');
}
- const { error } = await cartApi.delete(ids);
- if (error === 0) {
+ const { code } = await cartApi.delete(ids);
+ if (code === 0) {
this.selectAll(false);
this.getList();
}