From 79945d68582b3038bb3c7617fb53394884ad0ac0 Mon Sep 17 00:00:00 2001 From: zhengyiming <540361168@qq.com> Date: 星期三, 12 二月 2025 17:41:56 +0800 Subject: [PATCH] Merge branch 'master' of http://120.26.58.240:8888/r/flexJobMiniApp --- apps/cMiniApp/src/subpackages/mine/mineJobIntention/mineJobIntention.config.ts | 3 apps/cMiniApp/src/subpackages/mine/mineAgreementSign/InnerPage.vue | 22 - apps/cMiniApp/src/subpackages/mine/mineCertificateAddOrEdit/mineCertificateAddOrEdit.vue | 17 + apps/cMiniApp/src/subpackages/mine/mineWorkExperience/mineWorkExperience.config.ts | 3 apps/cMiniApp/src/subpackages/mine/mineDetailedInfo/InnerPage.vue | 61 +++++ apps/cMiniApp/src/subpackages/mine/mineSign/InnerPage.vue | 16 apps/cMiniApp/src/subpackages/mine/mineDetailedInfo/mineDetailedInfo.config.ts | 3 packages/components/src/index.ts | 1 apps/cMiniApp/src/subpackages/mine/mineCertificateAddOrEdit/InnerPage.vue | 120 ++++++++++ apps/cMiniApp/src/subpackages/mine/mineJobIntention/mineJobIntention.vue | 17 + apps/cMiniApp/src/constants/router.ts | 5 apps/cMiniApp/src/app.config.ts | 5 apps/cMiniApp/src/pages/mine/index.vue | 4 apps/cMiniApp/src/subpackages/mine/mineWorkExperience/InnerPage.vue | 35 ++ apps/cMiniApp/src/constants/index.ts | 1 apps/cMiniApp/src/subpackages/mine/mineCertificate/mineCertificate.vue | 17 + packages/components/src/Input/ChooseInputWithDatePicker.vue | 58 ++++ apps/cMiniApp/src/subpackages/mine/editMineInfo/InnerPage.vue | 38 ++- apps/cMiniApp/src/subpackages/mine/mineCertificate/InnerPage.vue | 43 +++ apps/cMiniApp/src/subpackages/mine/mineCollectTask/InnerPage.vue | 6 apps/cMiniApp/project.private.config.json | 23 - apps/cMiniApp/src/subpackages/mine/mineDetailedInfo/mineDetailedInfo.vue | 17 + apps/cMiniApp/src/subpackages/mine/mineHire/InnerPage.vue | 18 apps/cMiniApp/src/constants/task.ts | 19 + apps/cMiniApp/src/subpackages/mine/mineJobIntention/InnerPage.vue | 66 +++++ /dev/null | 16 - apps/cMiniApp/src/subpackages/mine/mineCertificate/mineCertificate.config.ts | 3 apps/cMiniApp/src/subpackages/mine/mineCertificateAddOrEdit/mineCertificateAddOrEdit.config.ts | 3 apps/cMiniApp/src/subpackages/mine/mineWorkExperience/mineWorkExperience.vue | 17 + apps/cMiniApp/src/subpackages/mine/mineCurriculumVitae/InnerPage.vue | 31 ++ 30 files changed, 594 insertions(+), 94 deletions(-) diff --git a/apps/cMiniApp/project.private.config.json b/apps/cMiniApp/project.private.config.json index 9d3688a..d5e0ebd 100644 --- a/apps/cMiniApp/project.private.config.json +++ b/apps/cMiniApp/project.private.config.json @@ -30,29 +30,8 @@ "scene": null }, { - "name": "鍏徃璇︽儏", - "pathName": "subpackages/task/companyDetail/companyDetail", - "query": "id=c4cfe028-23e7-0be8-ee56-3a11e3743b9d", - "launchMode": "default", - "scene": null - }, - { - "name": "浠诲姟璇︽儏", - "pathName": "subpackages/task/taskDetail/taskDetail", - "query": "id=c4cfe028-23e7-0be8-ee56-3a11e3743b9d", - "launchMode": "default", - "scene": null - }, - { "name": "", - "pathName": "pages/mine/index", - "query": "", - "launchMode": "default", - "scene": null - }, - { - "name": "", - "pathName": "subpackages/mine/mineCurriculumVitae/mineCurriculumVitae", + "pathName": "subpackages/mine/mineCertificateAddOrEdit/mineCertificateAddOrEdit", "query": "", "launchMode": "default", "scene": null diff --git a/apps/cMiniApp/src/app.config.ts b/apps/cMiniApp/src/app.config.ts index 65b63e7..76e08c2 100644 --- a/apps/cMiniApp/src/app.config.ts +++ b/apps/cMiniApp/src/app.config.ts @@ -81,6 +81,11 @@ 'mineAgreementSignDetail/mineAgreementSignDetail', 'mineCurriculumVitae/mineCurriculumVitae', 'editMineInfo/editMineInfo', + 'mineJobIntention/mineJobIntention', + 'mineWorkExperience/mineWorkExperience', + 'mineCertificate/mineCertificate', + 'mineCertificateAddOrEdit/mineCertificateAddOrEdit', + 'mineDetailedInfo/mineDetailedInfo', 'setting/setting', ], }, diff --git a/apps/cMiniApp/src/components/Input/ChooseInput.vue b/apps/cMiniApp/src/components/Input/ChooseInput.vue deleted file mode 100644 index 6486c46..0000000 --- a/apps/cMiniApp/src/components/Input/ChooseInput.vue +++ /dev/null @@ -1,37 +0,0 @@ -<template> - <nut-input - class="nut-input-text bole-input-text" - type="text" - readonly - alwaysEmbed - v-bind="$attrs" - > - <template #clear> - <slot name="clear"></slot> - </template> - <template #right> - <slot name="right"> - <RectRight :size="12" class="common-choose-input-icon" /> - </slot> - </template> - </nut-input> -</template> - -<script setup lang="ts"> -import { RectRight } from '@nutui/icons-vue-taro'; - -defineOptions({ - name: 'ChooseInput', -}); -</script> - -<style lang="scss"> -@import '@/styles/common.scss'; - -.common-choose-input-icon { - // width: 13px; - // height: 23px; - margin-left: 18px; - color: boleGetCssVar('text-color', 'primary'); -} -</style> diff --git a/apps/cMiniApp/src/components/Input/ChooseInputWithAreaPicker.vue b/apps/cMiniApp/src/components/Input/ChooseInputWithAreaPicker.vue deleted file mode 100644 index b7eaec8..0000000 --- a/apps/cMiniApp/src/components/Input/ChooseInputWithAreaPicker.vue +++ /dev/null @@ -1,76 +0,0 @@ -<template> - <ChooseInput :modelValue="inputValue" @click="handleOpen()"></ChooseInput> -</template> - -<script setup lang="ts"> -import { useAllAreaList } from '@/hooks'; -import Portal from '../Portal'; -import ChooseInput from './ChooseInput.vue'; -import { Popup, Picker } from '@nutui/nutui-taro'; - -defineOptions({ - name: 'ChooseInputWithAreaPicker', -}); - -const { findAreaNameFromCode } = useAllAreaList(); - -type Props = { - fieldNames?: object; - columns: API.AreaTreeNode[]; - modelValue: Array<string | number>; - title?: string; -}; - -const props = withDefaults(defineProps<Props>(), { - title: '閫夋嫨鍦板潃', - fieldNames: () => ({ - text: 'areaName', - value: 'areaCode', - children: 'children', - }), -}); -const inputValue = computed(() => - props.modelValue.map((x) => findAreaNameFromCode(Number(x))).join(',') -); - -const emit = defineEmits<{ - (e: 'update:modelValue', val: Array<string | number>): void; -}>(); - -function handleOpen() { - Portal.add((key) => { - return h( - Portal.Container, - { keyNumber: key, delayOpen: true }, - { - default: ({ open, onClose }) => - h( - Popup, - { - visible: open.value, - 'onUpdate:visible': (value) => !value && onClose(), - position: 'bottom', - }, - { - default: () => - h(Picker, { - modelValue: props.modelValue, - columns: props.columns, - fieldNames: props.fieldNames, - title: props.title, - onCancel: onClose, - onConfirm: ({ selectedValue, selectedOptions }) => { - emit( - 'update:modelValue', - selectedOptions.map((x) => x.areaCode) - ); - onClose(); - }, - }), - } - ), - } - ); - }); -} -</script> diff --git a/apps/cMiniApp/src/components/Input/ChooseInputWithPicker.vue b/apps/cMiniApp/src/components/Input/ChooseInputWithPicker.vue deleted file mode 100644 index 572583a..0000000 --- a/apps/cMiniApp/src/components/Input/ChooseInputWithPicker.vue +++ /dev/null @@ -1,72 +0,0 @@ -<template> - <ChooseInput :modelValue="inputValue" @click="handleOpen()"></ChooseInput> -</template> - -<script setup lang="ts"> -import Portal from '../Portal'; -import ChooseInput from './ChooseInput.vue'; -import { Popup, Picker } from '@nutui/nutui-taro'; -import { convertOptions, ValueEnum } from './input'; - -defineOptions({ - name: 'ChooseInputWithPicker', -}); - -type Props = { - enumLabelKey?: string; - enumValueKey?: string; - valueEnum?: ValueEnum; - modelValue: string | number; -}; - -const props = withDefaults(defineProps<Props>(), { - enumLabelKey: 'name', - enumValueKey: 'id', -}); - -const emit = defineEmits<{ - (e: 'update:modelValue', val: string | number): void; -}>(); - -const options = computed(() => - convertOptions(props.valueEnum, props.enumLabelKey, props.enumValueKey) -); - -const inputValue = computed( - () => options.value?.find((x) => x.value === props.modelValue)?.text ?? '' -); - -function handleOpen() { - const _modelValue = [props.modelValue]; - Portal.add((key) => { - return h( - Portal.Container, - { keyNumber: key, delayOpen: true }, - { - default: ({ open, onClose }) => - h( - Popup, - { - visible: open.value, - 'onUpdate:visible': (value) => !value && onClose(), - position: 'bottom', - }, - { - default: () => - h(Picker, { - modelValue: _modelValue, - columns: options.value, - onCancel: onClose, - onConfirm: ({ selectedValue, selectedOptions }) => { - console.log('selectedValue: ', selectedValue, selectedOptions); - emit('update:modelValue', selectedOptions[0].value); - onClose(); - }, - }), - } - ), - } - ); - }); -} -</script> diff --git a/apps/cMiniApp/src/components/Input/NumberInput.vue b/apps/cMiniApp/src/components/Input/NumberInput.vue deleted file mode 100644 index 05ba733..0000000 --- a/apps/cMiniApp/src/components/Input/NumberInput.vue +++ /dev/null @@ -1,55 +0,0 @@ -<template> - <nut-input type="number" :formatter="formatter" formatTrigger="onBlur"> - <template #right> - <slot name="right"></slot> - </template> - </nut-input> -</template> - -<script setup lang="ts"> -defineOptions({ - name: 'NumberInput', -}); - -type Props = { - min?: number; - max?: number; - precision?: number; -}; - -const props = withDefaults(defineProps<Props>(), { - max: Math.pow(2, 53) - 1, -}); - -function formatter(value: string): string { - const newVal = value !== '' ? Number.parseFloat(value) : ''; - if (Number.isNaN(newVal)) { - return ''; - } - if (newVal && newVal > props.max) { - return `${toPrecision(props.max)}`; - } - if (props.min !== undefined && newVal && newVal < props.min) { - return `${toPrecision(props.min)}`; - } - return newVal !== '' ? `${toPrecision(newVal)}` : newVal; -} - -function toPrecision(num: number) { - if (props.precision) { - if (props.precision === 0) return Math.round(num); - let snum = String(num); - const pointPos = snum.indexOf('.'); - if (pointPos === -1) return num; - const nums = snum.replace('.', '').split(''); - const datum = nums[pointPos + props.precision]; - if (!datum) return num; - const length = snum.length; - if (snum.charAt(length - 1) === '5') { - snum = `${snum.slice(0, Math.max(0, length - 1))}6`; - } - return Number(snum).toFixed(props.precision); - } - return String(num); -} -</script> diff --git a/apps/cMiniApp/src/components/Input/input.ts b/apps/cMiniApp/src/components/Input/input.ts deleted file mode 100644 index d1a5309..0000000 --- a/apps/cMiniApp/src/components/Input/input.ts +++ /dev/null @@ -1,31 +0,0 @@ -import _ from 'lodash'; - -export type ValueEnumItem = { [key: string]: any }; -export type ValueEnum = ValueEnumItem[] | Record<string | number, string>; -export type OptionItem = { - text: string; - value: string | number; - [key: string]: any; -}; - -export function convertOptions( - valueEnum: ValueEnum, - enumLabelKey: string, - enumValueKey: string -): OptionItem[] { - return _.isArray(valueEnum) - ? valueEnum.map((x) => ({ - ...x, - text: x[enumLabelKey], - value: _.isNaN(Number(x[enumValueKey])) ? x[enumValueKey] : Number(x[enumValueKey]), - })) - : Object.keys(valueEnum).map((x) => ({ - value: _.isNaN(Number(x)) ? x : Number(x), - text: valueEnum[x], - })); -} - -export type ChooseCheckBoxOptionItem = { - text: string; - value: string | number; -}; diff --git a/apps/cMiniApp/src/components/Portal/Portal.vue b/apps/cMiniApp/src/components/Portal/Portal.vue deleted file mode 100644 index 06d5c1a..0000000 --- a/apps/cMiniApp/src/components/Portal/Portal.vue +++ /dev/null @@ -1,19 +0,0 @@ -<template> - <PortalConsumer :manager="portalContext"> - <template #default> - <slot /> - </template> - </PortalConsumer> -</template> - -<script setup lang="ts"> -import PortalConsumer from './portal-consumer.vue'; -// import PortalContainer from './portal-container'; -import { portal, usePortalContext } from './portal'; - -defineOptions({ - name: 'Portal', -}); - -const portalContext = usePortalContext(); -</script> diff --git a/apps/cMiniApp/src/components/Portal/PortalManager.vue b/apps/cMiniApp/src/components/Portal/PortalManager.vue deleted file mode 100644 index 4f0a6cd..0000000 --- a/apps/cMiniApp/src/components/Portal/PortalManager.vue +++ /dev/null @@ -1,44 +0,0 @@ -<script lang="ts"> -import { State, PortalNode } from './portal'; - -export default defineComponent({ - name: 'PortalManager', - setup(props, { expose }) { - const state = reactive<State>({ - portals: [], - }); - - const mount = (key: number, children: PortalNode) => { - state.portals.push({ key, children }); - }; - const update = (key: number, children: PortalNode) => { - state.portals = state.portals.map((item) => { - if (item.key === key) { - return { ...item, children }; - } - return item; - }); - }; - - const unmount = (key: number) => { - state.portals = state.portals.filter((item) => item.key !== key); - }; - - expose({ - mount, - update, - unmount, - }); - - return () => { - return h( - 'div', - null, - state.portals.map((item) => { - return h('div', { key: item.key }, [item.children]); - }) - ); - }; - }, -}); -</script> diff --git a/apps/cMiniApp/src/components/Portal/index.ts b/apps/cMiniApp/src/components/Portal/index.ts deleted file mode 100644 index 29fbcf8..0000000 --- a/apps/cMiniApp/src/components/Portal/index.ts +++ /dev/null @@ -1,12 +0,0 @@ -import PortalContainer from './portal-container.vue'; -import PortalHost from './portal-host.vue'; -import { portal } from './portal'; -import Portal from './Portal.vue'; - -export default { - Host: PortalHost, - add: portal.add, - remove: portal.remove, - Portal: Portal, - Container: PortalContainer, -}; diff --git a/apps/cMiniApp/src/components/Portal/portal-consumer.vue b/apps/cMiniApp/src/components/Portal/portal-consumer.vue deleted file mode 100644 index ba1a582..0000000 --- a/apps/cMiniApp/src/components/Portal/portal-consumer.vue +++ /dev/null @@ -1,37 +0,0 @@ -<script lang="ts"> -import { PortalMethods } from './portal'; - -export default defineComponent({ - name: 'PortalConsumer', - props: { - manager: { - type: Object as PropType<PortalMethods>, - }, - }, - setup(props) { - const _key = ref<number>(); - - const slots = useSlots(); - - onMounted(() => { - if (!props.manager) { - throw new Error('forgot'); - } - const defaultSlot = slots.default(); - props.manager.update(_key.value, defaultSlot); - _key.value = props.manager.mount(defaultSlot); - }); - - onUpdated(() => { - const defaultSlot = slots.default(); - props.manager.update(_key.value, defaultSlot); - }); - - onUnmounted(() => { - props.manager.unmount(_key.value); - }); - - return () => null; - }, -}); -</script> diff --git a/apps/cMiniApp/src/components/Portal/portal-container.vue b/apps/cMiniApp/src/components/Portal/portal-container.vue deleted file mode 100644 index 7c12a7e..0000000 --- a/apps/cMiniApp/src/components/Portal/portal-container.vue +++ /dev/null @@ -1,50 +0,0 @@ -<script lang="ts"> -import { VNode } from 'vue'; -import { portal } from './portal'; - -export default defineComponent({ - name: 'portal-container', - props: { - render: { - type: Function as PropType<(open: Ref<boolean>, onClose?: () => any) => VNode>, - }, - keyNumber: { - type: Number, - }, - /** - * 鏄惁寤惰繜璁剧疆open涓簍rue - */ - delayOpen: { - type: Boolean, - }, - }, - setup(props, { slots }) { - const open = ref(!props.delayOpen); - - function onClose() { - open.value = false; - } - - onMounted(() => { - if (props.delayOpen) { - setTimeout(() => { - open.value = true; - }, 30); - } - }); - - watch(open, (open, preOpen) => { - if (preOpen && !open) { - setTimeout(() => { - portal.remove(props.keyNumber); - }, 300); - } - }); - - return () => { - // const childrenNode = props.render(open, onClose); - return slots.default?.({ open, onClose }); - }; - }, -}); -</script> diff --git a/apps/cMiniApp/src/components/Portal/portal-host.vue b/apps/cMiniApp/src/components/Portal/portal-host.vue deleted file mode 100644 index 05068a7..0000000 --- a/apps/cMiniApp/src/components/Portal/portal-host.vue +++ /dev/null @@ -1,104 +0,0 @@ -<template> - <slot></slot> - <PortalManager ref="_manager" /> -</template> - -<script lang="ts"> -defineComponent({ - name: 'portal-host', - inheritAttrs: false, -}); -</script> - -<script setup lang="ts"> -import { - PortalContextKey, - Operation, - getUniqueKey, - addType, - removeType, - TopViewEventEmitter, - PortalNode, - PortalManagerInstance, -} from './portal'; -import PortalManager from './PortalManager.vue'; - -const _nextKey = ref(0); -const _queue = ref<Operation[]>([]); -const _manager = ref<PortalManagerInstance>(); - -onMounted(() => { - TopViewEventEmitter.on(getUniqueKey(addType), _mount); - TopViewEventEmitter.on(getUniqueKey(removeType), _unmount); - - while (_queue.value.length && _manager.value) { - const action = _queue.value.pop(); - if (!action) { - continue; - } - - switch (action.type) { - case 'mount': - _manager.value.mount(action.key, action.children); - break; - case 'update': - _manager.value.update(action.key, action.children); - break; - case 'unmount': - _manager.value.unmount(action.key); - break; - } - } -}); - -onUnmounted(() => { - TopViewEventEmitter.off(getUniqueKey(addType), _mount); - TopViewEventEmitter.off(getUniqueKey(removeType), _unmount); -}); - -const _setManager = (manager?: any) => { - _manager.value = manager; -}; - -const _mount = (children: PortalNode, _key?: number) => { - const key = _key || _nextKey.value++; - if (_manager.value) { - _manager.value.mount(key, children); - } else { - _queue.value.push({ type: 'mount', key, children }); - } - - return key; -}; - -const _update = (key: number, children: PortalNode) => { - if (_manager.value) { - _manager.value.update(key, children); - } else { - const op: Operation = { type: 'mount', key, children }; - const index = _queue.value.findIndex( - (o) => o.type === 'mount' || (o.type === 'update' && o.key === key) - ); - - if (index > -1) { - _queue.value[index] = op; - } else { - _queue.value.push(op); - } - } -}; - -const _unmount = (key: number) => { - if (_manager.value) { - _manager.value.unmount(key); - } else { - _queue.value.push({ type: 'unmount', key }); - } -}; - -provide(PortalContextKey, { - mount: _mount, - update: _update, - unmount: _unmount, -}); -</script> diff --git a/apps/cMiniApp/src/components/Portal/portal.ts b/apps/cMiniApp/src/components/Portal/portal.ts deleted file mode 100644 index 38b8216..0000000 --- a/apps/cMiniApp/src/components/Portal/portal.ts +++ /dev/null @@ -1,72 +0,0 @@ -import type { VNode } from 'vue'; -import Taro from '@tarojs/taro'; - -export type PortalNode = VNode | VNode[]; - -export type State = { - portals: Array<{ - key: number; - children: PortalNode; - }>; -}; -export type PortalManagerState = { - portals: Array<{ - key: number; - children: PortalNode; - }>; -}; - -export type PortalMethods = { - mount: (children: PortalNode) => number; - update: (key: number, children: PortalNode) => void; - unmount: (key: number) => void; -}; - -export type Operation = - | { type: 'mount'; key: number; children: PortalNode } - | { type: 'update'; key: number; children: PortalNode } - | { type: 'unmount'; key: number }; - -export const PortalContextKey: InjectionKey<PortalMethods> = Symbol('PortalContextKey'); - -export function usePortalContext() { - return inject(PortalContextKey); -} - -export function getUniqueKey(key: string) { - const router = Taro.getCurrentInstance().router; - const prefix = router.path; - return `${prefix}_${key}`; -} - -// events -export const addType = 'ADD_PORTAL'; -export const removeType = 'REMOVE_PORTAL'; - -export const TopViewEventEmitter = new Taro.Events(); - -class PortalGuard { - private nextKey = 10000; - add = (render: (_key: number) => PortalNode) => { - const key = this.nextKey++; - const node = render(key); - TopViewEventEmitter.trigger(getUniqueKey(addType), node, key); - return key; - }; - remove = (key: number) => { - TopViewEventEmitter.trigger(getUniqueKey(removeType), key); - }; -} -/** - * portal - */ -export const portal = new PortalGuard(); - -export type PortalManagerInstance = { - mount: (key: number, children: PortalNode) => void; - update: (key: number, children: PortalNode) => void; - unmount: (key: number) => { - key: number; - children: PortalNode; - }[]; -}; diff --git a/apps/cMiniApp/src/constants/index.ts b/apps/cMiniApp/src/constants/index.ts index c7f2445..0d96c63 100644 --- a/apps/cMiniApp/src/constants/index.ts +++ b/apps/cMiniApp/src/constants/index.ts @@ -2,3 +2,4 @@ export * from './tabBar'; export * from './router'; export * from './img'; +export * from './task'; diff --git a/apps/cMiniApp/src/constants/router.ts b/apps/cMiniApp/src/constants/router.ts index 2c320ea..cea6cc0 100644 --- a/apps/cMiniApp/src/constants/router.ts +++ b/apps/cMiniApp/src/constants/router.ts @@ -37,5 +37,10 @@ mineAgreementSignDetail = '/subpackages/mine/mineAgreementSignDetail/mineAgreementSignDetail', mineCurriculumVitae = '/subpackages/mine/mineCurriculumVitae/mineCurriculumVitae', editMineInfo = '/subpackages/mine/editMineInfo/editMineInfo', + mineJobIntention = '/subpackages/mine/mineJobIntention/mineJobIntention', + mineWorkExperience = '/subpackages/mine/mineWorkExperience/mineWorkExperience', + mineCertificate = '/subpackages/mine/mineCertificate/mineCertificate', + mineCertificateAddOrEdit = '/subpackages/mine/mineCertificateAddOrEdit/mineCertificateAddOrEdit', + mineDetailedInfo = '/subpackages/mine/mineDetailedInfo/mineDetailedInfo', setting = '/subpackages/mine/setting/setting', } diff --git a/apps/cMiniApp/src/constants/task.ts b/apps/cMiniApp/src/constants/task.ts new file mode 100644 index 0000000..98af4e3 --- /dev/null +++ b/apps/cMiniApp/src/constants/task.ts @@ -0,0 +1,19 @@ +export enum TaskStatus { + All = 0, + WaitSign = 10, + Effect = 20, + Terminated = 30, +} + +export const TaskStatusText = { + [TaskStatus.All]: '鍏ㄩ儴', + [TaskStatus.WaitSign]: '寰呯绾�', + [TaskStatus.Effect]: '鐢熸晥涓�', + [TaskStatus.Terminated]: '宸茬粓姝�', +}; + +export const TaskStatusColor = { + [TaskStatus.WaitSign]: '#FF7D00', + [TaskStatus.Effect]: '#3A71FF', + [TaskStatus.Terminated]: '#9FA4AC', +}; diff --git a/apps/cMiniApp/src/pages/mine/index.vue b/apps/cMiniApp/src/pages/mine/index.vue index e7ecf54..54ac239 100644 --- a/apps/cMiniApp/src/pages/mine/index.vue +++ b/apps/cMiniApp/src/pages/mine/index.vue @@ -46,14 +46,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"> 杩涘叆鎴戠殑閽卞寘 <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> diff --git a/apps/cMiniApp/src/subpackages/mine/editMineInfo/InnerPage.vue b/apps/cMiniApp/src/subpackages/mine/editMineInfo/InnerPage.vue index c537bca..7b1d765 100644 --- a/apps/cMiniApp/src/subpackages/mine/editMineInfo/InnerPage.vue +++ b/apps/cMiniApp/src/subpackages/mine/editMineInfo/InnerPage.vue @@ -1,17 +1,34 @@ <template> <ContentScrollView :paddingH="false"> <nut-form :model-value="form" ref="formRef" :rules="rules"> - <nut-form-item label="濮撳悕:" prop="name"> + <nut-form-item label="澶村儚:" class="bole-form-item" prop="avatarUrl"> + <Uploader v-model:file-list="form.avatarUrl" :maximum="1" class="bole-uploader"> </Uploader> + </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="鎵嬫満鍙�:" prop="phone" required> + <nut-form-item label="鎵嬫満鍙�:" class="bole-form-item" prop="phone" required> <nut-input v-model.trim="form.phone" placeholder="璇疯緭鍏ユ墜鏈哄彿" type="text" /> </nut-form-item> <nut-form-item label="韬唤:" class="bole-form-item" prop="gender"> <ChooseInputWithPicker v-model="form.gender" placeholder="璇烽�夋嫨韬唤" - :value-enum="MineHireTypeText" + :value-enum="TaskStatusText" + /> + </nut-form-item> + <nut-form-item label="瀛﹀巻:" class="bole-form-item" prop="gender"> + <ChooseInputWithPicker + v-model="form.gender" + placeholder="璇烽�夋嫨瀛﹀巻" + :value-enum="TaskStatusText" + /> + </nut-form-item> + <nut-form-item label="甯搁┗鍩庡競:" class="bole-form-item" prop="gender"> + <ChooseInputWithPicker + v-model="form.gender" + placeholder="璇烽�夋嫨甯搁┗鍩庡競" + :value-enum="TaskStatusText" /> </nut-form-item> </nut-form> @@ -22,21 +39,23 @@ </template> <script setup lang="ts"> -import { useUserStore } from '@/stores/modules/user'; import { FormRules } from '@nutui/nutui-taro/dist/types/__VUE/form/types'; import { ChooseInputWithPicker } from '@12333/components'; -import { MineHireTypeText, MineHireType } from './constants'; +import { TaskStatusText, TaskStatus } from '@/constants'; +import { convertApi2FormUrlOnlyOne } from '@12333/utils'; +import { useUser } from '@/hooks'; defineOptions({ name: 'InnerPage', }); -const userStore = useUserStore(); +const { userDetail } = useUser(); const form = reactive({ + avatarUrl: convertApi2FormUrlOnlyOne(userDetail.value?.originalAvatarUrl), name: '', phone: '', - gender: MineHireType.All, + gender: TaskStatus.All, }); const rules = reactive<FormRules>({ @@ -57,9 +76,4 @@ <style lang="scss"> @import '@/styles/common.scss'; - -.task-card-actions-text { - font-size: 24px; - line-height: 42px; -} </style> diff --git a/apps/cMiniApp/src/subpackages/mine/editMineInfo/constants/index.ts b/apps/cMiniApp/src/subpackages/mine/editMineInfo/constants/index.ts deleted file mode 100644 index c3d377a..0000000 --- a/apps/cMiniApp/src/subpackages/mine/editMineInfo/constants/index.ts +++ /dev/null @@ -1,19 +0,0 @@ -export enum MineHireType { - All = 0, - InProgress = 10, - WaitCheck = 20, - Finished = 30, -} - -export const MineHireTypeText = { - [MineHireType.All]: '鍏ㄩ儴', - [MineHireType.InProgress]: '杩涜涓�', - [MineHireType.WaitCheck]: '寰呴獙鏀�', - [MineHireType.Finished]: '宸插畬鎴�', -}; - -export const MineHireTypeColor = { - [MineHireType.InProgress]: '#3A71FF', - [MineHireType.WaitCheck]: '#FF7D00', - [MineHireType.Finished]: '#9FA4AC', -}; diff --git a/apps/cMiniApp/src/subpackages/mine/mineAgreementSign/InnerPage.vue b/apps/cMiniApp/src/subpackages/mine/mineAgreementSign/InnerPage.vue index fe9a163..d288f3a 100644 --- a/apps/cMiniApp/src/subpackages/mine/mineAgreementSign/InnerPage.vue +++ b/apps/cMiniApp/src/subpackages/mine/mineAgreementSign/InnerPage.vue @@ -8,10 +8,10 @@ title-gutter="12" title-scroll > - <ProTabPane :title="`鍏ㄩ儴`" :pane-key="MineAgreementSignType.All"></ProTabPane> - <ProTabPane :title="`寰呯绾" :pane-key="MineAgreementSignType.WaitSign"></ProTabPane> - <ProTabPane :title="`鐢熸晥涓璥" :pane-key="MineAgreementSignType.Effect"></ProTabPane> - <ProTabPane :title="`宸茬粓姝" :pane-key="MineAgreementSignType.Terminated"></ProTabPane> + <ProTabPane :title="`鍏ㄩ儴`" :pane-key="0"></ProTabPane> + <ProTabPane :title="`寰呯绾" :pane-key="10"></ProTabPane> + <ProTabPane :title="`鐢熸晥涓璥" :pane-key="20"></ProTabPane> + <ProTabPane :title="`宸茬粓姝" :pane-key="30"></ProTabPane> </ProTabs> <InfiniteLoading scrollViewClassName="common-infinite-scroll-list home-list" @@ -21,8 +21,8 @@ <template #renderItem="{ item }"> <MineAgreementSignCard @click="goDetail"> <template #actions> - <div class="task-card-actions-text" :style="{ color: MineAgreementSignTypeColor[10] }"> - {{ MineAgreementSignTypeText[10] }} + <div class="task-card-actions-text" :style="{ color: TaskStatusColor[10] }"> + {{ TaskStatusText[10] }} </div> </template> </MineAgreementSignCard> @@ -33,11 +33,7 @@ <script setup lang="ts"> import { MineAgreementSignCard, ProTabs, ProTabPane } from '@12333/components'; import { useUserStore } from '@/stores/modules/user'; -import { - MineAgreementSignType, - MineAgreementSignTypeColor, - MineAgreementSignTypeText, -} from './constants'; +import { TaskStatusText, TaskStatusColor, TaskStatus } from '@/constants'; import { useInfiniteLoading } from '@12333/hooks'; import { OrderInputType } from '@12333/constants'; import * as orderServices from '@12333/services/api/Order'; @@ -48,7 +44,7 @@ }); const queryState = reactive({ - mineAgreementSignType: MineAgreementSignType.All, + mineAgreementSignType: TaskStatus.All, }); const userStore = useUserStore(); @@ -60,7 +56,7 @@ rows: 20, page: pageParam, orderInput: [ - queryState.mineAgreementSignType === MineAgreementSignType.All + queryState.mineAgreementSignType === TaskStatus.All ? { property: 'isRecommend', order: OrderInputType.Desc } : { property: 'lastShelfTime', order: OrderInputType.Desc }, ], diff --git a/apps/cMiniApp/src/subpackages/mine/mineAgreementSign/constants/index.ts b/apps/cMiniApp/src/subpackages/mine/mineAgreementSign/constants/index.ts deleted file mode 100644 index ffee013..0000000 --- a/apps/cMiniApp/src/subpackages/mine/mineAgreementSign/constants/index.ts +++ /dev/null @@ -1,19 +0,0 @@ -export enum MineAgreementSignType { - All = 0, - WaitSign = 10, - Effect = 20, - Terminated = 30, -} - -export const MineAgreementSignTypeText = { - [MineAgreementSignType.All]: '鍏ㄩ儴', - [MineAgreementSignType.WaitSign]: '寰呯绾�', - [MineAgreementSignType.Effect]: '鐢熸晥涓�', - [MineAgreementSignType.Terminated]: '宸茬粓姝�', -}; - -export const MineAgreementSignTypeColor = { - [MineAgreementSignType.WaitSign]: '#FF7D00', - [MineAgreementSignType.Effect]: '#3A71FF', - [MineAgreementSignType.Terminated]: '#9FA4AC', -}; diff --git a/apps/cMiniApp/src/subpackages/mine/mineAgreementSignDetail/constants/index.ts b/apps/cMiniApp/src/subpackages/mine/mineAgreementSignDetail/constants/index.ts deleted file mode 100644 index ffee013..0000000 --- a/apps/cMiniApp/src/subpackages/mine/mineAgreementSignDetail/constants/index.ts +++ /dev/null @@ -1,19 +0,0 @@ -export enum MineAgreementSignType { - All = 0, - WaitSign = 10, - Effect = 20, - Terminated = 30, -} - -export const MineAgreementSignTypeText = { - [MineAgreementSignType.All]: '鍏ㄩ儴', - [MineAgreementSignType.WaitSign]: '寰呯绾�', - [MineAgreementSignType.Effect]: '鐢熸晥涓�', - [MineAgreementSignType.Terminated]: '宸茬粓姝�', -}; - -export const MineAgreementSignTypeColor = { - [MineAgreementSignType.WaitSign]: '#FF7D00', - [MineAgreementSignType.Effect]: '#3A71FF', - [MineAgreementSignType.Terminated]: '#9FA4AC', -}; diff --git a/apps/cMiniApp/src/subpackages/mine/mineCertificate/InnerPage.vue b/apps/cMiniApp/src/subpackages/mine/mineCertificate/InnerPage.vue new file mode 100644 index 0000000..9109faa --- /dev/null +++ b/apps/cMiniApp/src/subpackages/mine/mineCertificate/InnerPage.vue @@ -0,0 +1,43 @@ +<template> + <ContentScrollView :paddingH="false"> + <List> + <ListItem title="鍋ュ悍璇�" @click="handleEdit"> </ListItem> + <ListItem title="鍋ュ悍璇�" @click="handleEdit"> </ListItem> + <ListItem title="鍋ュ悍璇�" @click="handleEdit"> </ListItem> + <ListItem title="鍋ュ悍璇�" @click="handleEdit"> </ListItem> + <ListItem title="鍋ュ悍璇�" @click="handleEdit"> </ListItem> + <ListItem title="鍋ュ悍璇�" @click="handleEdit"> </ListItem> + </List> + </ContentScrollView> + <PageFooter> + <PageFooterBtn type="primary" @click="handleAdd">娣诲姞璇佷功</PageFooterBtn> + </PageFooter> +</template> + +<script setup lang="ts"> +import { useUser } from '@/hooks'; +import { List, ListItem } from '@12333/components'; +import Taro from '@tarojs/taro'; +import { RouterPath } from '@/constants'; + +defineOptions({ + name: 'InnerPage', +}); + +const { userDetail } = useUser(); + +const form = reactive({ + workYear: '', +}); + +function handleAdd() { + Taro.navigateTo({ + url: RouterPath.mineCertificateAddOrEdit, + }); +} +function handleEdit() {} +</script> + +<style lang="scss"> +@import '@/styles/common.scss'; +</style> diff --git a/apps/cMiniApp/src/subpackages/mine/mineCertificate/mineCertificate.config.ts b/apps/cMiniApp/src/subpackages/mine/mineCertificate/mineCertificate.config.ts new file mode 100644 index 0000000..305fdb1 --- /dev/null +++ b/apps/cMiniApp/src/subpackages/mine/mineCertificate/mineCertificate.config.ts @@ -0,0 +1,3 @@ +export default definePageConfig({ + disableScroll: true, +}); diff --git a/apps/cMiniApp/src/subpackages/mine/mineCertificate/mineCertificate.vue b/apps/cMiniApp/src/subpackages/mine/mineCertificate/mineCertificate.vue new file mode 100644 index 0000000..8b45d8a --- /dev/null +++ b/apps/cMiniApp/src/subpackages/mine/mineCertificate/mineCertificate.vue @@ -0,0 +1,17 @@ +<template> + <PageLayout class="index-page-wrapper" :title="'璧勬牸璇佷功'" has-border> + <InnerPage></InnerPage> + </PageLayout> +</template> + +<script setup lang="ts"> +import InnerPage from './InnerPage.vue'; + +defineOptions({ + name: 'mineCertificate', +}); +</script> + +<style lang="scss"> +@import '@/styles/common.scss'; +</style> diff --git a/apps/cMiniApp/src/subpackages/mine/mineCertificateAddOrEdit/InnerPage.vue b/apps/cMiniApp/src/subpackages/mine/mineCertificateAddOrEdit/InnerPage.vue new file mode 100644 index 0000000..9540a72 --- /dev/null +++ b/apps/cMiniApp/src/subpackages/mine/mineCertificateAddOrEdit/InnerPage.vue @@ -0,0 +1,120 @@ +<template> + <ContentScrollView :paddingH="false"> + <nut-form :model-value="form" ref="formRef" :rules="rules"> + <nut-form-item label="璇佷功绫诲瀷:" class="bole-form-item" prop="type"> + <ChooseInputWithPicker + v-model="form.type" + placeholder="璇烽�夋嫨璇佷功绫诲瀷" + :value-enum="TaskStatusText" + /> + </nut-form-item> + <nut-form-item label="璇佷功缂栧彿:" class="bole-form-item" prop="certificateNumber"> + <nut-input v-model="form.certificateNumber" type="number" placeholder="璇疯緭鍏�"> </nut-input> + </nut-form-item> + <nut-form-item label="寮�濮嬫棩鏈�:" class="bole-form-item" prop="startDate"> + <ChooseInputWithDatePicker v-model="form.startDate"></ChooseInputWithDatePicker> + </nut-form-item> + <nut-form-item label="缁撴潫鏃ユ湡:" class="bole-form-item" prop="endDate"> + <ChooseInputWithDatePicker v-model="form.endDate"></ChooseInputWithDatePicker> + </nut-form-item> + <nut-form-item + label="姘镐箙璇佷功:" + class="bole-form-item permanent-certificate" + prop="isPermanentCertificate" + > + <nut-switch v-model="form.isPermanentCertificate" /> + </nut-form-item> + <nut-form-item label="鍙戣瘉鍗曚綅:" class="bole-form-item" prop="certificateNumber"> + <nut-input v-model="form.certificateNumber" placeholder="璇疯緭鍏�"> </nut-input> + </nut-form-item> + <div class="certificate-upload"> + <div class="certificate-upload-title">涓婁紶璇佷功</div> + <nut-form-item + label="璇佷功姝i潰鐓х墖锛堣纭繚璇佷功鍙枫�佸ご鍍忕収鐗囩瓑娓呮櫚鍙锛�" + class="bole-form-item" + prop="photo" + label-position="top" + > + <Uploader v-model:file-list="form.photo" :maximum="1" class="bole-uploader"> </Uploader> + </nut-form-item> + <nut-form-item + label="璇佷功鍙嶉潰鐓х墖锛堟垨鍏朵粬鏈夊唴瀹归〉锛�" + class="bole-form-item" + prop="photo" + label-position="top" + > + <Uploader v-model:file-list="form.photo" :maximum="1" class="bole-uploader"> </Uploader> + </nut-form-item> + </div> + </nut-form> + </ContentScrollView> + <PageFooter> + <PageFooterBtn type="primary" @click="handleConfirm">淇濆瓨</PageFooterBtn> + </PageFooter> +</template> + +<script setup lang="ts"> +import { useUser } from '@/hooks'; +import { ChooseInputWithPicker, ChooseInputWithDatePicker } from '@12333/components'; +import { TaskStatusText, TaskStatus } from '@/constants'; +import { FormRules } from '@nutui/nutui-taro/dist/types/__VUE/form/types'; + +defineOptions({ + name: 'InnerPage', +}); + +const { userDetail } = useUser(); + +const form = reactive({ + type: TaskStatus.All, + certificateNumber: '', + startDate: '', + endDate: '', + isPermanentCertificate: false, + photo: [], +}); + +const rules = reactive<FormRules>({ + type: [{ required: true, message: '璇疯緭鍏ユ墜鏈哄彿' }], + startDate: [{ required: true, message: '璇烽�夋嫨寮�濮嬫棩鏈�' }], + endDate: [{ required: true, message: '璇烽�夋嫨缁撴潫鏃ユ湡' }], + photo: [{ required: true, message: '璇蜂笂浼犺瘉涔︽闈㈢収' }], +}); +const formRef = ref<any>(null); +function handleConfirm() { + if (!formRef.value) return; + formRef.value.validate().then(({ valid, errors }: any) => { + if (valid) { + confirm(); + } + }); +} + +function confirm() {} +</script> + +<style lang="scss"> +@import '@/styles/common.scss'; + +.nut-form .nut-cell.bole-form-item:not(.alignTop), +page .nut-form .nut-cell.bole-form-item:not(.alignTop) { + align-items: flex-start !important; +} + +.permanent-certificate { + --nut-form-item-body-slots-text-align: right; +} + +.certificate-upload { + .certificate-upload-title { + font-size: 28px; + padding: 26px 32px 0; + } + + .nut-form-item__label { + padding-right: 0; + font-size: 24px; + width: 98%; + } +} +</style> diff --git a/apps/cMiniApp/src/subpackages/mine/mineCertificateAddOrEdit/mineCertificateAddOrEdit.config.ts b/apps/cMiniApp/src/subpackages/mine/mineCertificateAddOrEdit/mineCertificateAddOrEdit.config.ts new file mode 100644 index 0000000..305fdb1 --- /dev/null +++ b/apps/cMiniApp/src/subpackages/mine/mineCertificateAddOrEdit/mineCertificateAddOrEdit.config.ts @@ -0,0 +1,3 @@ +export default definePageConfig({ + disableScroll: true, +}); diff --git a/apps/cMiniApp/src/subpackages/mine/mineCertificateAddOrEdit/mineCertificateAddOrEdit.vue b/apps/cMiniApp/src/subpackages/mine/mineCertificateAddOrEdit/mineCertificateAddOrEdit.vue new file mode 100644 index 0000000..01cb068 --- /dev/null +++ b/apps/cMiniApp/src/subpackages/mine/mineCertificateAddOrEdit/mineCertificateAddOrEdit.vue @@ -0,0 +1,17 @@ +<template> + <PageLayout class="index-page-wrapper" :title="'璧勬牸璇佷功'" has-border> + <InnerPage></InnerPage> + </PageLayout> +</template> + +<script setup lang="ts"> +import InnerPage from './InnerPage.vue'; + +defineOptions({ + name: 'mineCertificateAddOrEdit', +}); +</script> + +<style lang="scss"> +@import '@/styles/common.scss'; +</style> diff --git a/apps/cMiniApp/src/subpackages/mine/mineCollectTask/InnerPage.vue b/apps/cMiniApp/src/subpackages/mine/mineCollectTask/InnerPage.vue index da4c79b..b5801b3 100644 --- a/apps/cMiniApp/src/subpackages/mine/mineCollectTask/InnerPage.vue +++ b/apps/cMiniApp/src/subpackages/mine/mineCollectTask/InnerPage.vue @@ -67,10 +67,4 @@ color: boleGetCssVar('text-color', 'regular'); } } - -.task-card-actions-text { - font-size: 24px; - line-height: 42px; - color: #9fa4ac; -} </style> diff --git a/apps/cMiniApp/src/subpackages/mine/mineCurriculumVitae/InnerPage.vue b/apps/cMiniApp/src/subpackages/mine/mineCurriculumVitae/InnerPage.vue index f0d25e7..4e5ccbf 100644 --- a/apps/cMiniApp/src/subpackages/mine/mineCurriculumVitae/InnerPage.vue +++ b/apps/cMiniApp/src/subpackages/mine/mineCurriculumVitae/InnerPage.vue @@ -38,7 +38,7 @@ <div class="mine-curriculum-intention-content"> <div class="mine-curriculum-intention-title"> <div class="mine-curriculum-intention-title-text">姹傝亴鎰忓悜</div> - <div class="mine-curriculum-intention-title-edit"> + <div class="mine-curriculum-intention-title-edit" @click="goMineJobIntention"> 缂栬緫 <img :src="IconArrow" class="mine-curriculum-intention-title-edit-icon" /> </div> @@ -65,17 +65,21 @@ </MineAgreementSignDetailItem> </div> - <ListItem title="璧勬牸璇佷功"> + <ListItem title="璧勬牸璇佷功" @click="goMineCertificate"> <template #extra> <div class="mine-curriculum-intention-enit-btn">缂栬緫</div> </template> </ListItem> - <ListItem title="宸ヤ綔缁忛獙"> + <ListItem title="宸ヤ綔缁忛獙" @click="goMineWorkExperience"> <template #extra> <div class="mine-curriculum-intention-enit-btn">缂栬緫</div> </template> </ListItem> - <ListItem title="璇︾粏淇℃伅" class="mine-curriculum-intention-detail"> + <ListItem + title="璇︾粏淇℃伅" + class="mine-curriculum-intention-detail" + @click="goMineDetailedInfo" + > <template #extra> <div class="mine-curriculum-intention-enit-btn">缂栬緫</div> </template> @@ -101,11 +105,26 @@ const userStore = useUserStore(); const isLogin = useIsLogin(); -function goEditMineInfo() { +function goPage(routeName: string) { Taro.navigateTo({ - url: RouterPath.editMineInfo, + url: routeName, }); } +function goEditMineInfo() { + goPage(RouterPath.editMineInfo); +} +function goMineJobIntention() { + goPage(RouterPath.mineJobIntention); +} +function goMineDetailedInfo() { + goPage(RouterPath.mineDetailedInfo); +} +function goMineWorkExperience() { + goPage(RouterPath.mineWorkExperience); +} +function goMineCertificate() { + goPage(RouterPath.mineCertificate); +} </script> <style lang="scss"> diff --git a/apps/cMiniApp/src/subpackages/mine/mineDetailedInfo/InnerPage.vue b/apps/cMiniApp/src/subpackages/mine/mineDetailedInfo/InnerPage.vue new file mode 100644 index 0000000..f67fa70 --- /dev/null +++ b/apps/cMiniApp/src/subpackages/mine/mineDetailedInfo/InnerPage.vue @@ -0,0 +1,61 @@ +<template> + <ContentScrollView :paddingH="false"> + <nut-form :model-value="form" ref="formRef"> + <nut-form-item label="韬珮:" class="bole-form-item" prop="height"> + <NumberInput v-model="form.height" placeholder="璇疯緭鍏�"> + <template #right>cm</template> + </NumberInput> + </nut-form-item> + <nut-form-item label="浣撻噸:" class="bole-form-item" prop="weight"> + <NumberInput v-model="form.weight" placeholder="璇疯緭鍏�"> + <template #right>kg</template> + </NumberInput> + </nut-form-item> + <nut-form-item + label="涓汉鐢熸椿鐓э紙鍗曞紶鐓х墖涓嶈秴杩�5m锛屾渶澶氫笉瓒呰繃6寮狅級:" + class="bole-form-item person-photo" + prop="photo" + label-position="top" + > + <Uploader v-model:file-list="form.photo" :maximum="6" class="bole-uploader"> </Uploader> + </nut-form-item> + </nut-form> + </ContentScrollView> + <PageFooter> + <PageFooterBtn type="primary" @click="handleConfirm">淇濆瓨</PageFooterBtn> + </PageFooter> +</template> + +<script setup lang="ts"> +import { useUser } from '@/hooks'; +import { NumberInput } from '@12333/components'; + +defineOptions({ + name: 'InnerPage', +}); + +const { userDetail } = useUser(); + +const form = reactive({ + height: '', + weight: '', + photo: [], +}); + +function handleConfirm() {} +</script> + +<style lang="scss"> +@import '@/styles/common.scss'; + +.person-photo { + .nut-form-item__label { + padding-right: 0; + } +} + +.nut-form .nut-cell.bole-form-item:not(.alignTop), +page .nut-form .nut-cell.bole-form-item:not(.alignTop) { + align-items: flex-start !important; +} +</style> diff --git a/apps/cMiniApp/src/subpackages/mine/mineDetailedInfo/mineDetailedInfo.config.ts b/apps/cMiniApp/src/subpackages/mine/mineDetailedInfo/mineDetailedInfo.config.ts new file mode 100644 index 0000000..305fdb1 --- /dev/null +++ b/apps/cMiniApp/src/subpackages/mine/mineDetailedInfo/mineDetailedInfo.config.ts @@ -0,0 +1,3 @@ +export default definePageConfig({ + disableScroll: true, +}); diff --git a/apps/cMiniApp/src/subpackages/mine/mineDetailedInfo/mineDetailedInfo.vue b/apps/cMiniApp/src/subpackages/mine/mineDetailedInfo/mineDetailedInfo.vue new file mode 100644 index 0000000..f8b3235 --- /dev/null +++ b/apps/cMiniApp/src/subpackages/mine/mineDetailedInfo/mineDetailedInfo.vue @@ -0,0 +1,17 @@ +<template> + <PageLayout class="index-page-wrapper" :title="'璇︾粏淇℃伅'" has-border> + <InnerPage></InnerPage> + </PageLayout> +</template> + +<script setup lang="ts"> +import InnerPage from './InnerPage.vue'; + +defineOptions({ + name: 'mineDetailedInfo', +}); +</script> + +<style lang="scss"> +@import '@/styles/common.scss'; +</style> diff --git a/apps/cMiniApp/src/subpackages/mine/mineHire/InnerPage.vue b/apps/cMiniApp/src/subpackages/mine/mineHire/InnerPage.vue index f9234cc..eb33873 100644 --- a/apps/cMiniApp/src/subpackages/mine/mineHire/InnerPage.vue +++ b/apps/cMiniApp/src/subpackages/mine/mineHire/InnerPage.vue @@ -8,10 +8,10 @@ title-gutter="12" title-scroll > - <ProTabPane :title="`鍏ㄩ儴`" :pane-key="MineHireType.All"></ProTabPane> - <ProTabPane :title="`杩涜涓璥" :pane-key="MineHireType.InProgress"></ProTabPane> - <ProTabPane :title="`寰呴獙鏀禶" :pane-key="MineHireType.WaitCheck"></ProTabPane> - <ProTabPane :title="`宸插畬鎴恅" :pane-key="MineHireType.Finished"></ProTabPane> + <ProTabPane :title="`鍏ㄩ儴`" :pane-key="0"></ProTabPane> + <ProTabPane :title="`杩涜涓璥" :pane-key="10"></ProTabPane> + <ProTabPane :title="`寰呴獙鏀禶" :pane-key="20"></ProTabPane> + <ProTabPane :title="`宸插畬鎴恅" :pane-key="30"></ProTabPane> </ProTabs> <InfiniteLoading scrollViewClassName="common-infinite-scroll-list home-list" @@ -21,8 +21,8 @@ <template #renderItem="{ item }"> <TaskCard> <template #actions> - <div class="task-card-actions-text" :style="{ color: MineHireTypeColor[10] }"> - {{ MineHireTypeText[10] }} + <div class="task-card-actions-text" :style="{ color: TaskStatusColor[10] }"> + {{ TaskStatusText[10] }} </div> </template> </TaskCard> @@ -33,7 +33,7 @@ <script setup lang="ts"> import { TaskCard, ProTabs, ProTabPane } from '@12333/components'; import { useUserStore } from '@/stores/modules/user'; -import { MineHireType, MineHireTypeColor, MineHireTypeText } from './constants'; +import { TaskStatusText, TaskStatusColor, TaskStatus } from '@/constants'; import { useInfiniteLoading } from '@12333/hooks'; import { OrderInputType } from '@12333/constants'; import * as orderServices from '@12333/services/api/Order'; @@ -43,7 +43,7 @@ }); const queryState = reactive({ - mineHireType: MineHireType.All, + mineHireType: TaskStatus.All, }); const userStore = useUserStore(); @@ -55,7 +55,7 @@ rows: 20, page: pageParam, orderInput: [ - queryState.mineHireType === MineHireType.All + queryState.mineHireType === TaskStatus.All ? { property: 'isRecommend', order: OrderInputType.Desc } : { property: 'lastShelfTime', order: OrderInputType.Desc }, ], diff --git a/apps/cMiniApp/src/subpackages/mine/mineHire/constants/index.ts b/apps/cMiniApp/src/subpackages/mine/mineHire/constants/index.ts deleted file mode 100644 index c3d377a..0000000 --- a/apps/cMiniApp/src/subpackages/mine/mineHire/constants/index.ts +++ /dev/null @@ -1,19 +0,0 @@ -export enum MineHireType { - All = 0, - InProgress = 10, - WaitCheck = 20, - Finished = 30, -} - -export const MineHireTypeText = { - [MineHireType.All]: '鍏ㄩ儴', - [MineHireType.InProgress]: '杩涜涓�', - [MineHireType.WaitCheck]: '寰呴獙鏀�', - [MineHireType.Finished]: '宸插畬鎴�', -}; - -export const MineHireTypeColor = { - [MineHireType.InProgress]: '#3A71FF', - [MineHireType.WaitCheck]: '#FF7D00', - [MineHireType.Finished]: '#9FA4AC', -}; diff --git a/apps/cMiniApp/src/subpackages/mine/mineJobIntention/InnerPage.vue b/apps/cMiniApp/src/subpackages/mine/mineJobIntention/InnerPage.vue new file mode 100644 index 0000000..2f84827 --- /dev/null +++ b/apps/cMiniApp/src/subpackages/mine/mineJobIntention/InnerPage.vue @@ -0,0 +1,66 @@ +<template> + <ContentScrollView :paddingH="false"> + <nut-form :model-value="form" ref="formRef" :rules="rules"> + <nut-form-item label="鏈熸湜宀椾綅:" class="bole-form-item" prop="job"> + <ChooseInputWithPicker + v-model="form.job" + placeholder="璇烽�夋嫨鏈熸湜宀椾綅" + :value-enum="TaskStatusText" + /> + </nut-form-item> + <nut-form-item label="绌洪棽鏃堕棿:" class="bole-form-item" prop="job"> + <ChooseInputWithPicker + v-model="form.job" + placeholder="璇烽�夋嫨绌洪棽鏃堕棿" + :value-enum="TaskStatusText" + /> + </nut-form-item> + <nut-form-item label="姹傝亴鐘舵��:" class="bole-form-item" prop="job"> + <ChooseInputWithPicker + v-model="form.job" + placeholder="璇烽�夋嫨姹傝亴鐘舵��" + :value-enum="TaskStatusText" + /> + </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 { ChooseInputWithPicker } from '@12333/components'; +import { TaskStatusText, TaskStatus } from '@/constants'; +import { useUser } from '@/hooks'; + +defineOptions({ + name: 'InnerPage', +}); + +const { userDetail } = useUser(); + +const form = reactive({ + job: TaskStatus.All, +}); + +const rules = reactive<FormRules>({ + job: [{ required: true, message: '璇烽�夋嫨' }], +}); +const formRef = ref<any>(null); +function handleConfirm() { + if (!formRef.value) return; + formRef.value.validate().then(({ valid, errors }: any) => { + if (valid) { + confirm(); + } + }); +} + +function confirm() {} +</script> + +<style lang="scss"> +@import '@/styles/common.scss'; +</style> diff --git a/apps/cMiniApp/src/subpackages/mine/mineJobIntention/mineJobIntention.config.ts b/apps/cMiniApp/src/subpackages/mine/mineJobIntention/mineJobIntention.config.ts new file mode 100644 index 0000000..305fdb1 --- /dev/null +++ b/apps/cMiniApp/src/subpackages/mine/mineJobIntention/mineJobIntention.config.ts @@ -0,0 +1,3 @@ +export default definePageConfig({ + disableScroll: true, +}); diff --git a/apps/cMiniApp/src/subpackages/mine/mineJobIntention/mineJobIntention.vue b/apps/cMiniApp/src/subpackages/mine/mineJobIntention/mineJobIntention.vue new file mode 100644 index 0000000..4e3feed --- /dev/null +++ b/apps/cMiniApp/src/subpackages/mine/mineJobIntention/mineJobIntention.vue @@ -0,0 +1,17 @@ +<template> + <PageLayout class="index-page-wrapper" :title="'姹傝亴鎰忓悜'" has-border> + <InnerPage></InnerPage> + </PageLayout> +</template> + +<script setup lang="ts"> +import InnerPage from './InnerPage.vue'; + +defineOptions({ + name: 'mineJobIntention', +}); +</script> + +<style lang="scss"> +@import '@/styles/common.scss'; +</style> diff --git a/apps/cMiniApp/src/subpackages/mine/mineSign/InnerPage.vue b/apps/cMiniApp/src/subpackages/mine/mineSign/InnerPage.vue index c423588..dcddaa6 100644 --- a/apps/cMiniApp/src/subpackages/mine/mineSign/InnerPage.vue +++ b/apps/cMiniApp/src/subpackages/mine/mineSign/InnerPage.vue @@ -8,9 +8,9 @@ title-gutter="12" title-scroll > - <ProTabPane :title="`鍏ㄩ儴`" :pane-key="MineSignType.All"></ProTabPane> - <ProTabPane :title="`寰呯‘璁" :pane-key="MineSignType.WaitConfirm"></ProTabPane> - <ProTabPane :title="`寰呯绾" :pane-key="MineSignType.WaitSign"></ProTabPane> + <ProTabPane :title="`鍏ㄩ儴`" :pane-key="0"></ProTabPane> + <ProTabPane :title="`寰呯‘璁" :pane-key="10"></ProTabPane> + <ProTabPane :title="`寰呯绾" :pane-key="20"></ProTabPane> </ProTabs> <InfiniteLoading scrollViewClassName="common-infinite-scroll-list home-list" @@ -20,8 +20,8 @@ <template #renderItem="{ item }"> <TaskCard> <template #actions> - <div class="task-card-actions-text" :style="{ color: MineSignTypeColor[10] }"> - {{ MineSignTypeText[10] }} + <div class="task-card-actions-text" :style="{ color: TaskStatusColor[10] }"> + {{ TaskStatusText[10] }} </div> </template> </TaskCard> @@ -32,7 +32,7 @@ <script setup lang="ts"> import { TaskCard, ProTabs, ProTabPane } from '@12333/components'; import { useUserStore } from '@/stores/modules/user'; -import { MineSignType, MineSignTypeColor, MineSignTypeText } from './constants'; +import { TaskStatusText, TaskStatusColor, TaskStatus } from '@/constants'; import { useInfiniteLoading } from '@12333/hooks'; import { OrderInputType } from '@12333/constants'; import * as orderServices from '@12333/services/api/Order'; @@ -42,7 +42,7 @@ }); const queryState = reactive({ - mineSignType: MineSignType.All, + mineSignType: TaskStatus.All, }); const userStore = useUserStore(); @@ -54,7 +54,7 @@ rows: 20, page: pageParam, orderInput: [ - queryState.mineSignType === MineSignType.All + queryState.mineSignType === TaskStatus.All ? { property: 'isRecommend', order: OrderInputType.Desc } : { property: 'lastShelfTime', order: OrderInputType.Desc }, ], diff --git a/apps/cMiniApp/src/subpackages/mine/mineSign/constants/index.ts b/apps/cMiniApp/src/subpackages/mine/mineSign/constants/index.ts deleted file mode 100644 index 165c714..0000000 --- a/apps/cMiniApp/src/subpackages/mine/mineSign/constants/index.ts +++ /dev/null @@ -1,16 +0,0 @@ -export enum MineSignType { - All = 0, - WaitConfirm = 10, - WaitSign = 20, -} - -export const MineSignTypeText = { - [MineSignType.All]: '鍏ㄩ儴', - [MineSignType.WaitConfirm]: '寰呯‘璁�', - [MineSignType.WaitSign]: '寰呯绾�', -}; - -export const MineSignTypeColor = { - [MineSignType.WaitConfirm]: '#FF7D00', - [MineSignType.WaitSign]: '#3A71FF', -}; diff --git a/apps/cMiniApp/src/subpackages/mine/mineWorkExperience/InnerPage.vue b/apps/cMiniApp/src/subpackages/mine/mineWorkExperience/InnerPage.vue new file mode 100644 index 0000000..5dd1dbc --- /dev/null +++ b/apps/cMiniApp/src/subpackages/mine/mineWorkExperience/InnerPage.vue @@ -0,0 +1,35 @@ +<template> + <ContentScrollView :paddingH="false"> + <nut-form :model-value="form" ref="formRef"> + <nut-form-item label="宸ヤ綔骞撮檺:" class="bole-form-item" prop="workYear"> + <nut-input v-model="form.workYear" placeholder="璇疯緭鍏�"> </nut-input> + </nut-form-item> + <nut-form-item label="宸ヤ綔缁忛獙:" class="bole-form-item" prop="workYear"> + <nut-input v-model="form.workYear" type="textarea" placeholder="璇疯緭鍏�"> </nut-input> + </nut-form-item> + </nut-form> + </ContentScrollView> + <PageFooter> + <PageFooterBtn type="primary" @click="handleConfirm">淇濆瓨</PageFooterBtn> + </PageFooter> +</template> + +<script setup lang="ts"> +import { useUser } from '@/hooks'; + +defineOptions({ + name: 'InnerPage', +}); + +const { userDetail } = useUser(); + +const form = reactive({ + workYear: '', +}); + +function handleConfirm() {} +</script> + +<style lang="scss"> +@import '@/styles/common.scss'; +</style> diff --git a/apps/cMiniApp/src/subpackages/mine/mineWorkExperience/mineWorkExperience.config.ts b/apps/cMiniApp/src/subpackages/mine/mineWorkExperience/mineWorkExperience.config.ts new file mode 100644 index 0000000..305fdb1 --- /dev/null +++ b/apps/cMiniApp/src/subpackages/mine/mineWorkExperience/mineWorkExperience.config.ts @@ -0,0 +1,3 @@ +export default definePageConfig({ + disableScroll: true, +}); diff --git a/apps/cMiniApp/src/subpackages/mine/mineWorkExperience/mineWorkExperience.vue b/apps/cMiniApp/src/subpackages/mine/mineWorkExperience/mineWorkExperience.vue new file mode 100644 index 0000000..aaa0dde --- /dev/null +++ b/apps/cMiniApp/src/subpackages/mine/mineWorkExperience/mineWorkExperience.vue @@ -0,0 +1,17 @@ +<template> + <PageLayout class="index-page-wrapper" :title="'宸ヤ綔缁忛獙'" has-border> + <InnerPage></InnerPage> + </PageLayout> +</template> + +<script setup lang="ts"> +import InnerPage from './InnerPage.vue'; + +defineOptions({ + name: 'mineWorkExperience', +}); +</script> + +<style lang="scss"> +@import '@/styles/common.scss'; +</style> diff --git a/packages/components/src/Input/ChooseInputWithDatePicker.vue b/packages/components/src/Input/ChooseInputWithDatePicker.vue new file mode 100644 index 0000000..a40694d --- /dev/null +++ b/packages/components/src/Input/ChooseInputWithDatePicker.vue @@ -0,0 +1,58 @@ +<template> + <ChooseInput :modelValue="modelValue" @click="handleOpen()"></ChooseInput> +</template> + +<script setup lang="ts"> +import ChooseInput from './ChooseInput.vue'; +import { Popup, DatePicker } from '@nutui/nutui-taro'; +import { Portal } from 'senin-mini/components'; +import { h } from 'vue'; +import dayjs from 'dayjs'; + +defineOptions({ + name: 'ChooseInputWithDatePicker', +}); + +type Props = { + modelValue: string | number; +}; + +const props = withDefaults(defineProps<Props>(), {}); + +const emit = defineEmits<{ + (e: 'update:modelValue', val: string | number): void; +}>(); + +function handleOpen() { + const _modelValue = [props.modelValue]; + Portal.add((key) => { + return h( + Portal.Container, + { keyNumber: key, delayOpen: true }, + { + default: ({ open, onClose }) => + h( + Popup, + { + visible: open.value, + 'onUpdate:visible': (value) => !value && onClose(), + position: 'bottom', + }, + { + default: () => + h(DatePicker, { + modelValue: _modelValue, + onCancel: onClose, + onConfirm: ({ selectedValue }) => { + console.log('selectedValue: ', selectedValue); + emit('update:modelValue', dayjs(selectedValue).format('YYYY-MM-DD')); + onClose(); + }, + }), + } + ), + } + ); + }); +} +</script> diff --git a/packages/components/src/index.ts b/packages/components/src/index.ts index 9151df3..1de1c75 100644 --- a/packages/components/src/index.ts +++ b/packages/components/src/index.ts @@ -10,6 +10,7 @@ export { default as ListItem } from './List/ListItem.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'; export { default as ChooseInputWithAreaPicker } from './Input/ChooseInputWithAreaPicker.vue'; export { default as ChooseInputWithAreaSheet } from './Input/ChooseInputWithAreaSheet.vue'; export { default as PreviewImage } from './Image/PreviewImage.vue'; -- Gitblit v1.9.1