@ -1,213 +0,0 @@ | |||
<template> | |||
<view class="address"> | |||
<navbar title="地址管理" leftClick @leftClick="leftClick" /> | |||
<view class="address-list"> | |||
<addressList | |||
controls | |||
ref="addressList" | |||
@deleteAddress="deleteAddress" | |||
@editAddress="editAddress" | |||
@editDefault="editDefault"/> | |||
</view> | |||
<redactAddress | |||
ref="addressPopup" | |||
:addressDetail="addressDetail" | |||
@saveOrUpdate="saveOrUpdate" | |||
:title="title"></redactAddress> | |||
<view class="add-btn"> | |||
<view @click="addBtn" class="btn"> | |||
新增地址 | |||
</view> | |||
</view> | |||
</view> | |||
</template> | |||
<script> | |||
import redactAddress from '../components/address/redactAddress.vue' | |||
import addressList from '../components/address/addressList.vue' | |||
export default { | |||
components: { | |||
redactAddress, | |||
addressList | |||
}, | |||
data() { | |||
return { | |||
title: '新增地址', | |||
type : '', | |||
} | |||
}, | |||
onLoad(args) { | |||
this.type = args.type | |||
if(this.type == 'back'){ | |||
this.addBtn() | |||
} | |||
}, | |||
onShow() { | |||
this.getAddressList() | |||
}, | |||
methods: { | |||
//获取地址列表 | |||
getAddressList() { | |||
this.$refs.addressList.getAddressList() | |||
}, | |||
//获取地址详情 | |||
editAddress(address) { | |||
this.$refs.addressPopup.open({...address}) | |||
}, | |||
//返回个人中心 | |||
leftClick() { | |||
uni.navigateBack(-1) | |||
}, | |||
//添加和修改地址 | |||
saveOrUpdate(addressDetail) { | |||
let data = { | |||
name: addressDetail.name, | |||
phone: addressDetail.phone, | |||
address: addressDetail.address, | |||
addressDetail: addressDetail.addressDetail, | |||
defaultId: addressDetail.defaultId || '0', | |||
latitude: addressDetail.latitude, | |||
longitude: addressDetail.longitude | |||
} | |||
if (addressDetail.id) { | |||
data.id = addressDetail.id | |||
} | |||
this.$api(data.id ? 'addressEdit' : 'addressAdd', data, res => { | |||
if (res.code == 200) { | |||
this.$refs.addressPopup.close() | |||
this.getAddressList() | |||
if(this.type == 'back'){ | |||
uni.navigateBack(-1) | |||
} | |||
uni.showToast({ | |||
title: '操作成功', | |||
icon: 'none' | |||
}) | |||
} | |||
}) | |||
}, | |||
//修改默认地址 | |||
editDefault(id) { | |||
this.$api('addressDefault', { | |||
id: id, | |||
}, res => { | |||
if (res.code == 200) { | |||
this.$refs.addressPopup.close() | |||
uni.showToast({ | |||
title: '操作成功', | |||
icon: 'none' | |||
}) | |||
this.getAddressList() | |||
} | |||
}) | |||
}, | |||
//删除地址 | |||
deleteAddress(id) { | |||
let self = this | |||
uni.showModal({ | |||
title: '删除地址', | |||
content: '确认删除此地址?删除后数据不可恢复', | |||
success(e) { | |||
if(e.confirm){ | |||
self.$api('addressDelete', { | |||
id | |||
}, res => { | |||
if (res.code == 200) { | |||
uni.showToast({ | |||
title: '删除成功', | |||
icon: 'none' | |||
}) | |||
self.getAddressList() | |||
} | |||
}) | |||
} | |||
} | |||
}) | |||
}, | |||
//点击新增按钮 | |||
addBtn() { | |||
this.title = '新增地址' | |||
this.$refs.addressPopup.open({ //初始化数据 | |||
name: '', | |||
phone: '', | |||
address: '', | |||
addressDetail: '', | |||
defaultId: '', | |||
latitude: '', | |||
longitude: '' | |||
}) | |||
}, | |||
} | |||
} | |||
</script> | |||
<style lang="scss" scoped> | |||
.address { | |||
width: 750rpx; | |||
margin: 0rpx auto; | |||
background: #F5F5F5; | |||
box-sizing: border-box; | |||
min-height: 100vh; | |||
.address-list { | |||
padding: 40rpx 20rpx 120rpx 20rpx; | |||
} | |||
.add-btn { | |||
position: fixed; | |||
display: flex; | |||
justify-content: center; | |||
align-items: center; | |||
left: 0; | |||
bottom: 0; | |||
width: 750rpx; | |||
height: 100rpx; | |||
background: white; | |||
.btn { | |||
display: flex; | |||
align-items: center; | |||
justify-content: center; | |||
width: 85%; | |||
height: 80rpx; | |||
border-radius: 40rpx; | |||
color: white; | |||
text-align: center; | |||
font-size: 28rpx; | |||
background: $uni-color; | |||
} | |||
} | |||
} | |||
@media all and (min-width: 961px) { | |||
.add-btn { | |||
left: 50% !important; | |||
transform: translateX(-50%); | |||
} | |||
} | |||
//选择位置地图样式 | |||
:deep(.uni-system-choose-location) { | |||
z-index: 99999 !important; | |||
} | |||
</style> |
@ -1,172 +0,0 @@ | |||
<template> | |||
<!-- 帮助与反馈 --> | |||
<view class="help"> | |||
<navbar title="帮助与反馈" leftClick @leftClick="$utils.navigateBack" /> | |||
<view class="help-box"> | |||
<view> | |||
<view class="help-issue"> | |||
<text>问题和意见</text> | |||
<text style="color: #BD3624;">*</text> | |||
</view> | |||
<uv-textarea v-model="form.question" :count="true" border="none" height="400" | |||
placeholder="请把发现的问题提交给我们,感谢您的参与(必填)" | |||
:text-style="{color:'#BCB7B7',fontSize:'28rpx'}" /> | |||
</view> | |||
<view> | |||
<view class="help-issue"> | |||
<text>问题截图</text> | |||
<!-- <text style="color: #BD3624;">*</text> --> | |||
</view> | |||
<view class="help-screenshot"> | |||
<uv-upload :fileList="fileList" multiple :maxCount="3" width="180rpx" | |||
height="180rpx" multiple @afterRead="afterRead" @delete="deleteImage"> | |||
<image src="../static/help/uploading.png" mode="aspectFill" | |||
style="width: 180rpx;height: 180rpx;" /> | |||
</uv-upload> | |||
</view> | |||
</view> | |||
<view> | |||
<view class="help-issue"> | |||
<text>联系方式</text> | |||
<text style="color: #BD3624;">*</text> | |||
</view> | |||
<view class="form-sheet-cell"> | |||
<view> | |||
联系姓名 | |||
</view> | |||
<input placeholder="请输入联系姓名" v-model="form.name" /> | |||
</view> | |||
<view class="form-sheet-cell"> | |||
<view> | |||
联系电话 | |||
</view> | |||
<input placeholder="请输入联系电话" v-model="form.phone" /> | |||
</view> | |||
</view> | |||
<view class="help-button"> | |||
<!-- <view>历史提交</view> --> | |||
<view @click="submit">确认</view> | |||
</view> | |||
</view> | |||
</view> | |||
</template> | |||
<script> | |||
export default { | |||
data() { | |||
return { | |||
form : { | |||
question : '', | |||
phone : '', | |||
name : '', | |||
image : '', | |||
}, | |||
fileList: [] | |||
} | |||
}, | |||
onLoad(args) { | |||
}, | |||
methods: { | |||
deleteImage(e){ | |||
this.fileList.splice(e.index, 1) | |||
}, | |||
afterRead(e){ | |||
let self = this | |||
e.file.forEach(file => { | |||
self.$Oss.ossUpload(file.url).then(url => { | |||
self.fileList.push({ | |||
url | |||
}) | |||
}) | |||
}) | |||
}, | |||
submit(){ | |||
let data = JSON.parse(JSON.stringify(this.form)) | |||
if(this.$utils.verificationAll(this.form, { | |||
question : '请输入你的问题和意见',//问题和意见 | |||
// image : '请上传截图',// | |||
name : '请输入姓名',// | |||
phone : '请输入手机号码',//手机号码 | |||
})){ | |||
return | |||
} | |||
data.image = this.fileList.map((item) => item.url).join(",") | |||
this.$api('addAdvice', data, res => { | |||
if(res.code == 200){ | |||
uni.showToast({ | |||
title: res.message, | |||
icon:'none' | |||
}) | |||
setTimeout(uni.navigateBack, 800, -1) | |||
} | |||
}) | |||
}, | |||
} | |||
} | |||
</script> | |||
<style scoped lang="scss"> | |||
.help { | |||
.help-box { | |||
width: 92%; | |||
margin-left: 4%; | |||
.help-issue { | |||
margin: 20rpx; | |||
font-size: 28rpx; | |||
font-weight: 600; | |||
color: #333333; | |||
} | |||
.help-screenshot { | |||
display: flex; | |||
align-items: center; | |||
background-color: #fff; | |||
padding: 20rpx; | |||
} | |||
.form-sheet-cell{ | |||
display: flex; | |||
background-color: #fff; | |||
padding: 20rpx 30rpx; | |||
font-size: 24rpx; | |||
align-items: center; | |||
view{ | |||
width: 150rpx; | |||
} | |||
} | |||
.help-button { | |||
display: flex; | |||
justify-content: center; | |||
font-size: 24rpx; | |||
flex-shrink: 0; | |||
margin-top: 60rpx; | |||
view { | |||
padding: 14rpx 120rpx; | |||
border-radius: 38rpx; | |||
} | |||
view:nth-child(1) { | |||
background: $uni-color; | |||
color: #fff; | |||
} | |||
view:nth-child(2) { | |||
color: #FFFDF6; | |||
background-color: #C83741; | |||
} | |||
} | |||
} | |||
} | |||
</style> |
@ -1,283 +0,0 @@ | |||
<template> | |||
<view class="promotion"> | |||
<navbar title="二维码" | |||
bgColor="#A3D250" | |||
color="#fff" | |||
leftClick @leftClick="$utils.navigateBack" /> | |||
<view class="promotion-card"> | |||
<!-- <view class="user-info"> --> | |||
<!-- <image class="image" :src="userInfo.headImage" mode="widthFix"></image> --> | |||
<!-- <image class="image" src="../../static/logo.png" mode="widthFix"></image> --> | |||
<!-- <view class="user-name">{{ userInfo.nickName }}</view> --> | |||
<!-- <view class="user-name">湖南第一深情</view> --> | |||
<!-- </view> --> | |||
<!-- <view class="invitation-code-img"> | |||
<image | |||
style="width: 400rpx;" | |||
:src="imagePath" mode="widthFix"></image> | |||
</view> --> | |||
<image style="width: 100%;" :src="imagePath" mode="widthFix"></image> | |||
<!-- <view class="invitation-code">加油站: {{ title }}</view> --> | |||
<canvas id="myCanvas" type="2d" canvas-id="firstCanvas1"></canvas> | |||
</view> | |||
<view class="btns"> | |||
<view class="btn" | |||
@click="preservationImg(imagePath)">保存</view> | |||
<!-- <view class="btn">立即邀请</view> --> | |||
</view> | |||
</view> | |||
</template> | |||
<script> | |||
import { mapState } from 'vuex' | |||
export default { | |||
name: 'Promotion', | |||
computed: { | |||
...mapState(['userInfo']), | |||
}, | |||
data() { | |||
return { | |||
url: '', | |||
title: '123123', | |||
baseUrl: 'https://dianpin-img.xzaiyp.top/', | |||
canvas: {}, | |||
imagePath: '', | |||
} | |||
}, | |||
onShow() { | |||
this.getQrCode() | |||
this.$store.commit('getUserInfo') | |||
}, | |||
methods: { | |||
getQrCode() { | |||
this.$api('getInviteCode', res => { | |||
if (res.code == 200) { | |||
this.url = res.result.url | |||
this.title = res.result.name | |||
this.draw() | |||
} | |||
}) | |||
}, | |||
draw() { | |||
uni.showLoading({ | |||
title: "拼命绘画中..." | |||
}) | |||
wx.createSelectorQuery() | |||
.select('#myCanvas') // 绘制的canvas的id | |||
.fields({ | |||
node: true, | |||
size: true | |||
}) | |||
.exec((res) => { | |||
const canvas = res[0].node | |||
// 渲染上下文 | |||
const ctx = canvas.getContext('2d') | |||
// Canvas 画布的实际绘制宽高 | |||
const width = res[0].width | |||
const height = res[0].height | |||
// 初始化画布大小 | |||
const dpr = wx.getWindowInfo().pixelRatio | |||
//根据dpr调整 | |||
// dpr 2 4 | |||
// 3 6 | |||
let Ratio = dpr * 2 | |||
console.log("bug", dpr) | |||
canvas.width = width * dpr | |||
canvas.height = height * dpr | |||
this.canvas = canvas | |||
ctx.scale(dpr, dpr) | |||
ctx.clearRect(0, 0, width, height) | |||
ctx.fillStyle = '#fff' | |||
ctx.fillRect(0, 0, canvas.width, canvas.height) | |||
//用户图片 | |||
// const image = canvas.createImage() | |||
// image.onload = () => { | |||
// ctx.drawImage(image, 30, 18, 40, 40) | |||
// } | |||
// image.src = '/public/img/wechar_1.png' | |||
// image.src = this.userInfo.headImage | |||
ctx.fillStyle = 'black' | |||
ctx.font = '22px PingFangSC-regular'; | |||
let s = this.title || '加油站' | |||
ctx.fillText(s, canvas.width / Ratio - s.length * 11, 50); | |||
//二维码图片 | |||
const coderImage = canvas.createImage() | |||
coderImage.src = this.baseUrl + this.url | |||
coderImage.onload = () => { | |||
ctx.drawImage(coderImage, | |||
canvas.width / Ratio - 240 / 2, 100, 240, 240) | |||
} | |||
// 绘制完成后存储路径 | |||
setTimeout(() => { | |||
wx.canvasToTempFilePath({ | |||
x: 0, | |||
y: 0, | |||
width: this.canvas.width, | |||
height: this.canvas.height, | |||
canvas, | |||
success: (res) => { | |||
var tempFilePath = res.tempFilePath; | |||
this.imagePath = tempFilePath | |||
uni.hideLoading() | |||
} | |||
}); | |||
}, 600); | |||
}) | |||
}, | |||
back() { | |||
uni.navigateBack(-1) | |||
}, | |||
preservationImg(img) { | |||
let that = this | |||
uni.authorize({ | |||
/* scope.writePhotosAlbum 类型是保存到相册 */ | |||
scope: 'scope.writePhotosAlbum', | |||
success() { | |||
/* 已授权进入 */ | |||
/* 保存图片到相册方法方法 */ | |||
that.imgApi(img); | |||
}, | |||
complete(res) { | |||
/* 判断如果没有授权就打开设置选项让用户重新授权 */ | |||
uni.getSetting({ | |||
success(res) { | |||
if (!res.authSetting['scope.writePhotosAlbum']) { | |||
/* 打开设置的方法 */ | |||
that.openInstall(); | |||
} | |||
} | |||
}); | |||
} | |||
}); | |||
}, | |||
imgApi(image) { | |||
/* 获取图片的信息 */ | |||
uni.getImageInfo({ | |||
src: image, | |||
success: function(image) { | |||
/* 保存图片到手机相册 */ | |||
uni.saveImageToPhotosAlbum({ | |||
filePath: image.path, | |||
success: function() { | |||
uni.showModal({ | |||
title: '保存成功', | |||
content: '图片已成功保存到相册', | |||
showCancel: false | |||
}); | |||
}, | |||
complete(res) { | |||
console.log(res); | |||
} | |||
}); | |||
} | |||
}); | |||
}, | |||
} | |||
} | |||
</script> | |||
<style lang="scss" scoped> | |||
.promotion { | |||
width: 100%; | |||
height: 100vh; | |||
background-color: $uni-color; | |||
.promotion-card { | |||
width: 90%; | |||
margin: 100rpx auto 0rpx auto; | |||
box-shadow: 0rpx 0rpx 15rpx rgba(0, 0, 0, .2); | |||
border-radius: 15rpx; | |||
padding: 40rpx 30rpx; | |||
box-sizing: border-box; | |||
background-color: #fff; | |||
.user-info { | |||
display: flex; | |||
align-items: center; | |||
.image { | |||
width: 80rpx; | |||
height: 80rpx; | |||
border-radius: 50%; | |||
margin-right: 10rpx; | |||
} | |||
.user-name { | |||
font-size: 30rpx; | |||
} | |||
} | |||
.invitation-code-img { | |||
display: flex; | |||
align-items: center; | |||
justify-content: center; | |||
margin: 100rpx 0rpx; | |||
.image { | |||
width: 30%; | |||
border-radius: 50%; | |||
} | |||
} | |||
.invitation-code { | |||
text-align: center; | |||
color: #818181; | |||
font-size: 28rpx; | |||
} | |||
} | |||
.btns { | |||
position: fixed; | |||
left: 0; | |||
bottom: 0; | |||
width: 100%; | |||
height: 120rpx; | |||
display: flex; | |||
background: #fff; | |||
font-size: 28rpx; | |||
color: $uni-color; | |||
.btn { | |||
flex: 1; | |||
display: flex; | |||
align-items: center; | |||
justify-content: center; | |||
&:nth-child(2) { | |||
background: orange; | |||
} | |||
} | |||
} | |||
} | |||
#myCanvas { | |||
position: fixed; | |||
left: 100%; | |||
/* visibility: hidden */ | |||
/* visibility: hidden; */ | |||
/* margin-top: 100rpx; */ | |||
margin: 68rpx auto; | |||
width: 750rpx; | |||
height: 750rpx; | |||
/* line-height: 20px; */ | |||
background-color: rgba(255, 255, 255, 1); | |||
text-align: center; | |||
} | |||
</style> |
@ -1,109 +0,0 @@ | |||
<template> | |||
<view class="purse"> | |||
<navbar title="立即提现" leftClick @leftClick="$utils.navigateBack" /> | |||
<!-- 水洗店 --> | |||
<view class="userShop"> | |||
<userShopCommission purse /> | |||
</view> | |||
<view class="from-body"> | |||
<view>我要提现</view> | |||
<view class="from-line"> | |||
<input placeholder="请输入提现金额" /> | |||
</view> | |||
<view class="from-line"> | |||
<input placeholder="请输入姓名" /> | |||
</view> | |||
<view class="from-line"> | |||
<input placeholder="请输入开户行" /> | |||
</view> | |||
<view class="from-line"> | |||
<input placeholder="请输入银行卡卡号" /> | |||
</view> | |||
<view class="mt56">提现说明</view> | |||
<view style="line-height: 45rpx; font-size: 24rpx;color: #666666;" v-html="notice"> | |||
</view> | |||
<!-- <p>1、本次提现必须通过银行卡提现,暂不支持其他途径。</p> | |||
<p>2、如若遇到24小时提现未到账,请联系客服。</p> --> | |||
</view> | |||
<view class="b-fiexd"> | |||
<view class="button-submit">提交</view> | |||
</view> | |||
</view> | |||
</template> | |||
<script> | |||
import userShopCommission from '@/components/userShop/userShopCommission.vue' | |||
export default { | |||
components: { | |||
userShopCommission, | |||
}, | |||
data() { | |||
return { | |||
notice : '' | |||
} | |||
}, | |||
methods: { | |||
} | |||
} | |||
</script> | |||
<style scoped lang="scss"> | |||
.purse{ | |||
min-height: 100vh; | |||
background-color: #ffffff; | |||
.from-body { | |||
padding: 40rpx 20rpx; | |||
font-size: 28rpx; | |||
font-family: PingFang SC, PingFang SC-Bold; | |||
font-weight: 700; | |||
text-align: left; | |||
color: #333333; | |||
line-height: 40px; | |||
padding-bottom: 160rpx; | |||
.from-line { | |||
margin-top: 40rpx; | |||
} | |||
input { | |||
width: 612rpx; | |||
height: 90rpx; | |||
line-height: 90rpx; | |||
background: #F5F5F5; | |||
border-radius: 46rpx; | |||
padding: 0 50rpx; | |||
font-size: 28rpx; | |||
font-family: PingFang SC, PingFang SC-Regular; | |||
font-weight: 400; | |||
text-align: left; | |||
color: #333; | |||
} | |||
} | |||
.button-submit { | |||
width: 596rpx; | |||
height: 90rpx; | |||
line-height: 90rpx; | |||
background: $uni-color; | |||
border-radius: 46rpx; | |||
margin: 20rpx auto; | |||
font-size: 28rpx; | |||
font-family: PingFang SC, PingFang SC-Regular; | |||
font-weight: 400; | |||
text-align: center; | |||
color: #ffffff; | |||
} | |||
} | |||
</style> |
@ -1,88 +0,0 @@ | |||
<template> | |||
<view class="running-water"> | |||
<navbar :title="title[status]" leftClick @leftClick="leftClick" /> | |||
<view class="tab-box"> | |||
<view class="tab-box1" v-if="agentFlow && agentFlow.total"> | |||
<uv-cell center border :title="item.title" | |||
v-for="(item, index) in agentFlow.records" | |||
:value="x[item.type] + item.money" :label="item.createTime" /> | |||
</view> | |||
<view | |||
style="padding: 100rpx 0;" | |||
v-else> | |||
<uv-empty | |||
mode="history" | |||
textSize="28rpx" | |||
iconSize="100rpx"/> | |||
</view> | |||
</view> | |||
</view> | |||
</template> | |||
<script> | |||
export default { | |||
data() { | |||
return { | |||
title : ['余额记录','提现记录','佣金记录'], | |||
agentFlow : { | |||
total : 0, | |||
records : [ | |||
{ | |||
type : 0, | |||
money : 100, | |||
createTime : '2024-04-02 20:00', | |||
title : "佣金提现", | |||
}, | |||
{ | |||
type : 0, | |||
money : 100, | |||
createTime : '2024-04-02 20:00', | |||
title : "佣金提现", | |||
}, | |||
{ | |||
type : 0, | |||
money : 100, | |||
createTime : '2024-04-02 20:00', | |||
title : "佣金提现", | |||
}, | |||
] | |||
}, | |||
x : ['+', '-' , '-' , '+'], | |||
status : 0, | |||
} | |||
}, | |||
onLoad(e) { | |||
this.status = e.status | |||
}, | |||
methods: { | |||
leftClick() { //返回钱包 | |||
uni.navigateBack(-1) | |||
}, | |||
getAgentFlow(){ //获取流水记录 | |||
let type = this.status; | |||
this.$api('getAgentFlow', { type }, res => { | |||
if(res.code == 200){ | |||
this.agentFlow = res.result | |||
} | |||
}) | |||
}, | |||
} | |||
} | |||
</script> | |||
<style lang="scss" scoped> | |||
.running-water{ | |||
width: 750rpx; | |||
background: #F5F5F5; | |||
margin: 0 auto; | |||
min-height: 100vh; | |||
.tab-box{ | |||
margin: 20rpx; | |||
background-color: #fff; | |||
border-radius: 20rpx; | |||
overflow: hidden; | |||
} | |||
} | |||
</style> |