2025.03.12 工作代码提交

This commit is contained in:
sx 2025-03-12 22:11:26 +08:00
parent 09e8b23e43
commit 134facabb2
14 changed files with 633 additions and 605 deletions

View File

@ -110,6 +110,18 @@ const shop = {
})
},
/**
* 商品详情下面的商品推荐
* @param {Object} param
*/
getInfoProductRecommendations(param) {
return util.request({
url: `/shopify/appProductionApi/infoProductRecommendations`,
method: 'GET',
query: param.query
})
},
/**
* 商品分类列表
* @param {Object} param
@ -134,6 +146,18 @@ const shop = {
})
},
/**
* 个人中心下面的商品推荐
* @param {Object} param
*/
getMineUserProList(param) {
return util.request({
url: `/shopify/appProductionApi/personalCenterProductRecommendations`,
method: 'GET',
query: param.query,
})
},
/**
* 添加商品浏览记录
* @param {Object} param

View File

@ -9,7 +9,7 @@ const config = {
host: 'http://91f.xyz:8080',
// #endif
// 是否vivo显示
showVivo: false,
showVivo: true,
// 支付方式配置
payType: {
score: {

View File

@ -126,6 +126,9 @@
<view class="main">
<!-- 获取详情 -->
<proDetail :id="proId" :detail="detail" />
<!-- 填充 -->
<view class="fill" style="height: 180rpx;"></view>
</view>
</scroll-view>

View File

@ -49,23 +49,6 @@
})
//
const recentOrderList = ref([])
//
const menuFn = {
//
store() {
link('/pages/shop/store/index')
},
//
customerService() {
link('/pages/news/question-answer/index')
},
//
heibianStar() {
//
}
}
//
const editorCtx = ref(null)
//
const spaceIndex = ref(0)
//
@ -94,7 +77,6 @@
let result = ''
const richText = props.detail.infoRichText || ''
if (richText) result = decodeURIComponent(escape(atob(richText)))
console.log('richText', result, decodeURIComponent(escape(atob(richText))))
return result
})
@ -378,12 +360,9 @@
<!-- 商品详情 -->
<view class="content mt30">
<!-- <rich-text :nodes="infoRichText" v-if="infoRichText" /> -->
<parseRichText :imageProp="{'mode': 'widthFix',}" :content="infoRichText" />
<parseRichText :imageProp="{'mode': 'widthFix',}" :content="infoRichText" v-if="infoRichText" />
</view>
</view>
<!-- 填充 -->
<view class="fill" style="height: 180rpx;"></view>
</template>
<style lang="scss">

View File

@ -1,113 +1,113 @@
<script setup>
//
import {
ref,
reactive,
getCurrentInstance,
computed,
defineEmits,
onMounted
} from 'vue'
//
import util from '@/common/js/util.js'
//
import api from '@/api/index.js'
//
import {
useStore
} from 'vuex'
//
import {
ref,
reactive,
getCurrentInstance,
computed,
defineEmits,
onMounted
} from 'vue'
//
import util from '@/common/js/util.js'
//
import api from '@/api/index.js'
//
import {
useStore
} from 'vuex'
const {
proxy
} = getCurrentInstance()
//
const store = useStore()
//
const props = defineProps({
//
detail: {
type: Object,
default: () => ({})
},
})
//
const emit = defineEmits(['update', 'buy'])
//
const userinfo = computed(() => store.state.userinfo)
const {
proxy
} = getCurrentInstance()
//
const store = useStore()
//
const props = defineProps({
//
detail: {
type: Object,
default: () => ({})
},
})
//
const emit = defineEmits(['update', 'buy'])
//
const userinfo = computed(() => store.state.userinfo)
//
function handleCollect() {
util.isLogin().then(rs => {
//
api.shop.addProductCollect({
query: {
productId: props.detail.id,
type: {
0: 1,
1: 0,
}[props.detail.isCollect]
}
}).then(rs => {
if (rs.code == 200) {
//
props.detail.isCollect = {
0: 1,
1: 0,
}[props.detail.isCollect]
//
props.detail.collectNumber = rs.data
return
}
util.alert({
content: rs.msg,
showCancel: false,
//
function handleCollect() {
util.isLogin().then(rs => {
//
api.shop.addProductCollect({
query: {
productId: props.detail.id,
type: {
0: 1,
1: 0,
} [props.detail.isCollect]
}
}).then(rs => {
if (rs.code == 200) {
//
props.detail.isCollect = {
0: 1,
1: 0,
} [props.detail.isCollect]
//
props.detail.collectNumber = rs.data
return
}
util.alert({
content: rs.msg,
showCancel: false,
})
})
}).catch(() => {
//
uni.navigateTo({
url: '/pages/login/loginPhone'
})
})
}).catch(() => {
//
}
/**
* 跳转
* @param {Object} url 跳转路径
*/
function link(url) {
uni.navigateTo({
url: '/pages/login/loginPhone'
url,
})
})
}
}
/**
* 跳转
* @param {Object} url 跳转路径
*/
function link(url) {
uni.navigateTo({
url,
})
}
//
function handleBuy() {
emit('buy')
}
//
function handleBuy() {
emit('buy')
}
//
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
//
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)
// util.toChat(param)
// uni.navigateTo({
// url: util.setUrl('/pages/news/chat/chat', param)
// })
// } else {
// util.alert(rs.msg)
// }
// })
// uni.navigateTo({
// url: util.setUrl('/pages/news/chat/chat', param)
// })
// } else {
// util.alert(rs.msg)
// }
// })
}
}
</script>
<template>
@ -144,17 +144,17 @@ function toCustomer() {
</template>
<style scoped lang="scss">
//
.footerMneu {
//
.footerMneu {
//
.option {
width: 80rpx;
//
.option {
width: 80rpx;
.text {
color: #999;
font-size: 24rpx;
.text {
color: #999;
font-size: 24rpx;
}
}
}
}
</style>

View File

@ -16,24 +16,23 @@
choicenessTitle: {
type: Boolean,
default: false,
}
},
requestFn: {
type: Function,
default: (ev) => {
return api.shop.getProduct(ev)
}
},
})
//
//
const listPrototype = reactive({
pageSize: 10,
pageNum: 1,
total: 0,
//
searchValue: '',
//
merId: '',
//
brandId: '',
// code
categoryCode: '',
data: [],
})
//
const list = reactive([])
/**
* 点击列表项
@ -43,7 +42,8 @@
//
uni.navigateTo({
url: util.setUrl('/pages/shop/commodity/index', {
productId: item.id
productId: item.id,
categoryId: item.categoryId,
})
})
}
@ -64,24 +64,18 @@
//
function getList() {
api.shop.getProduct({
//
console.log('listPrototype', listPrototype)
props.requestFn({
data: {
pageSize: listPrototype.pageSize,
pageNum: listPrototype.pageNum,
//
searchValue: listPrototype.searchValue,
//
merId: listPrototype.merId,
//
brandId: listPrototype.brandId,
// code
categoryCode: listPrototype.categoryCode,
...listPrototype,
},
query: {
...listPrototype,
},
}).then(rs => {
if (rs.code == 200) {
if (listPrototype.pageNum == 1) listPrototype.data.length = []
listPrototype.data.push(...rs.rows)
if (listPrototype.pageNum == 1) list.length = []
list.push(...rs.rows)
listPrototype.total = rs.total
return
}
@ -111,8 +105,7 @@
</view>
<view class="list">
<view class="item oh bfff br20" v-for="(item, index) in listPrototype.data" :key="index"
@click="handleItem(item)">
<view class="item oh bfff br20" v-for="(item, index) in list" :key="index" @click="handleItem(item)">
<!-- 需要展示的图 -->
<image class="poster" :src="item.sliderImage.split(',')[0]" mode="aspectFill" />

View File

@ -96,7 +96,8 @@
"path": "pages/mine/mine",
"style": {
"navigationBarTitleText": "我的",
"navigationStyle": "custom"
"navigationStyle": "custom",
"enablePullDownRefresh": true
}
},
{

View File

@ -65,9 +65,7 @@
return result
})
//
const purse = computed(() => {
return store.state.purse || {}
})
const purse = computed(() => store.state.purse || {})
//
const configData = reactive({

View File

@ -1,59 +1,79 @@
<script setup>
/**
* 个人中心 商城
*/
//
import {
ref,
computed,
} from 'vue'
import {
onReachBottom,
onPullDownRefresh,
onShow,
onLoad,
onPageScroll
} from '@dcloudio/uni-app';
import {
useStore
} from 'vuex'
//
import statusBar from '@/components/header/statusBar'
//
import noLogin from '@/components/login/noLogin'
/**
* 个人中心 商城
*/
//
import {
ref,
computed,
getCurrentInstance
} from 'vue'
import {
onReachBottom,
onPullDownRefresh,
onShow,
onLoad,
onReady,
onPageScroll,
} from '@dcloudio/uni-app';
import {
useStore
} from 'vuex'
//
import statusBar from '@/components/header/statusBar'
//
import noLogin from '@/components/login/noLogin'
//
import productList from '@/components/shop/productList/productList';
//
import footerMneu from '@/components/footerMenu/footerMenu'
//
import util from '@/common/js/util';
//
const store = useStore()
//
const userinfo = computed(() => {
let result = store.state.userinfo || {}
return result
})
//
const showHeader = ref(false)
//
import productList from '@/components/shop/productList/productList';
//
import footerMneu from '@/components/footerMenu/footerMenu'
//
import util from '@/common/js/util';
//
import api from '@/api/index.js'
onPageScroll((ev) => {
if (ev.scrollTop > 44) showHeader.value = true
else showHeader.value = false
})
const {
proxy
} = getCurrentInstance()
//
const store = useStore()
//
const userinfo = computed(() => store.state.userinfo || {})
//
const showHeader = ref(false)
//
function link(url) {
uni.navigateTo({
url,
onReady(() => {
util.isLogin().then(rs => {
proxy.$refs.productListRef.getList()
})
})
}
function toCustomer() {
uni.navigateTo({
url: util.setUrl('/pages/mine/setting/feedback')
onReachBottom(() => {
proxy.$refs.productListRef.getMoreList()
})
}
onPullDownRefresh(() => {
proxy.$refs.productListRef.refreshList()
})
onPageScroll((ev) => {
if (ev.scrollTop > 44) showHeader.value = true
else showHeader.value = false
})
//
function link(url) {
uni.navigateTo({
url,
})
}
function toCustomer() {
uni.navigateTo({
url: util.setUrl('/pages/mine/setting/feedback')
})
}
</script>
<template>
@ -211,7 +231,8 @@ function toCustomer() {
<!-- 精选 -->
<view class="recommend mtb20 mlr20">
<productList choicenessTitle="true"></productList>
<productList ref="productListRef" :choicenessTitle="true" :requestFn="api.shop.getMineUserProList">
</productList>
</view>
</view>
@ -220,55 +241,55 @@ function toCustomer() {
</template>
<style lang="scss" scoped>
//
.apex {
position: fixed;
top: 0;
left: 0;
right: 0;
z-index: 10;
opacity: 0;
transition: .2s;
//
.apex {
position: fixed;
top: 0;
left: 0;
right: 0;
z-index: 10;
opacity: 0;
transition: .2s;
&.active {
opacity: 1;
background-color: #fff;
}
}
//
.header {
.avatar {
background: #D8D8D8;
}
}
//
.wallet {
position: relative;
.right {
text {
font-size: 24rpx;
color: #999999;
margin-right: 20rpx;
&.active {
opacity: 1;
background-color: #fff;
}
}
}
//
.container {
position: relative;
overflow: hidden;
margin: 20rpx 20rpx;
padding: 0 20rpx;
background-color: #fff;
border-radius: 20rpx;
.main {
display: grid;
grid-template-columns: repeat(5, 1fr);
//
.header {
.avatar {
background: #D8D8D8;
}
}
//
.wallet {
position: relative;
.right {
text {
font-size: 24rpx;
color: #999999;
margin-right: 20rpx;
}
}
}
//
.container {
position: relative;
overflow: hidden;
margin: 20rpx 20rpx;
padding: 0 20rpx;
background-color: #fff;
border-radius: 20rpx;
.main {
display: grid;
grid-template-columns: repeat(5, 1fr);
}
}
}
</style>

View File

@ -60,7 +60,8 @@
function getList() {
api.mine.getBankCards({}).then(rs => {
if (rs.code == 200) {
Object.assign(list, rs.data)
list.length = 0
list.push(...rs.data)
return
}
util.alert({

View File

@ -1,144 +1,140 @@
<script setup>
/**
* 个人信息
*/
import {
ref,
computed,
reactive,
} from 'vue'
import {
onLoad,
} from '@dcloudio/uni-app'
import {
useStore
} from 'vuex'
//
import util from '@/common/js/util';
//
import api from '@/api';
/**
* 个人信息
*/
import {
ref,
computed,
reactive,
} from 'vue'
import {
onLoad,
} from '@dcloudio/uni-app'
import {
useStore
} from 'vuex'
//
import util from '@/common/js/util';
//
import api from '@/api';
// vuex
const store = useStore()
// vuex
const store = useStore()
//
const user = reactive({})
//
const user = reactive({})
//
const gender = reactive([{
id: 0,
name: '男',
},
{
id: 1,
name: '女',
}
])
//
const genderIndex = ref(0)
onLoad(() => {
//
syncInfo()
})
//
function syncInfo() {
//
const userinfo = store.state.userinfo
user.background = userinfo.background
user.account = userinfo.account
user.userAccount = userinfo.userAccount
user.userNickname = userinfo.userNickname
user.homeTown = userinfo.homeTown
user.personalSignature = userinfo.personalSignature
user.id = userinfo.id + ''
user.birthday = userinfo.birthday
user.avatar = userinfo.avatar
user.email = userinfo.email
//
genderIndex.value = gender.findIndex(item => item.id == userinfo.sex)
}
/**
* 选择生日日期
* @param {Object} ev 默认事件
*/
function handleBirthday(ev) {
const value = ev.detail.value
if (user.birthday === value) return
user.birthday = value
}
/**
* 选择性别
* @param {Object} ev 默认事件
*/
function handleGender(ev) {
const value = ev.detail.value
if (genderIndex.value === value) return
genderIndex.value = value
}
/**
* 上传图片
* @param {String} key 需要修改个人信息的字段
*/
function uploadImg(key) {
util.upload_image({
value: user[key],
type: 1,
success: rs => {
//
user[key] = rs.value
console.log('user', user)
//
const gender = reactive([{
id: 0,
name: '男',
},
{
id: 1,
name: '女',
}
])
//
const genderIndex = ref(0)
onLoad(() => {
//
syncInfo()
})
}
//
function handleSubmit() {
//
if (gender[genderIndex.value]) user.sex = gender[genderIndex.value].id
if (!IsEmail(user.email)) {
util.alert('邮箱格式不正确!')
return
//
function syncInfo() {
//
const userinfo = store.state.userinfo
user.background = userinfo.background
user.account = userinfo.account
user.userAccount = userinfo.userAccount
user.userNickname = userinfo.userNickname
user.homeTown = userinfo.homeTown
user.personalSignature = userinfo.personalSignature
user.id = userinfo.id + ''
user.birthday = userinfo.birthday
user.avatar = userinfo.avatar
user.email = userinfo.email
//
genderIndex.value = gender.findIndex(item => item.id == userinfo.sex)
}
const data = {
...user,
/**
* 选择生日日期
* @param {Object} ev 默认事件
*/
function handleBirthday(ev) {
const value = ev.detail.value
if (user.birthday === value) return
user.birthday = value
}
//
// if(data.avatar) data.avatar = util.replace_url(data.avatar)
// if(data.background) data.background = util.replace_url(data.background)
/**
* 选择性别
* @param {Object} ev 默认事件
*/
function handleGender(ev) {
const value = ev.detail.value
if (genderIndex.value === value) return
genderIndex.value = value
}
//
api.mine.updateUserInfo({
data,
}).then(rs => {
if (rs.code === 200) {
store.commit('setState', {
key: 'userinfo',
value: Object.assign(store.state.userinfo, user)
})
/**
* 上传图片
* @param {String} key 需要修改个人信息的字段
*/
function uploadImg(key) {
util.upload_image({
value: user[key],
type: 1,
success: rs => {
//
user[key] = rs.value
console.log('user', user)
}
})
}
util.alert('修改成功')
//
function handleSubmit() {
//
if (gender[genderIndex.value]) user.sex = gender[genderIndex.value].id
if (user.email && !IsEmail(user.email)) {
util.alert('邮箱格式不正确!')
return
}
util.alert({
content: rs.msg,
showCancel: false,
})
})
}
//
function IsEmail(str) {
var reg = /^([a-zA-Z]|[0-9])(\w|\-)+@[a-zA-Z0-9]+\.([a-zA-Z]{2,4})$/;
return reg.test(str);
}
const data = {
...user,
}
//
api.mine.updateUserInfo({
data,
}).then(rs => {
if (rs.code === 200) {
store.commit('setState', {
key: 'userinfo',
value: Object.assign(store.state.userinfo, user)
})
util.alert('修改成功')
return
}
util.alert({
content: rs.msg,
showCancel: false,
})
})
}
//
function IsEmail(str) {
var reg = /^([a-zA-Z]|[0-9])(\w|\-)+@[a-zA-Z0-9]+\.([a-zA-Z]{2,4})$/;
return reg.test(str);
}
</script>
<template>
@ -233,26 +229,26 @@ function IsEmail(str) {
</template>
<style lang="scss" scoped>
//
.bgBox {
.content {
height: 400rpx;
//
.bgBox {
.content {
height: 400rpx;
}
//
.changeBg {
background-color: rgba(0, 0, 0, .3);
}
}
//
.changeBg {
background-color: rgba(0, 0, 0, .3);
//
.avatarBox {
padding: 2rpx;
background-color: #fff;
}
}
//
.avatarBox {
padding: 2rpx;
background-color: #fff;
}
//
.info {
margin-top: -20rpx;
}
//
.info {
margin-top: -20rpx;
}
</style>

View File

@ -39,13 +39,16 @@
const id = ref('')
//
const detail = reactive({})
// id
const categoryId = ref('')
//
const userinfo = computed(() => {
return store.state.userinfo
})
const userinfo = computed(() => store.state.userinfo)
onLoad(option => {
// id
if (option.productId) id.value = option.productId
// id
if (option.categoryId) categoryId.value = option.categoryId
//
getDetail()
//
@ -55,7 +58,13 @@
})
onReady(() => {
//
// id
if (categoryId.value) {
proxy.$refs.productListRef.listPrototype.categoryId = categoryId.value
proxy.$refs.productListRef.listPrototype.productId = id.value
//
proxy.$refs.productListRef.getList()
}
})
//
@ -72,7 +81,6 @@
function addListener() {
//
uni.$on('commodityDetail', (data) => {
//
if (detail.id == data.id) getDetail()
})
}
@ -186,9 +194,13 @@
<proDetail :id="id" :detail="detail" />
<!-- 精选 -->
<view class="recommend mlr20">
<productList :choicenessTitle="true" />
<productList ref="productListRef" :choicenessTitle="true"
:requestFn="api.shop.getInfoProductRecommendations" />
</view>
<!-- 填充 -->
<view class="fill" style="height: 180rpx;"></view>
<!-- 底部菜单 -->
<view class="footer plr20 shadow bfff">
<footerMenu :detail="detail" @update="handleDetail" @buy="showMakeOrder" />

View File

@ -89,7 +89,7 @@
if (cateIndex.value === index) return
cateIndex.value = index
//
proxy.$refs.product.listPrototype.categoryCode = cateList[index].categoryCode
proxy.$refs.product.listPrototype.categoryId = cateList[index].id
//
proxy.$refs.product.refreshList()
}

View File

@ -1,198 +1,198 @@
<script setup>
//
import {
computed,
reactive,
ref,
defineExpose,
} from 'vue'
import {
onLoad,
onPageScroll
} from '@dcloudio/uni-app';
//
import {
computed,
reactive,
ref,
defineExpose,
} from 'vue'
import {
onLoad,
onPageScroll
} from '@dcloudio/uni-app';
//
import util from '@/common/js/util.js'
//
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'
import api from '@/api/index.js'
import api from '@/api/index.js'
//
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
});
//
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: [],
})
}
//
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
getDetail()
return
}
util.alert({
content: rs.msg,
showCancel: false,
//
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 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
}
//
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
// 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,
getDetail()
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 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,
})
}
//
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>
@ -283,19 +283,19 @@ defineExpose({
</template>
<style lang="scss" scoped>
//
.list {
display: grid;
grid-template-columns: repeat(2, 1fr);
grid-gap: 20rpx;
//
.list {
display: grid;
grid-template-columns: repeat(2, 1fr);
grid-gap: 20rpx;
//
.item {
.poster {
width: 100%;
height: 340rpx;
border-radius: 20rpx 20rpx 0 0;
//
.item {
.poster {
width: 100%;
height: 340rpx;
border-radius: 20rpx 20rpx 0 0;
}
}
}
}
</style>