Browse Source

修复相关功能

pull/1/head
主管理员 7 months ago
parent
commit
2dbe50d4f3
65 changed files with 3599 additions and 736 deletions
  1. +86
    -0
      api/home.js
  2. +19
    -12
      api/system/user.js
  3. +1
    -2
      manifest.json
  4. +161
    -0
      otherPages/authentication/completed/index.scss
  5. +84
    -0
      otherPages/authentication/completed/index.vue
  6. +109
    -0
      otherPages/authentication/examination/detail.vue
  7. +2
    -2
      otherPages/authentication/list/index.vue
  8. +64
    -0
      otherPages/authentication/training/base.vue
  9. +174
    -0
      otherPages/authentication/training/detail.scss
  10. +64
    -0
      otherPages/authentication/training/detail.vue
  11. +54
    -0
      otherPages/authentication/training/index.scss
  12. +40
    -0
      otherPages/authentication/training/index.vue
  13. +41
    -8
      otherPages/binding/components/y-card.vue
  14. +80
    -15
      otherPages/binding/list/index.vue
  15. +75
    -27
      otherPages/binding/partner/index.vue
  16. +85
    -2
      otherPages/binding/share/index.vue
  17. +69
    -56
      otherPages/binding/withdrawal/index.vue
  18. +6
    -7
      otherPages/myOrdersManage/bond/index.vue
  19. +176
    -0
      otherPages/myOrdersManage/clock/detail.vue
  20. +50
    -0
      otherPages/myOrdersManage/clock/index.scss
  21. +149
    -0
      otherPages/myOrdersManage/clock/index.vue
  22. +114
    -0
      otherPages/myOrdersManage/service/add.vue
  23. +90
    -0
      otherPages/myOrdersManage/service/base.vue
  24. +92
    -0
      otherPages/myOrdersManage/service/detail.scss
  25. +215
    -2
      otherPages/myOrdersManage/service/detail.vue
  26. +101
    -0
      otherPages/myOrdersManage/service/dog.vue
  27. +1
    -1
      otherPages/myOrdersManage/service/index.vue
  28. +1
    -30
      otherPages/orderTakingManage/create/index.css
  29. +131
    -20
      otherPages/orderTakingManage/create/index.vue
  30. +4
    -14
      otherPages/userManage/record/index.scss
  31. +35
    -6
      otherPages/userManage/record/index.vue
  32. +24
    -5
      otherPages/workbenchManage/bindUser/index.scss
  33. +72
    -81
      otherPages/workbenchManage/bindUser/index.vue
  34. +1
    -1
      otherPages/workbenchManage/components/cardData.vue
  35. +119
    -117
      otherPages/workbenchManage/myLevel/index.scss
  36. +64
    -53
      otherPages/workbenchManage/myLevel/index.vue
  37. +52
    -12
      otherPages/workbenchManage/myUser/components/haveOrder.vue
  38. +14
    -2
      otherPages/workbenchManage/myUser/index.scss
  39. +60
    -61
      otherPages/workbenchManage/myUser/index.vue
  40. +81
    -0
      otherPages/workbenchManage/myWallet/components/myData.vue
  41. +154
    -0
      otherPages/workbenchManage/myWallet/index.scss
  42. +162
    -0
      otherPages/workbenchManage/myWallet/index.vue
  43. +5
    -0
      package.json
  44. +55
    -0
      pages.json
  45. +82
    -48
      pages/login/index.vue
  46. +7
    -1
      pages/userManage/index.vue
  47. +27
    -13
      pages/workbenchManage/components/modal.vue
  48. +141
    -55
      pages/workbenchManage/index.vue
  49. +1
    -1
      project.config.json
  50. BIN
      static/images/levelImage/bg1.png
  51. BIN
      static/images/levelImage/bg2.png
  52. BIN
      static/images/levelImage/bg3.png
  53. BIN
      static/images/levelImage/gl.png
  54. BIN
      static/images/levelImage/jc.png
  55. BIN
      static/images/levelImage/money.png
  56. BIN
      static/images/ydd/add_photo.png
  57. BIN
      static/images/ydd/approved.png
  58. BIN
      static/images/ydd/examine.png
  59. BIN
      static/images/ydd/photograph.png
  60. BIN
      static/images/ydd/profile.png
  61. BIN
      static/images/ydd/unqualified.png
  62. +6
    -0
      style/common.scss
  63. +14
    -14
      utils/auth.js
  64. +9
    -7
      utils/getUrl.js
  65. +76
    -61
      utils/request.js

+ 86
- 0
api/home.js View File

@ -0,0 +1,86 @@
import request from '@/utils/request'
export const banner = (data) => {
return request({
url: '/applet/workIn/bannerList',
headers: {
isToken: false
},
method: 'get',
data
})
}
export const joinHh = (data) => {
return request({
url: '/applet/workIn/joinHh',
headers: {
isToken: true
},
method: 'post',
data
})
}
export const joiBcs = (data) => {
return request({
url: "/applet/workIn/joiBcs",
headers: {
isToken: true
},
method: 'post',
data
})
}
export const indexConfig = () => {
return request({
url: "/applet/workIn/indexConfig",
headers: {
isToken: false
},
method: "get"
})
}
export const indexConfigIco = () => {
return request({
url: "/applet/workIn/indexConfigIco",
headers: {
isToken: false
},
method: "get"
})
}
export const successList = () => {
return request({
url: "/applet/workIn/list",
headers: {
isToken: false
},
method: "get"
})
}
export const getbaseInfo = (appUserId) => {
return request({
url: `/applet/login/getAppletUserInfo/${appUserId}`,
headers: {
isToken: true
},
method: "get"
})
}
export const binBaseInfo = (appUserId) => {
return request({
url: `/applet/workOut/hhrInfo/${appUserId}`,
headers: {
isToken: true
},
method: "get"
})
}
export const bindCode = (appUserId) => {
return request({
url: `/applet/workOut/hhrCode/${appUserId}`,
headers: {
isToken: true
},
method: "get"
})
}

+ 19
- 12
api/system/user.js View File

