Merge branch 'master' of http://120.26.58.240:8888/r/flexJobMiniApp
| | |
| | | "query": "", |
| | | "launchMode": "default", |
| | | "scene": null |
| | | }, |
| | | { |
| | | "name": "", |
| | | "pathName": "subpackages/flexJobManage/flexJobManage/flexJobManage", |
| | | "query": "", |
| | | "launchMode": "default", |
| | | "scene": null |
| | | } |
| | | ] |
| | | } |
| | |
| | | }, |
| | | { |
| | | root: 'subpackages/flexJobManage', |
| | | pages: ['flexJobManage/flexJobManage', 'flexJobDetailFromManage/flexJobDetailFromManage'], |
| | | pages: [ |
| | | 'flexJobManage/flexJobManage', |
| | | 'flexJobDetailFromManage/flexJobDetailFromManage', |
| | | 'flexJobSign/flexJobSign', |
| | | ], |
| | | }, |
| | | ], |
| | | // preloadRule: { |
| | |
| | | |
| | | flexJobManage = '/subpackages/flexJobManage/flexJobManage/flexJobManage', |
| | | flexJobDetailFromManage = '/subpackages/flexJobManage/flexJobDetailFromManage/flexJobDetailFromManage', |
| | | flexJobSign = '/subpackages/flexJobManage/flexJobSign/flexJobSign', |
| | | |
| | | // userInfo = '/subpackages/setting/userInfo/userInfo', |
| | | // setting = '/subpackages/setting/setting/setting', |
| | |
| | | > |
| | | <nut-button type="primary" @click.stop="checkContract">查看合约</nut-button> |
| | | </template> |
| | | <nut-button v-else type="primary" @click.stop="goSignContract">签约</nut-button> |
| | | <nut-button v-else type="primary" @click.stop="goSignContract(item)">签约</nut-button> |
| | | </template> |
| | | </FlexJobCard> |
| | | </template> |
| | |
| | | |
| | | function checkContract() {} |
| | | function handleUnContract() {} |
| | | function goSignContract() {} |
| | | function goSignContract(item: API.FrontOrderList) { |
| | | Taro.navigateTo({ |
| | | url: `${RouterPath.flexJobSign}`, |
| | | }); |
| | | } |
| | | </script> |
| | | |
| | | <style lang="scss"> |
New file |
| | |
| | | <template> |
| | | <div class="searchbar-container"> |
| | | <BlSearchbar |
| | | v-model.trim="searchValue" |
| | | placeholder="搜索合同名/编号" |
| | | @search="handleSearch" |
| | | @change="handleSearch" |
| | | ></BlSearchbar> |
| | | <ChunkTitle title="合同列表" /> |
| | | </div> |
| | | |
| | | <InfiniteLoading |
| | | scrollViewClassName="common-infinite-scroll-list flexJobSign-list" |
| | | v-bind="infiniteLoadingProps" |
| | | > |
| | | <template #renderItem="{ item }"> |
| | | <SignCard @click="handleCheck(item)" v-model:checked-id="checkedId" :id="item.id"></SignCard> |
| | | </template> |
| | | </InfiniteLoading> |
| | | |
| | | <PageFooter> |
| | | <PageFooterBtn type="primary">邀请签约</PageFooterBtn> |
| | | </PageFooter> |
| | | </template> |
| | | |
| | | <script setup lang="ts"> |
| | | import { useInfiniteLoading } from '@12333/hooks'; |
| | | import { OrderInputType } from '@12333/constants'; |
| | | import * as orderServices from '@12333/services/api/Order'; |
| | | import _ from 'lodash'; |
| | | import { trim } from '@12333/utils'; |
| | | import { SignCard } from '@12333/components'; |
| | | |
| | | defineOptions({ |
| | | name: 'InnerPage', |
| | | }); |
| | | |
| | | const searchValue = ref(''); |
| | | const queryState = reactive({ |
| | | searchValueTrim: '', |
| | | }); |
| | | |
| | | const checkedId = ref(''); |
| | | |
| | | const handleSearch = _.debounce(function () { |
| | | queryState.searchValueTrim = trim(searchValue.value); |
| | | }, 300); |
| | | |
| | | const { infiniteLoadingProps } = useInfiniteLoading( |
| | | ({ pageParam }) => { |
| | | let params: API.FrontOrderListInput = { |
| | | pageModel: { |
| | | rows: 20, |
| | | page: pageParam, |
| | | orderInput: [{ property: 'isRecommend', order: OrderInputType.Desc }], |
| | | }, |
| | | }; |
| | | |
| | | return orderServices.getFrontOrderList(params, { |
| | | showLoading: false, |
| | | }); |
| | | }, |
| | | { |
| | | queryKey: ['orderServices/getFrontOrderList'], |
| | | } |
| | | ); |
| | | |
| | | function handleCheck(item: API.OrderInfoDto) { |
| | | checkedId.value = item.id; |
| | | } |
| | | </script> |
| | | |
| | | <style lang="scss"> |
| | | @import '@/styles/common.scss'; |
| | | |
| | | .flexJobSign-page-wrapper { |
| | | .searchbar-container { |
| | | padding: 30px 60px; |
| | | } |
| | | |
| | | .chunk-title-wrapper { |
| | | padding: 30px 10px 0; |
| | | } |
| | | |
| | | .flexJobSign-list { |
| | | .infinite-list-inner { |
| | | background-color: #ffffff; |
| | | padding: 0 30px; |
| | | border-radius: 12px; |
| | | } |
| | | } |
| | | } |
| | | </style> |
New file |
| | |
| | | export default definePageConfig({ |
| | | disableScroll: true, |
| | | }); |
New file |
| | |
| | | <template> |
| | | <PageLayoutWithBg class="flexJobSign-page-wrapper" :title="'签约'"> |
| | | <InnerPage></InnerPage> |
| | | </PageLayoutWithBg> |
| | | </template> |
| | | |
| | | <script setup lang="ts"> |
| | | import InnerPage from './InnerPage.vue'; |
| | | |
| | | defineOptions({ |
| | | name: 'flexJobSign', |
| | | }); |
| | | </script> |
| | | |
| | | <style lang="scss"> |
| | | @import '@/styles/common.scss'; |
| | | </style> |
New file |
| | |
| | | <template> |
| | | <div class="sign-card-wrapper"> |
| | | <div class="sign-card-title">{{ '合同编号:0293848340' }}</div> |
| | | <div class="sign-card-content"> |
| | | <div class="sign-card-content-name">{{ 'xxxx劳务公司合同' }}</div> |
| | | <div class="sign-card-content-icon"> |
| | | <IconFont v-if="selected" name="check-checked" color="#3A71FF" size="16"></IconFont> |
| | | <IconFont v-else name="check-normal" size="16"></IconFont> |
| | | </div> |
| | | </div> |
| | | </div> |
| | | </template> |
| | | |
| | | <script setup lang="ts"> |
| | | import { IconFont } from '@nutui/icons-vue-taro'; |
| | | import { computed } from 'vue'; |
| | | |
| | | defineOptions({ |
| | | name: 'SignCard', |
| | | }); |
| | | |
| | | type Props = { |
| | | checkedId?: string; |
| | | id: string; |
| | | }; |
| | | |
| | | const props = withDefaults(defineProps<Props>(), {}); |
| | | |
| | | const emit = defineEmits<{ |
| | | (e: 'update:checkedId', value: string): void; |
| | | }>(); |
| | | |
| | | const innerCheckedId = computed({ |
| | | get() { |
| | | return props.checkedId; |
| | | }, |
| | | set(val) { |
| | | emit('update:checkedId', val); |
| | | }, |
| | | }); |
| | | |
| | | const selected = computed(() => innerCheckedId.value === props.id); |
| | | </script> |
| | | |
| | | <style lang="scss"> |
| | | @import '@/styles/common.scss'; |
| | | |
| | | .sign-card-wrapper { |
| | | padding: 24px 24px 20px 10px; |
| | | border-bottom: 2px solid #f6f6f6; |
| | | |
| | | .sign-card-title { |
| | | font-size: 20px; |
| | | color: boleGetCssVar('text-color', 'secondary'); |
| | | margin-bottom: 14px; |
| | | } |
| | | |
| | | .sign-card-content { |
| | | display: flex; |
| | | align-items: center; |
| | | justify-content: space-between; |
| | | |
| | | .sign-card-content-name { |
| | | font-size: 24px; |
| | | line-height: 32px; |
| | | color: boleGetCssVar('text-color', 'primary'); |
| | | } |
| | | |
| | | .sign-card-content-icon { |
| | | width: 32px; |
| | | height: 32px; |
| | | } |
| | | } |
| | | } |
| | | </style> |
| | |
| | | export { default as MineAgreementSignCard } from './Card/MineAgreementSignCard.vue'; |
| | | export { default as JobApplicationCard } from './Card/JobApplicationCard.vue'; |
| | | export { default as MyTaskCard } from './Card/MyTaskCard.vue'; |
| | | export { default as SignCard } from './Card/SignCard.vue'; |
| | | export { default as FlexJobCard } from './Card/FlexJobCard.vue'; |
| | | export { default as TaskPrice } from './Card/TaskPrice.vue'; |
| | | export { default as TaskDetailWelfareItem } from './Card/TaskDetailWelfareItem.vue'; |