java-mall-app/seller/product/pool.vue

522 lines
12 KiB
Vue
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<template>
<view class="page">
<view class="sstouch-main-layout">
<view class="top">
<view right-icon="scan" style="width: 80%;float:left;;padding:10rpx 20rpx;">
<view class="input-view" style="width: 100%;">
<input style="font-size:26rpx;" class="input" type="text" :value="search_name" :placeholder="__('请输入商品标题进行搜索')" @input="inputSearch">
<image style="width:30rpx;height:30rpx;float:left;margin:12rpx auto;z-index:9" src="/static/images/false.png" mode="aspectFill" @click="gocancel" />
</view>
</view>
<image style="width:50rpx;height:50rpx;float:left;padding:26rpx 0;" src="/static/images/seach.png" mode="aspectFill" @click="goSearch" />
</view>
<view class="m-navbar">
<scroll-view class="scroll-view_S" scroll-x >
<block >
<view :class="(parent_id == 0 ?'m-navbar-mu':'m-navbar-item')" data-id="0" @click="all">
{{__('全部')}}
</view>
</block>
<block v-for="(val,index) in product_category" :key="index" >
<view :class="(parent_id ==val.category_id ?'m-navbar-mu':'m-navbar-item')" :data-id="val.category_id" @click="setparentcategoryid">
{{val.category_name}}
</view>
</block>
</scroll-view>
</view>
<view class="m-navbar" style="margin-top:4rpx;">
<scroll-view class="scroll-view_S" scroll-x >
<block v-for="(category,key) in detail" :key="key" >
<view :class="(category_id ==category.category_id ?'m-navbar-mu':'m-navbar-item')" :data-id="category.category_id" @click="setcategoryid">
{{category.category_name}}
</view>
</block>
</scroll-view>
</view>
</view>
<scroll-view v-if="(productlist.length>0)" scroll-y="true" class="m-orderlist" @scrolltolower="scrollbottom">
<view class="sstouch-order-list" >
<view class="ul" id="order-list" v-for="(items, i) in productlist" :key="i">
<view class="sstouch-order-item">
<view class="sstouch-order-item-con">
<view class="goods-block">
<view class="goods-pic">
<img class="img" :src="items.product_image" style="border:solid 1px #ccc;padding:1px;"></view>
<view class="goods-info" style="padding-left:20rpx;">
<view class="goods-name">{{items.product_name}}</view>
<view class="goods-type">{{items.product_market_price}}<br class="br">{{__('店铺')}}{{items.store_name}}</view>
</view>
<view class="goods-subtotal" style="top:80rpx;width:180rpx;">
<navigator class="hide" url="javascript:void(0)" :item_id="items.product_id">{{__('编辑')}}</navigator>
<block v-if="(items.product_is_dist == 1)">
<view class="btn delete-goods">{{__('已经分销')}}
</view>
</block>
<block v-else>
<view class="btn delete-goods" style="color:#fff !important;background-color: #1A1A1A;margin-bottom: 10px;" :data-product_id="items.product_id" @click="AddDistProduct">{{__('加入商品库')}}
</view>
</block>
</view>
</view>
</view>
</view>
</view>
<view class="m-loading-box" style="padding-top:100rpx;">
<block v-if="(ispage)">
<view class="u-loadmore">
<label class="u-loading"></label>
<text class="u-loadmore-tips">{{__('正在加载')}}</text>
</view>
<view>
<text></text>
</view>
</block>
<block v-else>
<view class="u-loadmore u-loadmore-line">
<text class="u-loadmore-tips">{{__('没有更多数据啦!')}}</text>
</view>
</block>
</view>
</view>
</scroll-view>
<view redirect="true" class="m-nullpage" v-else>
<view class="m-nullpage-middle">
<label class="iconfont icon-sousuo-sousuo"></label>
<view class="m-null-tip">
<text>暂无数据</text>
</view>
</view>
</view>
</view>
</template>
<script>
import {
mapState,
mapMutations
} from 'vuex'
export default {
data() {
return {
isdata: false,
tapindex: 1,
page: 1,
rows: 100,
ispage: true,
flag: true,
type: 0,
formId: "",
productlist: [],
imgLogo: "",
show: false,
Info: "",
sord: 'desc',
bannerShow:false,
iscancel:0,
search_name:'',
product_verify_id: 3001,
product_state_id: 1001,
product_category: [],
category_id:0,
parent_id:0,
leaf_items:[],
curIndex:0,
detail: [],
product_items: [],
}
},
computed: mapState(['Config', 'StateCode', 'notice', 'plantformInfo', 'shopInfo', 'userInfo', 'hasLogin']),
onLoad: function(options) {
var that = this
uni.setNavigationBarTitle({
title:this.__('商品管理')
});
this.setData({
page: 1,
rows: 100,
productlist: [],
type: options.type ? options.type : 0,
product_state_id:options.type ? options.type : 1001
});
var t = this;
this.notice.addNotification("RefreshMessage", t.RefreshMessage, t);
that.$.request({
url: that.Config.URL.product.category,
loading: false,
ajaxCache: {
timeout: that.Config.CACHE_EXPIRE
},
success(data) {
that.setData({
product_category: data.items,
parent_id: data.items[that.curIndex].category_id
})
that.loadCategory(true)
}
});
},
methods: {
...mapMutations(['login', 'logout', 'getPlantformInfo', 'forceUserInfo', 'getUserInfo']),
getProductlist: function() {
var that = this;
var params = {
product_verify_id: that.product_verify_id,
product_state_id: that.product_state_id,
product_fx_enable: 1,
store_type: 2,
rows: that.rows,
page: that.page,
sidx:'product_order',
sord:that.sord,
product_name:that.search_name,
category_id: that.category_id,
};
that.$.request({
url: this.Config.URL.seller.product_pool,
data: params,
success: function(data, status, msg, code) {
if (200 == status && data.items.length > 0) {
if (data.page >= data.total) {
that.setData({
flag: false,
ispage: false,
productlist: that.productlist.concat(data.items)
})
} else {
that.setData({
flag: true,
ispage: true,
productlist: that.productlist.concat(data.items)
})
}
that.setData({
isdata: true
})
} else {
that.setData({
flag: false,
ispage: false,
isdata: false
})
}
}
});
},
setparentcategoryid: function(e){
var that = this
that.setData({
parent_id:e.currentTarget.dataset.id
})
that.loadCategory()
},
all: function() {
this.loadCategory(true)
},
loadCategory(t) {
var that = this;
that.$.request({
url: that.Config.URL.product.category,
data: {
category_id: that.parent_id,
recursive: 1
},
ajaxCache: {
timeout: that.Config.CACHE_EXPIRE
},
success(data) {
var category = []
for(var i=0;i < data.items.length; i++)
{
category = category.concat(data.items[i].sub)
}
if (category.length == 0)
{
category = data.items;
}
that.setData({
detail: category,
category_id: t ? 0 : category[0].category_id,
parent_id:t ? 0 : that.parent_id,
page: 1,
productlist: [],
ispage: true,
flag: true,
type: 0,
})
that.getProductlist()
}
});
},
inputSearch: function(e){
this.setData({
search_name:e.detail.value
})
},
gocancel: function(e){
this.setData({
search_name:''
})
},
goSearch: function(e){
this.setData({
page: 1,
rows: 100,
productlist: [],
ispage: true,
flag: true,
type: 0,
}), this.getProductlist()
},
setcategoryid: function(e){
this.setData({
category_id:e.currentTarget.dataset.id,
page: 1,
product_name:'',
productlist:[]
})
this.getProductlist()
},
AddDistProduct: function(e){
var that = this;
var params = {
product_id: e.target.dataset.product_id,
product_is_dist: 1
};
that.$.request({
url: that.Config.URL.seller.add_DistProduct,
data: params,
success: function(data, status, msg, code) {
if(status == 200){
that.$.alert(that.__("分销成功!"), function() {
setTimeout(function () {
that.setData({
page: 1,
rows: 100,
productlist: [],
ispage: true,
flag: true,
type: 0,
})
that.getProductlist()
}, 1500)
})
}
}
})
},
scrollbottom: function() {
if (this.flag) {
var that = this;
that.setData({
flag: false
});
clearTimeout(t);
var t = setTimeout(function() {
that.setData({
state_type: that.type,
flag: false,
page: parseInt(that.page) + 1,
rows: that.rows
});
that.getProductlist()
}, 1000)
}
},
}
}
</script>
<style lang="scss">
@import "../../styles/base.scss";
@import "../../styles/sstouch_member.scss";
@import "../../styles/sstouch_common.scss";
@import "../../styles/_variables";
.input-view {
width: 100%;
display: flex;
background-color: #FFFFFF;
height: 30px;
flex-wrap: nowrap;
margin: 7px 0;
line-height: 30px;
// border:2rpx solid #ebebe7;
border-radius:15rpx;
}
.input-view .input {
height: 30px;
background-color: #FFFFFF;
border-radius: 15px;
line-height: 30px;
width: 80%;
border: 0; // 去除未选中状态边框
outline: none; // 去除选中状态边框
background-color: rgba(0, 0, 0, 0);// 透明背景
padding:0 20rpx;
}
input::placeholder{
width:357rpx;
height:25rpx;
font-size:26rpx;
font-family:Alibaba PuHuiTi;
font-weight:400;
color:#6DA62F;
}
.sstouch-main-layout{
position: fixed;
width: 100%;
top: var(--window-top);
z-index: 2;
}
.m-tab {
width: 100%;
}
.m-navbar-item {
padding: 20rpx 0;
font-size: 24rpx;
}
.m-orderlist {
position: absolute;
// top: calc(var(--status-bar-height) + 208rpx);
padding-top: 300rpx;
box-sizing: border-box;
width: 100%;
height: 100%;
}
.m-navbar-item:after {
border: none;
}
.m-navbar-item.m-navbar-item-on {
background-color: #fff;
color: $default-skin-bg;
}
.m-navbar-item.m-navbar-item-on::before {
content: " ";
position: absolute;
left: 0;
bottom: 0;
right: 0;
height:
6rpx;
border-bottom: 6rpx solid $default-skin-bg;
color: #CCCCCC;
-webkit-transform-origin: 0 100%;
transform-origin: 0 100%;
-webkit-transform: scaleY(0.5);
transform: scaleY(0.5);
z-index: 3;
}
.img {
width:140rpx;
height:140rpx;
}
.u-loadmore {
width:100%
}
.m-nullpage {
padding-top:100rpx;
}
.top {
width:100%;
height:82rpx;
background:#f5f5f5;
overflow:hidden;
z-index:99;
line-height:82rpx;
padding:20rpx 0;
}
.m-product-name {
height:100rpx;
}
.m-navbar-item {
// width:228rpx;
padding: 20rpx 30rpx;
font-size: 24rpx;
display: inline-block;
}
.m-navbar {
height:76rpx;
position: relative;
// margin-top:240rpx;
z-index:99;
}
.scroll-view_S{
white-space: nowrap;
}
.m-navbar-mu {
padding: 20rpx 30rpx;
font-size: 24rpx;
display: inline-block;
color:#DB384C;
}
.m-navbar:after {
border-bottom: 0px solid #CCCCCC;
}
.img {
width:122rpx;
height:122rpx;
}
</style>