Browse Source

chore: 更新图片资源、修复样式及优化用户管理页面

- 添加新的图片资源到 `doc` 和 `static/images/user` 目录
- 删除旧的图片资源
- 修复用户管理页面的样式问题
- 优化宠物信息展示逻辑,支持多宠物滚动展示
- 更新页面标题和部分文案
master
前端-胡立永 5 days ago
parent
commit
dc8a97efcc
36 changed files with 601 additions and 109 deletions
  1. +1
    -1
      components/configPopup.vue
  2. +0
    -0
      doc/Group 1000001460.png
  3. +0
    -0
      doc/Group 1000001460@2x.png
  4. +0
    -0
      doc/Group 1000001828.png
  5. +0
    -0
      doc/Group 1000001828@2x.png
  6. +0
    -0
      doc/bg1.png
  7. +0
    -0
      doc/bg2.png
  8. +0
    -0
      doc/bg3.png
  9. +0
    -0
      doc/cat-active.png
  10. +0
    -0
      doc/cat.png
  11. +0
    -0
      doc/dog-active.png
  12. +0
    -0
      doc/dog.png
  13. +1
    -1
      manifest.json
  14. +6
    -4
      otherPages/authentication/connectAddress/detail.vue
  15. +53
    -7
      otherPages/authentication/connectAddress/index.vue
  16. +8
    -1
      otherPages/authentication/serve/index.vue
  17. +4
    -2
      otherPages/authentication/serve/upload.vue
  18. +40
    -2
      otherPages/myOrdersManage/date/index.vue
  19. +6
    -8
      otherPages/orderTakingManage/evaluate/index.vue
  20. +261
    -0
      otherPages/userManage/userInfo.vue
  21. +1
    -1
      pages.json
  22. +1
    -1
      pages/myOrdersManage/components/timelineService.vue
  23. +129
    -57
      pages/userManage/index.scss
  24. +81
    -24
      pages/userManage/index.vue
  25. +9
    -0
      pages/workbenchManage/index.vue
  26. BIN
      static/images/user/1.png
  27. BIN
      static/images/user/2.png
  28. BIN
      static/images/user/4.png
  29. BIN
      static/images/user/5.png
  30. BIN
      static/images/user/q1.png
  31. BIN
      static/images/user/q2.png
  32. BIN
      static/images/ydd/banner1.png
  33. BIN
      static/images/ydd/banner2.png
  34. BIN
      static/images/ydd/banner3.png
  35. BIN
      static/images/ydd/组 70208.png
  36. BIN
      static/images/ydd/组 70208@2x.png

+ 1
- 1
components/configPopup.vue View File

@ -1,7 +1,7 @@
<template>
<view class="configPopup">
<up-popup :show="showConfirmOrder" mode="bottom" @close="close" :round="10" :closeable="true"
:safeAreaInsetBottom="false">
>
<view class="content">
<up-parse :content="content"></up-parse>
</view>


static/images/tabBar/Group 1000001460.png → doc/Group 1000001460.png View File


static/images/tabBar/Group 1000001460@2x.png → doc/Group 1000001460@2x.png View File


static/images/tabBar/Group 1000001828.png → doc/Group 1000001828.png View File


static/images/tabBar/Group 1000001828@2x.png → doc/Group 1000001828@2x.png View File


static/images/levelImage/bg1.png → doc/bg1.png View File


static/images/levelImage/bg2.png → doc/bg2.png View File


static/images/levelImage/bg3.png → doc/bg3.png View File


static/images/ydd/cat-active.png → doc/cat-active.png View File


static/images/ydd/cat.png → doc/cat.png View File


static/images/ydd/dog-active.png → doc/dog-active.png View File


static/images/ydd/dog.png → doc/dog.png View File


+ 1
- 1
manifest.json View File

