Compare commits

...

2 Commits

Author SHA1 Message Date
唐明明
db187bc774 merge 2021-09-16 18:17:35 +08:00
唐明明
f77b357b3e 商品管理模块 2021-09-16 18:10:28 +08:00
14 changed files with 28190 additions and 25993 deletions

View File

@@ -55,7 +55,7 @@ const managesGoodsBurn = data => {
}) })
} }
// 商品管理-商品上架 // 商品管理-商品上架 ********已废弃
const managesGoodsOnsale = id => { const managesGoodsOnsale = id => {
return request({ return request({
url: 'manages/goods/'+id+'/onsale', url: 'manages/goods/'+id+'/onsale',
@@ -63,7 +63,7 @@ const managesGoodsOnsale = id => {
}) })
} }
// 商品管理-商品下架 // 商品管理-商品下架 ********已废弃
const managesGoodsOffsale = id => { const managesGoodsOffsale = id => {
return request({ return request({
url: 'manages/goods/'+id+'/offsale', url: 'manages/goods/'+id+'/offsale',
@@ -71,7 +71,7 @@ const managesGoodsOffsale = id => {
}) })
} }
// 发布商品前置 manages/goods/create // 发布商品前置
const managesGoodsCreateBefore = () => { const managesGoodsCreateBefore = () => {
return request({ return request({
url: 'manages/goods/create' url: 'manages/goods/create'
@@ -100,7 +100,31 @@ const managesCreate = (data) => {
url: 'manages/goods/create', url: 'manages/goods/create',
data data
}) })
} }
// 商品认证
const managesGoodsAuth = (id, data) => {
return request({
url: 'manages/goods/' + id + '/extends',
method:'POST',
data
})
}
// 商品删除
const managesGoodsDelete = id => {
return request({
url: 'manages/goods/' + id,
method:'DELETE'
})
}
// 产品信息
const managesGoodsEdit = id => {
return request({
url: 'manages/goods/' + id
})
}
// 区块链证书 // 区块链证书
const managesChain = (id) => { const managesChain = (id) => {
@@ -129,8 +153,8 @@ const managesCoupons = (id) => {
url: 'coupons/'+ id +'/grant', url: 'coupons/'+ id +'/grant',
method: 'POST' method: 'POST'
}) })
} }
export { export {
mall, mall,
list, list,
@@ -143,6 +167,9 @@ export {
managesGoodsCreateBefore, managesGoodsCreateBefore,
managesGoodsCreate, managesGoodsCreate,
managesCategory, managesCategory,
managesGoodsAuth,
managesGoodsDelete,
managesGoodsEdit,
managesCreate, managesCreate,
managesChain, managesChain,
managesAttestation, managesAttestation,

View File

@@ -407,6 +407,13 @@
"navigationBarTitleText": "创建门店/部门", "navigationBarTitleText": "创建门店/部门",
"navigationBarBackgroundColor": "#FFFFFF" "navigationBarBackgroundColor": "#FFFFFF"
} }
}, {
"path": "pages/goods/goodsAuth",
"name": "goodsAuth",
"style": {
"navigationBarTitleText": "商品认证信息",
"navigationBarBackgroundColor": "#FFFFFF"
}
} }
], ],
"tabBar": { "tabBar": {

View File

@@ -23,7 +23,7 @@
<!-- 商品基本信息 --> <!-- 商品基本信息 -->
<view class="form-block"> <view class="form-block">
<view class="form-box inputs-flex"> <view class="form-box inputs-flex">
<label class="form-label">品标题</label> <label class="form-label">品标题</label>
<input type="text" v-model="name" placeholder="输入商品标题"/> <input type="text" v-model="name" placeholder="输入商品标题"/>
</view> </view>
<view class="form-box inputs-flex"> <view class="form-box inputs-flex">
@@ -32,7 +32,7 @@
</view> </view>
<view class="form-box inputs-flex"> <view class="form-box inputs-flex">
<label class="form-label">规格单位</label> <label class="form-label">规格单位</label>
<input type="digit" :value="skus_unit" placeholder="输入规格单位 如:件"/> <input type="text" v-model="skus_unit" placeholder="输入规格单位 如:件"/>
</view> </view>
<view class="form-upd"> <view class="form-upd">
<view class="form-title">商品详情点击预览长按删除</view> <view class="form-title">商品详情点击预览长按删除</view>
@@ -72,62 +72,109 @@
</view> </view>
<!-- 商品详情介绍 --> <!-- 商品详情介绍 -->
<view class="form-block"> <view class="form-block">
<!-- is_change query 0 是否支持易货 --> <view class="form-box picker-flex">
<view class="form-box inputs-flex"> <label class="form-label">支持易货</label>
<label class="form-label">易货起购数量</label> <view class="picker-switch">
<input type="number" v-model="skus_number" placeholder="输入易货起购数量"/> <switch :checked="isChange" color="#e93340" @change="pickerChange($event, 'isChange')"/>
</view>
</view>
<view class="form-box inputs-flex" v-if="isChange">
<label class="form-label">最低易货量</label>
<input type="number" v-model="skus_number" placeholder="输入最低易货量"/>
</view> </view>
<view class="form-box inputs-flex"> <view class="form-box inputs-flex">
<label class="form-label">商品库存</label> <label class="form-label">发行权证数</label>
<input type="number" v-model="skus_stock" placeholder="输入商品库存"/> <input type="number" v-model="skus_stock" placeholder="输入商品发行权证数"/>
</view> </view>
</view> </view>
<!-- 售后服务 --> <!-- 售后服务 -->
<view class="form-block"> <view class="form-block">
<view class="form-box picker-flex"> <view class="form-box picker-flex">
<label class="form-label">配送方式</label> <label class="form-label">配送方式</label>
<view class="picker-text"> <picker :range="logisticArr" range-key="text" :value="logisticType" @change="pickerChange($event, 'logisticType')">
logistic_type 1.快递2.自提<uni-icons class="picker-icon" type="arrowright" color="#999"></uni-icons> <view class="picker-text">
</view> {{logisticArr[logisticType].text}}
<uni-icons class="picker-icon" type="arrowright" color="#999"></uni-icons>
</view>
</picker>
</view> </view>
<view class="form-box picker-flex"> <view class="form-box picker-flex" v-if="logisticType === 1">
<label class="form-label">关联店铺</label> <label class="form-label">关联店铺</label>
<view class="picker-text"> <view class="picker-text" @click="opnePopup('storePopup')">
stores 自提必填<uni-icons class="picker-icon" type="arrowright" color="#999"></uni-icons> 已关联{{stores.length}}家店铺<uni-icons class="picker-icon" type="arrowright" color="#999"></uni-icons>
</view> </view>
</view> </view>
<view class="form-box picker-flex"> <view class="form-box picker-flex">
<label class="form-label">允许售后</label> <label class="form-label">允许售后</label>
<view class="picker-switch">
<switch :checked="isPostSale" color="#e93340" @change="pickerChange($event, 'isPostSale')"/>
</view>
</view> </view>
<view class="form-box picker-flex"> <view class="form-box picker-flex">
<label class="form-label">可选服务</label> <label class="form-label">可选服务</label>
<view class="picker-text"> <view class="picker-text" @click="opnePopup('categoryPopup')">
321321<uni-icons class="picker-icon" type="arrowright" color="#999"></uni-icons> 已选{{services.length}}项服务<uni-icons class="picker-icon" type="arrowright" color="#999"></uni-icons>
</view> </view>
</view> </view>
</view> </view>
<!-- 售后服务 --> <!-- 售后服务 -->
<view class="form-block"> <view class="form-block" v-if="type == 2">
<view class="form-box picker-flex"> <view class="form-box picker-flex">
<label class="form-label">到期时间</label> <label class="form-label">到期时间</label>
<view class="picker-text"> <picker mode="date" :value="expiriedAt" @change="pickerChange($event, 'expiriedAt')">
321321<uni-icons class="picker-icon" type="arrowright" color="#999"></uni-icons> <view class="picker-text">
</view> {{expiriedAt || '选择服务到期时间'}}
<uni-icons class="picker-icon" type="arrowright" color="#999"></uni-icons>
</view>
</picker>
</view> </view>
</view> </view>
<!-- 可选服务 --> <!-- 可选服务 -->
<uni-popup ref="categoryPopup">
<view class="category-popup">
<view class="header">
<view class="title">选择商品服务</view>
</view>
<view class="category-flex">
<view class="category-flex-item" :class="{'show' : item.check}" v-for="(item, index) in servicesArr" :key="index" @click="item.check = !item.check">
<view class="category-name">{{item.name}}</view>
<view class="category-content">{{item.content}}</view>
</view>
</view>
<view class="btns">
<button type="default" size="default" @click="affirmCategory('services', 'categoryPopup')">确定</button>
</view>
</view>
</uni-popup>
<!-- 选择店铺 -->
<uni-popup ref="storePopup">
<view class="category-popup">
<view class="header">
<view class="title">选择店铺</view>
</view>
<view class="category-flex">
<view class="category-flex-item" :class="{'show' : item.check}" v-for="(item, index) in storesArr" :key="index" @click="item.check = !item.check">
<view class="category-name">{{item.name}}</view>
<view class="category-content">{{item.address}}</view>
</view>
</view>
<view class="btns">
<button type="default" size="default" @click="affirmCategory('stores', 'storePopup')">确定</button>
</view>
</view>
</uni-popup>
<!-- 安全区 --> <!-- 安全区 -->
<view class="ios-bottom"></view> <view class="ios-bottom"></view>
<!-- footer --> <!-- footer -->
<view class="footer"> <view class="footer">
<button class="footer-btn" type="default">发布</button> <button class="footer-btn" type="default" @click="submitAdd">{{type == 2 ? '发布': '发布并认证'}}</button>
<view class="ios-bottom"></view> <view class="ios-bottom"></view>
</view> </view>
</view> </view>
</template> </template>
<script> <script>
import { managesGoodsCreate, managesCreate } from '@/apis/interfaces/goods' import { managesGoodsCreate, managesCreate, managesGoodsEdit } from '@/apis/interfaces/goods'
import { uploads } from '@/apis/interfaces/uploading' import { uploads } from '@/apis/interfaces/uploading'
export default { export default {
data() { data() {
@@ -143,23 +190,51 @@
skus_number : 1, // 易货起购数量 skus_number : 1, // 易货起购数量
skus_unit : '件', // 规格文字 skus_unit : '件', // 规格文字
skus_charge : '0.00',// 分销佣金 skus_charge : '0.00',// 分销佣金
skus_stock : 0, // 库存 skus_stock : '', // 库存
isChange : false, // 是否支持易货 isChange : false, // 是否支持易货
logisticType: 0, // 配送方式
stores : [], // 关联店铺 stores : [], // 关联店铺
expiriedAt : '', // 活动到期时间 expiriedAt : '', // 活动到期时间
logisticType: 0, // 配送方式
logisticArr : [
{text: '快递', type: 1},
{text: '自提', type: 2}
],
// 配置信息 // 配置信息
storesArr : [], // 可选店铺 storesArr : [], // 可选店铺
tags : [], // 可选商品标签 tags : [], // 可选商品标签
tagsIndex : 0, // 选择标签的下标 tagsIndex : 0, // 选择标签的下标
servicesArr : [], // 可选服务 servicesArr : [], // 可选服务
type : 1, // 1为商品0为服务 type : 1, // 1为商品2为服务
}; };
}, },
created() { created() {
if(this.$Route.query.type === 'edit'){
console.log('编辑')
managesGoodsEdit(this.$Route.query.id).then(res => {
console.log(res)
}).catch(err => {
uni.showToast({
title: err.message,
icon : 'none'
})
})
return
}
managesCreate({ managesCreate({
category_cid: 140 category_cid: this.$Route.query.cid
}).then(res => { }).then(res => {
res.services = res.services.map(val => {
return {
check: false,
...val
}
})
res.stores = res.stores.map(val => {
return {
check: false,
...val
}
})
this.storesArr = res.stores this.storesArr = res.stores
this.tags = res.tags this.tags = res.tags
this.servicesArr= res.services this.servicesArr= res.services
@@ -172,6 +247,25 @@
}) })
}, },
methods: { methods: {
// 选择商品服务
opnePopup(key){
this.$refs[key].open('bottom')
},
// 确认选择商品服务
affirmCategory(key, popupKey){
let keyArr = key == 'services' ? 'servicesArr' : 'storesArr'
this[key] = []
for(let val of this[keyArr]){
if(val.check){
this[key].push(val.service_id || val.store_id)
}
}
this.$refs[popupKey].close()
},
// picker选择
pickerChange(e, key){
this[key] = e.detail.value
},
// 图片预览 // 图片预览
openImg(index, key){ openImg(index, key){
let paths = this[key].map(val => { let paths = this[key].map(val => {
@@ -212,6 +306,55 @@
}) })
} }
}) })
},
// 发布产品
submitAdd(){
let pictures = this.pictures.map(val => {return val.path}),
content = this.content.map(val => {return val.path})
let submitData = {
name : this.name,
cover : this.pictures[0].path,
category_id : this.$Route.query.id,
category_cid : this.$Route.query.cid,
pictures : pictures,
content : content,
description : this.description,
is_post_sale : this.isPostSale ? 0 : 1,
services : this.services,
skus_cost : this.skus_cost,
skus_price : this.skus_price,
skus_number : this.skus_number,
skus_unit : this.skus_unit,
skus_charge : this.skus_charge,
skus_stock : this.skus_stock,
is_change : this.isChange ? 0 : 1,
logistic_type: this.logisticArr[this.logisticType].type,
stores : this.stores,
expiried_at : this.expiriedAt
}
let submitFund = managesGoodsCreate(submitData)
submitFund.then(res => {
if(this.type === 2){
uni.showModal({
title : '提示',
content : '商品权证已发布,请耐心等待平台审核',
showCancel : false,
success : res => {
if(res.confirm){
this.$Router.back()
}
}
})
return
}
this.$Router.push({name: 'goodsAuth', params: { id: res , type: 'goodsAdd'}})
}).catch(err => {
uni.showToast({
title: err.message,
icon : 'none'
})
})
} }
} }
} }
@@ -283,6 +426,15 @@
position: absolute; position: absolute;
} }
} }
.picker-switch{
line-height: 80rpx;
min-height: 80rpx;
text-align: right;
margin-right: -15rpx;
switch{
transform:scale(0.7)
}
}
} }
.form-upd{ .form-upd{
.form-title{ .form-title{
@@ -334,7 +486,7 @@
right: 0; right: 0;
padding: 20rpx $padding; padding: 20rpx $padding;
box-shadow: 0 0 4rpx 4rpx rgba($color: #000000, $alpha: .02); box-shadow: 0 0 4rpx 4rpx rgba($color: #000000, $alpha: .02);
z-index: 99; z-index: 9;
.footer-btn{ .footer-btn{
border: none; border: none;
border-radius: 0; border-radius: 0;
@@ -348,5 +500,69 @@
border: none; border: none;
} }
} }
}
// 可选服务
.category-popup{
background: #F5F5F5;
padding: 0 $padding * 2 $padding * 2 $padding * 2;
.header{
padding: $padding*2 0;
box-sizing: border-box;
@extend .vertical;
.title{
text-align: center;
font-size: $title-size + 14;
font-weight: bold;
line-height: 90rpx;
}
.subtitle{
font-size: $title-size-m;
color: $text-gray;
text-align: center;
}
}
.category-flex{
max-height: 50vh;
overflow-y: scroll;
.category-flex-item{
margin-bottom: $margin;
padding: $padding;
background: white;
border:solid 1rpx white;
box-sizing: border-box;
.category-name{
padding-bottom: $padding/2;
font-weight: bold;
font-size: $title-size-lg;
}
.category-content{
font-size: $title-size-sm;
color: $text-gray;
@extend .ellipsis;
}
&.show{
color: $text-price;
border:solid 1rpx $text-price;
}
&:last-child{
margin-bottom: 0;
}
}
}
.btns{
padding-top: $padding * 2;
button{
background: $text-price;
border-radius: 0;
height: 90rpx;
line-height: 90rpx;
font-size: $title-size;
color: white;
font-weight: bold;
&::after{
border: none;
}
}
}
} }
</style> </style>

View File

@@ -26,14 +26,15 @@
}, },
created() { created() {
managesCategory().then(res => { managesCategory().then(res => {
console.log(res)
this.loding = false this.loding = false
this.category = res this.category = res
}) })
}, },
methods:{ methods:{
// 选择分类 // 选择分类
onCategory(id){ onCategory(cid){
this.$Router.push({name: 'GoodsMagAdd', params: {id}}) this.$Router.push({name: 'GoodsMagAdd', params: {cid, id: this.category[this.stairIndex].category_id}})
} }
} }
} }

