You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 

739 lines
21 KiB

<template>
<view id="page">
<!-- 顶部 -->
<view class="top">
<NavBar ref="nav" navTitle=" " :showIcon="false" :start-change-height="page.startHeight"
:end-change-height="page.endHeight">
</NavBar>
</view>
<!-- 功能区 -->
<view class="func-area">
<view class="center">
<!-- 左侧菜单区 -->
<view class="menu-area">
<!-- 左侧菜单列表 -->
<scroll-view scroll-y="true" style="height: 100%; width: 100%;border-bottom-left-radius: 25px;"
:scroll-top="scrollLeftTop" bindscrolltoupper="upper" bindscrolltolower="lower"
:show-scrollbar="false" :enhanced="true" bindscroll="scroll">
<view class="menu">
<view v-for="(item,index) in data" @click="labelClick(index,item)" class="method">
<text class="label" :class="{'label-selected':selectIndex==index}">{{item.name}}</text>
<view v-if="item.count>0" class="goods-count">{{item.count}}</view>
</view>
</view>
</scroll-view>
</view>
<view style="width: 78%;background-color: #fff;overflow-y: auto;">
<scroll-view scroll-y="true" style="height: 100%; width: 100%;padding-left: 10px;padding-right: 10px;box-sizing: border-box;" bindscrolltoupper="upper"
bindscrolltolower="lower" bindscroll="scroll" :show-scrollbar="false"
:scroll-top="scrollRightTop" :enhanced="true">
<view style="width: 100%; display: flex;flex-direction: column;box-sizing: border-box;">
<view v-for="(item,index) in goods" @click="itemClick(item.goodsSid)"
style="display: flex;flex-direction: column;justify-content: center;width: 100%; margin-top: 15px; ">
<view style="display: flex;flex-direction: row;align-items: center;width: 100%; ">
<image :src="item.iconUrl" style="width: 90px;height: 90px; border-radius: 10px; "
mode="aspectFill"></image>
<view
style="display: flex;flex-direction: column;flex: 1; padding-bottom: 15px; margin-left: 10px;"
:style="{'border-bottom':(index == goods.length-1 ? 'none' : '1px #EFEFEF solid')}">
<text style="font-size: 13px;color: #000;">{{item.name}}</text>
<text
style="font-size: 10px;color: #999;margin-top: 5px;">{{item.remark}}</text>
<view
style="display: flex;flex-direction: row;align-items: center;margin-top: 8px;">
<text
style="border: 1px #EE752F solid; border-radius: 5px; padding: 0px 8px;
font-size: 10px;color: #EE752F; margin-right: 10px; ">{{item.weight}}{{item.specificationUnit}}/{{item.unitName}}</text>
<text
style="border: 1px #EE752F solid; background: #FF9900; color: #fff; font-size: 10px;border-radius: 5px; padding: 0px 8px;"
v-if="item.type=='0'">百姓菜!</text>
<text
style="border: 1px #3AA15F solid; background: #40C772; color: #fff; font-size: 10px;border-radius: 5px; padding: 0px 8px;"
v-if="item.type=='1'">精品菜!</text>
<text
style="border: 1px #1D60C7 solid; background: #2489F7; color: #fff; font-size: 10px;border-radius: 5px; padding: 0px 8px;"
v-if="item.type=='2'">企业菜!</text>
</view>
<view style="display: flex;flex-direction: row;align-items: center;justify-content: space-between; margin-top: 15px;
margin-right: 15px;">
<view style="display: flex;flex-direction: row;align-items: center;">
<text style="font-size: 12px;color: #666;">存量:</text>
<text
style="font-size: 14px;color: #FF5006;">{{item.goodsNumber}}{{item.unitName}}</text>
</view>
<view style="display: flex;flex-direction: row;align-items: center;">
<image src="../../static/jian_icon.png" mode="aspectFill"
style="width: 20px;height: 20px;" @click.stop="jian(item)"></image>
<text
style="font-size: 14px;margin-left: 8px;margin-right: 8px;">{{item.count}}</text>
<image src="../../static/jia_icon.png" mode="aspectFill"
style="width: 20px;height: 20px;" @click.stop="jia(item)"></image>
</view>
</view>
</view>
</view>
</view>
<view v-if="notData"
style="display: flex;flex-direction: column;justify-content: center;align-items: center;margin-top: 10vw;">
<image src="https://supervise.yxtsoft.com/lpk/image/buchongcaijiao.png" mode="aspectFit"
style="width: 50vw;height: 50vw;"></image>
<view style="display: flex;flex-direction: row;align-items: center;margin-top: 15px;">
<text style="font-size: 14px; color: #666;margin-right: 5px;">您的菜窖为空,请</text>
<text
style="background: #FF9900; border-radius: 8px; padding: 3px 8px; color: #fff;"
@click="gotoShopp()">补充菜窖</text>
</view>
</view>
</view>
</scroll-view>
</view>
</view>
<view class="bottom">
<view
style="display: flex;flex-direction: row; justify-content: center;align-items: center;padding-bottom: 10px;margin-top: 5px;padding: 0px 10px;">
<text style="background: #FF9900;
color: #fff;
height: 42px;
line-height: 40px;
font-size: 13px;
padding: 0px 15px;
border: 1px #FF5006 solid;
border-top-left-radius: 25px;
border-bottom-left-radius: 25px;
border-top-right-radius: 0px;
border-bottom-right-radius: 0px;" @click="transfer()">转赠亲友</text>
<view style="border: 1px #FF5006 solid;margin-left: 5px;margin-right: 5px;padding: 0px 10px;height: 42px;flex: 1;
display: flex;flex-direction: row;align-items: center;box-sizing: border-box;" @click="gotoCart()">
<!-- image src="../../static/shoppCart_icon.png" mode="aspectFill"
style="height: 20px;width: 25px;"></image> -->
<text style="font-size: 12px;color: #666;margin-left: 10px; ">选中</text>
<text style="font-size: 15px;color: #FF5006;margin-left: 10px; ">{{page.count}}</text>
<text style="font-size: 12px;color: #666;margin-left: 10px; ">份蔬菜</text>
</view>
<text style="background: #FF9900; color: #fff;font-size: 13px; padding: 0px 15px;height: 40px;line-height: 40px;
border: 1px #FF5006 solid; border-top-right-radius: 25px; border-bottom-right-radius: 25px;flex-shrink: 0;"
@click="reservation()">预约提菜</text>
</view>
</view>
</view>
<!-- 礼包列表弹框 -->
<view class="model" catchtouchmove='preventTouchMove' v-if='showModal2'></view>
<view class="modalDlg2" catchtouchmove='preventTouchMove' v-if='showModal2'>
<view style="display: flex;flex-direction: column;justify-content: center;align-items: center;
background: #fff; margin-top: -50px;">
<image src="https://supervise.yxtsoft.com/lpk/image/newpor_top" mode="aspectFill"
style="margin-left: 5vw;margin-right: 5vw; height: 5vw;"></image>
<view style="display: flex;flex-direction: column;overflow-y: auto;">
<radio-group bindchange="radioChange">
<view v-for="(item,index) in newPerGiftList" class="device-list">
<view>
<radio :value="item.goodsSid" checked="true" />
</view>
<view style="display: flex;flex-direction: row;align-items: center;">
<image :src="item.iconUrl" mode="aspectFill"
style="border-radius: 8px;width: 36px;height: 36px;"></image>
<text style="font-size: 14px;color: #101010;margin-left: 5px;">{{item.name}}</text>
<text
style="font-size: 14px;color: #101010;margin-left: 10px;">{{item.weight}}{{item.specificationUnit}}</text>
<text style="font-size: 16px;color: #FF5006;margin-left: 20px;">¥{{item.name}}</text>
<text
style="font-size: 14px;color: #999;text-decoration:line-through;margin-left: 10px;">¥{{item.mefenPrice}}</text>
</view>
</view>
</radio-group>
</view>
<view>
<text>确认结算</text>
</view>
</view>
</view>
<!-- 转赠弹框 -->
<view class="model" catchtouchmove='preventTouchMove' v-if='showModal3' @click="colseDialog3()"></view>
<view class="modalDlg3" catchtouchmove='preventTouchMove' v-if='showModal3'>
<view style="display: flex;flex-direction: column;background: #fff;
padding: 10px 20px;overflow-y: auto;">
<text
style="font-size: 15px;color: #000;font-weight: 600;font-family: sans-serif;margin-top: 10px;margin-bottom:10px ;">转赠蔬菜列表</text>
<view style="display: flex;flex-direction: column;overflow-y: auto;">
<view v-for="(item,index) in goods"
style="display: flex;flex-direction: row;margin-top: 15px; margin-bottom: 10px;">
<view style="display: flex;flex-direction: row;align-items: center;width: 100%; ">
<image :src="item.iconUrl" style="width: 90px;height: 90px; border-radius: 10px; "
mode="aspectFill" @click="itemClick(item.goodsSid)"></image>
<view
style="display: flex;flex-direction: column;flex: 1; padding-bottom: 15px; margin-left: 10px;"
:style="{'border-bottom':(index == goods.length-1 ? 'none' : '1px #EFEFEF solid')}">
<text style="font-size: 14px;color: #000; font-weight: 600;">{{item.name}}</text>
<text style="font-size: 10px;color: #999;margin-top: 5px;">{{item.remark}}</text>
<view style="display: flex;flex-direction: row;align-items: center;margin-top: 8px;">
<text style="border: 1px #EE752F solid; border-radius: 5px; padding: 0px 8px;
font-size: 10px;color: #EE752F;">{{item.weight}}{{item.specificationUnit}}/{{item.unitName}}</text>
<text
style="border: 1px #EE752F solid; background: #FF9900;margin-left: 10px; color: #fff; font-size: 10px;border-radius: 5px; padding: 0px 8px;"
v-if="item.type=='0'">百姓菜!</text>
<text
style="border: 1px #3AA15F solid; background: #40C772;margin-left: 10px; color: #fff; font-size: 10px;border-radius: 5px; padding: 0px 8px;"
v-if="item.type=='1'">精品菜!</text>
<text
style="border: 1px #1D60C7 solid; background: #2489F7;margin-left: 10px; color: #fff; font-size: 10px;border-radius: 5px; padding: 0px 8px;"
v-if="item.type=='2'">企业菜!</text>
</view>
<view style="display: flex;flex-direction: row;align-items: center;justify-content: space-between; margin-top: 15px;
margin-right: 15px;">
<view style="display: flex;flex-direction: row;align-items: center;">
<text style="font-size: 10px;color: #FF5006;">剩余:</text>
<text
style="font-size: 14px;color: #FF5006;">{{item.goodsNumber}}{{item.unitName}}</text>
</view>
<view style="display: flex;flex-direction: row;align-items: center;">
<image src="../../static/jian_icon.png" mode="aspectFill"
style="width: 20px;height: 20px;" @click.stop="jian(item)"></image>
<text
style="font-size: 14px;margin-left: 8px;margin-right: 8px;">{{item.count}}</text>
<image src="../../static/jia_icon.png" mode="aspectFill"
style="width: 20px;height: 20px;" @click.stop="jia(item)"></image>
</view>
</view>
</view>
</view>
</view>
</view>
<view style="display: flex;flex-direction: row;align-items: center;margin-top: 15px;">
<text style="font-size: 14px;margin-right: 10px;font-weight: 600;">转赠留言</text>
<input placeholder="可以写下您对亲友的祝福"
style="font-size: 30rpx;flex: 1;background: #F2F2F2;border-radius: 5px;height: 40px;line-height: 40px;padding-left: 10px;padding-right: 10px;"
:value="transferInfo.remarks" @input="onKeyInput" />
</view>
<!-- <view style="display: flex;flex-direction: row;align-items: center;margin-top: 15px;">
<checkbox @change="checboxChange()" color="#FF9900" style="transform:scale(0.7)"></checkbox>
<view style="display: flex;flex-direction: row;align-items: center;">
<text style="color: #A4A4A4; font-size: 12px;">我已阅读并同意</text>
<text style="color: #5B7096; font-size: 12px;">《蔬菜转赠协议》</text>
</view>
</view> -->
<button open-type="share">确认</button>
</view>
</view>
</view>
</view>
</template>
<script>
export default {
data() {
return {
notData: false,
showModal: false,
showModal2: false,
showModal3: false,
brandType: "0",
styleObject: {
// 'position': 'fixed',
// 'top':'80vw',
'margin-top': '62vw',
'border-top-left-radius': '25px',
'border-top-right-radius': '25px',
'border-bottom-left-radius': '25px',
'border-bottom-right-radius': '25px',
'background': '#fff',
'padding-top': '10px',
'margin-bottom': "60px"
},
page: {
count: "0",
startHeight: 0,
endHeight: 0
},
data: [],
goods: [],
selectIndex: 0,
pickingUp: {
type: "去完善",
name: "",
date: "",
address: ""
},
userInfo: {
type: "去完善",
name: "",
phone: ""
},
pickingUpGoods: [
],
baseDataSuccess: false,
newPerGiftList: [
],
transferInfo: {
}
}
},
created() {
console.log("==========", getApp().globalData.isNewUser);
// if (getApp().globalData.isNewUser=='1')
// this.showModal = true
},
onShow() {
if (typeof this.$mp.page.getTabBar === 'function' && this.$mp.page.getTabBar()) {
this.$mp.page.getTabBar().setData({
selected: 1
})
}
this.request()
this.page.count = 0
},
onLoad() {
this.shareSid = options.shareSid
console.log("shareSid>>>>", this.shareSid);
let info = uni.getSystemInfoSync();
this.page.startHeight = info.windowWidth * 0.6
this.page.endHeight = info.windowWidth * 0.8
this.shareGift()
},
methods: {
onKeyInput() {
this.transferInfo.remarks = event.target.value
},
shareGift() {
if (this.shareSid && getApp().globalData.isNewUser) {
}
},
labelClick(index, item) {
this.selectIndex = index
this.brandType = item.sid
this.pickingUpGoods = []
this.page.count = 0
this.getgoods()
},
request() {
let _this = this
var params = {
customerSid: getApp().globalData.sid
}
_this.$api.vegeCellarTypeList(params).then((resp) => {
_this.data = resp
_this.baseDataSuccess = true
_this.getgoods()
}).catch(e => {
_this.$nextTick(() => {
_this.$refs.pageView.setLoadState(1)
})
})
},
getgoods() {
let _this = this
var params = {
customerSid: getApp().globalData.sid,
affiliation: this.data[this.selectIndex].id
}
_this.$api.vegeCellarList(params).then((resp) => {
_this.goods = resp
_this.notData = resp.length == 0
_this.$nextTick(() => {
_this.$refs.pageView.setLoadState(2)
})
}).catch(e => {
_this.$nextTick(() => {
_this.$refs.pageView.setLoadState(1)
})
})
},
jian(item) {
if (Number(item.count) > 0) {
item.count = Number(item.count) - 1
this.addGoods(item)
}
this.getcount()
},
jia(item) {
item.count = Number(item.count) + 1
this.getcount()
this.addGoods(item)
},
getcount() {
let num = 0;
for (var i = 0; i < this.goods.length; i++) {
num += Number(this.goods[i].count);
}
this.page.count = num
},
addGoods(goods) {
var item = this.pickingUpGoods.find(item => item.goodsSid == goods.goodsSid)
if (item) {
if (goods.count == 0) {
var index = this.pickingUpGoods.findIndex(item => item.goodsSid == goods.goodsSid)
this.pickingUpGoods.splice(index, 1)
} else {
item.count = goods.count
}
} else {
this.pickingUpGoods.push(goods)
}
},
itemClick(goodsSid) {
uni.navigateTo({
url: '/pages/good/goodsDetail?sid=' + goodsSid
})
},
gotoShopp() {
uni.switchTab({
url: '/pages/home/cloudCard2',
})
},
transfer() {
this.showModal3 = true
},
reservation() {
if (this.pickingUpGoods.length > 0) {
uni.navigateTo({
url: '/pages/good/reservation?pickingUpGoods=' + JSON.stringify(this.pickingUpGoods) +
"&affiliation=" + this.brandType,
})
// this.showModal = true
} else {
this.shortToast('请先选择商品')
}
},
colseDialog() {
this.showModal = false
},
showGift() {
let _this = this
_this.$api.newUserQuota().then((resp) => {
console.log("--------", resp);
_this.newPerGiftList = resp
_this.showModal = false
_this.showModal2 = true
}).catch(e => {
})
},
colseDialog() {
this.showModal = false
},
colseDialog3() {
this.showModal3 = false
},
onShareAppMessage: function(res) {
console.log("res", res)
console.log("data", res.target.dataset)
var data = res.target.dataset.info
// // ①
// let shareData = JSON.stringify({
// params: {
// code: data.code,
// codeKey: data.codeKey,
// customerSid: ''
// },
// functionName: 'bindCard',
// url: '/pages/detail/detail_affeection?sid=' + data.sid
// // url: '/pages/home/cloudCard2?shareSid=' + getApp().globalData.sid,
// // functionName: 'share'
// })
// // 转码传输
// let value = encodeURIComponent(shareData)
// return {
// title: '汇融惠享-云菜窖',
// // ②
// path: '/pages/login/login?data=' + value,
// imageUrl: 'https://supervise.yxtsoft.com/lpk/image/shareAffeection.png', //自定义图片路径,显示图片长宽比是 5:4。
// success: function(res) {
// console.log('aaaa', "分享成功")
// },
// fail: function(res) {
// // 转发失败
// console.log('aaaa', "用户点击了取消")
// }
// }
},
shareCard(sid) {
let _this = this
_this.$api.shareEmpCard(sid).then((resp) => {
var item = _this.data.empCardGiftVos.find(item => item.sid === sid)
console.log("item", item);
item.share = '2'
}).catch(e => {})
}
}
}
</script>
<style>
#page {
display: flex;
flex-direction: column;
height: 100vh;
background: -webkit-linear-gradient(left, #FEA65F, #FB9440);
}
/* 顶部 */
.top {
width: 100vw;
/* height: 126.66vw; */
height: 50vw;
/* 加载背景图 */
background-image: url(https://supervise.yxtsoft.com/lpk/image/clound_bj1.png);
/* background-image: url(../../static/clound_bj1.png); */
/* 让背景图基于容器大小伸缩 */
background-size: 100% 100%;
}
/* 功能区 */
.func-area {
background: #fff;
height: calc(100vh - 45px - 50vw);
width: 100%;
border-radius: 15px;
display: flex;
flex-direction: column;
box-sizing: border-box;
margin-top: -15px;
box-sizing: border-box;
}
/* 功能区-菜单区 */
.func-area .menu-area {
width: 22%;
display: flex;
flex-direction: column;
overflow-y: auto;
padding-top: 10px;
}
/* 功能区-菜单区-菜单 */
.func-area .menu-area .menu {
width: 100%;
display: flex;
flex-direction: column;
}
/* 功能区-菜单区-菜单-显示方法 */
.func-area .menu-area .menu .method {
display: flex;
flex-direction: column;
justify-content: center;
}
/* 功能区-菜单区-菜单-标签 */
.func-area .menu-area .menu .label {
color: #191919;
font-size: 12px;
margin-top: 10px;
margin-bottom: 10px;
text-align: center;
padding-top: 7px;
padding-bottom: 7px;
margin-left: 5px;
}
/* 功能区-菜单区-菜单-标签选中 */
.func-area .menu-area .menu .label-selected {
background: #FFF;
color: #FFF;
background-color: #FF9900;
font-size: 12px;
margin-top: 10px;
margin-bottom: 10px;
padding-top: 7px;
padding-bottom: 7px;
text-align: center;
font-weight: bold;
border-radius: 20px;
margin-left: 5px;
}
/* 功能区-菜单区-菜单-商品数量 */
.func-area .menu-area .menu .goods-count {
border-radius: 50%;
text-align: center;
background: #f00;
color: #fff;
font-size: 8px;
position: absolute;
top: 10px;
right: 8px;
padding: 2px 5px;
width: auto;
}
.center {
display: flex;
flex-direction: row;
flex: 1;
background-color: #f7f7f7;
border-radius: 15px;
overflow: hidden;
min-width: 0;
}
.bottom {
display: flex;
flex-direction: column;
border-top: 1px solid #F8F8F8;
padding-top: 5px;
flex-shrink: 0;
margin-bottom: 10px;
}
/* 弹窗样式 */
.model {
position: absolute;
width: 100%;
height: 100%;
background: #000;
z-index: 999;
opacity: 0.5;
top: 0;
left: 0;
bottom: 65;
}
.modalDlg {
/* 设置超出滚动 */
overflow: auto;
width: 100%;
position: fixed;
top: 50vw;
left: 0;
right: 0;
z-index: 9999;
opacity: 1;
background-color: #fff;
border-top-right-radius: 20px;
border-top-left-radius: 20px;
display: flex;
flex-direction: column;
}
</style>