@ -1,31 +1,38 @@
import request from '@/utils/request'
// 个人中心信息
export function getPersonalInfo(){
export function getPersonalInfo() {
return request({
headers:{ "isToken":true},
headers: {
"isToken": true
},
url: "/h5/companion/staff/getStaffInfo",
method: 'get'
})
}
//获取openId
export function getOpenId(code){
export function getOpenId(code) {
return request({
url: `/no-auth/wechat/getOpenId?code=${code}&sourceType=1`,
method: 'get'
url: `/no-auth/wechat/getOpenId?code=${code}&sourceType=1`,
method: 'get'
})
}
//获取手机号
export function getPhoneNumber(data){
export function getPhoneNumber(data) {
return request({
url: `/no-auth/wechat/getPhoneNumber`,
method: 'post',
data
url: `/applet/login/bindPhone`,
method: 'post',
data
})
}
// 微信授权登录
export const wxLogin = (data) => {
return request({
url: `/applet/login/wechatLogin`,
method: 'post',
data
})
}

+ 1
- 2
manifest.json View File

@ -1,6 +1,6 @@
{
"name" : "uni-vuu3",
"appid" : "",
"appid" : "__UNI__08423D1",
"description" : "",
"versionName" : "1.0.0",
"versionCode" : "100",
@ -49,7 +49,6 @@
"quickapp" : {},
/* */
"mp-weixin" : {
/* */
"appid" : "wx01f0f43759922fda",
"setting" : {
"urlCheck" : false,


+ 161
- 0
otherPages/authentication/completed/index.scss View File

@ -0,0 +1,161 @@
.bt120 {
margin-bottom: 120rpx;
width: 716rpx;
box-sizing: border-box;
}
.footer-btn {
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 {
position: relative;
.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;
.logo {
width: 194rpx;
height: 70rpx;
}
.renz {
image {
width: 26rpx;
height: 26rpx;
}
}
}
}
.content_{
width: 675rpx;
height: auto;
background-color: pink;
position: absolute;
top: 410rpx;
left: 15rpx;
padding: 1% 3%;
.top{
width: 625rpx;
height: 132rpx;
background-color: #FFFCF1;
padding: 16rpx 26rpx;
font-size: 28rpx;
.img image{
width: 40rpx;
height: 40rpx;
border-radius: 100%;
background-color: red;
margin:3rpx 10rpx 0 0;
}
.text{
width: 40rpx;
height: 40rpx;
border: 1rpx solid gray;
border-radius: 100%;
// background-color: red;
margin:3rpx 10rpx 0 0;
display: grid;
place-items: center;
}
.veo{
justify-content: space-between;
.veo_ video{
width: 100rpx;
height: 150rpx;
background-color: red;
}
}
}
}
.level{
display: flex;
}

+ 84
- 0
otherPages/authentication/completed/index.vue View File

@ -0,0 +1,84 @@
<template>
<!-- <view>基本考核完成</view> -->
<view class="containers po-r">
<image src="" mode="" class="mainBg"></image>
<view class="w-100 po-a content">
<view class="flex-rowl">
<image src="@/static/images/ydd/logo.png" mode="" class="logo"></image>
<view class="size-36 fw700 color-fff">
伴宠师认证
</view>
</view>
<view class="renz flex-rowl mt10">
<text class="size-28 color-fff mr24">查看认证要求工作详情服务酬劳扥信息</text>
<image src="@/static/images/ydd/more.png" mode=""></image>
</view>
<view class="neir bg-fff mt24">
<view class="steps flex-between">
<view class="step flex-colc">
<view class="num mb6 flex-rowc size-26 color-fff">
1
</view>
<text class="size-22">基本考核</text>
</view>
<view class="line"></view>
<view class="step flex-colc">
<view class="num mb6 flex-rowc size-26 color-fff">
2
</view>
<text class="size-22">培训考核</text>
</view>
<view class="line"></view>
<view class="step flex-colc">
<view class="num mb6 flex-rowc size-26 color-fff">
3
</view>
<text class="size-22">最终准备</text>
</view>
</view>
<view class="color-ffb size-22 mt32">
为保证喂养员认证顺利进行请认真填写并确保信息的真实性
</view>
</view>
</view>
<view class="content_ box-size" :style="{borderRadius:'16rpx'}">
<view class="top box-size" :style="{borderRadius:'16rpx'}">
<view class="level">
<view class="img">
<image src="" mode=""></image>
</view>
基本考核答题已完成
</view>
<view class="level">
<view class="text">
!
</view>
进行培训考核的答题前请认真观看下面的视频和资料
</view>
</view>
<view class="">
<view class="form-title">
平台&服务介绍
</view>
<view class="level veo">
<view class="veo_">
<video src=""></video>
猫妈狗爸平台介绍
</view>
<view class="">
<video src=""></video>
喂养学习视频
</view>
</view>
</view>
</view>
</view>
</template>
<script>
</script>
<style scoped lang="scss">
@import"index.scss";
</style>

+ 109
- 0
otherPages/authentication/examination/detail.vue View File

@ -0,0 +1,109 @@
<template>
<!-- <view>伴宠师认证</view> -->
<view class="box">
<view class="content bg-fff">
<view class="">
<view class="label size-22 level" :style="{borderRadius:'10rpx'}">
选择题
</view>
<view class="">
<view class="size-28 mt32 mb20">
1猫咪每天在地上走路时不时还会打滚 身上是很不干净的最好每个星期洗次澡
</view>
<view class="size-28 color-777 p20 daan mb24">
A
</view>
<view class="size-28 color-777 p20 daan active mb24">
B
</view>
</view>
</view>
<view class="mt60">
<view class="label size-22 level" :style="{borderRadius:'10rpx'}">
主观题
</view>
<view class="">
<view class="size-28 mt32 mb20">
1喂养服务流程:如果您收到一笔喂养猫咪的订单备注猫咪性格怕生请问您会如何进行服务?请详细描述您的全部服务流程(若服务宠物不包含猫咪可回答)
</view>
<view class="size-28 color-777 p20 daan">
<textarea value="" placeholder="" />
<text :style="{color:'#FF2A2A'}">字数低于700字不予合格</text>
</view>
</view>
</view>
</view>
</view>
<view class="footer-btn buttom ">
<view class="size-22 color-777 ">
剩余考试机会<text :style="{color:'#FF8DC6'}">3</text>
</view>
<view class="btn">
重新考试
</view>
</view>
</template>
<script>
</script>
<style lang="scss" scoped>
.active {
color: #FFBF60;
background-color: rgb(255, 241, 240);
}
.daan {
background-color: #F3F3F3;
border-radius: 50rpx;
}
.p20 {
padding: 20px;
}
.box {
// background-image: linear-gradient(to bottom, #ffbf60, #f2f2f2);
padding: 16rpx;
.step {
width: 720rpx;
height: 32rpx;
border-radius: 32rpx;
background-color: #D9D9D9;
.in {
width: 50%;
height: 32rpx;
background-color: #ffbf60;
border-radius: 32rpx;
}
}
}
.content {
border-radius: 20rpx;
padding: 15rpx 20rpx;
.label {
width: 86rpx;
padding: 5rpx 15rpx;
color: #fff;
background-color: #FFBF60;
justify-content: center;
}
}
.level {
display: flex;
}
.subjectivity {
height: auto;
}
.buttom {
display: grid;
place-items: center;
}
</style>

+ 2
- 2
otherPages/authentication/list/index.vue View File

@ -25,14 +25,14 @@
<view class="num mb6 flex-rowc size-26 color-fff">
2
</view>
<text class="size-22">基本考核</text>
<text class="size-22">培训考核</text>
</view>
<view class="line"></view>
<view class="step flex-colc">
<view class="num mb6 flex-rowc size-26 color-fff">
3
</view>
<text class="size-22">基本考核</text>
<text class="size-22">最终准备</text>
</view>
</view>
<view class="color-ffb size-22 mt32">


+ 64
- 0
otherPages/authentication/training/base.vue View File

@ -0,0 +1,64 @@
<template>
<!-- <view>伴宠师认证</view> -->
<view class="containers po-r">
<image src="" mode="" class="mainBg"></image>
<view class="w-100 po-a content">
<view class="flex-rowl">
<image src="@/static/images/ydd/logo.png" mode="" class="logo"></image>
<view class="size-36 fw700 color-fff">
伴宠师认证
</view>
</view>
<view class="renz flex-rowl mt10">
<text class="size-28 color-fff mr24">查看认证要求工作详情服务酬劳扥信息</text>
<image src="@/static/images/ydd/more.png" mode=""></image>
</view>
<view class="neir bg-fff mt24">
<view class="steps flex-between">
<view class="step flex-colc">
<view class="num mb6 flex-rowc size-26 color-fff">
1
</view>
<text class="size-22">基本考核</text>
</view>
<view class="line"></view>
<view class="step flex-colc">
<view class="num mb6 flex-rowc size-26 color-fff">
2
</view>
<text class="size-22">培训考核</text>
</view>
<view class="line"></view>
<view class="step flex-colc">
<view class="num mb6 flex-rowc size-26 color-fff">
3
</view>
<text class="size-22">最终准备</text>
</view>
</view>
<view class="color-ffb size-22 mt32">
为保证喂养员认证顺利进行请认真填写并确保信息的真实性
</view>
</view>
</view>
<view class="content_ box-size" :style="{borderRadius:'16rpx'}">
<view class="img_">
<image src="/static/images/ydd/approved.png" mode="" style="width: 310rpx;height: 311rpx;"></image>
</view>
<view class="text_ level">
审核留言:-您好呀感谢您的认真作答~从您的回答中我们感受到了您对宠物的用心相信您可以胜任宠物喂养员这份小小的工作!希望您能在猫妈狗爸给更多毛孩子带去您的关爱!
</view>
<view class="buttom" :style="{borderRadius:'41rpx'}">
下一步
</view>
</view>
</view>
</template>
<script>
</script>
<style scoped lang="scss">
@import"detail.scss";
</style>

+ 174
- 0
otherPages/authentication/training/detail.scss View File

@ -0,0 +1,174 @@
.bt120 {
margin-bottom: 120rpx;
width: 716rpx;
box-sizing: border-box;
}
.footer-btn {
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 {
position: relative;
.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;
.logo {
width: 194rpx;
height: 70rpx;
}
.renz {
image {
width: 26rpx;
height: 26rpx;
}
}
}
}
.content_{
width: 675rpx;
height: 926rpx;
// background-color: pink;
background-color: #fff;
position: absolute;
top: 410rpx;
left: 15rpx;
padding: 1% 3%;
font-size: 28rpx;
color: #707070;
.img_{
width: 310rpx;
height: 311rpx;
margin: 80rpx 0 0 190rpx;
}
.text{
width: 420rpx;
height: 74rpx;
justify-content: center;
margin: 30rpx 0 0 140rpx;
}
.text_{
width: 674rpx;
height: 74rpx;
justify-content: center;
margin: 30rpx 0 0 10rpx;
font-size: 22rpx !important;
}
.buttom{
width: 594rpx;
height: 94rpx;
display: grid;
place-items: center;
background-color: #FFBF60;
margin: 250rpx 0 0 40rpx;
font-size: 30rpx;
color: #FFFFFF;
}
.buttom_{
width: 594rpx;
height: 94rpx;
justify-content: center;
line-height: 94rpx;
background-color: #FFBF60;
margin: 360rpx 0 0 40rpx;
font-size: 30rpx;
color: #FFFFFF;
.img image{
margin-left: 5rpx;
margin-right: -15rpx;
}
}
}
.level{
display: flex;
}

+ 64
- 0
otherPages/authentication/training/detail.vue View File

@ -0,0 +1,64 @@
<template>
<!-- <view>伴宠师认证</view> -->
<view class="containers po-r">
<image src="" mode="" class="mainBg"></image>
<view class="w-100 po-a content">
<view class="flex-rowl">
<image src="@/static/images/ydd/logo.png" mode="" class="logo"></image>
<view class="size-36 fw700 color-fff">
伴宠师认证
</view>
</view>
<view class="renz flex-rowl mt10">
<text class="size-28 color-fff mr24">查看认证要求工作详情服务酬劳扥信息</text>
<image src="@/static/images/ydd/more.png" mode=""></image>
</view>
<view class="neir bg-fff mt24">
<view class="steps flex-between">
<view class="step flex-colc">
<view class="num mb6 flex-rowc size-26 color-fff">
1
</view>
<text class="size-22">基本考核</text>
</view>
<view class="line"></view>
<view class="step flex-colc">
<view class="num mb6 flex-rowc size-26 color-fff">
2
</view>
<text class="size-22">培训考核</text>
</view>
<view class="line"></view>
<view class="step flex-colc">
<view class="num mb6 flex-rowc size-26 color-fff">
3
</view>
<text class="size-22">最终准备</text>
</view>
</view>
<view class="color-ffb size-22 mt32">
为保证喂养员认证顺利进行请认真填写并确保信息的真实性
</view>
</view>
</view>
<view class="content_ box-size" :style="{borderRadius:'16rpx'}">
<view class="img_">
<image src="/static/images/ydd/examine.png" mode="" style="width: 310rpx;height: 311rpx;"></image>
</view>
<view class="text level">
平台会在三个工作日内完成审核请及时查看审核结果
</view>
<view class="buttom" :style="{borderRadius:'41rpx'}">
我知道了
</view>
</view>
</view>
</template>
<script>
</script>
<style scoped lang="scss">
@import"detail.scss";
</style>

+ 54
- 0
otherPages/authentication/training/index.scss View File

@ -0,0 +1,54 @@
.active {
color: #FFBF60;
background-color: rgb(255, 241, 240);
}
.daan {
background-color: #F3F3F3;
border-radius: 50rpx;
}
.p20 {
padding: 20px;
}
.box {
height: 180rpx;
background-image: linear-gradient(to bottom, #ffbf60, #f2f2f2);
padding: 16rpx;
position: absolute;
.step {
width: 720rpx;
height: 15rpx;
border-radius: 32rpx;
background-color: #D9D9D9;
.in {
width: 50%;
height: 15rpx;
background-color: #ffbf60;
border-radius: 32rpx;
}
}
}
.content {
border-radius: 20rpx;
padding: 15rpx 20rpx;
position: relative;
bottom: 0;
left: 0;
.label {
width: 80rpx;
justify-content: center;
padding: 5rpx 15rpx;
color: #fff;
background-color: #FFBF60;
}
}
.level{
display: flex;
}

+ 40
- 0
otherPages/authentication/training/index.vue View File

@ -0,0 +1,40 @@
<template>
<!-- <view>培训考核</view> -->
<view class="box">
<view class="">
<view class="color-fff size-28">
答题进度 2/5
</view>
<view class="step mt20 mb32">
<view class="in">
</view>
</view>
<view class="content bg-fff">
<view class="label size-22 level" :style="{borderRadius:'10rpx'}">
主观题
</view>
<view class="">
<view class="size-28 mt32 mb20">
1喂养服务流程:如果您收到一笔喂养猫咪的订单备注猫咪性格怕生请问您会如何进行服务?请详细描述您的全部服务流程(若服务宠物不包含猫咪可回答
</view>
<view class="size-28 color-777 p20 daan">
<textarea value="" placeholder="请输入您的答案,不得低于700个字" />
</view>
</view>
</view>
</view>
</view>
<view class="footer-btn buttom ">
<view class="btn">
提交
</view>
</view>
</template>
<script>
</script>
<style scoped lang="scss">
@import"index.scss";
</style>

+ 41
- 8
otherPages/binding/components/y-card.vue View File

@ -1,27 +1,28 @@
<template>
<view class="card-item flex-colc" :style="{'background-image':`url(${data.bgUrl})`}">
<view class="num">
<!-- <view class="num">
{{data.methodNum}}
</view>
<view class="size-30 fw700 color-bc7 mb30">
</view> -->
<view class="size-30 fw700 mb30" :style="{'color':data.titleColour}">
{{data.title}}
</view>
<view class="color-aea size-22">
{{data.des}}
</view>
<view class="y-input flex-rowc" :style="{background:data.inputBg}" v-if="data.copy">
<input type="text" />
<view class="copy flex-rowc size-30">
<input class="codeInput" type="text" v-model="data.code" />
<view class="copy flex-rowc size-30" @click="copyHandle(data)">
复制
</view>
</view>
<view class="btn flex-rowc" v-else>
<view class="btn flex-rowc mt16 " @click="goToShare" v-else>
保存海报
</view>
</view>
</template>
<script setup>
import tab from '../../../plugins/tab';
const {
data
} = defineProps({
@ -30,16 +31,42 @@
default: () => {}
}
})
const emit = defineEmits(['emitCopy', 'savePoster']);
const copyHandle = (data) => {
uni.setClipboardData({
data: data.code,
success: () => {
uni.showToast({
title: "复制成功"
})
},
fail: () => {
uni.showToast({
title: "复制失败",
icon: "none"
})
}
})
}
const goToShare = () => {
emit("savePoster")
// tab.navigateTo("/otherPages/binding/share/index")
}
</script>
<style scoped lang="scss">
.card-item {
width: 684rpx;
padding: 73rpx 0 26rpx;
padding: 106rpx 0 26rpx;
position: relative;
border-radius: 16rpx;
background-color: #eee;
// background-color: #eee;
margin-bottom: 10rpx;
background-repeat: no-repeat;
background-size: 685rpx;
.num {
position: absolute;
@ -58,6 +85,12 @@
margin-top: 24rpx;
border-radius: 16rpx;
.codeInput {
white-space: nowrap;
overflow: hidden;
text-overflow: ellipsis;
}
.copy {
width: 109rpx;
height: 58rpx;


+ 80
- 15
otherPages/binding/list/index.vue View File

@ -5,13 +5,12 @@
<image style="width: 139rpx;" src="@/static/images/ydd/img.png" mode="widthFix"></image>
<view class="flex-colt">
<view class="size-32 mb16">
猫小姐
{{state.baseInfo.info.userName}}
</view>
<view class="title size-22 color-fff">
初级合伙人
{{state.baseInfo.partner_level}}
</view>
<view class="color-a55 size-24 mt16">
当前分成比例25%晋级后分成比例30%
<view class="color-a55 size-24 mt16" v-html="state.baseInfo.level_details">
</view>
</view>
</view>
@ -25,51 +24,117 @@
快速定位宠友群体
</view>
</view>
<image src="" mode=""></image>
<image :src="icon1" mode=""></image>
</view>
<view class="flex-between tips-item">
<view class="flex-colc item">
<view class="size-30 color-a55 fw700">
推广攻略
推广教程
</view>
<view class="size-22 color-a55 mt20">
快速定位宠友群体
</view>
</view>
<image src="" mode=""></image>
<image :src="icon2" mode=""></image>
</view>
</view>
</view>
<view class="cards bg-fff">
<YCard :data="cardData" />
<YCard :data="cardData1" />
<YCard :data="cardData2" />
<YCard :data="state.code" @emitCopy="copyCode" />
<YCard :data="cardData1" @emitShare="shareHandle" @savePoster="savePoster" />
<YCard :data="cardData2" @emitCopy="copyCode" />
</view>
</view>
</template>
<script setup>
import {
binBaseInfo,
bindCode
} from "@/api/home.js"
import {
onMounted,
reactive,
ref
} from "vue"
import YCard from "../components/y-card.vue"
const icon1 = ref('/static/images/levelImage/gl.png')
const icon2 = ref('/static/images/levelImage/jc.png')
const shareRef = ref('share')
const cardData = {
methodNum: "方法一",
title: "邀请码邀请",
des: "用户输入邀请码,直接完成绑定。",
inputBg: "#FDD6CE",
copy: true
titleColour: "#BC796C",
copy: true,
bgUrl: '/static/images/levelImage/bg1.png',
code: 'jsk6623'
}
const cardData1 = {
methodNum: "方法二",
title: "分享海报邀请码",
des: "扫码进去猫妈狗爸完成绑定",
copy: false
titleColour: "#5D81A4",
copy: false,
bgUrl: '/static/images/levelImage/bg2.png'
}
const cardData2 = {
methodNum: "方法三",
title: "分享链接邀请码",
des: "复制链接给好友,进入直接绑定。",
inputBg: "#FDD69A",
copy: true
titleColour: "#B36F3C",
copy: true,
bgUrl: '/static/images/levelImage/bg3.png',
code: 'https://fanyi.baidu.com/mtpe-individual/multimodal?query=%E6%94%BB%E7%95%A5%0A&lang=zh2en&ext_channel=Aldtype'
}
const state = reactive({
info: {},
baseInfo: {},
code: {},
posterUrl: ""
})
onMounted(() => {
const info = uni.getStorageSync("baseInfo")
if (info) {
const baseInfo = JSON.parse(info)
state.info = baseInfo
}
getBaseInfo()
})
//
const getBaseInfo = () => {
binBaseInfo(state.info.userId).then(res => {
state.baseInfo = res.data
})
bindCode(state.info.userId).then(res => {
state.code = {
...cardData,
code: res.data.code
}
state.posterUrl = res.data.url
})
}
//
const savePoster = () => {
uni.navigateTo({
url: "/otherPages/binding/share/index?url=" + state.posterUrl
})
}
const copyCode = (v) => {
console.log(v, "ppp");
}
const shareHandle = () => {
console.log("分享海报");
}
</script>
@ -117,7 +182,7 @@
width: 72rpx;
height: 78rpx;
margin: 0 30rpx 0 0;
background-color: red;
// background-color: red;
}
}
}
@ -126,7 +191,7 @@
border-radius: 16rpx;
width: 750rpx;
padding: 26rpx 33rpx;
height: 100vh;
}
}

+ 75
- 27
otherPages/binding/partner/index.vue View File

@ -2,49 +2,95 @@
<!-- <div>合伙人钱包明细</div> -->
<view class="box">
<view class="top flex" :style="{ borderRadius: '31.5rpx' }">
<view class="income flex element" :class="[current===0?'active':'']" :style="{ borderRadius: '31.5rpx' }"
@click="tabClick(0)">
<view class="income flex element" :style="{ borderRadius: '31.5rpx',backgroundColor: currentTab === 1 ? '#FFBF60' : '#F3F3F3',
color: currentTab === 1 ? 'white' : 'black' }" @click="tabClick(1)">
收入明细
</view>
<view class="income flex element" :class="[current===1?'active':'']" :style="{ borderRadius: '31.5rpx' }"
@click="tabClick(1)">
<view class="income flex element" :style="{ borderRadius: '31.5rpx',backgroundColor: currentTab === 2 ? '#FFBF60' : '#F3F3F3',
color: currentTab === 2 ? 'white' : 'black'}" @click="tabClick(2)">
支出明细
</view>
</view>
<view class="Recharge flex mb24" v-for="item in 5">
<view class="flex">
<image src="https://img1.baidu.com/it/u=3034232350,1041791648&fm=253&fmt=auto&app=138&f=PNG?w=500&h=500"
mode=""></image>
<view class="text1">
<view class="text2">
合伙人推广佣金
</view>
<view>
2020-12-29 12:54:54
<view class="mt20" v-for="(item,index) in detaliList" :key="index">
<view class="Recharge flex mb28">
<view class="flex">
<!-- <image src="https://img1.baidu.com/it/u=3034232350,1041791648&fm=253&fmt=auto&app=138&f=PNG?w=500&h=500"
mode=""></image> -->
<image :src="icon" mode=""></image>
<view class="text1">
<view class="text2">
{{item.title}}
</view>
<view>
{{item.time}}
</view>
</view>
</view>
<view class="text3">
¥ {{item.amont}}
</view>
</view>
<view class="text3">
¥ 168
</view>
<up-line color="#C7C7C7"></up-line>
</view>
</view>
</template>
<script setup>
import {
ref
} from "vue"
const current = ref(0)
ref,
reactive
} from 'vue';
const icon = ref('/static/images/levelImage/money.png')
const detaliList = reactive([{
title: "合伙人推广佣金",
time: "2020-12-29 12:54:54",
amont: "168.00"
},
{
title: "合伙人推广佣金",
time: "2020-12-29 12:54:54",
amont: "168.00"
},
])
const currentTab = ref(1);
const tabClick = (val) => {
current.value = val
detaliList.splice(0, detaliList.length)
switch (val) {
case 1:
detaliList.push({
title: "合伙人推广佣金",
time: "2020-12-29 12:54:54",
amont: "168.00"
}, {
title: "合伙人推广佣金",
time: "2020-12-29 12:54:54",
amont: "168.00"
}, )
currentTab.value = val;
break;
case 2:
detaliList.push({
title: "提现",
time: "2020-12-29 12:54:54",
amont: "168.00"
}, )
currentTab.value = val;
break;
}
}
</script>
<style lang="scss" scoped>
<style scoped lang="scss">
.box {
width: 750rpx;
height: 1452rpx;
height: 100vh;
background-color: #FFFFFF;
padding: 2% 2% 0 2%;
box-sizing: border-box;
@ -56,10 +102,10 @@
background-color: #F3F3F3;
}
.active {
background-color: #FFBF60;
color: white;
}
// .element:hover {
// background-color: #FFBF60;
// color: white;
// }
.income {
width: 361rpx;
@ -75,6 +121,8 @@
padding: 3% 3% 0 2%;
box-sizing: border-box;
justify-content: space-between;
// background-color: red;
}
.flex {


+ 85
- 2
otherPages/binding/share/index.vue View File

@ -1,8 +1,8 @@
<template>
<view class="share w100 h100">
<view class="flex-colc content w100">
<image src="" mode=""></image>
<view class="btn color-fff size-30 flex-rowc">
<image :src="url" mode=""></image>
<view class="btn color-fff size-30 flex-rowc" @tap="getImageInfo">
保存海报
</view>
</view>
@ -10,6 +10,89 @@
</template>
<script>
export default {
data() {
return {
url: "",
}
},
onLoad(options) {
this.url = options.url
},
methods: {
getImageInfo() {
// uni.getImageInfo({
// src: this.url,
// success: res => {
// this.savePosterPath(res.path)
// }
// })
uni.downloadFile({
url: this.url,
success: res => {
this.savePosterPath(res.tempFilePath)
}
})
},
savePosterPath(path) {
uni.getSetting({
success: res => {
console.log(res)
if (res.authSetting['scope.writePhotosAlbum']) {
uni.authorize({
scope: 'scope.writePhotosAlbum',
success: () => {
uni.saveImageToPhotosAlbum({
filePath: path,
success: () => {
uni.showToast({
title: "保存成功"
})
},
fail: () => {
uni.showToast({
title: "保存失败",
icon: "none"
})
}
})
}
})
} else {
uni.showModal({
title: "权限提醒",
content: "是否开启保存相册功能?",
success: res1 => {
if (res1.confirm) {
uni.openSetting({
success: result => {
uni.showToast({
title: "保存成功"
})
},
fail: () => {
uni.showToast({
title: "保存失败",
icon: "none"
})
}
})
}
},
fail: () => {
uni.showToast({
title: "保存失败",
icon: "none"
})
}
})
}
}
})
}
}
}
</script>
<style scoped lang="scss">


+ 69
- 56
otherPages/binding/withdrawal/index.vue View File

@ -8,62 +8,81 @@
<view class="level">
<view class="money level">
<text>¥</text>
<input type="text" />
<up-input class="amount" placeholderClass="placeInput" placeholder="请输入提现金额" clearable fontSize="34rpx"
border="bottom" type="number" color="#FF2742" v-model="num"></up-input>
</view>
<!-- <DForm :list="state. " @submit="handleSubmit" /> -->
</view>
</view>
</view>
<view class="center">
<view class="text">
提现说明
</view>
<view>
1单日提现次数上限为5次;·单笔提现上限200元;
1单日提现次数上限为5次;单笔提现上限200元;
</view>
<view>
2直接提现至微信账户无法提现至支付宝;
</view>
<view class="buttom level" :style="{ borderRadius: '41rpx' }" @click="submit">
提现
</view>
<up-button class="buttom" type="warning" text="提现" shape="circle" @click="cashClick"></up-button>
</view>
<!-- <up-popup :show="show" mode="center" @close="close" @open="open">
<view class="pop" :style="{ borderRadius: '16rpx' }">
<text>提现成功~</text>
</view>
</up-popup> -->
<uni-popup ref="inputDialogRef" type="dialog">
<uni-popup-dialog ref="inputClose" mode="input" title="提现" v-model="fullName" placeholder="请输入姓名"
@confirm="dialogInputConfirm" @close="close" :before-close="true"></uni-popup-dialog>
</uni-popup>
</template>
<script setup>
const submit = () => {
uni.showToast({
title: "提现成功",
icon: "none"
})
import {
ref
} from "vue"
const num = ref('');;
const fullName = ref('')
const inputDialogRef = ref(null)
const inputClose = ref(null)
const cashClick = () => {
if (num.value) {
fullName.value = ''
inputDialogRef.value.open()
} else {
uni.showToast({
icon: 'error',
title: '金额不能为空',
duration: 2000
})
}
}
// import {
// ref
// } from 'vue';
// //
// const show = ref(false);
// //
// function open() {
// // show true
// show.value = true;
// // console.log('open');
// }
const dialogInputConfirm = (val) => {
if (val) {
uni.showToast({
icon: 'success',
title: '提现成功',
duration: 2000
})
fullName.value = val
inputClose.value.close()
fullName.value = ''
} else {
uni.showToast({
icon: 'error',
title: '请输入姓名',
duration: 2000
})
}
}
// function close() {
// // show false
// show.value = false;
// // console.log('close');
// }
const close = () => {
inputDialogRef.value.close()
fullName.value = ''
}
</script>
<style>
<style scoped lang="scss">
.box {
width: 750rpx;
height: 180rpx;
@ -87,24 +106,30 @@
color: red !important;
font-size: 54rpx !important;
margin: 3% 0 0 5%;
}
.money input {
margin-left: 5%;
font-size: 30rpx;
height: 71rpx;
font-weight: 700;
.amount {
margin-left: 5%;
height: 71rpx;
}
.placeInput {
font-weight: 100;
}
}
.center {
width: 100%;
height: 1265rpx;
height: 100vh;
background-color: #FFFFFF;
font-size: 30rpx;
color: #707070;
padding: 84rpx 0 0 54rpx;
padding: 0 50rpx;
;
box-sizing: border-box;
line-height: 45rpx;
margin-top: 80rpx;
}
.text {
@ -119,23 +144,11 @@
background-color: #FFBF60;
color: #FFFFFF;
font-size: 28rpx;
line-height: 89rpx;
margin: 800rpx 0 0 50rpx;
justify-content: center;
border-radius: 41rpx;
margin-top: 300rpx;
}
.level {
display: flex;
}
.pop {
width: 378rpx;
height: 259rpx;
background-color: #000000;
opacity: 0.53;
color: #FFFFFF;
font-size: 30rpx;
align-items: center;
justify-content: center;
}
</style>

+ 6
- 7
otherPages/myOrdersManage/bond/index.vue View File

@ -25,14 +25,13 @@
</view>
</view>
</view>
<view class="center">
<view class="center size-28">
<view class="text3">
保证金说明
</view>
<view class="level">
履约保证金用于处理轻度违约行为以及交易纠纷;具体规则可在
<text>履约保证金协议</text>
中查看如平台有任何私自克扣/乱扣费的情况可向市场监督局投诉平台会对违约做出公正的判罚同时接受公正的处理
<view>
履约保证金用于处理轻度违约行为以及交易纠纷;具体规则可在<text
:style="{color:'#FFBF60'}">履约保证金协议</text>中查看如平台有任何私自克扣/乱扣费的情况可向市场监督局投诉平台会对违约做出公正的判罚同时接受公正的处理
</view>
<view class="">
若在服务过程中由于伴宠师自身原因发生用户的隐私或财产被侵犯等涉及法律相关问题并不是保证金可以解决的;如若发生恶性事件平台会坚决走法律程序判定责任并追责请各位伴宠师严于律己
@ -45,7 +44,7 @@
<script>
</script>
<style>
<style scoped lang="scss">
.box {
width: 750rpx;
height: 180rpx;
@ -133,7 +132,7 @@
height: 1265rpx;
font-size: 30rpx;
color: #707070;
padding: 44rpx 0 0 34rpx;
padding: 44rpx 8rpx 0 34rpx;
box-sizing: border-box;
line-height: 45rpx;
}


+ 176
- 0
otherPages/myOrdersManage/clock/detail.vue View File

@ -0,0 +1,176 @@
<template>
<!-- <view>打卡记录</view> -->
<view class="container level mt24 box-size">
<view class="">
<image src="" mode="" :style="{width:'60rpx',height:'52rpx',backgroundColor:'red'}"></image>
</view>
<view class="ml10">
2025-12-14
</view>
</view>
<view class="box box-size">
<view class="top box-size" :style="{borderRadius:'16rpx'}">
<view class="form-title">
个人准备
</view>
<view class="mt32 ml10">
<span :style="{fontSize:'30rpx',fontWeight:'400'}">手套照片</span>
<span :style="{fontSize:'22rpx',color:'#C7C7C7'}">(至少1张)</span>
</view>
<view class="level">
<view class="mt20 ml10">
<image src="" mode="" :style="{width:'131rpx',height:'131rpx',backgroundColor:'red'}">
</image>
</view>
</view>
<view class="mt32 ml10">
<span :style="{fontSize:'30rpx',fontWeight:'400'}">鞋套照片</span>
<span :style="{fontSize:'22rpx',color:'#C7C7C7'}">(至少1张)</span>
</view>
<view class="level">
<view class="mt20 ml10">
<image src="" mode="" :style="{width:'131rpx',height:'131rpx',backgroundColor:'red'}">
</image>
</view>
</view>
</view>
<view class="top mt24 box-size" :style="{borderRadius:'16rpx'}">
<view class="form-title">
宠物状态记录
</view>
<view class="mt32 ml10">
<span :style="{fontSize:'30rpx',fontWeight:'400'}">小汪照片</span>
<span :style="{fontSize:'22rpx',color:'#C7C7C7'}">(至少2张)</span>
</view>
<view class="level">
<view class="mt20 ml10 mr20">
<image src="" mode="" :style="{width:'131rpx',height:'131rpx',backgroundColor:'red'}">
</image>
</view>
<view class="mt20 ml10 mr20">
<image src="" mode="" :style="{width:'131rpx',height:'131rpx',backgroundColor:'red'}">
</image>
</view>
</view>
<view class="mt32 ml10">
<span :style="{fontSize:'30rpx',fontWeight:'400'}">Billion照片</span>
<span :style="{fontSize:'22rpx',color:'#C7C7C7'}">(至少2张)</span>
</view>
<view class="level">
<view class="mt20 ml10 mr20">
<image src="" mode="" :style="{width:'131rpx',height:'131rpx',backgroundColor:'red'}">
</image>
</view>
<view class="mt20 ml10 mr20">
<image src="" mode="" :style="{width:'131rpx',height:'131rpx',backgroundColor:'red'}">
</image>
</view>
</view>
</view>
<view class="top mt24 box-size" :style="{borderRadius:'16rpx'}">
<view class="form-title">
基础服务记录
</view>
<view class="mt32 ml10" :style="{fontSize:'30rpx',fontWeight:'400'}">粮碗前后对比 </view>
<view class="level">
<view class="mt20 ml10">
<image src="" mode="" :style="{width:'131rpx',height:'131rpx',backgroundColor:'red'}">
</image>
<view class="jus-center level" :style="{color:'#999999',fontSize:'22rpx',width:'131rpx'}"></view>
</view>
<view class="mt20 ml10 ml28">
<image src="" mode="" :style="{width:'131rpx',height:'131rpx',backgroundColor:'red'}">
</image>
<view class="jus-center level" :style="{color:'#999999',fontSize:'22rpx',width:'131rpx'}"></view>
</view>
</view>
<view class="mt32 ml10" :style="{fontSize:'30rpx',fontWeight:'400'}">水碗前后对比 </view>
<view class="level">
<view class="mt20 ml10">
<image src="" mode="" :style="{width:'131rpx',height:'131rpx',backgroundColor:'red'}">
</image>
<view class="jus-center level" :style="{color:'#999999',fontSize:'22rpx',width:'131rpx'}"></view>
</view>
<view class="mt20 ml10 ml28">
<image src="" mode="" :style="{width:'131rpx',height:'131rpx',backgroundColor:'red'}">
</image>
<view class="jus-center level" :style="{color:'#999999',fontSize:'22rpx',width:'131rpx'}"></view>
</view>
</view>
<view class="mt32 ml10" :style="{fontSize:'30rpx',fontWeight:'400'}">猫砂盆尿垫前后对比 </view>
<view class="level">
<view class="mt20 ml10">
<image src="" mode="" :style="{width:'131rpx',height:'131rpx',backgroundColor:'red'}">
</image>
<view class="jus-center level" :style="{color:'#999999',fontSize:'22rpx',width:'131rpx'}"></view>
</view>
<view class="mt20 ml10 ml28">
<image src="" mode="" :style="{width:'131rpx',height:'131rpx',backgroundColor:'red'}">
</image>
<view class="jus-center level" :style="{color:'#999999',fontSize:'22rpx',width:'131rpx'}"></view>
</view>
</view>
</view>
<view class="top mt24 box-size" :style="{borderRadius:'16rpx'}">
<view class="form-title">
定制服务记录
</view>
<view class="mt32 ml10">
<span :style="{fontSize:'30rpx',fontWeight:'400'}">遛狗</span>
<span :style="{fontSize:'22rpx',color:'#C7C7C7'}">(2-3)</span>
</view>
<view class="level">
<view class="mt20 ml10 mr20">
<image src="" mode="" :style="{width:'131rpx',height:'131rpx',backgroundColor:'red'}">
</image>
</view>
<view class="mt20 ml10 mr20">
<image src="" mode="" :style="{width:'131rpx',height:'131rpx',backgroundColor:'red'}">
</image>
</view>
<view class="mt20 ml10 mr20">
<image src="" mode="" :style="{width:'131rpx',height:'131rpx',backgroundColor:'red'}">
</image>
</view>
</view>
<view class="mt32 ml10">
<span :style="{fontSize:'30rpx',fontWeight:'400'}">陪玩</span>
<span :style="{fontSize:'22rpx',color:'#C7C7C7'}">(2-3)</span>
</view>
<view class="level">
<view class="mt20 ml10 mr20">
<image src="" mode="" :style="{width:'131rpx',height:'131rpx',backgroundColor:'red'}">
</image>
</view>
<view class="mt20 ml10 mr20">
<image src="" mode="" :style="{width:'131rpx',height:'131rpx',backgroundColor:'red'}">
</image>
</view>
<view class="mt20 ml10 mr20">
<image src="" mode="" :style="{width:'131rpx',height:'131rpx',backgroundColor:'red'}">
</image>
</view>
</view>
</view>
<view class="top mt24 box-size mb10" :style="{borderRadius:'16rpx'}">
<view class="form-title">
其他补充信息(非必填)
</view>
<view class="mt32 ml10" :style="{color:'#999999',fontSize:'30rpx'}">
可记录一下今日趣事宠物状况提醒事项等
</view>
<view class="mt24">
<textarea name="" id="" cols="30" rows="10" placeholder="请输入内容"
:style="{color:'#999999',fontSize:'30rpx',backgroundColor:'#F5F5F5',borderRadius:'16rpx',width:'681rpx',height:'180rpx'}"
class="pd20 box-size"></textarea>
</view>
</view>
</view>
</template>
<script>
</script>
<style scoped lang="scss">
@import"index.scss"
</style>

+ 50
- 0
otherPages/myOrdersManage/clock/index.scss View File

@ -0,0 +1,50 @@
.container{
width: 100vw;
height: 103rpx;
background-color: #FFFAF2;
padding: 25rpx 250rpx;
}
.box{
width: 100vw;
height: auto;
padding: 20rpx;
position: absolute;
.top{
width: 710rpx;
height: auto;
background-color: #fff;
padding: 0 20rpx 20rpx 20rpx;
}
.buttom{
width: 750rpx;
height: 163rpx;
background-color: #fff;
position: relative;
bottom: 32rpx;
left: -20rpx;
padding: 40rpx 85rpx;
.buttom-item{
width: 594rpx;
height: 94rpx;
background-color: #FFBF60;
align-items: center;
justify-content: center;
}
}
}
.box-size{
box-sizing: border-box;
}
.level{
display: flex;
}
.jus-center{
justify-content: center;
}

+ 149
- 0
otherPages/myOrdersManage/clock/index.vue View File

@ -0,0 +1,149 @@
<template>
<!-- <view>打卡</view> -->
<view class="box box-size">
<view class="top box-size" :style="{borderRadius:'16rpx'}">
<view class="form-title">
个人准备
</view>
<view class="mt32 ml10">
<span :style="{fontSize:'30rpx',fontWeight:'400'}">手套照片</span>
<span :style="{fontSize:'22rpx',color:'#C7C7C7'}">(至少1张)</span>
</view>
<view class="level">
<view class="mt20 ml10">
<image src="/static/images/ydd/add_photo.png" mode="" :style="{width:'131rpx',height:'131rpx'}">
</image>
</view>
</view>
<view class="mt32 ml10">
<span :style="{fontSize:'30rpx',fontWeight:'400'}">鞋套照片</span>
<span :style="{fontSize:'22rpx',color:'#C7C7C7'}">(至少1张)</span>
</view>
<view class="level">
<view class="mt20 ml10">
<image src="/static/images/ydd/add_photo.png" mode="" :style="{width:'131rpx',height:'131rpx'}">
</image>
</view>
</view>
</view>
<view class="top mt24 box-size" :style="{borderRadius:'16rpx'}">
<view class="form-title">
宠物状态记录
</view>
<view class="mt32 ml10">
<span :style="{fontSize:'30rpx',fontWeight:'400'}">小汪照片</span>
<span :style="{fontSize:'22rpx',color:'#C7C7C7'}">(至少2张)</span>
</view>
<view class="level">
<view class="mt20 ml10 mr20">
<image src="/static/images/ydd/add_photo.png" mode="" :style="{width:'131rpx',height:'131rpx'}">
</image>
</view>
</view>
<view class="mt32 ml10">
<span :style="{fontSize:'30rpx',fontWeight:'400'}">Billion照片</span>
<span :style="{fontSize:'22rpx',color:'#C7C7C7'}">(至少2张)</span>
</view>
<view class="level">
<view class="mt20 ml10 mr20">
<image src="/static/images/ydd/add_photo.png" mode="" :style="{width:'131rpx',height:'131rpx'}">
</image>
</view>
</view>
</view>
<view class="top mt24 box-size" :style="{borderRadius:'16rpx'}">
<view class="form-title">
基础服务记录
</view>
<view class="mt32 ml10" :style="{fontSize:'30rpx',fontWeight:'400'}">粮碗前后对比 </view>
<view class="level">
<view class="mt20 ml10">
<image src="/static/images/ydd/add_photo.png" mode="" :style="{width:'131rpx',height:'131rpx'}">
</image>
<view class="jus-center level" :style="{color:'#999999',fontSize:'22rpx',width:'131rpx'}"></view>
</view>
<view class="mt20 ml10 ml28">
<image src="/static/images/ydd/add_photo.png" mode="" :style="{width:'131rpx',height:'131rpx'}">
</image>
<view class="jus-center level" :style="{color:'#999999',fontSize:'22rpx',width:'131rpx'}"></view>
</view>
</view>
<view class="mt32 ml10" :style="{fontSize:'30rpx',fontWeight:'400'}">水碗前后对比 </view>
<view class="level">
<view class="mt20 ml10">
<image src="/static/images/ydd/add_photo.png" mode="" :style="{width:'131rpx',height:'131rpx'}">
</image>
<view class="jus-center level" :style="{color:'#999999',fontSize:'22rpx',width:'131rpx'}"></view>
</view>
<view class="mt20 ml10 ml28">
<image src="/static/images/ydd/add_photo.png" mode="" :style="{width:'131rpx',height:'131rpx'}">
</image>
<view class="jus-center level" :style="{color:'#999999',fontSize:'22rpx',width:'131rpx'}"></view>
</view>
</view>
<view class="mt32 ml10" :style="{fontSize:'30rpx',fontWeight:'400'}">猫砂盆尿垫前后对比 </view>
<view class="level">
<view class="mt20 ml10">
<image src="/static/images/ydd/add_photo.png" mode="" :style="{width:'131rpx',height:'131rpx'}">
</image>
<view class="jus-center level" :style="{color:'#999999',fontSize:'22rpx',width:'131rpx'}"></view>
</view>
<view class="mt20 ml10 ml28">
<image src="/static/images/ydd/add_photo.png" mode="" :style="{width:'131rpx',height:'131rpx'}">
</image>
<view class="jus-center level" :style="{color:'#999999',fontSize:'22rpx',width:'131rpx'}"></view>
</view>
</view>
</view>
<view class="top mt24 box-size" :style="{borderRadius:'16rpx'}">
<view class="form-title">
定制服务记录
</view>
<view class="mt32 ml10">
<span :style="{fontSize:'30rpx',fontWeight:'400'}">遛狗</span>
<span :style="{fontSize:'22rpx',color:'#C7C7C7'}">(2-3)</span>
</view>
<view class="level">
<view class="mt20 ml10 mr20">
<image src="/static/images/ydd/add_photo.png" mode="" :style="{width:'131rpx',height:'131rpx'}">
</image>
</view>
</view>
<view class="mt32 ml10">
<span :style="{fontSize:'30rpx',fontWeight:'400'}">陪玩</span>
<span :style="{fontSize:'22rpx',color:'#C7C7C7'}">(2-3)</span>
</view>
<view class="level">
<view class="mt20 ml10 mr20">
<image src="/static/images/ydd/add_photo.png" mode="" :style="{width:'131rpx',height:'131rpx'}">
</image>
</view>
</view>
</view>
<view class="top mt24 box-size" :style="{borderRadius:'16rpx'}">
<view class="form-title">
其他补充信息(非必填)
</view>
<view class="mt32 ml10" :style="{color:'#999999',fontSize:'30rpx'}">
可记录一下今日趣事宠物状况提醒事项等
</view>
<view class="mt24">
<textarea name="" id="" cols="30" rows="10" placeholder="请输入内容"
:style="{color:'#999999',fontSize:'30rpx',backgroundColor:'#F5F5F5',borderRadius:'16rpx',width:'681rpx',height:'180rpx'}"
class="pd20 box-size"></textarea>
</view>
</view>
<view class="buttom mt60 box-size">
<view class="buttom-item level size-30" :style="{borderRadius:'41rpx',color:'#fff'}">
确定提交
</view>
</view>
</view>
</template>
<script>
</script>
<style scoped lang="scss">
@import"index.scss"
</style>

+ 114
- 0
otherPages/myOrdersManage/service/add.vue View File

@ -0,0 +1,114 @@
<template>
<!-- <div>服务档案</div> -->
<view class="box box-size">
<view class="top box-size" :style="{borderRadius:'16rpx'}">
<view class="form-title">
您需要的清洁内容
</view>
<view class=" mt32 ml10">
<view class="color-A55 size-30 fw400">
陪玩
</view>
<view class="size-30 mt32 fw400">
陪玩用品摆放位置
</view>
<view class="img mt20">
<image src="" mode=""></image>
</view>
<view class="size-30 mt24" :style="{color:'#999999'}">
您希望的互动方式和要求
</view>
<view class="notes mt16 box-size ml--15" :style="{borderRadius:'16rpx'}">
<input type="text" :style="{height:'50rpx',fontSize:'30rpx'}">
</view>
</view>
<view class="line" :style="{borderRadius:'1rpx'}"></view>
<view class=" mt32 ml10">
<view class="color-A55 size-30 fw400">
活动区吸毛
</view>
<view class="size-30 mt32 fw400">
吸毛用品摆放位置
</view>
<view class="img mt20">
<image src="" mode=""></image>
</view>
<view class="size-30 mt24" :style="{color:'#999999'}">
请说明吸毛区域及要求
</view>
<view class="notes mt16 box-size ml--15" :style="{borderRadius:'16rpx'}">
<input type="text" :style="{height:'50rpx',fontSize:'30rpx'}">
</view>
</view>
<view class="line" :style="{borderRadius:'1rpx'}"></view>
<view class=" mt32 ml10">
<view class="color-A55 size-30 fw400">
毛发梳理
</view>
<view class="size-30 mt32 fw400">
毛发梳理用品摆放位置
</view>
<view class="img mt20">
<image src="" mode=""></image>
</view>
<view class="size-30 mt24" :style="{color:'#999999'}">
请说明毛发梳理要求(: 天数,次数等)
</view>
<view class="notes mt16 box-size ml--15" :style="{borderRadius:'16rpx'}">
<input type="text" :style="{height:'50rpx',fontSize:'30rpx'}">
</view>
</view>
<view class="line" :style="{borderRadius:'1rpx'}"></view>
<view class=" mt32 ml10">
<view class="color-A55 size-30 fw400">
食具深度清洁
</view>
<view class="size-30 mt32 fw400">
需深度清洁的用具及消毒剂摆放位置
</view>
<view class="img mt20">
<image src="" mode=""></image>
</view>
<view class="size-30 mt24" :style="{color:'#999999'}">
请说明食具/饮水机深度清洁要求(如清洁方式消毒剂使用方式频率等)
</view>
<view class="notes mt16 box-size ml--15" :style="{borderRadius:'16rpx'}">
<input type="text" :style="{height:'50rpx',fontSize:'30rpx'}">
</view>
</view>
<view class="line" :style="{borderRadius:'1rpx'}"></view>
<view class=" mt32 ml10">
<view class="color-A55 size-30 fw400">
喂药上药
</view>
<view class="size-30 mt32 fw400">
药品摆放位置
</view>
<view class="img mt20">
<image src="" mode=""></image>
</view>
<view class="size-30 mt24" :style="{color:'#999999'}">
请说明药品使用方式
</view>
<view class="notes mt16 box-size ml--15" :style="{borderRadius:'16rpx'}">
<input type="text" :style="{height:'50rpx',fontSize:'30rpx'}">
</view>
</view>
</view>
<view class="buttom_ mt60 box-size level">
<view class="buttom_item level size-30" :style="{borderRadius:'41rpx',color:'#fff'}">
上一页
</view>
<view class="buttom_item level size-30" :style="{borderRadius:'41rpx',color:'#fff'}">
下一页
</view>
</view>
</view>
</template>
<script>
</script>
<style scoped lang="scss">
@import"detail.scss"
</style>

+ 90
- 0
otherPages/myOrdersManage/service/base.vue View File

@ -0,0 +1,90 @@
<template>
<!-- <div>服务档案</div> -->
<view class="box box-size">
<view class="top box-size" :style="{borderRadius:'16rpx'}">
<view class="form-title">
您需要的清洁内容
</view>
<view class=" mt32 ml10">
<view class="color-A55 size-30 fw400">
猫砂
</view>
<view class="size-30 mt32 fw400">
猫砂摆放位置
</view>
<view class="img mt20">
<image src="" mode=""></image>
</view>
<view class="size-30 mt24 flex-between">
<view :style="{color:'#999999'}">猫砂更换频率</view>
<view class="level">
<view class="input_ mr10">
<input type="text" :style="{width:'80rpx',height:'50rpx',fontSize:'30rpx'}">
</view>
<view></view>
<view class="input_ mr10">
<input type="text" :style="{width:'80rpx',height:'50rpx',fontSize:'30rpx'}">
</view>
<view></view>
</view>
</view>
<view class="size-30 mt24" :style="{color:'#999999'}">
备注信息
</view>
<view class="notes mt16 box-size ml--15" :style="{borderRadius:'16rpx'}">
<input type="text" :style="{height:'50rpx',fontSize:'30rpx'}">
</view>
</view>
<view class="line" :style="{borderRadius:'1rpx'}"></view>
<view class=" mt32 ml10">
<view class="color-A55 size-30 fw400">
尿垫
</view>
<view class="size-30 mt32 fw400">
尿垫摆放位置
</view>
<view class="img mt20">
<image src="" mode=""></image>
</view>
<view class="size-30 mt24 flex-between">
<view :style="{color:'#999999'}">更换尿垫</view>
<view class=""></view>
</view>
<view class="size-30 mt24 flex-between">
<view :style="{color:'#999999'}">尿垫更换频率</view>
<view class="level">
<view class="input_ mr10">
<input type="text" :style="{width:'80rpx',height:'50rpx',fontSize:'30rpx'}">
</view>
<view></view>
<view class="input_ mr10">
<input type="text" :style="{width:'80rpx',height:'50rpx',fontSize:'30rpx'}">
</view>
<view></view>
</view>
</view>
<view class="size-30 mt24" :style="{color:'#999999'}">
备注信息
</view>
<view class="notes mt16 box-size ml--15" :style="{borderRadius:'16rpx'}">
<input type="text" :style="{height:'50rpx',fontSize:'30rpx'}">
</view>
</view>
</view>
<view class="buttom_ mt60 box-size level">
<view class="buttom_item level size-30" :style="{borderRadius:'41rpx',color:'#fff'}">
上一页
</view>
<view class="buttom_item level size-30" :style="{borderRadius:'41rpx',color:'#fff'}">
下一页
</view>
</view>
</view>
</template>
<script>
</script>
<style scoped lang="scss">
@import"detail.scss"
</style>

+ 92
- 0
otherPages/myOrdersManage/service/detail.scss View File

@ -0,0 +1,92 @@
.box {
width: 100vw;
height: 100vh;
padding: 0 20rpx;
position: absolute;
.top{
width: 710rpx;
height: auto;
background-color: #fff;
padding: 0 23rpx 53rpx 23rpx;
}
.img image{
width: 173rpx;
height: 230rpx;
background-color: red;
}
.notes{
width: 681rpx;
height: auto;
padding: 4rpx 10rpx;
border: 1rpx solid #999999;
}
.input_{
border-bottom: 1px solid #000;
text-align: center;
}
.line{
width: 691rpx;
height: 1rpx;
background-color: #707070;
opacity: 0.14;
margin: 35rpx 0 35rpx -13rpx;
}
.buttom{
width: 750rpx;
height: 163rpx;
background-color: #fff;
position: relative;
bottom: 32rpx;
left: -20rpx;
padding: 40rpx 85rpx;
.buttom-item{
width: 594rpx;
height: 94rpx;
background-color: #FFBF60;
align-items: center;
justify-content: center;
}
}
.buttom_{
width: 750rpx;
height: 163rpx;
background-color: #fff;
padding: 40rpx 40rpx;
position: relative;
bottom: 32rpx;
left: -20rpx;
justify-content: space-between;
.buttom_item{
width: 307rpx;
height: 94rpx;
background-color: #FFBF60;
align-items: center;
justify-content: center;
}
}
}
.ml--15{
margin-left: -15rpx;
}
.color-A55{
color: #A55822;
}
.box-size {
box-sizing: border-box;
}
.level{
display: flex;
}

+ 215
- 2
otherPages/myOrdersManage/service/detail.vue View File

@ -1,13 +1,226 @@
<template>
<!-- <div>服务档案</div> -->
<view class="box box-size">
<view class="top box-size" :style="{borderRadius:'16rpx'}">
<view class="form-title">
本次喂养过程中您需要喂养的食品包括
</view>
<view class=" mt32 ml10">
<view class="color-A55 size-30 fw400">
干粮(主粮冻干等)
</view>
<view class="size-30 mt32 fw400">
干粮摆放位置
</view>
<view class="img mt20">
<image src="" mode=""></image>
</view>
<view class="size-30 mt24 flex-between">
<view :style="{color:'#999999'}">干粮喂养重量</view>
<view class="level">
<view class="input_ mr10">
<input type="text" :style="{width:'80rpx',height:'50rpx',fontSize:'30rpx'}">
</view>
<view>/(单位:)</view>
</view>
</view>
<view class="size-30 mt24 flex-between">
<view :style="{color:'#999999'}">干粮喂养频率</view>
<view class="level">
<view class="input_ mr10">
<input type="text" :style="{width:'80rpx',height:'50rpx',fontSize:'30rpx'}">
</view>
<view></view>
<view class="input_ mr10">
<input type="text" :style="{width:'80rpx',height:'50rpx',fontSize:'30rpx'}">
</view>
<view></view>
</view>
</view>
<view class="size-30 mt24" :style="{color:'#999999'}">
备注信息
</view>
<view class="notes mt16 box-size ml--15" :style="{borderRadius:'16rpx'}">
<input type="text" :style="{height:'50rpx',fontSize:'30rpx'}">
</view>
</view>
<view class="line" :style="{borderRadius:'1rpx'}"></view>
<view class=" mt32 ml10">
<view class="color-A55 size-30 fw400">
湿粮(罐头等)
</view>
<view class="size-30 mt32 fw400">
湿粮摆放位置
</view>
<view class="img mt20">
<image src="" mode=""></image>
</view>
<view class="size-30 mt24 flex-between">
<view :style="{color:'#999999'}">湿粮喂养重量</view>
<view class="level">
<view class="input_ mr10">
<input type="text" :style="{width:'80rpx',height:'50rpx',fontSize:'30rpx'}">
</view>
<view>/(单位:)</view>
</view>
</view>
<view class="size-30 mt24 flex-between">
<view :style="{color:'#999999'}">湿粮喂养频率</view>
<view class="level">
<view class="input_ mr10">
<input type="text" :style="{width:'80rpx',height:'50rpx',fontSize:'30rpx'}">
</view>
<view></view>
<view class="input_ mr10">
<input type="text" :style="{width:'80rpx',height:'50rpx',fontSize:'30rpx'}">
</view>
<view></view>
</view>
</view>
<view class="size-30 mt24" :style="{color:'#999999'}">
备注信息
</view>
<view class="notes mt16 box-size ml--15" :style="{borderRadius:'16rpx'}">
<input type="text" :style="{height:'50rpx',fontSize:'30rpx'}">
</view>
</view>
<view class="line" :style="{borderRadius:'1rpx'}"></view>
<view class=" mt32 ml10">
<view class="color-A55 size-30 fw400">
自制食品
</view>
<view class="size-30 mt32 fw400">
自制食品摆放位置
</view>
<view class="img mt20">
<image src="" mode=""></image>
</view>
<view class="size-30 mt24" :style="{color:'#999999'}">
自制饭制作和喂食说明
</view>
<view class="notes mt16 box-size ml--15" :style="{borderRadius:'16rpx'}">
<input type="text" :style="{height:'50rpx',fontSize:'30rpx'}">
</view>
</view>
<view class="line" :style="{borderRadius:'1rpx'}"></view>
<view class=" mt32 ml10">
<view class="color-A55 size-30 fw400">
生骨肉
</view>
<view class="size-30 mt32 fw400">
生骨肉摆放位置
</view>
<view class="img mt20">
<image src="" mode=""></image>
</view>
<view class="size-30 mt24" :style="{color:'#999999'}">
生骨肉喂食说明
</view>
<view class="notes mt16 box-size ml--15" :style="{borderRadius:'16rpx'}">
<input type="text" :style="{height:'50rpx',fontSize:'30rpx'}">
</view>
</view>
<view class="line" :style="{borderRadius:'1rpx'}"></view>
<view class=" mt32 ml10">
<view class="color-A55 size-30 fw400">
保健品
</view>
<view class="size-30 mt32 fw400">
保健品摆放位置
</view>
<view class="img mt20">
<image src="" mode=""></image>
</view>
<view class="size-30 mt24" :style="{color:'#999999'}">
保健品喂养方式
</view>
<view class="notes mt16 box-size ml--15" :style="{borderRadius:'16rpx'}">
<input type="text" :style="{height:'50rpx',fontSize:'30rpx'}">
</view>
</view>
<view class="line" :style="{borderRadius:'1rpx'}"></view>
<view class=" mt32 ml10">
<view class="color-A55 size-30 fw400">
零食
</view>
<view class="size-30 mt32 fw400">
零食摆放位置
</view>
<view class="img mt20">
<image src="" mode=""></image>
</view>
<view class="size-30 mt24" :style="{color:'#999999'}">
零食喂养方式
</view>
<view class="notes mt16 box-size ml--15" :style="{borderRadius:'16rpx'}">
<input type="text" :style="{height:'50rpx',fontSize:'30rpx'}">
</view>
</view>
<view class="line" :style="{borderRadius:'1rpx'}"></view>
</view>
<view class="top mt24" :style="{borderRadius:'16rpx'}">
<view class="form-title">
食盆/自动喂食器
</view>
<view class=" mt32 ml10">
<view class="color-A55 size-30 fw400">
喂食器具摆放位置
</view>
<view class="mt20">
<image src="" mode="" :style="{width:'307rpx',height:'230rpx',backgroundColor:'red'}"></image>
</view>
<view class="size-30 mt24" :style="{color:'#999999'}">
备注信息
</view>
<view class="notes mt16 box-size ml--15" :style="{borderRadius:'16rpx'}">
<input type="text" :style="{height:'50rpx',fontSize:'30rpx'}">
</view>
</view>
</view>
<view class="top mt24" :style="{borderRadius:'16rpx'}">
<view class="form-title">
饮用水
</view>
<view class=" mt32 ml10">
<view class="color-A55 size-30 fw400">
饮用水摆放位置
</view>
<view class="mt20">
<image src="" mode="" :style="{width:'307rpx',height:'230rpx',backgroundColor:'red'}"></image>
</view>
<view class="size-30 mt24" :style="{color:'#999999'}">
饮用水添加要求
</view>
<view class="notes mt16 box-size ml--15" :style="{borderRadius:'16rpx'}">
<input type="text" :style="{height:'50rpx',fontSize:'30rpx'}">
</view>
</view>
</view>
<view class="top mt24" :style="{borderRadius:'16rpx'}">
<view class="form-title">
其他补充信息(非必填)
</view>
<view class=" mt32 ml10">
<view class="size-30 mt24" :style="{color:'#999999'}">
备注信息
</view>
<view class="notes mt16 box-size ml--15" :style="{borderRadius:'16rpx'}">
<input type="text" :style="{height:'50rpx',fontSize:'30rpx'}">
</view>
</view>
</view>
<view class="buttom mt60 box-size">
<view class="buttom-item level size-30" :style="{borderRadius:'41rpx',color:'#fff'}">
下一页
</view>
</view>
</view>
</template>
<script>
</script>
<style scoped lang="scss">
@import"detail.css";
@import"detail.scss";
</style>

+ 101
- 0
otherPages/myOrdersManage/service/dog.vue View File

@ -0,0 +1,101 @@
<template>
<!-- <div>服务档案</div> -->
<view class="box box-size">
<view class="top box-size" :style="{borderRadius:'16rpx'}">
<view class="form-title">
遛狗用品
</view>
<view class=" mt32 ml10">
<view class="size-30 mt32 fw400">
遛狗用品摆放位置
</view>
<view class="img mt20">
<image src="" mode=""></image>
</view>
<view class="size-30 mt24 flex-between">
<view :style="{color:'#999999'}">下雨天是否遛狗</view>
<view class=""></view>
</view>
<view class="size-30 mt32 fw400">
狗狗雨具摆放位置
</view>
<view class="img mt20">
<image src="" mode=""></image>
</view>
<view class="size-30 mt24" :style="{color:'#999999'}">
雨天遛狗要求
</view>
<view class="notes mt16 box-size ml--15" :style="{borderRadius:'16rpx'}">
<input type="text" :style="{height:'50rpx',fontSize:'30rpx'}">
</view>
</view>
</view>
<view class="top mt24 box-size" :style="{borderRadius:'16rpx'}">
<view class="form-title">
其他补充信息(非必填)
</view>
<view class=" mt32 ml10">
<view class="color-A55 size-30 fw400">
遛狗时长
</view>
<view class="size-30 mt24" :style="{color:'#999999'}">
备注信息
</view>
<view class="notes mt16 box-size ml--15" :style="{borderRadius:'16rpx'}">
<input type="text" placeholder="文字说明文字说明文字说明" :style="{height:'50rpx',fontSize:'30rpx'}">
</view>
</view>
<view class="line" :style="{borderRadius:'1rpx'}"></view>
<view class=" mt32 ml10">
<view class="color-A55 size-30 fw400">
狗狗行为
</view>
<view class="size-30 mt24" :style="{color:'#999999'}">
备注信息
</view>
<view class="notes mt16 box-size ml--15" :style="{borderRadius:'16rpx'}">
<input type="text" placeholder="文字说明文字说明文字说明" :style="{height:'50rpx',fontSize:'30rpx'}">
</view>
</view>
<view class="line" :style="{borderRadius:'1rpx'}"></view>
<view class=" mt32 ml10">
<view class="color-A55 size-30 fw400">
偏好区域
</view>
<view class="size-30 mt24" :style="{color:'#999999'}">
备注信息
</view>
<view class="notes mt16 box-size ml--15" :style="{borderRadius:'16rpx'}">
<input type="text" placeholder="文字说明文字说明文字说明" :style="{height:'50rpx',fontSize:'30rpx'}">
</view>
</view>
<view class="line" :style="{borderRadius:'1rpx'}"></view>
<view class=" mt32 ml10">
<view class="color-A55 size-30 fw400">
偏好路线
</view>
<view class="size-30 mt24" :style="{color:'#999999'}">
备注信息
</view>
<view class="notes mt16 box-size ml--15" :style="{borderRadius:'16rpx'}">
<input type="text" placeholder="文字说明文字说明文字说明" :style="{height:'50rpx',fontSize:'30rpx'}">
</view>
</view>
</view>
<view class="buttom_ mt60 box-size level">
<view class="buttom_item level size-30" :style="{borderRadius:'41rpx',color:'#fff'}">
上一页
</view>
<view class="buttom_item level size-30" :style="{borderRadius:'41rpx',color:'#fff'}">
下一页
</view>
</view>
</view>
</template>
<script>
</script>
<style scoped lang="scss">
@import"detail.scss"
</style>

+ 1
- 1
otherPages/myOrdersManage/service/index.vue View File

@ -11,7 +11,7 @@
</view>
</view>
<view class="img_">
<image src="@/static/images/ydd/组 70208.png" mode=""></image>
<image src="/static/images/ydd/right.png" mode=""></image>
</view>
</view>
</view>


+ 1
- 30
otherPages/orderTakingManage/create/index.css View File

@ -21,7 +21,7 @@
height: 165rpx;
/* background-color: pink; */
color: #7D8196;
font-size: 28rpx;
font-size: 25rpx;
margin: 1% 39%;
display: grid;
jplace-items: center;
@ -61,35 +61,6 @@
/* color: #AAAAAA; */
}
/* .information_item {
width: 100vw;
height: 550rpx;
font-size: 30rpx;
display: grid;
justify-content: space-around;
} */
/* .item_ {
width: auto;
height: 40rpx;
} */
/* .name {
width: 100vw;
height: 40rpx;
justify-content: space-between;
} */
/* .name input {
width: 50rpx;
background-color: #FFFFFF;
} */
/* .sex {
width: 200rpx;
height: 40rpx;
background-color: #7D8196;
} */
.bottom {
width: 100vw;
height: 120rpx;


+ 131
- 20
otherPages/orderTakingManage/create/index.vue View File

@ -6,13 +6,13 @@
宠物头像
</view>
<view class="img">
<image src="@/static/images/tabBar/Group 1000001828@2x.png" mode=""
style="width: 157rpx;height: 157rpx;" :style="{borderRadius:'100rpx'}"></image>
<image src="/static/images/ydd/profile.png" mode="" style="width: 157rpx;height: 157rpx;"
:style="{borderRadius:'100rpx'}"></image>
<view class="">
点击更换头像
<view class="top_item">
<image src="/static/images/tabBar/Group 1000001460@2x.png" mode=""
style="width: 55rpx;height: 55rpx;" :style="{borderRadius:'50rpx'}"></image>
<image src="/static/images/ydd/photograph.png" mode="" style="width: 55rpx;height: 55rpx;"
:style="{borderRadius:'50rpx'}"></image>
</view>
</view>
</view>
@ -22,14 +22,13 @@
<view class="information_">
<DForm :list="state.list" @submit="handleSubmit" />
</view>
<!-- <up-icon name="arrow-right" color="#2979ff" width="9rpx" height="20rpx"></up-icon> -->
</view>
<!-- <view class="base-info box-size">
<view class="information">基本信息(必填)</view>
<view class="base-info box-size">
<view class="information">其他信息(必填)</view>
<view class="information_">
<DForm :list="state.list" @submit="handleSubmit" />
<DForm :list="nostate.list" @submit="nohandleSubmit" />
</view>
</view> -->
</view>
<view class="bottom box-size level">
<view class="delet level" :style="{borderRadius:'12rpx'}">
删除
@ -56,15 +55,23 @@
placeholder: "请输入宠物名字",
},
{
type: "input",
type: "select",
label: "类别",
key: "idCard",
placeholder: "请输入您的真实身份证号",
key: "category",
placeholder: "请选择",
options: [{
name: "猫咪"
},
{
name: "狗狗"
}
]
},
{
type: "radio",
type: "select",
label: "性别",
key: "sex",
placeholder: "请选择",
options: [{
name: "男生"
},
@ -74,24 +81,128 @@
]
},
{
type: "input",
type: "select",
label: "品种",
key: "gender",
placeholder: "请输入您的年龄",
key: "variety",
placeholder: "请选择",
options: [{
name: "男生"
},
{
name: "女生"
}
]
},
{
type: "input",
type: "select",
label: "体重",
key: "shij",
placeholder: "请输入您的养宠年限",
unit: "年"
key: "variety",
placeholder: "请选择",
options: [{
name: "小型(<10KG)"
},
{
name: "中型(10~20KG)"
},
{
name: "大型(20KG以上)"
}
]
}
]
})
const nostate = reactive({
list: [{
type: "select",
label: "生日",
key: "birthday",
placeholder: "请选择",
options: [{
name: "猫咪"
},
{
name: "狗狗"
}
]
},
{
type: "input",
label: "性格",
key: "character ",
placeholder: "请描述",
},
{
type: "select",
label: "疫苗",
key: "sex",
placeholder: "请选择",
options: [{
name: "每年都免疫"
},
{
name: "有免疫史"
},
{
name: "未免疫"
}
]
},
{
type: "select",
label: "驱虫",
key: "variety",
placeholder: "请选择",
options: [{
name: "未驱虫"
},
{
name: "定期驱虫"
},
{
name: "有驱虫史"
}
]
},
{
type: "select",
label: "绝育",
key: "variety",
placeholder: "请选择",
options: [{
name: "未绝育"
},
{
name: "已绝育"
}
]
},
{
type: "select",
label: "健康",
key: "variety",
placeholder: "请选择(多选)",
options: [{
name: "小型(<10KG)"
},
{
name: "中型(10~20KG)"
},
{
name: "大型(20KG以上)"
}
]
}
]
})
const handleSubmit = (val) => {
console.log("获取参数", val)
}
const nohandleSubmit = (val) => {
console.log("获取参数", val)
}
</script>
<style scoped lang="scss">


