baodeng_xcx/page_shanghu/shop/editshop.vue

570 lines
13 KiB
Vue
Raw Normal View History

2025-05-14 15:14:12 +08:00
<template>
<view class="page">
<u-navbar title="编辑店铺" :border-bottom="false" :background="bgc" title-color='#fff' back-icon-color="#fff"
title-size='36' height='50'></u-navbar>
<view class="box">
<view class="list">
<!-- <view class="icon">
<view class="list_box">
<view class="lt">
<view class="tit">
上传门头照
</view>
<view class="wz">
门头照片必须清晰方正易于辨识
</view>
</view>
<view class="imgbox">
<button
style="border: 0;outline: none;width: 143rpx;padding-left: 0rpx;height: 143rpx;border-radius: 16rpx;"
@click="getImage">
<image
src="https://api.ccttiot.com/smartmeter/img/static/uY8CPw9YE6JxPzcHUaqf" mode="aspectFit">
</image>
</button>
<ksp-cropper mode="free" :width="142" :height="80" :maxWidth="1024" :maxHeight="1024" :url="url"
@cancel="oncancel" @ok="onok"></ksp-cropper>
</view>
</view>
</view>
<view class="piclist">
<view class="container">
<swiper
class="swiper"
indicator-dots="true"
autoplay="true"
interval="3000"
duration="500"
circular="true"
>
<swiper-item v-for="(item, index) in imglist" :key="index">
<image :src="item" class="slide-image" mode="aspectFill" @longpress="handleLongPress(index)"></image>
</swiper-item>
</swiper>
</view>
<view class="wz">
长按可删除图片
</view>
</view> -->
<view class="listval">
<view class="tit"> 店铺名称</view>
<view class="but"> <input type="text" placeholder="请输入店铺名称" v-model="shopname" /> </view>
</view>
<view class="listval">
<view class="tit"> 营业时间</view>
<view class="but"
style="display: flex;justify-content: space-between;padding: 0 20rpx;box-sizing: border-box;line-height: 70rpx;">
<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="listval">
<view class="tit"> 联系人</view>
<view class="but"> <input type="text" placeholder="请输入联系人" v-model="lxname" /> </view>
</view>
<view class="listval">
<view class="tit"> 联系电话</view>
<view class="but"> <input type="text" placeholder="请输入联系电话" v-model="lxphone" /> </view>
</view>
<view class="jinwei">
<view class="tit"> 详细地址</view>
<view class="but">
<input type="text" :disabled="true" placeholder="请选择详细地址" v-model="xqdz" @click="btnjwd"/>
<u-icon name="map-fill" style="position: absolute;top: 20rpx;right: 22rpx;z-index: 99;" @click="btnjwd"
size="32" ></u-icon>
</view>
</view>
<view class="baocun">
<view class="qx" @click="btnqx">
取消
</view>
<view class="qd" @click="btnqd">
确定
</view>
</view>
</view>
<!-- 店铺类型 -->
<u-select v-model="selectorshow" :list="selector" @confirm="btnselector"></u-select>
<!-- 选择省市区 -->
<u-picker v-model="regionshow" mode="region" @confirm="btnregions"></u-picker>
<!-- 营业时间 -->
<u-picker mode="time" v-model="show" default-time="00:00" :params="params" @confirm="btnyy"></u-picker>
<view v-if="btnmsk" style="width: 100%;height: 100vh;position: fixed;top: 0;left: 0;background-color: #000;opacity: .1;z-index: 999;"></view>
</view>
</view>
</template>
<script>
export default {
data() {
return {
bgc: {
backgroundColor: " #0B0B0B",
},
btnmsk:false,
checked:true,
params: {
hour: true,
minute: true,
},
show: false,
checkeds:true,
imglist: [],
token: '',
userImgs: '',
imgflag: true,
selectorshow: false,
selectortext: '请选择商铺类型',
selectorvalue: '',
regionshow: false,
regiontext: '请选择省市区',
regionvalue: '',
selector: [],
latitude: '',
longitude: '',
shopname: '',
yetime: '',
lxname: '',
lxphone: '',
xqdz: '',
ksyy: '开始营业时间',
jsyy: '结束营业时间',
yynum: 0,
province: '',
city: '',
area: '',
url:'',
id:'',
jtdz:'',
miaoshu:''
}
},
onLoad(option) {
if(option.storeId){
this.id = option.storeId
this.getxq()
}
},
onShow() {
},
methods: {
// 请求店铺配置
getxq(){
this.$u.get(`/bst/store/${this.id}`).then(res =>{
if(res.code == 200){
this.shopname = res.data.storeName
this.lxname = res.data.userName
this.lxphone = res.data.phone
this.ksyy = res.data.startTime
this.jsyy = res.data.endTime
this.longitude = res.data.longitude
this.latitude = res.data.latitude
this.xqdz = res.data.address
}else{
uni.showToast({
title: res.msg,
icon: 'none',
duration: 2000
})
}
})
},
btnlx() {
this.selectorshow = true
},
handleLongPress(index) {
let that = this
uni.showModal({
title: '提示',
content: '您确定要删除该图片吗?',
success: function(res) {
if (res.confirm) {
that.imglist.splice(index, 1)
uni.showToast({
title: '删除成功',
icon: 'success',
duration: 2000
})
if(that.imglist.length < 1){
that.imgflag = true
}
}
}
})
},
getImage() {
uni.chooseImage({
count: 1,
success: (rst) => {
this.url = rst.tempFilePaths[0]
}
})
},
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://api.ccttiot.com/' + str.key
_this.imglist.push(_this.userImgs)
_this.imgflag = false
}
})
},
oncancel() {
// url设置为空隐藏控件
this.url = ""
},
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
}
},
btnqx(){
uni.navigateBack()
},
btnqd() {
this.btnmsk = true
let data = {
storeId:this.id,
storeName:this.shopname,
userName:this.lxname,
phone:this.lxphone,
startTime:this.ksyy,
endTime:this.jsyy,
longitude:this.longitude,
latitude:this.latitude,
address:this.xqdz
}
this.$u.put("/bst/store", data).then(res => {
if (res.code == 200) {
uni.showToast({
title: '修改成功',
icon: 'success',
duration: 2000
})
setTimeout(()=>{
uni.navigateBack()
this.btnmsk = false
},1500)
}else{
uni.showToast({
title: res.msg,
icon: 'none',
duration: 1000
})
this.btnmsk = false
}
})
},
btnselector(e) {
this.selectorvalue = e[0].value
this.selectortext = e[0].label
},
btnregion() {
this.regionshow = true
},
btnregions(e) {
this.regiontext = e.province.label + e.city.label + e.area.label
this.province = e.province.label
this.city = e.city.label
this.area = e.area.label
},
btnjwd() {
uni.chooseLocation({
success: (res) => {
console.log(res);
this.latitude = res.latitude
this.longitude = res.longitude
this.xqdz = res.name
this.jtdz = res.name
},
fail: function(err) {
// 检查错误消息,看是否是用户取消了位置选择
if (err.errMsg && err.errMsg.indexOf('chooseLocation:cancel') === 0) {
uni.showToast({
title: '您取消了位置选择',
icon: 'none'
});
} else {
console.log('选择位置失败', err)
// 处理其他失败情况
}
},
})
},
getQiniuToken() {
this.$u.get("/common/qiniu/uploadInfo").then((res) => {
if (res.code == 200) {
this.token = res.token
}
})
},
}
}
</script>
<style lang="scss">
/deep/ .panel{
position: fixed;
width: 100%;
height: 100%;
top: 0;
bottom: 0;
left: 0;
z-index: 99 !important;
overflow: hidden;
}
/deep/ .u-title {
padding-bottom: 22rpx;
}
/deep/ .u-icon__icon {
padding-bottom: 22rpx;
}
page {
background:#0B0B0B;
}
.page {
width: 750rpx;
position: fixed;
top: 0;
left: 0;
.box {
width: 750rpx;
height: 1440rpx;
padding-bottom: 300rpx;
box-sizing: border-box;
overflow: scroll;
background: #0B0B0B;
border-radius: 0rpx 0rpx 0rpx 0rpx;
padding-top: 40rpx;
.list {
width: 700rpx;
max-height: 1200rpx;
padding-bottom: 30rpx;
background: #0B0B0B;
overflow: scroll;
border-radius: 24rpx 24rpx 24rpx 24rpx;
margin: auto;
padding-top: 24rpx;
padding-left: 20rpx;
padding-right: 20rpx;
box-sizing: border-box;
.baocun {
width: 680rpx;
height: 90rpx;
margin: auto;
text-align: center;
line-height: 90rpx;
position: fixed;
left: 50%;
transform: translateX(-50%);
bottom: 60rpx;
font-weight: 500;
font-size: 40rpx;
color: #FFFFFF;
display: flex;
justify-content: space-between;
.qx{
width: 300rpx;
height: 90rpx;
line-height: 90rpx;
text-align: center;
border: 1px solid #FF8998;
color: #FF8998;
border-radius: 50rpx;
}
.qd{
width: 300rpx;
height: 90rpx;
line-height: 90rpx;
text-align: center;
background-color: #FF8998;
color: #0B0B0B;
border-radius: 50rpx;
}
}
.container {
height: 100%;
display: flex;
justify-content: center;
align-items: center;
margin-top: 40rpx;
}
.piclist{
.wz{
margin-top: 20rpx;
width: 100%;
text-align: center;
color: red;
}
}
.swiper {
width: 100%;
height: 300rpx;
border-radius: 30rpx;
overflow: hidden;
background-color: #ccc;
}
.slide-image {
width: 100%;
height: 100%;
}
.icon {
display: flex;
flex-wrap: wrap;
align-items: center;
margin-top: 40rpx;
width: 680rpx;
.list_box {
width: 100%;
display: flex;
justify-content: space-between;
padding-right: 45rpx;
.lt {
padding-top: 40rpx;
.tit {
font-size: 32rpx;
color: #fff;
}
.wz {
font-size: 26rpx;
color: #fff;
margin-top: 20rpx;
}
}
.imgbox {
width: 28%;
image {
width: 142rpx;
height: 142rpx;
}
}
}
}
.jinwei {
display: flex;
justify-content: space-between;
margin-top: 34rpx;
align-items: center;
.tit {
margin-top: 10rpx;
font-size: 32rpx;
color: #fff;
}
.but {
width: 462rpx;
height: 70rpx;
background: #F0F0F0;
border-radius: 12rpx 12rpx 12rpx 12rpx;
position: relative;
input {
height: 70rpx;
line-height: 70rpx;
padding-left: 22rpx;
padding-right: 72rpx;
// width: 100%;
}
}
}
.listvals {
display: flex;
justify-content: space-between;
margin-top: 34rpx;
align-items: center;
.tit {
margin-top: 12rpx;
font-size: 32rpx;
color: #3D3D3D;
}
.but {
width: 462rpx;
height: 70rpx;
background: #F0F0F0;
border-radius: 12rpx 12rpx 12rpx 12rpx;
position: relative;
input {
height: 70rpx;
line-height: 70rpx;
padding-left: 22rpx;
// width: 100%;
}
}
}
.listval {
display: flex;
justify-content: space-between;
margin-top: 34rpx;
align-items: center;
.tit {
margin-top: 12rpx;
font-size: 32rpx;
color: #fff;
}
.but {
width: 462rpx;
height: 70rpx;
background: #F0F0F0;
border-radius: 12rpx 12rpx 12rpx 12rpx;
input {
height: 70rpx;
line-height: 70rpx;
padding-left: 22rpx;
}
}
}
}
}
}
</style>