<template>
|
<view class="flow-manage">
|
<view class="top-buttons" v-if="type==='all'">
|
<view @click.stop="clickButton('add')" class="button button-add"></view>
|
<view @click.stop="clickButton('in')" class="button button-search-in"></view>
|
<view @click.stop="clickButton('unpass')" class="button button-search-unpass"></view>
|
<view @click.stop="clickButton('inpass')" class="button button-search-inpass" style="flex:5"></view>
|
<view @click.stop="clickButton('delete')" class="button button-search-delete" style="margin-top: -1rpx;">
|
</view>
|
|
</view>
|
<view class="p15" style="min-height: calc(100vh - 500rpx);">
|
<no-data v-if="!list||list.length==0" style="width: 100%;"></no-data>
|
<view v-for="(item,index) in list" :key="index" class="m-b-24 flow-manage-list">
|
<view class="flow-manage-list-item">
|
<view class="flex m-r-6">
|
<view class="img flower-img m-r-6">
|
<image class="flower-img img100 " :src="item.cover"
|
:class="[!item.stock?'component-stock-zero':'']" @click="previewImg(item.cover)">
|
|
</image>
|
<view class="status" :class="[!item.stock?'zero':'']" v-if="item.statusStr">
|
{{ item.statusStr}}
|
</view>
|
</view>
|
|
<view class="flex1">
|
<view class=" flex">
|
<view class="title">{{item.name}}<span class="level">{{item.levelStr}}</span></view>
|
<view class="m-l-a m-r-0">
|
{{item.categoryStr || '-'}}
|
</view>
|
</view>
|
<view class="each-list">
|
<view class="each-item">
|
<view class="label">状态</view>
|
<view class="value">{{item.statusStr || '-'}}</view>
|
|
</view>
|
<view class="each-item">
|
<view class="label">颜色</view>
|
<view class="value">{{item.color || '-'}}</view>
|
|
</view>
|
<view class="each-item">
|
<view class="label">规格</view>
|
<view class="value">{{item.unit || '-'}}</view>
|
|
</view>
|
<view class="each-item">
|
<view class="label">库存</view>
|
<view class="value">{{item.stock || 0}}</view>
|
|
</view>
|
<view class="each-item">
|
<view class="label">销量</view>
|
<view class="value">{{item.sales || 0}}</view>
|
</view>
|
<view class="each-item">
|
<view class="label">价格</view>
|
<view class="value">{{item.price||'-'}}</view>
|
</view>
|
<view class="each-item">
|
<view class="label">限购数量</view>
|
<view class="value">{{item.limited||'-'}}</view>
|
</view>
|
</view>
|
</view>
|
</view>
|
<view class="line-gray">
|
|
</view>
|
<view class="buttons">
|
<view class="button" @click.stop="toDetail(item)">编辑</view>
|
|
<view class="button" @click.stop="buttonStatus(item,'off')"
|
v-if="item.status=='UP'||item.status=='up'">下架</view>
|
<view class="button" @click.stop="buttonStatus(item,'up')"
|
v-if="item.status=='OFF'||item.status=='off'||item.status=='FORCE_OFF'">上架</view>
|
<view class="button" @click.stop="openValue(item,'price')">价格</view>
|
<view class="button" @click.stop="openValue(item,'stock')">库存</view>
|
<view class="button" @click.stop="toDetailAdd(item)">复制</view>
|
|
<view class="button t-red" @click.stop="buttonDelete(item)">删除</view>
|
|
</view>
|
</view>
|
</view>
|
</view>
|
|
<!-- 判断是否到底了,自动吧 -->
|
<footer-msg :more="page.total>0&&page.total>page.current*page.size"></footer-msg>
|
|
<uni-popup ref="popup_input" type="bottom" :mask-click="false">
|
<view class="component-popup_input white w-fit" style="padding-bottom: 0rpx;padding: 0px;">
|
<view class="p20" style="padding-bottom: 10rpx;">
|
<view class="title" v-if="currentInputKey=='price'">
|
修改价格
|
</view>
|
<view class="title" v-if="currentInputKey=='stock'">
|
修改库存
|
</view>
|
|
<!-- 输入框-->
|
<view class="flex w-fit ">
|
|
<u-input v-model="content" :placeholder="inputplaceholder" type="digit"
|
style="max-width: 390rpx;background-color: #F2F2F2;" v-if="currentInputKey=='price'" />
|
<view v-if="currentInputKey=='price'" class="m-l-10" style="line-height: 78rpx;">元</view>
|
|
<u-input v-model="content" :placeholder="inputplaceholder" type="number"
|
style="max-width: 390rpx;background-color: #F2F2F2;" v-if="currentInputKey=='stock'" />
|
</view>
|
</view>
|
<!-- 提交按钮 -->
|
<view class="line-gray" style="margin-bottom: 0px;"></view>
|
<view class="flex flex-wrap-normal">
|
<u-button type="default" class="w-fit flex1 " text="取消"
|
@click="()=>{$refs.popup_input.close()}"></u-button>
|
<view class="component-line-vert"></view>
|
<u-button type="default" class="w-fit flex1 topic-font" t text="确定" @click="submitValue"></u-button>
|
</view>
|
</view>
|
</uni-popup>
|
</view>
|
</template>
|
|
<script>
|
export default {
|
data() {
|
return {
|
type: 'all',
|
query: {
|
type: ''
|
},
|
content: '',
|
currentInputDto: {},
|
currentInputKey: '',
|
inputplaceholder: '',
|
}
|
},
|
onShow() {
|
if (this.sign['flower']) {
|
this.$store.dispatch('sign_clear', 'flower');
|
this.refreshList()
|
}
|
},
|
async onLoad(options) {
|
this.type = options.type || 'all'
|
var title = ''
|
this.page.size = 5
|
//todo 根据type切换查询条件
|
if (this.type === 'delete') {
|
this.listApi = '/api/supplier/flower/list/rc'
|
title = '商品管理-已删除'
|
} else {
|
|
this.listApi = '/api/supplier/flower/list'
|
this.query.status = ''
|
if (this.type === 'inpass') {
|
this.query.status = 'PENDING'
|
title = '商品管理-待审核'
|
}
|
if (this.type === 'in') {
|
this.query.status = 'UP'
|
title = '商品管理-已上架'
|
}
|
if (this.type === 'unpass') {
|
this.query.status = 'DRAFT,OFF,FORCE_OFF'
|
title = '商品管理-仓库中'
|
}
|
if (this.type === 'rejectpass') {
|
this.query.status = 'REJECT'
|
title = '商品管理-未审核通过'
|
}
|
}
|
if (title) {
|
uni.setNavigationBarTitle({
|
title: title
|
})
|
}
|
await this.$store.dispatch('sign_clear', 'flower');
|
this.getList()
|
},
|
onReachBottom() {
|
console.log('onReachBottom')
|
this.getMore()
|
},
|
async onPullDownRefresh() {
|
this.page.current = 1
|
await this.getList()
|
uni.stopPullDownRefresh()
|
},
|
methods: {
|
async openValue(item, key) {
|
this.content = item[key] || ''
|
this.currentInputDto = item
|
this.currentInputKey = key
|
this.inputplaceholder = key == 'price' && '请输入价格(元)' || key == 'stock' && '请输入库存(整数)' || '请输入'
|
this.$refs.popup_input.open('top')
|
},
|
async submitValue() {
|
let item = this.currentInputDto,
|
key = this.currentInputKey
|
const res = await this.$message.confirm(`确定修改此商品的${key==='price'&&'价格'|| key==='stock'&&'库存'}吗`, {
|
editable: false
|
})
|
|
if (!this.content) {
|
this.$message.showToast('输入不能为空')
|
return
|
}
|
var value = ''
|
if (key == 'price') {
|
value = parseFloat(this.content).toFixed(2)
|
} else {
|
value = parseInt(this.content)
|
}
|
if (isNaN(value)) {
|
this.$message.showToast('输入格式不正确')
|
return
|
}
|
if (key == 'price') {
|
if (value <= 0) {
|
this.$message.showToast('价格需要大于0')
|
return
|
}
|
} else {
|
if (value < 0) {
|
this.$message.showToast('库存不能小于0')
|
return
|
}
|
}
|
|
var dto = {
|
id: item.id,
|
}
|
dto[key] = value
|
|
|
this.$message.showLoading()
|
this.$http.request('post', '/api/supplier/flower/list/' + key, {
|
data: dto
|
}).then(res => {
|
if (res.code == 0) {
|
this.$message.showToast('操作成功')
|
item[key] = value
|
this.$refs.popup_input.close()
|
|
}
|
}).finally(() => {
|
this.$message.hideLoading()
|
})
|
},
|
async buttonStatus(item, status) {
|
await this.$message.confirm(`确定${status==='off'?'下架':'上架'}此商品吗`)
|
this.$message.showLoading()
|
this.$http.request('get', '/api/supplier/flower/list/' + status, {
|
params: {
|
id: item.id
|
}
|
}).then(res => {
|
this.$message.hideLoading()
|
if (res.code == 0) {
|
this.$message.showToast('操作成功')
|
item.status = (status == 'off' ? 'OFF' : 'UP')
|
item.statusStr = (status == 'off' ? '下架' : '上架')
|
}
|
}).catch(e => {
|
this.$message.hideLoading()
|
}).finally(() => {})
|
},
|
async buttonDelete(item) {
|
await this.$message.confirm('确定删除此商品吗')
|
this.$message.showLoading()
|
this.$http.request('get', '/api/supplier/flower/list/delete', {
|
params: {
|
id: item.id
|
}
|
}).then(res => {
|
if (res.code == 0) {
|
this.$message.showToast('删除成功')
|
this.refreshList()
|
}
|
}).finally(() => {
|
this.$message.hideLoading()
|
})
|
},
|
toDetail(item) {
|
uni.navigateTo({
|
url: '/sub_pages/supplier/flower-manage/flower-add?id=' + item.id
|
})
|
},
|
toDetailAdd(item) {
|
uni.navigateTo({
|
url: '/sub_pages/supplier/flower-manage/flower-add?copyId=' + item.id
|
})
|
},
|
clickButton(type) {
|
if (type == 'add') {
|
//添加页面
|
uni.navigateTo({
|
url: '/sub_pages/supplier/flower-manage/flower-add'
|
})
|
} else {
|
uni.navigateTo({
|
url: '/sub_pages/supplier/flower-manage/flower-manage?type=' + type
|
})
|
}
|
},
|
}
|
}
|
</script>
|
|
<style lang="scss" scoped>
|
.flow-manage {
|
overflow-y: scroll;
|
|
// min-height: ;
|
.flow-manage-list {
|
// padding: 20rpx 30rpx;
|
padding: 22rpx 22rpx 20rpx 22rpx;
|
background-color: #fff;
|
|
.flow-manage-list-item {
|
.title {
|
font-weight: 600;
|
font-size: 28rpx;
|
color: #000000;
|
line-height: 40rpx;
|
|
.level {
|
font-weight: 400;
|
font-size: 28rpx;
|
color: #20613D;
|
line-height: 40rpx;
|
margin-left: 20rpx;
|
}
|
}
|
|
.buttons {
|
display: flex;
|
|
.button {
|
margin: 0 auto;
|
width: 98rpx;
|
line-height: 48rpx;
|
border-radius: 24rpx;
|
border: 2rpx solid #CECECE;
|
text-align: center;
|
font-size: 24rpx;
|
color: #666666;
|
line-height: 34rpx;
|
}
|
}
|
|
.flower-img {
|
width: 128rpx;
|
height: 118rpx;
|
min-width: 128rpx;
|
min-height: 118rpx;
|
position: relative;
|
|
.status {
|
position: absolute;
|
min-width: 66rpx;
|
height: 34rpx;
|
background: #20613D;
|
left: 0;
|
top: 0;
|
border-top-left-radius: 8rpx;
|
border-bottom-right-radius: 8rpx;
|
color: #FFFFFF;
|
line-height: 34rpx;
|
font-size: 22rpx;
|
text-align: center;
|
}
|
|
.status.zero {
|
// background: unset;
|
// font-size: 24rpx;
|
|
}
|
}
|
|
.each-list {
|
display: flex;
|
flex-wrap: wrap;
|
margin-top: 6rpx;
|
|
.each-item {
|
min-width: 30%;
|
max-width: 40%;
|
text-align: center;
|
margin-left: 0rpx;
|
margin-right: auto;
|
display: flex;
|
|
.label {
|
font-weight: 400;
|
font-size: 24rpx;
|
color: #666666;
|
text-align: left;
|
padding-right: 10rpx;
|
}
|
|
.label::after {
|
content: ": "
|
}
|
|
.value {
|
font-weight: 400;
|
font-size: 24rpx;
|
color: #666666;
|
}
|
}
|
}
|
}
|
}
|
|
.top-buttons {
|
display: flex;
|
padding: 22rpx 42rpx;
|
background-color: #fff;
|
|
.button {
|
// flex:1;
|
margin: 0 auto;
|
width: 90rpx;
|
height: 146rpx;
|
background-size: 100% 100%;
|
text-align: center;
|
// min-width: 90rpx;
|
flex: 4;
|
// max-width: 90rpx;
|
margin-left: 14rpx;
|
margin-right: 14rpx;
|
font-weight: 400;
|
|
}
|
|
.button:first-child {
|
margin-left: 0rpx
|
}
|
|
.button:last-child {
|
margin-right: 0rpx
|
}
|
|
.button-add {
|
background-image: url('@/static/images/supplier/flower/flower-mange-icon-add-flower.png');
|
|
}
|
|
.button-search-in {
|
background-image: url('@/static/images/supplier/flower/flower-mange-icon-flower-in.png');
|
|
}
|
|
.button-search-unpass {
|
background-image: url('@/static/images/supplier/flower/flower-mange-icon-flower-unpass.png');
|
|
}
|
|
.button-search-inpass {
|
background-image: url('@/static/images/supplier/flower/flower-mange-icon-flower-inpass.png');
|
|
}
|
|
.button-search-delete {
|
background-image: url('@/static/images/supplier/flower/flower-mange-icon-flower-delete.png');
|
|
}
|
}
|
}
|
</style>
|