+ 4
- 14
otherPages/userManage/record/index.scss View File

@ -20,20 +20,9 @@
.center{
width: 100vw;
height: 300rpx;
margin-top: 20rpx;
background-color: pink;
height: auto;
background-color: #fff;
.title{
padding: 10rpx;
}
.title image{
width: 126rpx;
height: 126rpx;
border-radius: 100%;
background-color: red;
}
}
}
@ -43,4 +32,5 @@
.level{
display: flex;
}
}

+ 35
- 6
otherPages/userManage/record/index.vue View File

@ -3,13 +3,42 @@
<view class="box">
<view class="top box-size">
全部记录
<view class="line" :style="{borderRadius:'3rpx'}">
</view>
<view class="line" :style="{borderRadius:'3rpx'}"></view>
</view>
<view class="center">
<view class="title">
<image src="" mode=""></image>
<view class="center mt10 pl10 pr20 pb10 box-size" v-for="item in items">
<view class="flex-b">
<view class="level">
<view>
<image src="" mode=""
:style="{width:'126rpx',height:'126rpx',borderRadius:'100%',backgroundColor:'red'}"
class="mt22 ml10"></image>
</view>
<view class="mt22 ml10">
<view class="size-30 fw700">猫小姐</view>
<view class="size-28 color-777">服务时间2023-12-10 </view>
<view class="size-28 color-777">宠物猫咪</view>
</view>
</view>
<view class="size-28 mr10 mt20" :style="{color:'#FFBF60'}">重庆市</view>
</view>
<view class="ml30 size-30 mt10">
猫咪正常饮食无异常排尿较少可能天气较热服务全程与主人视频愉快的一天
</view>
<view class="level">
<view class="ml20 mt20">
<image src="" mode=""
:style="{width:'154rpx',height:'164rpx',backgroundColor:'red',borderRadius:'16rpx'}"></image>
</view>
</view>
<view class="flex-rowr">
<view class="">
<image src="" mode="" :style="{width:'17rpx',height:'19rpx'}"></image>
</view>
<view class="ml10 mr20" :style="{color:'#707070',fontSize:'22rpx'}">编辑</view>
<view class="">
<up-icon name="edit-pen" color="#2979ff" size="58"></up-icon>
</view>
<view class="ml10" :style="{color:'#707070',fontSize:'22rpx'}">删除</view>
</view>
</view>
</view>


