From 63e00179d4a67f5b3030baa1280846abaa979432 Mon Sep 17 00:00:00 2001
From: xuxueyang <xuxy@fengyuntec.com>
Date: 星期一, 12 八月 2024 15:25:58 +0800
Subject: [PATCH] update 更新供应商统计和商家首页的分类样式、供应商的分类等级过滤
---
sub_pages/supplier/flower-manage/flower-add.vue | 124 +++++++++++----
sub_pages/customer/shop/shop-trade.vue | 331 +++++++++++++++++++++++++++++++++++++++++
manifest.json | 2
pages/home/supplier-home.vue | 6
sub_pages/customer/shop/shop.vue | 2
pages/home/components/home-category.vue | 10 +
6 files changed, 436 insertions(+), 39 deletions(-)
diff --git a/manifest.json b/manifest.json
index 782394c..2848179 100644
--- a/manifest.json
+++ b/manifest.json
@@ -49,7 +49,7 @@
"quickapp" : {},
/* 快应用特有相关 */
"mp-weixin" : {
- "appid" : "wx6d0ecc4e18710458",
+ "appid" : "wx1441324401626290",
"setting" : {
"urlCheck" : false,
"es6" : true,
diff --git a/pages/home/components/home-category.vue b/pages/home/components/home-category.vue
index a162895..8ddb38c 100644
--- a/pages/home/components/home-category.vue
+++ b/pages/home/components/home-category.vue
@@ -1,8 +1,8 @@
<template>
<view class="home-category">
<view class="flex">
- <view class="t1">{{today}}(今日)第一场交易中</view>
- <view class="t2">当前在售</view>
+ <view class="t1">{{today}}(今日)交易中</view>
+ <view class="t2">当前在{{tj||0}}售</view>
<!-- 加了/api/customer/flower/up/stock -->
</view>
<view class="m-t-12 flex">
@@ -30,6 +30,11 @@
})
}
})
+ this.$http.request('get', '/api/customer/flower/up/stock', {}).then(res => {
+ var data = res.data
+ this.tj = data || 0
+ })
+
},
methods: {
toList(item) {
@@ -45,6 +50,7 @@
return {
list: [],
today: '',
+ tj: 0
};
}
diff --git a/pages/home/supplier-home.vue b/pages/home/supplier-home.vue
index 3faafc4..97c9d4b 100644
--- a/pages/home/supplier-home.vue
+++ b/pages/home/supplier-home.vue
@@ -53,7 +53,7 @@
<view class="flex tj-container" v-if="selftype==='supplier'">
<view class="tj-each">
<view class="num">
- {{tj.dealCountLastMonth||0}}单
+ {{tj.dealCountLastMonth||0}}扎
</view>
<view class="name">
上月成交
@@ -61,7 +61,7 @@
</view>
<view class="tj-each">
<view class="num">
- {{tj.dealCountToday||0}}单
+ {{tj.dealCountToday||0}}扎
</view>
<view class="name">
今日成交
@@ -69,7 +69,7 @@
</view>
<view class="tj-each">
<view class="num">
- {{tj.dealCountDay30||0}}单
+ {{tj.dealCountDay30||0}}扎
</view>
<view class="name">
近30天成交
diff --git a/sub_pages/customer/shop/shop-trade.vue b/sub_pages/customer/shop/shop-trade.vue
new file mode 100644
index 0000000..dbd7a58
--- /dev/null
+++ b/sub_pages/customer/shop/shop-trade.vue
@@ -0,0 +1,331 @@
+<template>
+ <view class="container-trade">
+ <view class="canteen-items">
+ <view v-if="(!list||list.length==0)&&true" style="width: 100%;min-height: 200rpx;">
+
+ </view>
+ <no-data v-if="(!list||list.length==0)&&true" style="width: 100%;margin-top: 220rpx;"></no-data>
+ <view class="" style="display: flex;flex-wrap: inherit;" v-else>
+ <view class="type-list">
+ <view v-for="(item,index) of list" @click="changeType(item)"
+ :class="[query.categoryId===item.id?'current':'']" :key="index" class="p10 flex type-item">
+ {{item.name || '-'}}
+ </view>
+ </view>
+ <view class="canteen-item-container">
+
+ <view v-for="(item,index) of listFilter" :key="item.id" class="canteen-item list flex"
+ @click.stop="toDetailList(item)">
+ <view class="m-r-10">
+ <image :src="item.imageUrl" :class="[!item.stock?'':'']" mode="scaleToFill" class="cover"
+ :lazy-load="true">
+ </image>
+ </view>
+ <view class="cateen_infos list">
+ <view class="title">{{item.name}}</view>
+ <view class="price">¥{{item.priceLow || 0}}-{{item.priceHigh||0}}</view>
+ <view class="desc">在售 {{item.stock||'0'}} 扎</view>
+ </view>
+
+ </view>
+
+
+ </view>
+ </view>
+
+ </view>
+
+
+
+
+
+ <uni-popup ref="popup_param" type="bottom">
+ <view class="component-popup_input_all" v-if="currentCategory&¤tCategory.params">
+ <view class="text-center m-b-40" style="font-size: 48rpx;font-weight: 600;">商品参数设置</view>
+ <!-- 输入框-->
+ <view v-for="(item,i) in currentCategory.params" :key="i" class="m-t-20">
+ <view class="title topic-font" style="font-size: 40rpx;font-weight: 600;">{{item.name}}</view>
+ <view class="m-t-12 flex value-items">
+ <view class="value-item" @click="updateValue(item,each)" :class="[item.value===each?'cur':'']"
+ v-for="(each, j) in item.values" :key="j">
+ {{each || '-'}}
+ </view>
+ </view>
+ </view>
+ <view class="button-space"></view>
+ <view>
+ <view class="button-green button-white" @click="closeParamPop">关闭</view>
+ <view class="button-green" @click="updateParamsAndSearch">查询</view>
+ </view>
+ </view>
+ </uni-popup>
+ </view>
+</template>
+
+<script>
+ import {
+ mapState
+ } from 'vuex'
+ export default {
+ props: {
+ catgoryTree: [],
+ supplierId: '',
+ },
+ data() {
+ return {
+ list: [],
+ showpop: false,
+ query: {
+ name: '',
+ categoryId: '',
+ },
+ currentCategory: {},
+ type: 'category', //supplier
+
+
+ }
+ },
+
+
+ methods: {
+ changeSearchType() {
+ if (this.type == 'category') {
+ this.type = 'supplier'
+ this.query.name = ''
+ } else {
+ this.type = 'category'
+ this.query.name = ''
+ }
+ },
+ refInit(catgoryTree) {
+ this.list = catgoryTree || []
+ if (this.list.length > 0) {
+ this.query.categoryId = this.list[0].id || ''
+ this.currentCategory = this.list[0] || {}
+ }
+ },
+ async updateParamsAndSearch() {
+ //todo 设置参数并查询
+ await this.refreshList()
+ this.$refs.popup_param.close()
+ },
+ openParamPop() {
+ //todo 同时设置查询参数为空吧
+ this.$refs.popup_param.open()
+ },
+ closeParamPop() {
+ this.$refs.popup_param.close()
+ },
+ buttonSearchFlow() {
+
+ if (this.type == 'category') {
+ //根据分类名称查询
+ this.$message.showLoading()
+ this.$http.request('get', '/api/customer/flower/category/tree', {
+ params: {
+ name: this.query.name || ''
+ }
+ }).then(res => {
+ var data = res.data
+ this.list = data || []
+ if (this.list.length > 0) {
+ this.query.categoryId = this.list[0].id || ''
+ this.currentCategory = this.list[0] || {}
+ } else {
+ this.query.categoryId = ''
+ this.currentCategory = {}
+ }
+ }).finally(() => {
+ this.$message.hideLoading()
+ })
+ } else {
+ uni.navigateTo({
+ url: '/sub_pages/customer/trade/list?' + 'supplierName=' + this.query.name
+ })
+
+ }
+ },
+ toDetailList(item) {
+ //去商品列表页面
+ console.log('toDetailList', this.supplierId)
+ uni.navigateTo({
+ url: `/sub_pages/customer/trade/list?categoryId=${item.id}&supplierId=${this.supplierId||''}`
+ })
+ },
+ changeType(item) {
+ this.query.categoryId = item.id || ''
+ this.currentCategory = item
+ },
+
+
+ async submitGood() {
+ var values = []
+ for (var item of this.list) {
+ if (item.shopnum > 0) {
+ values.push({
+ id: item.id,
+ num: item.shopnum
+ })
+ }
+ }
+ }
+ },
+ computed: {
+ ...mapState({
+ address: state => {
+ return state.defaultaddress || {}
+ },
+ }),
+ listFilter() {
+ if (this.query.categoryId) {
+ var arr = []
+ if (this.list && this.list.length > 0) {
+ for (var item of this.list) {
+ if (item.id === this.query.categoryId || item.id === this.query.categoryId) {
+ // arr.push(item)
+ return item.children || []
+ }
+ }
+ }
+ return arr
+ } else {
+ return []
+ }
+
+ },
+ }
+ }
+</script>
+
+<style lang="scss" scoped>
+ .container-trade {
+ background-color: #FFFFFF;
+ padding-top: 20rpx;
+
+ .search-container {
+ margin: 0rpx 30rpx 20rpx 30rpx;
+ }
+
+
+
+ .type-list {
+ max-width: 178rpx;
+ width: 178rpx;
+ min-width: 178rpx;
+ background: #EEF7F5;
+ border-radius: 8rpx;
+ min-height: calc(100vh - 500rpx);
+ max-height: calc(100vh - 500rpx);
+ overflow-y: scroll;
+ margin-right: 16rpx;
+
+ .type-item {
+ text-align: center;
+ font-weight: 400;
+ font-size: 28rpx;
+ color: #000000;
+ display: block;
+ line-height: 88rpx;
+ // padding-left: 30rpx;
+ // padding-right: 30rpx;
+ }
+
+ .type-item.current {
+ font-weight: 600;
+ font-size: 28rpx;
+ color: #04BA97;
+ }
+ }
+
+ .title-before-blue.green {
+ padding-left: 30rpx;
+ padding-bottom: 0rpx;
+ }
+
+ .title-before-blue:before {
+ color: #04BA97;
+ font-weight: 600;
+ min-width: 14rpx;
+ background: #04BA97;
+ border-radius: 8rpx;
+ display: inline-block;
+ }
+
+
+ .canteen-items {
+ // margin-left: 30rpx;
+
+ .canteen-item {
+ margin: 0 auto;
+ // width: 164rpx;
+ // width: 690rpx;
+ // max-width: 690rpx;
+ // min-height: 266rpx;
+ background: #FFFFFF;
+ margin-bottom: 10rpx;
+ // max-width: 164rpx;
+
+ .cover {
+ width: 164rpx;
+ height: 164rpx;
+ background-size: 100% 100%;
+ border-radius: 8rpx;
+ border: 2rpx solid #f8f8f8;
+ }
+
+ .title {
+ font-weight: 500;
+ font-size: 28rpx;
+ color: #000000;
+ line-height: 40rpx;
+ // min-height: 80rpx;
+ text-align: center;
+ }
+
+ .desc {
+ margin-top: 8rpx;
+ font-weight: 400;
+ font-size: 24rpx;
+ color: #6E9F66;
+ line-height: 34rpx;
+ height: 34rpx;
+ background-color: rgba(202, 229, 214, 0.57);
+ border-radius: 4rpx;
+ text-align: center;
+
+ }
+
+ .price {
+ font-weight: 400;
+ font-size: 24rpx;
+ color: #CF0000;
+ line-height: 34rpx;
+ text-align: left;
+ }
+
+
+
+
+
+ }
+
+ .canteen-item-container {
+ width: 100%;
+ min-height: 300rpx;
+ max-height: calc(100vh - 500rpx);
+ overflow-y: scroll;
+ }
+
+ }
+
+ .canteen-footer-shop {
+ position: absolute;
+ position: fixed;
+ left: 30rpx;
+ bottom: 30rpx;
+ }
+
+
+
+ }
+</style>
\ No newline at end of file
diff --git a/sub_pages/customer/shop/shop.vue b/sub_pages/customer/shop/shop.vue
index c83a059..d653f30 100644
--- a/sub_pages/customer/shop/shop.vue
+++ b/sub_pages/customer/shop/shop.vue
@@ -218,7 +218,7 @@
</template>
<script>
- import trade from '@/sub_pages/customer/trade/trade.vue'
+ import trade from './shop-trade.vue'
import http from "../../../plugins/http";
export default {
diff --git a/sub_pages/supplier/flower-manage/flower-add.vue b/sub_pages/supplier/flower-manage/flower-add.vue
index 312d21f..a501662 100644
--- a/sub_pages/supplier/flower-manage/flower-add.vue
+++ b/sub_pages/supplier/flower-manage/flower-add.vue
@@ -98,7 +98,11 @@
<view class="form-item before-line">
<view class="label required">商品等级</view>
<view class="m-l-a m-r-0 flex " :class="[!dto.level?'desc-gray':'']" @click="()=>{
- show_select_level=true
+ if(dto.category){
+ show_select_level=true
+ }else{
+ $message.showToast('请选择分类')
+ }
}">
<view>{{dto.levelStr||dto.level || '请选择'}}</view>
<u-icon class="m-l-a" name="arrow-right"></u-icon>
@@ -158,7 +162,7 @@
</view>
</view>
<view v-if="dto.video">
- <video :src="dto.video" :auto-pause-if-navigate="true" style="display: block;margin: 0 auto;"></video>
+ <video :src="dto.video" :auto-pause-if-navigate="true" style="display: block;margin: 0 auto;"></video>
</view>
<view class="form-item bottom-border-no">
<view class="label">商品描述</view>
@@ -264,6 +268,7 @@
columns_categorys_dict: {},
columns_categorys_search: '',
columns_levels: [],
+ columns_levels_all: [],
// columns_params: [], //弹窗选择具体的值
// cancel: {
// color: '#999',
@@ -303,6 +308,7 @@
}
}).then(res => {
var data = res.data
+ this.columns_levels_all = data || []
this.columns_levels = [data || []]
// this.columns_levels[0].unshift({
// label: '全部',
@@ -337,17 +343,17 @@
},
methods: {
- updateValue(item, value) {
-
- if (item.name == '优点' || item.name === '缺点') {
- if (item.value.indexOf(value) < 0) {
- item.value.push(value)
- } else {
- item.value.splice(item.value.indexOf(value), 1)
- }
- } else {
- //单选
- item.value = [value]
+ updateValue(item, value) {
+
+ if (item.name == '优点' || item.name === '缺点') {
+ if (item.value.indexOf(value) < 0) {
+ item.value.push(value)
+ } else {
+ item.value.splice(item.value.indexOf(value), 1)
+ }
+ } else {
+ //单选
+ item.value = [value]
}
this.$forceUpdate()
@@ -365,14 +371,42 @@
var currentnode = this.columns_categorys_dict['@' + e.detail.value[e.detail.value.length - 1]
.value]
let tmpe = e
+
+
if (this.dto.category && this.dto.category !== currentnode.id) {
this.$message.confirm('修改分类将清空商品参数,确定修改吗').then(async res => {
// console.log('currentnode',currentnode,this.columns_categorys_dict,'@'+e.detail.value[e.detail.value.length - 1].value)
this.dto.categoryStr = currentnode.name
this.dto.category = currentnode.id
+
this.dto.name = currentnode.name
this.dto.unit = currentnode.unit
this.dto.color = currentnode.color
+ //设置等级
+ // console.log('tmpe', currentnode)
+ if (currentnode.levelLimit) {
+
+ this.columns_levels = []
+ var tarr = []
+ var filterLevel = currentnode.levelLimit.split(",")
+ for (var t of this.columns_levels_all) {
+ if (filterLevel.indexOf(t.value) >= 0) {
+ tarr.push(t)
+ }
+ }
+ this.columns_levels = [tarr]
+ //如果不包含等级需要清除
+ if (this.dto.level) {
+ if (filterLevel.indexOf(this.dto.level) >= 0) {
+
+ } else {
+ this.dto.level = ''
+ this.dto.levelStr = ''
+ }
+ }
+ } else {
+ this.columns_levels = [this.columns_levels_all]
+ }
//递归获取category的其他数据,用来做map?
this.$message.showLoading()
await this.refresh_category()
@@ -382,6 +416,31 @@
this.$refs.picker_category.onchange(tmpe.detail.value)
})
} else {
+ //设置等级
+ // console.log('tmpe', currentnode)
+ if (currentnode.levelLimit) {
+
+ this.columns_levels = []
+ var tarr = []
+ var filterLevel = currentnode.levelLimit.split(",")
+ for (var t of this.columns_levels_all) {
+ if (filterLevel.indexOf(t.value) >= 0) {
+ tarr.push(t)
+ }
+ }
+ this.columns_levels = [tarr]
+ //如果不包含等级需要清除
+ if (this.dto.level) {
+ if (filterLevel.indexOf(this.dto.level) >= 0) {
+
+ } else {
+ this.dto.level = ''
+ this.dto.levelStr = ''
+ }
+ }
+ } else {
+ this.columns_levels = [this.columns_levels_all]
+ }
this.dto.categoryStr = currentnode.name
this.dto.category = currentnode.id
this.dto.name = currentnode.name
@@ -511,9 +570,10 @@
} else {
k.value = k.value.split(',') || []
}
- }
+ }
// console.log('init params',this.dto.params)
}
+
}
},
@@ -540,17 +600,17 @@
// // console.log('this.dto', this.dto)
if (!this.dto.bannerList) {
this.dto.bannerList = []
- }
- if(this.dto.params){
- for (var k of this.dto.params) {
- if (!k.value) {
- k.value = []
- } else {
- k.value = k.value.split(',') || []
- }
- }
- }
-
+ }
+ if (this.dto.params) {
+ for (var k of this.dto.params) {
+ if (!k.value) {
+ k.value = []
+ } else {
+ k.value = k.value.split(',') || []
+ }
+ }
+ }
+
// if (this.dto.category) {
// await this.refresh_category()
// }
@@ -595,8 +655,8 @@
this.$message.showToast(`${field.name}信息未填写`)
return
}
- }
-
+ }
+
if (this.dto.params.length < 1) {
this.$message.showToast('商品参数详情未设置')
return
@@ -625,11 +685,11 @@
// this.$message.showToast('1')
// return
- var dto = JSON.parse(JSON.stringify(this.dto))
- if(dto.params){
- for(var k of dto.params){
- k.value = k.value.join(",")
- }
+ var dto = JSON.parse(JSON.stringify(this.dto))
+ if (dto.params) {
+ for (var k of dto.params) {
+ k.value = k.value.join(",")
+ }
}
this.$message.showLoading()
const re = await this.$http.request('post', `/api/supplier/flower/list/${this.id?'edit':'new'}`, {
--
Gitblit v1.9.3