| | |
| | | <template> |
| | | <Calendar v-model="queryMenuState.time"></Calendar> |
| | | <Calendar v-model="queryState.date"></Calendar> |
| | | <ProTabs |
| | | v-model="queryMenuState.checkReceiveStatus" |
| | | v-model="queryState.checkReceiveStatus" |
| | | name="task-tab" |
| | | :showPaneContent="false" |
| | | class="task-tabs" |
| | |
| | | title-gutter="8" |
| | | title-scroll |
| | | > |
| | | <ProTabPane :title="`待提交`" :pane-key="EnumTaskCheckReceiveStatus.Wait"></ProTabPane> |
| | | <ProTabPane :title="`待验收`" :pane-key="EnumTaskCheckReceiveStatus.Wait"></ProTabPane> |
| | | <ProTabPane :title="`待提交`" :pane-key="EnumTaskCheckReceiveStatus.WaitSubmit"></ProTabPane> |
| | | <ProTabPane |
| | | :title="`待验收`" |
| | | :pane-key="EnumTaskCheckReceiveStatus.WaitCheckReceive" |
| | | ></ProTabPane> |
| | | <ProTabPane :title="`已验收`" :pane-key="EnumTaskCheckReceiveStatus.Completed"></ProTabPane> |
| | | </ProTabs> |
| | | <InfiniteLoading |
| | | scrollViewClassName="common-infinite-scroll-list task-list" |
| | | v-bind="infiniteLoadingProps" |
| | | :key="queryMenuState.checkReceiveStatus" |
| | | :key="queryState.checkReceiveStatus" |
| | | > |
| | | <template #renderItem="{ item }"> |
| | | <MyTaskCard |
| | |
| | | <script setup lang="ts"> |
| | | import { MyTaskCard, ProTabs, ProTabPane, Calendar } from '@12333/components'; |
| | | import Taro from '@tarojs/taro'; |
| | | import { useTaskList } from '@12333/hooks'; |
| | | import { useCheckReceiveTasks, useTaskList } from '@12333/hooks'; |
| | | import { EnumTaskCheckReceiveStatus } from '@12333/constants'; |
| | | |
| | | defineOptions({ |
| | | name: 'InnerPage', |
| | | }); |
| | | |
| | | const { queryMenuState, infiniteLoadingProps } = useTaskList({ |
| | | defaultQueryMenuState: { |
| | | checkReceiveStatus: EnumTaskCheckReceiveStatus.Wait, |
| | | }, |
| | | }); |
| | | const { queryState, infiniteLoadingProps } = useCheckReceiveTasks(); |
| | | |
| | | function goSubmitTaskDetail(item: API.GetTaskInfosQueryResultItem) { |
| | | Taro.navigateTo({ |
| | | url: `${RouterPath.taskCheckDetail}?id=${item.id}`, |
| | | }); |
| | | function goSubmitTaskDetail(item: API.GetCheckReceiveTasksQueryResultItem) { |
| | | if (item.checkReceiveStatus === EnumTaskCheckReceiveStatus.WaitSubmit) { |
| | | Taro.navigateTo({ |
| | | url: `${RouterPath.taskSubmitCheck}?id=${item.id}`, |
| | | }); |
| | | } |
| | | if (item.checkReceiveStatus === EnumTaskCheckReceiveStatus.Completed) { |
| | | Taro.navigateTo({ |
| | | url: `${RouterPath.taskCheckDetail}?id=${item.id}`, |
| | | }); |
| | | } |
| | | } |
| | | </script> |
| | | |
| | |
| | | <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" |
| | | <InfiniteLoading |
| | | scrollViewClassName="common-infinite-scroll-list task-list" |
| | | v-bind="infiniteLoadingProps" |
| | | > |
| | | <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" /> |
| | | <template #renderItem="{ item }"> |
| | | <div class="taskCheckDetail-status-wrapper"> |
| | | <div class="taskCheckDetail-status-title">验收照片</div> |
| | | <div |
| | | class="taskCheckDetail-status" |
| | | :style="{ |
| | | color: Colors.Warning, |
| | | }" |
| | | > |
| | | 待验收 |
| | | </div> |
| | | </div> |
| | | </nut-grid-item> |
| | | </nut-grid> |
| | | <div class="taskCheckDetail-time">2024.11.14 9:28:39</div> |
| | | <nut-grid |
| | | square |
| | | :column-num="3" |
| | | :border="false" |
| | | :gutter="20" |
| | | v-if="item?.files?.length > 0" |
| | | class="taskCheckDetail-img-grid" |
| | | > |
| | | <nut-grid-item |
| | | v-for="(itema, index) in item.files" |
| | | :key="index" |
| | | class="publish-circle-friend-file-grid-item" |
| | | > |
| | | <div class="taskCheckDetail-img-grid-item"> |
| | | <PreviewImage |
| | | :src="setOSSLink(itema)" |
| | | class="taskCheckDetail-img" |
| | | :urls="item.files" |
| | | /> |
| | | </div> |
| | | </nut-grid-item> |
| | | </nut-grid> |
| | | </template> |
| | | </InfiniteLoading> |
| | | </ContentScrollView> |
| | | <!-- <div class="taskCheckDetail-tips-wrapper"> |
| | | <div class="taskCheckDetail-tips-text">您尚未绑定银行卡,暂时无法结算服务费</div> |
| | |
| | | <script setup lang="ts"> |
| | | import { MyTaskCard, PreviewImage } from '@12333/components'; |
| | | import { Colors } from '@12333/constants'; |
| | | import Taro from '@tarojs/taro'; |
| | | import { useCheckReceiveTaskUserSubmits } from '@12333/hooks'; |
| | | import { setOSSLink } from '@12333/utils'; |
| | | |
| | | 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', |
| | | ]); |
| | | const route = Taro.useRouter(); |
| | | const id = route.params?.id as string; |
| | | |
| | | const { infiniteLoadingProps } = useCheckReceiveTaskUserSubmits({ id: id }); |
| | | </script> |
| | | |
| | | <style lang="scss"> |
| | |
| | | <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> |
| | | <nut-form-item label="上传照片:" class="bole-form-item alignTop" prop="files" required> |
| | | <Uploader |
| | | v-model:file-list="form.imgUrl" |
| | | v-model:file-list="form.files" |
| | | :maximum="9" |
| | | :limitFileSize="10" |
| | | class="bole-uploader nopaddingtop" |
| | |
| | | <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'; |
| | | import { FormValidator, Message } from '@12333/utils'; |
| | | import * as taskCheckReceiveServices from '@12333/services/apiV2/taskCheckReceive'; |
| | | import Taro from '@tarojs/taro'; |
| | | import { goBack } from '@/utils'; |
| | | |
| | | defineOptions({ |
| | | name: 'InnerPage', |
| | | }); |
| | | |
| | | const route = Taro.useRouter(); |
| | | const id = route.params?.id as string; |
| | | |
| | | const form = reactive({ |
| | | imgUrl: [] as FileItem[], |
| | | files: [] as FileItem[], |
| | | }); |
| | | |
| | | const rules = reactive<FormRules>({ |
| | | imgUrl: [{ required: true, message: '请上传照片', validator: FormValidator.validatorArray }], |
| | | files: [{ required: true, message: '请上传照片', validator: FormValidator.validatorArray }], |
| | | }); |
| | | |
| | | const formRef = ref<any>(null); |
| | |
| | | if (!formRef.value) return; |
| | | formRef.value.validate().then(({ valid, errors }: any) => { |
| | | if (valid) { |
| | | submitCheckReceiveTask(); |
| | | } |
| | | }); |
| | | } |
| | | |
| | | async function submitCheckReceiveTask() { |
| | | try { |
| | | let params: API.SubmitCheckReceiveTaskCommand = { |
| | | taskInfoId: id, |
| | | files: form.files.map((x) => x.path), |
| | | }; |
| | | let res = await taskCheckReceiveServices.submitCheckReceiveTask(params); |
| | | if (res) { |
| | | Message.success('提交成功', { |
| | | onClosed() { |
| | | goBack(); |
| | | }, |
| | | }); |
| | | } |
| | | } catch (error) {} |
| | | } |
| | | </script> |
| | | |
| | | <style lang="scss"> |
| | |
| | | infiniteLoadingProps, |
| | | }; |
| | | } |
| | | |
| | | type UseCheckReceiveTaskUserSubmitsOptions = { |
| | | id?: string; |
| | | }; |
| | | |
| | | export function useCheckReceiveTaskUserSubmits( |
| | | options: UseCheckReceiveTaskUserSubmitsOptions = {} |
| | | ) { |
| | | const { id } = options; |
| | | const { infiniteLoadingProps } = useInfiniteLoading( |
| | | ({ pageParam }) => { |
| | | let params: API.GetCheckReceiveTaskUserSubmitsQuery = { |
| | | pageModel: { |
| | | rows: 20, |
| | | page: pageParam, |
| | | }, |
| | | id: id, |
| | | }; |
| | | |
| | | return taskCheckReceiveServices.getCheckReceiveTaskUserSubmits(params, { |
| | | showLoading: false, |
| | | }); |
| | | }, |
| | | { |
| | | queryKey: ['taskCheckReceiveServices/getCheckReceiveTaskUserSubmits', id], |
| | | } |
| | | ); |
| | | |
| | | return { |
| | | infiniteLoadingProps, |
| | | }; |
| | | } |