tearoom/page_shanghu/mendianadd.vue
2024-12-20 18:09:41 +08:00

431 lines
9.9 KiB
Vue
Raw Permalink Blame History

This file contains ambiguous Unicode characters

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

<template>
<view class="page">
<u-navbar title="新建门店" :border-bottom="false" :background="bgc" back-icon-color="#262B37" title-color='#262B37'
title-size='36' height='40' id="navbar">
</u-navbar>
<view class="top">
<view class="one">
<view class="wz">门店名称</view> <view class=""><input type="text" v-model="name" placeholder="请输入门店名称"/> </view>
</view>
<view class="one">
<view class="wz">门店类型</view> <view class="" @click="showlx = true">{{lxname}} <u-icon style="margin-left: 10rpx;" name="arrow-down" color="#808080" size="28"></u-icon> </view>
</view>
<view class="one">
<view class="wz">营业时间</view>
<view class="but" style="display: flex;justify-content: space-between;">
<view class="" style="font-size: 28rpx;color: #666;" @click="btnyinye(1)">{{ksyy}}</view>
--
<view class="" style="font-size: 28rpx;color: #666;" @click="btnyinye(2)">{{jsyy}}</view>
</view>
</view>
<view class="one">
<view class="wz">联系人</view> <view class=""><input type="text" v-model="lianxi" placeholder="请输入联系人名称"/> </view>
</view>
<view class="one">
<view class="wz">联系电话</view> <view class=""><input type="text" v-model="tel" placeholder="请输入联系电话"/> </view>
</view>
<view class="one" style="margin-bottom: 0;">
<view class="wz">选择位置</view> <view class="" @click="btnweizhi">{{xqdz}} <u-icon style="margin-left: 10rpx;" name="arrow-down" color="#808080" size="28"></u-icon> </view>
</view>
</view>
<u-picker mode="time" v-model="show" default-time="00:00" :params="params" @confirm="btnyy"></u-picker>
<view class="biaoqian">
<view class="name">
标签设置
</view>
<view class="bqliat">
<view
class="bqitem"
v-for="(item, index) in biaoqianlist"
:key="index"
@click="btnbq(item.dictValue,index)"
:class="{ 'active': isSelected(index) }">
{{ item.dictLabel }}
</view>
</view>
</view>
<view class="mdpic">
<view class="tops">
门店照片
</view>
<view class="tishi">
门店环境、设备场景等,请选择横屏照片或拍照上传
</view>
<view class="pic" @click="getImage">
<image src="https://api.ccttiot.com/smartmeter/img/static/udXUCs8GULJZE9EZBLf1" class="img" mode=""></image>
</view>
<view class="pic" @click="getImage" v-for="(item,index) in imglist" :key="index">
<image :src="item" mode="aspectFill"></image>
</view>
<ksp-cropper mode="free" :width="352" :height="190" :maxWidth="1024" :maxHeight="1024" :url="url"
@cancel="oncancel" @ok="onok"></ksp-cropper>
</view>
<u-select v-model="showlx" :list="lxlist" @confirm="btnlx"></u-select>
<view class="anniu">
<view class="xinjian" @click="btnquxiao">
取消
</view>
<view class="queren" @click="btnadd">
确定
</view>
</view>
</view>
</template>
<script>
export default {
data() {
return {
bgc: {
backgroundColor: "#fff",
},
params: {
hour: true,
minute: true,
},
show: false,
ksyy: '开始营业时间',
jsyy: '结束营业时间',
imglist: [],
token: '',
userImgs: '',
url:'',
latitude:'',
longitude:'',
xqdz:'选择位置',
biaoqianlist:[],
bqindex:-1,
selectedIndices: [],
idlist:[],
name:'',
lianxi:'',
tel:'',
showlx:false,
lxlist:[
{
value: '2',
label: '棋牌'
},{
value: '1',
label: '茶室'
},{
value: '3',
label: '台球'
},
],
lxname:'请选择类型',
lxid:''
}
},
onLoad() {
},
onShow() {
this.getQiniuToken()
this.getbiaoqian()
},
methods: {
// 点击取消
btnquxiao(){
uni.navigateBack()
},
// 确认添加门店
btnadd(){
let picture = this.imglist.join(",") //转成字符串
let arr = this.selectedIndices.map(item => {
return item + 1
})
let ss_store_tags = arr.join(',')
let data = {
name:this.name,
contactName:this.lianxi,
contactMobile:this.tel,
address:this.xqdz,
lng:this.longitude,
lat:this.latitude,
businessTimeStart:this.ksyy,
businessTimeEnd:this.jsyy,
picture:picture,
type:this.lxid,
ss_store_tags:ss_store_tags
}
this.$u.post("/app/store",data).then((res) => {
if (res.code == 200) {
uni.showToast({
title: '新建成功',
icon: 'success',
duration:2000
})
setTimeout(()=>{
uni.navigateBack()
},1000)
}else{
uni.showToast({
title: res.msg,
icon: 'none',
duration:2000
})
}
})
},
// 点击确认类型
btnlx(e){
this.lxid = e[0].value
this.lxname= e[0].label
},
// 点击选择标签
btnbq(dictValue,index) {
const indexExists = this.selectedIndices.includes(index);
if (indexExists) {
this.selectedIndices = this.selectedIndices.filter(i => i !== index);
} else {
this.selectedIndices.push(index);
}
},
isSelected(index) {
return this.selectedIndices.includes(index);
},
// 点击上传图片
getImage() {
if(this.imglist.length >= 5){
uni.showToast({
title: '最多上传五张图片',
icon: 'none'
})
}else{
uni.chooseImage({
count: 1,
success: (rst) => {
this.url = rst.tempFilePaths[0]
console.log(this.url);
}
})
}
},
onok(ev) {
this.url = ""
this.path = ev.path
let _this = this
let math = 'static/' + _this.$u.guid(20)
wx.uploadFile({
url: 'https://up-z2.qiniup.com',
name: 'file',
filePath: _this.path,
formData: {
token: _this.token, //后端返回的token
key: 'smartmeter/img/' + math
},
success: function(res) {
let str = JSON.parse(res.data)
_this.userImgs = 'https://lxnapi.ccttiot.com/' + str.key
_this.imglist.push(_this.userImgs)
console.log(_this.imglist);
}
})
},
oncancel() {
// url设置为空隐藏控件
this.url = "";
},
// 点击选择位置
btnweizhi(){
uni.chooseLocation({
success: (res) => {
console.log(res);
this.latitude = res.latitude
this.longitude = res.longitude
this.xqdz = res.name
},
fail: function(err) {
if (err.errMsg && err.errMsg.indexOf('chooseLocation:cancel') === 0) {
uni.showToast({
title: '您取消了位置选择',
icon: 'none'
})
} else {
console.log('选择位置失败', err)
}
},
})
},
// 获取上传七牛云token
getQiniuToken() {
this.$u.get("/common/qiniu/uploadInfo").then((res) => {
if (res.code == 200) {
this.token = res.token
}
})
},
// 获取标签
getbiaoqian(){
this.$u.get(`/appVerify/getDictData?dictType=ss_store_tags`).then((res) => {
if (res.code == 200) {
this.biaoqianlist = res.data
}
})
},
// 选择营业时间
btnyinye(num) {
this.show = true
this.yynum = num
},
// 确定营业时间
btnyy(e) {
if (this.yynum == 1) {
this.ksyy = e.hour + ':' + e.minute
} else {
this.jsyy = e.hour + ':' + e.minute
}
},
}
}
</script>
<style lang="scss">
.active{
background-color: #48893B !important;
color: #fff !important;
}
page {
background: #F6F6F6;
padding-bottom: 200rpx;
box-sizing: border-box;
}
/deep/ .panel{
position: fixed;
width: 100%;
height: 100%;
top: 0;
bottom: 0;
left: 0;
z-index: 99 !important;
overflow: hidden;
}
.biaoqian{
width: 680rpx;
max-height: 624rpx;
background: #FFFFFF;
padding: 44rpx 34rpx;
box-sizing: border-box;
margin: auto;
margin-top: 22rpx;
border-radius: 20rpx;
.name{
font-weight: 600;
font-size: 36rpx;
color: #3D3D3D;
}
.bqliat{
margin-top: 30rpx;
display: flex;
flex-wrap: wrap;
.bqitem{
margin-right: 10rpx;
border: 1px solid #48893B;
color: #48893B;
padding: 10rpx;
margin-top: 10rpx;
}
image{
width: 226rpx;
height: 58rpx;
}
}
}
.anniu{
width: 750rpx;
height: 152rpx;
background: #FFFFFF;
box-shadow: 0rpx 8rpx 20rpx 0rpx rgba(0,0,0,0.3);
border-radius: 0rpx 0rpx 0rpx 0rpx;
position: fixed;
left: 0;
bottom: 0;
display: flex;
justify-content: space-between;
padding: 0 36rpx;
box-sizing: border-box;
padding-top: 24rpx;
.queren{
width: 330rpx;
height: 104rpx;
background: #48893B;
text-align: center;
line-height: 104rpx;
font-weight: 600;
font-size: 36rpx;
color: #FFFFFF;
border-radius: 20rpx;
}
.xinjian{
width: 330rpx;
height: 104rpx;
border: 2rpx solid #48893B;
border-radius: 20rpx;
text-align: center;
line-height: 104rpx;
font-weight: 600;
font-size: 36rpx;
color: #48893B;
}
}
.mdpic{
width: 680rpx;
max-height: 1500rpx;
background: #FFFFFF;
border-radius: 24rpx 24rpx 24rpx 24rpx;
margin: auto;
margin-top: 22rpx;
padding: 38rpx;
box-sizing: border-box;
.tops{
font-size: 32rpx;
color: #3D3D3D;
}
.tishi{
font-size: 24rpx;
color: #3D3D3D;
margin-top: 20rpx;
}
.pic{
margin-top: 36rpx;
.img{
width: 144rpx;
height: 144rpx;
}
image{
width: 610rpx;
height: 280rpx;
}
}
}
.top{
width: 680rpx;
max-height: 986rpx;
background: #FFFFFF;
border-radius: 24rpx 24rpx 24rpx 24rpx;
margin: auto;
margin-top: 22rpx;
padding: 50rpx 38rpx;
box-sizing: border-box;
.one{
display: flex;
justify-content: space-between;
margin-bottom: 34rpx;
align-items: center;
font-size: 28rpx;
color: #808080;
.wz{
color: #3D3D3D;
}
input{
text-align: right;
}
}
}
</style>