张含笑
2025-10-23 922be295d3d1c602e371c60a2b79f977d710e895
feat:我的页面
5 files modified
150 ■■■■■ changed files
src/pages/user/index.vue 26 ●●●●● patch | view | raw | blame | history
src/pages/work/index.vue 79 ●●●●● patch | view | raw | blame | history
src/subPackages/userDetail/infos/index.vue 23 ●●●● patch | view | raw | blame | history
src/subPackages/userDetail/password/index.vue 17 ●●●● patch | view | raw | blame | history
src/subPackages/workDetail/index.vue 5 ●●●● patch | view | raw | blame | history
src/pages/user/index.vue
@@ -1,7 +1,7 @@
<!-- 我的 -->
<template>
    <view class="page-wrap">
        <u-navbar title="" placeholder left-icon="" right-icon="camera-fill" />
        <view class="flex items-center pb-30rpx pl-30rpx pr-20rpx">
            <view class="mr-20rpx">
                <u-avatar :src="userStore?.userInfo?.avatar" size="70" />
@@ -32,6 +32,7 @@
        <view class="mt-20rpx">
            <div class="goOutStyle" @click="logOut">退出登录</div>
        </view>
        <div class="bottomLogo"><img src="/src/static/images/user/logo1.svg" alt="" /></div>
    </view>
</template>
@@ -92,20 +93,16 @@
    // 登录鉴权,微信小程序端点击tabbar的底层逻辑不触发uni.switchTab,需要在页面onShow生命周期中校验权限
    onShow(async () => {
        getDeviceRegion()
        // window.addEventListener('message', (event) => {
        //   console.log('message')
        // })
        // setInterval(() => {
        // sWebViewRef.value.evalJs(`x_sun('${test.value}')`)
        // }, 2000)
    });
