Merge branch 'fk' into dev

This commit is contained in:
luofei 2024-05-13 17:51:45 +08:00
commit 11f1a0df0b
12 changed files with 2045 additions and 1597 deletions

View File

@ -3,8 +3,7 @@
<view v-if="newData.status && newData.status.status" style="height: 100rpx;"></view> <view v-if="newData.status && newData.status.status" style="height: 100rpx;"></view>
<view class="foot" v-if="newData.status && newData.status.status"> <view class="foot" v-if="newData.status && newData.status.status">
<view class="page-footer" id="target" :style="{'background-color':newData.bgColor.color[0].item}"> <view class="page-footer" id="target" :style="{'background-color':newData.bgColor.color[0].item}">
<view class="foot-item" v-for="(item,index) in newData.menuList" :key="index" <view class="foot-item" v-for="(item,index) in newData.menuList" :key="index" @click="goRouter(item)">
@click="goRouter(item)">
<block v-if="item.link == activeRouter"> <block v-if="item.link == activeRouter">
<image :src="item.imgList[0]"></image> <image :src="item.imgList[0]"></image>
<view class="txt" :style="{color:newData.activeTxtColor.color[0].item}">{{item.name}} <view class="txt" :style="{color:newData.activeTxtColor.color[0].item}">{{item.name}}
@ -30,7 +29,7 @@
// +---------------------------------------------------------------------- // +----------------------------------------------------------------------
// | Author: CRMEB Team <admin@crmeb.com> // | Author: CRMEB Team <admin@crmeb.com>
// +---------------------------------------------------------------------- // +----------------------------------------------------------------------
export default{ export default {
props: { props: {
newData: { newData: {
type: Object, type: Object,
@ -41,7 +40,7 @@
default: '', default: '',
} }
}, },
data(){ data() {
return { return {
} }
@ -49,7 +48,7 @@
mounted() { mounted() {
}, },
methods:{ methods: {
goRouter(item) { goRouter(item) {
var pages = getCurrentPages(); var pages = getCurrentPages();
var page = (pages[pages.length - 1]).$page.fullPath; var page = (pages[pages.length - 1]).$page.fullPath;
@ -65,7 +64,6 @@
}, },
} }
} }
</script> </script>
<style lang="scss" scoped> <style lang="scss" scoped>
@ -85,9 +83,11 @@
box-shadow: 0px 0px 17rpx 1rpx rgba(206, 206, 206, 0.32); box-shadow: 0px 0px 17rpx 1rpx rgba(206, 206, 206, 0.32);
padding-bottom: constant(safe-area-inset-bottom); /// IOS<11.2/ padding-bottom: constant(safe-area-inset-bottom); /// IOS<11.2/
padding-bottom: env(safe-area-inset-bottom); /// IOS>11.2/ padding-bottom: env(safe-area-inset-bottom); /// IOS>11.2/
&.filter{
&.filter {
filter: blur(2rpx); filter: blur(2rpx);
} }
.foot-item { .foot-item {
display: flex; display: flex;
width: max-content; width: max-content;
@ -95,6 +95,7 @@
justify-content: center; justify-content: center;
flex-direction: column; flex-direction: column;
position: relative; position: relative;
.count-num { .count-num {
position: absolute; position: absolute;
display: flex; display: flex;
@ -111,12 +112,14 @@
padding: 4rpx; padding: 4rpx;
} }
} }
.foot-item image { .foot-item image {
height: 50rpx; height: 50rpx;
width: 50rpx; width: 50rpx;
text-align: center; text-align: center;
margin: 0 auto; margin: 0 auto;
} }
.foot-item .txt { .foot-item .txt {
font-size: 24rpx; font-size: 24rpx;
} }

View File

@ -4,53 +4,60 @@
:class="{'no-transition':!openTransition,'show-transition':showTransition&&openTransition}" :class="{'no-transition':!openTransition,'show-transition':showTransition&&openTransition}"
@load="handleImgLoad" @error="handleImgError"> @load="handleImgLoad" @error="handleImgError">
</image> </image>
<view class="loadfail-img" v-else-if="isLoadError" :style="{ 'background-image': `url(${domain}/static/images/loadfail.png)`}"></view> <view class="loadfail-img" v-else-if="isLoadError"
<view :class="['loading-img','spin-circle',loadingMode]" v-show="!showImg&&!isLoadError" :style="{ 'background-image': `url(${domain}/static/images/loading.gif)`}"></view> :style="{ 'background-image': `url(${domain}/static/easy-loadimage/loadfail.png)`}"></view>
<view :class="['loading-img','spin-circle',loadingMode]" v-show="!showImg&&!isLoadError"
:style="{ 'background-image': `url(${domain}/static/easy-loadimage/loading.gif)`}"></view>
</view> </view>
</template> </template>
<script> <script>
// +---------------------------------------------------------------------- // +----------------------------------------------------------------------
// | CRMEB [ CRMEB ] // | CRMEB [ CRMEB ]
// +---------------------------------------------------------------------- // +----------------------------------------------------------------------
// | Copyright (c) 2016~2023 https://www.crmeb.com All rights reserved. // | Copyright (c) 2016~2023 https://www.crmeb.com All rights reserved.
// +---------------------------------------------------------------------- // +----------------------------------------------------------------------
// | Licensed CRMEBCRMEB // | Licensed CRMEBCRMEB
// +---------------------------------------------------------------------- // +----------------------------------------------------------------------
// | Author: CRMEB Team <admin@crmeb.com> // | Author: CRMEB Team <admin@crmeb.com>
// +---------------------------------------------------------------------- // +----------------------------------------------------------------------
import { throttle } from '@/libs/uniApi'; import {
import { HTTP_REQUEST_URL } from '@/config/app'; throttle
// id } from '@/libs/uniApi';
function generateUUID() { import {
    return 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx'.replace(/[xy]/g, function(c) { HTTP_REQUEST_URL
        let r = Math.random()*16|0, v = c == 'x' ? r : (r&0x3|0x8); } from '@/config/app';
        return v.toString(16); // id
    }) function generateUUID() {
} return 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx'.replace(/[xy]/g, function(c) {
export default{ let r = Math.random() * 16 | 0,
props:{ v = c == 'x' ? r : (r & 0x3 | 0x8);
imageSrc:{ return v.toString(16);
})
}
export default {
props: {
imageSrc: {
type: String, type: String,
}, },
mode:{ mode: {
type: String, type: String,
}, },
loadingMode:{ loadingMode: {
type: String, type: String,
default:'looming-gray' default: 'looming-gray'
}, },
openTransition:{ openTransition: {
type: Boolean, type: Boolean,
default:true, default: true,
}, },
viewHeight:{ viewHeight: {
type:Number, type: Number,
default() { default () {
return uni.getSystemInfoSync().windowHeight; return uni.getSystemInfoSync().windowHeight;
} }
} }
}, },
data(){ data() {
const that = this; const that = this;
return { return {
domain: HTTP_REQUEST_URL, domain: HTTP_REQUEST_URL,
@ -76,14 +83,14 @@ export default{
}, 200) }, 200)
} }
}, },
methods:{ methods: {
init() { init() {
this.$nextTick(this.onScroll) this.$nextTick(this.onScroll)
}, },
handleBorderLoad(){ handleBorderLoad() {
this.borderLoaded = 1; this.borderLoaded = 1;
}, },
handleBorderError(){ handleBorderError() {
this.borderLoaded = 2; this.borderLoaded = 2;
}, },
handleImgLoad(e) { handleImgLoad(e) {
@ -107,79 +114,98 @@ export default{
beforeDestroy() { beforeDestroy() {
uni.$off('scroll', this.scrollFn); uni.$off('scroll', this.scrollFn);
} }
} }
</script> </script>
<style scoped> <style scoped>
/* 官方优化图片tips */ /* 官方优化图片tips */
image{ image {
will-change: transform will-change: transform
} }
/* 渐变过渡效果处理 */ /* 渐变过渡效果处理 */
image.origin-img{ image.origin-img {
width: 100%; width: 100%;
height: 100%; height: 100%;
opacity: 0.3; opacity: 0.3;
max-height: 360rpx; max-height: 360rpx;
} }
image.origin-img.show-transition{
image.origin-img.show-transition {
transition: opacity .5s; transition: opacity .5s;
opacity: 1; opacity: 1;
} }
image.origin-img.no-transition{
image.origin-img.no-transition {
opacity: 1; opacity: 1;
} }
/* 加载失败、加载中的占位图样式控制 */ /* 加载失败、加载中的占位图样式控制 */
.loadfail-img{ .loadfail-img {
height: 100%; height: 100%;
background-repeat: no-repeat; background-repeat: no-repeat;
background-size: 50%; background-size: 50%;
background-position: center; background-position: center;
} }
.loading-img{
.loading-img {
height: 100%; height: 100%;
background-position: center; background-position: center;
} }
/* 转圈 */ /* 转圈 */
.spin-circle{ .spin-circle {
background-repeat: no-repeat; background-repeat: no-repeat;
background-size: 60%; background-size: 60%;
} }
/* 动态灰色若隐若现 */ /* 动态灰色若隐若现 */
.looming-gray{ .looming-gray {
animation: looming-gray 1s infinite linear; animation: looming-gray 1s infinite linear;
background-color: #e3e3e3; background-color: #e3e3e3;
} }
@keyframes looming-gray{
0% {background-color:#e3e3e3aa;} @keyframes looming-gray {
50% {background-color:#e3e3e3;} 0% {
100% {background-color:#e3e3e3aa;} background-color: #e3e3e3aa;
} }
50% {
background-color: #e3e3e3;
}
100% {
background-color: #e3e3e3aa;
}
}
/* 骨架屏1 */ /* 骨架屏1 */
.skeleton-1{ .skeleton-1 {
background-color: #e3e3e3; background-color: #e3e3e3;
background-image: linear-gradient(100deg, rgba(255, 255, 255, 0), rgba(255, 255, 255, 0.2) 50%, rgba(255, 255, 255, 0) 80%); background-image: linear-gradient(100deg, rgba(255, 255, 255, 0), rgba(255, 255, 255, 0.2) 50%, rgba(255, 255, 255, 0) 80%);
background-size: 100rpx 100%; background-size: 100rpx 100%;
background-repeat: repeat-y; background-repeat: repeat-y;
background-position:0 0; background-position: 0 0;
animation: skeleton-1 .6s infinite; animation: skeleton-1 .6s infinite;
} }
@keyframes skeleton-1 { @keyframes skeleton-1 {
to { to {
background-position: 200% 0; background-position: 200% 0;
} }
} }
/* 骨架屏2 */ /* 骨架屏2 */
.skeleton-2{ .skeleton-2 {
background-image: linear-gradient(-90deg, #fefefe 0%, #e6e6e6 50%,#fefefe 100%); background-image: linear-gradient(-90deg, #fefefe 0%, #e6e6e6 50%, #fefefe 100%);
background-size: 400% 400%; background-size: 400% 400%;
background-position:0 0; background-position: 0 0;
animation: skeleton-2 1.2s ease-in-out infinite; animation: skeleton-2 1.2s ease-in-out infinite;
} }
@keyframes skeleton-2{
@keyframes skeleton-2 {
to { to {
background-position: -135% 0; background-position: -135% 0;
} }
} }
</style> </style>

View File

@ -1,52 +1,52 @@
{ {
"name": "惠农生活", "name" : "惠农生活",
"appid": "__UNI__3A527D1", "appid" : "__UNI__3A527D1",
"description": "", "description" : "",
"versionName": "2.0.52", "versionName" : "2.0.52",
"versionCode": 2052, "versionCode" : 2052,
"transformPx": false, "transformPx" : false,
/* 5+App */ /* 5+App */
"app-plus": { "app-plus" : {
"titleNView": true, "titleNView" : true,
"usingComponents": true, "usingComponents" : true,
"nvueCompiler": "uni-app", "nvueCompiler" : "uni-app",
"nvueStyleCompiler": "uni-app", "nvueStyleCompiler" : "uni-app",
"compilerVersion": 3, "compilerVersion" : 3,
"compatible": { "compatible" : {
"ignoreVersion": true //trueHBuilderX1.9.0 "ignoreVersion" : true //trueHBuilderX1.9.0
}, },
"splashscreen": { "splashscreen" : {
"alwaysShowBeforeRender": false, "alwaysShowBeforeRender" : false,
"waiting": false, "waiting" : false,
"autoclose": true, "autoclose" : true,
"delay": 0 "delay" : 0
}, },
/* */ /* */
"modules": { "modules" : {
"VideoPlayer": {}, "VideoPlayer" : {},
"OAuth": {}, "OAuth" : {},
"Payment": {}, "Payment" : {},
"Share": {}, "Share" : {},
"iBeacon": {}, "iBeacon" : {},
"Maps": {}, "Maps" : {},
"Geolocation": {}, "Geolocation" : {},
"UniMP": { "UniMP" : {
"description": "uni小程序" "description" : "uni小程序"
}, },
"Push": {}, "Push" : {},
"Barcode": {}, "Barcode" : {},
"Camera": {} "Camera" : {}
}, },
"safearea": { "safearea" : {
"bottom": { "bottom" : {
"offset": "none" "offset" : "none"
} }
}, },
/* */ /* */
"distribute": { "distribute" : {
/* android */ /* android */
"android": { "android" : {
"permissions": [ "permissions" : [
"<uses-permission android:name=\"android.permission.ACCESS_COARSE_LOCATION\"/>", "<uses-permission android:name=\"android.permission.ACCESS_COARSE_LOCATION\"/>",
"<uses-permission android:name=\"android.permission.ACCESS_FINE_LOCATION\"/>", "<uses-permission android:name=\"android.permission.ACCESS_FINE_LOCATION\"/>",
"<uses-permission android:name=\"android.permission.ACCESS_LOCATION_EXTRA_COMMANDS\"/>", "<uses-permission android:name=\"android.permission.ACCESS_LOCATION_EXTRA_COMMANDS\"/>",
@ -68,228 +68,228 @@
"<uses-permission android:name=\"android.permission.WRITE_SETTINGS\"/>", "<uses-permission android:name=\"android.permission.WRITE_SETTINGS\"/>",
"<uses-permission android:name=\"android.permission.BLUETOOTH_ADMIN\"/>" "<uses-permission android:name=\"android.permission.BLUETOOTH_ADMIN\"/>"
], ],
"abiFilters": ["armeabi-v7a", "arm64-v8a", "x86"], "abiFilters" : [ "armeabi-v7a", "arm64-v8a", "x86" ],
"permissionExternalStorage": { "permissionExternalStorage" : {
"request": "none", "request" : "none",
"prompt": "应用保存运行状态等信息,需要获取读写手机存储(系统提示为访问设备上的照片、媒体内容和文件)权限,请允许。" "prompt" : "应用保存运行状态等信息,需要获取读写手机存储(系统提示为访问设备上的照片、媒体内容和文件)权限,请允许。"
}, },
"permissionPhoneState": { "permissionPhoneState" : {
"request": "none" // "request" : "none" //
}, },
"minSdkVersion": 23, "minSdkVersion" : 23,
"targetSdkVersion": 30 "targetSdkVersion" : 30
}, },
/* ios */ /* ios */
"ios": { "ios" : {
"privacyDescription": { "privacyDescription" : {
"NSPhotoLibraryUsageDescription": "上传用户头像保存分享海报", "NSPhotoLibraryUsageDescription" : "上传用户头像保存分享海报",
"NSPhotoLibraryAddUsageDescription": "上传用户头像保存分享海报", "NSPhotoLibraryAddUsageDescription" : "上传用户头像保存分享海报",
"NSCameraUsageDescription": "上传用户头像保存分享海报", "NSCameraUsageDescription" : "上传用户头像保存分享海报",
"NSLocationWhenInUseUsageDescription": "根据客户地理位置推荐最近门店", "NSLocationWhenInUseUsageDescription" : "根据客户地理位置推荐最近门店",
"NSLocationAlwaysUsageDescription": "根据客户地理位置推荐最近门店" "NSLocationAlwaysUsageDescription" : "根据客户地理位置推荐最近门店"
}, },
"idfa": false, "idfa" : false,
"dSYMs": false "dSYMs" : false
}, },
/* SDK */ /* SDK */
"sdkConfigs": { "sdkConfigs" : {
"maps": { "maps" : {
"amap": { "amap" : {
"appkey_ios": "0a3202688624938fd5d2f37b52c30d5d", "appkey_ios" : "0a3202688624938fd5d2f37b52c30d5d",
"appkey_android": "0354f5ddc11e2ea76c5aac647f44d945", "appkey_android" : "0354f5ddc11e2ea76c5aac647f44d945",
"name": "amapIvoVHpJR" "name" : "amapIvoVHpJR"
} }
}, },
"payment": { "payment" : {
"weixin": { "weixin" : {
"__platform__": ["ios", "android"], "__platform__" : [ "ios", "android" ],
"appid": "wx2e8f79ff281284f5", "appid" : "wx2e8f79ff281284f5",
"UniversalLinks": "https://shop.lihaink.cn/" "UniversalLinks" : "https://shop.lihaink.cn/"
} }
}, },
"share": { "share" : {
"weixin": { "weixin" : {
"appid": "wx2e8f79ff281284f5", "appid" : "wx2e8f79ff281284f5",
"UniversalLinks": "https://shop.lihaink.cn/" "UniversalLinks" : "https://shop.lihaink.cn/"
} }
}, },
"geolocation": { "geolocation" : {
"amap": { "amap" : {
"name": "amapIvoVHpJR", "name" : "amapIvoVHpJR",
"__platform__": ["ios", "android"], "__platform__" : [ "ios", "android" ],
"appkey_ios": "0a3202688624938fd5d2f37b52c30d5d", "appkey_ios" : "0a3202688624938fd5d2f37b52c30d5d",
"appkey_android": "0354f5ddc11e2ea76c5aac647f44d945" "appkey_android" : "0354f5ddc11e2ea76c5aac647f44d945"
} }
}, },
"push": {}, "push" : {},
"oauth": { "oauth" : {
"weixin": { "weixin" : {
"appid": "wx2e8f79ff281284f5", "appid" : "wx2e8f79ff281284f5",
"UniversalLinks": "https://shop.lihaink.cn/" "UniversalLinks" : "https://shop.lihaink.cn/"
} }
}, },
"ad": {} "ad" : {}
}, },
"icons": { "icons" : {
"android": { "android" : {
"hdpi": "unpackage/res/icons/72x72.png", "hdpi" : "unpackage/res/icons/72x72.png",
"xhdpi": "unpackage/res/icons/96x96.png", "xhdpi" : "unpackage/res/icons/96x96.png",
"xxhdpi": "unpackage/res/icons/144x144.png", "xxhdpi" : "unpackage/res/icons/144x144.png",
"xxxhdpi": "unpackage/res/icons/192x192.png" "xxxhdpi" : "unpackage/res/icons/192x192.png"
}, },
"ios": { "ios" : {
"appstore": "unpackage/res/icons/1024x1024.png", "appstore" : "unpackage/res/icons/1024x1024.png",
"ipad": { "ipad" : {
"app": "unpackage/res/icons/76x76.png", "app" : "unpackage/res/icons/76x76.png",
"app@2x": "unpackage/res/icons/152x152.png", "app@2x" : "unpackage/res/icons/152x152.png",
"notification": "unpackage/res/icons/20x20.png", "notification" : "unpackage/res/icons/20x20.png",
"notification@2x": "unpackage/res/icons/40x40.png", "notification@2x" : "unpackage/res/icons/40x40.png",
"proapp@2x": "unpackage/res/icons/167x167.png", "proapp@2x" : "unpackage/res/icons/167x167.png",
"settings": "unpackage/res/icons/29x29.png", "settings" : "unpackage/res/icons/29x29.png",
"settings@2x": "unpackage/res/icons/58x58.png", "settings@2x" : "unpackage/res/icons/58x58.png",
"spotlight": "unpackage/res/icons/40x40.png", "spotlight" : "unpackage/res/icons/40x40.png",
"spotlight@2x": "unpackage/res/icons/80x80.png" "spotlight@2x" : "unpackage/res/icons/80x80.png"
}, },
"iphone": { "iphone" : {
"app@2x": "unpackage/res/icons/120x120.png", "app@2x" : "unpackage/res/icons/120x120.png",
"app@3x": "unpackage/res/icons/180x180.png", "app@3x" : "unpackage/res/icons/180x180.png",
"notification@2x": "unpackage/res/icons/40x40.png", "notification@2x" : "unpackage/res/icons/40x40.png",
"notification@3x": "unpackage/res/icons/60x60.png", "notification@3x" : "unpackage/res/icons/60x60.png",
"settings@2x": "unpackage/res/icons/58x58.png", "settings@2x" : "unpackage/res/icons/58x58.png",
"settings@3x": "unpackage/res/icons/87x87.png", "settings@3x" : "unpackage/res/icons/87x87.png",
"spotlight@2x": "unpackage/res/icons/80x80.png", "spotlight@2x" : "unpackage/res/icons/80x80.png",
"spotlight@3x": "unpackage/res/icons/120x120.png" "spotlight@3x" : "unpackage/res/icons/120x120.png"
} }
} }
}, },
"splashscreen": { "splashscreen" : {
"useOriginalMsgbox": true, "useOriginalMsgbox" : true,
"androidStyle": "common" "androidStyle" : "common"
} }
}, },
"nativePlugins": { "nativePlugins" : {
"JG-JCore": { "JG-JCore" : {
"JPUSH_APPKEY_IOS": "8a5efd65cda14fafa6e64ad3", "JPUSH_APPKEY_IOS" : "8a5efd65cda14fafa6e64ad3",
"JPUSH_CHANNEL_IOS": "8a5efd65cda14fafa6e64ad3", "JPUSH_CHANNEL_IOS" : "8a5efd65cda14fafa6e64ad3",
"JPUSH_APPKEY_ANDROID": "b5f679f4357018605ea6fd2e", "JPUSH_APPKEY_ANDROID" : "b5f679f4357018605ea6fd2e",
"JPUSH_CHANNEL_ANDROID": "", "JPUSH_CHANNEL_ANDROID" : "",
"__plugin_info__": { "__plugin_info__" : {
"name": "JG-JCore", "name" : "JG-JCore",
"description": "极光推送JCore插件", "description" : "极光推送JCore插件",
"platforms": "Android,iOS", "platforms" : "Android,iOS",
"url": "", "url" : "",
"android_package_name": "uni.UNI3A527D1", "android_package_name" : "uni.UNI3A527D1",
"ios_bundle_id": "", "ios_bundle_id" : "",
"isCloud": false, "isCloud" : false,
"bought": -1, "bought" : -1,
"pid": "", "pid" : "",
"parameters": { "parameters" : {
"JPUSH_APPKEY_IOS": { "JPUSH_APPKEY_IOS" : {
"des": "[iOS]极光portal配置应用信息时分配的AppKey", "des" : "[iOS]极光portal配置应用信息时分配的AppKey",
"key": "JCore:APP_KEY", "key" : "JCore:APP_KEY",
"value": "daebe19b547c43128796a078" "value" : "daebe19b547c43128796a078"
}, },
"JPUSH_CHANNEL_IOS": { "JPUSH_CHANNEL_IOS" : {
"des": "[iOS]用于统计分发渠道不需要可填默认值developer-default", "des" : "[iOS]用于统计分发渠道不需要可填默认值developer-default",
"key": "JCore:CHANNEL", "key" : "JCore:CHANNEL",
"value": "" "value" : ""
}, },
"JPUSH_APPKEY_ANDROID": { "JPUSH_APPKEY_ANDROID" : {
"des": "[Android]极光portal配置应用信息时分配的AppKey", "des" : "[Android]极光portal配置应用信息时分配的AppKey",
"key": "JPUSH_APPKEY", "key" : "JPUSH_APPKEY",
"value": "" "value" : ""
}, },
"JPUSH_CHANNEL_ANDROID": { "JPUSH_CHANNEL_ANDROID" : {
"des": "[Android]用于统计分发渠道不需要可填默认值developer-default", "des" : "[Android]用于统计分发渠道不需要可填默认值developer-default",
"key": "JPUSH_CHANNEL", "key" : "JPUSH_CHANNEL",
"value": "" "value" : ""
} }
} }
} }
}, },
"JG-JPush": { "JG-JPush" : {
"JPUSH_ISPRODUCTION_IOS": "true", "JPUSH_ISPRODUCTION_IOS" : "true",
"JPUSH_ADVERTISINGID_IOS": "", "JPUSH_ADVERTISINGID_IOS" : "",
"JPUSH_DEFAULTINITJPUSH_IOS": "true", "JPUSH_DEFAULTINITJPUSH_IOS" : "true",
"JPUSH_OPPO_APPKEY": "", "JPUSH_OPPO_APPKEY" : "",
"JPUSH_OPPO_APPID": "", "JPUSH_OPPO_APPID" : "",
"JPUSH_OPPO_APPSECRET": "", "JPUSH_OPPO_APPSECRET" : "",
"JPUSH_VIVO_APPKEY": "", "JPUSH_VIVO_APPKEY" : "",
"JPUSH_VIVO_APPID": "", "JPUSH_VIVO_APPID" : "",
"JPUSH_MEIZU_APPKEY": "", "JPUSH_MEIZU_APPKEY" : "",
"JPUSH_MEIZU_APPID": "", "JPUSH_MEIZU_APPID" : "",
"JPUSH_XIAOMI_APPKEY": "", "JPUSH_XIAOMI_APPKEY" : "",
"JPUSH_XIAOMI_APPID": "", "JPUSH_XIAOMI_APPID" : "",
"__plugin_info__": { "__plugin_info__" : {
"name": "JG-JPush", "name" : "JG-JPush",
"description": "极光推送Hbuilder插件", "description" : "极光推送Hbuilder插件",
"platforms": "Android,iOS", "platforms" : "Android,iOS",
"url": "", "url" : "",
"android_package_name": "uni.UNI3A527D1", "android_package_name" : "uni.UNI3A527D1",
"ios_bundle_id": "", "ios_bundle_id" : "",
"isCloud": false, "isCloud" : false,
"bought": -1, "bought" : -1,
"pid": "", "pid" : "",
"parameters": { "parameters" : {
"JPUSH_ISPRODUCTION_IOS": { "JPUSH_ISPRODUCTION_IOS" : {
"des": "[iOS]是否是生产环境是填true不是填false或者不填", "des" : "[iOS]是否是生产环境是填true不是填false或者不填",
"key": "JPush:ISPRODUCTION", "key" : "JPush:ISPRODUCTION",
"value": "" "value" : ""
}, },
"JPUSH_ADVERTISINGID_IOS": { "JPUSH_ADVERTISINGID_IOS" : {
"des": "[iOS]广告标识符IDFA如果不需要使用IDFA可不填", "des" : "[iOS]广告标识符IDFA如果不需要使用IDFA可不填",
"key": "JPush:ADVERTISINGID", "key" : "JPush:ADVERTISINGID",
"value": "" "value" : ""
}, },
"JPUSH_DEFAULTINITJPUSH_IOS": { "JPUSH_DEFAULTINITJPUSH_IOS" : {
"des": "[iOS]是否默认初始化是填true不是填false或者不填", "des" : "[iOS]是否默认初始化是填true不是填false或者不填",
"key": "JPush:DEFAULTINITJPUSH", "key" : "JPush:DEFAULTINITJPUSH",
"value": "" "value" : ""
}, },
"JPUSH_OPPO_APPKEY": { "JPUSH_OPPO_APPKEY" : {
"des": "厂商OPPO-appkey,示例OP-12345678", "des" : "厂商OPPO-appkey,示例OP-12345678",
"key": "OPPO_APPKEY", "key" : "OPPO_APPKEY",
"value": "" "value" : ""
}, },
"JPUSH_OPPO_APPID": { "JPUSH_OPPO_APPID" : {
"des": "厂商OPPO-appId,示例OP-12345678", "des" : "厂商OPPO-appId,示例OP-12345678",
"key": "OPPO_APPID", "key" : "OPPO_APPID",
"value": "" "value" : ""
}, },
"JPUSH_OPPO_APPSECRET": { "JPUSH_OPPO_APPSECRET" : {
"des": "厂商OPPO-appSecret,示例OP-12345678", "des" : "厂商OPPO-appSecret,示例OP-12345678",
"key": "OPPO_APPSECRET", "key" : "OPPO_APPSECRET",
"value": "" "value" : ""
}, },
"JPUSH_VIVO_APPKEY": { "JPUSH_VIVO_APPKEY" : {
"des": "厂商VIVO-appkey,示例12345678", "des" : "厂商VIVO-appkey,示例12345678",
"key": "com.vivo.push.api_key", "key" : "com.vivo.push.api_key",
"value": "" "value" : ""
}, },
"JPUSH_VIVO_APPID": { "JPUSH_VIVO_APPID" : {
"des": "厂商VIVO-appId,示例12345678", "des" : "厂商VIVO-appId,示例12345678",
"key": "com.vivo.push.app_id", "key" : "com.vivo.push.app_id",
"value": "" "value" : ""
}, },
"JPUSH_MEIZU_APPKEY": { "JPUSH_MEIZU_APPKEY" : {
"des": "厂商MEIZU-appKey,示例MZ-12345678", "des" : "厂商MEIZU-appKey,示例MZ-12345678",
"key": "MEIZU_APPKEY", "key" : "MEIZU_APPKEY",
"value": "" "value" : ""
}, },
"JPUSH_MEIZU_APPID": { "JPUSH_MEIZU_APPID" : {
"des": "厂商MEIZU-appId,示例MZ-12345678", "des" : "厂商MEIZU-appId,示例MZ-12345678",
"key": "MEIZU_APPID", "key" : "MEIZU_APPID",
"value": "" "value" : ""
}, },
"JPUSH_XIAOMI_APPKEY": { "JPUSH_XIAOMI_APPKEY" : {
"des": "厂商XIAOMI-appKey,示例MI-12345678", "des" : "厂商XIAOMI-appKey,示例MI-12345678",
"key": "XIAOMI_APPKEY", "key" : "XIAOMI_APPKEY",
"value": "" "value" : ""
}, },
"JPUSH_XIAOMI_APPID": { "JPUSH_XIAOMI_APPID" : {
"des": "厂商XIAOMI-appId,示例MI-12345678", "des" : "厂商XIAOMI-appId,示例MI-12345678",
"key": "XIAOMI_APPID", "key" : "XIAOMI_APPID",
"value": "" "value" : ""
} }
} }
} }
@ -297,55 +297,55 @@
} }
}, },
/* */ /* */
"quickapp": {}, "quickapp" : {},
/* */ /* */
"mp-weixin": { "mp-weixin" : {
"appid": "wx5fb1cc8edb3f8baa", "appid" : "wx5fb1cc8edb3f8baa",
"setting": { "setting" : {
"urlCheck": false, "urlCheck" : false,
"minified": true, "minified" : true,
"postcss": true, "postcss" : true,
"es6": true "es6" : true
}, },
"permission": { "permission" : {
"scope.userLocation": { "scope.userLocation" : {
"desc": "获取您的位置" "desc" : "获取您的位置"
} }
}, },
"requiredPrivateInfos": ["getLocation", "chooseAddress"], "requiredPrivateInfos" : [ "getLocation", "chooseAddress" ],
"usingComponents": true, "usingComponents" : true,
"__usePrivacyCheck__": true "__usePrivacyCheck__" : true
}, },
"mp-alipay": { "mp-alipay" : {
"usingComponents": true "usingComponents" : true
}, },
"mp-baidu": { "mp-baidu" : {
"usingComponents": true "usingComponents" : true
}, },
"mp-toutiao": { "mp-toutiao" : {
"usingComponents": true "usingComponents" : true
}, },
"h5": { "h5" : {
"devServer": { "devServer" : {
"https": false "https" : false
}, },
"router": { "router" : {
"mode": "history", "mode" : "history",
"base": "" "base" : ""
}, },
"domain": "", "domain" : "",
"sdkConfigs": { "sdkConfigs" : {
"maps": { "maps" : {
"qqmap": { "qqmap" : {
"key": "SMJBZ-WCHK4-ZPZUA-DSIXI-XDDVQ-XWFX7" "key" : "SMJBZ-WCHK4-ZPZUA-DSIXI-XDDVQ-XWFX7"
} }
} }
}, },
"title": "加载中...", "title" : "加载中...",
"template": "template.h5.html", "template" : "template.h5.html",
"optimization": { "optimization" : {
"treeShaking": { "treeShaking" : {
"enable": true "enable" : true
} }
} }
} }

View File

@ -25,7 +25,7 @@
}, { }, {
"path": "pages/whole_sale/index", "path": "pages/whole_sale/index",
"style": { "style": {
"enablePullDownRefresh": true, "enablePullDownRefresh": false,
"navigationBarTitleText": "批发", "navigationBarTitleText": "批发",
"navigationStyle": "custom" "navigationStyle": "custom"
} }
@ -341,7 +341,7 @@
"path": "market/market", "path": "market/market",
"style": { "style": {
"navigationBarTitleText": "供销云市场", "navigationBarTitleText": "供销云市场",
"enablePullDownRefresh": true, "enablePullDownRefresh": false,
"navigationStyle": "custom" "navigationStyle": "custom"
} }
}, },
@ -349,7 +349,7 @@
"path": "specialty/specialty", "path": "specialty/specialty",
"style": { "style": {
"navigationBarTitleText": "名优特产", "navigationBarTitleText": "名优特产",
"enablePullDownRefresh": true, "enablePullDownRefresh": false,
"navigationStyle": "custom" "navigationStyle": "custom"
} }
} }

View File

@ -12,10 +12,11 @@
<view class="con line1" v-if="item.last && item.last.msn_type == 2">[表情]</view> <view class="con line1" v-if="item.last && item.last.msn_type == 2">[表情]</view>
<view class="con line1" v-if="item.last && item.last.msn_type == 3">[图片]</view> <view class="con line1" v-if="item.last && item.last.msn_type == 3">[图片]</view>
<view class="con line1" v-if="item.last && item.last.msn_type == 4">[商品]</view> <view class="con line1" v-if="item.last && item.last.msn_type == 4">[商品]</view>
<view class="con line1" v-if="item.last && (item.last.msn_type == 5 || item.last.msn_type == 6)">[订单]</view> <view class="con line1"
v-if="item.last && (item.last.msn_type == 5 || item.last.msn_type == 6)">[订单]</view>
</view> </view>
<view class="right-box"> <view class="right-box">
<view class="time">{{item.last && item.last.create_time.split(' ')[1] || ''}}</view> <view class="time">{{item.display_time}}</view>
<view class="num" v-if="item.num>0">{{item.num}}</view> <view class="num" v-if="item.num>0">{{item.num}}</view>
</view> </view>
</div> </div>
@ -23,18 +24,21 @@
<block v-if="type == 1 && list.length>0" v-for="(item,index) in list" :key="index"> <block v-if="type == 1 && list.length>0" v-for="(item,index) in list" :key="index">
<div class="item acea-row" @click="goPage(item)"> <div class="item acea-row" @click="goPage(item)">
<view class="logo"> <view class="logo">
<image :src="(item.user && item.user.avatar) ? item.user.avatar : '/static/images/f.png'" mode=""></image> <image :src="(item.user && item.user.avatar) ? item.user.avatar : '/static/images/f.png'"
mode=""></image>
</view> </view>
<view class="info"> <view class="info">
<view class="name">{{item.user && item.user.nickname}}</view> <view class="name">{{item.user && item.user.nickname}}</view>
<view class="con line1" v-if="item.last && item.last.msn_type == 1">{{item.last.msn}}</view> <view class="con line1" v-if="item.last && item.last.msn_type == 1">{{item.last.msn}}</view>
<view class="con line1" v-if="item.last && item.last.msn_type == 2">[表情]</view> <view class="con line1" v-if="item.last && item.last.msn_type == 2">[表情]</view>
<view class="con line1" v-if="item.last && item.last.msn_type == 3">[图片]</view> <view class="con line1" v-if="item.last && item.last.msn_type == 3">[图片]</view>
<view class="con line1" v-if="item.last && (item.last.msn_type == 4 || item.last.msn_type == 7)">[商品]</view> <view class="con line1"
<view class="con line1" v-if="item.last && (item.last.msn_type == 5 || item.last.msn_type == 6)">[订单]</view> v-if="item.last && (item.last.msn_type == 4 || item.last.msn_type == 7)">[商品]</view>
<view class="con line1"
v-if="item.last && (item.last.msn_type == 5 || item.last.msn_type == 6)">[订单]</view>
</view> </view>
<view class="right-box"> <view class="right-box">
<view class="time">{{item.last && item.last.create_time.split(' ')[1]}}</view> <view class="time">{{item.display_time}}</view>
<view class="num" v-if="item.num>0">{{item.num}}</view> <view class="num" v-if="item.num>0">{{item.num}}</view>
</view> </view>
</div> </div>
@ -57,12 +61,19 @@
// +---------------------------------------------------------------------- // +----------------------------------------------------------------------
import emptyPage from '@/components/emptyPage.vue' import emptyPage from '@/components/emptyPage.vue'
import { serviceList, serviceUserList } from "@/api/user"; import {
import { toLogin } from '@/libs/login.js'; serviceList,
import { mapGetters } from "vuex"; serviceUserList
} from "@/api/user";
import {
toLogin
} from '@/libs/login.js';
import {
mapGetters
} from "vuex";
export default { export default {
name: "CustomerList", name: "CustomerList",
components:{ components: {
emptyPage, emptyPage,
}, },
data() { data() {
@ -70,41 +81,41 @@
list: [], list: [],
productId: 0, productId: 0,
orderId: "", orderId: "",
type: 0 ,// 0 1 type: 0, // 0 1
timer: null, timer: null,
page:1, page: 1,
limit:9999, limit: 9999,
mer_id: '', mer_id: '',
loading: false, loading: false,
clear: false, clear: false,
}; };
}, },
computed: mapGetters(['isLogin','viewColor']), computed: mapGetters(['isLogin', 'viewColor']),
onLoad(optios) { onLoad(optios) {
this.type = optios.type; this.type = optios.type;
this.mer_id = optios.mer_id; this.mer_id = optios.mer_id;
if(this.isLogin){ if (this.isLogin) {
this.getList(this.mer_id) this.getList(this.mer_id)
} else { } else {
toLogin() toLogin()
} }
}, },
onShow(option) { onShow(option) {
if(this.isLogin){ if (this.isLogin) {
this.liveUpdate(); this.liveUpdate();
} else { } else {
toLogin() toLogin()
} }
}, },
onHide(){ onHide() {
if(this.timer) { if (this.timer) {
clearInterval(this.timer); clearInterval(this.timer);
this.timer = null; this.timer = null;
} }
this.clear = true; this.clear = true;
}, },
onUnload() { onUnload() {
if(this.timer) { if (this.timer) {
clearInterval(this.timer); clearInterval(this.timer);
this.timer = null; this.timer = null;
} }
@ -113,20 +124,20 @@
methods: { methods: {
getList(mer_id) { getList(mer_id) {
this.loading = true; this.loading = true;
if(this.type == 0){ if (this.type == 0) {
serviceList({ serviceList({
page:this.page, page: this.page,
limit:this.limit limit: this.limit
}).then(res => { }).then(res => {
this.list = res.data.list; this.list = res.data.list;
if(res.status == 400){ if (res.status == 400) {
clearInterval(this.timer); clearInterval(this.timer);
this.timer = null; this.timer = null;
return this.$util.Tips({ return this.$util.Tips({
title: res.message title: res.message
}) })
} }
}).finally(v=>{ }).finally(v => {
this.loading = false; this.loading = false;
return this.$util.Tips({ return this.$util.Tips({
title: v title: v
@ -136,20 +147,20 @@
title: err title: err
}) })
}); });
}else{ } else {
serviceUserList(mer_id,{ serviceUserList(mer_id, {
page:this.page, page: this.page,
limit:this.limit limit: this.limit
}).then(res =>{ }).then(res => {
this.list = res.data.list; this.list = res.data.list;
if(res.status == 400){ if (res.status == 400) {
clearInterval(this.timer); clearInterval(this.timer);
this.timer = null; this.timer = null;
return this.$util.Tips({ return this.$util.Tips({
title: res.message title: res.message
}) })
} }
}).finally(v=>{ }).finally(v => {
this.loading = false; this.loading = false;
clearInterval(this.timer); clearInterval(this.timer);
this.timer = null; this.timer = null;
@ -166,29 +177,29 @@
} }
}, },
// //
liveUpdate(){ liveUpdate() {
let that = this; let that = this;
this.clear = false; this.clear = false;
if(that.timer) { if (that.timer) {
clearInterval(that.timer); clearInterval(that.timer);
that.timer = null; that.timer = null;
} }
that.timer = setInterval(function(){ that.timer = setInterval(function() {
if(that.clear){ if (that.clear) {
clearInterval(that.timer); clearInterval(that.timer);
return ; return;
} }
// //
(!that.loading) && that.getList(that.mer_id); (!that.loading) && that.getList(that.mer_id);
},5000); }, 5000);
}, },
goPage(item) { goPage(item) {
item.num = 0; item.num = 0;
if(this.type == 0){ if (this.type == 0) {
uni.navigateTo({ uni.navigateTo({
url: `/pages/chat/customer_list/chat?mer_id=${item.mer_id}` url: `/pages/chat/customer_list/chat?mer_id=${item.mer_id}`
}) })
}else{ } else {
uni.navigateTo({ uni.navigateTo({
url: `/pages/chat/customer_list/chat?userId=${item.user.uid}&mer_id=${item.mer_id}` url: `/pages/chat/customer_list/chat?userId=${item.user.uid}&mer_id=${item.mer_id}`
}) })
@ -207,7 +218,8 @@
transform: rotate(180deg); transform: rotate(180deg);
font-size: 36rpx; font-size: 36rpx;
} }
.popupn{
.popupn {
position: fixed; position: fixed;
width: 100%; width: 100%;
text-align: center; text-align: center;
@ -217,65 +229,78 @@
height: 90rpx; height: 90rpx;
line-height: 90rpx; line-height: 90rpx;
z-index: 100; z-index: 100;
.title{
.title {
max-width: 560rpx; max-width: 560rpx;
margin: 0 auto; margin: 0 auto;
position: relative; position: relative;
} }
.iconfont{
.iconfont {
display: inline-block; display: inline-block;
position: relative; position: relative;
top: 4rpx; top: 4rpx;
right: 0; right: 0;
} }
.mer_logo{
.mer_logo {
width: 34rpx; width: 34rpx;
height: 34rpx; height: 34rpx;
position: relative; position: relative;
top: 6rpx; top: 6rpx;
right: 10px; right: 10px;
} }
.mer_name{
.mer_name {
display: inline-block; display: inline-block;
max-width: 650rpx; max-width: 650rpx;
} }
.invoice-content{
.invoice-content {
background-color: #ffffff; background-color: #ffffff;
} }
} }
.list_count{
.list_count {
margin-top: 104rpx; margin-top: 104rpx;
} }
.item { .item {
align-items: center; align-items: center;
border-bottom: 1px solid #eee; border-bottom: 1px solid #eee;
padding: 20rpx 30rpx; padding: 20rpx 30rpx;
background-color: #fff; background-color: #fff;
.logo image{
.logo image {
width: 88rpx; width: 88rpx;
height: 88rpx; height: 88rpx;
border-radius: 50%; border-radius: 50%;
} }
.info{
.info {
width: 334rpx; width: 334rpx;
margin-left: 20rpx; margin-left: 20rpx;
.con{
.con {
margin-top: 10rpx; margin-top: 10rpx;
color: #999999; color: #999999;
font-size: 24rpx; font-size: 24rpx;
} }
} }
.right-box{
.right-box {
flex: 1; flex: 1;
display: flex; display: flex;
flex-direction: column; flex-direction: column;
align-items: flex-end; align-items: flex-end;
font-size: 20rpx; font-size: 20rpx;
color: #BBBBBB; color: #BBBBBB;
.time{
.time {
margin-bottom: 10rpx; margin-bottom: 10rpx;
} }
.num{
.num {
min-width: 6px; min-width: 6px;
background-color: var(--view-theme); background-color: var(--view-theme);
border-radius: 15px; border-radius: 15px;

View File

@ -6,68 +6,31 @@
.wholeSale { .wholeSale {
background-color: #f8fafb !important; background-color: #f8fafb !important;
.wholeSale-header-wrap {
background-color: #40AE36;
}
.wholeSale-header-search-wrap {
padding: 30rpx 20rpx 0;
background-color: #fff;
}
.wholeSale-header { .wholeSale-header {
position: sticky; position: sticky;
top: 0; top: 0;
z-index: 100; z-index: 9;
margin-bottom: 20rpx; margin-bottom: 20rpx;
background-color: #40AE36;
.scrollview {
display: flex;
align-items: center;
height: 98rpx;
padding-left: 32rpx;
.scrollview-item {
margin-right: 30rpx;
font-size: 28rpx;
color: #FFFFFF;
} }
.scrollview-active { .wholeSale-section {
position: relative; position: sticky;
font-weight: bold; top: calc(82rpx + var(--status-bar-height));
font-size: 36rpx; padding: 0rpx 20rpx;
color: #FFFFFF; background-color: #fff;
transition: height .5s;
&::after { overflow: hidden;
content: ""; margin-bottom: 20rpx;
display: inline-block;
position: absolute;
bottom: -6rpx;
left: 50%;
transform: translateX(-50%);
width: 100%;
height: 6rpx;
background-color: #FFFFFF;
}
}
}
}
.wholeSale-con {
margin: 0 20rpx;
padding-bottom: 30rpx;
}
.wholeSale-nav { .wholeSale-nav {
display: flex; display: flex;
align-items: center; align-items: center;
margin-bottom: 40rpx; padding-bottom: 20rpx;
.icon { .icon {
margin-right: 20rpx; margin-right: 20rpx;
} }
}
.search_content { .search_content {
flex: 1; flex: 1;
@ -103,15 +66,18 @@
color: #fff; color: #fff;
} }
} }
}
.category { .category {
position: relative;
width: 100%; width: 100%;
overflow: auto; overflow: auto;
margin-bottom: 20rpx; margin-bottom: 20rpx;
padding-right: 70rpx;
.category-wrap { .category-wrap {
display: flex; display: flex;
padding-bottom: 20rpx; padding-bottom: 10rpx;
.category-item { .category-item {
display: flex; display: flex;
@ -152,6 +118,24 @@
} }
} }
} }
.category-all {
position: absolute;
right: 0;
top: 50%;
transform: translateY(-50%);
height: 100%;
background-color: #f3f3f3;
z-index: 10;
display: flex;
justify-content: center;
align-items: center;
flex-direction: column;
font-size: 24rpx;
border-radius: 4rpx;
width: 70rpx;
color: #919191;
}
} }
.cate { .cate {
@ -181,41 +165,83 @@
} }
} }
} }
}
.comprehensive { .popup-wrap {
display: flex; background-color: #fff;
justify-content: space-between; padding: 20rpx;
align-items: center;
padding: 0 50rpx;
[class^=comprehensive-] { .popup-wrap-title {
font-size: 36rpx;
color: #333;
font-weight: bold;
margin-bottom: 20rpx;
}
.popup-wrap-category {
width: 100%;
.popup-wrap-category-wrap {
display: flex; display: flex;
flex-wrap: wrap;
.popup-wrap-category-item {
display: flex;
flex-direction: column;
justify-content: center;
align-items: center; align-items: center;
margin: 0 20rpx 20rpx 0;
&:nth-child(5n) {
margin-right: 0;
}
text { text {
margin-right: 12rpx; margin-top: 16rpx;
font-size: 26rpx; font-size: 24rpx;
color: #666666; color: #666666;
white-space: nowrap;
} }
image { .popup-wrap-category-item-text {
width: 28rpx; width: 120rpx;
height: 28rpx; text-align: center;
overflow: hidden;
white-space: nowrap;
text-overflow: ellipsis;
}
} }
.loudou { .popup-wrap-category-item-active {
width: 24rpx; position: relative;
height: 24rpx;
.popup-wrap-category-item-img {
border: 2px solid #40AE36;
border-radius: 50%;
}
text {
background-color: #40AE36;
color: #fff;
padding: 2rpx 10rpx 6rpx 10rpx;
border-radius: 50rpx;
} }
} }
} }
} }
}
.wholeSale-con {
height: 100vh;
margin: 0 20rpx;
padding-bottom: 30rpx;
}
}
</style> </style>
<template> <template>
<view class="wholeSale"> <view class="wholeSale">
<!-- 顶部 --> <!-- 顶部 -->
<view class="wholeSale-header"> <view class="wholeSale-header">
<view class="wholeSale-header-wrap">
<!-- 适配不同机 --> <!-- 适配不同机 -->
<view style="height: var(--status-bar-height);background-color: #40af37;"></view> <view style="height: var(--status-bar-height);background-color: #40af37;"></view>
<view style="display: flex;padding: 20rpx 28rpx;background-color: #40af37;color: #fff;"> <view style="display: flex;padding: 20rpx 28rpx;background-color: #40af37;color: #fff;">
@ -224,7 +250,8 @@
</view> </view>
</view> </view>
<view class="wholeSale-header-search-wrap"> <!-- 分类区域 -->
<view class="wholeSale-section" :style="{height:wrapHeight + 'rpx'}">
<view class="wholeSale-nav"> <view class="wholeSale-nav">
<view @click="navTo(`/pages/columnGoods/goods_search/index?back=true&searchVal=${where.keyword}`)" <view @click="navTo(`/pages/columnGoods/goods_search/index?back=true&searchVal=${where.keyword}`)"
hover-class="none" class="search_content flex_a_c_j_sb"> hover-class="none" class="search_content flex_a_c_j_sb">
@ -254,6 +281,11 @@
</block> </block>
</view> </view>
</scroll-view> </scroll-view>
<view class="category-all" v-if="store_category.length > 0" @click="onAllCategory">
<view style="margin-bottom: 20rpx;">全部</view>
<u-icon name="list"></u-icon>
</view>
</view> </view>
<!-- 商品小分类 --> <!-- 商品小分类 -->
@ -270,14 +302,43 @@
</scroll-view> </scroll-view>
</view> </view>
</view> </view>
</view>
<!-- 内容 --> <!-- 内容 -->
<view class="wholeSale-con"> <view class="wholeSale-con"
:style="{height:'calc(100vh - '+wrapHeight+'rpx - 142rpx '+(isShowSmall?' - 48rpx':'')+')'}">
<scroll-view :scroll-y="true" @scrolltolower="onScrollBottom" @scroll="onScroll" style="height: 100%;"
@scrolltoupper="scrolltoupper" :refresher-threshold="0">
<view>
<!-- 流水瀑布 --> <!-- 流水瀑布 -->
<WaterfallsFlow :wfList='hostProduct' @itemTap="goDetail" :type="0" /> <WaterfallsFlow :wfList='hostProduct' @itemTap="goDetail" :type="0" />
<loadmore :type="isLoading"></loadmore> <loadmore :type="isLoading" style="margin-bottom:20rpx ;"></loadmore>
</view> </view>
</scroll-view>
</view>
<!-- 弹框大分类 -->
<uni-popup ref="popup" type="top" border-radius="10px 10px 0 0" z-index="1000">
<view class="popup-wrap">
<view style="height: var(--status-bar-height);"></view>
<view class="popup-wrap-title">分类</view>
<view class="popup-wrap-category">
<view class="popup-wrap-category-wrap">
<block v-for="(item,index) in store_category" :key="index">
<view class="popup-wrap-category-item" :class="{'category-item-active': index==cate_change}"
@click="changeCate(index)">
<u--image class="popup-wrap-category-item-img" width="108rpx" :src="item.pic"
height="108rpx" shape="circle">
<template v-slot:loading>
<u-loading-icon color="#999" size="15" />
</template>
</u--image>
<text class="popup-wrap-category-item-text">{{item.cate_name}}</text>
</view>
</block>
</view>
</view>
</view>
</uni-popup>
</view> </view>
</template> </template>
@ -310,23 +371,56 @@
keyword: '', keyword: '',
deduction_rate: '', // deduction_rate: '', //
rand: 1 rand: 1
} },
wrapHeight: 300,
isShowSmall: false,
scrollTop: 0,
} }
}, },
onLoad(option) { onLoad(option) {
this.getStoreCategory(); this.getStoreCategory();
this.getProductslist(true); this.getProductslist(true);
}, },
onReachBottom() {
this.getProductslist(); onPageScroll(e) {
},
onPageScroll() {
uni.$emit('scroll'); uni.$emit('scroll');
}, },
onPullDownRefresh() {
this.getProductslist(true); watch: {
'where.cate_pid'(newVal, oldVal) {
if (newVal && !oldVal) {
this.wrapHeight = 300 + 48;
this.isShowSmall = true;
}
if (!newVal && oldVal) {
this.wrapHeight = 300;
this.isShowSmall = false;
}
}
}, },
methods: { methods: {
onAllCategory() {
this.$refs.popup.open();
},
scrolltoupper() {
this.getProductslist(true);
},
onScrollBottom(e) {
this.getProductslist();
},
onScroll(e) {
if (this.scrollTop >= e.target.scrollTop) { //
this.wrapHeight = 300;
if (this.where.cate_pid) this.wrapHeight = this.wrapHeight + 48;
} else {
this.wrapHeight = 0;
}
this.scrollTop = e.target.scrollTop;
},
navTo(url) { navTo(url) {
uni.navigateTo({ uni.navigateTo({
url: url, url: url,
@ -340,12 +434,11 @@
} }
}) })
}, },
navBack() { navBack() {
uni.navigateBack(); uni.navigateBack();
}, },
tabsChange(e) {
this.tabsCurr = e;
},
changeCate(e) { changeCate(e) {
this.cate_change = e; this.cate_change = e;
this.store_category_children = []; this.store_category_children = [];
@ -357,6 +450,8 @@
this.cate_change_children = 0; this.cate_change_children = 0;
this.where.cate_pid = this.store_category[e].store_category_id; this.where.cate_pid = this.store_category[e].store_category_id;
this.getProductslist(true); this.getProductslist(true);
this.$refs.popup && this.$refs.popup.close();
}, },
changeChildrenCate(e) { changeChildrenCate(e) {
this.cate_change_children = e; this.cate_change_children = e;
@ -387,6 +482,7 @@
} }
if (this.isLoading == -1) return; if (this.isLoading == -1) return;
this.isLoading = 1; this.isLoading = 1;
getProductslist(this.where).then(res => { getProductslist(this.where).then(res => {
this.where.limit = res.data.limit this.where.limit = res.data.limit
this.where.page = res.data.page this.where.page = res.data.page

View File

@ -1,346 +1,8 @@
<style lang="scss" scoped>
page {
background-color: #f8fafb !important;
}
.wholeSale {
background-color: #f8fafb !important;
.wholeSale-header-wrap {
background-color: #40AE36;
}
.wholeSale-header-search-wrap {
padding: 30rpx 20rpx 0;
background-color: #fff;
}
.wholeSale-header {
position: sticky;
top: 0;
z-index: 100;
margin-bottom: 20rpx;
.scrollview {
display: flex;
align-items: center;
height: 98rpx;
padding-left: 32rpx;
.scrollview-item {
margin-right: 30rpx;
font-size: 28rpx;
color: #FFFFFF;
}
.scrollview-active {
position: relative;
font-weight: bold;
font-size: 36rpx;
color: #FFFFFF;
&::after {
content: "";
display: inline-block;
position: absolute;
bottom: -6rpx;
left: 50%;
transform: translateX(-50%);
width: 100%;
height: 6rpx;
background-color: #FFFFFF;
}
}
}
}
.wholeSale-nav {
display: flex;
align-items: center;
margin-bottom: 40rpx;
.icon {
margin-right: 20rpx;
}
}
.search_content {
// margin-bottom: 40rpx;
flex: 1;
height: 70rpx;
padding: 2px 2px 2px 21.05rpx;
border-radius: 80rpx;
background: #EDEFF2;
position: relative;
box-sizing: border-box;
.search_content_wrap {
width: 100%;
.icon-sousuo {
font-size: 26.32rpx;
font-weight: bold;
color: #c8c7c6;
margin-right: 17.54rpx;
}
input {
width: 80%;
}
}
.search_btn {
width: 106rpx;
height: 60rpx;
line-height: 60rpx;
background: #40AE36;
border-radius: 100px;
font-size: 28rpx;
color: #fff;
}
}
.category {
width: 100%;
overflow: auto;
margin-bottom: 20rpx;
.category-wrap {
display: flex;
padding-bottom: 20rpx;
.category-item {
display: flex;
flex-direction: column;
justify-content: center;
align-items: center;
margin-right: 38rpx;
text {
margin-top: 16rpx;
font-size: 24rpx;
color: #666666;
white-space: nowrap;
}
.category-item-text {
width: 120rpx;
text-align: center;
overflow: hidden;
white-space: nowrap;
text-overflow: ellipsis;
}
}
.category-item-active {
position: relative;
.category-item-img {
border: 2px solid #40AE36;
border-radius: 50%;
}
text {
background-color: #40AE36;
color: #fff;
padding: 2rpx 10rpx 6rpx 10rpx;
border-radius: 50rpx;
}
}
}
}
.cate {
width: 100%;
overflow: auto;
margin-bottom: 30rpx;
.cate-wrap {
display: flex;
padding-bottom: 8rpx;
.cate-item {
text {
padding: 4rpx 16rpx;
white-space: nowrap;
font-size: 30rpx;
color: #333;
}
}
.cate-item-active {
text {
color: #40AE36;
font-weight: bold;
}
}
}
}
.comprehensive {
display: flex;
justify-content: space-between;
align-items: center;
padding: 0 50rpx;
[class^=comprehensive-] {
display: flex;
align-items: center;
text {
margin-right: 12rpx;
font-size: 26rpx;
color: #666666;
}
image {
width: 28rpx;
height: 28rpx;
}
.loudou {
width: 24rpx;
height: 24rpx;
}
}
}
.wholeSale-con {
margin: 0 20rpx;
}
.goods_list {
padding-bottom: 30rpx;
.goods {
width: 710rpx;
height: 200rpx;
margin: 20rpx auto;
margin-top: 0;
background-color: #fff;
border-radius: 24rpx;
display: flex;
.avatar {
height: 160rpx;
width: 160rpx;
margin: 20rpx;
border-radius: 12rpx;
overflow: hidden;
position: relative;
}
.content {
margin: 20rpx 0;
width: 500rpx;
display: flex;
flex-direction: column;
justify-content: space-between;
.content-head {
width: 500rpx;
display: flex;
justify-content: space-between;
align-items: flex-end;
font-size: 28rpx;
color: #333;
.title {
width: 360rpx;
white-space: nowrap;
overflow: hidden;
text-overflow: ellipsis;
}
}
.content-two {
display: flex;
font-size: 24rpx;
color: #666;
}
}
}
}
}
.score {
display: flex;
align-items: center;
font-weight: 500;
font-size: 24rpx;
line-height: 1;
color: #000;
.score-title {
margin-right: 15rpx;
}
.score_text {
color: #fd5d2e;
}
.star {
position: relative;
width: 111rpx;
height: 19rpx;
margin-right: 10rpx;
background: url(../../columnGoods/images/star.png) left top/100% 100% no-repeat;
overflow: hidden;
view {
position: absolute;
top: 0;
left: 0;
width: 100%;
height: 100%;
background: url(../../columnGoods/images/star_active.png) left top/111rpx 19rpx no-repeat;
&.star_purple {
background: url(../../columnGoods/images/star_active_purple.png) left top/111rpx 19rpx no-repeat;
}
}
}
}
.position-address {
position: absolute;
top: 70rpx;
right: -10rpx;
z-index: 101;
width: 250rpx;
padding: 20rpx;
padding-top: 30rpx;
font-size: 26rpx;
text-align: center;
border-radius: 10rpx;
background-image: url(https://lihai001.oss-cn-chengdu.aliyuncs.com/def/39cd0202404171145486922.png);
background-size: 100% 100%;
background-repeat: no-repeat;
.icon {
position: absolute;
right: 10rpx;
top: 25rpx;
}
.btn {
background-color: #40AE36;
width: 100%;
height: 40rpx;
margin-top: 20rpx;
border-radius: 40rpx;
}
}
</style>
<template> <template>
<view class="wholeSale"> <view class="wholeSale">
<!-- 顶部 -->
<view class="wholeSale-header">
<view class="wholeSale-header-wrap">
<!-- 适配不同机 --> <!-- 适配不同机 -->
<view class="wholeSale-header">
<view style="height: var(--status-bar-height);background-color: #40af37;"></view> <view style="height: var(--status-bar-height);background-color: #40af37;"></view>
<view <view
style="display: flex;padding: 20rpx 28rpx;background-color: #40af37;color: #fff;justify-content: space-between;"> style="display: flex;padding: 20rpx 28rpx;background-color: #40af37;color: #fff;justify-content: space-between;">
@ -364,7 +26,8 @@
</view> </view>
</view> </view>
<view class="wholeSale-header-search-wrap"> <!-- 分类区域 -->
<view class="wholeSale-section" :style="{height:wrapHeight + 'rpx'}">
<view class="wholeSale-nav"> <view class="wholeSale-nav">
<view <view
@click="navTo(`/pages/columnGoods/goods_search/index?back=true&searchVal=${where.keyword}&shop=true`)" @click="navTo(`/pages/columnGoods/goods_search/index?back=true&searchVal=${where.keyword}&shop=true`)"
@ -395,12 +58,18 @@
</block> </block>
</view> </view>
</scroll-view> </scroll-view>
<view class="category-all" v-if="store_category.length > 0" @click="onAllCategory">
<view style="margin-bottom: 20rpx;">全部</view>
<u-icon name="list"></u-icon>
</view> </view>
</view> </view>
</view> </view>
<!-- 列表 --> <!-- 列表 -->
<view class="goods_list"> <view class="goods_list" :style="{height:'calc(100vh - '+wrapHeight+'rpx - 142rpx)'}">
<scroll-view :scroll-y="true" @scrolltolower="onScrollBottom" @scroll="onScroll" style="height: 100%;"
@scrolltoupper="scrolltoupper" :refresher-threshold="0">
<view class="goods" v-for="(item, index) in goodsList" :key="index" @click="goStore(item.mer_id)"> <view class="goods" v-for="(item, index) in goodsList" :key="index" @click="goStore(item.mer_id)">
<view class="avatar"> <view class="avatar">
<u--image width="160rpx" height="160rpx" :src="item.mer_avatar" mode="aspectFill"> <u--image width="160rpx" height="160rpx" :src="item.mer_avatar" mode="aspectFill">
@ -412,7 +81,8 @@
<view class="content"> <view class="content">
<view class="content-head"> <view class="content-head">
<view class="title">{{item.mer_name}}</view> <view class="title">{{item.mer_name}}</view>
<text style="font-size: 21.03rpx;color: #aaa;" v-if="item.sales>=100">月销{{item.sales}}</text> <text style="font-size: 21.03rpx;color: #aaa;"
v-if="item.sales>=100">月销{{item.sales}}</text>
</view> </view>
<view class="content-two"> <view class="content-two">
<view class="score"> <view class="score">
@ -444,7 +114,33 @@
</view> </view>
</view> </view>
<loadmore :type="isLoading"></loadmore> <loadmore :type="isLoading"></loadmore>
</scroll-view>
</view> </view>
<!-- 弹框大分类 -->
<uni-popup ref="popup" type="top" border-radius="10px 10px 0 0" z-index="1000">
<view class="popup-wrap">
<view style="height: var(--status-bar-height);"></view>
<view class="popup-wrap-title">分类</view>
<view class="popup-wrap-category">
<view class="popup-wrap-category-wrap">
<block v-for="(item,index) in store_category" :key="index">
<view class="popup-wrap-category-item"
:class="{'popup-wrap-category-item-active': index==cate_change}"
@click="changeCate(index)">
<u--image class="popup-wrap-category-item-img" width="108rpx" :src="item.background"
height="108rpx" shape="circle">
<template v-slot:loading>
<u-loading-icon color="#999" size="15" />
</template>
</u--image>
<text class="popup-wrap-category-item-text">{{item.category_name}}</text>
</view>
</block>
</view>
</view>
</view>
</uni-popup>
</view> </view>
</template> </template>
@ -494,7 +190,9 @@
type_id: '10,12,21,24', type_id: '10,12,21,24',
merchant_category_id: '', merchant_category_id: '',
location: '' location: ''
} },
wrapHeight: 300,
scrollTop: 0,
} }
}, },
computed: { computed: {
@ -522,15 +220,36 @@
this.storeMerchantList(); this.storeMerchantList();
}, },
onReachBottom() { onReachBottom() {
this.storeMerchantList(); // this.storeMerchantList();
}, },
onPageScroll() { onPageScroll() {
uni.$emit('scroll'); uni.$emit('scroll');
}, },
onPullDownRefresh() { onPullDownRefresh() {
this.storeMerchantList(true); // this.storeMerchantList(true);
}, },
methods: { methods: {
onAllCategory() {
this.$refs.popup.open();
},
scrolltoupper() {
this.storeMerchantList(true);
},
onScrollBottom(e) {
this.storeMerchantList();
},
onScroll(e) {
if (this.scrollTop >= e.target.scrollTop) { //
this.wrapHeight = 300;
} else {
this.wrapHeight = 0;
}
this.scrollTop = e.target.scrollTop;
},
navTo(url) { navTo(url) {
uni.navigateTo({ uni.navigateTo({
url: url, url: url,
@ -547,13 +266,14 @@
navBack() { navBack() {
uni.navigateBack(); uni.navigateBack();
}, },
tabsChange(e) {
this.tabsCurr = e;
},
changeCate(e) { changeCate(e) {
this.cate_change = e; this.cate_change = e;
this.where.merchant_category_id = this.store_category[e].merchant_category_id; this.where.merchant_category_id = this.store_category[e].merchant_category_id;
this.storeMerchantList(true); this.storeMerchantList(true);
this.$refs.popup && this.$refs.popup.close();
this.$forceUpdate();
}, },
// //
goStore(id) { goStore(id) {
@ -683,3 +403,343 @@
} }
} }
</script> </script>
<style lang="scss" scoped>
page {
background-color: #f8fafb !important;
}
.wholeSale {
.wholeSale-header-search-wrap {
padding: 30rpx 20rpx 0;
background-color: #fff;
}
.wholeSale-header {
position: sticky;
top: 0;
z-index: 90;
margin-bottom: 20rpx;
background-color: #40AE36;
}
.wholeSale-section {
position: sticky;
top: calc(82rpx + var(--status-bar-height));
padding: 0rpx 20rpx;
background-color: #fff;
transition: height .5s;
overflow: hidden;
margin-bottom: 20rpx;
.wholeSale-nav {
display: flex;
align-items: center;
margin-bottom: 40rpx;
.icon {
margin-right: 20rpx;
}
.search_content {
// margin-bottom: 40rpx;
flex: 1;
height: 70rpx;
padding: 2px 2px 2px 21.05rpx;
border-radius: 80rpx;
background: #EDEFF2;
position: relative;
box-sizing: border-box;
.search_content_wrap {
width: 100%;
.icon-sousuo {
font-size: 26.32rpx;
font-weight: bold;
color: #c8c7c6;
margin-right: 17.54rpx;
}
input {
width: 80%;
}
}
.search_btn {
width: 106rpx;
height: 60rpx;
line-height: 60rpx;
background: #40AE36;
border-radius: 100px;
font-size: 28rpx;
color: #fff;
}
}
}
.category {
position: relative;
width: 100%;
overflow: auto;
margin-bottom: 20rpx;
padding-right: 70rpx;
.category-wrap {
display: flex;
padding-bottom: 20rpx;
.category-item {
display: flex;
flex-direction: column;
justify-content: center;
align-items: center;
margin-right: 38rpx;
text {
margin-top: 16rpx;
font-size: 24rpx;
color: #666666;
white-space: nowrap;
}
.category-item-text {
width: 120rpx;
text-align: center;
overflow: hidden;
white-space: nowrap;
text-overflow: ellipsis;
}
}
.category-item-active {
position: relative;
.category-item-img {
border: 2px solid #40AE36;
border-radius: 50%;
}
text {
background-color: #40AE36;
color: #fff;
padding: 2rpx 10rpx 6rpx 10rpx;
border-radius: 50rpx;
}
}
}
.category-all {
position: absolute;
right: 0;
top: 50%;
transform: translateY(-50%);
height: 100%;
background-color: #f3f3f3;
z-index: 10;
display: flex;
justify-content: center;
align-items: center;
flex-direction: column;
font-size: 24rpx;
border-radius: 4rpx;
width: 70rpx;
color: #919191;
}
}
}
.popup-wrap {
background-color: #fff;
padding: 20rpx;
.popup-wrap-title {
font-size: 36rpx;
color: #333;
font-weight: bold;
margin-bottom: 20rpx;
}
.popup-wrap-category {
width: 100%;
.popup-wrap-category-wrap {
display: flex;
flex-wrap: wrap;
.popup-wrap-category-item {
display: flex;
flex-direction: column;
justify-content: center;
align-items: center;
margin: 0 20rpx 20rpx 0;
&:nth-child(5n) {
margin-right: 0;
}
text {
margin-top: 16rpx;
font-size: 24rpx;
color: #666666;
white-space: nowrap;
}
.popup-wrap-category-item-text {
width: 120rpx;
text-align: center;
overflow: hidden;
white-space: nowrap;
text-overflow: ellipsis;
}
}
.popup-wrap-category-item-active {
position: relative;
.popup-wrap-category-item-img {
border: 2px solid #40AE36;
border-radius: 50%;
}
text {
background-color: #40AE36;
color: #fff;
padding: 2rpx 10rpx 6rpx 10rpx;
border-radius: 50rpx;
}
}
}
}
}
.wholeSale-con {
margin: 0 20rpx;
}
.goods_list {
padding-bottom: 30rpx;
background-color: #f8fafb;
.goods {
width: 710rpx;
height: 200rpx;
margin: 20rpx auto;
margin-top: 0;
background-color: #fff;
border-radius: 24rpx;
display: flex;
.avatar {
height: 160rpx;
width: 160rpx;
margin: 20rpx;
border-radius: 12rpx;
overflow: hidden;
position: relative;
}
.content {
margin: 20rpx 0;
width: 500rpx;
display: flex;
flex-direction: column;
justify-content: space-between;
.content-head {
width: 500rpx;
display: flex;
justify-content: space-between;
align-items: flex-end;
font-size: 28rpx;
color: #333;
.title {
width: 360rpx;
white-space: nowrap;
overflow: hidden;
text-overflow: ellipsis;
}
}
.content-two {
display: flex;
font-size: 24rpx;
color: #666;
}
}
}
}
}
.score {
display: flex;
align-items: center;
font-weight: 500;
font-size: 24rpx;
line-height: 1;
color: #000;
.score-title {
margin-right: 15rpx;
}
.score_text {
color: #fd5d2e;
}
.star {
position: relative;
width: 111rpx;
height: 19rpx;
margin-right: 10rpx;
background: url(../../columnGoods/images/star.png) left top/100% 100% no-repeat;
overflow: hidden;
view {
position: absolute;
top: 0;
left: 0;
width: 100%;
height: 100%;
background: url(../../columnGoods/images/star_active.png) left top/111rpx 19rpx no-repeat;
&.star_purple {
background: url(../../columnGoods/images/star_active_purple.png) left top/111rpx 19rpx no-repeat;
}
}
}
}
.position-address {
position: absolute;
top: 70rpx;
right: -10rpx;
z-index: 101;
width: 250rpx;
padding: 20rpx;
padding-top: 30rpx;
font-size: 26rpx;
text-align: center;
border-radius: 10rpx;
background-image: url(https://lihai001.oss-cn-chengdu.aliyuncs.com/def/39cd0202404171145486922.png);
background-size: 100% 100%;
background-repeat: no-repeat;
.icon {
position: absolute;
right: 10rpx;
top: 25rpx;
}
.btn {
background-color: #40AE36;
width: 100%;
height: 40rpx;
margin-top: 20rpx;
border-radius: 40rpx;
}
}
</style>

View File

@ -1,225 +1,7 @@
<style lang="scss" scoped>
page {
background-color: #f8fafb !important;
}
.wholeSale {
background-color: #f8fafb !important;
.wholeSale-header-wrap {
background-color: #40AE36;
}
.wholeSale-header-search-wrap {
padding: 30rpx 20rpx 0;
background-color: #fff;
}
.wholeSale-header {
position: sticky;
top: 0;
z-index: 100;
margin-bottom: 20rpx;
.scrollview {
display: flex;
align-items: center;
height: 98rpx;
padding-left: 32rpx;
.scrollview-item {
margin-right: 30rpx;
font-size: 28rpx;
color: #FFFFFF;
}
.scrollview-active {
position: relative;
font-weight: bold;
font-size: 36rpx;
color: #FFFFFF;
&::after {
content: "";
display: inline-block;
position: absolute;
bottom: -6rpx;
left: 50%;
transform: translateX(-50%);
width: 100%;
height: 6rpx;
background-color: #FFFFFF;
}
}
}
}
.wholeSale-nav {
display: flex;
align-items: center;
margin-bottom: 40rpx;
.icon {
margin-right: 20rpx;
}
}
.search_content {
// margin-bottom: 40rpx;
flex: 1;
height: 70rpx;
padding: 2px 2px 2px 21.05rpx;
border-radius: 80rpx;
background: #EDEFF2;
position: relative;
box-sizing: border-box;
.search_content_wrap {
width: 100%;
.icon-sousuo {
font-size: 26.32rpx;
font-weight: bold;
color: #c8c7c6;
margin-right: 17.54rpx;
}
input {
width: 80%;
}
}
.search_btn {
width: 106rpx;
height: 60rpx;
line-height: 60rpx;
pic: #40AE36;
border-radius: 100px;
font-size: 28rpx;
color: #fff;
}
}
.category {
width: 100%;
overflow: auto;
margin-bottom: 20rpx;
.category-wrap {
display: flex;
padding-bottom: 20rpx;
.category-item {
display: flex;
flex-direction: column;
justify-content: center;
align-items: center;
margin-right: 38rpx;
text {
margin-top: 16rpx;
font-size: 24rpx;
color: #666666;
white-space: nowrap;
}
.category-item-text {
width: 120rpx;
text-align: center;
overflow: hidden;
white-space: nowrap;
text-overflow: ellipsis;
}
}
.category-item-active {
position: relative;
.category-item-img {
border: 2px solid #40AE36;
border-radius: 50%;
}
text {
background-color: #40AE36;
color: #fff;
padding: 2rpx 10rpx 6rpx 10rpx;
border-radius: 50rpx;
}
}
}
}
.cate {
width: 100%;
overflow: auto;
margin-bottom: 30rpx;
.cate-wrap {
display: flex;
padding-bottom: 8rpx;
.cate-item {
text {
padding: 4rpx 16rpx;
white-space: nowrap;
font-size: 30rpx;
color: #333;
}
}
.cate-item-active {
text {
color: #40AE36;
font-weight: bold;
}
}
}
}
.comprehensive {
display: flex;
justify-content: space-between;
align-items: center;
padding: 0 50rpx;
[class^=comprehensive-] {
display: flex;
align-items: center;
text {
margin-right: 12rpx;
font-size: 26rpx;
color: #666666;
}
image {
width: 28rpx;
height: 28rpx;
}
.loudou {
width: 24rpx;
height: 24rpx;
}
}
}
.wholeSale-con {
padding-bottom: 30rpx;
margin: 0 20rpx;
}
}
</style>
<template> <template>
<view class="wholeSale"> <view class="wholeSale">
<!-- 顶部 -->
<view class="wholeSale-header">
<view class="wholeSale-header-wrap">
<!-- 适配不同机 --> <!-- 适配不同机 -->
<view class="wholeSale-header">
<view style="height: var(--status-bar-height);background-color: #40af37;"></view> <view style="height: var(--status-bar-height);background-color: #40af37;"></view>
<view style="display: flex;padding: 20rpx 28rpx;background-color: #40af37;color: #fff;"> <view style="display: flex;padding: 20rpx 28rpx;background-color: #40af37;color: #fff;">
<view style="display: flex;font-weight: bold;font-size: 32rpx;"><u-icon style="margin-right: 20rpx;" <view style="display: flex;font-weight: bold;font-size: 32rpx;"><u-icon style="margin-right: 20rpx;"
@ -227,7 +9,7 @@
</view> </view>
</view> </view>
<view class="wholeSale-header-search-wrap"> <view class="wholeSale-section" :style="{height:wrapHeight + 'rpx'}">
<view class="wholeSale-nav"> <view class="wholeSale-nav">
<!-- 搜索 --> <!-- 搜索 -->
<view @click="navTo(`/pages/columnGoods/goods_search/index?back=true&searchVal=${where.keyword}`)" <view @click="navTo(`/pages/columnGoods/goods_search/index?back=true&searchVal=${where.keyword}`)"
@ -258,6 +40,11 @@
</block> </block>
</view> </view>
</scroll-view> </scroll-view>
<view class="category-all" v-if="store_category.length > 0" @click="onAllCategory">
<view style="margin-bottom: 20rpx;">全部</view>
<u-icon name="list"></u-icon>
</view>
</view> </view>
<!-- 商品小分类 --> <!-- 商品小分类 -->
@ -274,14 +61,43 @@
</scroll-view> </scroll-view>
</view> </view>
</view> </view>
</view>
<!-- 内容 --> <!-- 内容 -->
<view class="wholeSale-con"> <view class="wholeSale-con" :style="{height:'calc(100vh - '+wrapHeight+'rpx - 142rpx )'}">
<scroll-view :scroll-y="true" @scrolltolower="onScrollBottom" @scroll="onScroll" style="height: 100%;"
@scrolltoupper="scrolltoupper" :refresher-threshold="0">
<view>
<!-- 流水瀑布 --> <!-- 流水瀑布 -->
<WaterfallsFlow :wfList='hostProduct' @itemTap="goDetail" :type="0" /> <WaterfallsFlow :wfList='hostProduct' @itemTap="goDetail" :type="0" />
<loadmore :type="isLoading"></loadmore> <loadmore :type="isLoading"></loadmore>
</view> </view>
</scroll-view>
</view>
<!-- 弹框大分类 -->
<uni-popup ref="popup" type="top" border-radius="10px 10px 0 0" z-index="1000">
<view class="popup-wrap">
<view style="height: var(--status-bar-height);"></view>
<view class="popup-wrap-title">分类</view>
<view class="popup-wrap-category">
<view class="popup-wrap-category-wrap">
<block v-for="(item,index) in store_category" :key="index">
<view class="popup-wrap-category-item"
:class="{'popup-wrap-category-item-active': index==cate_change}"
@click="changeCate(index)">
<u--image class="popup-wrap-category-item-img" width="108rpx" :src="item.pic"
height="108rpx" shape="circle">
<template v-slot:loading>
<u-loading-icon color="#999" size="15" />
</template>
</u--image>
<text class="popup-wrap-category-item-text">{{item.cate_name}}</text>
</view>
</block>
</view>
</view>
</view>
</uni-popup>
</view> </view>
</template> </template>
@ -313,7 +129,9 @@
keyword: '', keyword: '',
mer_type: 3, //1-, 2-, 3- mer_type: 3, //1-, 2-, 3-
sale_type: 1, //1-, 2- sale_type: 1, //1-, 2-
} },
wrapHeight: 300,
scrollTop: 0,
} }
}, },
onLoad(option) { onLoad(option) {
@ -321,15 +139,36 @@
this.getProductslist(true); this.getProductslist(true);
}, },
onReachBottom() { onReachBottom() {
this.getProductslist(); // this.getProductslist();
}, },
onPageScroll() { onPageScroll() {
uni.$emit('scroll'); uni.$emit('scroll');
}, },
onPullDownRefresh() { onPullDownRefresh() {
this.getProductslist(true); // this.getProductslist(true);
}, },
methods: { methods: {
onAllCategory() {
this.$refs.popup.open();
},
scrolltoupper() {
this.getProductslist(true);
},
onScrollBottom(e) {
this.getProductslist();
},
onScroll(e) {
if (this.scrollTop >= e.target.scrollTop) { //
this.wrapHeight = 300;
} else {
this.wrapHeight = 0;
}
this.scrollTop = e.target.scrollTop;
},
navTo(url) { navTo(url) {
uni.navigateTo({ uni.navigateTo({
url: url, url: url,
@ -346,9 +185,7 @@
navBack() { navBack() {
uni.navigateBack(); uni.navigateBack();
}, },
tabsChange(e) {
this.tabsCurr = e;
},
changeCate(e) { changeCate(e) {
this.cate_change = e; this.cate_change = e;
this.store_category_children = [{ this.store_category_children = [{
@ -361,6 +198,9 @@
this.cate_change_children = 0; this.cate_change_children = 0;
this.where.cate_pid = this.store_category[e].store_category_id; this.where.cate_pid = this.store_category[e].store_category_id;
this.getProductslist(true); this.getProductslist(true);
this.$refs.popup && this.$refs.popup.close();
this.$forceUpdate();
}, },
changeChildrenCate(e) { changeChildrenCate(e) {
this.cate_change_children = e; this.cate_change_children = e;
@ -369,6 +209,7 @@
.store_category_id; // , id .store_category_id; // , id
this.getProductslist(true); this.getProductslist(true);
}, },
getCategoryIndexList() { getCategoryIndexList() {
getCategoryIndexList({ getCategoryIndexList({
mer_type: this.where.mer_type, mer_type: this.where.mer_type,
@ -427,3 +268,215 @@
} }
} }
</script> </script>
<style lang="scss" scoped>
page {
background-color: #f8fafb !important;
}
.wholeSale {
.wholeSale-header {
position: sticky;
top: 0;
z-index: 90;
background-color: #40AE36;
}
.wholeSale-section {
position: sticky;
top: calc(82rpx + var(--status-bar-height));
padding: 0rpx 20rpx;
background-color: #fff;
transition: height .5s;
overflow: hidden;
margin-bottom: 20rpx;
padding-top: 20rpx;
z-index: 20;
.wholeSale-nav {
display: flex;
align-items: center;
margin-bottom: 40rpx;
.icon {
margin-right: 20rpx;
}
.search_content {
flex: 1;
height: 70rpx;
padding: 2px 2px 2px 21.05rpx;
border-radius: 80rpx;
background: #EDEFF2;
position: relative;
box-sizing: border-box;
.search_content_wrap {
width: 100%;
.icon-sousuo {
font-size: 26.32rpx;
font-weight: bold;
color: #c8c7c6;
margin-right: 17.54rpx;
}
input {
width: 80%;
}
}
.search_btn {
width: 106rpx;
height: 60rpx;
line-height: 60rpx;
pic: #40AE36;
border-radius: 100px;
font-size: 28rpx;
color: #fff;
}
}
}
.category {
position: relative;
width: 100%;
overflow: auto;
margin-bottom: 20rpx;
padding-right: 70rpx;
.category-wrap {
display: flex;
padding-bottom: 20rpx;
.category-item {
display: flex;
flex-direction: column;
justify-content: center;
align-items: center;
margin-right: 38rpx;
text {
margin-top: 16rpx;
font-size: 24rpx;
color: #666666;
white-space: nowrap;
}
.category-item-text {
width: 120rpx;
text-align: center;
overflow: hidden;
white-space: nowrap;
text-overflow: ellipsis;
}
}
.category-item-active {
position: relative;
.category-item-img {
border: 2px solid #40AE36;
border-radius: 50%;
}
text {
background-color: #40AE36;
color: #fff;
padding: 2rpx 10rpx 6rpx 10rpx;
border-radius: 50rpx;
}
}
}
.category-all {
position: absolute;
right: 0;
top: 50%;
transform: translateY(-50%);
height: 100%;
background-color: #f3f3f3;
z-index: 10;
display: flex;
justify-content: center;
align-items: center;
flex-direction: column;
font-size: 24rpx;
border-radius: 4rpx;
width: 70rpx;
color: #919191;
}
}
}
.popup-wrap {
background-color: #fff;
padding: 20rpx;
.popup-wrap-title {
font-size: 36rpx;
color: #333;
font-weight: bold;
margin-bottom: 20rpx;
}
.popup-wrap-category {
width: 100%;
.popup-wrap-category-wrap {
display: flex;
flex-wrap: wrap;
.popup-wrap-category-item {
display: flex;
flex-direction: column;
justify-content: center;
align-items: center;
margin: 0 20rpx 20rpx 0;
&:nth-child(5n) {
margin-right: 0;
}
text {
margin-top: 16rpx;
font-size: 24rpx;
color: #666666;
white-space: nowrap;
}
.popup-wrap-category-item-text {
width: 120rpx;
text-align: center;
overflow: hidden;
white-space: nowrap;
text-overflow: ellipsis;
}
}
.popup-wrap-category-item-active {
position: relative;
.popup-wrap-category-item-img {
border: 2px solid #40AE36;
border-radius: 50%;
}
text {
background-color: #40AE36;
color: #fff;
padding: 2rpx 10rpx 6rpx 10rpx;
border-radius: 50rpx;
}
}
}
}
}
.wholeSale-con {
padding-bottom: 30rpx;
margin: 0 20rpx;
}
}
</style>

View File

@ -41,7 +41,7 @@
</view> </view>
<view class='item' :class='orderStatus==4 ? "on": ""' @click="statusClick(4)"> <view class='item' :class='orderStatus==4 ? "on": ""' @click="statusClick(4)">
<view>退款/售后</view> <view>退款/售后</view>
<view class='num'>{{(sale_type==1?orderData.refund:orderData.mer_refund) || 0}}</view> <view class='num'>{{(sale_type==1?orderData.elseRefund:orderData.mer_elseRefund) || 0}}</view>
</view> </view>
</view> </view>
</view> </view>

View File

@ -19,7 +19,7 @@
</scroll-view> </scroll-view>
</view> </view>
<view class="wholeSale-header-search-wrap"> <view class="wholeSale-header-search-wrap" :style="{height:wrapHeight + 'rpx'}">
<u-subsection v-if="tabsCurr==2" :list="subList" @change="changeSub" :current="subCurr" <u-subsection v-if="tabsCurr==2" :list="subList" @change="changeSub" :current="subCurr"
mode="subsection" activeColor="#40ae36" fontSize="14" style="margin-bottom: 24rpx;"></u-subsection> mode="subsection" activeColor="#40ae36" fontSize="14" style="margin-bottom: 24rpx;"></u-subsection>
@ -38,7 +38,6 @@
</view> </view>
<!-- 商品大分类 --> <!-- 商品大分类 -->
<view class="category"> <view class="category">
<scroll-view scroll-x="true"> <scroll-view scroll-x="true">
<view class="category-wrap"> <view class="category-wrap">
@ -67,6 +66,10 @@
</block> </block>
</view> </view>
</scroll-view> </scroll-view>
<view class="category-all" v-if="store_category.length > 0" @click="onAllCategory">
<view style="margin-bottom: 20rpx;">全部</view>
<u-icon name="list"></u-icon>
</view>
</view> </view>
<!-- 商品小分类 --> <!-- 商品小分类 -->
@ -133,12 +136,14 @@
</view> </view>
</view> </view>
<!-- 内容 style="padding-top: calc(var(--status-bar-height) + 120rpx);" --> <!-- 内容 -->
<view class="wholeSale-con"> <view class="wholeSale-con"
:style="{height:'calc(100vh - '+wrapHeight+'rpx - 142rpx '+(isShowSmall?' - 48rpx':'')+')'}">
<scroll-view :scroll-y="true" @scrolltolower="onScrollBottom" @scroll="onScroll" style="height: 100%;"
@scrolltoupper="scrolltoupper" :refresher-threshold="0">
<!-- 流水瀑布 --> <!-- 流水瀑布 -->
<WaterfallsFlow v-if="subCurr!=1 || (subCurr==1 && tabsCurr!=2)" :wfList='hostProduct' @itemTap="goDetail" <WaterfallsFlow v-if="subCurr!=1 || (subCurr==1 && tabsCurr!=2)" :wfList='hostProduct'
:type="0" :sale_type="2" /> @itemTap="goDetail" :type="0" :sale_type="2" />
<!-- 列表 --> <!-- 列表 -->
<view class="goods_list" v-else> <view class="goods_list" v-else>
@ -177,7 +182,8 @@
<text> {{item.service_phone}}</text> <text> {{item.service_phone}}</text>
<u--image style="margin-left: 28rpx;" v-if="item.mer_take_time" :showLoading="true" <u--image style="margin-left: 28rpx;" v-if="item.mer_take_time" :showLoading="true"
src="/static/images/GXSC/SJ.png" width="33.85rpx" height="33.85rpx"></u--image> src="/static/images/GXSC/SJ.png" width="33.85rpx" height="33.85rpx"></u--image>
<text v-if="item.mer_take_time">{{item.mer_take_time[0]}}-{{item.mer_take_time[1]}}</text> <text
v-if="item.mer_take_time">{{item.mer_take_time[0]}}-{{item.mer_take_time[1]}}</text>
</view> </view>
<view class="content-two"> <view class="content-two">
<u--image :showLoading="true" src="/static/images/GXSC/DW.png" width="33.85rpx" <u--image :showLoading="true" src="/static/images/GXSC/DW.png" width="33.85rpx"
@ -188,14 +194,52 @@
</view> </view>
</view> </view>
<loadmore :type="isLoading" v-if="isLoading || hostProduct.length > 0" style="padding: 40rpx 0 150rpx; 0"> <loadmore :type="isLoading" v-if="isLoading || hostProduct.length > 0"
style="padding: 40rpx 0 150rpx; 0">
</loadmore> </loadmore>
<view class='pictrue' v-if="!isLoading && hostProduct.length == 0"> <view class='pictrue' v-if="!isLoading && hostProduct.length == 0">
<image :src="`${domain}/static/images/noCart.png`"></image> <image :src="`${domain}/static/images/noCart.png`"></image>
<view>暂无商品看点别的吧</view> <view>暂无商品看点别的吧</view>
</view> </view>
</scroll-view>
</view> </view>
<!-- 弹框大分类 -->
<uni-popup ref="popup" type="top" border-radius="10px 10px 0 0" z-index="1000">
<view class="popup-wrap">
<view style="height: var(--status-bar-height);"></view>
<view class="popup-wrap-title">分类</view>
<view class="popup-wrap-category">
<view class="popup-wrap-category-wrap">
<block v-for="(item,index) in store_category" :key="index">
<view class="popup-wrap-category-item"
:class="{'popup-wrap-category-item-active': index==cate_change}"
@click="changeCate(index)">
<block v-if="subCurr!=1 || (subCurr==1 && tabsCurr!=2)">
<u--image class="popup-wrap-category-item-img" width="108rpx" :src="item.pic"
height="108rpx" shape="circle">
<template v-slot:loading>
<u-loading-icon color="#999" size="15" />
</template>
</u--image>
<text class="popup-wrap-category-item-text">{{item.cate_name}}</text>
</block>
<block v-else>
<u--image class="popup-wrap-category-item-img" width="108rpx" :src="item.background"
height="108rpx" shape="circle">
<template v-slot:loading>
<u-loading-icon color="#999" size="15" />
</template>
</u--image>
<text class="popup-wrap-category-item-text">{{item.category_name}}</text>
</block>
</view>
</block>
</view>
</view>
</view>
</uni-popup>
<!--自定义底部tab栏--> <!--自定义底部tab栏-->
<customTab :newData="newData" :activeRouter="activeRouter"></customTab> <customTab :newData="newData" :activeRouter="activeRouter"></customTab>
</view> </view>
@ -276,6 +320,9 @@
bigTypeDomInfo: null, bigTypeDomInfo: null,
smallTypeDomInfo: null, smallTypeDomInfo: null,
categoryWrapHeight: 0, categoryWrapHeight: 0,
wrapHeight: 332,
isShowSmall: false,
scrollTop: 0,
} }
}, },
computed: { computed: {
@ -321,20 +368,49 @@
}) })
} }
}, },
onPullDownRefresh() { // onPullDownRefresh() {
// this.initData(true, true);
// },
// onReachBottom() {
// this.initData(false, true);
// },
watch: {
'where.cate_pid'(newVal, oldVal) {
if (newVal && !oldVal) {
this.wrapHeight = this.tabsCurr == 2 ? 400 : (332 + 48);
this.isShowSmall = true;
}
if (!newVal && oldVal) {
this.wrapHeight = this.tabsCurr == 2 ? 400 : 332;
this.isShowSmall = false;
}
}
},
methods: {
onAllCategory() {
this.$refs.popup.open();
},
scrolltoupper() {
this.initData(true, true); this.initData(true, true);
}, },
onReachBottom() {
onScrollBottom(e) {
this.initData(false, true); this.initData(false, true);
}, },
onReady() {
// dom onScroll(e) {
// this.$util.getDom(this, '.category', (res) => { if (this.scrollTop >= e.target.scrollTop) { //
// this.bigTypeDomInfo = res; this.wrapHeight = this.tabsCurr == 2 ? 400 : 332;
// this.categoryWrapHeight = res.height; if (this.where.cate_pid) this.wrapHeight = this.wrapHeight + 48;
// }); } else {
this.wrapHeight = 0;
}
this.scrollTop = e.target.scrollTop;
}, },
methods: {
initData(re = false, stop = false) { initData(re = false, stop = false) {
if (!stop) this.getStoreCategory(); if (!stop) this.getStoreCategory();
if (this.tabsCurr == 2 && this.subCurr == 1) this.storeMerchantList(re, stop); if (this.tabsCurr == 2 && this.subCurr == 1) this.storeMerchantList(re, stop);
@ -405,6 +481,7 @@
this.cate_change = 0; this.cate_change = 0;
this.cate_change_children = 0; this.cate_change_children = 0;
if (this.tabsCurr != 2 || (this.tabsCurr == 2 && this.subCurr != 1)) this.where.mer_type = e; if (this.tabsCurr != 2 || (this.tabsCurr == 2 && this.subCurr != 1)) this.where.mer_type = e;
this.wrapHeight = this.tabsCurr == 2 ? 400 : this.where.cate_pid ? (332 + 48) : 332;
this.initData(true); this.initData(true);
}, },
changeCate(e) { changeCate(e) {
@ -429,10 +506,8 @@
} }
this.getProductslist(true); this.getProductslist(true);
// // popup
// this.$util.getDom(this, '.cate', (res) => { this.$refs.popup && this.$refs.popup.close();
// if (res) this.smallTypeDomInfo = res.data;
// })
}, },
changeChildrenCate(e) { changeChildrenCate(e) {
this.cate_change_children = e; this.cate_change_children = e;
@ -551,7 +626,7 @@
.wholeSale-header { .wholeSale-header {
position: sticky; position: sticky;
top: 0; top: 0;
z-index: 100; z-index: 90;
margin-bottom: 20rpx; margin-bottom: 20rpx;
.wholeSale-header-wrap { .wholeSale-header-wrap {
@ -559,6 +634,10 @@
} }
.wholeSale-header-search-wrap { .wholeSale-header-search-wrap {
position: sticky;
top: calc(82rpx + var(--status-bar-height));
transition: height .5s;
overflow: hidden;
padding: 30rpx 20rpx 0; padding: 30rpx 20rpx 0;
background-color: #fff; background-color: #fff;
} }
@ -635,15 +714,11 @@
} }
} }
.category_wrap {
overflow: hidden;
// transition: height 1s;
}
.category { .category {
width: 100%; width: 100%;
overflow: auto; overflow: auto;
margin-bottom: 20rpx; position: relative;
padding-right: 70rpx;
.category-wrap { .category-wrap {
display: flex; display: flex;
@ -689,6 +764,24 @@
} }
} }
} }
.category-all {
position: absolute;
right: 0;
top: 50%;
transform: translateY(-50%);
height: 100%;
background-color: #f3f3f3;
z-index: 10;
display: flex;
justify-content: center;
align-items: center;
flex-direction: column;
font-size: 24rpx;
border-radius: 4rpx;
width: 70rpx;
color: #919191;
}
} }
.cate { .cate {
@ -719,6 +812,70 @@
} }
} }
.popup-wrap {
background-color: #fff;
padding: 20rpx;
.popup-wrap-title {
font-size: 36rpx;
color: #333;
font-weight: bold;
margin-bottom: 20rpx;
}
.popup-wrap-category {
width: 100%;
.popup-wrap-category-wrap {
display: flex;
flex-wrap: wrap;
.popup-wrap-category-item {
display: flex;
flex-direction: column;
justify-content: center;
align-items: center;
margin: 0 20rpx 20rpx 0;
&:nth-child(5n) {
margin-right: 0;
}
text {
margin-top: 16rpx;
font-size: 24rpx;
color: #666666;
white-space: nowrap;
}
.popup-wrap-category-item-text {
width: 120rpx;
text-align: center;
overflow: hidden;
white-space: nowrap;
text-overflow: ellipsis;
}
}
.popup-wrap-category-item-active {
position: relative;
.popup-wrap-category-item-img {
border: 2px solid #40AE36;
border-radius: 50%;
}
text {
background-color: #40AE36;
color: #fff;
padding: 2rpx 10rpx 6rpx 10rpx;
border-radius: 50rpx;
}
}
}
}
}
.comprehensive { .comprehensive {
display: flex; display: flex;
justify-content: space-between; justify-content: space-between;
@ -772,7 +929,6 @@
.goods_list { .goods_list {
.goods { .goods {
// width: 690rpx;
height: 200rpx; height: 200rpx;
margin: 20rpx auto; margin: 20rpx auto;
margin-top: 0; margin-top: 0;

BIN
static/images/loading.gif Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 17 KiB

29
utils/mixin.js Normal file
View File

@ -0,0 +1,29 @@
const mixins = {
data() {
return {
wrapHeight: 'auto',
clientY: 0,
maxHeight: 0,
}
},
methods: {
// 移动
onTouchMove(e) {
console.log(e);
const moveDistance = e.changedTouches[0].clientY - this.clientY;
if (moveDistance > 5) {
this.wrapHeight = '352rpx';
} else {
this.wrapHeight = 0;
}
},
// 开始触摸屏幕
onTouchStart(e) {
this.clientY = e.changedTouches[0].clientY;
},
}
}
export default mixins;