@ -1,6 +1,6 @@
{
"name" : "uni-vuu3",
"appid" : "__UNI__08423D1",
"appid" : "__UNI__197A38F",
"description" : "",
"versionName" : "1.0.0",
"versionCode" : "100",


+ 6
- 4
otherPages/authentication/connectAddress/detail.vue View File

@ -30,8 +30,8 @@
<text>{{ !!form.status ? '开启' : '关闭' }}</text>
</view>
</up-form-item>
<up-form-item label="接单范围" prop="distance">
<up-input v-model="form.distance" placeholder="请输入内容" inputAlign="right" border="none">
<up-form-item label="接单范围" prop="searchValue">
<up-input v-model="form.searchValue" placeholder="请输入内容" inputAlign="right" border="none">
<template #suffix>
<text>Km</text>
</template>
@ -98,7 +98,7 @@
id: eidtItem?.value?.id || null,
area: eidtItem?.value?.area || null,
address: eidtItem?.value?.address || null,
status: eidtItem?.value?.status || null,
status: eidtItem?.value?.status == 'true' || null,
latitude: eidtItem?.value?.latitude || null,
longitude: eidtItem?.value?.longitude || null
}
@ -123,7 +123,7 @@
setAddress(res)
},
fail(e) {
console.log("获取位置信息失败!",e)
console.log("获取位置信息失败!", e)
}
})
}
@ -163,6 +163,8 @@
<style lang="scss" scoped>
.page {
padding: 35rpx 37rpx 144rpx 37rpx;
min-height: calc(100vh - 200rpx);
background-color: #fff;
}
.info {


+ 53
- 7
otherPages/authentication/connectAddress/index.vue View File

@ -16,19 +16,22 @@
<view class="size-30">
{{ item.area }}
</view>
<view class="size-22 color-777 mt16">
{{ `接单范围:${item.distance}km` }}
<view class="size-22 color-777 mt16" v-if="item.searchValue">
{{ `接单范围:${item.searchValue}km` }}
</view>
<view class="size-22 color-777 mt16" v-else>
接单范围未设置
</view>
<view class="content mt16">
<view class="flex-between">
<text class="size-22 color-999">不接单日期</text>
<view class="flex-rowr">
<view class="flex-rowr" @click="settingDate(item)">
<text class="size-22 color-ccc">修改</text>
<image src="@/static/images/ydd/right.png" mode="widthFix" style="width: 20rpx;"></image>
</view>
</view>
<view class="color-999 size-22 mt16 flex-rowl">
<text>
<text v-if="item.disabledDate">
{{ `${item.disabledDate?.length}天:` }}
</text>
<text class="text-ellipsis" style="flex: 1;">
@ -37,12 +40,20 @@
</view>
</view>
<!-- :style="{color : item.status == 'true' ? '#FFBF60' : '#333'}" -->
<view class="flex-between mt16">
<view class="flex-rowl">
<view class="color-ffb size-22">
接单中
<view class="color-ffb size-22"
:class="{
'switchAddress-a' : item.status == 'true',
'switchAddress-b' : item.status != 'true'
}"
>
{{ item.status == 'true' ? '接单中' : '不接单' }}
</view>
<switch :checked="item.status" color="#FFBF60" style="transform: scale(0.6);" />
<switch :checked="item.status == 'true'" color="#FFBF60" style="transform: scale(0.6);"
@click="switchAddress(item)"/>
</view>
<view class="flex-rowr">
<view @click="toAdd(item)" class="flex-rowl">
@ -92,6 +103,10 @@
} from "@/api/address/address.js"
import Modal from "@/components/Modal/index.vue"
import { useStore } from 'vuex'
import {
insertAddress,
udpateAddress
} from "@/api/address/address.js"
const store = useStore();
const configList = computed(() => {
@ -110,6 +125,19 @@
}
}
function switchAddress(item){
item.status = item.status == 'true' ? 'false' : 'true'
onSave(item)
}
const onSave = async (item) => {
let code = null;
let result = await udpateAddress({
...item
})
code = result.code
}
const getDisabledDateDesc = (dateArr) => {
if (!dateArr?.length) {
@ -152,6 +180,12 @@
modal.value.open();
deleteId.value = delId;
}
function settingDate(item){
uni.navigateTo({
url: '/otherPages/myOrdersManage/date/detail?addressId=' + item.id
})
}
const cancelDel = () => {
//
@ -169,6 +203,18 @@
height: auto;
margin-top: 240rpx;
}
.switchAddress-a{
background-color: #FFBF6022;
color: #FFBF60;
padding: 10rpx 20rpx;
border-radius: 14rpx;
}
.switchAddress-b{
background-color: #33333312;
color: #555;
padding: 10rpx 20rpx;
border-radius: 14rpx;
}
}
.content {


+ 8
- 1
otherPages/authentication/serve/index.vue View File

@ -96,8 +96,15 @@
return store.getters.configList
})
const fetchUpdate = () => {
const fetchUpdate = (data) => {
// todo
console.log(data);
for(let key in data){
state.baseInfoList[key] = data[key]
}
console.log(state.baseInfoList);
}
const form = reactive({


+ 4
- 2
otherPages/authentication/serve/upload.vue View File

@ -96,10 +96,11 @@
import dayjs from 'dayjs'
import { ossUpload } from '@/utils/oss-upload/oss/index.js'
import { insertServiceLog, udpateServiceLog } from '@/api/serviceLog'
import { serviceLogList, deleteServiceLog } from '@/api/serviceLog'
const store = useStore()
const id = ref()
const id = ref(0)
const form = reactive({
serviceType: [],
@ -132,7 +133,7 @@
form.fileList = image?.split?.(',').map(url => ({ url })) || []
} catch (err) {
console.error(err);
}
}
@ -235,6 +236,7 @@
store.dispatch('fetchPetTypeOptions')
id.value = option.id
if (id.value) {
fetchServiceLogDetail()


+ 40
- 2
otherPages/myOrdersManage/date/index.vue View File

@ -12,6 +12,10 @@
添加不接单日期
</view>
</view>
<view class="buttom_ level" :style="{borderRadius:'41rpx'}">
保存
</view>
@ -19,9 +23,43 @@
</template>
<script setup>
const toDetail = () => {
import {
onLoad,
onShow
} from '@dcloudio/uni-app'
import {
insertOutDate,
outDateList
} from "@/api/date/index.js"
import { ref } from 'vue';
onLoad((options) => {
addressId.value = options.addressId
});
onShow(() => {
getList()
})
let addressId = ref(0)
function getList(){
outDateList({
addressId : addressId.value
})
.then(res => {
})
}
const toDetail = (id) => {
uni.navigateTo({
url: '/otherPages/myOrdersManage/date/detail'
url: `/otherPages/myOrdersManage/date/detail?id=${id}&addressId=${addressId.value}`
});
}
</script>


+ 6
- 8
otherPages/orderTakingManage/evaluate/index.vue View File

@ -12,15 +12,15 @@
<view v-for="item in list" :key="item.id" class="item box-size level">
<view class="img" :style="{borderRadius:'75rpx'}">
<image src="" mode="" style="width: 132rpx;height: 132rpx;" :style="{borderRadius:'75rpx'}"></image>
<image src="https://image.hhlm1688.com/img/work/log/headImage.png" mode="" style="width: 132rpx;height: 132rpx;" :style="{borderRadius:'75rpx'}"></image>
</view>
<view class="vertical">
<view class="level flex-2">
<view class="name">
猫小姐
{{ item.appUsers.userName }}
</view>
<view >
<up-rate :count="count" v-model="value" active-color="#FFBF60" gutter="6"></up-rate>
<view>
<up-rate :count="5" v-model="item.satisfaction" active-color="#FFBF60" gutter="6"></up-rate>
</view>
</view>
<view class="time">
@ -64,9 +64,9 @@
<style lang="scss">
.box {
width: 100vw;
height: 100vh;
min-height: 100vh;
font-weight: 0 !important;
background-color: #fff;
.text1 {
margin-top: 45rpx;
@ -92,13 +92,11 @@
width: 750rpx;
height: 1rpx;
border-radius: 9rpx;
background-color: #707070;
}
.img {
width: 132rpx;
height: 132rpx;
background: red;
margin-right: 15rpx;
}


+ 261
- 0
otherPages/userManage/userInfo.vue View File

@ -0,0 +1,261 @@
<template>
<view class="user-info-container container">
<view class="user-avatar-section">
<view class="user-info-title">
用户头像
</view>
<view style="display: flex;justify-content: center;">
<u-upload
accept="image"
:capture="['album','camera']"
:fileList="fileList"
@afterRead="afterRead"
@delete="deletePic"
:max-count="1"
name="avatar"
width="80"
height="80"
:custom-style="{flex:0}"
>
<image :src="avatarUrl" style="width: 80px;height: 80px;border-radius: 50%;"></image>
</u-upload>
</view>
</view>
<view class="user-info-section">
<view class="user-info-title">
基本信息
</view>
<view class="user-info-form">
<view class="user-info-item">
<view class="user-info-label">昵称</view>
<view class="user-info-input">
<u-input v-model="nickname" placeholder="请输入昵称" :border="false" />
</view>
</view>
<!-- <view class="user-info-item">
<view class="user-info-label">会员等级</view>
<view class="user-info-value">
<text>{{userLevel}}</text>
</view>
</view> -->
</view>
</view>
<view class="user-info-btns">
<view class="user-info-btn" @click="save">
<u-button color="#FFBF60" :loading="loading">
<view style="color: #fff;">
保存
</view>
</u-button>
</view>
</view>
</view>
</template>
<script>
import {updateUserProfile, uploadAvatar} from '@/api/system/user'
import {getPersonalInfo} from "@/api/system/personal.js"
export default {
data() {
return {
loading: false,
fileList: [],
avatarUrl: 'https://catmdogf.oss-cn-shanghai.aliyuncs.com/CMDF/front/personal/index/avatar_1.png',
nickname: '',
userLevel: ''
}
},
onLoad() {
this.getUserInfo()
},
methods: {
//
getUserInfo() {
getPersonalInfo().then(res => {
if (res && (res.id || res.id === 0)) {
this.nickname = res.nickname || ''
this.userLevel = res.level || ''
if (res.avatar) {
this.avatarUrl = res.avatar
this.fileList = [{url: res.avatar}]
}
}
})
},
//
deletePic(event) {
this.fileList.splice(event.index, 1)
this.avatarUrl = 'https://catmdogf.oss-cn-shanghai.aliyuncs.com/CMDF/front/personal/index/avatar_1.png'
},
//
async afterRead(event) {
// multiple true , file
let lists = [].concat(event.file)
let fileListLen = this.fileList.length
lists.map((item) => {
this.fileList.push({
...item,
status: 'uploading',
message: '上传中'
})
})
for (let i = 0; i < lists.length; i++) {
const result = await this.uploadFilePromise(lists[i].url)
let item = this.fileList[fileListLen]
this.fileList.splice(fileListLen, 1, Object.assign(item, {
status: 'success',
message: '',
url: result
}))
this.avatarUrl = result
fileListLen++
}
},
uploadFilePromise(url) {
return new Promise((resolve, reject) => {
let a = uni.uploadFile({
url: 'https://store-test.catmdogd.com/test-api/h5/oss/upload',
filePath: url,
name: 'file',
formData: {
user: 'test'
},
success: (res) => {
setTimeout(() => {
if(res && res.data){
let resData = JSON.parse(res.data);
resolve(resData.url);
}
reject("上传失败");
}, 1000)
}
});
})
},
//
save() {
if (!this.nickname) {
this.$modal.showToast('请输入昵称!')
return
}
this.loading = true
let params = {
nickname: this.nickname,
avatar: this.avatarUrl
}
updateUserProfile(params).then(res => {
if (res && res.code == 200) {
uni.showToast({
title: '保存成功',
duration: 3000,
icon: "none"
})
setTimeout(() => {
this.loading = false
let len = getCurrentPages().length
if (len >= 2) {
uni.navigateBack()
} else {
uni.redirectTo({url: '/pages/personalCenter/index'})
}
}, 1000)
} else {
this.loading = false
uni.showToast({
title: '更新用户信息失败',
duration: 3000,
icon: "none"
})
}
}).catch(() => {
this.loading = false
uni.showToast({
title: '更新用户信息失败',
duration: 3000,
icon: "none"
})
})
}
}
}
</script>
<style lang="scss">
.user-info-container {
position: relative;
height: 100%;
padding-bottom: 90px;
.user-avatar-section {
width: 100%;
background-color: #fff;
padding: 15px 20px;
margin-bottom: 10px;
}
.user-info-section {
width: 100%;
background-color: #fff;
padding: 15px 20px;
}
.user-info-title {
font-size: 14px;
color: #333;
font-weight: bold;
padding-bottom: 15px;
}
.user-info-form {
width: 100%;
}
.user-info-item {
display: flex;
align-items: center;
padding: 12px 0;
border-bottom: 1px solid #efefef;
&:last-child {
border-bottom: none;
}
}
.user-info-label {
width: 80px;
color: #333;
font-size: 14px;
}
.user-info-input {
flex: 1;
}
.user-info-value {
flex: 1;
color: #666;
font-size: 14px;
}
.user-info-btns {
background-color: #FFFFFF;
padding: 10px 20px 40px;
width: 100%;
height: 90px;
position: fixed;
bottom: 0;
z-index: 100;
text-align: center;
.user-info-btn {
width: 80%;
margin: 0 auto;
}
}
}
</style>

+ 1
- 1
pages.json View File

@ -196,7 +196,7 @@
}, {
"path": "create/index",
"style": {
"navigationBarTitleText": "创建宠物档案"
"navigationBarTitleText": "编辑宠物档案"
}
}
]


+ 1
- 1
pages/myOrdersManage/components/timelineService.vue View File

@ -18,7 +18,7 @@
v-else
class="status-icon"></image>
{{ status ? '待上门' : '已完成' }}{{ orderCount }}
{{ status ? '待上门' : '已完成' }}
</view>
</view>


+ 129
- 57
pages/userManage/index.scss View File

@ -1,71 +1,143 @@
.user-header{
position: relative;
height: 350rpx;
background: #FFBF60;
color: #FFFFFF;
.base-leavel {
display: flex;
}
.user-header {
position: relative;
height: 350rpx;
background: #FFBF60;
color: #FFFFFF;
.base-leavel {
display: flex;
}
}
.role-tag {
display: inline-block;
width: 125rpx;
height: 34rpx;
margin: 19rpx 0;
display: inline-block;
width: 125rpx;
height: 34rpx;
margin: 19rpx 0;
& + & {
margin-left: 10rpx;
}
}
.login{
padding: 40rpx;
}
.header-money{
position: absolute;
bottom: -180rpx;
color: #333333;
width: 100%;
&-list{
padding: 0 30rpx;
}
&-item{
height: 300rpx;
background: #FFFFFF;
border-radius: 30rpx;
}
&+& {
margin-left: 10rpx;
}
}
.login {
padding: 40rpx;
}
.header-money {
position: absolute;
bottom: -180rpx;
color: #333333;
width: 100%;
&-list {
padding: 0 30rpx;
}
&-item {
height: 300rpx;
background: #FFFFFF;
border-radius: 30rpx;
}
}
.but {
color: #FFBF60;
}
.but{
color: #FFBF60;
.user-container {
margin-top: 180rpx;
padding: 30rpx;
}
.user-container{
margin-top: 180rpx;
padding: 30rpx;
.icon-list {
display: flex;
flex-direction: column;
align-items: center;
}
.icon-list{
display: flex;
flex-direction: column;
align-items: center;
.cw-box {
background: #fef0f0;
}
.cw-box{
background: #fef0f0;
.pet-scroll-container {
width: 100%;
white-space: nowrap;
}
.pd4{
padding: 1% 4% 2% 4%;
box-sizing: border-box;
.pet-scroll-content {
display: flex;
padding: 10rpx 0;
}
.btn-share {
border: none;
padding: 0;
display: inline-block;
margin: 0;
.pet-item {
display: inline-flex;
min-width: 340rpx;
margin-right: 20rpx;
white-space: normal;
flex-shrink: 0;
}
.pet-name-container {
display: flex;
align-items: center;
}
.pet-gender {
margin-left: 10rpx;
font-size: 28rpx;
width: 36rpx;
height: 36rpx;
border-radius: 50%;
display: inline-flex;
align-items: center;
justify-content: center;
&-male {
background-color: #91C7F5;
color: #FFFFFF;
}
&-female {
background-color: #FF9CC2;
color: #FFFFFF;
}
}
color: #000000;
font-size: 28rpx;
line-height: 40rpx;
.no-pet-tip {
background: #FFF8EC;
border: 1px solid #FFE4B8;
align-items: center;
justify-content: space-between;
margin-bottom: 20rpx;
.no-pet-text {
font-size: 26rpx;
color: #B97132;
flex: 1;
}
}
.add-pet-btn {
background: #FFBF60;
color: #FFFFFF;
font-size: 26rpx;
padding: 10rpx 30rpx;
border-radius: 30rpx;
text-align: center;
}
.pd4 {
padding: 1% 4% 2% 4%;
box-sizing: border-box;
}
.btn-share {
border: none;
padding: 0;
display: inline-block;
margin: 0;
color: #000000;
font-size: 28rpx;
line-height: 40rpx;
}

+ 81
- 24
pages/userManage/index.vue View File

@ -31,8 +31,11 @@
<view class="header-money-item flex flex-evenly">
<view style="text-align: center">
<view class="mb20 flex">
<up-image :show-loading="true" src="https://cdn.catmdogd.com/Work/image/work/icon4.png"
width="68rpx" height="68rpx"></up-image>
<!-- <up-image :show-loading="true" src="https://cdn.catmdogd.com/Work/image/work/icon4.png"
width="68rpx" height="68rpx"></up-image> -->
<up-image :show-loading="true" src="/static/images/user/q1.png"
style="margin-right: 14rpx;"
width="50rpx" height="50rpx"></up-image>
服务酬劳
</view>
<view class="mb20">{{ userInfo.price }}</view>
@ -44,8 +47,13 @@
</view>
<view style="text-align: center">
<view class="mb20 flex">
<up-image :show-loading="true" src="https://cdn.catmdogd.com/Work/image/work/icon4.png"
width="68rpx" height="68rpx"></up-image>
<!-- <up-image :show-loading="true" src="https://cdn.catmdogd.com/Work/image/work/icon4.png"
width="68rpx" height="68rpx"></up-image> -->
<up-image :show-loading="true" src="/static/images/user/q2.png"
style="margin-right: 14rpx;"
width="50rpx" height="50rpx"></up-image>
保证金
</view>
<view class="mb20">{{ userInfo.baoPrice }}</view>
@ -58,20 +66,44 @@
<view class="user-container">
<view class="bgf pd4 radius20 mb28">
<view class="mb28 flex flex-between">
<view class="font36">我的宠</view>
<view class="font36">我的</view>
<view @click="toMyPet" style="color: #707070">更多 ></view>
</view>
<view>
<!-- <up-button v-if="getIsLogin()" class="mb20" size="large" style="width: 500rpx" type="primary"
text="请添加您的爱宠" shape="circle"
color="linear-gradient(to right, rgb(255 ,191 ,96 ,1), rgb(255, 51, 186))"></up-button> -->
<view v-if="isLogin && pet.id" class="cw-box radius20 pd20 flex">
<up-image class="mr20" width="140rpx" style="flex-shrink: 0" height="140rpx"
:src="pet?.headImage" shape="circle"></up-image>
<view style="width: 418rpx">
<view class="font32 mb20">{{ pet.nickName }}</view>
<view class="font24 ellipsis">{{ pet.type }} | {{ pet.age }}</view>
</view>
<view v-if="isLogin && petList.length">
<scroll-view scroll-x class="pet-scroll-container" show-scrollbar="false">
<view class="pet-scroll-content">
<view class="cw-box radius20 pd20 flex pet-item"
v-for="(pet, inde) in petList"
@click="editPet(pet)"
:key="pet.id">
<up-image class="mr20" width="120rpx" style="flex-shrink: 0" height="120rpx"
:src="pet?.headImage" shape="circle"></up-image>
<view style="width: 280rpx">
<view class="font32 mb20 pet-name-container">
{{ pet.nickName }}
<text class="pet-gender" :class="{'pet-gender-male': pet.sex === 0, 'pet-gender-female': pet.sex === 1}">
{{ pet.sex === 0 ? '♂' : '♀' }}
</text>
</view>
<view class="font24 ellipsis">{{ pet.type }} | {{ pet.age }}</view>
</view>
</view>
</view>
</scroll-view>
</view>
<view class="no-pet-tip radius20 pd20 flex" v-else>
<up-image class="mr20" width="80rpx" height="80rpx" src="https://image.hhlm1688.com/img/work/log/headImage.png" shape="circle"></up-image>
<view class="no-pet-text">您还没有添加您的爱宠信息呢</view>
<view class="add-pet-btn" @click="toMyPet">去添加</view>
</view>
</view>
</view>
@ -79,41 +111,53 @@
<view class="font36 mb28">服务中心</view>
<view class="flex flex-between font28 flex-wrap">
<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>
<!-- <up-image class="mb20" src="https://cdn.catmdogd.com/Work/image/work/icon1.png" width="68rpx"
height="68rpx"></up-image> -->
<up-image class="mb20" src="/static/images/user/1.png" width="58rpx"
height="58rpx"></up-image>
<view>我的评价</view>
</view>
<view @click="platformProtocol" class="icon-list">
<up-image class="mb20" :show-loading="true"
<!-- <up-image class="mb20" :show-loading="true"
src="https://cdn.catmdogd.com/Work/image/work/icon2.png" width="68rpx"
height="68rpx"></up-image>
height="68rpx"></up-image> -->
<up-image class="mb20" src="/static/images/user/2.png" width="58rpx"
height="58rpx"></up-image>
<view>平台协议</view>
</view>
<button plain class="btn-share" open-type="contact">
<view class="icon-list">
<up-image class="mb20" :show-loading="true"
<!-- <up-image class="mb20" :show-loading="true"
src="https://cdn.catmdogd.com/Work/image/work/icon3.png" width="68rpx"
height="68rpx"></up-image>
height="68rpx"></up-image> -->
<up-image class="mb20" src="/static/images/user/4.png" width="58rpx"
height="58rpx"></up-image>
<view>联系客服</view>
</view>
</button>
<button plain class="btn-share" open-type="share">
<view class="icon-list">
<up-image class="mb20" :show-loading="true"
<!-- <up-image class="mb20" :show-loading="true"
src="https://t9.baidu.com/it/u=2834693008,3232051400&fm=193" width="68rpx"
height="68rpx"></up-image>
height="68rpx"></up-image> -->
<up-image class="mb20" src="/static/images/user/5.png" width="58rpx"
height="58rpx"></up-image>
<view>分享好友</view>
</view>
</button>
</view>
<view class="flex flex-between font28 flex-wrap mt20">
<!-- <view class="flex flex-between font28 flex-wrap mt20">
<view class="icon-list" @click="logout">
<up-image class="mb20"
src="https://cdn.catmdogd.com/2025/04/01ab556ca51d2a4f82896c1e6fd0034a8b7shDr3f7qeDQ527d93075294e7237cee8b6c7d613be8.png"
width="68rpx" height="68rpx" bgColor="#ffffff"></up-image>
<view>退出登录</view>
</view>
</view>
</view> -->
</view>
</view>
</view>
@ -183,7 +227,7 @@
const configList = computed(() => {
return store.getters.configList;;
})
const pet = ref({})
const petList = ref([])
const show = ref(false)
const content = ref("")
const modal = ref(null)
@ -236,9 +280,22 @@
})
}
const editPet = (item) => {
if (item.petType === '猫咪' || item.petType === 0) {
uni.navigateTo({
url: `/otherPages/userManage/pet/petInfo?petType=0&optionType=edit&petId=${item.id}`
})
}
if (item.petType === '狗狗' || item.petType === 1) {
uni.navigateTo({
url: `/otherPages/userManage/pet/petInfo?petType=1&optionType=edit&petId=${item.id}`
})
}
};
const getPet = async () => {
let response = await getpetList();
pet.value = response?.data[0] || {};
petList.value = response?.data || [];
}
const logout = () => {


+ 9
- 0
pages/workbenchManage/index.vue View File

@ -56,6 +56,7 @@
</view>
</view>
<ModalCom :open="isoOpen" @close="modalClose" />
<configPopup ref="configPopupRef" />
</view>
</template>
@ -86,6 +87,8 @@
import {
useStore
} from "vuex"
import configPopup from '@/components/configPopup.vue'
const configPopupRef = ref(null)
const store = useStore();
const state = reactive({
@ -175,6 +178,12 @@
const show = ref(true)
const hhShow = ref(true)
const handleGoto = (item) => {
if(item.name == '平台手册'){
// pet_platform_introduction
return configPopupRef.value.open('pet_platform_introduction')
}
if(item.url) {
uni.navigateTo({
url: item.url


BIN
static/images/user/1.png View File

Before After
Width: 54  |  Height: 54  |  Size: 2.9 KiB

BIN
static/images/user/2.png View File

Before After
Width: 53  |  Height: 57  |  Size: 1.7 KiB

BIN
static/images/user/4.png View File

Before After
Width: 53  |  Height: 51  |  Size: 2.1 KiB

BIN
static/images/user/5.png View File

Before After
Width: 53  |  Height: 50  |  Size: 1.5 KiB

BIN
static/images/user/q1.png View File

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

BIN
static/images/user/q2.png View File

Before After
Width: 38  |  Height: 44  |  Size: 1.1 KiB

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

Before After
Width: 684  |  Height: 311  |  Size: 13 KiB

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

Before After
Width: 684  |  Height: 311  |  Size: 11 KiB

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

Before After
Width: 684  |  Height: 311  |  Size: 11 KiB

BIN
static/images/ydd/组 70208.png View File

Before After
Width: 20  |  Height: 20  |  Size: 299 B

BIN
static/images/ydd/组 70208@2x.png View File

Before After
Width: 40  |  Height: 40  |  Size: 594 B

Loading…
Cancel
Save