parent
4f5a95b13f
commit
d7f4aae565
@ -0,0 +1,45 @@ |
|||||||
|
import { |
||||||
|
POST |
||||||
|
} from './Request.js'; |
||||||
|
let app = getApp(); |
||||||
|
let base = app.globalData.url; |
||||||
|
|
||||||
|
|
||||||
|
//新增门店图片
|
||||||
|
export const insertStoreImg = params => { |
||||||
|
return POST('POST', `${base}/storeImg/insertStoreImg`, params).then(res => res.data); |
||||||
|
} |
||||||
|
|
||||||
|
//查询门店图片列表
|
||||||
|
export const getBsStoreImgByList = params => { |
||||||
|
return POST('GET', `${base}/storeImg/getBsStoreImgByList`, params).then(res => res.data); |
||||||
|
} |
||||||
|
|
||||||
|
//删除门店图片
|
||||||
|
export const deleteStoreImg = params => { |
||||||
|
return POST('GET', `${base}/storeImg/deleteStoreImg`, params).then(res => res.data); |
||||||
|
} |
||||||
|
|
||||||
|
//根据id查询门店图片详情
|
||||||
|
export const getStoreImgById = params => { |
||||||
|
return POST('GET', `${base}/storeImg/getStoreImgById`, params).then(res => res.data); |
||||||
|
} |
||||||
|
|
||||||
|
//新增门店产品
|
||||||
|
export const insertStoreProduct = params => { |
||||||
|
return POST('POST', `${base}/storeProduct/insertStoreProduct`, params).then(res => res.data); |
||||||
|
} |
||||||
|
//编辑门店产品
|
||||||
|
export const editStoreProduct = params => { |
||||||
|
return POST('POST', `${base}/storeProduct/editStoreProduct`, params).then(res => res.data); |
||||||
|
} |
||||||
|
|
||||||
|
//门店产品列表
|
||||||
|
export const getStoreProductByList = params => { |
||||||
|
return POST('GET', `${base}/storeProduct/getStoreProductByList`, params).then(res => res.data); |
||||||
|
} |
||||||
|
|
||||||
|
//查询门店产品详情
|
||||||
|
export const getStoreProductById = params => { |
||||||
|
return POST('GET', `${base}/storeProduct/getStoreProductById`, params).then(res => res.data); |
||||||
|
} |
@ -0,0 +1,298 @@ |
|||||||
|
<template> |
||||||
|
<view class="next-bubble-menu" |
||||||
|
> |
||||||
|
|
||||||
|
<view @click.stop="showContainer"> |
||||||
|
<slot></slot> |
||||||
|
</view> |
||||||
|
<view class="mask" v-show="show && showUi" @click.stop="show=false"></view> |
||||||
|
<view class="container" v-show="show && showUi"> |
||||||
|
<view class="block" :style="{left: `calc(50% - ${(width*0.5).toFixed(0)}rpx)`}"> |
||||||
|
<view class="arrow" |
||||||
|
:style="{ |
||||||
|
left:0, |
||||||
|
top: showTop && (arrowTop+12)+'rpx' |
||||||
|
}"> |
||||||
|
</view> |
||||||
|
<view class="list-container" |
||||||
|
:style="'height:'+(dHeight?dHeight+'rpx':'auto')+';max-height:'+dMaxHeight+'rpx;border-radius:'+radius+'rpx;width:'+width+'rpx;left:'+ relativeAllow +'rpx;'"> |
||||||
|
<view :class="'list-item '+(index==dataList.length-1?'':'bt')" v-for="(item,index) in dataList" :key="index" @click.stop="clickItem(item)"> |
||||||
|
<image class="list-item-image" :src="item.iconSrc" v-if="item.iconSrc" /> |
||||||
|
<text class="list-item-text">{{item.text}}</text> |
||||||
|
</view> |
||||||
|
</view> |
||||||
|
</view> |
||||||
|
</view> |
||||||
|
</view> |
||||||
|
</template> |
||||||
|
|
||||||
|
<script> |
||||||
|
let closeOtherHooks = new Set() |
||||||
|
const closeOtherPopUp = (closePopUp) => { |
||||||
|
closeOtherHooks.forEach(hook => { |
||||||
|
if (closePopUp !== hook) { //closePopUp当前页面关闭方法,hook所有页面的关闭方法 |
||||||
|
hook() |
||||||
|
} |
||||||
|
}) |
||||||
|
} |
||||||
|
|
||||||
|
export default { |
||||||
|
props: { |
||||||
|
bingEleId: { |
||||||
|
type: String, |
||||||
|
default: '' |
||||||
|
}, |
||||||
|
//气泡框数据源 |
||||||
|
dataList: { |
||||||
|
type: Array, |
||||||
|
default: () => { |
||||||
|
return [] |
||||||
|
} |
||||||
|
}, |
||||||
|
hasBar: { |
||||||
|
type: Boolean, |
||||||
|
default: true |
||||||
|
}, |
||||||
|
radius: { |
||||||
|
type: Number, |
||||||
|
default: 8 |
||||||
|
}, |
||||||
|
dWidth: { |
||||||
|
type: Number, |
||||||
|
default: 0 |
||||||
|
}, |
||||||
|
dHeight: { |
||||||
|
type: Number, |
||||||
|
default: 0 |
||||||
|
}, |
||||||
|
dMaxHeight: { |
||||||
|
type: Number, |
||||||
|
default: 400 |
||||||
|
}, |
||||||
|
relativeAllow: { |
||||||
|
type: Number, |
||||||
|
default: -30 |
||||||
|
} |
||||||
|
}, |
||||||
|
data() { |
||||||
|
return { |
||||||
|
show: false, |
||||||
|
width: 0, |
||||||
|
height: 0, |
||||||
|
left: 0, |
||||||
|
top: 0, |
||||||
|
bottom: 0, |
||||||
|
rectTop: 0, |
||||||
|
screenWidth: 0, |
||||||
|
showTop: false, |
||||||
|
arrowTop: 0, |
||||||
|
showUi: false |
||||||
|
} |
||||||
|
}, |
||||||
|
mounted() { |
||||||
|
|
||||||
|
const closePopUp = () => { |
||||||
|
this.show = false; |
||||||
|
} |
||||||
|
closeOtherHooks.add(closePopUp) //closeOtherHooks每个页面的关闭方法都加上 |
||||||
|
this.closePopUp = closePopUp |
||||||
|
|
||||||
|
this.$nextTick(() => { |
||||||
|
if (!this.bingEleId) return |
||||||
|
// #ifdef APP-PLUS |
||||||
|
uni.createSelectorQuery().in(this).select('.next-bubble-menu').boundingClientRect(res => { |
||||||
|
let difference = res.left |
||||||
|
uni.createSelectorQuery().select('#' + this.bingEleId).boundingClientRect(rect => { |
||||||
|
const systemInfo = uni.getSystemInfoSync() |
||||||
|
const windowHeight = systemInfo.windowHeight |
||||||
|
this.screenWidth = systemInfo.screenWidth |
||||||
|
if (!this.dWidth) { |
||||||
|
this.width = this.px2rpx(rect.width, this.screenWidth) |
||||||
|
} else { |
||||||
|
let screenW = this.px2rpx(this.screenWidth, this.screenWidth) |
||||||
|
this.width = this.dWidth > screenW ? screenW : this.dWidth |
||||||
|
} |
||||||
|
this.height = rect.height |
||||||
|
this.rectTop = rect.top |
||||||
|
this.bottom = windowHeight - rect.bottom |
||||||
|
|
||||||
|
}).exec() |
||||||
|
}).exec() |
||||||
|
// #endif |
||||||
|
// #ifndef APP-PLUS |
||||||
|
uni.createSelectorQuery().in(this).select('.next-bubble-menu').boundingClientRect(res => { |
||||||
|
let difference = res.left |
||||||
|
uni.createSelectorQuery().select('#' + this.bingEleId).boundingClientRect(rect => { |
||||||
|
const systemInfo = uni.getSystemInfoSync() |
||||||
|
const windowHeight = systemInfo.windowHeight |
||||||
|
this.screenWidth = systemInfo.screenWidth |
||||||
|
if (!this.dWidth) { |
||||||
|
this.width = this.px2rpx(rect.width, this.screenWidth) |
||||||
|
} else { |
||||||
|
let screenW = this.px2rpx(this.screenWidth, this.screenWidth) |
||||||
|
this.width = this.dWidth > screenW ? screenW : this.dWidth |
||||||
|
} |
||||||
|
this.height = rect.height |
||||||
|
this.rectTop = rect.top |
||||||
|
this.bottom = windowHeight - rect.bottom |
||||||
|
}).exec() |
||||||
|
}).exec() |
||||||
|
// #endif |
||||||
|
}) |
||||||
|
}, |
||||||
|
methods: { |
||||||
|
showContainer() { |
||||||
|
if (!this.bingEleId) return |
||||||
|
else this.show = !this.show |
||||||
|
if (this.show) { |
||||||
|
closeOtherPopUp(this.closePopUp) //关掉其他的 |
||||||
|
|
||||||
|
this.$nextTick(res => { |
||||||
|
// #ifdef APP-PLUS |
||||||
|
let view = uni.createSelectorQuery().in(this).select(".list-container") |
||||||
|
view.boundingClientRect(res => { |
||||||
|
let arrHeight = res.height |
||||||
|
let height = this.bottom - arrHeight - 15 |
||||||
|
if (height < 0) { |
||||||
|
this.showTop = true |
||||||
|
this.top = this.px2rpx((this.rectTop - arrHeight - 10), this |
||||||
|
.screenWidth) |
||||||
|
this.arrowTop = this.px2rpx(arrHeight - 5, this.screenWidth) |
||||||
|
} else { |
||||||
|
this.showTop = false |
||||||
|
this.top = this.px2rpx(this.rectTop + this.height + 10, this |
||||||
|
.screenWidth) |
||||||
|
} |
||||||
|
this.$nextTick(() => { |
||||||
|
this.showUi = true |
||||||
|
}) |
||||||
|
}).exec() |
||||||
|
// #endif |
||||||
|
// #ifndef APP-PLUS |
||||||
|
uni.createSelectorQuery().in(this).select('.list-container').boundingClientRect(res => { |
||||||
|
const left = res.left |
||||||
|
let arrHeight = res.height |
||||||
|
let height = this.bottom - arrHeight - 15 |
||||||
|
if (height < 0) { |
||||||
|
this.showTop = true |
||||||
|
if (this.hasBar) { |
||||||
|
// #ifdef H5 |
||||||
|
this.top = this.px2rpx((this.rectTop - arrHeight + 35), this |
||||||
|
.screenWidth) |
||||||
|
// #endif |
||||||
|
// #ifndef H5 |
||||||
|
this.top = this.px2rpx((this.rectTop - arrHeight - 10), this |
||||||
|
.screenWidth) |
||||||
|
// #endif |
||||||
|
} else { |
||||||
|
this.top = this.px2rpx((this.rectTop - arrHeight - 10), this |
||||||
|
.screenWidth) |
||||||
|
} |
||||||
|
this.arrowTop = this.px2rpx(arrHeight - 5, this.screenWidth) |
||||||
|
} else { |
||||||
|
this.showTop = false |
||||||
|
if (this.hasBar) { |
||||||
|
// #ifdef H5 |
||||||
|
this.top = this.px2rpx(this.rectTop + this.height + 54, this |
||||||
|
.screenWidth) |
||||||
|
// #endif |
||||||
|
// #ifndef H5 |
||||||
|
this.top = this.px2rpx(this.rectTop + this.height + 10, this |
||||||
|
.screenWidth) |
||||||
|
// #endif |
||||||
|
} else { |
||||||
|
this.top = this.px2rpx(this.rectTop + this.height + 10, this |
||||||
|
.screenWidth) |
||||||
|
} |
||||||
|
} |
||||||
|
this.$nextTick(() => { |
||||||
|
this.showUi = true |
||||||
|
}) |
||||||
|
}).exec() |
||||||
|
// #endif |
||||||
|
}) |
||||||
|
} |
||||||
|
}, |
||||||
|
px2rpx(px, screenWidth) { |
||||||
|
return px / (screenWidth / 750) |
||||||
|
}, |
||||||
|
//点击选项 |
||||||
|
clickItem(item) { |
||||||
|
this.show = false |
||||||
|
this.$emit('change', item) |
||||||
|
} |
||||||
|
} |
||||||
|
} |
||||||
|
</script> |
||||||
|
|
||||||
|
<style lang="scss" scoped> |
||||||
|
|
||||||
|
$bgColor:#3da7e7; |
||||||
|
$ftColor:#ffffff; |
||||||
|
|
||||||
|
.mask{ |
||||||
|
position: fixed; |
||||||
|
top: 0; |
||||||
|
left: 0; |
||||||
|
right: 0; |
||||||
|
bottom: 0; |
||||||
|
z-index: 999999 !important; |
||||||
|
// background:rgba(0, 0, 0, 0.5); |
||||||
|
} |
||||||
|
|
||||||
|
.next-bubble-menu { |
||||||
|
position: relative; |
||||||
|
border: solid transparent 1px; |
||||||
|
} |
||||||
|
|
||||||
|
.block { |
||||||
|
/* position: fixed; */ |
||||||
|
position: absolute; |
||||||
|
z-index: 99999999 !important; |
||||||
|
} |
||||||
|
|
||||||
|
.container{ |
||||||
|
position: relative; |
||||||
|
} |
||||||
|
|
||||||
|
.list-container { |
||||||
|
box-sizing: border-box; |
||||||
|
overflow: auto; |
||||||
|
// padding: 16rpx 20rpx; |
||||||
|
background-color: $bgColor; |
||||||
|
box-shadow: 2rpx 4rpx 10rpx rgba(0,0,0,.1); |
||||||
|
} |
||||||
|
.arrow { |
||||||
|
width: 0; |
||||||
|
height: 0; |
||||||
|
margin: -10rpx auto 0; |
||||||
|
border-top: 10rpx solid transparent; |
||||||
|
border-bottom: 10rpx solid $bgColor; |
||||||
|
border-right: 10rpx solid transparent; |
||||||
|
border-left: 10rpx solid transparent; |
||||||
|
} |
||||||
|
|
||||||
|
.list-item { |
||||||
|
line-height: 80rpx; |
||||||
|
text-align: center; |
||||||
|
color: $ftColor; |
||||||
|
&:active{ |
||||||
|
background-color:$ftColor; |
||||||
|
color: $bgColor; |
||||||
|
} |
||||||
|
} |
||||||
|
.bt{ |
||||||
|
border-bottom: 1px solid $ftColor; |
||||||
|
} |
||||||
|
|
||||||
|
.list-item .list-item-image { |
||||||
|
display: inline-block; |
||||||
|
vertical-align: middle; |
||||||
|
width: 40rpx; |
||||||
|
height: 40rpx; |
||||||
|
margin-right: 20rpx; |
||||||
|
} |
||||||
|
.list-item .list-item-text { |
||||||
|
vertical-align: middle; |
||||||
|
} |
||||||
|
</style> |
@ -0,0 +1,69 @@ |
|||||||
|
<template> |
||||||
|
<view> |
||||||
|
<!-- 菜单功能 --> |
||||||
|
<view class="backcor6 all-container pd-main" > |
||||||
|
<view class="funcss" v-for="(item,index) in funcList" :key="index" @click="jumpdesfun(item)"> |
||||||
|
<image :src="item.img" mode="widthFix" class="funicon"></image> |
||||||
|
<view class="width100 font14 mart5">{{item.title}}</view> |
||||||
|
</view> |
||||||
|
</view> |
||||||
|
</view> |
||||||
|
</template> |
||||||
|
|
||||||
|
<script> |
||||||
|
export default { |
||||||
|
data(){ |
||||||
|
return{ |
||||||
|
funcList:[ |
||||||
|
{ |
||||||
|
title: '门店图片', |
||||||
|
url: './storeImg/storeImg', |
||||||
|
img: '/static/img/home4.png' |
||||||
|
}, |
||||||
|
{ |
||||||
|
title: '门店产品', |
||||||
|
url: './storeProduct/storeProduct', |
||||||
|
img: '/static/img/home4.png' |
||||||
|
}, |
||||||
|
|
||||||
|
], |
||||||
|
storeId:'', |
||||||
|
} |
||||||
|
}, |
||||||
|
onLoad(options){ |
||||||
|
if(options.storeId){ |
||||||
|
this.storeId = options.storeId; |
||||||
|
} |
||||||
|
}, |
||||||
|
methods:{ |
||||||
|
/** |
||||||
|
* 跳转功能 |
||||||
|
*/ |
||||||
|
jumpdesfun(item) { |
||||||
|
let that = this; |
||||||
|
uni.navigateTo({ |
||||||
|
url: item.url+"?storeId="+that.storeId |
||||||
|
}) |
||||||
|
|
||||||
|
}, |
||||||
|
} |
||||||
|
} |
||||||
|
</script> |
||||||
|
|
||||||
|
<style lang="scss" scoped> |
||||||
|
// 菜单 |
||||||
|
.funcss { |
||||||
|
width: 33%; |
||||||
|
height: 100px; |
||||||
|
border-right: 1px solid #e8e8e8; |
||||||
|
border-bottom: 1px solid #e8e8e8; |
||||||
|
background-color: #FFFFFF; |
||||||
|
text-align: center; |
||||||
|
display: inline-block; |
||||||
|
|
||||||
|
.funicon { |
||||||
|
width: 35px; |
||||||
|
padding-top: 15px; |
||||||
|
} |
||||||
|
} |
||||||
|
</style> |
@ -0,0 +1,291 @@ |
|||||||
|
<template> |
||||||
|
<!-- backcorfff backcor6--> |
||||||
|
<view class="all-container pd-main backcor6 font15"> |
||||||
|
<view class="dis-flex width100 mart10"> |
||||||
|
<button class="btns " @click.stop="clickToAdd()">新增</button> |
||||||
|
<button class="btns bgRed " @click.stop = "clickToDelete()">删除</button> |
||||||
|
</view> |
||||||
|
<view class="mart20 backcorfff"> |
||||||
|
<view class="dis-flex height40 bor-botm1"> |
||||||
|
<view class="checkFlex fotct fontwig6"></view> |
||||||
|
<view class="flex-1 fotct fontwig6">图片</view> |
||||||
|
<next-bubble-menu class="flex-1" :d-width="200" :dataList="dataList" bingEleId="imgType" @change="getItem($event)"> |
||||||
|
<view class=" fotct fontwig6 down " id="imgType">{{imgType.imgTypeText}}</view> |
||||||
|
</next-bubble-menu> |
||||||
|
|
||||||
|
<view class="flex-1 fotct fontwig6">图片状态</view> |
||||||
|
</view> |
||||||
|
<checkbox-group @change="checkClick"> |
||||||
|
<view class="dis-flex bor-botm1 paddtop5 paddbotm5 " v-for="(item,index) in imgDataList" :key="index"> |
||||||
|
<view class="checkFlex fotct"> |
||||||
|
<checkbox @click.stop class=" checkContainer" color="#FFC71E" |
||||||
|
:value="String(item.id)" :checked="false" /> |
||||||
|
</view> |
||||||
|
<view class="flex-1 fotct"> |
||||||
|
<image :src="imgUrl+item.img" @click.stop="previewImage(imgUrl+item.img)" mode="aspectFit" class="width100 height60 verc"></image> |
||||||
|
</view> |
||||||
|
<view class="flex-1 fotct">{{item.type | filterType}}</view> |
||||||
|
<view :class="' flex-1 fotct '+(item.status == 0 ? ' fcRed ':'')">{{ item.status | filterStatus}}</view> |
||||||
|
</view> |
||||||
|
</checkbox-group> |
||||||
|
</view> |
||||||
|
|
||||||
|
</view> |
||||||
|
</template> |
||||||
|
|
||||||
|
<script> |
||||||
|
import nextBubleMenu from "@/components/next-bubble-menu/next-bubble-menu.vue" |
||||||
|
|
||||||
|
import {getBsStoreImgByList, |
||||||
|
deleteStoreImg |
||||||
|
} from '@/Utils/groupBuying.js'; |
||||||
|
const app = getApp(); |
||||||
|
export default { |
||||||
|
data() { |
||||||
|
return { |
||||||
|
imgUrl: app.globalData.imgUrl, //图片访问地址 |
||||||
|
dataList: [{ |
||||||
|
id: 0, |
||||||
|
text: '全部', |
||||||
|
}, |
||||||
|
{ |
||||||
|
id: 1, |
||||||
|
text: '菜品', |
||||||
|
}, { |
||||||
|
id: 2, |
||||||
|
text: '环境', |
||||||
|
},{ |
||||||
|
id:3, |
||||||
|
text:'菜单' |
||||||
|
} |
||||||
|
], |
||||||
|
|
||||||
|
imgType:{ |
||||||
|
// isShowImgType:false, |
||||||
|
imgTypeText:"图片类型", |
||||||
|
imgTypeId:0, |
||||||
|
}, |
||||||
|
storeId:"",//门店id |
||||||
|
imgDataList:[], |
||||||
|
imgSelectList:[], |
||||||
|
|
||||||
|
|
||||||
|
} |
||||||
|
}, |
||||||
|
components: { |
||||||
|
nextBubleMenu |
||||||
|
}, |
||||||
|
onLoad(options){ |
||||||
|
if(options.storeId){ |
||||||
|
this.storeId = options.storeId; |
||||||
|
} |
||||||
|
}, |
||||||
|
onShow(){ |
||||||
|
this.imgType.imgTypeId=0; |
||||||
|
this.imgType.imgTypeText="图片类型"; |
||||||
|
this.getBsStoreImgByList(); |
||||||
|
}, |
||||||
|
filters:{ |
||||||
|
filterType(type){ |
||||||
|
switch (type) { |
||||||
|
case 1: |
||||||
|
return "菜品"; |
||||||
|
case 2: |
||||||
|
return "环境"; |
||||||
|
case 3: |
||||||
|
return "菜单"; |
||||||
|
|
||||||
|
default: |
||||||
|
return "未知"; |
||||||
|
} |
||||||
|
|
||||||
|
}, |
||||||
|
filterStatus(value){ |
||||||
|
switch (value) { |
||||||
|
case 1: |
||||||
|
return "正常"; |
||||||
|
case 0: |
||||||
|
return "失败"; |
||||||
|
default: |
||||||
|
return "未知"; |
||||||
|
} |
||||||
|
} |
||||||
|
}, |
||||||
|
methods: { |
||||||
|
/* 获取列表 */ |
||||||
|
getBsStoreImgByList(){ |
||||||
|
let params={ |
||||||
|
storeId:this.storeId, |
||||||
|
type:this.imgType.imgTypeId, |
||||||
|
} |
||||||
|
if(params.type==0){ |
||||||
|
delete params.type; |
||||||
|
} |
||||||
|
uni.showLoading({ |
||||||
|
title:"加载中", |
||||||
|
mask:true, |
||||||
|
}) |
||||||
|
this.imgDataList = []; |
||||||
|
getBsStoreImgByList(params).then(res=>{ |
||||||
|
uni.hideLoading(); |
||||||
|
if (res.return_code == '000000') { |
||||||
|
this.imgDataList = res.return_data; |
||||||
|
// console.log(res.return_data) |
||||||
|
|
||||||
|
}else{ |
||||||
|
uni.showToast({ |
||||||
|
title: res.return_msg, |
||||||
|
icon: 'none', |
||||||
|
duration: 2000 |
||||||
|
}) |
||||||
|
} |
||||||
|
}) |
||||||
|
}, |
||||||
|
// 预览 |
||||||
|
previewImage(img){ |
||||||
|
uni.previewImage({ |
||||||
|
current: 0, |
||||||
|
indicator: "number", |
||||||
|
loop: "true", |
||||||
|
urls:[img] |
||||||
|
}) |
||||||
|
}, |
||||||
|
getItem(data) { |
||||||
|
console.log(data) |
||||||
|
if (data.id == 0) { |
||||||
|
this.imgType.imgTypeText = "图片类型"; |
||||||
|
this.imgType.imgTypeId = data.id; |
||||||
|
}else{ |
||||||
|
this.imgType.imgTypeText = data.text; |
||||||
|
this.imgType.imgTypeId = data.id; |
||||||
|
} |
||||||
|
this.getBsStoreImgByList(); |
||||||
|
this.imgSelectList = []; |
||||||
|
|
||||||
|
}, |
||||||
|
/* 点击去新增页面 */ |
||||||
|
clickToAdd(){ |
||||||
|
let that = this; |
||||||
|
uni.navigateTo({ |
||||||
|
url:"./storeImgAdd?storeId="+that.storeId |
||||||
|
}) |
||||||
|
}, |
||||||
|
/* 点击删除 */ |
||||||
|
clickToDelete(){ |
||||||
|
if(this.imgSelectList.length==0){ |
||||||
|
uni.showToast({ |
||||||
|
icon:'none', |
||||||
|
title:"请勾选想要删除的图片" |
||||||
|
}) |
||||||
|
return |
||||||
|
} |
||||||
|
let _this = this; |
||||||
|
uni.showModal({ |
||||||
|
title: '提示', |
||||||
|
content: '确定要删除选中的这些图片吗?', |
||||||
|
success: function(res) { |
||||||
|
if (res.confirm) { |
||||||
|
let params={ |
||||||
|
id:_this.imgSelectList.join(",") |
||||||
|
} |
||||||
|
deleteStoreImg(params).then(res=>{ |
||||||
|
let title ; |
||||||
|
if (res.return_code == '000000') { |
||||||
|
title = res.return_data; |
||||||
|
}else{ |
||||||
|
title = res.return_msg; |
||||||
|
} |
||||||
|
_this.imgSelectList =[]; |
||||||
|
uni.showToast({ |
||||||
|
title: title, |
||||||
|
icon: 'none', |
||||||
|
duration: 2000, |
||||||
|
}) |
||||||
|
setTimeout(()=>{ |
||||||
|
_this.getBsStoreImgByList() |
||||||
|
},2000) |
||||||
|
}) |
||||||
|
|
||||||
|
} else if (res.cancel) { |
||||||
|
|
||||||
|
// console.log('用户点击取消'); |
||||||
|
} |
||||||
|
} |
||||||
|
}); |
||||||
|
|
||||||
|
|
||||||
|
}, |
||||||
|
// checkChange |
||||||
|
checkClick(e) { |
||||||
|
this.imgSelectList = e.detail.value; |
||||||
|
console.log(this.imgSelectList,"this.imgSelectList") |
||||||
|
}, |
||||||
|
} |
||||||
|
|
||||||
|
} |
||||||
|
</script> |
||||||
|
|
||||||
|
<style lang="scss" scoped> |
||||||
|
.width60 { |
||||||
|
width: 60px; |
||||||
|
} |
||||||
|
|
||||||
|
.alin-stretch { |
||||||
|
align-self: stretch; |
||||||
|
} |
||||||
|
|
||||||
|
.btns { |
||||||
|
width: 21%; |
||||||
|
height: 35px; |
||||||
|
line-height: 35px; |
||||||
|
background-color: #0083f5; |
||||||
|
color: #FFFFFF; |
||||||
|
font-weight: bold; |
||||||
|
font-size: 12px; |
||||||
|
padding: 0px; |
||||||
|
} |
||||||
|
|
||||||
|
.bgRed { |
||||||
|
background-color: red; |
||||||
|
} |
||||||
|
.fcRed{ |
||||||
|
color: red; |
||||||
|
} |
||||||
|
// 箭头 |
||||||
|
|
||||||
|
.down{ |
||||||
|
&::after{ |
||||||
|
content: ""; |
||||||
|
display: inline-block; |
||||||
|
border: solid black; |
||||||
|
border-width: 0 1px 1px 0; |
||||||
|
padding: 4px; |
||||||
|
margin-left: 10px; |
||||||
|
vertical-align: 3px; |
||||||
|
transform: rotate(45deg); |
||||||
|
} |
||||||
|
} |
||||||
|
.up{ |
||||||
|
&::after{ |
||||||
|
content: ""; |
||||||
|
display: inline-block; |
||||||
|
border: solid black; |
||||||
|
border-width: 0 2px 2px 0; |
||||||
|
padding: 4px; |
||||||
|
margin-left: 10px; |
||||||
|
// vertical-align: 3px; |
||||||
|
transform: rotate(225deg); |
||||||
|
} |
||||||
|
} |
||||||
|
//checkbox |
||||||
|
.checkContainer{ |
||||||
|
width: 40px; |
||||||
|
// height: 200rpx; |
||||||
|
// line-height: 200rpx; |
||||||
|
// padding-left: 10px; |
||||||
|
} |
||||||
|
.checkFlex{ |
||||||
|
flex: 0.7; |
||||||
|
} |
||||||
|
|
||||||
|
</style> |
@ -0,0 +1,334 @@ |
|||||||
|
<template> |
||||||
|
<view class="all-container pd-main font15" style="padding-bottom: 60px;"> |
||||||
|
<view class="username"> |
||||||
|
<view class="namecont font16">图片类型</view> |
||||||
|
<picker mode="selector" style="width: 70%;" :range="imgTypeList" range-key="text" |
||||||
|
@change="bindImgType"> |
||||||
|
<view class=" text1 marRight10 font14" v-if="imgType"> |
||||||
|
{{imgName}} |
||||||
|
</view> |
||||||
|
<view class=" text1 marRight10 fcor999 font14" v-else> |
||||||
|
请选择图片类型 |
||||||
|
</view> |
||||||
|
</picker> |
||||||
|
<image src="/static/img/jtg.png" mode="widthFix" class="iconw"></image> |
||||||
|
</view> |
||||||
|
<view> |
||||||
|
<view class="imageUploadContainer"> |
||||||
|
<view class="imageUploadList"> |
||||||
|
<view class="imageItem" v-for="(item,index) in imgValue" :key="index"> |
||||||
|
<image :src="imgUrl+item" mode="aspectFill" @click="previewImage(imgUrl+item)" :data-index="index"></image> |
||||||
|
<view v-if="isShowDel" class="imageDel" @click="deleteImage(item)" >x</view> |
||||||
|
</view> |
||||||
|
<view v-if="isShowAdd" class="imageUpload" @click="upload">+</view> |
||||||
|
</view> |
||||||
|
</view> |
||||||
|
|
||||||
|
</view> |
||||||
|
<view class="footer-btn"> |
||||||
|
<button class="backcor89 fcorfff" @click="clickToSave">保存</button> |
||||||
|
</view> |
||||||
|
</view> |
||||||
|
</template> |
||||||
|
|
||||||
|
<script> |
||||||
|
|
||||||
|
import {insertStoreImg} from '@/Utils/groupBuying.js' |
||||||
|
|
||||||
|
const app = getApp(); |
||||||
|
export default { |
||||||
|
data(){ |
||||||
|
return{ |
||||||
|
reqUrl: app.globalData.url, //请求地址 |
||||||
|
imgUrl: app.globalData.imgUrl, //图片访问地址 |
||||||
|
imgTypeList: [ |
||||||
|
{ |
||||||
|
id: 1, |
||||||
|
text: '菜品', |
||||||
|
}, { |
||||||
|
id: 2, |
||||||
|
text: '环境', |
||||||
|
},{ |
||||||
|
id:3, |
||||||
|
text:'菜单' |
||||||
|
} |
||||||
|
], //图片类型 |
||||||
|
imgType: '', //" 1:菜品 2:环境,3:菜单", |
||||||
|
imgName: '', //1:菜品 2:环境,3:菜单", |
||||||
|
/* ================== */ |
||||||
|
imgValue:[], |
||||||
|
merId:'', |
||||||
|
storeId:'', |
||||||
|
|
||||||
|
} |
||||||
|
}, |
||||||
|
|
||||||
|
computed:{ |
||||||
|
isShowDel(){ |
||||||
|
return true |
||||||
|
}, |
||||||
|
isShowAdd(){ |
||||||
|
if(this.imgValue.length>=1){ |
||||||
|
return false |
||||||
|
}else{ |
||||||
|
return true |
||||||
|
} |
||||||
|
}, |
||||||
|
|
||||||
|
}, |
||||||
|
onLoad(options){ |
||||||
|
if(options.storeId){ |
||||||
|
this.storeId = options.storeId; |
||||||
|
} |
||||||
|
}, |
||||||
|
methods:{ |
||||||
|
/* 点击保存 */ |
||||||
|
clickToSave(){ |
||||||
|
if(!this.imgType){ |
||||||
|
uni.showToast({ |
||||||
|
icon:'none', |
||||||
|
title:"请选择图片类型" |
||||||
|
}) |
||||||
|
return |
||||||
|
} |
||||||
|
if(this.imgValue.length==0){ |
||||||
|
uni.showToast({ |
||||||
|
icon:'none', |
||||||
|
title:"请选择图片" |
||||||
|
}) |
||||||
|
return |
||||||
|
} |
||||||
|
this.insertStoreImg(); |
||||||
|
|
||||||
|
}, |
||||||
|
insertStoreImg(){ |
||||||
|
let params={ |
||||||
|
img:this.imgValue.join(","), |
||||||
|
storeId:this.storeId, |
||||||
|
type:this.imgType, |
||||||
|
}; |
||||||
|
console.log(params,"params") |
||||||
|
|
||||||
|
insertStoreImg(params).then(res=>{ |
||||||
|
let title ; |
||||||
|
if (res.return_code == '000000') { |
||||||
|
title = res.return_data; |
||||||
|
}else{ |
||||||
|
title = res.return_msg; |
||||||
|
} |
||||||
|
uni.showToast({ |
||||||
|
title: title, |
||||||
|
icon: 'none', |
||||||
|
duration: 2000 |
||||||
|
}) |
||||||
|
setTimeout(()=>{ |
||||||
|
uni.navigateBack(); |
||||||
|
},2000) |
||||||
|
}) |
||||||
|
}, |
||||||
|
|
||||||
|
// 删除 |
||||||
|
deleteImage(data){ |
||||||
|
let arr = this.imgValue.filter((item)=>item!=data); |
||||||
|
this.imgValue = arr; |
||||||
|
}, |
||||||
|
// 预览 |
||||||
|
previewImage(img){ |
||||||
|
uni.previewImage({ |
||||||
|
current: 0, |
||||||
|
indicator: "number", |
||||||
|
loop: "true", |
||||||
|
urls:[img] |
||||||
|
}) |
||||||
|
}, |
||||||
|
/* ====== */ |
||||||
|
//图片类型 |
||||||
|
bindImgType(e) { |
||||||
|
this.imgType = this.imgTypeList[e.target.value].id; |
||||||
|
this.imgName = this.imgTypeList[e.target.value].text; |
||||||
|
}, |
||||||
|
//上传图片 |
||||||
|
upload() { |
||||||
|
let that = this; |
||||||
|
uni.chooseImage({ |
||||||
|
count: 1, |
||||||
|
sizeType: ['compressed'], //可以指定是原图还是压缩图,默认二者都有 |
||||||
|
sourceType: ['camera', 'album'], |
||||||
|
success: function(res) { |
||||||
|
const tempFilePaths = res.tempFilePaths; |
||||||
|
that.uploadFile(tempFilePaths[0]); |
||||||
|
}, |
||||||
|
error: function(e) { |
||||||
|
console.log(e); |
||||||
|
} |
||||||
|
}); |
||||||
|
}, |
||||||
|
//上传 |
||||||
|
uploadFile(imgURL) { |
||||||
|
const that = this; |
||||||
|
uni.uploadFile({ |
||||||
|
url: that.reqUrl + '/fileUpload/uploadfile', |
||||||
|
filePath: imgURL, |
||||||
|
header: { |
||||||
|
"Authorization": app.globalData.token |
||||||
|
}, |
||||||
|
name: 'files', |
||||||
|
success: function(uploadFileRes) { |
||||||
|
that.getImgSignedUrl(JSON.parse(uploadFileRes.data) |
||||||
|
.return_data); |
||||||
|
} |
||||||
|
}); |
||||||
|
}, |
||||||
|
//查看临时图片路径 |
||||||
|
getImgSignedUrl( item1) { |
||||||
|
this.imgValue.push(item1); |
||||||
|
console.log(this.imgValue,"this.imgValue") |
||||||
|
}, |
||||||
|
|
||||||
|
} |
||||||
|
} |
||||||
|
</script> |
||||||
|
|
||||||
|
<style lang="scss" scoped> |
||||||
|
.username{ |
||||||
|
width: calc(100% - 90upx); |
||||||
|
height: 100upx; |
||||||
|
display: flex; |
||||||
|
align-items: center; |
||||||
|
background-color: rgba($color: #ffffff, $alpha: 0.1); |
||||||
|
border-bottom: 1px solid #f6f6f6; |
||||||
|
padding: 8upx 45upx; |
||||||
|
|
||||||
|
input { |
||||||
|
width: 50%; |
||||||
|
height: 50upx; |
||||||
|
font-size: 16px; |
||||||
|
color: #333333; |
||||||
|
font-weight: blod; |
||||||
|
} |
||||||
|
|
||||||
|
.get-code { |
||||||
|
position: absolute; |
||||||
|
display: flex; |
||||||
|
align-items: center; |
||||||
|
justify-content: center; |
||||||
|
right: 7px; |
||||||
|
z-index: 3; |
||||||
|
border: 1px solid #bfbfbf; |
||||||
|
width: 25%; |
||||||
|
padding: 3px 5px; |
||||||
|
border-radius: 22px; |
||||||
|
|
||||||
|
&:after { |
||||||
|
content: " "; |
||||||
|
width: 1upx; |
||||||
|
height: 50upx; |
||||||
|
position: absolute; |
||||||
|
z-index: 3; |
||||||
|
margin-right: 100%; |
||||||
|
left: 0; |
||||||
|
top: 20upx; |
||||||
|
} |
||||||
|
} |
||||||
|
.namecont { |
||||||
|
color: #666666; |
||||||
|
width: 28%; |
||||||
|
} |
||||||
|
} |
||||||
|
|
||||||
|
/* 图片 */ |
||||||
|
.imageUploadContainer{ |
||||||
|
padding: 10upx 5upx; |
||||||
|
margin: 10upx 5upx; |
||||||
|
} |
||||||
|
.name{ |
||||||
|
text-align: center; |
||||||
|
margin-top:-30upx; |
||||||
|
} |
||||||
|
.dragging{ |
||||||
|
transform: scale(1.2) |
||||||
|
} |
||||||
|
|
||||||
|
.imageUploadList{ |
||||||
|
display: flex; |
||||||
|
flex-wrap: wrap; |
||||||
|
} |
||||||
|
|
||||||
|
.imageItem, .imageUpload{ |
||||||
|
width: 200upx; |
||||||
|
height: 200upx; |
||||||
|
margin: 30upx 15upx 30upx; |
||||||
|
} |
||||||
|
|
||||||
|
.imageDel{ |
||||||
|
position: relative; |
||||||
|
left: 180upx; |
||||||
|
bottom: 225upx; |
||||||
|
background-color: rgba(0,0,0,0.5); |
||||||
|
width: 36upx; |
||||||
|
text-align: center; |
||||||
|
line-height: 35upx; |
||||||
|
border-radius: 17upx; |
||||||
|
color: white; |
||||||
|
font-size: 30upx; |
||||||
|
padding-bottom: 2upx; |
||||||
|
} |
||||||
|
|
||||||
|
.imageItem image, .moveImage{ |
||||||
|
width: 200upx; |
||||||
|
height: 200upx; |
||||||
|
border-radius: 8upx; |
||||||
|
} |
||||||
|
|
||||||
|
.imageUpload{ |
||||||
|
line-height: 200upx; |
||||||
|
text-align: center; |
||||||
|
font-size: 150upx; |
||||||
|
color: #D9D9D9; |
||||||
|
border: 1px solid #D9D9D9; |
||||||
|
border-radius: 8upx; |
||||||
|
} |
||||||
|
|
||||||
|
.moveImage{ |
||||||
|
position: absolute; |
||||||
|
} |
||||||
|
.uni-list { |
||||||
|
width: 260px; |
||||||
|
} |
||||||
|
.popup_foot { |
||||||
|
display: flex; |
||||||
|
border-top: 1px #F9F9F9 solid; |
||||||
|
line-height: 40px; |
||||||
|
height: 40px; |
||||||
|
margin-top: 30px; |
||||||
|
} |
||||||
|
.build_01{ |
||||||
|
line-height: 35px; |
||||||
|
} |
||||||
|
.build_01 input{ |
||||||
|
background: #ededed; |
||||||
|
} |
||||||
|
.popup_foot_l { |
||||||
|
width: 50%; |
||||||
|
text-align: center; |
||||||
|
} |
||||||
|
|
||||||
|
.popup_foot_r { |
||||||
|
width: 50%; |
||||||
|
text-align: center; |
||||||
|
border-left: 1px #F9F9F9 solid; |
||||||
|
color: #5095D3; |
||||||
|
} |
||||||
|
|
||||||
|
/* 底部按钮 */ |
||||||
|
.footer-btn{ |
||||||
|
position: fixed; |
||||||
|
bottom: 0; |
||||||
|
left: 0; |
||||||
|
right: 0; |
||||||
|
button{ |
||||||
|
height: 50px; |
||||||
|
line-height: 50px; |
||||||
|
} |
||||||
|
} |
||||||
|
</style> |
@ -0,0 +1,268 @@ |
|||||||
|
<template> |
||||||
|
<!-- backcorfff backcor6--> |
||||||
|
<view class="all-container pd-main backcor6 font15"> |
||||||
|
<view class=" width100 mart10"> |
||||||
|
<button class="btns " @click.stop="clickToAdd()">新增</button> |
||||||
|
</view> |
||||||
|
<view class="mart20 backcorfff"> |
||||||
|
<view class="dis-flex height40 bor-botm1"> |
||||||
|
<view class="flex-1 fotct fontwig6 " ></view> |
||||||
|
<view class="flex-1 fotct fontwig6">名称</view> |
||||||
|
<view class="flex-1 fotct fontwig6">价格</view> |
||||||
|
<!-- <view class="flex-1 fotct fontwig6">规格</view> --> |
||||||
|
<view class="flex-1 fotct fontwig6">售卖数量</view> |
||||||
|
<view class="flex-1 fotct fontwig6">操作</view> |
||||||
|
</view> |
||||||
|
|
||||||
|
<view class="dis-flex bor-botm1 paddtop5 paddbotm5 " v-for="(item,index) in productList" @click="cilckToShowDetail(item)" :key="index"> |
||||||
|
<view class="flex-1 fotct"> |
||||||
|
<image :src="imgUrl+item.img" @click.stop="previewImage(imgUrl+item.img)" mode="aspectFit" class="width100 height60 verc"></image> |
||||||
|
</view> |
||||||
|
<view class="flex-1 fotct text1">{{item.name}}</view> |
||||||
|
<view class="flex-1 fotct">{{item.price}}</view> |
||||||
|
<!-- <view class="flex-1 fotct text1">{{item.spec}}</view> --> |
||||||
|
<view class="flex-1 fotct">{{item.saleCount}}</view> |
||||||
|
<view class="flex-1 fotct fcor41c" @click.stop="clickToEdit(item)">编辑</view> |
||||||
|
</view> |
||||||
|
|
||||||
|
</view> |
||||||
|
<wybPopup ref="popup" @hide="hide()" zIndex="999" type="bottom" height="500" width="500" :scrollY="true" |
||||||
|
radius="6" :showCloseIcon="true"> |
||||||
|
<view class="pop-contain pd-main"> |
||||||
|
<view class="pop-title fontwig6"><text>详情</text></view> |
||||||
|
|
||||||
|
<view class="dis-flex flex-wrap" v-if="productDetail"> |
||||||
|
<view class="width100 dis-flex bor-botm1"> |
||||||
|
<view class=" fotct fontwig6 backcor6 titleWidth minheight40">名称</view> |
||||||
|
<view class="flex-1 fotct ">{{productDetail.name}}</view> |
||||||
|
</view> |
||||||
|
<view class="width100 dis-flex bor-botm1"> |
||||||
|
<view class=" fotct fontwig6 backcor6 titleWidth minheight40">价格</view> |
||||||
|
<view class="flex-1 fotct ">{{productDetail.price}}</view> |
||||||
|
</view> |
||||||
|
<view class="width100 dis-flex bor-botm1"> |
||||||
|
<view class=" fotct fontwig6 backcor6 titleWidth minheight40">规格</view> |
||||||
|
<view class="flex-1 fotct ">{{productDetail.spec}}</view> |
||||||
|
</view> |
||||||
|
<view class="width100 dis-flex bor-botm1"> |
||||||
|
<view class=" fotct fontwig6 backcor6 titleWidth minheight40">售卖数量</view> |
||||||
|
<view class="flex-1 fotct ">{{productDetail.saleCount}}</view> |
||||||
|
</view> |
||||||
|
<view class="width100 dis-flex "> |
||||||
|
<view class=" fotct fontwig6 backcor6 titleWidth minheight80">图片</view> |
||||||
|
<view class="flex-1 fotct "> |
||||||
|
<image :src="imgUrl+productDetail.img" @click.stop="previewImage(imgUrl+productDetail.img)" mode="aspectFit" class="width100 height60 verc"></image> |
||||||
|
</view> |
||||||
|
</view> |
||||||
|
</view> |
||||||
|
|
||||||
|
|
||||||
|
</view> |
||||||
|
</wybPopup> |
||||||
|
</view> |
||||||
|
</template> |
||||||
|
|
||||||
|
<script> |
||||||
|
|
||||||
|
|
||||||
|
import {getStoreProductByList,getStoreProductById |
||||||
|
} from '@/Utils/groupBuying.js'; |
||||||
|
import wybPopup from '@/components/wyb-popup/wyb-popup.vue' |
||||||
|
const app = getApp(); |
||||||
|
export default { |
||||||
|
data() { |
||||||
|
return { |
||||||
|
imgUrl: app.globalData.imgUrl, //图片访问地址 |
||||||
|
storeId:"",//门店id |
||||||
|
productList:[], |
||||||
|
productDetail:null, |
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
} |
||||||
|
}, |
||||||
|
|
||||||
|
onLoad(options){ |
||||||
|
if(options.storeId){ |
||||||
|
this.storeId = options.storeId; |
||||||
|
} |
||||||
|
|
||||||
|
|
||||||
|
}, |
||||||
|
onShow(){ |
||||||
|
this.getStoreProductByList(); |
||||||
|
}, |
||||||
|
components:{ |
||||||
|
wybPopup |
||||||
|
}, |
||||||
|
filters:{ |
||||||
|
/* filterType(type){ |
||||||
|
switch (type) { |
||||||
|
case 1: |
||||||
|
return "菜品"; |
||||||
|
case 2: |
||||||
|
return "环境"; |
||||||
|
case 3: |
||||||
|
return "菜单"; |
||||||
|
|
||||||
|
default: |
||||||
|
return "未知"; |
||||||
|
} |
||||||
|
|
||||||
|
}, |
||||||
|
filterStatus(value){ |
||||||
|
switch (value) { |
||||||
|
case 1: |
||||||
|
return "正常"; |
||||||
|
case 0: |
||||||
|
return "失败"; |
||||||
|
default: |
||||||
|
return "未知"; |
||||||
|
} |
||||||
|
} */ |
||||||
|
}, |
||||||
|
methods: { |
||||||
|
/* 获取列表 */ |
||||||
|
getStoreProductByList(){ |
||||||
|
let params={ |
||||||
|
storeId:this.storeId, |
||||||
|
} |
||||||
|
uni.showLoading({ |
||||||
|
title:"加载中", |
||||||
|
mask:true, |
||||||
|
}) |
||||||
|
getStoreProductByList(params).then(res=>{ |
||||||
|
uni.hideLoading(); |
||||||
|
if (res.return_code == '000000') { |
||||||
|
this.productList = res.return_data; |
||||||
|
}else{ |
||||||
|
uni.showToast({ |
||||||
|
title: res.return_msg, |
||||||
|
icon: 'none', |
||||||
|
duration: 2000 |
||||||
|
}) |
||||||
|
} |
||||||
|
}) |
||||||
|
}, |
||||||
|
/* 点击行显示详情 */ |
||||||
|
cilckToShowDetail(data){ |
||||||
|
uni.showLoading({ |
||||||
|
title:"加载中", |
||||||
|
}) |
||||||
|
let params={ |
||||||
|
id:data.id |
||||||
|
} |
||||||
|
getStoreProductById(params).then(res=>{ |
||||||
|
uni.hideLoading(); |
||||||
|
if (res.return_code == '000000') { |
||||||
|
this.$refs.popup.show(); |
||||||
|
this.productDetail =res.return_data; |
||||||
|
|
||||||
|
}else{ |
||||||
|
uni.showToast({ |
||||||
|
title: res.return_msg, |
||||||
|
icon: 'none', |
||||||
|
duration: 2000 |
||||||
|
}) |
||||||
|
} |
||||||
|
}) |
||||||
|
|
||||||
|
|
||||||
|
}, |
||||||
|
hide(){ |
||||||
|
this.productDetail=null; |
||||||
|
}, |
||||||
|
|
||||||
|
// 预览 |
||||||
|
previewImage(img){ |
||||||
|
uni.previewImage({ |
||||||
|
current: 0, |
||||||
|
indicator: "number", |
||||||
|
loop: "true", |
||||||
|
urls:[img] |
||||||
|
}) |
||||||
|
}, |
||||||
|
|
||||||
|
/* 点击去新增页面 */ |
||||||
|
clickToAdd(){ |
||||||
|
let that = this; |
||||||
|
uni.navigateTo({ |
||||||
|
url:"./storeProductAdd?status=1&storeId="+that.storeId |
||||||
|
}) |
||||||
|
}, |
||||||
|
/* 点击去编辑 */ |
||||||
|
clickToEdit(data){ |
||||||
|
let that = this; |
||||||
|
uni.navigateTo({ |
||||||
|
url:"./storeProductAdd?status=2&storeId="+that.storeId+"&id="+data.id |
||||||
|
}) |
||||||
|
}, |
||||||
|
|
||||||
|
} |
||||||
|
|
||||||
|
} |
||||||
|
</script> |
||||||
|
|
||||||
|
<style lang="scss" scoped> |
||||||
|
.width60 { |
||||||
|
width: 60px; |
||||||
|
} |
||||||
|
|
||||||
|
.alin-stretch { |
||||||
|
align-self: stretch; |
||||||
|
} |
||||||
|
|
||||||
|
.btns { |
||||||
|
width: 21%; |
||||||
|
height: 35px; |
||||||
|
line-height: 35px; |
||||||
|
background-color: #0083f5; |
||||||
|
color: #FFFFFF; |
||||||
|
font-weight: bold; |
||||||
|
font-size: 12px; |
||||||
|
padding: 0px; |
||||||
|
margin: 0 0 0 auto; |
||||||
|
} |
||||||
|
|
||||||
|
.bgRed { |
||||||
|
background-color: red; |
||||||
|
} |
||||||
|
.fcRed{ |
||||||
|
color: red; |
||||||
|
} |
||||||
|
|
||||||
|
/* 弹窗 */ |
||||||
|
.pop-contain { |
||||||
|
text-align: center; |
||||||
|
padding-top: 50px; |
||||||
|
background-color: #ffffff; |
||||||
|
|
||||||
|
.pop-title { |
||||||
|
text-align: center; |
||||||
|
height: 50px; |
||||||
|
line-height: 50px; |
||||||
|
font-size: 18px; |
||||||
|
position: fixed; |
||||||
|
z-index: 10; |
||||||
|
top: 0; |
||||||
|
left: 0; |
||||||
|
right: 0; |
||||||
|
background: #ffffff; |
||||||
|
|
||||||
|
} |
||||||
|
} |
||||||
|
.flex-wrap{ |
||||||
|
flex-wrap: wrap; |
||||||
|
} |
||||||
|
.titleWidth{ |
||||||
|
width: 80px; |
||||||
|
text-align: center; |
||||||
|
} |
||||||
|
.minheight40{ |
||||||
|
padding: 15px 0; |
||||||
|
} |
||||||
|
.minheight80{ |
||||||
|
min-height: 80px; |
||||||
|
line-height: 80px; |
||||||
|
} |
||||||
|
</style> |
@ -0,0 +1,389 @@ |
|||||||
|
<template> |
||||||
|
<view class="all-container pd-main font18 backcor6" style="padding-bottom: 60px;"> |
||||||
|
<view class="form-gorup backcorfff"> |
||||||
|
<view class="dis-flex marb10 bor-botm1"> |
||||||
|
<view class=" marRight10 fontwig6 padleft15 paddtright10">名称: |
||||||
|
</view> |
||||||
|
<input type="text" name="name" v-model.trim="productData.name" placeholder-class="corf6" |
||||||
|
class=" flex-1 " placeholder="请输入名称"> |
||||||
|
</view> |
||||||
|
<view class="dis-flex marb10 bor-botm1"> |
||||||
|
<view class=" marRight10 fontwig6 padleft15 paddtright10">价格: |
||||||
|
</view> |
||||||
|
<input type="digit" name="name" v-model.trim="productData.price" placeholder-class="corf6" |
||||||
|
class=" flex-1 " placeholder="请输入价格(保留两位小数)"> |
||||||
|
</view> |
||||||
|
<view class="dis-flex marb10 bor-botm1"> |
||||||
|
<view class=" marRight10 fontwig6 padleft15 paddtright10">规格: |
||||||
|
</view> |
||||||
|
<input type="text" name="name" v-model.trim="productData.spec" placeholder-class="corf6" |
||||||
|
class=" flex-1 " placeholder="请输入规格"> |
||||||
|
</view> |
||||||
|
<view class="imageUploadContainer"> |
||||||
|
<view class="imageUploadList"> |
||||||
|
<view class="imageItem" v-for="(item,index) in imgValue" :key="index"> |
||||||
|
<image :src="imgUrl+item" mode="aspectFill" @click="previewImage(imgUrl+item)" :data-index="index"></image> |
||||||
|
<view v-if="isShowDel" class="imageDel" @click="deleteImage(item)" >x</view> |
||||||
|
</view> |
||||||
|
<view v-if="isShowAdd" class="imageUpload" @click="upload">+</view> |
||||||
|
</view> |
||||||
|
</view> |
||||||
|
</view> |
||||||
|
|
||||||
|
<view class="footer-btn"> |
||||||
|
<button class="backcor89 fcorfff" @click="clickToSave">保存</button> |
||||||
|
</view> |
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
</view> |
||||||
|
</template> |
||||||
|
|
||||||
|
<script> |
||||||
|
import {insertStoreProduct,getStoreProductById,editStoreProduct} from '@/Utils/groupBuying.js' |
||||||
|
|
||||||
|
const app = getApp(); |
||||||
|
export default { |
||||||
|
data(){ |
||||||
|
return{ |
||||||
|
reqUrl: app.globalData.url, //请求地址 |
||||||
|
imgUrl: app.globalData.imgUrl, //图片访问地址 |
||||||
|
status:'',//1.新增 2.编辑 |
||||||
|
productData:{ |
||||||
|
name:'',//名称 |
||||||
|
price:'',//价格 |
||||||
|
spec:'',//规格 |
||||||
|
storeId:'',//门店id |
||||||
|
img:'',//图片 |
||||||
|
|
||||||
|
}, |
||||||
|
imgValue:[],//图片 |
||||||
|
|
||||||
|
} |
||||||
|
}, |
||||||
|
|
||||||
|
computed:{ |
||||||
|
isShowDel(){ |
||||||
|
return true |
||||||
|
}, |
||||||
|
isShowAdd(){ |
||||||
|
if(this.imgValue.length>=1){ |
||||||
|
return false |
||||||
|
}else{ |
||||||
|
return true |
||||||
|
} |
||||||
|
}, |
||||||
|
|
||||||
|
}, |
||||||
|
onLoad(option) { |
||||||
|
this.productData.storeId = option.storeId; |
||||||
|
this.status=option.status; |
||||||
|
if(this.status==1){ |
||||||
|
uni.setNavigationBarTitle({ |
||||||
|
title:"添加产品" |
||||||
|
}) |
||||||
|
}else{ |
||||||
|
uni.setNavigationBarTitle({ |
||||||
|
title:"编辑产品" |
||||||
|
}) |
||||||
|
} |
||||||
|
if(option.id){ |
||||||
|
this.productData.id =option.id; |
||||||
|
this.getStoreProductById() |
||||||
|
} |
||||||
|
console.log(option,"=======") |
||||||
|
}, |
||||||
|
methods:{ |
||||||
|
|
||||||
|
clickToSave(){ |
||||||
|
|
||||||
|
if(!this.validate()) return; |
||||||
|
|
||||||
|
this.productData.img = this.imgValue.join(""); |
||||||
|
|
||||||
|
if(this.status==1){//1.新增 2.编辑 |
||||||
|
this.insertStoreProduct() |
||||||
|
return |
||||||
|
} |
||||||
|
if(this.status==2){ |
||||||
|
this.editStoreProduct() |
||||||
|
} |
||||||
|
|
||||||
|
|
||||||
|
}, |
||||||
|
/* 根据id查询详情 */ |
||||||
|
getStoreProductById(){ |
||||||
|
uni.showLoading({ |
||||||
|
title:"加载中", |
||||||
|
}) |
||||||
|
let that =this; |
||||||
|
let params={ |
||||||
|
id:that.productData.id |
||||||
|
} |
||||||
|
getStoreProductById(params).then(res=>{ |
||||||
|
uni.hideLoading(); |
||||||
|
if (res.return_code == '000000') { |
||||||
|
console.log(res.return_data) ; |
||||||
|
this.productData.name = res.return_data.name; |
||||||
|
this.productData.price = res.return_data.price; |
||||||
|
this.productData.spec = res.return_data.spec; |
||||||
|
this.productData.img = res.return_data.img; |
||||||
|
this.imgValue.push(res.return_data.img); |
||||||
|
}else{ |
||||||
|
uni.showToast({ |
||||||
|
title: res.return_msg, |
||||||
|
icon: 'none', |
||||||
|
duration: 2000 |
||||||
|
}) |
||||||
|
} |
||||||
|
}) |
||||||
|
}, |
||||||
|
/* 增加 */ |
||||||
|
insertStoreProduct(){ |
||||||
|
insertStoreProduct(this.productData).then(res=>{ |
||||||
|
let title ; |
||||||
|
if (res.return_code == '000000') { |
||||||
|
title = res.return_data; |
||||||
|
}else{ |
||||||
|
title = res.return_msg; |
||||||
|
} |
||||||
|
uni.showToast({ |
||||||
|
title: title, |
||||||
|
icon: 'none', |
||||||
|
duration: 2000 |
||||||
|
}) |
||||||
|
setTimeout(()=>{ |
||||||
|
uni.navigateBack(); |
||||||
|
},1000) |
||||||
|
}) |
||||||
|
}, |
||||||
|
/* 修改 */ |
||||||
|
editStoreProduct(){ |
||||||
|
editStoreProduct(this.productData).then(res=>{ |
||||||
|
let title ; |
||||||
|
if (res.return_code == '000000') { |
||||||
|
title = res.return_data; |
||||||
|
}else{ |
||||||
|
title = res.return_msg; |
||||||
|
} |
||||||
|
uni.showToast({ |
||||||
|
title: title, |
||||||
|
icon: 'none', |
||||||
|
duration: 2000 |
||||||
|
}) |
||||||
|
setTimeout(()=>{ |
||||||
|
uni.navigateBack(); |
||||||
|
},1000) |
||||||
|
}) |
||||||
|
}, |
||||||
|
validate(){ |
||||||
|
var reg = /(^[1-9](\d+)?(\.\d{1,2})?$)|(^0$)|(^\d\.\d{1,2}$)/; |
||||||
|
if(!reg.test(this.productData.price)||this.productData.price==0){ |
||||||
|
uni.showToast({ |
||||||
|
title:"请输入正确的金额格式", |
||||||
|
icon:"none" |
||||||
|
}) |
||||||
|
this.productData.price=""; |
||||||
|
return |
||||||
|
} |
||||||
|
|
||||||
|
|
||||||
|
if(!this.productData.name||!this.productData.price||!this.productData.spec){ |
||||||
|
uni.showToast({ |
||||||
|
title:"请填写完整哦!", |
||||||
|
icon:"none" |
||||||
|
}) |
||||||
|
return false |
||||||
|
} |
||||||
|
if(this.imgValue.length==0){ |
||||||
|
uni.showToast({ |
||||||
|
title:"请选择图片上传", |
||||||
|
icon:"none" |
||||||
|
}) |
||||||
|
return false |
||||||
|
} |
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
return true |
||||||
|
}, |
||||||
|
|
||||||
|
// 删除图片 |
||||||
|
deleteImage(data){ |
||||||
|
let arr = this.imgValue.filter((item)=>item!=data); |
||||||
|
this.imgValue = arr; |
||||||
|
}, |
||||||
|
// 预览 |
||||||
|
previewImage(img){ |
||||||
|
uni.previewImage({ |
||||||
|
current: 0, |
||||||
|
indicator: "number", |
||||||
|
loop: "true", |
||||||
|
urls:[img] |
||||||
|
}) |
||||||
|
}, |
||||||
|
//上传图片 |
||||||
|
upload() { |
||||||
|
let that = this; |
||||||
|
uni.chooseImage({ |
||||||
|
count: 1, |
||||||
|
sizeType: ['compressed'], //可以指定是原图还是压缩图,默认二者都有 |
||||||
|
sourceType: ['camera', 'album'], |
||||||
|
success: function(res) { |
||||||
|
const tempFilePaths = res.tempFilePaths; |
||||||
|
that.uploadFile(tempFilePaths[0]); |
||||||
|
}, |
||||||
|
error: function(e) { |
||||||
|
console.log(e); |
||||||
|
} |
||||||
|
}); |
||||||
|
}, |
||||||
|
//上传 |
||||||
|
uploadFile(imgURL) { |
||||||
|
const that = this; |
||||||
|
uni.uploadFile({ |
||||||
|
url: that.reqUrl + '/fileUpload/uploadfile', |
||||||
|
filePath: imgURL, |
||||||
|
header: { |
||||||
|
"Authorization": app.globalData.token |
||||||
|
}, |
||||||
|
name: 'files', |
||||||
|
success: function(uploadFileRes) { |
||||||
|
that.getImgSignedUrl(JSON.parse(uploadFileRes.data) |
||||||
|
.return_data); |
||||||
|
} |
||||||
|
}); |
||||||
|
}, |
||||||
|
//查看临时图片路径 |
||||||
|
getImgSignedUrl( item1) { |
||||||
|
this.imgValue.push(item1); |
||||||
|
console.log(this.imgValue,"this.imgValue") |
||||||
|
}, |
||||||
|
} |
||||||
|
} |
||||||
|
</script> |
||||||
|
|
||||||
|
<style lang="scss" scoped> |
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
/* 表单 */ |
||||||
|
.form-gorup { |
||||||
|
padding: 20rpx; |
||||||
|
margin-bottom: 20rpx; |
||||||
|
border-radius: 20rpx; |
||||||
|
|
||||||
|
input { |
||||||
|
height: 40px; |
||||||
|
line-height: 40px; |
||||||
|
border-radius: 0; |
||||||
|
box-sizing: border-box; |
||||||
|
} |
||||||
|
} |
||||||
|
.form-gorup-title { |
||||||
|
padding: 20rpx 0; |
||||||
|
margin-bottom: 5rpx; |
||||||
|
font-weight: 500; |
||||||
|
|
||||||
|
width: 74px; |
||||||
|
white-space: nowrap; |
||||||
|
text-align: right; |
||||||
|
} |
||||||
|
|
||||||
|
/* 图片 */ |
||||||
|
.imageUploadContainer{ |
||||||
|
padding: 10upx 5upx; |
||||||
|
margin: 10upx 5upx; |
||||||
|
} |
||||||
|
.name{ |
||||||
|
text-align: center; |
||||||
|
margin-top:-30upx; |
||||||
|
} |
||||||
|
.dragging{ |
||||||
|
transform: scale(1.2) |
||||||
|
} |
||||||
|
|
||||||
|
.imageUploadList{ |
||||||
|
display: flex; |
||||||
|
flex-wrap: wrap; |
||||||
|
} |
||||||
|
|
||||||
|
.imageItem, .imageUpload{ |
||||||
|
width: 200upx; |
||||||
|
height: 200upx; |
||||||
|
margin: 30upx 15upx 30upx; |
||||||
|
} |
||||||
|
|
||||||
|
.imageDel{ |
||||||
|
position: relative; |
||||||
|
left: 180upx; |
||||||
|
bottom: 225upx; |
||||||
|
background-color: rgba(0,0,0,0.5); |
||||||
|
width: 36upx; |
||||||
|
text-align: center; |
||||||
|
line-height: 35upx; |
||||||
|
border-radius: 17upx; |
||||||
|
color: white; |
||||||
|
font-size: 30upx; |
||||||
|
padding-bottom: 2upx; |
||||||
|
} |
||||||
|
|
||||||
|
.imageItem image, .moveImage{ |
||||||
|
width: 200upx; |
||||||
|
height: 200upx; |
||||||
|
border-radius: 8upx; |
||||||
|
} |
||||||
|
|
||||||
|
.imageUpload{ |
||||||
|
line-height: 200upx; |
||||||
|
text-align: center; |
||||||
|
font-size: 150upx; |
||||||
|
color: #D9D9D9; |
||||||
|
border: 1px solid #D9D9D9; |
||||||
|
border-radius: 8upx; |
||||||
|
} |
||||||
|
|
||||||
|
.moveImage{ |
||||||
|
position: absolute; |
||||||
|
} |
||||||
|
.uni-list { |
||||||
|
width: 260px; |
||||||
|
} |
||||||
|
.popup_foot { |
||||||
|
display: flex; |
||||||
|
border-top: 1px #F9F9F9 solid; |
||||||
|
line-height: 40px; |
||||||
|
height: 40px; |
||||||
|
margin-top: 30px; |
||||||
|
} |
||||||
|
.build_01{ |
||||||
|
line-height: 35px; |
||||||
|
} |
||||||
|
.build_01 input{ |
||||||
|
background: #ededed; |
||||||
|
} |
||||||
|
.popup_foot_l { |
||||||
|
width: 50%; |
||||||
|
text-align: center; |
||||||
|
} |
||||||
|
|
||||||
|
.popup_foot_r { |
||||||
|
width: 50%; |
||||||
|
text-align: center; |
||||||
|
border-left: 1px #F9F9F9 solid; |
||||||
|
color: #5095D3; |
||||||
|
} |
||||||
|
|
||||||
|
/* 底部按钮 */ |
||||||
|
.footer-btn{ |
||||||
|
position: fixed; |
||||||
|
bottom: 0; |
||||||
|
left: 0; |
||||||
|
right: 0; |
||||||
|
button{ |
||||||
|
height: 50px; |
||||||
|
line-height: 50px; |
||||||
|
} |
||||||
|
} |
||||||
|
</style> |
Loading…
Reference in new issue