+ 24
- 5
otherPages/workbenchManage/bindUser/index.scss View File

@ -1,8 +1,8 @@
.bind-user {
&-header {
height: 315rpx;
height: 460rpx;
padding: 60rpx 20rpx 0;
background: linear-gradient(360deg, #FFFFFF 0%, #FFBF60 99%);
background: linear-gradient(360deg, #FFE6BF 0%,#F3B962 40%,#FFBF60 60%);
color: #FFFFFF;
}
@ -11,17 +11,21 @@
}
.header-card {
width: 309rpx;
height: 131rpx;
padding: 20rpx;
border-radius: 20rpx;
font-size: 28rpx;
}
.card-left {
background: #78f7eb;
background: #FFF4E6;
opacity: 0.74;
}
.card-right {
background: #de8585;
background: #FFECE5;
opacity: 0.74;
}
}
@ -30,7 +34,7 @@
border-top-left-radius: 30rpx;
border-top-right-radius: 30rpx;
padding: 20rpx;
margin-top: 20rpx;
margin-top: -110rpx;
}
.bind-main-one{
text-align: center;
@ -43,4 +47,19 @@
background: #c6bcef;
border-radius: 20rpx;
padding: 40rpx 50rpx;
}
.label1 {
width: 120rpx;
height: 28rpx;
line-height: 28rpx;
text-align: center;
background-color: #ffa848;
border-radius: 20rpx;
font-size: 22rpx;
border: 1px solid #ffffff;
margin-bottom: 10rpx;
}
.box-size{
box-sizing: border-box;
}