</script>
<style scoped lang="scss">
    .page-wrap {
        width: 100%;
        height: 298px;
        background: url('/src/static/images/user/userBg.svg') no-repeat center;
        background-size: 100% 100%;
        height: 100%;
        background: url('/src/static/images/user/allBg.svg') no-repeat center center;
        background-size: cover;
        padding-top: 44px;
    }
    .userName {
@@ -134,7 +131,14 @@
        width: 100px;
        height: 40px;
    }
       .bottomLogo {
           position: absolute;
           bottom: 25px;
           left: 0;
           right: 0;
           margin: 0 auto;
           text-align: center;
       }
    .goOutStyle {
        width: 295px;
        height: 38px;
src/pages/work/index.vue
@@ -1,49 +1,66 @@
<template>
    <view class="flex flex-col eventTickets">
         <WebViewPlus v-if="isApp" ref="sWebViewRef" :src="`${viewUrl}`" @webMessage="onPostMessage"/>
        <WebViewPlus v-if="isApp" ref="sWebViewRef" :src="`${viewUrl}`" @webMessage="onPostMessage" />
    </view>
</template>
<script setup>
    import {getWebViewUrl} from "@/utils/index.js";
import WebViewPlus from "@/components/WebViewPlus.vue";
  import {useTabAddButton} from "@/hooks/index.js";
const sWebViewRef = ref(null);
const viewUrl = getWebViewUrl('/work', {})
function onPostMessage(data) {
    if(data.type==='workid'){
    uni.navigateTo({
      url: `/subPackages/workDetail/index?eventNum=${data.eventNum}`
    });
  }else if(data.type === 'bigImage'){
    uni.navigateTo({
      url: `/subPackages/workDetail/photoMagnify/index?eventNum=${data.eventNum}`
    });
  }
    import {
        getWebViewUrl
    } from "@/utils/index.js";
    import WebViewPlus from "@/components/WebViewPlus.vue";
    import {
        useTabAddButton
    } from "@/hooks/index.js";
    const sWebViewRef = ref(null);
    const viewUrl = getWebViewUrl('/work', {})
}
    function onPostMessage(data) {
        if (data.type === 'jumpMapNav') {
            uni.navigateTo({
                url: `/subPackages/workDetail/mapWork/index?currentItem=${data.eventNum}`
            });
        } else if (data.type === 'workid') {
            uni.navigateTo({
                url: `/subPackages/workDetail/index?eventNum=${data.eventNum}`
            });
        } else if (data.type === 'bigImage') {
            uni.navigateTo({
                url: `/subPackages/workDetail/photoMagnify/index?eventNum=${data.eventNum}`
            });
        }
    }
    const isApp = ref(false)
    onShow(() => {
    uni.setTabBarItem({
      index: 2, // Tab 的索引(从0开始)
      // text: '新建工单',
      visible: true,
      "pagePath": "subPackages/workDetail/addWork/index"
    });
    uni.setTabBarItem({
      index: 3, // Tab
      visible: false,
    });
      isApp.value = true
        uni.setTabBarItem({
            index: 2, // Tab 的索引(从0开始)
            // text: '新建工单',
            visible: true,
            "pagePath": "subPackages/workDetail/addWork/index"
        });
        uni.setTabBarItem({
            index: 3, // Tab
            visible: false,
        });
        isApp.value = true
    });
    onHide(() => {
      isApp.value = false
        isApp.value = false
    });
</script>
<style scoped lang="scss">
</style>
    .eventTickets {
        width: 100%;
        height: 100%;
        background: url('/src/static/images/user/allBg.svg') no-repeat center center;
        background-size: cover;
    }
</style>
src/subPackages/userDetail/infos/index.vue
@@ -25,8 +25,8 @@
            </div>
        </view>
        <view class="btngroup">
            <u-button color="#AEAEAE" round @click="reset">重置</u-button>
            <u-button color="#1D6FE9" round @click="submit">提交</u-button>
            <u-button color="#AEAEAE" class="custom-style" shape="circle" @click="reset">重置</u-button>
            <u-button color="#1D6FE9" class="custom-style" shape="circle" @click="submit">提交</u-button>
        </view>
    </view>
</template>
@@ -124,17 +124,13 @@
<style lang="scss" scoped>
    .container {
        width: 100%;
        // min-height: 100vh;
        width: 100%;
        height: 100%;
        display: flex;
        flex-direction: column;
        align-items: center;
        background: url('/src/static/images/user/allBg.svg') no-repeat center center;
        background-size: cover;
        background-attachment: fixed;
    }
@@ -147,13 +143,10 @@
    .detailBox {
        width: 351px;
        min-height: 215px;
        background: #FFFFFF;
        border-radius: 6px;
        box-shadow: 0 2px 10px rgba(0, 0, 0, 0.05);
        .orderRow {
            display: flex;
            justify-content: space-between;
@@ -162,7 +155,6 @@
            border-bottom: 1px solid #f5f5f5;
            color: #7b7b7b;
            padding: 0 12px;
            .rowTitle {
                font-family: Source Han Sans CN, Source Han Sans CN;
                font-weight: 400;
@@ -170,7 +162,6 @@
                color: #222324;
                white-space: nowrap;
            }
            ::v-deep .u-input {
                border: none !important;
                background: transparent !important;
@@ -191,4 +182,12 @@
        display: flex;
        margin-top: 120px;
    }
    .u-button:first-child{
        margin-right: 15px;
    }
    .custom-style {
        width: 138px;
        height: 38px;
    }
</style>
src/subPackages/userDetail/password/index.vue
@@ -20,8 +20,8 @@
            </div>
        </view>
        <view class="btngroup">
            <u-button color="#AEAEAE" round @click="reset">重置</u-button>
            <u-button color="#1D6FE9" round @click="submit">提交</u-button>
            <u-button color="#AEAEAE" class="custom-style" shape="circle" @click="reset">重置</u-button>
            <u-button color="#1D6FE9" class="custom-style" shape="circle" @click="submit">提交</u-button>
        </view>
    </view>
</template>
@@ -91,7 +91,7 @@
    .container {
        width: 100%;
        // min-height: 100vh;
        height: 100%;
        display: flex;
        flex-direction: column;
@@ -101,11 +101,12 @@
        background-size: cover;
        background-attachment: fixed;
        padding-top: 20px;
    }
    .detailBox {
        margin-top: 20px;
        width: 351px;
        min-height: 163px;
@@ -151,4 +152,12 @@
        display: flex;
        margin-top: 120px;
    }
    .u-button:first-child{
        margin-right: 15px;
    }
    .custom-style {
        width: 138px;
        height: 38px;
    }
</style>
src/subPackages/workDetail/index.vue
@@ -37,7 +37,10 @@
<style lang="scss" scoped>
    .workDetailContainer {
        padding: 0 10px;
width: 100%;
    height: 100%;
    background: url('/src/static/images/user/allBg.svg') no-repeat center center;
    background-size: cover;
        
    }