猫妈狗爸伴宠师小程序前端代码
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.
 
 
 
 

456 lines
9.0 KiB

<template>
<view>
<view class="containers po-r">
<image src="" mode="" class="mainBg"></image>
<view class="w-100 po-a content">
<stepProgress :step="3"></stepProgress>
<view class="step mt24">
<view class="li flex-rowl">
<view class="num flex-rowc">
1
</view>
<view class="item">
<view class="flex-between mb10">
<view class="flex-rowl">
<image class="img" src="@/static/images/ydd/end12.png" mode=""></image>
<text class="size-30 color-000 fw700">实名认证</text>
</view>
<view class="size-22 color-ffb">
已完成
</view>
</view>
<view class="info">
<!-- todo: 实名认证 -->
<view class="size-22 color-777">
{{ `真实姓名:${form.name}` }}
</view>
<view class="size-22 color-777">
{{ `身份证号码:${form.idCard}` }}
</view>
</view>
</view>
</view>
<view class="li flex-rowl po-r">
<view class="line po-a">
</view>
<view class="num flex-rowc">
2
</view>
<view class="item">
<view class="flex-between mb10">
<view class="flex-rowl">
<image class="img" src="@/static/images/ydd/end13.png" mode="widthFix"></image>
<text class="size-30 color-000 fw700">履约保证金缴纳</text>
</view>
<view class="size-22 color-ffb jiao" @click="jumpToBond">
去缴纳
</view>
<!-- todo -->
<!-- <view class="size-22 highlight">
已完成
</view> -->
</view>
<view class="info color-777 size-22">
请缴纳履约保证金保证金注销时可申请退还
</view>
</view>
</view>
<view class="li flex-rowl po-r">
<view class="line po-a" style="height: 150rpx;">
</view>
<view class="num flex-rowc">
3
</view>
<view class="item">
<view class="flex-between mb10">
<view class="flex-rowl">
<image class="img" src="@/static/images/ydd/end1(4).png" mode="widthFix"></image>
<text class="size-30 color-000 fw700">添加客服微信</text>
</view>
<view class="size-22 highlight">
请自行添加
</view>
</view>
<view class="info color-777 size-22 flex-rowl">
<text class="size-22 color-777">微信二维码</text>
<image :src="configList.wx_image.paramValueImage" mode="widthFix" style="width: 150rpx;height: 150rpx;"></image>
</view>
</view>
</view>
<view class="li flex-rowl po-r">
<view class="line po-a" style="height: 150rpx;">
</view>
<view class="num flex-rowc">
4
</view>
<view class="item">
<view class="flex-between mb10">
<view class="flex-rowl">
<image class="img" src="@/static/images/ydd/end13.png" mode="widthFix"></image>
<text class="size-30 color-000 fw700">服务工具准备</text>
</view>
<view class="size-22 flex-rowr" @click="openToolsInfoModal">
<text>查看工具包</text>
<up-icon name="arrow-down" color="#7F7F7F" size="17rpx" style="margin-left: 5rpx;"></up-icon>
</view>
</view>
<view class="info color-777 size-22">
<view class="flex-between">
<text class="size-22">所在地区:</text>
<view plain class="flex-rowr" @click="selectAddr">
<text>{{ form.area ? form.area : '请选择' }}</text>
<up-icon style="margin-left: 22rpx;" name="arrow-down" color="#7F7F7F" size="21rpx"></up-icon>
</view>
</view>
</view>
<view class="info color-777 size-22 mt20">
<view class="flex-between">
<text class="size-22">详细地址:</text>
<input v-model="form.address" type="text" placeholder="请输入道路、小区、门牌号等" />
</view>
</view>
</view>
</view>
</view>
<view class="footer-btn" @click="onSave">
<view class="btn">
提交审核
</view>
</view>
</view>
<up-modal
:show="showToolsInfoModal"
:showConfirmButton="false"
:showCancelButton="false"
:closeOnClickOverlay="true"
@close="closeToolsInfoModal"
>
<up-parse class="size-28" :content="configList.pet_tools.paramValueArea"></up-parse>
</up-modal>
</view>
<button plain class="chat" open-type="contact">
<image src="@/static/images/ydd/chat.png" mode="widthFix"></image>
</button>
</view>
</template>
<script setup>
import { ref, reactive, computed } from "vue";
import { onShow } from '@dcloudio/uni-app'
import { useStore } from 'vuex'
import { udpateUser, getUserOne } from '@/api/userTeacher'
import stepProgress from '../components/stepProgress.vue';
const store = useStore()
const configList = computed(() => {
return store.getters.configList
})
const userId = computed(() => {
return store.state.user.userInfo.userId
})
const id = ref()
const form = reactive({
name: null,
idCard: null,
area: null,
latitude: null,
longitude: null,
address: null,
})
const initData = async () => {
console.log('--initData')
try {
const data = await getUserOne(userId.value)
const {
id: _id,
name,
idCard,
} = data
id.value = _id
form.name = name
form.idCard = idCard
} catch (err) {
console.log('--err', err)
}
}
onShow(() => {
initData()
})
const jumpToBond = () => {
uni.navigateTo({
url: "/otherPages/myOrdersManage/bond/index"
})
}
const showToolsInfoModal = ref(false)
const openToolsInfoModal = () => {
showToolsInfoModal.value = true
}
const closeToolsInfoModal = () => {
showToolsInfoModal.value = false
}
const setAddress = (res) => {
//经纬度信息
form.latitude = res.latitude
form.longitude = res.longitude
if (!res.address && res.name) { //用户直接选择城市的逻辑
return form.area = res.name
}
if (res.address || res.name) {
return form.area = res.address + res.name
}
form.area = '' //用户啥都没选就点击勾选
}
const selectAddr = () => {
uni.chooseLocation({
success: function(res) {
setAddress(res)
}
})
}
const onSave = async () => {
try {
const {
area,
latitude,
longitude,
address,
} = form
const data = {
id: id.value,
area,
latitude,
longitude,
address,
}
await udpateUser(data)
uni.showToast({
title: '提交成功!',
icon: "none"
})
setTimeout(() => {
uni.reLaunch({
url: "/pages/workbenchManage/index"
})
}, 1000)
} catch (err) {
}
}
</script>
<style lang="scss" scoped>
.chat {
position: fixed;
right: 20rpx;
bottom: 400rpx;
z-index: 9999;
border: none;
padding: 0;
width: 97rpx;
height: auto;
image {
width: 100%;
}
}
.line {
width: 3rpx;
height: 100rpx;
background-color: #BDBDBD;
left: 25rpx;
top: -50rpx;
}
.jiao {
padding: 5px 20rpx;
border-radius: 30rpx;
background-color: #FFBF60;
color: #fff;
}
.li {
width: 710rpx;
.num {
width: 50rpx;
height: 50rpx;
border-radius: 50%;
background-color: #FFBF60;
color: #fff;
font-weight: 700;
font-size: 26rpx;
margin-right: 20rpx;
}
}
.item {
padding: 26rpx 36rpx;
border-radius: 24rpx;
background-color: #fff;
margin-bottom: 24rpx;
width: 590rpx;
.info {
padding: 16rpx;
background-color: #f3f3f3;
border-radius: 16rpx;
}
}
.img {
width: 40rpx;
height: 40rpx;
margin-right: 8rpx;
}
.bt120 {
margin-bottom: 120rpx;
width: 716rpx;
box-sizing: border-box;
}
.footer-btn {
z-index: 9999;
width: 100vw;
height: 144rpx;
background-color: #fff;
display: flex;
justify-content: center;
position: fixed;
bottom: 0;
left: 0;
align-items: center;
.btn {
font-size: 30rpx;
color: #fff;
display: flex;
justify-content: center;
align-items: center;
width: 574rpx;
height: 94rpx;
border-radius: 94rpx;
background-color: #FFBF60;
}
}
.type {
width: 190rpx;
margin-bottom: 74rpx;
}
.form {
padding: 40rpx 32rpx;
box-sizing: border-box;
width: 716rpx;
}
.title {
&::before {
content: "";
display: block;
width: 9rpx;
height: 33rpx;
background-color: #FFBF60;
margin-right: 7rpx;
}
}
.mb6 {
margin-bottom: 6rpx;
}
.containers {
.neir {
padding: 47rpx 27rpx 36rpx 27rpx;
border-radius: 16rpx;
box-sizing: border-box;
width: 716rpx;
.steps {
.line {
width: 163rpx;
height: 3rpx;
background-color: #BDBDBD;
margin-bottom: 30rpx;
}
.num {
width: 50rpx;
height: 50rpx;
background-color: #FFBF60;
border-radius: 50%;
}
}
}
.mainBg {
width: 100vw;
height: 442rpx;
background-image: linear-gradient(to bottom, #FFBF60, #f5f5f5);
}
.content {
top: 0;
left: 0;
padding: 16rpx;
padding-bottom: 200rpx;
.logo {
width: 194rpx;
height: 70rpx;
}
.renz {
image {
width: 26rpx;
height: 26rpx;
}
}
}
}
.highlight {
color: #FFBF60;
}
</style>