diff --git a/jiuyi2/api/shop.js b/jiuyi2/api/shop.js index 3170fbde..80c4d1a7 100644 --- a/jiuyi2/api/shop.js +++ b/jiuyi2/api/shop.js @@ -240,9 +240,9 @@ const shop = { */ merchant(param) { return util.request({ - url: `/shopify/merchant`, + url: `/shopify/appMerInfoApi/getMerDetail`, method: 'GET', - path: param.path, + query: param.query, load: true, }) }, diff --git a/jiuyi2/common/js/config.js b/jiuyi2/common/js/config.js index d9448b2f..bce99ca0 100644 --- a/jiuyi2/common/js/config.js +++ b/jiuyi2/common/js/config.js @@ -6,7 +6,8 @@ const config = { // host: 'h5api', // #endif // #ifndef H5 - host: 'http://91f.xyz:8080', + // host: 'http://91f.xyz:8080', + host: 'http://chi9fe.natappfree.cc', // #endif // 支付方式配置 payType: { diff --git a/jiuyi2/components/index/indexVideo.vue b/jiuyi2/components/index/indexVideo.vue index bbf1b54f..647df013 100644 --- a/jiuyi2/components/index/indexVideo.vue +++ b/jiuyi2/components/index/indexVideo.vue @@ -586,11 +586,10 @@ </view> <!-- 只有公开赞显示点赞数 --> - <view class="txt mt10" v-if="item.isLike && item.likeType == 0"> - <text class="text">{{ item.likeCount }}</text> - </view> - <view class="txt mt10" v-else> - <text class="text">点赞</text> + <view class="txt mt10"> + <text class="text" v-if="item.isLike == 0 && item.likeType == 0">{{ item.likeCount }}</text> + <text class="text" v-else-if="item.isLike == 0 && item.likeType == 1">隐私赞</text> + <text class="text" v-else>点赞</text> </view> </view> </view> diff --git a/jiuyi2/components/shop/detail/footerMenu.vue b/jiuyi2/components/shop/detail/footerMenu.vue index 3b92574e..6be67cd5 100644 --- a/jiuyi2/components/shop/detail/footerMenu.vue +++ b/jiuyi2/components/shop/detail/footerMenu.vue @@ -89,23 +89,26 @@ function handleBuy() { // 客服 function toCustomer() { - api.shop.getCustomerService({ merchantId: props.detail.merId }).then(rs => { - if (rs.code == 200) { - let param = {}; - param.type = 'C2C' - param.name = `${props.detail.merName}` - param.msgId = `${rs.data.serviceId}` - param.isCustomer = true - - util.toChat(param) - - uni.navigateTo({ - url: util.setUrl('/pages/news/chat/chat', param) - }) - } else { - util.alert(rs.msg) - } + uni.navigateTo({ + url: util.setUrl('/pages/mine/setting/feedback') }) + // api.shop.getCustomerService({ merchantId: props.detail.merId }).then(rs => { + // if (rs.code == 200) { + // let param = {}; + // param.type = 'C2C' + // param.name = `${props.detail.merName}` + // param.msgId = `${rs.data.serviceId}` + // param.isCustomer = true + + // util.toChat(param) + + // uni.navigateTo({ + // url: util.setUrl('/pages/news/chat/chat', param) + // }) + // } else { + // util.alert(rs.msg) + // } + // }) } </script> @@ -116,7 +119,7 @@ function toCustomer() { <view class="menu df fdr jcsb aic"> <view class="option df fdc aic"> <image class="wh30" src="/static/store.png" mode="aspectFit" /> - <text class="text mt10">店铺</text> + <text class="text mt10" @click="link(`/pages/shop/store/index?storeId=${detail.merId}`)">店铺</text> </view> <view class="option df fdc aic" @click="handleCollect"> diff --git a/jiuyi2/pages/index/index.nvue b/jiuyi2/pages/index/index.nvue index 605bf838..9c596671 100644 --- a/jiuyi2/pages/index/index.nvue +++ b/jiuyi2/pages/index/index.nvue @@ -163,20 +163,16 @@ util.getMyTask() // 监听登录 - uni.$on('login', () => { - recList.data.length = 0 - attList.data.length = 0 - nextTick(() => { - // 获取列表 - tabCurrent.value.refreshList() - }) - }) + // uni.$on('login', () => { + // // 获取列表 + // tabCurrent.value.refreshList() + // }) // 监听登录 - uni.$on('logout', () => { - // 获取列表 - tabCurrent.value.refreshList() - }) + // uni.$on('logout', () => { + // // 获取列表 + // tabCurrent.value.refreshList() + // }) // 视频数据被修改 uni.$on('updateVideo', (item) => { diff --git a/jiuyi2/pages/index/videoHome.vue b/jiuyi2/pages/index/videoHome.vue index 7cce3588..9f14f3e1 100644 --- a/jiuyi2/pages/index/videoHome.vue +++ b/jiuyi2/pages/index/videoHome.vue @@ -356,7 +356,7 @@ function toCommentsList() { <view class="btns df"> <template v-if="detail.isAttention == 0"> <view class="btn lg cancel f1" @click="handleAttention">已关注</view> - <view class="btn lg cancel f1 ml20" @click="handleMessage">私信</view> + <view class="btn lg cancel f1 ml20" @click="handleMessage" v-if="!userinfo.teenTime">私信</view> </template> <template v-else> <view class="btn lg focus f1" @click="handleAttention">关注</view> @@ -401,7 +401,7 @@ function toCommentsList() { <view class="txt mt20 c111 f20">分享主页</view> </view> --> - <view class="option ver jcc bfff br10" @click="handleMessage"> + <view class="option ver jcc bfff br10" @click="handleMessage" v-if="!userinfo.teenTime"> <image class="wh50" src="/static/email.png" mode="aspectFit" /> <view class="txt mt20 c111 f20">私信Ta</view> </view> diff --git a/jiuyi2/pages/index/wallet/topUp.vue b/jiuyi2/pages/index/wallet/topUp.vue index d098955d..b992576a 100644 --- a/jiuyi2/pages/index/wallet/topUp.vue +++ b/jiuyi2/pages/index/wallet/topUp.vue @@ -20,8 +20,8 @@ totalAmount: '', }) - onLoad(() => { - // + onLoad((option) => { + if(option.amount) form.totalAmount = option.amount }) // 充值 diff --git a/jiuyi2/pages/mine/mine.vue b/jiuyi2/pages/mine/mine.vue index 0cc760eb..cb4be092 100644 --- a/jiuyi2/pages/mine/mine.vue +++ b/jiuyi2/pages/mine/mine.vue @@ -57,8 +57,7 @@ function toCustomer() { param.isCustomer = true util.toChat(param) - - + uni.navigateTo({ url: util.setUrl('/pages/news/chat/chat', param) }) diff --git a/jiuyi2/pages/release/commodity.vue b/jiuyi2/pages/release/commodity.vue index 8fe153e8..bea5f729 100644 --- a/jiuyi2/pages/release/commodity.vue +++ b/jiuyi2/pages/release/commodity.vue @@ -55,9 +55,11 @@ // 商品佣金 form.commission = detail.commission // 商品详情 - form.infoRichText = detail.infoRichText || '' - // 富文本编辑器初始化 - proxy.$refs.editorAreaRef.init(form.infoRichText) + if (detail.infoRichText) { + form.infoRichText = JSON.parse(detail.infoRichText) + // 富文本编辑器初始化 + proxy.$refs.editorAreaRef.init(form.infoRichText) + } // 规格 form.specs = detail.specs.map(item => { return { @@ -176,7 +178,7 @@ */ function handleCate(ev) { let index = ev.detail.value - if (index == categoryIndex.value) return + if (index === categoryIndex.value) return categoryIndex.value = index form.categoryId = category[categoryIndex.value].id } @@ -228,7 +230,11 @@ // 轮播图 data.sliderImage = data.sliderImage.join(',') - + // 商品详情 + // if (data.infoRichText) data.infoRichText = Buffer.from(data.infoRichText, 'utf8').toString('base64'); + // if (data.infoRichText) data.infoRichText = JSON.stringify(data.infoRichText) + console.log(btoa, data.infoRichText) + return // api.shop.saveProduct({ data, diff --git a/jiuyi2/pages/release/video.vue b/jiuyi2/pages/release/video.vue index ee730f20..1bb16ae9 100644 --- a/jiuyi2/pages/release/video.vue +++ b/jiuyi2/pages/release/video.vue @@ -111,6 +111,20 @@ form.description = detail.description // //视频状态 0草稿 1待审核 2审核失败 3已发布 4已下架 form.status = detail.status + // 第几秒展示 + if (detail.popupTime) form.popupTime = detail.popupTime + // 关联视频的商品id + if (detail.productId) { + form.productId = detail.productId + // 商品名称 + form.productName = detail.productName + // 商品价格 + form.productPrice = detail.productPrice + // 商品图片 + form.productImage = detail.productImage + // 商品佣金 + form.commission = detail.commission + } // 回显话题列表 if (detail.tagsList) labelSelect.push(...detail.tagsList) // 匹配用户id @@ -527,7 +541,7 @@ <view class="df oh mtb20"> <view class="col oh df fdc jcsb f1 mr20"> <view class="name">{{form.productName}}</view> - <view class="price thd cFF9B27 f28"> + <view class="price thd mt10 cFF9B27 f28"> <text class="price thd mr20">价格{{form.productPrice}}</text> <text class="commission thd">佣金{{form.commission}}</text> </view> diff --git a/jiuyi2/pages/shop/commodity/index.vue b/jiuyi2/pages/shop/commodity/index.vue index e1faffba..e6f9ede5 100644 --- a/jiuyi2/pages/shop/commodity/index.vue +++ b/jiuyi2/pages/shop/commodity/index.vue @@ -94,7 +94,10 @@ if (rs.code == 200) { // const result = rs.data - if (result.infoRichText) result.infoRichText = util.imgReplace(result.infoRichText) + if (result.infoRichText) { + result.infoRichText = JSON.parse(result.infoRichText) + result.infoRichText = util.imgReplace(result.infoRichText) + } Object.assign(detail, {}, result) return } @@ -131,7 +134,13 @@ // 拉起订单 function showMakeOrder() { - proxy.$refs.makeOrderRef.open() + util.isLogin(() => { + proxy.$refs.makeOrderRef.open() + }).then(rs => { + uni.navigateTo({ + url: '/pages/login/loginPhone' + }) + }) } /** diff --git a/jiuyi2/pages/shop/commodity/payment.vue b/jiuyi2/pages/shop/commodity/payment.vue index 4687a71c..4c73aef3 100644 --- a/jiuyi2/pages/shop/commodity/payment.vue +++ b/jiuyi2/pages/shop/commodity/payment.vue @@ -149,6 +149,14 @@ uni.$off('updateOrderDetail') uni.navigateBack() return + } else if (res.code === 501) { + util.alert(res.msg) + uni.navigateTo({ + url: util.setUrl('/pages/index/wallet/topUp', { + amount: detail.totalPrice, + }), + }) + return } util.alert({ content: res.msg, diff --git a/jiuyi2/pages/shop/store/index.vue b/jiuyi2/pages/shop/store/index.vue index 3e80c3d6..bb9d5819 100644 --- a/jiuyi2/pages/shop/store/index.vue +++ b/jiuyi2/pages/shop/store/index.vue @@ -1,68 +1,198 @@ <script setup> - // 店铺首页 - import { - ref - } from 'vue' - import { - onLoad, - onPageScroll - } from '@dcloudio/uni-app'; +// 店铺首页 +import { + computed, + reactive, + ref, + defineExpose, +} from 'vue' +import { + onLoad, + onPageScroll +} from '@dcloudio/uni-app'; - // 顶部 - import apex from '@/components/header/apex.vue' - // 商品列表 - import productList from '@/components/shop/productList/productList' +// 工具库 +import util from '@/common/js/util.js' +// 顶部 +import apex from '@/components/header/apex.vue' +// 商品列表 +import productList from '@/components/shop/productList/productList' - // 分类选项 - const filteredList = ref([{ - label: '默认', - value: 1, - isUpDown: false, - slot: null - }, { - label: '销量', - value: 2, - isUpDown: false, - slot: null - }, { - label: '新品', - value: 3, - isUpDown: false, - slot: null - }, { - label: '价格', - value: 4, - isUpDown: true, - slot: null - }]) - // 顶部导航背景颜色 - const apexBgColor = ref('#ffffff00') - // 店铺id - const storeId = ref('') +import api from '@/api/index.js' - onLoad((option) => { - if (option.storeId) storeId.value = option.storeId +// 分类选项 +const filteredList = ref([{ + label: '默认', + value: 1, + isUpDown: false, + slot: null +}, { + label: '销量', + value: 2, + isUpDown: false, + slot: null +}, { + label: '新品', + value: 3, + isUpDown: false, + slot: null +}, { + label: '价格', + value: 4, + isUpDown: true, + slot: null +}]) +// 顶部导航背景颜色 +const apexBgColor = ref('#ffffff00') +// 店铺id +const storeId = ref('') +// 详情 +const detail = reactive({}) +// 参数 +const listPrototype = reactive({ + pageSize: 10, + pageNum: 1, + total: 0, + // 商户主键 + merId: '', + data: [], +}) + +// 用户信息 +const userinfo = computed(() => uni.$store.state.userinfo || {}) +onLoad((option) => { + if (option.storeId) storeId.value = option.storeId + getDetail() + listPrototype.merId = storeId.value + getList() +}) + +onPageScroll((ev) => { + apexBgColor.value = ev.scrollTop > 44 ? '#fff' : '#ffffff00' +}) + +// 获取店铺详情 +function getDetail() { + api.shop.merchant({ + query: { + merId: storeId.value, + userId: userinfo.value.id, + } + }).then(rs => { + if (rs.code == 200) { + Object.assign(detail, {}, rs.data) + return + } + util.alert({ + content: rs.msg, + showCancel: false + }); }) +} +// 收藏店铺 +function handleCollectStore() { + api.shop.followShop({ + data: { + shopId: storeId.value, + status: { + 0: 1, + 1: 0, + }[detail.isFollow] + } + }).then(rs => { + if (rs.code == 200) { + // 关注状态 + detail.isFollow = { + 0: 1, + 1: 0, + }[detail.isFollow] + // 关注数量 + detail.followNum = rs.data - onPageScroll((ev) => { - apexBgColor.value = ev.scrollTop > 44 ? '#fff' : '#ffffff00' - }) - - // 获取店铺详情 - function getDetail() { - // - api.shop.merchant({ - path: [id.value], - }).then(rs => { - if (rs.code == 200) { - return - } - util.alert({ - content: rs.msg, - showCancel: false - }); + getDetail() + return + } + util.alert({ + content: rs.msg, + showCancel: false, }) - } + }) +} +// 客服 +function toCustomer() { + uni.navigateTo({ + url: util.setUrl('/pages/mine/setting/feedback') + }) + // api.shop.getCustomerService({ merchantId: storeId.value }).then(rs => { + // if (rs.code == 200) { + // let param = {}; + // param.type = 'C2C' + // param.name = `${detail.name}` + // param.msgId = `${rs.data.serviceId}` + // param.isCustomer = true + + // util.toChat(param) + + // uni.navigateTo({ + // url: util.setUrl('/pages/news/chat/chat', param) + // }) + // } else { + // util.alert(rs.msg) + // } + // }) + +} +// 商品列表 +function getList() { + + api.shop.getProduct({ + data: { + pageSize: listPrototype.pageSize, + pageNum: listPrototype.pageNum, + // 商户主键 + merId: listPrototype.merId, + }, + }).then(rs => { + if (rs.code == 200) { + if (listPrototype.pageNum == 1) listPrototype.data.length = [] + listPrototype.data.push(...rs.rows) + listPrototype.total = rs.total + return + } + util.alert({ + content: rs.msg, + showCancel: false, + }) + }).finally(rs => { + uni.stopPullDownRefresh() + }) +} +// 点击列表项 +function handleItem(item) { + uni.navigateTo({ + url: util.setUrl('/pages/shop/commodity/index', { + productId: item.id + }) + }) +} +// 重载列表 +function refreshList() { + listPrototype.pageNum = 1 + listPrototype.total = 0 + getList() +} + +// 加载更多列表 +function getMoreList() { + if (listPrototype.total <= listPrototype.data.length) return + listPrototype.pageNum++ + getList() +} + +defineExpose({ + refreshList, + getMoreList, +}) </script> <template> @@ -71,25 +201,24 @@ <apex :bgColor="apexBgColor" mode="flex"> <template #content> <view class="search df jcr"> - <view class=""> + <view class="" v-if="0"> <image class="wh50" src="/static/share2.png" mode="aspectFit" /> </view> </view> </template> </apex> - <!-- --> <view class="shopHeaderBg"></view> <!-- 店铺卡片 --> <view class="store pr rows ptb25 plr25 mt40"> <!-- 店铺头像 --> - <image class="wh120 fs0 br10" src="/static/logo.png" mode="aspectFill" /> + <image class="wh120 fs0 br10" :src="detail.rectangleLogo" mode="aspectFill" /> <!-- 店铺信息 名称 评分 关注数量 --> <view class="info f1 ml20"> <!-- 店铺名称 --> <view class="c333 f28"> - <text>店铺名称</text> + <text>{{ detail.name }}</text> </view> <view class="df aic mt10"> @@ -101,7 +230,7 @@ </view> <!-- 关注数量 --> <view class="c666 f24"> - <text>123关注</text> + <text>{{ detail.followNum }}关注</text> </view> </view> </view> @@ -109,13 +238,14 @@ <!-- 按钮区 --> <view class="btns w150"> <view> - <view class="btn ti warmHollow fmid" @click="followButton"> - <uni-icons class="mr10" color="#FF9B27" type="plusempty" size="13" /> - <text>关注</text> + <view @click="handleCollectStore" class="btn sm warm fmid fdr plr30"> + <uni-icons class="mr10" color="#fff" type="plusempty" size="13" v-if="detail.isFollow != 1" /> + <text class="cfff f28" v-else>已</text> + <text class="cfff f28">关注</text> </view> </view> - <view class="mt10"> + <view class="mt10" @click="toCustomer"> <view class="btn ti warmHollow fmid"> <image class="kefu wh30" src="/static/customer-service1.png" mode="aspectFit" /> <text>客服</text> @@ -126,14 +256,46 @@ <!-- 商品列表 --> <view class="product oh ptb30 plr30"> - <productList ref="product" /> + <view class="list"> + <view class="item oh bfff br20" v-for="(item, index) in listPrototype.data" :key="index" + @click="handleItem(item)"> + <!-- 需要展示的图 --> + <image class="poster" :src="item.sliderImage.split(',')[0]" mode="aspectFill" /> + + <!-- 标题 --> + <view class="main plr20"> + <view class="title mtb10 thd c333 f30">{{ item.name }}</view> + <view class="info mtb10 df aic"> + <!-- 价格 --> + <view class="price thd wsn cFF9B27"> + <text class="txt f20">¥</text> + <text class="txt f36">{{ item.price }}</text> + </view> + <!-- 销量 --> + <view class="sales fs0 thd wsn ml10 c999 f26">销量:{{ item.sales }}</view> + <view class="f1"></view> + </view> + </view> + </view> + </view> </view> </view> </template> <style lang="scss" scoped> - // - .store { - // margin-top: -50rpx; +// 卡片 +.list { + display: grid; + grid-template-columns: repeat(2, 1fr); + grid-gap: 20rpx; + + // 单个 + .item { + .poster { + width: 100%; + height: 340rpx; + border-radius: 20rpx 20rpx 0 0; + } } +} </style> \ No newline at end of file diff --git a/jiuyi2/static/footerMenuPlus1.png b/jiuyi2/static/footerMenuPlus1.png index 3b9de85a..583ff927 100644 Binary files a/jiuyi2/static/footerMenuPlus1.png and b/jiuyi2/static/footerMenuPlus1.png differ diff --git a/jiuyi2/static/userMenu.png b/jiuyi2/static/userMenu.png index 90cb185b..1be92fa5 100644 Binary files a/jiuyi2/static/userMenu.png and b/jiuyi2/static/userMenu.png differ diff --git a/jiuyi2/vite.config.js b/jiuyi2/vite.config.js index fc5535df..d8647819 100644 --- a/jiuyi2/vite.config.js +++ b/jiuyi2/vite.config.js @@ -3,7 +3,8 @@ import { } from 'vite'; import uni from '@dcloudio/vite-plugin-uni'; -let target = 'http://91f.xyz:8080' +// let target = 'http://91f.xyz:8080' +let target = 'http://chi9fe.natappfree.cc' export default defineConfig({ plugins: [uni()],