apps/cMiniApp/project.private.config.json
@@ -3,9 +3,20 @@ "projectname": "cMiniApp", "setting": { "compileHotReLoad": true, "bigPackageSizeSupport": true, "skylineRenderEnable": false "bigPackageSizeSupport": true }, "condition": {}, "condition": { "miniprogram": { "list": [ { "name": "", "pathName": "pages/mine/index", "query": "", "launchMode": "default", "scene": null } ] } }, "libVersion": "3.7.3" } apps/cMiniApp/src/assets/mine/icon-auth.png
apps/cMiniApp/src/assets/mine/icon-bg.pngBinary files differ
apps/cMiniApp/src/assets/mine/icon-card.pngBinary files differ
apps/cMiniApp/src/assets/mine/icon-edit.pngBinary files differ
apps/cMiniApp/src/assets/mine/icon-id-bg.pngBinary files differ
apps/cMiniApp/src/assets/mine/icon-lamp.pngBinary files differ
apps/cMiniApp/src/assets/mine/icon-menu-business.pngBinary files differ
apps/cMiniApp/src/assets/mine/icon-menu-contact.pngBinary files differ
apps/cMiniApp/src/assets/mine/icon-message.pngBinary files differ
apps/cMiniApp/src/assets/mine/icon-order-cancel.png
apps/cMiniApp/src/assets/mine/icon-order-hire.png
apps/cMiniApp/src/assets/mine/icon-order-sign.png
apps/cMiniApp/src/assets/mine/icon-unCertified.pngBinary files differ
apps/cMiniApp/src/components/UserHome/UserHomeTopView.vue
@@ -1,32 +1,17 @@ <template> <div class="mine-page-top-view"> <slot name="avatar"></slot> <div class="setting-wrapper" v-if="showUserHomePageBtn" @click="goUserHomePage"> <div class="setting-text">我的主页</div> <div class="setting-wrapper" v-if="showUserHomePageBtn" @click=""> <div class="setting-text"> 我的简历<IconFont name="rect-right" size="16" color="#6D6E6E"></IconFont> </div> </div> </div> <div class="mine-page-operation-wrapper" v-if="showOperation"> <div class="mine-page-operation-item" @click="goEditProfile"> <img class="mine-page-operation-item-icon" :src="IconEdit" /> <div class="mine-page-operation-item-text">编辑资料</div> <img class="mine-page-operation-item-arrow" :src="IconArrow" /> </div> <button class="mine-page-operation-item share" open-type="share"> <!-- <div class="mine-page-operation-item-inner"> --> <img class="mine-page-operation-item-icon" :src="IconCard" /> <div class="mine-page-operation-item-text">发送名片</div> <img class="mine-page-operation-item-arrow" :src="IconArrow" /> <!-- </div> --> </button> </div> </template> <script setup lang="ts"> import { useUser, useIsLogin } from '@/hooks'; import { useUser } from '@/hooks'; import Taro from '@tarojs/taro'; import IconEdit from '@/assets/mine/icon-edit.png'; import IconCard from '@/assets/mine/icon-card.png'; import IconArrow from '@/assets/mine/icon-arrow.png'; defineOptions({ name: 'UserHomeTopView', @@ -43,18 +28,6 @@ }); const { userDetail } = useUser(); function goUserHomePage() { Taro.navigateTo({ url: `${RouterPath.userHomePage}?userId=${userDetail.value?.userId}`, }); } function goEditProfile() { Taro.navigateTo({ url: RouterPath.userInfo, }); } </script> <style lang="scss"> @@ -66,28 +39,18 @@ margin-bottom: 20px; .setting-wrapper { height: 56px; background: rgba(#000, $alpha: 0.15); border-radius: 200px 0px 0px 200px; align-self: center; display: flex; align-items: center; margin-right: calc(boleGetCssVar('size', 'body-padding-h') * -1); padding-left: 24px; padding-right: 16px; .setting-icon { width: 32px; height: 32px; margin-right: 4px; margin-left: 32px; } .setting-text { font-weight: 400; font-size: 24px; color: #ffffff; line-height: 34px; font-size: 28px; display: flex; align-items: center; color: boleGetCssVar('text-color', 'primary'); padding-right: 20px; } } } apps/cMiniApp/src/pages/mine/index.scss
@@ -17,7 +17,7 @@ display: flex; .mine-avatar { margin-right: 24px; margin-right: 22px; } .user-info { @@ -25,43 +25,46 @@ min-width: 0; display: flex; flex-direction: column; padding: 12px 0; padding: 10px 0; justify-content: space-between; .user-info-item { font-weight: 600; font-size: 32px; color: #ffffff; font-size: 34px; color: boleGetCssVar('text-color', 'primary'); line-height: 44px; @include ellipsis; } .user-info-item2 { font-weight: 400; font-size: 24px; color: #ffffff; line-height: 34px; } .user-info-unCertified { .user-info-auth { display: inline-flex; align-items: center; height: 40px; background: #fffae0; border-radius: 4px; padding: 0 8px; width: fit-content; .user-info-auth-item { margin-right: 20px; display: inline-flex; align-items: center; .user-info-unCertified-icon { width: 28px; height: 28px; } .user-info-unCertified { display: inline-flex; align-items: center; height: 34px; width: fit-content; .user-info-unCertified-text { font-weight: 400; font-size: 22px; color: #a0541e; line-height: 24px; .user-info-unCertified-icon { width: 20px; height: 28px; margin-right: 6px; } .user-info-unCertified-text { font-weight: 400; font-size: 28px; color: boleGetCssVar('text-color', 'secondary'); } .user-info-unCertified-btn { font-weight: 400; font-size: 28px; color: boleGetCssVar('color', 'primary'); } } } } } @@ -75,77 +78,78 @@ .mine-content-scroll-view { padding-top: 26px; background-color: transparent; .mine-id-menu-wrapper { height: 124px; background: url('https://renliyuan.oss-cn-hangzhou.aliyuncs.com/12333/matchMakingMini/assets/mine/icon-id-bg.png') no-repeat; background-size: cover; display: flex; align-items: center; padding: 0 boleGetCssVar('size', 'body-padding-h'); margin-bottom: 24px; .mine-id-menu-icon { width: 24px; height: 36px; margin-right: 16px; } .mine-id-menu-text { font-weight: 400; font-size: 28px; color: #ffffff; line-height: 40px; flex: 1; min-width: 0; } .mine-id-menu-btn { width: 152px; height: 52px; background: #ffffff; border-radius: 26px; font-weight: bold; font-size: 24px; color: #444444; line-height: 52px; text-align: center; } } .mine-menu-list { display: flex; gap: 30px; margin-bottom: 24px; .mine-menu-list-item { flex: 1; min-width: 0; .mine-order-list { margin-bottom: 18px; padding: 0 24px; .mine-order-list-title { display: flex; align-items: center; height: 152px; background: #ffffff; border-radius: 8px; padding-left: 48px; .mine-menu-list-item-icon { width: 72px; height: 72px; margin-right: 24px; } .mine-menu-list-item-text { font-weight: 400; justify-content: space-between; border-bottom: 2px solid #eeeeee; padding: 24px 0; .mine-order-list-title-text { font-weight: 600; font-size: 28px; color: #333333; line-height: 40px; color: boleGetCssVar('text-color', 'primary'); line-height: 32px; } .mine-order-list-title-icon { width: 32px; height: 32px; } } .mine-order-list-content { padding: 24px 0; display: flex; justify-content: space-around; .mine-order-list-item { display: inline-flex; flex-direction: column; align-items: center; .mine-order-list-icon { width: 64px; height: 64px; } .mine-order-list-text { font-size: 28px; color: boleGetCssVar('text-color', 'primary'); } } } } .mine-setting-list { border-radius: 8px; .mine-balance { margin-bottom: 18px; padding: 24px; padding-left: 34px; .mine-balance-title { font-size: 30px; line-height: 42px; color: boleGetCssVar('text-color', 'primary'); margin-bottom: 16px; } .mine-balance-money { font-size: 48px; line-height: 68px; color: boleGetCssVar('text-color', 'primary'); } .mine-balance-btn { display: flex; align-items: center; justify-content: flex-end; font-size: 22px; color: boleGetCssVar('text-color', 'regular'); line-height: 36px; .mine-balance-btn-icon { width: 32px; height: 32px; } } } .mine-list-wrapper { border-radius: 12px; } } } apps/cMiniApp/src/pages/mine/index.vue
@@ -1,5 +1,5 @@ <template> <PageLayout class="mine-page-wrapper" :need-auth="false"> <PageLayoutWithBg class="mine-page-wrapper" :need-auth="false"> <template #navigationBar> <TransparentNavigationBar title="个人中心" @@ -14,15 +14,30 @@ <UserHomeTopView :showUserHomePageBtn="isLogin" :showOperation="isLogin"> <template #avatar> <div class="mine-avatar-wrapper" @click="goLogin"> <UserAvatar :size="60" class="mine-avatar" /> <UserAvatar :size="52" class="mine-avatar" /> <div class="user-info" v-if="isLogin"> <div class="user-info-item">{{ userDetail?.userName ?? '' }}</div> <div class="user-info-item2" v-if="isCertified"> {{ userDetail?.customerName ?? '' }} </div> <div class="user-info-unCertified" v-else @click.stop="goAuthentication"> <img :src="IconUnCertified" class="user-info-unCertified-icon" /> <div class="user-info-unCertified-text">未认证</div> <div class="user-info-auth"> <div class="user-info-auth-item"> <div class="user-info-unCertified" v-if="isCertified"> <div class="user-info-unCertified-text">未实名</div> <div class="user-info-unCertified-btn">立即实名</div> </div> <div class="user-info-unCertified" v-else @click.stop="goAuthentication"> <img :src="IconAuth" class="user-info-unCertified-icon" /> <div class="user-info-unCertified-text">已实名</div> </div> </div> <div class="user-info-auth-item"> <div class="user-info-unCertified" v-if="!isCertified"> <div class="user-info-unCertified-text">未认证</div> <div class="user-info-unCertified-btn">立即认证</div> </div> <div class="user-info-unCertified" v-else @click.stop="goAuthentication"> <img :src="IconAuth" class="user-info-unCertified-icon" /> <div class="user-info-unCertified-text">已认证</div> </div> </div> </div> </div> <div class="mine-go-login" v-else>去登录</div> @@ -31,34 +46,59 @@ </UserHomeTopView> </ContentView> <ContentScrollView v-if="isLogin" class="mine-content-scroll-view"> <div class="mine-id-menu-wrapper"> <img :src="IconLamp" class="mine-id-menu-icon" /> </div> <List class="mine-setting-list"> <List class="mine-list-wrapper mine-balance"> <div class="mine-balance-title">我的余额</div> <div class="mine-balance-money">¥{{ toThousand(100) }}</div> <div class="mine-balance-btn"> 进入我的钱包 <img :src="IconArrow" class="mine-balance-btn-icon" /> </div> </List> <List class="mine-list-wrapper mine-order-list"> <div class="mine-order-list-title"> <div class="mine-order-list-title-text">我的订单</div> <img :src="IconArrow" class="mine-order-list-title-icon" /> </div> <div class="mine-order-list-content"> <nut-badge class="mine-order-list-item" :value="8"> <img :src="IconOrderSign" class="mine-order-list-icon" /> <div class="mine-order-list-text">我的报名</div> </nut-badge> <nut-badge class="mine-order-list-item" :value="8"> <img :src="IconOrderHire" class="mine-order-list-icon" /> <div class="mine-order-list-text">已录用</div> </nut-badge> <nut-badge class="mine-order-list-item" :value="8"> <img :src="IconOrderCancel" class="mine-order-list-icon" /> <div class="mine-order-list-text">已取消</div> </nut-badge> </div> </List> <List class="mine-list-wrapper mine-setting-list"> <ListItem :icon="IconSetting" title="我收藏的任务" @click="goSetting"></ListItem> <ListItem :icon="IconSetting" title="协议签约" @click="goSetting"></ListItem> <ListItem :icon="IconSetting" title="设置" @click="goSetting"></ListItem> <ListItem :icon="IconSetting" title="我要招人/用人" @click="goSetting"></ListItem> </List> </ContentScrollView> </PageLayout> </PageLayoutWithBg> </template> <script setup lang="ts"> import { PageLayout, TransparentNavigationBar, ContentScrollView, UserHomeTopView, } from '@/components'; import IconUnCertified from '@/assets/mine/icon-unCertified.png'; import IconLamp from '@/assets/mine/icon-lamp.png'; import IconMenuBusiness from '@/assets/mine/icon-menu-business.png'; import IconMenuContact from '@/assets/mine/icon-menu-contact.png'; import { TransparentNavigationBar, ContentScrollView, UserHomeTopView } from '@/components'; import IconArrow from '@/assets/setting/icon-arrow.png'; import IconSetting from '@/assets/mine/icon-setting.png'; import IconMessage from '@/assets/mine/icon-message.png'; import IconOrderSign from '@/assets/mine/icon-order-sign.png'; import IconOrderHire from '@/assets/mine/icon-order-hire.png'; import IconOrderCancel from '@/assets/mine/icon-order-cancel.png'; import IconAuth from '@/assets/mine/icon-auth.png'; import { useUser, useIsLogin, useGoLogin } from '@/hooks'; import Taro from '@tarojs/taro'; import { RouterPath, OssAssets } from '@/constants'; import { List, ListItem } from '@12333/components'; import { useSystemStore } from '@/stores/modules/system'; import PageLayoutWithBg from '@/components/Layout/PageLayoutWithBg.vue'; import { toThousand } from '@12333/utils'; const { userDetail, isCertified } = useUser(); const isLogin = useIsLogin(); project.config.json
New file @@ -0,0 +1,29 @@ { "appid": "wx88251c84f5cd886b", "compileType": "miniprogram", "libVersion": "3.7.7", "packOptions": { "ignore": [], "include": [] }, "setting": { "coverView": true, "es6": true, "postcss": true, "minified": true, "enhance": true, "showShadowRootInWxmlPanel": true, "packNpmRelationList": [], "babelSetting": { "ignore": [], "disablePlugins": [], "outputPath": "" }, "condition": false }, "condition": {}, "editorSetting": { "tabIndent": "insertSpaces", "tabSize": 4 } } project.private.config.json
New file @@ -0,0 +1,7 @@ { "description": "项目私有配置文件。此文件中的内容将覆盖 project.config.json 中的相同字段。项目的改动优先同步到此文件中。详见文档:https://developers.weixin.qq.com/miniprogram/dev/devtools/projectconfig.html", "projectname": "flexJobMiniApp", "setting": { "compileHotReLoad": true } }