+ 72
- 81
otherPages/workbenchManage/bindUser/index.vue View File

@ -1,91 +1,82 @@
<template>
<view class="bind-user">
<view class="bind-user-header">
<view class="flex mb28">
<up-image width="120rpx" height="120rpx" src="https://cdn.uviewui.com/uview/album/1.jpg"
shape="circle"></up-image>
<view class="header-name">
<view class="font32 mb20">微信用户</view>
<view class="flex font24">
<view>当前分成比例
<text>25%</text>
</view>
<view>晋级后分成比例
<text>30%</text>
</view>
</view>
</view>
</view>
<view class="flex flex-evenly">
<view class="header-card card-left">
<view class="flex-between flex">
<view class="mr20">
<view class="mb20">推广攻略</view>
<view>快速定位宠友群体</view>
</view>
<up-image :show-loading="true" src="https://cdn.catmdogd.com/Work/image/work/icon1.png" width="68rpx"
height="68rpx"></up-image>
</view>
</view>
<view class="header-card card-right">
<view class="flex flex-between">
<view class="mr20">
<view class="mb20">推广教程</view>
<view>推广问题一目了然</view>
</view>
<up-image :show-loading="true" src="https://cdn.catmdogd.com/Work/image/work/icon2.png" width="68rpx"
height="68rpx"></up-image>
</view>
</view>
</view>
</view>
<view class="bind-main">
<view class="bind-main-one mb28">
<view class="mb20 font32">邀请码</view>
<view class="mb20">用户输入邀请码直接完成绑定</view>
<up-input
disabled
v-model="code"
>
<template #suffix>
<up-button
text="复制"
type="success"
size="small"
shape="circle"
></up-button>
</template>
</up-input>
</view>
<view class="bind-main-two">
<view class="mb20 font32">分享链接邀请</view>
<view class="mb20">复制链接给好友进入直接绑定</view>
<up-input
disabled
v-model="url"
>
<template #suffix>
<up-button
text="复制"
type="success"
size="small"
shape="circle"
></up-button>
</template>
</up-input>
</view>
</view>
</view>
<view class="bind-user">
<view class="bind-user-header">
<view class="flex mb28">
<up-image width="139rpx" height="139rpx" src="https://cdn.uviewui.com/uview/album/1.jpg"
shape="circle"></up-image>
<view class="header-name">
<view class="font32 mb20" :style="{color:'#000'}">猫小姐</view>
<view class="label1">
初级合伙人
</view>
<view class="flex font24">
<view :style="{color:'#A55822'}">当前分成比例
<text :style="{color:'#C12525'}">25%</text>
</view>
<view :style="{color:'#A55822'}">晋级后分成比例
<text :style="{color:'#C12525'}">30%</text>
</view>
</view>
</view>
</view>
<view class="flex flex-evenly mt60">
<view class="header-card card-left box-size">
<view class="flex-between flex">
<view class="mr20">
<view class="mb20 ml20" :style="{color:'#A55822',fontWeight:'bold',fontSize:'30rpx'}">推广攻略
</view>
<view :style="{color:'#A55822',fontSize:'22rpx'}">快速定位宠友群体</view>
</view>
<up-image :show-loading="true" src="https://cdn.catmdogd.com/Work/image/work/icon1.png"
width="71rpx" height="85rpx"></up-image>
</view>
</view>
<view class="header-card card-right box-size">
<view class="flex flex-between">
<view class="mr20">
<view class="mb20 ml20" :style="{color:'#A55822',fontWeight:'bold',fontSize:'30rpx'}">推广教程
</view>
<view :style="{color:'#A55822',fontSize:'22rpx'}">推广问题一目了然</view>
</view>
<up-image :show-loading="true" src="https://cdn.catmdogd.com/Work/image/work/icon2.png"
width="71rpx" height="85rpx"></up-image>
</view>
</view>
</view>
</view>
<view class="bind-main">
<view class="bind-main-one mb10">
<view class="mb20 font32">邀请码</view>
<view class="mb20">用户输入邀请码直接完成绑定</view>
<up-input disabled v-model="code">
<template #suffix>
<up-button text="复制" type="success" size="small" shape="circle"></up-button>
</template>
</up-input>
</view>
<view class="bind-main-two">
<view class="mb20 font32">分享链接邀请</view>
<view class="mb20">复制链接给好友进入直接绑定</view>
<up-input disabled v-model="url">
<template #suffix>
<up-button text="复制" type="success" size="small" shape="circle"></up-button>
</template>
</up-input>
</view>
</view>
</view>
</template>
<script setup>
import {ref} from "vue";
import {
ref
} from "vue";
const code = ref('asdasaadsdsa')
const url = ref('https://uview-plus.jiangruyi.com/components/button.html')
const code = ref('asdasaadsdsa')
const url = ref('https://uview-plus.jiangruyi.com/components/button.html')
</script>
<style scoped lang="scss">
@import "index";
@import "index";
</style>

