From 0d86b7da2c9341e009adeda25b75a7e01445c272 Mon Sep 17 00:00:00 2001 From: wupengfei <834520024@qq.com> Date: 星期一, 04 八月 2025 16:23:02 +0800 Subject: [PATCH] feat: mine --- apps/cMiniApp/src/subpackages/wallet/mineWallet/mineWallet.config.ts | 3 apps/cMiniApp/src/subpackages/wallet/bindBankCard/bindBankCard.vue | 18 + apps/cMiniApp/src/subpackages/wallet/unboundBankCard/InnerPage.vue | 135 +++++++++++ packages/components/src/List/IncomeDetailListItem.vue | 78 ++++++ apps/cMiniApp/src/subpackages/wallet/incomeDetail/incomeDetail.config.ts | 3 apps/cMiniApp/src/subpackages/wallet/mineWallet/mineWallet.vue | 18 + apps/cMiniApp/src/subpackages/wallet/incomeDetailInfo/InnerPage.vue | 84 +++++++ apps/bMiniApp/project.private.config.json | 2 apps/cMiniApp/src/subpackages/wallet/incomeDetailInfo/incomeDetailInfo.vue | 18 + apps/cMiniApp/src/subpackages/wallet/unboundBankCard/unboundBankCard.config.ts | 3 packages/components/src/index.ts | 1 apps/cMiniApp/src/subpackages/wallet/incomeDetail/incomeDetail.vue | 18 + apps/cMiniApp/src/constants/router.ts | 6 apps/cMiniApp/src/app.config.ts | 10 apps/cMiniApp/src/pages/mine/index.vue | 10 apps/cMiniApp/src/subpackages/wallet/bindBankCard/InnerPage.vue | 106 ++++++++ apps/cMiniApp/src/subpackages/wallet/mineWallet/InnerPage.vue | 52 ++++ apps/cMiniApp/project.private.config.json | 2 apps/cMiniApp/src/subpackages/wallet/incomeDetailInfo/incomeDetailInfo.config.ts | 3 apps/cMiniApp/src/subpackages/curriculum/mineCurriculumVitae/InnerPage.vue | 4 packages/services/api/typings.d.ts | 2 apps/bMiniApp/src/pages/mine/index.vue | 4 apps/cMiniApp/src/subpackages/wallet/unboundBankCard/unboundBankCard.vue | 17 + apps/cMiniApp/src/subpackages/wallet/incomeDetail/InnerPage.vue | 64 +++++ apps/cMiniApp/src/subpackages/wallet/bindBankCard/bindBankCard.config.ts | 3 25 files changed, 655 insertions(+), 9 deletions(-) diff --git a/apps/bMiniApp/project.private.config.json b/apps/bMiniApp/project.private.config.json index fab06fe..05123c7 100644 --- a/apps/bMiniApp/project.private.config.json +++ b/apps/bMiniApp/project.private.config.json @@ -81,5 +81,5 @@ ] } }, - "libVersion": "3.7.3" + "libVersion": "3.9.0" } \ No newline at end of file diff --git a/apps/bMiniApp/src/pages/mine/index.vue b/apps/bMiniApp/src/pages/mine/index.vue index 70e0c29..3dada20 100644 --- a/apps/bMiniApp/src/pages/mine/index.vue +++ b/apps/bMiniApp/src/pages/mine/index.vue @@ -42,7 +42,7 @@ <div class="mine-go-login" v-else>鍘荤櫥褰�</div> </div> </template> - <!-- <div class="mine-business-card"> + <div class="mine-business-card"> <div class="mine-business-card-item"> <img class="mine-business-card-item-icon" :src="IconBusinessCard" alt="" /> <div class="mine-business-card-item-text">鎴戠殑鐢靛瓙鍚嶇墖</div> @@ -50,7 +50,7 @@ <div class="mine-business-card-btn"> <nut-button type="info">閫掑悕鐗�</nut-button> </div> - </div> --> + </div> </UserHomeTopView> <template v-if="isLogin"> <div class="mine-content-record"> diff --git a/apps/cMiniApp/project.private.config.json b/apps/cMiniApp/project.private.config.json index 9961598..0c6b36b 100644 --- a/apps/cMiniApp/project.private.config.json +++ b/apps/cMiniApp/project.private.config.json @@ -60,5 +60,5 @@ ] } }, - "libVersion": "3.7.3" + "libVersion": "3.9.0" } \ No newline at end of file diff --git a/apps/cMiniApp/src/app.config.ts b/apps/cMiniApp/src/app.config.ts index 8599939..c605d13 100644 --- a/apps/cMiniApp/src/app.config.ts +++ b/apps/cMiniApp/src/app.config.ts @@ -83,6 +83,16 @@ ], }, { + root: 'subpackages/wallet', + pages: [ + 'mineWallet/mineWallet', + 'bindBankCard/bindBankCard', + 'unboundBankCard/unboundBankCard', + 'incomeDetail/incomeDetail', + 'incomeDetailInfo/incomeDetailInfo', + ], + }, + { root: 'subpackages/curriculum', pages: [ 'editMineInfo/editMineInfo', diff --git a/apps/cMiniApp/src/constants/router.ts b/apps/cMiniApp/src/constants/router.ts index 5ba6748..54ddfd1 100644 --- a/apps/cMiniApp/src/constants/router.ts +++ b/apps/cMiniApp/src/constants/router.ts @@ -37,6 +37,12 @@ mineAgreementSignDetail = '/subpackages/mine/mineAgreementSignDetail/mineAgreementSignDetail', setting = '/subpackages/mine/setting/setting', + mineWallet = '/subpackages/wallet/mineWallet/mineWallet', + unboundBankCard = '/subpackages/wallet/unboundBankCard/unboundBankCard', + bindBankCard = '/subpackages/wallet/bindBankCard/bindBankCard', + incomeDetail = '/subpackages/wallet/incomeDetail/incomeDetail', + incomeDetailInfo = '/subpackages/wallet/incomeDetailInfo/incomeDetailInfo', + mineCurriculumVitae = '/subpackages/curriculum/mineCurriculumVitae/mineCurriculumVitae', editMineInfo = '/subpackages/curriculum/editMineInfo/editMineInfo', mineJobIntention = '/subpackages/curriculum/mineJobIntention/mineJobIntention', diff --git a/apps/cMiniApp/src/pages/mine/index.vue b/apps/cMiniApp/src/pages/mine/index.vue index e07e7ce..24c681e 100644 --- a/apps/cMiniApp/src/pages/mine/index.vue +++ b/apps/cMiniApp/src/pages/mine/index.vue @@ -50,14 +50,14 @@ </UserHomeTopView> </ContentView> <ContentScrollView v-if="isLogin" class="mine-content-scroll-view"> - <!-- <List class="mine-list-wrapper mine-balance"> + <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"> + <div class="mine-balance-btn" @click="goMineWallet"> 杩涘叆鎴戠殑閽卞寘 <img :src="IconArrow" class="mine-balance-btn-icon" /> </div> - </List> --> + </List> <List class="mine-list-wrapper mine-order-list"> <div class="mine-order-list-title"> <div class="mine-order-list-title-text">鎴戠殑璁㈠崟</div> @@ -160,6 +160,10 @@ function goMineAgreementSign() { goPage(RouterPath.mineAgreementSign); } + +function goMineWallet() { + goPage(RouterPath.mineWallet); +} </script> <style lang="scss"> diff --git a/apps/cMiniApp/src/subpackages/curriculum/mineCurriculumVitae/InnerPage.vue b/apps/cMiniApp/src/subpackages/curriculum/mineCurriculumVitae/InnerPage.vue index c8b000e..28bdc57 100644 --- a/apps/cMiniApp/src/subpackages/curriculum/mineCurriculumVitae/InnerPage.vue +++ b/apps/cMiniApp/src/subpackages/curriculum/mineCurriculumVitae/InnerPage.vue @@ -40,7 +40,9 @@ </div> <div class="mine-curriculum-info-item-detail"> {{ - `${detail?.resumeBaseInfo?.age}宀� | ${detail?.resumeBaseInfo?.socialIdentityName} | ${detail?.resumeBaseInfo?.educationalLevelName}` + `${detail?.resumeBaseInfo?.age ?? ''}宀� | ${ + detail?.resumeBaseInfo?.socialIdentityName + } | ${detail?.resumeBaseInfo?.educationalLevelName}` }} </div> </div> diff --git a/apps/cMiniApp/src/subpackages/wallet/bindBankCard/InnerPage.vue b/apps/cMiniApp/src/subpackages/wallet/bindBankCard/InnerPage.vue new file mode 100644 index 0000000..0ac88a1 --- /dev/null +++ b/apps/cMiniApp/src/subpackages/wallet/bindBankCard/InnerPage.vue @@ -0,0 +1,106 @@ +<template> + <ContentScrollView> + <div class="bind-bank-card-wrapper"> + <div class="bg-left-top"></div> + <div class="bind-bank-card-content"> + <div class="bank-card-name">{{ '鎷涘晢閾惰' }}</div> + <div class="bank-card-number">{{ '**** **** **** 1234' }}</div> + <div class="bank-card-type">{{ '鍌ㄨ搫鍗�' }}</div> + </div> + <div class="bg-right-bottom"></div> + </div> + <div class="bind-bank-card-tips">鐩墠鍙敮鎸佷竴寮犻摱琛屽崱锛屽闇�鎹㈠崱璇峰厛瑙g粦</div> + </ContentScrollView> + <PageFooter :isOnlyAction="false"> + <PageFooterBtn type="primary" @click="handleUnbind()">瑙g粦閾惰鍗�</PageFooterBtn> + </PageFooter> +</template> + +<script setup lang="ts"> +import { useUserStore } from '@/stores/modules/user'; +import Taro from '@tarojs/taro'; + +defineOptions({ + name: 'InnerPage', +}); + +const userStore = useUserStore(); + +function handleUnbind() {} +</script> + +<style lang="scss"> +@import '@/styles/common.scss'; + +.bindBankCard-page-wrapper { + .bind-bank-card-wrapper { + margin: 20px auto 0; + width: 660px; + height: 360px; + padding: 60px 72px; + background: linear-gradient(134deg, #6c7ff6 0%, #7996f7 100%); + box-shadow: 0px 4 10px 5px rgba(122, 151, 248, 0.3); + border-radius: 22px; + position: relative; + box-sizing: border-box; + overflow: hidden; + + .bg-left-top { + position: absolute; + width: 148px; + height: 130px; + background-color: #7c8ef7; + top: 0; + left: 0; + border-radius: 0 0 148px 0; + z-index: 0; + } + + .bind-bank-card-content { + display: flex; + flex-direction: column; + justify-content: space-between; + height: 100%; + position: relative; + z-index: 1; + + .bank-card-name { + font-size: 40px; + font-weight: 600; + color: #ffffff; + } + + .bank-card-number { + font-size: 32px; + color: #ffffff; + font-weight: 600; + } + + .bank-card-type { + font-size: 24px; + font-weight: 400; + color: rgba(255, 255, 255, 0.5); + } + } + + .bg-right-bottom { + position: absolute; + width: 306px; + height: 306px; + background: #7d98f7; + left: 360px; + top: 180px; + border-radius: 50%; + z-index: 0; + } + } + + .bind-bank-card-tips { + margin: 66px auto 0; + font-size: 22px; + font-weight: 400; + text-align: center; + color: boleGetCssVar('text-color', 'secondary'); + } +} +</style> diff --git a/apps/cMiniApp/src/subpackages/wallet/bindBankCard/bindBankCard.config.ts b/apps/cMiniApp/src/subpackages/wallet/bindBankCard/bindBankCard.config.ts new file mode 100644 index 0000000..305fdb1 --- /dev/null +++ b/apps/cMiniApp/src/subpackages/wallet/bindBankCard/bindBankCard.config.ts @@ -0,0 +1,3 @@ +export default definePageConfig({ + disableScroll: true, +}); diff --git a/apps/cMiniApp/src/subpackages/wallet/bindBankCard/bindBankCard.vue b/apps/cMiniApp/src/subpackages/wallet/bindBankCard/bindBankCard.vue new file mode 100644 index 0000000..f3ee2e4 --- /dev/null +++ b/apps/cMiniApp/src/subpackages/wallet/bindBankCard/bindBankCard.vue @@ -0,0 +1,18 @@ +<template> + <PageLayout class="bindBankCard-page-wrapper" :title="'缁戝畾閾惰鍗�'"> + <InnerPage></InnerPage> + </PageLayout> +</template> + +<script setup lang="ts"> +import { PageLayout } from '@/components'; +import InnerPage from './InnerPage.vue'; + +defineOptions({ + name: 'bindBankCard', +}); +</script> + +<style lang="scss"> +@import '@/styles/common.scss'; +</style> diff --git a/apps/cMiniApp/src/subpackages/wallet/incomeDetail/InnerPage.vue b/apps/cMiniApp/src/subpackages/wallet/incomeDetail/InnerPage.vue new file mode 100644 index 0000000..1c4f0c5 --- /dev/null +++ b/apps/cMiniApp/src/subpackages/wallet/incomeDetail/InnerPage.vue @@ -0,0 +1,64 @@ +<template> + <List> + <IncomeDetailListItem :item="'鏀跺叆:锟�600.00'"> + <template #title> + <div class="income-detail-time-picker"> + <ChooseInputWithPicker v-model="form.month" :value-enum="TaskStatusText" /> + </div> + </template> + </IncomeDetailListItem> + <IncomeDetailListItem + :title="'鏀跺叆-瀹佹尝浜哄姏鏃犲咖'" + :item="'2024.12.20 13:30:30'" + :value="'+300.00'" + @click="goIncomeDetailInfo()" + > + </IncomeDetailListItem> + </List> +</template> + +<script setup lang="ts"> +import { List, IncomeDetailListItem, ChooseInputWithPicker } from '@12333/components'; +import { TaskStatusText, TaskStatus } from '@/constants'; +import { useUserStore } from '@/stores/modules/user'; +import Taro from '@tarojs/taro'; + +defineOptions({ + name: 'InnerPage', +}); + +const userStore = useUserStore(); + +const form = reactive({ + month: TaskStatus.All, +}); + +function goIncomeDetailInfo() { + Taro.navigateTo({ + url: `${RouterPath.incomeDetailInfo}`, + }); +} +</script> + +<style lang="scss"> +@import '@/styles/common.scss'; + +.incomeDetail-page-wrapper { + .income-detail-time-picker { + .nut-input { + border-bottom: none; + padding: 0; + + .input-text { + font-size: 20px; + font-weight: 500; + height: 28px; + } + + .nut-input-right-box { + display: none; + } + } + } +} +</style> diff --git a/apps/cMiniApp/src/subpackages/wallet/incomeDetail/incomeDetail.config.ts b/apps/cMiniApp/src/subpackages/wallet/incomeDetail/incomeDetail.config.ts new file mode 100644 index 0000000..305fdb1 --- /dev/null +++ b/apps/cMiniApp/src/subpackages/wallet/incomeDetail/incomeDetail.config.ts @@ -0,0 +1,3 @@ +export default definePageConfig({ + disableScroll: true, +}); diff --git a/apps/cMiniApp/src/subpackages/wallet/incomeDetail/incomeDetail.vue b/apps/cMiniApp/src/subpackages/wallet/incomeDetail/incomeDetail.vue new file mode 100644 index 0000000..9141308 --- /dev/null +++ b/apps/cMiniApp/src/subpackages/wallet/incomeDetail/incomeDetail.vue @@ -0,0 +1,18 @@ +<template> + <PageLayout class="incomeDetail-page-wrapper" :title="'鏀跺叆鏄庣粏'"> + <InnerPage></InnerPage> + </PageLayout> +</template> + +<script setup lang="ts"> +import { PageLayout } from '@/components'; +import InnerPage from './InnerPage.vue'; + +defineOptions({ + name: 'incomeDetail', +}); +</script> + +<style lang="scss"> +@import '@/styles/common.scss'; +</style> diff --git a/apps/cMiniApp/src/subpackages/wallet/incomeDetailInfo/InnerPage.vue b/apps/cMiniApp/src/subpackages/wallet/incomeDetailInfo/InnerPage.vue new file mode 100644 index 0000000..3b14523 --- /dev/null +++ b/apps/cMiniApp/src/subpackages/wallet/incomeDetailInfo/InnerPage.vue @@ -0,0 +1,84 @@ +<template> + <div class="income-detail-info-money"> + <div class="income-detail-info-money-value"> + <div class="income-detail-info-money-value-unit">锟�</div> + <div class="income-detail-info-money-value-num">{{ '33.33' }}</div> + </div> + <div class="income-detail-info-money-type">{{ '鏀跺叆' }}</div> + </div> + <List> + <ListItem title="娴佹按鍙�" :show-arrow="false"> + <template #extra> + <div class="income-detail-info-value">{{ '5893485943859843095843' }}</div> + </template> + </ListItem> + <ListItem title="浼佷笟鍚嶇О" :show-arrow="false"> + <template #extra> + <div class="income-detail-info-value">{{ '瀹佹尝浜哄姏鏃犲咖' }}</div> + </template> + </ListItem> + <ListItem title="缁撶畻鏃ユ湡" :show-arrow="false"> + <template #extra> + <div class="income-detail-info-value">{{ '2024.11.13' }}</div> + </template> + </ListItem> + <ListItem title="缁撶畻鍗曞唴瀹�" :show-arrow="false"> + <template #extra> + <div class="income-detail-info-value">{{ '33.33鍏�' }}</div> + </template> + </ListItem> + <ListItem title="缁撶畻鍗曞唴瀹�" :show-arrow="false"> + <template #extra> + <div class="income-detail-info-value">{{ '33.33鍏�' }}</div> + </template> + </ListItem> + </List> +</template> + +<script setup lang="ts"> +import { List, ListItem } from '@12333/components'; +import { useUserStore } from '@/stores/modules/user'; + +defineOptions({ + name: 'InnerPage', +}); + +const userStore = useUserStore(); +</script> + +<style lang="scss"> +@import '@/styles/common.scss'; + +.incomeDetailInfo-page-wrapper { + .income-detail-info-money { + display: flex; + align-items: center; + justify-content: center; + flex-direction: column; + background-color: #ffffff; + padding: 70px 0; + + .income-detail-info-money-value { + display: flex; + align-items: center; + font-weight: 600; + color: boleGetCssVar('text-color', 'primary'); + + .income-detail-info-money-value-unit { + font-size: 32px; + } + + .income-detail-info-money-value-num { + font-size: 64px; + } + } + + .income-detail-info-money-type { + margin-top: 10px; + font-weight: 400; + font-size: 28px; + color: boleGetCssVar('text-color', 'primary'); + } + } +} +</style> diff --git a/apps/cMiniApp/src/subpackages/wallet/incomeDetailInfo/incomeDetailInfo.config.ts b/apps/cMiniApp/src/subpackages/wallet/incomeDetailInfo/incomeDetailInfo.config.ts new file mode 100644 index 0000000..305fdb1 --- /dev/null +++ b/apps/cMiniApp/src/subpackages/wallet/incomeDetailInfo/incomeDetailInfo.config.ts @@ -0,0 +1,3 @@ +export default definePageConfig({ + disableScroll: true, +}); diff --git a/apps/cMiniApp/src/subpackages/wallet/incomeDetailInfo/incomeDetailInfo.vue b/apps/cMiniApp/src/subpackages/wallet/incomeDetailInfo/incomeDetailInfo.vue new file mode 100644 index 0000000..a318788 --- /dev/null +++ b/apps/cMiniApp/src/subpackages/wallet/incomeDetailInfo/incomeDetailInfo.vue @@ -0,0 +1,18 @@ +<template> + <PageLayout class="incomeDetailInfo-page-wrapper" :title="'鏀跺叆璇︽儏'"> + <InnerPage></InnerPage> + </PageLayout> +</template> + +<script setup lang="ts"> +import { PageLayout } from '@/components'; +import InnerPage from './InnerPage.vue'; + +defineOptions({ + name: 'incomeDetailInfo', +}); +</script> + +<style lang="scss"> +@import '@/styles/common.scss'; +</style> diff --git a/apps/cMiniApp/src/subpackages/wallet/mineWallet/InnerPage.vue b/apps/cMiniApp/src/subpackages/wallet/mineWallet/InnerPage.vue new file mode 100644 index 0000000..28ae10b --- /dev/null +++ b/apps/cMiniApp/src/subpackages/wallet/mineWallet/InnerPage.vue @@ -0,0 +1,52 @@ +<template> + <List> + <ListItem title="鏀跺叆鏄庣粏" @click="goIncomeDetail"> </ListItem> + <ListItem title="閾惰鍗�" @click="goBankBind"> + <template #extra> + <div class="bind-bank-card"> + {{ isBinding ? '宸茬粦瀹�' : '鏈粦瀹氥�佺珛鍗崇粦瀹�' }} + </div> + </template> + </ListItem> + </List> +</template> + +<script setup lang="ts"> +import { List, ListItem } from '@12333/components'; +import { useUserStore } from '@/stores/modules/user'; +import Taro from '@tarojs/taro'; +import { Message } from '@12333/utils'; + +defineOptions({ + name: 'InnerPage', +}); + +const userStore = useUserStore(); + +const isBinding = ref(false); + +function goIncomeDetail() { + Taro.navigateTo({ + url: `${RouterPath.incomeDetail}`, + }); +} +function goBankBind() { + // Message.confirm({ message: '瀹屾垚瀹炲悕璁よ瘉鍚庢墠鍙繘琛岄摱琛屽崱缁戝畾' }).then(() => { + // Taro.navigateTo({ + // url: `${RouterPath.authenticationHome}`, + // }); + // }); + Taro.navigateTo({ + url: `${isBinding.value ? RouterPath.bindBankCard : RouterPath.unboundBankCard}`, + }); +} +</script> + +<style lang="scss"> +@import '@/styles/common.scss'; + +.bind-bank-card { + color: boleGetCssVar('text-color', 'regular'); + font-size: 24px; +} +</style> diff --git a/apps/cMiniApp/src/subpackages/wallet/mineWallet/mineWallet.config.ts b/apps/cMiniApp/src/subpackages/wallet/mineWallet/mineWallet.config.ts new file mode 100644 index 0000000..305fdb1 --- /dev/null +++ b/apps/cMiniApp/src/subpackages/wallet/mineWallet/mineWallet.config.ts @@ -0,0 +1,3 @@ +export default definePageConfig({ + disableScroll: true, +}); diff --git a/apps/cMiniApp/src/subpackages/wallet/mineWallet/mineWallet.vue b/apps/cMiniApp/src/subpackages/wallet/mineWallet/mineWallet.vue new file mode 100644 index 0000000..2a730f7 --- /dev/null +++ b/apps/cMiniApp/src/subpackages/wallet/mineWallet/mineWallet.vue @@ -0,0 +1,18 @@ +<template> + <PageLayout class="mineWallet-page-wrapper" :title="'鎴戠殑閽卞寘'"> + <InnerPage></InnerPage> + </PageLayout> +</template> + +<script setup lang="ts"> +import { PageLayout } from '@/components'; +import InnerPage from './InnerPage.vue'; + +defineOptions({ + name: 'mineWallet', +}); +</script> + +<style lang="scss"> +@import '@/styles/common.scss'; +</style> diff --git a/apps/cMiniApp/src/subpackages/wallet/unboundBankCard/InnerPage.vue b/apps/cMiniApp/src/subpackages/wallet/unboundBankCard/InnerPage.vue new file mode 100644 index 0000000..46e5264 --- /dev/null +++ b/apps/cMiniApp/src/subpackages/wallet/unboundBankCard/InnerPage.vue @@ -0,0 +1,135 @@ +<template> + <ContentScrollView :paddingH="false"> + <nut-form :model-value="form" ref="formRef" :rules="rules"> + <nut-form-item label="鎸佸崱浜�:" class="bole-form-item" prop="name"> + <nut-input v-model.trim="form.name" placeholder="璇疯緭鍏ユ寔鍗′汉" /> + </nut-form-item> + <nut-form-item label="韬唤璇佸彿:" class="bole-form-item" prop="name"> + <nut-input v-model.trim="form.name" placeholder="璇疯緭鍏ヨ韩浠借瘉鍙�" /> + </nut-form-item> + <nut-form-item label="閾惰鍗″彿:" class="bole-form-item" prop="name"> + <nut-input v-model.trim="form.name" placeholder="璇疯緭鍏ラ摱琛屽崱鍙�" /> + </nut-form-item> + <nut-form-item label="寮�鎴疯:" class="bole-form-item" prop="name"> + <nut-input v-model.trim="form.name" placeholder="璇疯緭鍏ュ紑鎴疯" /> + </nut-form-item> + <nut-form-item label="鎵嬫満鍙�:" class="bole-form-item" prop="phoneNumber" required> + <nut-input + v-model.trim="form.phoneNumber" + class="nut-input-text bole-input-text" + placeholder="璇峰~鍐欑粡鍔炰汉鐨勬墜鏈哄彿鐮�" + type="text" + > + <template #right> + <ProFormCaptcha + :onGetCaptcha="() => onGetCaptcha(form.phoneNumber)" + phonePropName="phoneNumber" + :validateField="formRef?.validate" + ></ProFormCaptcha> + </template> + </nut-input> + </nut-form-item> + <nut-form-item label="鐭俊楠岃瘉鐮�:" class="bole-form-item" prop="verificationCode" required> + <nut-input + v-model.trim="form.verificationCode" + class="nut-input-text bole-input-text" + placeholder="璇疯緭鍏ラ獙璇佺爜" + type="number" + /> + </nut-form-item> + </nut-form> + </ContentScrollView> + <PageFooter> + <PageFooterBtn type="primary" @click="handleConfirm">缁戝畾閾惰鍗�</PageFooterBtn> + </PageFooter> +</template> + +<script setup lang="ts"> +import { FormRules } from '@nutui/nutui-taro/dist/types/__VUE/form/types'; +import { ProFormCaptcha } from 'senin-mini/components'; +import { Message } from '@12333/utils'; +import { VerificationCodeBusinessType } from '@12333/constants'; +import * as commonServices from '@12333/services/api/Common'; +import * as userResumeServices from '@12333/services/api/userResume'; +import Taro from '@tarojs/taro'; +import { useQuery } from '@tanstack/vue-query'; + +defineOptions({ + name: 'InnerPage', +}); + +const form = reactive({ + name: '', + phoneNumber: '', + verificationCode: '', +}); + +const { + isLoading, + isError, + data: detail, + refetch, +} = useQuery({ + queryKey: ['userResumeServices/getUserResumeBaseInfo'], + queryFn: async () => { + return await userResumeServices.getUserResumeBaseInfo({ + showLoading: false, + }); + }, + placeholderData: () => ({} as API.UserResumeBaseInfoOutput), + onSuccess(data) { + form.name = data.name; + form.phoneNumber = data.phoneNumber; + }, +}); + +const rules = reactive<FormRules>({ + name: [{ required: true, message: '璇疯緭鍏ユ寔鍗′汉' }], + phoneNumber: [{ required: true, message: '璇疯緭鍏ユ墜鏈哄彿' }], +}); + +async function onGetCaptcha(phoneNumber: string) { + await commonServices.sendPhoneCertificationVerificationCode( + { + name: form.name, + identity: form.name, + mobile: form.phoneNumber, + businessType: VerificationCodeBusinessType.UserCertificationPhoneCertification, + }, + { showLoading: false } + ); +} + +const formRef = ref<any>(null); +function handleConfirm() { + if (!formRef.value) return; + formRef.value.validate().then(({ valid, errors }: any) => { + if (valid) { + confirm(); + } + }); +} + +async function confirm() { + try { + let params: API.SaveUserResumeBaseInfoInput = { + name: form.name, + phoneNumber: form.phoneNumber, + }; + let res = await userResumeServices.saveUserResumeBaseInfo(params); + if (res) { + Message.success('淇濆瓨鎴愬姛', { + onClosed() { + Taro.navigateTo({ + url: `${RouterPath.mineCurriculumVitae}`, + }); + }, + }); + } + } catch (error) {} +} +</script> + +<style lang="scss"> +@import '@/styles/common.scss'; +</style> diff --git a/apps/cMiniApp/src/subpackages/wallet/unboundBankCard/unboundBankCard.config.ts b/apps/cMiniApp/src/subpackages/wallet/unboundBankCard/unboundBankCard.config.ts new file mode 100644 index 0000000..305fdb1 --- /dev/null +++ b/apps/cMiniApp/src/subpackages/wallet/unboundBankCard/unboundBankCard.config.ts @@ -0,0 +1,3 @@ +export default definePageConfig({ + disableScroll: true, +}); diff --git a/apps/cMiniApp/src/subpackages/wallet/unboundBankCard/unboundBankCard.vue b/apps/cMiniApp/src/subpackages/wallet/unboundBankCard/unboundBankCard.vue new file mode 100644 index 0000000..0108c1a --- /dev/null +++ b/apps/cMiniApp/src/subpackages/wallet/unboundBankCard/unboundBankCard.vue @@ -0,0 +1,17 @@ +<template> + <PageLayout class="unboundBankCard-page-wrapper" title="缁戝畾閾惰鍗�" has-border> + <InnerPage></InnerPage> + </PageLayout> +</template> + +<script setup lang="ts"> +import InnerPage from './InnerPage.vue'; + +defineOptions({ + name: 'unboundBankCard', +}); +</script> + +<style lang="scss"> +@import '@/styles/common.scss'; +</style> diff --git a/packages/components/src/List/IncomeDetailListItem.vue b/packages/components/src/List/IncomeDetailListItem.vue new file mode 100644 index 0000000..886542f --- /dev/null +++ b/packages/components/src/List/IncomeDetailListItem.vue @@ -0,0 +1,78 @@ +<template> + <div class="income-detail-list-item"> + <div class="income-detail-list-item-inner" :class="{ 'border-none': !showBorder }"> + <slot name="title"> + <div class="income-detail-list-item-title">{{ title }}</div> + </slot> + <div class="income-detail-list-item-content"> + <div class="income-detail-list-item-content-item">{{ item }}</div> + <div class="income-detail-list-item-content-value" v-if="showValue">{{ value }}</div> + </div> + </div> + </div> +</template> + +<script setup lang="ts"> +defineOptions({ + name: 'IncomeDetailListItem', +}); + +type Props = { + title?: string; + item?: string; + value?: string; + showValue?: boolean; + showBorder?: boolean; +}; + +const props = withDefaults(defineProps<Props>(), { + showValue: true, + showBorder: true, +}); +</script> + +<style lang="scss"> +@import '@/styles/common.scss'; + +.income-detail-list-item { + padding: 0 boleGetCssVar('size', 'body-padding-h'); + + .income-detail-list-item-inner { + padding: 24px 0 18px; + border-bottom: 1px solid #f6f6f6; + display: flex; + flex-direction: column; + + &.border-none { + border-bottom: none; + } + + .income-detail-list-item-title { + font-weight: 400; + font-size: 24px; + color: boleGetCssVar('text-color', 'primary'); + line-height: 34px; + } + + .income-detail-list-item-content { + display: flex; + justify-content: space-between; + align-items: center; + + .income-detail-list-item-content-item { + font-weight: 400; + font-size: 20px; + color: boleGetCssVar('text-color', 'secondary'); + line-height: 44px; + } + + .income-detail-list-item-content-value { + font-weight: 500; + font-size: 30px; + color: boleGetCssVar('text-color', 'primary'); + line-height: 44px; + } + } + } +} +</style> diff --git a/packages/components/src/index.ts b/packages/components/src/index.ts index 1d6af42..8702eca 100644 --- a/packages/components/src/index.ts +++ b/packages/components/src/index.ts @@ -8,6 +8,7 @@ export { default as ProTabPane } from './Tabs/ProTabPane.vue'; export { default as List } from './List/List.vue'; export { default as ListItem } from './List/ListItem.vue'; +export { default as IncomeDetailListItem } from './List/IncomeDetailListItem.vue'; export { default as NumberInput } from './Input/NumberInput.vue'; export { default as ChooseInputWithPicker } from './Input/ChooseInputWithPicker.vue'; export { default as ChooseInputWithDatePicker } from './Input/ChooseInputWithDatePicker.vue'; diff --git a/packages/services/api/typings.d.ts b/packages/services/api/typings.d.ts index 58ea6e5..b4ce2de 100644 --- a/packages/services/api/typings.d.ts +++ b/packages/services/api/typings.d.ts @@ -852,7 +852,7 @@ type FlexTaskSettleTypeEnum = 10 | 20 | 30; - type FlexTaskWorkerHireEnum = 10 | 20 | 30; + type FlexTaskWorkerHireEnum = 1 | 10 | 20 | 30 | 40; type FlexWorkerEleSignEnum = 10 | 20 | 30; -- Gitblit v1.9.1