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