+ 1
- 1
otherPages/workbenchManage/components/cardData.vue View File

@ -2,7 +2,7 @@
<view class="comp-card">
<view class="comp-card-data mt20">
<up-grid :border="false">
<up-grid-item v-for="(item,index) in props.cardData" :key="index">
<up-grid-item v-for="(item,index) in props.cardData" :key="index" style="width: 220rpx;">
<text class="title color-999 size-28">{{item.title}}</text>
<text class="num mt20 size-28" :style="{color:item.color}">{{item.num}}</text>
</up-grid-item>


+ 119
- 117
otherPages/workbenchManage/myLevel/index.scss View File

@ -1,119 +1,121 @@
.bind-user {
// height: 100vh;
height: 315rpx;
background: linear-gradient(360deg, #ffffff 0%, #ffbf60 99%);
&-header {
padding: 60rpx 20rpx 0;
color: #ffffff;
}
.header-name {
margin-left: 20rpx;
}
.header-card {
padding: 20rpx;
border-radius: 20rpx;
font-size: 28rpx;
}
.card-left {
background: #78f7eb;
}
.card-right {
background: #de8585;
}
&-foot {
width: 100%;
height: 180rpx;
background-color: #ffffff;
position: fixed;
bottom: 0;
.tab-bar {
margin-bottom: 60rpx;
.activeColor {
color: #000;
}
}
}
}
.bind-main {
padding: 0 40rpx;
box-sizing: border-box;
height: 100vh;
}
.my-data {
.bind-user {
// height: 100vh;
height: 453rpx;
background: linear-gradient(360deg, #ffffff 0%, #ffbf60 99%);
&-header {
padding: 60rpx 20rpx 0;
color: #ffffff;
}
.header-name {
margin-left: 20rpx;
.label1 {
background-color: #ffa848;
border-radius: 20rpx;
font-size: 22rpx;
border: 1px solid #ffffff;
padding: 0 10rpx;
box-sizing: border-box;
}
}
.header-card {
padding: 20rpx;
border-radius: 20rpx;
font-size: 28rpx;
}
.card-left {
background: #78f7eb;
}
.card-right {
background: #de8585;
}
&-foot {
width: 100%;
height: 180rpx;
background-color: #ffffff;
position: fixed;
bottom: 0;
.tab-bar {
margin-bottom: 60rpx;
.activeColor {
color: #000;
}
}
}
}
.bind-main {
padding: 0 20rpx;
box-sizing: border-box;
height: 100vh;
}
.my-data {
padding: 0 40rpx;
box-sizing: border-box;
background-color: #ffffff;
margin-bottom: 40rpx;
border-radius: 20rpx;
&-mounth {
padding: 40rpx 0;
box-sizing: border-box;
background-color: #ffffff;
}
&-total {
padding: 40rpx 0;
box-sizing: border-box;
background-color: #ffffff;
}
}
.bottom {
height: 546rpx;
background-color: #fff4e6;
padding: 3%;
font-size: 22rpx;
box-sizing: border-box;
.line1 {
position: relative;
margin-bottom: 50rpx;
&::before {
position: absolute;
top: 25rpx;
left: 0;
content: '';
width: 660rpx;
height: 1rpx;
background-color: #f5f5f7;
}
}
.form_item {
font-size: 22rpx;
color: #a55822;
position: relative;
margin-left: 10rpx;
&::before {
position: absolute;
top: 5rpx;
left: -18rpx;
content: '*';
}
}
}
.my-level {
padding: 0 40rpx;
box-sizing: border-box; background-color: #ffffff;
margin-bottom: 40rpx;
border-radius: 20rpx; &-mounth {
padding: 40rpx 0;
box-sizing: border-box;
background-color: #ffffff;
}
&-total {
padding: 40rpx 0;
box-sizing: border-box;
background-color: #ffffff;
}
}
.bottom {
height: 546rpx;
background-color: #fff4e6;
padding: 3%;
font-size: 22rpx;
box-sizing: border-box;
.line1 {
position: relative;
margin-bottom: 50rpx;
&::before {
position: absolute;
top: 25rpx;
left: 0;
content: '';
width: 660rpx;
height: 1rpx;
background-color: #f5f5f7;
}
}
.form_item {
font-size: 22rpx;
color: #a55822;
position: relative;
margin-left: 10rpx;
&::before {
position: absolute;
top: 5rpx;
left: -18rpx;
content: '*';
}
}
}
.my-level{
padding: 0 40rpx;
box-sizing: border-box;
background-color: #ffffff;
margin-bottom: 40rpx;
border-radius: 20rpx;
&-need{
padding: 40rpx 0;
box-sizing: border-box;
background-color: #ffffff;
}
&-content{
.data{
}
}
box-sizing: border-box;
background-color: #ffffff;
margin-bottom: 40rpx;
border-radius: 20rpx;
&-need {
padding: 40rpx 0;
box-sizing: border-box;
background-color: #ffffff;
}
&-content {
.data {
}
}
}

+ 64
- 53
otherPages/workbenchManage/myLevel/index.vue View File

@ -1,28 +1,36 @@
<template>
<view class="bind-user">
<view class="bind-user-header">
<view class="flex mb28">
<up-image width="120rpx" height="120rpx" src="https://cdn.uviewui.com/uview/album/1.jpg"
shape="circle"></up-image>
<view class="header-name">
<view class="font32 mb20">微信用户</view>
<view class="flex font24">
<view class="bind-user">
<view class="bind-user-header">
<view class="flex mb28">
<up-image width="120rpx" height="120rpx" src="https://cdn.uviewui.com/uview/album/1.jpg"
shape="circle"></up-image>
<view class="header-name">
<view class="font32 mb20" :style="{color:'#000',fontSize:'32rpx'}">猫小姐</view>
<view class="flex-rowl">
<view class="label1 mr20">
初级合伙人
</view>
<view class="size-22" style="color: #B97132;">
已加入合伙人:130
</view>
</view>
<!-- <view class="flex font24">
<view>当前分成比例
<text>25%</text>
</view>
<view>晋级后分成比例
<text>30%</text>
</view>
</view>
</view>
</view>
</view>
</view> -->
</view>
</view>
</view>
<view class="bind-main">
<myData v-show="showFlag === 'data'"></myData>
<levelInfo v-show="showFlag === 'level'"></levelInfo>
</view>
<view class="bind-user-foot flex-around">
<view class="tab-bar flex-colc" @click="tabBarClick('data')">
<up-image width="46rpx" height="46rpx" :src="tabBarList[dataNum]"></up-image>
@ -33,9 +41,9 @@
<view :class="['size-24', 'color-999', { activeColor:levelNum === 3 }]">等级信息</view>
</view>
</view>
<!-- <view class="bind-main">
<!-- <view class="bind-main">
<up-swiper
:list="list3"
previousMargin="30"
@ -47,52 +55,55 @@
height="300rpx"
></up-swiper>
</view> -->
</view>
</view>
</template>
<script setup>
import myData from './commponents/myData.vue'
import levelInfo from './commponents/levelInfo.vue'
import {reactive, ref} from "vue";
import myData from './commponents/myData.vue'
import levelInfo from './commponents/levelInfo.vue'
import {
reactive,
ref
} from "vue";
const tabBarList = reactive([
'/static/images/levelTabBar/data.png',
'/static/images/levelTabBar/data_.png',
'/static/images/levelTabBar/level.png',
'/static/images/levelTabBar/level_.png',
])
const dataNum = ref(1)
const levelNum = ref(2)
const showFlag = ref('data')
const tabBarList = reactive([
'/static/images/levelTabBar/data.png',
'/static/images/levelTabBar/data_.png',
'/static/images/levelTabBar/level.png',
'/static/images/levelTabBar/level_.png',
])
const dataNum = ref(1)
const levelNum = ref(2)
const showFlag = ref('data')
// const list3 = reactive([
// 'https://cdn.uviewui.com/uview/swiper/swiper3.png',
// 'https://cdn.uviewui.com/uview/swiper/swiper2.png',
// 'https://cdn.uviewui.com/uview/swiper/swiper1.png',
// ]);
// const code = ref('asdasaadsdsa')
// const url = ref('https://uview-plus.jiangruyi.com/components/button.html')
// const list3 = reactive([
// 'https://cdn.uviewui.com/uview/swiper/swiper3.png',
// 'https://cdn.uviewui.com/uview/swiper/swiper2.png',
// 'https://cdn.uviewui.com/uview/swiper/swiper1.png',
// ]);
// const code = ref('asdasaadsdsa')
// const url = ref('https://uview-plus.jiangruyi.com/components/button.html')
const tabBarClick = (flag) =>{
showFlag.value = flag
switch (flag){
case 'data':
dataNum.value = 1
levelNum.value = 2
break;
case 'level':
dataNum.value = 0
levelNum.value = 3
break;
default:
break;
const tabBarClick = (flag) => {
showFlag.value = flag
switch (flag) {
case 'data':
dataNum.value = 1
levelNum.value = 2
break;
case 'level':
dataNum.value = 0
levelNum.value = 3
break;
default:
break;
}
}
}
</script>
<style scoped lang="scss">
@import "index";
@import "index";
</style>

+ 52
- 12
otherPages/workbenchManage/myUser/components/haveOrder.vue View File

@ -8,7 +8,8 @@
</view>
<view class="have-order-image flex-rowr" @click="arrowClick(item)">
<text class="mr10 size-22 color-999">{{ item.isShow == true ? '收起' : '展开' }}</text>
<up-icon :name="item.isShow == true?'arrow-up-fill':'arrow-down-fill'" color="#707070" size="10"></up-icon>
<up-icon :name="item.isShow == true?'arrow-up-fill':'arrow-down-fill'" color="#707070"
size="10"></up-icon>
</view>
</view>
<up-line color="#C7C7C7"></up-line>
@ -46,26 +47,65 @@
</view>
</view>
</view>
<!-- <view class="mt60" :style="{color:'#A55822',fontSize:'22rpx',backgroundColor:'#FFF4E6',borderRadius:'16rpx'}">
*累计报酬:当该用户订单完成时才会纳入报酬计算
</view> -->
</template>
<script setup>
import { ref,reactive } from "vue"
const list = reactive([
{id:'001',imageUrl:'https://cdn.uviewui.com/uview/album/1.jpg', name: '猫小咪',time:'2024-11-01 18:12:16',time2:'2024-11-01 18:12:16',amount:'168.00',reward:'100.00',isShow:false },
{id:'002',imageUrl:'https://cdn.uviewui.com/uview/album/1.jpg', name: '猫小咪',time:'2024-11-01 18:12:16',time2:'2024-11-01 18:12:16',amount:168.00,reward:100.00,isShow:false },
{id:'003',imageUrl:'https://cdn.uviewui.com/uview/album/1.jpg', name: '猫小咪',time:'2024-11-01 18:12:16',time2:'2024-11-01 18:12:16',amount:168.00,reward:100.00,isShow:false },
{id:'004',imageUrl:'https://cdn.uviewui.com/uview/album/1.jpg', name: '猫小咪',time:'2024-11-01 18:12:16',time2:'2024-11-01 18:12:16',amount:168.00,reward:100.00,isShow:false },
import {
ref,
reactive
} from "vue"
const list = reactive([{
id: '001',
imageUrl: 'https://cdn.uviewui.com/uview/album/1.jpg',
name: '猫小咪',
time: '2024-11-01 18:12:16',
time2: '2024-11-01 18:12:16',
amount: '168.00',
reward: '100.00',
isShow: false
},
{
id: '002',
imageUrl: 'https://cdn.uviewui.com/uview/album/1.jpg',
name: '猫小咪',
time: '2024-11-01 18:12:16',
time2: '2024-11-01 18:12:16',
amount: 168.00,
reward: 100.00,
isShow: false
},
{
id: '003',
imageUrl: 'https://cdn.uviewui.com/uview/album/1.jpg',
name: '猫小咪',
time: '2024-11-01 18:12:16',
time2: '2024-11-01 18:12:16',
amount: 168.00,
reward: 100.00,
isShow: false
},
{
id: '004',
imageUrl: 'https://cdn.uviewui.com/uview/album/1.jpg',
name: '猫小咪',
time: '2024-11-01 18:12:16',
time2: '2024-11-01 18:12:16',
amount: 168.00,
reward: 100.00,
isShow: false
},
]);
//
const arrowClick = (item)=>{
const arrowClick = (item) => {
list.forEach(i => {
if(i.id !== item.id) i.isShow = false
if (i.id !== item.id) i.isShow = false
})
item.isShow = !item.isShow
}
</script>
<style scoped lang="scss">


+ 14
- 2
otherPages/workbenchManage/myUser/index.scss View File

@ -1,6 +1,6 @@
.bind-user {
&-header {
height: 315rpx;
height: 460rpx;
padding: 60rpx 20rpx 0;
background: linear-gradient(360deg, #FFFFFF 0%, #FFBF60 99%);
color: #FFFFFF;
@ -8,6 +8,17 @@
.header-name {
margin-left: 20rpx;
.label1 {
width: 120rpx;
height: 28rpx;
line-height: 28rpx;
text-align: center;
background-color: #ffa848;
border-radius: 20rpx;
font-size: 22rpx;
border: 1px solid #ffffff;
margin-bottom: 10rpx;
}
}
.header-card {
@ -30,7 +41,8 @@
top: 180rpx;
width: 100vw;
&-content{
padding: 30rpx;
padding: 30rpx 20rpx;
box-sizing: border-box;
}
&-list{
background: #FFFFFF;


+ 60
- 61
otherPages/workbenchManage/myUser/index.vue View File

@ -1,84 +1,83 @@
<template>
<view class="bind-user">
<view class="bind-user-header">
<view class="flex mb28">
<up-image width="120rpx" height="120rpx" src="https://cdn.uviewui.com/uview/album/1.jpg"
shape="circle"></up-image>
<view class="header-name">
<view class="font32 mb20">微信用户</view>
<view class="flex font24">
<view>当前分成比例
<text>25%</text>
</view>
<view>晋级后分成比例
<text>30%</text>
</view>
</view>
</view>
</view>
</view>
<view class="bind-main">
<view class="bind-main-content">
<view class="bind-main-list">
<!-- <up-empty
<view class="bind-user">
<view class="bind-user-header">
<view class="flex mb28">
<up-image width="120rpx" height="120rpx" src="https://cdn.uviewui.com/uview/album/1.jpg"
shape="circle"></up-image>
<view class="header-name">
<view class="font32 mb20 color-040">微信用户</view>
<view class="label1">
初级合伙人
</view>
<view class="flex font24">
<view style="color: #B97132;">当前分成比例:
<text style="color: #CD4732;">25%</text>
</view>
<view class="ml28" style="color: #B97132;">晋级后分成比例:
<text style="color: #CD4732;">30%</text>
</view>
</view>
</view>
</view>
</view>
<view class="bind-main">
<view class="bind-main-content">
<view class="bind-main-list">
<!-- <up-empty
mode="list"
width="300px"
height="300px"
icon="http://cdn.uviewui.com/uview/empty/car.png"
/> -->
<view class="bind-tabs">
<up-tabs
:list="list"
:current="current"
lineWidth="68rpx"
:activeStyle="{
<view class="bind-tabs">
<up-tabs :list="list" :current="current" lineWidth="68rpx" :activeStyle="{
color: '#000000',
fontWeight: 'bold',
transform: 'scale(1.05)'
}"
:inactiveStyle="{
}" :inactiveStyle="{
color: '#000000',
transform: 'scale(1)'
}"
:itemStyle="{height:'88rpx',padding:'0 100rpx'}"
lineColor="#FFBF60"
@click="tabClick"
>
</up-tabs>
</view>
<view class="">
<noOrder v-if="current == 0"/>
<haveOrder v-if="current == 1"/>
}" :itemStyle="{height:'88rpx',padding:'0 100rpx'}" lineColor="#FFBF60" @click="tabClick">
</up-tabs>
</view>
<view class="">
<noOrder v-if="current == 0" />
<haveOrder v-if="current == 1" />
</view>
</view>
</view>
</view>
</view>
</view>
</view>
</view>
</view>
</template>
<script setup>
import { ref,reactive } from "vue"
import haveOrder from "./components/haveOrder.vue"
import noOrder from "./components/noOrder.vue"
import {
ref,
reactive
} from "vue"
import haveOrder from "./components/haveOrder.vue"
import noOrder from "./components/noOrder.vue"
const code = ref('asdasaadsdsa')
const url = ref('https://uview-plus.jiangruyi.com/components/button.html')
const current = ref(0)
const list = reactive([
{ name: '未下单' },
{ name: '已下单' },
]);
const code = ref('asdasaadsdsa')
const url = ref('https://uview-plus.jiangruyi.com/components/button.html')
const current = ref(0)
const tabClick = (item) => {
current.value = item.index
}
const list = reactive([{
name: '未下单'
},
{
name: '已下单'
},
]);
const tabClick = (item) => {
current.value = item.index
}
</script>
<style scoped lang="scss">
@import "index";
@import "index";
</style>

+ 81
- 0
otherPages/workbenchManage/myWallet/components/myData.vue View File

@ -0,0 +1,81 @@
<template>
<view class="my-data">
<view class="my-data-mounth">
<cardTitle :cardTitle="nounthName"></cardTitle>
<cardData :cardData="nounthData"></cardData>
</view>
</view>
<view class="my-data">
<view class="my-data-total">
<cardTitle :cardTitle="totalName"></cardTitle>
<cardData :cardData="totalData"></cardData>
</view>
</view>
<view class="bottom box-size child" :style="{ borderRadius: '16rpx' }">
<view class="form_item">
累积数据:即注册至今的累计数据
</view>
<view class="line1">
</view>
<view class="form_item">
当月注册用户:在本月初至今您成功邀请绑定的新用户数量
<p>累积注册用户:您入驻合伙人至今成功邀请绑定的用户数量</p>
</view>
<view class="line1">
</view>
<view class="form_item">
当月下单用户:在本月初至今成功邀请绑定的新用户中截止今天成功下单的用户数;
<p>累积下单用户:您入驻合伙人至今成功邀请绑定的新用户中截止今日成功下单的用户数</p>
</view>
<view class="line1">
</view>
<view class="form_item">
当月有效用户:本月初至今下单的用户中截止今日订单已完成的用户数量;
<p>累积有效用户:您入驻合伙人至今成功下单的新用户中截止今日所有订单已完成的用户数</p>
</view>
</view>
</template>
<script setup>
import cardTitle from '../../components/cardTitle.vue'
import cardData from '../../components/cardData.vue'
import {
ref,
reactive
} from "vue"
const nounthName = ref('当月数据')
const totalName = ref('累计数据')
const nounthData = reactive([{
title: '当月注册用户',
num: "0个"
},
{
title: '当月下单用户',
num: "0个"
},
{
title: '当月有效用户',
num: "0个"
},
])
const totalData = reactive([{
title: '累计注册用户',
num: "0个"
},
{
title: '累计下单用户',
num: "0个"
},
{
title: '累计有效用户',
num: "0个",
color:'red'
},
])
</script>
<style scoped lang="scss">
@import "../index.scss";
</style>

+ 154
- 0
otherPages/workbenchManage/myWallet/index.scss View File

@ -0,0 +1,154 @@
.bind-user {
&-header {
height: 315rpx;
padding: 60rpx 20rpx 0;
background: linear-gradient(360deg, #FFFFFF 0%, #FFBF60 99%);
color: #FFFFFF;
}
.header-name {
margin-left: 20rpx;
.label1{
width: 120rpx;
height: 28rpx;
line-height: 28rpx;
text-align: center;
background-color: #ffa848;
border-radius: 20rpx;
font-size: 22rpx;
border: 1px solid #ffffff;
margin-bottom: 10rpx;
}
}
.header-card {
padding: 20rpx;
border-radius: 20rpx;
font-size: 28rpx;
}
.card-left {
background: #78f7eb;
}
.card-right {
background: #de8585;
}
}
.bind-main {
position: absolute;
top: 180rpx;
width: 100vw;
&-content{
padding: 30rpx 20rpx;
box-sizing: border-box;
.top {
// height: 259rpx;
background-color: #FFF6EC;
padding: 3% 4%;
.account {
display: flex;
justify-content: space-between;
color: #000000;
font-size: 30rpx;
.text {
color: #A55822;
display: flex;
}
.line {
position: relative;
padding: 0 0 0 20rpx;
&::before {
position: absolute;
top: 7rpx;
left: 10rpx;
content: "";
width: 3rpx;
height: 30rpx;
border-radius: 9rpx;
background-color: #A55822;
}
}
}
.money {
width: auto;
height: 60rpx;
margin: 20rpx 0;
color: #FF2A2A;
font-size: 42rpx;
align-items: center;
.text1 {
font-size: 25rpx !important;
color: #FF2A2A !important;
margin-right: 10rpx;
}
}
.line1 {
position: relative;
&::before {
position: absolute;
top: -10rpx;
left: 0;
content: "";
width: 660rpx;
height: 1rpx;
background-color: #FFBF60;
}
}
.divide {
color: #A55822;
font-size: 30rpx;
margin-top: 50rpx;
display: flex;
justify-content: space-between;
}
}
.my-data {
padding: 0 40rpx;
box-sizing: border-box;
background-color: #ffffff;
margin-bottom: 40rpx;
border-radius: 20rpx;
&-total {
padding: 40rpx 0;
box-sizing: border-box;
background-color: #ffffff;
}
}
}
// &-list{
// background: #FFFFFF;
// min-height: 900rpx;
// border-radius: 30rpx;
// padding: 0 0 30rpx 0;
// box-sizing: border-box;
// }
}

+ 162
- 0
otherPages/workbenchManage/myWallet/index.vue View File

@ -0,0 +1,162 @@
<template>
<view class="bind-user">
<view class="bind-user-header">
<view class="flex mb28 ml20 ">
<up-image width="140rpx" height="140rpx" src="https://cdn.uviewui.com/uview/album/1.jpg"
shape="circle"></up-image>
<view class="header-name">
<view class="font32 mb20 color-040">微信用户</view>
<view class="label1">
初级合伙人
</view>
<view class="flex font24">
<view style="color: #B97132;">当前分成比例
<text style="color: #CD4732;">25%</text>
</view>
<view style="color: #B97132;">晋级后分成比例
<text style="color: #CD4732;">30%</text>
</view>
</view>
</view>
</view>
</view>
<view class="bind-main">
<view class="bind-main-content">
<view class="top box-size mb20" :style="{borderRadius:'16rpx'}">
<view class="level account">
<view class="fw700">
钱包余额
</view>
<view class="level text">
<view @click="handleGoto('detail')">
明细
</view>
<view class="line" @click="handleGoto('cash')">
提现
</view>
</view>
</view>
<view class="money level fw700">
<text class="text1">
¥
</text>
<text style="color: #FF2A2A; font-size: 36rpx;">29.00</text>
</view>
<view class="line1">
</view>
<view class="level divide">
<view class="level flex-rowl">
<view class="">
本月订单分成:&nbsp;&nbsp;
</view>
¥<view class="">
0.00
</view>
</view>
<view class="level flex-rowl">
<view class="">
累积订单分成:&nbsp;&nbsp;
</view>
¥<view class="">
0.00
</view>
</view>
</view>
</view>
<view class="my-data">
<view class="my-data-total">
<cardTitle :cardTitle="mounthName"></cardTitle>
<cardData :cardData="nounthData"></cardData>
</view>
</view>
<view class="my-data">
<view class="my-data-total">
<cardTitle :cardTitle="totalName"></cardTitle>
<cardData :cardData="totalData"></cardData>
</view>
</view>
</view>
</view>
</view>
</template>
<script setup>
import tab from "@/plugins/tab.js"
import cardTitle from '../components/cardTitle.vue'
import cardData from '../components/cardData.vue'
import {
ref,
reactive
} from "vue"
const mounthName = ref('本月数据')
const totalName = ref('累计数据')
const nounthData = reactive([{
title: '本月注册用户',
num: "0个"
},
{
title: '本月下单用户',
num: "0个"
},
{
title: '本月有效用户',
num: "0个"
},
{
title: '本月订单金额',
num: "¥0.00",
color: 'red'
},
{
title: '本月有效订单金额',
num: "¥0.00",
color: 'red'
},
])
const totalData = reactive([{
title: '累计注册用户',
num: "0个",
},
{
title: '累计下单用户',
num: "0个"
},
{
title: '累计有效用户',
num: "0个",
},
{
title: '累计订单金额',
num: "¥0.00",
color: 'red'
},
{
title: '累计有效订单金额',
num: "¥0.00",
color: 'red'
},
])
const handleGoto = (val) => {
switch (val) {
case 'detail':
tab.navigateTo('/otherPages/binding/partner/index')
// tab.navigateTo('/otherPages/workbenchManage/bindUser/index')
break;
case 'cash':
tab.navigateTo('/otherPages/binding/withdrawal/index')
break;
}
}
</script>
<style scoped lang="scss">
@import "index";
</style>

+ 5
- 0
package.json View File

@ -0,0 +1,5 @@
{
"dependencies": {
"dayjs": "^1.11.13"
}
}

+ 55
- 0
pages.json View File

@ -70,6 +70,11 @@
"style": {
"navigationBarTitleText": "伴宠师认证"
}
}, {
"path": "examination/detail",
"style": {
"navigationBarTitleText": "伴宠师认证"
}
}, {
"path": "serve/index",
"style": {
@ -90,6 +95,26 @@
"style": {
"navigationBarTitleText": "接单地址"
}
}, {
"path": "completed/index",
"style": {
"navigationBarTitleText": "伴宠师认证"
}
}, {
"path": "training/index",
"style": {
"navigationBarTitleText": "培训考核"
}
}, {
"path": "training/detail",
"style": {
"navigationBarTitleText": "伴宠师认证"
}
}, {
"path": "training/base",
"style": {
"navigationBarTitleText": "伴宠师认证"
}
}]
},
{
@ -222,6 +247,31 @@
"style": {
"navigationBarTitleText": "服务档案"
}
}, {
"path": "service/base",
"style": {
"navigationBarTitleText": "服务档案"
}
}, {
"path": "service/add",
"style": {
"navigationBarTitleText": "服务档案"
}
}, {
"path": "service/dog",
"style": {
"navigationBarTitleText": "服务档案"
}
}, {
"path": "clock/index",
"style": {
"navigationBarTitleText": "打卡"
}
}, {
"path": "clock/detail",
"style": {
"navigationBarTitleText": "打卡记录"
}
}
]
},
@ -245,6 +295,11 @@
"style": {
"navigationBarTitleText": "我的等级"
}
}, {
"path": "myWallet/index",
"style": {
"navigationBarTitleText": "我的钱包"
}
},
//
{


+ 82
- 48
pages/login/index.vue View File

@ -6,6 +6,8 @@
<view class="login-submit">
<up-button type="primary" text="授权手机号登录" open-type="getPhoneNumber" @getphonenumber="onGetPhoneNumber"
shape="circle" color="#FFBF60"></up-button>
<up-button class="mt24" type="primary" text="微信授权登陆" @tap="loginWx" shape="circle"
color="#FFBF60"></up-button>
</view>
<view class="flex-rowc">
<view class="select">
@ -36,7 +38,8 @@
import {
getOpenId,
getPersonalInfo,
getPhoneNumber
getPhoneNumber,
wxLogin
} from "../../api/system/user";
import {
ref
@ -45,60 +48,91 @@
const value = ref(false)
// openid
if (!getOpenIdKey() && !getToken()) {
//
const loginWx = () => {
uni.login({
provider: 'weixin',
success: async (res) => {
const {
code,
data
} = await getOpenId(res.code)
if (code === 200 && data) {
let resData = JSON.parse(data)
setOpenIdKey(resData.openId)
}
},
fail: function(error) {
//
uni.showToast('授权失败,请授权后再试')
success: (res) => {
const code = res.code
console.log(code)
wxLogin({
code
}).then(res => {
if (res.code === 200) {
uni.setStorageSync("token", res.data.token)
uni.setStorageSync("baseInfo", JSON.stringify(res.data.userInfo))
uni.navigateBack({
delta: 1
})
}
})
}
});
})
}
// openid
// if (!getOpenIdKey() && !getToken()) {
// uni.login({
// provider: 'weixin',
// success: async (res) => {
// const {
// code,
// data
// } = await getOpenId(res.code)
// if (code === 200 && data) {
// let resData = JSON.parse(data)
// setOpenIdKey(resData.openId)
// }
// },
// fail: function(error) {
// //
// uni.showToast('')
// }
// });
// }
// token
const onGetPhoneNumber = async (e) => {
if (e.detail.errMsg === "getPhoneNumber:ok") {
if (getOpenIdKey()) {
try {
const {
data
} = await getPhoneNumber({
"openId": getOpenIdKey(),
"code": e.detail.code,
sourceType: 1
})
setToken(data.token)
setIsLogin(true)
await getUserInfo()
} catch (e) {
uni.showToast({
icon: 'error',
title: '获取手机号失败'
})
}
}
}
// uni.login({
// success: res => {
// console.log("====>", res)
// }
// })
console.log(e)
getPhoneNumber({
phoneCode: e.detail.code
})
// if (e.detail.errMsg === "getPhoneNumber:ok") {
// if (getOpenIdKey()) {
// try {
// const {
// data
// } = await getPhoneNumber({
// "openId": getOpenIdKey(),
// "code": e.detail.code,
// sourceType: 1
// })
// setToken(data.token)
// setIsLogin(true)
// await getUserInfo()
// } catch (e) {
// uni.showToast({
// icon: 'error',
// title: ''
// })
// }
// }
// }
}
// h
const getUserInfo = async () => {
const {
data
} = await getPersonalInfo()
setStorage('userInfo', data)
uni.navigateBack()
}
// // h
// const getUserInfo = async () => {
// const {
// data
// } = await getPersonalInfo()
// setStorage('userInfo', data)
// uni.navigateBack()
// }
</script>
<style scoped lang="scss">


+ 7
- 1
pages/userManage/index.vue View File

@ -67,7 +67,7 @@
<view class="bgf pd40 radius20">
<view class="font36 mb28">服务中心</view>
<view class="flex flex-between font28 flex-wrap">
<view class="icon-list">
<view class="icon-list" @click="toNext">
<up-image class="mb20" src="https://cdn.catmdogd.com/Work/image/work/icon1.png" width="68rpx"
height="68rpx"></up-image>
<view>我的评价</view>
@ -116,6 +116,12 @@
const handleLogin = () => {
tab.navigateTo('/pages/login/index')
}
const toNext = () => {
uni.navigateTo({
url: "/otherPages/orderTakingManage/evaluate/index"
})
}
</script>
<style scoped lang="scss">
@import "index";

+ 27
- 13
pages/workbenchManage/components/modal.vue View File

@ -1,12 +1,11 @@
<template>
<up-modal :show="show" :showConfirmButton="false">
<view class="slot-content box">
<image class="w-100" src="../../../static/images/tabBar/cat.png"></image>
<image class="w-100" :src="state.info.partnerBackground"></image>
<view class="size-32 fw700 title text-c w-100">
恭喜你~
{{state.info.prompt}}
</view>
<view class="size-32 fw700 w-100 text-c">
您已成功加入猫妈狗爸合伙人团队
<view class="size-32 fw700 w-100 text-c" v-html="state.info.promptText">
</view>
<view class="btn color-fff size-30 flex-rowc" @tap="close">
我知道了
@ -16,23 +15,38 @@
</template>
<script setup>
import {
successList
} from "@/api/home.js"
import {
watch,
ref
ref,
watchEffect,
onMounted,
reactive
} from "vue"
const {
open
} = defineProps({
const props = defineProps({
open: false
})
watch(() => open, (val) => {
show.value = open
})
const emit = defineEmits(['close'])
const show = ref(false)
watch(() => props.open, (val) => {
show.value = val
})
onMounted(() => {
init()
})
const state = reactive({
info: {}
})
const init = () => {
successList().then(res => {
state.info = res.rows[0]
})
}
const close = () => {
show.value = false
emit("close", false)
}
</script>


+ 141
- 55
pages/workbenchManage/index.vue View File

@ -1,54 +1,33 @@
<template>
<view>
<view class="swiper-container">
<up-swiper :list="list1" indicator circular indicatorMode="dot" height="370rpx"></up-swiper>
<!-- <up-swiper :list="list1" indicator circular indicatorMode="dot" height="370rpx"></up-swiper> -->
<swiper :indicator-dots="true" :autoplay="true" :interval="3000" :duration="1000" style="height: 370rpx;">
<swiper-item class="w-100 h-100" v-for="item in state.banner" :key="item.id">
<image class="w-100 h-100" :src="item.image" mode=""></image>
</swiper-item>
</swiper>
</view>
<view class="container">
<view class="container-list">
<view class="mb28 col3 font32">合伙人工作台</view>
<!-- 申请加入 -->
<view class="container-list-but font28" v-if="show">
<view class="container-list-but font28" v-if="userHh!==1||show">
<view class="flex flex-between">
<view @click="handleOpen">
<view class="mb20">无门槛无需服务轻松赚取高达</view>
<view class="mb20">80%宠物服务订单收益</view>
<view class="font24 add-but col-white" @click="show=true">申请加入 ></view>
<view>
<view class="mb20" style="width: 400rpx;">{{iconState.list2[0].iconName}}</view>
<view class="font24 add-but col-white" @click="handleJoin(1)">申请加入 ></view>
</view>
<!-- <image src="https://cdn.catmdogd.com/Work/image/work/hhr.png"></image> -->
<image :src="iconState.list2[0].icon"></image>
</view>
</view>
<!-- 申请加入后 -->
<view class="flex flex-between font24 flex-wrap" v-else>
<view class="icon-list" @click="handleGoto(1)">
<up-image class="mb20" :show-loading="true"
src="https://cdn.catmdogd.com/Work/image/work/icon1.png" width="68rpx"
<view class="flex flex-between font24 flex-wrap" v-if="userHh===1">
<view class="icon-list" @click="handleGoto(1)" v-for="item in iconState.list1" :key="item.id">
<up-image class="mb20" :show-loading="true" :src="item.indexIcon" width="68rpx"
height="68rpx"></up-image>
<view>用户绑定</view>
<view>{{item.indexInfo}}</view>
</view>
<view class="icon-list" @click="handleGoto(2)">
<up-image class="mb20" :show-loading="true"
src="https://cdn.catmdogd.com/Work/image/work/icon2.png" width="68rpx"
height="68rpx"></up-image>
<view>我的用户</view>
</view>
<view class="icon-list" @click="handleGoto(3)">
<up-image class="mb20" :show-loading="true"
src="https://cdn.catmdogd.com/Work/image/work/icon3.png" width="68rpx"
height="68rpx"></up-image>
<view>我的等级</view>
</view>
<view class="icon-list" @click="handleGoto(4)">
<up-image class="mb20" :show-loading="true"
src="https://cdn.catmdogd.com/Work/image/work/icon4.png" width="68rpx"
height="68rpx"></up-image>
<view>我的钱包</view>
</view>
<!-- <view class="icon-list">
<up-image class="mb20" :show-loading="true"
src="https://cdn.catmdogd.com/Work/image/work/icon5.png" width="68rpx"
height="68rpx"></up-image>
<view>指导手册</view>
</view> -->
<view class="icon-list"></view>
</view>
<!-- <up-swiper :list="list1" indicator circular indicatorMode="dot" height="200rpx"></up-swiper> -->
@ -56,29 +35,30 @@
<view class="container-list">
<view class="mb28 col3 font32">伴宠师工作台</view>
<!-- 申请之前 -->
<view class="container-list-but" style="background: #FFECE5" v-if="show">
<view class="container-list-but" style="background: #FFECE5" v-if="userBcs!==1||show">
<view class="flex flex-between">
<view @click="handleBc">
<view class="mb20">布丁认证上门宠物服务与宠物</view>
<view class="mb20">亲密接触获得服务报酬</view>
<view class="font24 add-but col-white" style="background: #FF8343">申请加入 ></view>
<view>
<view class="mb20" style="width: 450rpx;">{{iconState.list2[1].iconName}}</view>
<!-- <view class="mb20">亲密接触获得服务报酬</view> -->
<view class="font24 add-but col-white" style="background: #FF8343" @click="handleJoin(2)">
申请加入 ></view>
</view>
<image src="https://cdn.catmdogd.com/Work/image/work/bcs.png"></image>
<image :src="iconState.list2[1].icon"></image>
</view>
</view>
<!-- 申请之后 -->
<!-- 申请加入后 -->
<view class="flex-rowl flex-wrap" v-else>
<view class="icon-list" v-for="item in accompanyData" :key="item.code" @click="handleClick(item)">
<up-image class="mb20" :show-loading="true"
src="https://cdn.catmdogd.com/Work/image/work/icon1.png" width="68rpx"
<view class="flex-rowl flex-wrap" v-if="userBcs===1">
<view class="icon-list" v-for="item in iconState.accompanyData" :key="item.id"
@click="handleClick(item)">
<up-image class="mb20" :show-loading="true" :src="item.indexIcon" width="68rpx"
height="68rpx"></up-image>
<view>{{ item.name }}</view>
<view>{{ item.indexInfo }}</view>
</view>
</view>
</view>
</view>
<ModalCom :open="isoOpen" />
<ModalCom :open="isoOpen" @close="modalClose" />
</view>
</template>
@ -86,6 +66,18 @@
<script setup>
import ModalCom from "./components/modal.vue"
import {
onShow
} from "@dcloudio/uni-app"
import {
banner,
joinHh,
joiBcs,
indexConfig,
indexConfigIco,
getbaseInfo
} from "../../api/home.js"
import {
onMounted,
reactive,
ref
} from "vue";
@ -115,13 +107,99 @@
code: '5',
url: ""
}]
const state = reactive({
banner: []
})
onMounted(() => {
getBanner()
getpz()
})
const userHh = ref(0)
const userBcs = ref(0)
onShow(() => {
const info = uni.getStorageSync("baseInfo")
if (info) {
const baseInfo = JSON.parse(info)
userHh.value = baseInfo.userHh === 1 ? 0 : 1
userBcs.value = baseInfo.userBcs === 1 ? 0 : 1
if (userHh.value === 1 || userBcs.value === 1) {
show.value = false
}
}
})
//
const getBanner = async () => {
const res = await banner()
if (res.code === 200) {
state.banner = [...res.data]
}
}
//
const num = ref(0)
const isoOpen = ref(false)
const handleJoin = (type) => {
num.value = Number(type)
const info = uni.getStorageSync("baseInfo")
if (!info) {
uni.navigateTo({
url: "/pages/login/index"
})
return
}
const baseInfo = JSON.parse(info)
if (type === 1) {
joinHh({
appUserId: baseInfo.userId
}).then(res => {
isoOpen.value = true
changeBaseInfo(baseInfo.userId)
}).catch(() => {})
} else {
joiBcs({
appUserId: baseInfo.userId
}).then(res => {
isoOpen.value = true
changeBaseInfo(baseInfo.userId)
})
}
}
//
const changeBaseInfo = (userId) => {
getbaseInfo(userId).then(res => {
})
}
const modalClose = () => {
isoOpen.value = false
if (num.value === 1) {
show.value = false
userHh.value = 1
} else {
show.value = false
userBcs.value = 1
}
}
//
const iconState = reactive({
list1: [],
list2: [],
accompanyData: []
})
const getpz = () => {
indexConfig().then(res => {
iconState.list1 = res.rows
})
indexConfigIco().then(res => {
iconState.list2 = res.data
})
}
const show = ref(true)
const list1 = reactive([
'https://cdn.uviewui.com/uview/swiper/swiper1.png',
'https://cdn.uviewui.com/uview/swiper/swiper2.png',
'https://cdn.uviewui.com/uview/swiper/swiper3.png',
]);
const hhShow = ref(true)
const handleGoto = (val) => {
switch (val) {
case 1:
@ -134,7 +212,8 @@
tab.navigateTo('/otherPages/workbenchManage/myLevel/index')
break;
case 4:
tab.navigateTo('/otherPages/binding/wallet/index')
// tab.navigateTo('/otherPages/binding/wallet/index')
tab.navigateTo('/otherPages/workbenchManage/myWallet/index')
break;
}
}
@ -167,9 +246,16 @@
url: "/otherPages/authentication/connectAddress/index"
})
break;
case "4":
break;
case "5":
uni.navigateTo({
url: "/otherPages/orderTakingManage/evaluate/index"
})
break;
}
}
const isoOpen = ref(false)
const handleOpen = () => {
show.value = false
}


+ 1
- 1
project.config.json View File

@ -1,5 +1,5 @@
{
"appid": "touristappid",
"appid": "wx90d494bba15f99c3",
"compileType": "miniprogram",
"libVersion": "3.7.8",
"packOptions": {


BIN
static/images/levelImage/bg1.png View File

Before After
Width: 342  |  Height: 156  |  Size: 3.9 KiB

BIN
static/images/levelImage/bg2.png View File

Before After
Width: 342  |  Height: 156  |  Size: 3.7 KiB

BIN
static/images/levelImage/bg3.png View File

Before After
Width: 342  |  Height: 156  |  Size: 4.6 KiB

BIN
static/images/levelImage/gl.png View File

Before After
Width: 36  |  Height: 43  |  Size: 611 B

BIN
static/images/levelImage/jc.png View File

Before After
Width: 39  |  Height: 42  |  Size: 1.2 KiB

BIN
static/images/levelImage/money.png View File

Before After
Width: 28  |  Height: 28  |  Size: 1.0 KiB

BIN
static/images/ydd/add_photo.png View File

Before After
Width: 131  |  Height: 131  |  Size: 4.9 KiB

BIN
static/images/ydd/approved.png View File

Before After
Width: 310  |  Height: 323  |  Size: 25 KiB

BIN
static/images/ydd/examine.png View File

Before After
Width: 310  |  Height: 311  |  Size: 25 KiB

BIN
static/images/ydd/photograph.png View File

Before After
Width: 40  |  Height: 40  |  Size: 1.4 KiB

BIN
static/images/ydd/profile.png View File

Before After
Width: 120  |  Height: 120  |  Size: 4.9 KiB

BIN
static/images/ydd/unqualified.png View File

Before After
Width: 311  |  Height: 333  |  Size: 25 KiB

+ 6
- 0
style/common.scss View File

@ -175,6 +175,9 @@
.ml28 {
margin-left: 28rpx;
}
.ml30{
margin-left: 30rpx;
}
.mt22 {
margin-top: 22rpx;
}
@ -247,6 +250,9 @@
.pr10 {
padding-right: 10rpx;
}
.pr20 {
padding-right: 20rpx;
}
.pb10 {
padding-bottom: 10rpx;
}


+ 14
- 14
utils/auth.js View File

@ -1,52 +1,52 @@
const TokenKey = 'App-Token'
const TokenKey = 'token'
const OpenIdKey = 'OpenId'
const LoginKey = 'isLogin'
export function setStorage(name, value) {
return uni.setStorageSync(name, value)
return uni.setStorageSync(name, value)
}
export function getStorage(name) {
return uni.getStorageSync(name)
return uni.getStorageSync(name)
}
export function removeStorage(name) {
return uni.removeStorageSync(name)
return uni.removeStorageSync(name)
}
export function getToken() {
return uni.getStorageSync(TokenKey)
return uni.getStorageSync(TokenKey)
}
export function setToken(token) {
return uni.setStorageSync(TokenKey, token)
return uni.setStorageSync(TokenKey, token)
}
export function removeToken() {
return uni.removeStorageSync(TokenKey)
return uni.removeStorageSync(TokenKey)
}
export function getOpenIdKey() {
return uni.getStorageSync(OpenIdKey)
return uni.getStorageSync(OpenIdKey)
}
export function setOpenIdKey(openId) {
return uni.setStorageSync(OpenIdKey, openId)
return uni.setStorageSync(OpenIdKey, openId)
}
export function removeOpenIdKey() {
return uni.removeStorageSync(OpenIdKey)
return uni.removeStorageSync(OpenIdKey)
}
export function getIsLogin() {
return uni.getStorageSync(LoginKey)
return uni.getStorageSync(LoginKey)
}
export function setIsLogin(isLogin) {
return uni.setStorageSync(LoginKey, isLogin)
return uni.setStorageSync(LoginKey, isLogin)
}
export function removeIsLogin() {
return uni.removeStorageSync(LoginKey)
}
return uni.removeStorageSync(LoginKey)
}

+ 9
- 7
utils/getUrl.js View File

@ -1,12 +1,14 @@
let current ="develop";
const accountInfo =wx.getAccountInfoSync();
let current = "develop";
const accountInfo = wx.getAccountInfoSync();
current = accountInfo.miniProgram.envVersion;
const api={
develop:"https://106.15.49.231/test-api", // 开发
trial:"https://api-test.catmdogd.com/test-api", //测试
release:"https://api.catmdogd.com/prod-api", // 线上
const api = {
develop: "https://pet-admin.hhlm1688.com/api/prod-api/", // 开发
trial: "https://pet-admin.hhlm1688.com/api/prod-api/", //测试
release: "https://pet-admin.hhlm1688.com/api/prod-api/", // 线上
}
const currentUrl = api[current];
export {currentUrl};
export {
currentUrl
};

+ 76
- 61
utils/request.js View File

@ -1,69 +1,84 @@
import {store} from '@/store'
import {getToken} from '@/utils/auth'
import {
store
} from '@/store'
import {
getToken
} from '@/utils/auth'
import errorCode from '@/utils/errorCode'
import {showConfirm, tansParams, toast} from '@/utils/common'
import {currentUrl} from '@/utils/getUrl'
import {
showConfirm,
tansParams,
toast
} from '@/utils/common'
import {
currentUrl
} from '@/utils/getUrl'
let timeout = 10000
const baseUrl = currentUrl
const request = config => {
// 是否需要设置 token
const isToken = (config.headers || {}).isToken || false
config.header = config.header || {}
if (getToken() && isToken) {
config.header['Authorization'] = 'Bearer ' + getToken()
}
// get请求映射params参数
if (config.params) {
let url = config.url + '?' + tansParams(config.params)
url = url.slice(0, -1)
config.url = url
}
return new Promise((resolve, reject) => {
uni.request({
method: config.method || 'get',
timeout: config.timeout || timeout,
url: config.baseUrl || baseUrl + config.url,
data: config.data,
header: config.header,
dataType: 'json'
}).then(res => {
console.log(res);
const code = res.data.code || 200
console.log(code);
const msg = errorCode[code] || res.data.msg || errorCode['default']
if (code === 401) {
showConfirm('登录状态已过期,您可以继续留在该页面,或者重新登录?').then(res => {
if (res.confirm) {
store.dispatch('LogOut').then(res => {
uni.reLaunch({url: '/pages/index'})
})
}
})
reject('无效的会话,或者会话已过期,请重新登录。')
} else if (code === 500) {
toast(msg)
reject('500')
} else if (code !== 200) {
toast(msg)
reject(code)
}
resolve(res.data)
})
.catch(error => {
let {message} = error
if (message === 'Network Error') {
message = '后端接口连接异常'
} else if (message.includes('timeout')) {
message = '系统接口请求超时'
} else if (message.includes('Request failed with status code')) {
message = '系统接口' + message.substr(message.length - 3) + '异常'
}
toast(message)
reject(error)
})
})
// 是否需要设置 token
const isToken = (config.headers || {}).isToken || false
config.header = config.header || {}
console.log("=====", getToken())
if (getToken() && isToken) {
config.header['Authorization'] = 'Bearer ' + getToken()
}
// get请求映射params参数
if (config.params) {
let url = config.url + '?' + tansParams(config.params)
url = url.slice(0, -1)
config.url = url
}
return new Promise((resolve, reject) => {
uni.request({
method: config.method || 'get',
timeout: config.timeout || timeout,
url: config.baseUrl || baseUrl + config.url,
data: config.data,
header: config.header,
dataType: 'json'
}).then(res => {
console.log(res);
const code = res.data.code || 200
console.log(code);
const msg = errorCode[code] || res.data.msg || errorCode['default']
if (code === 401) {
showConfirm('登录状态已过期,您可以继续留在该页面,或者重新登录?').then(res => {
if (res.confirm) {
store.dispatch('LogOut').then(res => {
uni.reLaunch({
url: '/pages/index'
})
})
}
})
reject('无效的会话,或者会话已过期,请重新登录。')
} else if (code === 500) {
toast(msg)
reject('500')
} else if (code !== 200) {
toast(msg)
reject(code)
}
resolve(res.data)
})
.catch(error => {
let {
message
} = error
if (message === 'Network Error') {
message = '后端接口连接异常'
} else if (message.includes('timeout')) {
message = '系统接口请求超时'
} else if (message.includes('Request failed with status code')) {
message = '系统接口' + message.substr(message.length - 3) + '异常'
}
toast(message)
reject(error)
})
})
}
export default request
export default request

Loading…
Cancel
Save