From 06a7a72a7b6dd4ef2c0c70314dfc3d1f99768c5d Mon Sep 17 00:00:00 2001 From: zhengyiming <540361168@qq.com> Date: 星期三, 12 二月 2025 17:41:34 +0800 Subject: [PATCH] fix: task --- apps/cMiniApp/src/subpackages/task/taskSubmitCheck/taskSubmitCheck.config.ts | 3 apps/cMiniApp/src/subpackages/task/taskCheckDetail/InnerPage.vue | 130 ++++++++++++++++++++++++++ apps/cMiniApp/src/subpackages/task/taskSubmitCheck/taskSubmitCheck.vue | 13 ++ apps/cMiniApp/src/assets/task/icon-localtion.png | 0 apps/cMiniApp/src/styles/var.scss | 2 apps/cMiniApp/src/pages/home/index.vue | 8 + apps/cMiniApp/src/subpackages/task/taskDetail/taskDetail.scss | 2 apps/cMiniApp/src/pages/task/InnerPage.vue | 5 apps/cMiniApp/src/assets/task/icon-phone.png | 0 apps/cMiniApp/project.private.config.json | 14 ++ apps/cMiniApp/src/assets/task/icon-attention.png | 0 apps/cMiniApp/src/assets/task/icon-attention-active.png | 0 apps/cMiniApp/src/subpackages/task/taskCheckDetail/taskCheckDetail.config.ts | 3 apps/cMiniApp/src/subpackages/task/taskCheckDetail/taskCheckDetail.vue | 13 ++ apps/cMiniApp/src/subpackages/task/taskDetail/InnerPage.vue | 6 apps/cMiniApp/src/subpackages/mine/editMineInfo/editMineInfo.vue | 2 apps/cMiniApp/src/constants/router.ts | 2 apps/cMiniApp/src/subpackages/task/taskSubmitCheck/InnerPage.vue | 50 ++++++++++ apps/cMiniApp/src/app.config.ts | 7 + packages/components/src/Calendar/Calendar.vue | 28 ++++- packages/components/src/Card/MyTaskCard.vue | 11 + 21 files changed, 283 insertions(+), 16 deletions(-) diff --git a/apps/cMiniApp/project.private.config.json b/apps/cMiniApp/project.private.config.json index c721439..9d3688a 100644 --- a/apps/cMiniApp/project.private.config.json +++ b/apps/cMiniApp/project.private.config.json @@ -9,6 +9,20 @@ "miniprogram": { "list": [ { + "name": "楠屾敹璇︽儏", + "pathName": "subpackages/task/taskCheckDetail/taskCheckDetail", + "query": "id=57a8f533-2a46-7a88-e008-3a1775810dd2", + "launchMode": "default", + "scene": null + }, + { + "name": "鎻愪氦楠屾敹", + "pathName": "subpackages/task/taskSubmitCheck/taskSubmitCheck", + "query": "id=57a8f533-2a46-7a88-e008-3a1775810dd2", + "launchMode": "default", + "scene": null + }, + { "name": "浠诲姟", "pathName": "pages/task/task", "query": "", diff --git a/apps/cMiniApp/src/app.config.ts b/apps/cMiniApp/src/app.config.ts index 3111eec..65b63e7 100644 --- a/apps/cMiniApp/src/app.config.ts +++ b/apps/cMiniApp/src/app.config.ts @@ -86,7 +86,12 @@ }, { root: 'subpackages/task', - pages: ['taskDetail/taskDetail', 'companyDetail/companyDetail'], + pages: [ + 'taskDetail/taskDetail', + 'companyDetail/companyDetail', + 'taskSubmitCheck/taskSubmitCheck', + 'taskCheckDetail/taskCheckDetail', + ], }, { root: 'subpackages/user', diff --git a/apps/cMiniApp/src/assets/task/icon-attention-active.png b/apps/cMiniApp/src/assets/task/icon-attention-active.png index b1c6265..a226f67 100644 --- a/apps/cMiniApp/src/assets/task/icon-attention-active.png +++ b/apps/cMiniApp/src/assets/task/icon-attention-active.png Binary files differ diff --git a/apps/cMiniApp/src/assets/task/icon-attention.png b/apps/cMiniApp/src/assets/task/icon-attention.png index eba95ca..81bdc6b 100644 --- a/apps/cMiniApp/src/assets/task/icon-attention.png +++ b/apps/cMiniApp/src/assets/task/icon-attention.png Binary files differ diff --git a/apps/cMiniApp/src/assets/task/icon-localtion.png b/apps/cMiniApp/src/assets/task/icon-localtion.png new file mode 100644 index 0000000..71784b5 --- /dev/null +++ b/apps/cMiniApp/src/assets/task/icon-localtion.png Binary files differ diff --git a/apps/cMiniApp/src/assets/task/icon-phone.png b/apps/cMiniApp/src/assets/task/icon-phone.png new file mode 100644 index 0000000..55a2b00 --- /dev/null +++ b/apps/cMiniApp/src/assets/task/icon-phone.png Binary files differ diff --git a/apps/cMiniApp/src/constants/router.ts b/apps/cMiniApp/src/constants/router.ts index e23d68a..2c320ea 100644 --- a/apps/cMiniApp/src/constants/router.ts +++ b/apps/cMiniApp/src/constants/router.ts @@ -12,6 +12,8 @@ taskDetail = '/subpackages/task/taskDetail/taskDetail', companyDetail = '/subpackages/task/companyDetail/companyDetail', + taskSubmitCheck = '/subpackages/task/taskSubmitCheck/taskSubmitCheck', + taskCheckDetail = '/subpackages/task/taskCheckDetail/taskCheckDetail', // userInfo = '/subpackages/setting/userInfo/userInfo', // setting = '/subpackages/setting/setting/setting', diff --git a/apps/cMiniApp/src/pages/home/index.vue b/apps/cMiniApp/src/pages/home/index.vue index 9be0cad..e8739cf 100644 --- a/apps/cMiniApp/src/pages/home/index.vue +++ b/apps/cMiniApp/src/pages/home/index.vue @@ -16,7 +16,7 @@ ></BlSearchbar> </div> <div class="city-btn" @click="goCitySelect"> - <Location2 :size="16" /> + <img :src="IconLocaltion" class="city-btn-icon" /> <div class="city-btn-text">{{ locationCity }}</div> </div> </div> @@ -73,6 +73,7 @@ import IconLogo from '@/assets/home/icon-logo.png'; import { TaskCard, ProTabs, ProTabPane } from '@12333/components'; import HomeQueryMenuView from './HomeQueryMenuView.vue'; +import IconLocaltion from '@/assets/task/icon-localtion.png'; const { locationCity } = useUser(); @@ -134,6 +135,11 @@ padding-left: 36px; color: boleGetCssVar('text-color', 'primary'); + .city-btn-icon { + width: 40px; + height: 40px; + } + .city-btn-text { max-width: 200px; @include ellipsis; diff --git a/apps/cMiniApp/src/pages/task/InnerPage.vue b/apps/cMiniApp/src/pages/task/InnerPage.vue index 159140e..a00811a 100644 --- a/apps/cMiniApp/src/pages/task/InnerPage.vue +++ b/apps/cMiniApp/src/pages/task/InnerPage.vue @@ -59,8 +59,11 @@ ); function goSubmitTaskDetail(item: API.FrontOrderList) { + // Taro.navigateTo({ + // url: `${RouterPath.taskSubmitCheck}?id=${item.id}`, + // }); Taro.navigateTo({ - url: `${RouterPath.taskDetail}?id=${item.id}`, + url: `${RouterPath.taskCheckDetail}?id=${item.id}`, }); } </script> diff --git a/apps/cMiniApp/src/styles/var.scss b/apps/cMiniApp/src/styles/var.scss index ee7a0b6..400367a 100644 --- a/apps/cMiniApp/src/styles/var.scss +++ b/apps/cMiniApp/src/styles/var.scss @@ -9,7 +9,7 @@ 'body-background-color': $body-background-color, 'title-color': #444444, 'shadow-color': rgba(0, 0, 0, 0.15), - 'warning': #ef9c00, + 'warning': #ff7d00, 'danger': #fe3333, 'success': #31b573, 'info': #e9e8e8, diff --git a/apps/cMiniApp/src/subpackages/mine/editMineInfo/editMineInfo.vue b/apps/cMiniApp/src/subpackages/mine/editMineInfo/editMineInfo.vue index 8485302..0f814db 100644 --- a/apps/cMiniApp/src/subpackages/mine/editMineInfo/editMineInfo.vue +++ b/apps/cMiniApp/src/subpackages/mine/editMineInfo/editMineInfo.vue @@ -1,5 +1,5 @@ <template> - <PageLayout class="index-page-wrapper" :title="'缂栬緫涓汉淇℃伅'"> + <PageLayout class="index-page-wrapper" :title="'缂栬緫涓汉淇℃伅'" has-border> <InnerPage></InnerPage> </PageLayout> </template> diff --git a/apps/cMiniApp/src/subpackages/task/taskCheckDetail/InnerPage.vue b/apps/cMiniApp/src/subpackages/task/taskCheckDetail/InnerPage.vue new file mode 100644 index 0000000..4979b79 --- /dev/null +++ b/apps/cMiniApp/src/subpackages/task/taskCheckDetail/InnerPage.vue @@ -0,0 +1,130 @@ +<template> + <ContentScrollView style="background-color: transparent"> + <MyTaskCard :showMyTaskArrow="false"></MyTaskCard> + <div class="taskCheckDetail-status-wrapper"> + <div class="taskCheckDetail-status-title">楠屾敹鐓х墖</div> + <div + class="taskCheckDetail-status" + :style="{ + color: Colors.Warning, + }" + > + 寰呴獙鏀� + </div> + </div> + <div class="taskCheckDetail-time">2024.11.14 9:28:39</div> + <nut-grid + square + :column-num="3" + :border="false" + :gutter="20" + v-if="list.length > 0" + class="taskCheckDetail-img-grid" + > + <nut-grid-item + v-for="(item, index) in list" + :key="item" + class="publish-circle-friend-file-grid-item" + > + <div class="taskCheckDetail-img-grid-item"> + <PreviewImage :src="item" class="taskCheckDetail-img" :urls="list" /> + </div> + </nut-grid-item> + </nut-grid> + </ContentScrollView> + <!-- <div class="taskCheckDetail-tips-wrapper"> + <div class="taskCheckDetail-tips-text">鎮ㄥ皻鏈粦瀹氶摱琛屽崱锛屾殏鏃舵棤娉曠粨绠楁湇鍔¤垂</div> + <div class="taskCheckDetail-tips-btn">绔嬪嵆缁戝畾閾惰鍗′俊鎭�</div> + </div> --> +</template> + +<script setup lang="ts"> +import { MyTaskCard, PreviewImage } from '@12333/components'; +import { Colors } from '@12333/constants'; + +defineOptions({ + name: 'InnerPage', +}); + +const list = ref([ + 'https://storage.360buyimg.com/jdc-article/NutUItaro34.jpg', + 'https://storage.360buyimg.com/jdc-article/NutUItaro2.jpg', + 'https://storage.360buyimg.com/jdc-article/welcomenutui.jpg', + 'https://storage.360buyimg.com/jdc-article/fristfabu.jpg', +]); +</script> + +<style lang="scss"> +@import '@/styles/common.scss'; + +.taskCheckDetail-page-wrapper { + .taskCheckDetail-status-wrapper { + display: flex; + align-items: center; + font-weight: 600; + font-size: 28px; + line-height: 32px; + margin-bottom: 16px; + + .taskCheckDetail-status-title { + color: boleGetCssVar('text-color', 'primary'); + flex: 1; + min-width: 0; + } + } + + .taskCheckDetail-time { + font-weight: 400; + font-size: 24px; + color: boleGetCssVar('text-color', 'regular'); + line-height: 36px; + margin-bottom: 22px; + } + + .taskCheckDetail-img-grid { + padding: 0 !important; + + .publish-circle-friend-file-grid-item { + .nut-grid-item__content--square { + padding: 0; + border: none; + display: block; + background-color: transparent; + } + } + + .taskCheckDetail-img-grid-item { + width: 100%; + height: 100%; + box-sizing: border-box; + position: relative; + padding: 20px; + } + + .taskCheckDetail-img { + border-radius: 8px; + width: 100% !important; + height: 100%; + object-fit: cover; + } + } + + .taskCheckDetail-tips-wrapper { + display: flex; + flex-direction: column; + align-items: center; + font-weight: 400; + font-size: 24px; + line-height: 32px; + padding: 20px 0; + + .taskCheckDetail-tips-text { + color: boleGetCssVar('text-color', 'secondary'); + } + + .taskCheckDetail-tips-btn { + color: boleGetCssVar('color', 'primary'); + } + } +} +</style> diff --git a/apps/cMiniApp/src/subpackages/task/taskCheckDetail/taskCheckDetail.config.ts b/apps/cMiniApp/src/subpackages/task/taskCheckDetail/taskCheckDetail.config.ts new file mode 100644 index 0000000..305fdb1 --- /dev/null +++ b/apps/cMiniApp/src/subpackages/task/taskCheckDetail/taskCheckDetail.config.ts @@ -0,0 +1,3 @@ +export default definePageConfig({ + disableScroll: true, +}); diff --git a/apps/cMiniApp/src/subpackages/task/taskCheckDetail/taskCheckDetail.vue b/apps/cMiniApp/src/subpackages/task/taskCheckDetail/taskCheckDetail.vue new file mode 100644 index 0000000..3d08fd1 --- /dev/null +++ b/apps/cMiniApp/src/subpackages/task/taskCheckDetail/taskCheckDetail.vue @@ -0,0 +1,13 @@ +<template> + <PageLayoutWithBg class="taskCheckDetail-page-wrapper" title="楠屾敹璇︽儏"> + <InnerPage /> + </PageLayoutWithBg> +</template> + +<script setup lang="ts"> +import InnerPage from './InnerPage.vue'; + +defineOptions({ + name: 'taskCheckDetail', +}); +</script> diff --git a/apps/cMiniApp/src/subpackages/task/taskDetail/InnerPage.vue b/apps/cMiniApp/src/subpackages/task/taskDetail/InnerPage.vue index 763c349..2226d4f 100644 --- a/apps/cMiniApp/src/subpackages/task/taskDetail/InnerPage.vue +++ b/apps/cMiniApp/src/subpackages/task/taskDetail/InnerPage.vue @@ -16,7 +16,7 @@ </div> <div class="taskDetail-address-wrapper"> <div class="taskDetail-address-title-wrapper"> - <img :src="IconAttentioActive" class="taskDetail-address-title-icon" /> + <img :src="IconLocaltion" class="taskDetail-address-title-icon" /> <div class="taskDetail-address-title">瀹佹尝鏌忔偊閰掑簵</div> </div> <div class="taskDetail-address-info-wrapper"> @@ -75,7 +75,7 @@ :isFlex="false" openType="share" ></PageFooterAction> - <PageFooterAction :icon="IconShare" text="鎵嬫満" :isFlex="false"></PageFooterAction> + <PageFooterAction :icon="IconPhone" text="鎵嬫満" :isFlex="false"></PageFooterAction> <PageFooterBtn type="primary">鎶ュ悕</PageFooterBtn> </PageFooter> </LoadingLayout> @@ -91,7 +91,9 @@ import IconAttentioActive from '@/assets/task/icon-attention-active.png'; import { RectRight } from '@nutui/icons-vue-taro'; import IconShare from '@/assets/task/icon-share.png'; +import IconPhone from '@/assets/task/icon-phone.png'; import IconSafe from '@/assets/task/icon-safe.png'; +import IconLocaltion from '@/assets/task/icon-localtion.png'; import './taskDetail.scss'; import TaskDetailWelfareItem from '../components/TaskDetailWelfareItem.vue'; import CompanyDesc from '../components/CompanyDesc.vue'; diff --git a/apps/cMiniApp/src/subpackages/task/taskDetail/taskDetail.scss b/apps/cMiniApp/src/subpackages/task/taskDetail/taskDetail.scss index 0d92c6c..779f63d 100644 --- a/apps/cMiniApp/src/subpackages/task/taskDetail/taskDetail.scss +++ b/apps/cMiniApp/src/subpackages/task/taskDetail/taskDetail.scss @@ -142,6 +142,4 @@ } } } - - } diff --git a/apps/cMiniApp/src/subpackages/task/taskSubmitCheck/InnerPage.vue b/apps/cMiniApp/src/subpackages/task/taskSubmitCheck/InnerPage.vue new file mode 100644 index 0000000..a7af757 --- /dev/null +++ b/apps/cMiniApp/src/subpackages/task/taskSubmitCheck/InnerPage.vue @@ -0,0 +1,50 @@ +<template> + <ContentScrollView :paddingH="false"> + <nut-form :model-value="form" ref="formRef" :rules="rules"> + <nut-form-item label="涓婁紶鐓х墖:" class="bole-form-item alignTop" prop="imgUrl" required> + <Uploader + v-model:file-list="form.imgUrl" + :maximum="9" + :limitFileSize="10" + class="bole-uploader nopaddingtop" + > + </Uploader> + </nut-form-item> + </nut-form> + </ContentScrollView> + <PageFooter :isOnlyAction="false"> + <PageFooterBtn type="primary" @click="handleSubmit()">鎻愪氦</PageFooterBtn> + </PageFooter> +</template> + +<script setup lang="ts"> +import { FormRules } from '@nutui/nutui-taro/dist/types/__VUE/form/types'; +import { FileItem } from '@nutui/nutui-taro/dist/types/__VUE/uploader/type'; +import { FormValidator } from '@12333/utils'; + +defineOptions({ + name: 'InnerPage', +}); + +const form = reactive({ + imgUrl: [] as FileItem[], +}); + +const rules = reactive<FormRules>({ + imgUrl: [{ required: true, message: '璇蜂笂浼犵収鐗�', validator: FormValidator.validatorArray }], +}); + +const formRef = ref<any>(null); + +function handleSubmit() { + if (!formRef.value) return; + formRef.value.validate().then(({ valid, errors }: any) => { + if (valid) { + } + }); +} +</script> + +<style lang="scss"> +@import '@/styles/common.scss'; +</style> diff --git a/apps/cMiniApp/src/subpackages/task/taskSubmitCheck/taskSubmitCheck.config.ts b/apps/cMiniApp/src/subpackages/task/taskSubmitCheck/taskSubmitCheck.config.ts new file mode 100644 index 0000000..305fdb1 --- /dev/null +++ b/apps/cMiniApp/src/subpackages/task/taskSubmitCheck/taskSubmitCheck.config.ts @@ -0,0 +1,3 @@ +export default definePageConfig({ + disableScroll: true, +}); diff --git a/apps/cMiniApp/src/subpackages/task/taskSubmitCheck/taskSubmitCheck.vue b/apps/cMiniApp/src/subpackages/task/taskSubmitCheck/taskSubmitCheck.vue new file mode 100644 index 0000000..1cede41 --- /dev/null +++ b/apps/cMiniApp/src/subpackages/task/taskSubmitCheck/taskSubmitCheck.vue @@ -0,0 +1,13 @@ +<template> + <PageLayout class="taskSubmitCheck-page-wrapper" title="鎻愪氦楠屾敹" has-border> + <InnerPage /> + </PageLayout> +</template> + +<script setup lang="ts"> +import InnerPage from './InnerPage.vue'; + +defineOptions({ + name: 'taskSubmitCheck', +}); +</script> diff --git a/packages/components/src/Calendar/Calendar.vue b/packages/components/src/Calendar/Calendar.vue index 251bdbb..c973d70 100644 --- a/packages/components/src/Calendar/Calendar.vue +++ b/packages/components/src/Calendar/Calendar.vue @@ -1,16 +1,17 @@ <template> <div class="bole-calendar-wrapper"> - <div class="bole-calendar-inner"> + <div :class="['bole-calendar-inner', { isCollapse }]"> <nut-calendar-card v-model="model" class="bole-calendar"></nut-calendar-card> </div> - <div class="bole-calendar-arrow"> - <DownArrow :size="12" /> + <div :class="['bole-calendar-arrow', { active: !isCollapse }]" @click="toggle"> + <DownArrow :size="12" :class="['bole-calendar-arrow-icon']" /> </div> </div> </template> <script setup lang="ts"> import { DownArrow } from '@nutui/icons-vue-taro'; +import { useToggle } from 'senin-mini/hooks'; defineOptions({ name: 'Calendar', @@ -20,6 +21,8 @@ // const props = withDefaults(defineProps<Props>(), {}); const model = defineModel<Date | Date[]>(); + +const { isCollapse, toggle } = useToggle(true); </script> <style lang="scss"> @@ -31,13 +34,28 @@ } .bole-calendar-inner { - height: 500px; - overflow: hidden; + overflow: auto; + transition: all 1s ease; + max-height: 2000px; + + &.isCollapse { + max-height: 500px; + } } .bole-calendar-arrow { display: flex; justify-content: center; + + .bole-calendar-arrow-icon { + transition: all 0.2s linear; + } + + &.active { + .bole-calendar-arrow-icon { + transform: rotate(180deg); + } + } } } </style> diff --git a/packages/components/src/Card/MyTaskCard.vue b/packages/components/src/Card/MyTaskCard.vue index 33e7a87..ecd1447 100644 --- a/packages/components/src/Card/MyTaskCard.vue +++ b/packages/components/src/Card/MyTaskCard.vue @@ -1,7 +1,8 @@ <template> <TaskCard v-bind="props" :show-actions="false" class="my-task-card-wrapper"> <template #title-right> - <RectRight :size="12" class="my-task-card-arrow" /> + <RectRight :size="12" class="my-task-card-arrow" v-if="showMyTaskArrow" /> + <div v-else></div> </template> <div class="my-task-card-time">2025骞�2鏈�5鏃� 鑷� 2025骞�3鏈�5鏃�</div> </TaskCard> @@ -16,7 +17,13 @@ name: 'MyTaskCard', }); -const props = withDefaults(defineProps<CommonTaskCardProps>(), {}); +type Props = CommonTaskCardProps & { + showMyTaskArrow?: boolean; +}; + +const props = withDefaults(defineProps<Props>(), { + showMyTaskArrow: true, +}); </script> <style lang="scss"> -- Gitblit v1.9.1