357
pages/goods/goodsAuth.vue Normal file
View File

@@ -0,0 +1,357 @@
<template>
<view class="content">
<view class="form-block">
<view class="form-upd">
<view class="form-title">产品实物图片<text>点击预览长按删除</text></view>
<view class="form-imgs">
<view
class="item"
v-if="extendCover.length > 0"
@click="openImg"
@longpress="extendCover = []"
>
<image class="item-cover" :src="extendCover[0].showpath" mode="aspectFill"></image>
</view>
<view class="item item-add" v-else @click="updCover">
<image class="item-cover" src="@/static/icons/add-icon.png" mode="aspectFill"></image>
</view>
</view>
</view>
</view>
<!-- 商品基本信息 -->
<view class="form-block">
<view class="form-box picker-flex">
<label class="form-label">生产日期</label>
<picker mode="date" :value="productedAt" @change="pickerChange($event, 'productedAt')">
<view class="picker-text">
{{productedAt || '选择商品生产日期'}}
<uni-icons class="picker-icon" type="arrowright" color="#999"></uni-icons>
</view>
</picker>
</view>
<view class="form-box picker-flex">
<label class="form-label">过期时间</label>
<picker mode="date" :value="expiriedAt" @change="pickerChange($event, 'expiriedAt')">
<view class="picker-text">
{{expiriedAt || '选择商品过期时间'}}
<uni-icons class="picker-icon" type="arrowright" color="#999"></uni-icons>
</view>
</picker>
</view>
<view class="form-box inputs-flex">
<label class="form-label">生产商名称</label>
<input type="text" v-model="productName" placeholder="输入商品生产商名称"/>
</view>
<view class="form-box inputs-flex">
<label class="form-label">生产许可证号</label>
<input type="text" v-model="lisence" placeholder="输入商品生产许可证号"/>
</view>
<view class="form-box inputs-flex">
<label class="form-label">生产商地址</label>
<input type="text" v-model="productAddress" placeholder="输入商品生产商地址"/>
</view>
</view>
<!-- 安全区 -->
<view class="ios-bottom"></view>
<!-- footer -->
<view class="footer">
<button class="footer-btn" type="default" @click="submitAdd">提交认证审核</button>
<view class="ios-bottom"></view>
</view>
</view>
</template>
<script>
import { managesGoodsAuth } from '@/apis/interfaces/goods'
import { uploads } from '@/apis/interfaces/uploading'
export default {
data() {
return {
productedAt : '', // 生产日期
expiriedAt : '', // 过期时间
lisence : '', // 生产许可证号
productName : '', // 生产商名称
productAddress : '', // 生产商地址
extendCover : [] // 实物图片
};
},
created() {
},
methods: {
// picker选择
pickerChange(e, key){
this[key] = e.detail.value
},
// 图片预览
openImg(){
let paths = this.extendCover.map(val => {
return val.showpath
})
uni.previewImage({
urls : paths,
current : 0,
indicator: 'number'
})
},
// 上传图片
updCover(){
uni.chooseImage({
count : 1,
success : res => {
uploads([{
uri : res.tempFilePaths[0]
}]).then(updRes => {
this.extendCover.push({
path : updRes.path[0],
showpath: updRes.url[0]
})
}).catch(err => {
uni.showToast({
title: err.message,
icon : 'none'
})
})
}
})
},
// 发布产品
submitAdd(){
let submitData = {
producted_at : this.productedAt,
expiried_at : this.expiriedAt,
lisence : this.lisence,
product_name : this.productName,
product_address : this.productAddress,
extend_cover : this.extendCover[0].path
}
let submitFund = managesGoodsAuth(this.$Route.query.id, submitData)
submitFund.then(res => {
uni.showModal({
title : '提示',
content : '商品权证认证信息已提交,请耐心等待平台审核',
showCancel : false,
success : res => {
if(res.confirm){
this.$Router.back(this.$Route.query.type == 'goodsAdd' ? 2 : 1)
}
}
})
}).catch(err => {
uni.showToast({
title: err.message,
icon : 'none'
})
})
}
}
}
</script>
<style lang="scss" scoped>
.content{
padding-bottom: 150rpx;
}
// 表单
.form-block{
background: white;
margin-top: $margin - 10;
.form-box{
position: relative;
padding-left: 240rpx;
padding-right: $padding;
font-size: $title-size-lg;
min-height: 80rpx;
&::after{
position: absolute;
bottom: 0;
left: $margin;
right: 0;
height: 1rpx;
content: " ";
background: $border-color;
}
&:last-child::after{
display: none;
}
.form-label{
position: absolute;
left: $margin;
line-height: 80rpx;
top: 0;
width: calc(240rpx - #{$margin});
}
}
.inputs-flex{
input{
height: 80rpx;
line-height: 80rpx;
}
}
.input-unit{
padding-right: 200rpx;
.units{
position: absolute;
right: 0;
top: 0;
line-height: 80rpx;
height: 80rpx;
width: 200rpx;
padding-right: $padding;
text-align: right;
box-sizing: border-box;
}
}
.picker-flex{
.picker-text{
position: relative;
line-height: 80rpx;
min-height: 80rpx;
padding-right: 80rpx;
@extend .nowrap;
.picker-icon{
right: 0;
position: absolute;
}
}
.picker-switch{
line-height: 80rpx;
min-height: 80rpx;
text-align: right;
margin-right: -15rpx;
switch{
transform:scale(0.7)
}
}
}
.form-upd{
.form-title{
font-size: $title-size-lg;
line-height: 80rpx;
padding: 0 $padding;
text{
font-size: 80%;
color: $text-gray;
}
}
.form-imgs{
margin-top: -($margin/3);
padding: 0 20rpx 20rpx;
display: flex;
flex-wrap: wrap;
.item{
width: calc(20% - 14rpx);
padding-top: calc(20% - 14rpx);
margin: 7rpx;
position: relative;
.item-cover{
position: absolute;
top: 0;
left: 0;
width: 100%;
height: 100%;
}
}
.item-add{
border: dashed 2rpx $border-color;
box-sizing: border-box;
.item-cover{
top: calc(15% - 2rpx);
left: calc(15% - 2rpx);
width: 70%;
height: 70%;
}
}
}
}
}
// 发布
.footer{
background: white;
position: fixed;
bottom: 0;
left: 0;
right: 0;
padding: 20rpx $padding;
box-shadow: 0 0 4rpx 4rpx rgba($color: #000000, $alpha: .02);
z-index: 9;
.footer-btn{
border: none;
border-radius: 0;
background: $text-price;
height: 90rpx;
line-height: 90rpx;
font-weight: bold;
font-size: $title-size;
color: white;
&::after{
border: none;
}
}
}
// 可选服务
.category-popup{
background: #F5F5F5;
padding: 0 $padding * 2 $padding * 2 $padding * 2;
.header{
padding: $padding*2 0;
box-sizing: border-box;
@extend .vertical;
.title{
text-align: center;
font-size: $title-size + 14;
font-weight: bold;
line-height: 90rpx;
}
.subtitle{
font-size: $title-size-m;
color: $text-gray;
text-align: center;
}
}
.category-flex{
max-height: 50vh;
overflow-y: scroll;
.category-flex-item{
margin-bottom: $margin;
padding: $padding;
background: white;
border:solid 1rpx white;
box-sizing: border-box;
.category-name{
padding-bottom: $padding/2;
font-weight: bold;
font-size: $title-size-lg;
}
.category-content{
font-size: $title-size-sm;
color: $text-gray;
@extend .ellipsis;
}
&.show{
color: $text-price;
border:solid 1rpx $text-price;
}
&:last-child{
margin-bottom: 0;
}
}
}
.btns{
padding-top: $padding * 2;
button{
background: $text-price;
border-radius: 0;
height: 90rpx;
line-height: 90rpx;
font-size: $title-size;
color: white;
font-weight: bold;
&::after{
border: none;
}
}
}
}
</style>

View File

@@ -2,10 +2,10 @@
<view class="content"> <view class="content">
<!-- 分类 --> <!-- 分类 -->
<view class="tabs"> <view class="tabs">
<view class="item" :class="{'show': status == '1'}" @click="onTabs('1')">上架</view> <view class="item" :class="{'show': status == '0'}" @click="onTabs('0')">发布</view>
<view class="item" :class="{'show': status == '3'}" @click="onTabs('3')">已下架</view> <view class="item" :class="{'show': status == '1'}" @click="onTabs('1')">待认证</view>
<view class="item" :class="{'show': status == '0'}" @click="onTabs('0')">审核中</view> <view class="item" :class="{'show': status == '2'}" @click="onTabs('2')">审核中</view>
<view class="item" :class="{'show': status == '2'}" @click="onTabs('2')">已驳回</view> <view class="item" :class="{'show': status == '3'}" @click="onTabs('3')">已驳回</view>
</view> </view>
<!-- 优选商品 --> <!-- 优选商品 -->
<goodsList :list="goods" priceType="CNY" :status='status' toast="暂无产品权证"> <goodsList :list="goods" priceType="CNY" :status='status' toast="暂无产品权证">
@@ -14,16 +14,19 @@
</template> </template>
<template v-slot:footer="goods"> <template v-slot:footer="goods">
<view class="footer-btns"> <view class="footer-btns">
<block v-if="status == '1'"> <block v-if="status == '0'">
<button class="button-item" size="mini" @click="openLay(goods.value, 'goodsBurn')">燃烧</button> <button class="button-item" size="mini" @click="openLay(goods.value, 'goodsBurn')">燃烧</button>
<button class="button-item" size="mini" @click="openLay(goods.value, 'goodsMint')">增发</button> <button class="button-item" size="mini" @click="openLay(goods.value, 'goodsMint')">增发</button>
<button class="button-item" size="mini" @click="goodsOffsale(goods.value.goods_id)">下架</button> </block>
<block v-if="status == '1'">
<button class="button-item" size="mini" @click="goodsAuth(goods.value.goods_id)">认证</button>
<button class="button-item" size="mini" @click="goodsRemove(goods.value.goods_id)">删除</button>
</block>
<block v-if="status == '2'">
<button class="button-item" size="mini" @click="goodsRemove(goods.value.goods_id)">删除</button>
</block> </block>
<block v-if="status == '3'"> <block v-if="status == '3'">
<button class="button-item" size="mini" @click="goodsOnsale(goods.value.goods_id)">上架</button> <button class="button-item" size="mini" @click="goodsPut(goods.value.goods_id, goods.value.reason)">驳回原因</button>
</block>
<block v-if="status == '0' || status == '2'">
<button class="button-item" size="mini">修改</button>
<button class="button-item" size="mini" @click="goodsRemove(goods.value.goods_id)">删除</button> <button class="button-item" size="mini" @click="goodsRemove(goods.value.goods_id)">删除</button>
</block> </block>
</view> </view>
@@ -48,7 +51,7 @@
</template> </template>
<script> <script>
import { managesGoodsIndex, managesGoodsOffsale, managesGoodsOnsale, managesGoodsBurn, managesGoodsMint, managesGoodsCreateBefore } from '@/apis/interfaces/goods' import { managesGoodsIndex, managesGoodsDelete, managesGoodsBurn, managesGoodsMint, managesGoodsCreateBefore } from '@/apis/interfaces/goods'
import goodsList from '@/components/goods-list/goods-list' import goodsList from '@/components/goods-list/goods-list'
export default { export default {
components: { components: {
@@ -56,7 +59,7 @@
}, },
data() { data() {
return { return {
status : 1, status : 0,
goods : [], goods : [],
pages : {}, pages : {},
itemGoods : {}, itemGoods : {},
@@ -71,6 +74,7 @@
// tabs // tabs
onTabs(value){ onTabs(value){
if(value == this.status) return if(value == this.status) return
this.goods = []
this.status = value this.status = value
this.getList() this.getList()
}, },
@@ -79,23 +83,29 @@
managesGoodsIndex({ managesGoodsIndex({
status: this.status status: this.status
}).then(res => { }).then(res => {
console.log(res)
this.goods = res.data this.goods = res.data
this.pages = res.page this.pages = res.page
}) })
}, },
// 下架 // 修改产品
goodsOffsale(id){ goodsPut(id, text){
let index = this.goods.findIndex(val => val.goods_id == id) uni.showModal({
managesGoodsOffsale(id).then(res => { title : '驳回原因',
this.goods.splice(index,1) content : text,
if(this.goods.length === 0) this.getList() confirmText : '编辑',
}).catch(err => { cancelText : '确定',
uni.showToast({ success : res => {
title: err.message, if(res.confirm){
icon: 'none' this.$Router.push({name: 'GoodsMagAdd', params: {type: 'edit', id}})
}) }
}
}) })
}, },
// 商品认证
goodsAuth(id){
this.$Router.push({name: 'goodsAuth', params: {id, type: 'magList'}})
},
// 燃烧,增发 // 燃烧,增发
openLay(item, type){ openLay(item, type){
this.itemGoods = item this.itemGoods = item
@@ -142,12 +152,16 @@
break; break;
} }
}, },
// 上架 // 移出删除商品
goodsOnsale(id){ goodsRemove(id){
let index = this.goods.findIndex(val => val.goods_id == id) let index = this.goods.findIndex(val => val.goods_id == id)
managesGoodsOnsale(id).then(res => { managesGoodsDelete(id).then(res => {
this.goods.splice(index,1) this.goods.splice(index,1)
if(this.goods.length === 0) this.getList() if(this.goods.length === 0) this.getList()
uni.showToast({
title: '商品权证已删除',
icon : 'none'
})
}).catch(err => { }).catch(err => {
uni.showToast({ uni.showToast({
title: err.message, title: err.message,
@@ -157,7 +171,7 @@
} }
}, },
onNavigationBarButtonTap() { onNavigationBarButtonTap() {
this.$Router.push({name: 'GoodsMagAdd'}) this.$Router.push({name: 'addClassify'})
} }
} }
</script> </script>

File diff suppressed because one or more lines are too long

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.7 KiB

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View File

@@ -1 +1 @@
{"@platforms":["android","iPhone","iPad"],"id":"__UNI__CD19AAD","name":"易品新境","version":{"name":"1.0.0","code":"100"},"description":"易品新境为商家提供营销引流工具","launch_path":"__uniappview.html","developer":{"name":"","email":"","url":""},"permissions":{"OAuth":{},"Payment":{},"Share":{},"Geolocation":{},"UniNView":{"description":"UniNView原生渲染"}},"plus":{"useragent":{"value":"uni-app","concatenate":true},"splashscreen":{"autoclose":false,"waiting":true,"delay":0},"popGesture":"close","launchwebview":{"id":"1","kernel":"WKWebview"},"statusbar":{"immersed":"supportedDevice","style":"dark","background":"#f5f5f5"},"usingComponents":true,"nvueStyleCompiler":"uni-app","compilerVersion":3,"safearea":{"bottom":{"offset":"none"}},"distribute":{"icons":{"android":{"hdpi":"unpackage/res/icons/72x72.png","xhdpi":"unpackage/res/icons/96x96.png","xxhdpi":"unpackage/res/icons/144x144.png","xxxhdpi":"unpackage/res/icons/192x192.png"},"ios":{"appstore":"unpackage/res/icons/1024x1024.png","ipad":{"app":"unpackage/res/icons/76x76.png","app@2x":"unpackage/res/icons/152x152.png","notification":"unpackage/res/icons/20x20.png","notification@2x":"unpackage/res/icons/40x40.png","proapp@2x":"unpackage/res/icons/167x167.png","settings":"unpackage/res/icons/29x29.png","settings@2x":"unpackage/res/icons/58x58.png","spotlight":"unpackage/res/icons/40x40.png","spotlight@2x":"unpackage/res/icons/80x80.png"},"iphone":{"app@2x":"unpackage/res/icons/120x120.png","app@3x":"unpackage/res/icons/180x180.png","notification@2x":"unpackage/res/icons/40x40.png","notification@3x":"unpackage/res/icons/60x60.png","settings@2x":"unpackage/res/icons/58x58.png","settings@3x":"unpackage/res/icons/87x87.png","spotlight@2x":"unpackage/res/icons/80x80.png","spotlight@3x":"unpackage/res/icons/120x120.png"}}},"splashscreen":{"androidStyle":"common"},"google":{"permissions":["<uses-feature android:name=\"android.hardware.camera\"/>","<uses-feature android:name=\"android.hardware.camera.autofocus\"/>","<uses-permission android:name=\"android.permission.ACCESS_NETWORK_STATE\"/>","<uses-permission android:name=\"android.permission.ACCESS_WIFI_STATE\"/>","<uses-permission android:name=\"android.permission.CAMERA\"/>","<uses-permission android:name=\"android.permission.CHANGE_NETWORK_STATE\"/>","<uses-permission android:name=\"android.permission.CHANGE_WIFI_STATE\"/>","<uses-permission android:name=\"android.permission.FLASHLIGHT\"/>","<uses-permission android:name=\"android.permission.MODIFY_AUDIO_SETTINGS\"/>","<uses-permission android:name=\"android.permission.MOUNT_UNMOUNT_FILESYSTEMS\"/>","<uses-permission android:name=\"android.permission.READ_LOGS\"/>","<uses-permission android:name=\"android.permission.READ_PHONE_STATE\"/>","<uses-permission android:name=\"android.permission.VIBRATE\"/>","<uses-permission android:name=\"android.permission.WAKE_LOCK\"/>","<uses-permission android:name=\"android.permission.WRITE_SETTINGS\"/>"]},"apple":{},"plugins":{"oauth":{"univerify":{},"weixin":{"appid":"wx222fbe58feee7819","appsecret":"3d24525a636d7573a8fae885097d5cf7","UniversalLinks":""}},"payment":{"weixin":{"__platform__":["android"],"appid":"wx222fbe58feee7819","UniversalLinks":""}},"share":{"weixin":{"appid":"wx222fbe58feee7819","UniversalLinks":""}},"maps":{},"ad":{},"geolocation":{},"audio":{"mp3":{"description":"Android平台录音支持MP3格式文件"}}}},"arguments":"{\"name\":\"\",\"path\":\"\",\"query\":\"\",\"id\":0}","allowsInlineMediaPlayback":true,"uni-app":{"compilerVersion":"3.1.18","control":"uni-v3","nvueCompiler":"uni-app","renderer":"auto","nvue":{"flex-direction":"column"},"nvueLaunchMode":"normal"},"tabBar":{"color":"#bababa","selectedColor":"#e93340","backgroundColor":"#FFFFFF","borderStyle":"rgba(255,255,255,0.4)","list":[{"pagePath":"pages/equity/index","text":"通证权易","iconPath":"static/tabBar/tabBar_icon_00.png","selectedIconPath":"static/tabBar/tabBar_show_00.png"},{"pagePath":"pages/market/index","text":"转让市场","iconPath":"static/tabBar/tabBar_icon_01.png","selectedIconPath":"static/tabBar/tabBar_show_01.png"},{"pagePath":"pages/store/index","text":"企业工具","iconPath":"static/tabBar/tabBar_icon_02.png","selectedIconPath":"static/tabBar/tabBar_show_02.png"},{"pagePath":"pages/property/index","text":"我的资产","iconPath":"static/tabBar/tabBar_icon_03.png","selectedIconPath":"static/tabBar/tabBar_show_03.png"}],"height":"50px","child":["lauchwebview"],"selected":0},"launch_path":"__uniappview.html"}} {"@platforms":["android","iPhone","iPad"],"id":"__UNI__CD19AAD","name":"易品新境","version":{"name":"1.0.0","code":"100"},"description":"易品新境为商家提供营销引流工具","launch_path":"__uniappview.html","developer":{"name":"","email":"","url":""},"permissions":{"OAuth":{},"Payment":{},"Share":{},"Geolocation":{},"UniNView":{"description":"UniNView原生渲染"}},"plus":{"useragent":{"value":"uni-app","concatenate":true},"splashscreen":{"autoclose":false,"waiting":true,"delay":0},"popGesture":"close","launchwebview":{"id":"1","kernel":"WKWebview"},"statusbar":{"immersed":"supportedDevice","style":"dark","background":"#f5f5f5"},"usingComponents":true,"nvueStyleCompiler":"uni-app","compilerVersion":3,"safearea":{"bottom":{"offset":"none"}},"distribute":{"icons":{"android":{"hdpi":"unpackage/res/icons/72x72.png","xhdpi":"unpackage/res/icons/96x96.png","xxhdpi":"unpackage/res/icons/144x144.png","xxxhdpi":"unpackage/res/icons/192x192.png"},"ios":{"appstore":"unpackage/res/icons/1024x1024.png","ipad":{"app":"unpackage/res/icons/76x76.png","app@2x":"unpackage/res/icons/152x152.png","notification":"unpackage/res/icons/20x20.png","notification@2x":"unpackage/res/icons/40x40.png","proapp@2x":"unpackage/res/icons/167x167.png","settings":"unpackage/res/icons/29x29.png","settings@2x":"unpackage/res/icons/58x58.png","spotlight":"unpackage/res/icons/40x40.png","spotlight@2x":"unpackage/res/icons/80x80.png"},"iphone":{"app@2x":"unpackage/res/icons/120x120.png","app@3x":"unpackage/res/icons/180x180.png","notification@2x":"unpackage/res/icons/40x40.png","notification@3x":"unpackage/res/icons/60x60.png","settings@2x":"unpackage/res/icons/58x58.png","settings@3x":"unpackage/res/icons/87x87.png","spotlight@2x":"unpackage/res/icons/80x80.png","spotlight@3x":"unpackage/res/icons/120x120.png"}}},"splashscreen":{"androidStyle":"common"},"google":{"permissions":["<uses-feature android:name=\"android.hardware.camera\"/>","<uses-feature android:name=\"android.hardware.camera.autofocus\"/>","<uses-permission android:name=\"android.permission.ACCESS_NETWORK_STATE\"/>","<uses-permission android:name=\"android.permission.ACCESS_WIFI_STATE\"/>","<uses-permission android:name=\"android.permission.CAMERA\"/>","<uses-permission android:name=\"android.permission.CHANGE_NETWORK_STATE\"/>","<uses-permission android:name=\"android.permission.CHANGE_WIFI_STATE\"/>","<uses-permission android:name=\"android.permission.FLASHLIGHT\"/>","<uses-permission android:name=\"android.permission.MODIFY_AUDIO_SETTINGS\"/>","<uses-permission android:name=\"android.permission.MOUNT_UNMOUNT_FILESYSTEMS\"/>","<uses-permission android:name=\"android.permission.READ_LOGS\"/>","<uses-permission android:name=\"android.permission.READ_PHONE_STATE\"/>","<uses-permission android:name=\"android.permission.VIBRATE\"/>","<uses-permission android:name=\"android.permission.WAKE_LOCK\"/>","<uses-permission android:name=\"android.permission.WRITE_SETTINGS\"/>"]},"apple":{},"plugins":{"oauth":{"univerify":{},"weixin":{"appid":"wx222fbe58feee7819","appsecret":"3d24525a636d7573a8fae885097d5cf7","UniversalLinks":""}},"payment":{"weixin":{"__platform__":["android"],"appid":"wx222fbe58feee7819","UniversalLinks":""}},"share":{"weixin":{"appid":"wx222fbe58feee7819","UniversalLinks":""}},"maps":{},"ad":{},"geolocation":{},"audio":{"mp3":{"description":"Android平台录音支持MP3格式文件"}}}},"arguments":"{\"name\":\"\",\"path\":\"\",\"query\":\"\",\"id\":0}","allowsInlineMediaPlayback":true,"uni-app":{"compilerVersion":"3.2.3","control":"uni-v3","nvueCompiler":"uni-app","renderer":"auto","nvue":{"flex-direction":"column"},"nvueLaunchMode":"normal"},"tabBar":{"color":"#bababa","selectedColor":"#e93340","backgroundColor":"#FFFFFF","borderStyle":"rgba(255,255,255,0.4)","list":[{"pagePath":"pages/equity/index","text":"通证权易","iconPath":"static/tabBar/tabBar_icon_00.png","selectedIconPath":"static/tabBar/tabBar_show_00.png"},{"pagePath":"pages/market/index","text":"转让市场","iconPath":"static/tabBar/tabBar_icon_01.png","selectedIconPath":"static/tabBar/tabBar_show_01.png"},{"pagePath":"pages/store/index","text":"企业工具","iconPath":"static/tabBar/tabBar_icon_02.png","selectedIconPath":"static/tabBar/tabBar_show_02.png"},{"pagePath":"pages/property/index","text":"我的资产","iconPath":"static/tabBar/tabBar_icon_03.png","selectedIconPath":"static/tabBar/tabBar_show_03.png"}],"height":"50px","child":["lauchwebview"],"selected":0},"launch_path":"__uniappview.html"}}

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long