| | |
| | | export enum RouterPath { |
| | | authorization = '/subpackages/login/authorization/authorization', |
| | | //B端统一跳转密码登录 |
| | | authorization = '/subpackages/login/loginByForm/loginByForm', |
| | | userPolicy = '/subpackages/login/userPolicy/userPolicy', |
| | | loginByForm = '/subpackages/login/loginByForm/loginByForm', |
| | | mineUserPolicy = '/subpackages/login/mineUserPolicy/mineUserPolicy', |
| | |
| | | |
| | | const { locationCity } = useUser(); |
| | | |
| | | onMounted(async () => { |
| | | try { |
| | | await setLocationCity(); |
| | | } catch (error) {} |
| | | }); |
| | | |
| | | const userStore = useUserStore(); |
| | | |
| | | const queryMenuState = reactive({ |
| | |
| | | </nut-form-item> |
| | | <nut-form-item label="公司所在地" class="bole-form-item" prop="areaList" required> |
| | | <ChooseInputWithAreaPicker |
| | | :columns="areaTreeList" |
| | | :columns="areaTree" |
| | | v-model="form.areaList" |
| | | placeholder="请选择您公司的所在地" |
| | | ></ChooseInputWithAreaPicker> |
| | |
| | | import { FormRules } from '@nutui/nutui-taro/dist/types/__VUE/form/types'; |
| | | import Taro from '@tarojs/taro'; |
| | | import { goBack } from '@/utils'; |
| | | import { useAllAreaList } from '@12333/hooks'; |
| | | import { useAreaTree } from '@12333/hooks'; |
| | | import { useQuery } from '@tanstack/vue-query'; |
| | | import { AreaType } from '@12333/constants'; |
| | | |
| | | defineOptions({ |
| | | name: 'InnerPage', |
| | | }); |
| | | |
| | | const { userDetail } = useUser(); |
| | | const { areaTreeList } = useAllAreaList(); |
| | | const { areaTree } = useAreaTree({ |
| | | maxLayer: AreaType.City, |
| | | }); |
| | | const router = Taro.useRouter(); |
| | | const taskId = router.params?.taskId ?? ''; |
| | | |
| | | const form = reactive({ |
| | | avatarUrl: [], |
| | | name: '', |
| | | areaList: [] as number[], |
| | | areaList: [] as string[], |
| | | }); |
| | | |
| | | const rules = reactive<FormRules>({ |
| | |
| | | list: cityGroups[key].map((x) => ({ |
| | | name: x.areaName, |
| | | id: x.areaCode, |
| | | parentId: x.parentId, |
| | | parentId: x.parentCode, |
| | | })), |
| | | }); |
| | | } |
| | |
| | | name: 'InnerPage', |
| | | }); |
| | | |
| | | const { queryMenuState, infiniteLoadingProps, invalidateQueries } = useTaskList(); |
| | | const { queryMenuState, infiniteLoadingProps, invalidateQueries } = useTaskList({ |
| | | defaultQueryMenuState: { |
| | | releaseStatus: EnumTaskReleaseStatus.InProcess, |
| | | }, |
| | | }); |
| | | |
| | | const releaseing = computed(() => { |
| | | return infiniteLoadingProps.value?.listData?.pages?.[0]?.objectData?.inProcessReleaseCount ?? 0; |
| | |
| | | <LoginPageLayout class="loginByForm-page-wrapper"> |
| | | <div class="loginB-form-wrapper"> |
| | | <div class="loginB-form-tab"> |
| | | <div |
| | | <!-- <div |
| | | :class="[ |
| | | 'loginB-form-tab-item', |
| | | { active: tabType === LoginFormTabs.VerificationCodeLogin }, |
| | |
| | | <div class="loginB-form-tab-item-text">验证码登录</div> |
| | | <div class="loginB-form-tab-item-line"></div> |
| | | </div> |
| | | </div> |
| | | </div> --> |
| | | <div |
| | | :class="['loginB-form-tab-item', { active: tabType === LoginFormTabs.AccountLogin }]" |
| | | @click="handleTabChange(LoginFormTabs.AccountLogin)" |
| | |
| | | |
| | | const router = Taro.useRouter(); |
| | | |
| | | const tabType = ref(Number(router.params?.tab ?? LoginFormTabs.VerificationCodeLogin)); |
| | | const tabType = ref(Number(router.params?.tab ?? LoginFormTabs.AccountLogin)); |
| | | |
| | | function handleTabChange(tab: LoginFormTabs) { |
| | | tabType.value = tab; |
| | |
| | | name: 'InnerPage', |
| | | }); |
| | | |
| | | const { queryMenuState, infiniteLoadingProps } = useTaskList({ |
| | | defaultQueryMenuState: { |
| | | status: EnumTaskStatus.Wait, |
| | | }, |
| | | }); |
| | | const { queryMenuState, infiniteLoadingProps } = useTaskList(); |
| | | |
| | | const completedAssignCount = computed(() => { |
| | | return infiniteLoadingProps.value?.listData?.pages?.[0]?.objectData?.completedAssignCount ?? 0; |
| | |
| | | "description": "", |
| | | "setting": { |
| | | "urlCheck": false, |
| | | "es6": false, |
| | | "enhance": false, |
| | | "es6": true, |
| | | "enhance": true, |
| | | "postcss": false, |
| | | "preloadBackgroundData": false, |
| | | "minified": false, |
| | |
| | | ); |
| | | }, |
| | | placeholderData: () => ({} as API.GetPersonalLoginInfoQueryResult), |
| | | enabled: isLogin, |
| | | }); |
| | | |
| | | function goLogin() { |
| | |
| | | }); |
| | | |
| | | const clickItem = (key: string, item: any) => { |
| | | console.log('item: ', item, 1111); |
| | | // userStore.setLocationCity(item.name, getAreaByAreaCode(item.parentId).areaName); |
| | | userStore.setLocationCity(item.name, getAreaByAreaCode(item.parentId).areaName); |
| | | }; |
| | | |
| | | async function resetLocation() { |
| | |
| | | </div> |
| | | <div class="other-login-channel-list-item-text">验证码登录</div> |
| | | </div> |
| | | <div |
| | | <!-- <div |
| | | class="other-login-channel-list-item" |
| | | @click="goLoginByForm(LoginFormTabs.AccountLogin)" |
| | | > |
| | |
| | | <img :src="IconPassword" /> |
| | | </div> |
| | | <div class="other-login-channel-list-item-text">账户登录</div> |
| | | </div> |
| | | </div> --> |
| | | </div> |
| | | </div> |
| | | </LoginPageLayout> |
| | |
| | | <div class="loginB-form-tab-item-line"></div> |
| | | </div> |
| | | </div> |
| | | <div |
| | | <!-- <div |
| | | :class="['loginB-form-tab-item', { active: tabType === LoginFormTabs.AccountLogin }]" |
| | | @click="handleTabChange(LoginFormTabs.AccountLogin)" |
| | | > |
| | |
| | | <div class="loginB-form-tab-item-text">账户登录</div> |
| | | <div class="loginB-form-tab-item-line"></div> |
| | | </div> |
| | | </div> |
| | | </div> --> |
| | | </div> |
| | | <VerificationCodeLoginForm |
| | | v-show="tabType === LoginFormTabs.VerificationCodeLogin" |
| | |
| | | </template> |
| | | |
| | | <script setup lang="ts"> |
| | | import { useAllAreaList } from '@12333/hooks'; |
| | | import { useAllAreaList, useAreaTree } from '@12333/hooks'; |
| | | import Category from './Category.vue'; |
| | | import CategoryPane from './CategoryPane.vue'; |
| | | import { reactive, computed, watch } from 'vue'; |
| | |
| | | // }, |
| | | // }); |
| | | |
| | | const { areaTreeList } = useAllAreaList(); |
| | | const { areaTree } = useAreaTree(); |
| | | |
| | | const state = reactive({ |
| | | provinceIndex: 0, |
| | | preModelValue: props.modelValue, |
| | | }); |
| | | |
| | | const provinceList = computed(() => areaTreeList.value.map((x) => ({ ...x, name: x.areaName }))); |
| | | const provinceList = computed(() => areaTree.value.map((x) => ({ ...x, name: x.areaName }))); |
| | | const categoryChild = computed(() => { |
| | | if (!provinceList.value.length) { |
| | | return []; |
| | |
| | | import { flattenAreaTree, formatAreaListToTree } from '@12333/utils'; |
| | | import { useQuery, useQueryClient } from '@tanstack/vue-query'; |
| | | import { computed, onMounted, onUnmounted, ref } from 'vue'; |
| | | import { computed, MaybeRef, onMounted, onUnmounted, ref, unref } from 'vue'; |
| | | import { AreaType, CategoryCode } from '@12333/constants'; |
| | | import Taro, { EventChannel } from '@tarojs/taro'; |
| | | import { useDictionaryDataSelect } from './dic'; |
| | |
| | | export function useArea() { |
| | | const queryClient = useQueryClient(); |
| | | |
| | | const { dictionaryDataList } = useDictionaryDataSelect({ |
| | | categoryCode: CategoryCode.Area, |
| | | staleTime: Infinity, |
| | | all: true, |
| | | maxDeep: AreaType.Area, |
| | | }); |
| | | const { areaList } = useAllAreaList(); |
| | | |
| | | const areaList = computed(() => dictionaryDataList.value.map(convertDictionaryToAreaTreeNode)); |
| | | |
| | | // const areaTree = computed(() => formatAreaListToTree(areaList.value)); |
| | | // const areaList = computed(() => dictionaryDataList.value.map(convertDictionaryToAreaTreeNode)); |
| | | |
| | | function getAreaFromCompleteAreaList(areaCode: string) { |
| | | return areaList.value.find((x) => x.areaCode === areaCode); |
| | |
| | | }; |
| | | } |
| | | |
| | | export function useAreaTree() { |
| | | axios.get('https://parkmanagement.oss-cn-hangzhou.aliyuncs.com/12333/area.txt').then((res) => { |
| | | console.log(res); |
| | | }); |
| | | const { data } = useQuery({ |
| | | queryKey: ['area.txt'], |
| | | queryFn() { |
| | | return axios |
| | | .get<API.AreaTreeNode[]>( |
| | | 'https://parkmanagement.oss-cn-hangzhou.aliyuncs.com/12333/area.txt' |
| | | ) |
| | | .then((res) => res.data); |
| | | }, |
| | | type UseAreaTreeOptions = { |
| | | maxLayer?: MaybeRef<AreaType>; |
| | | }; |
| | | |
| | | placeholderData: () => [] as API.AreaTreeNode[], |
| | | }); |
| | | export function useAreaTree(options = {} as UseAreaTreeOptions) { |
| | | const { maxLayer = AreaType.Area } = options; |
| | | |
| | | const areaTree = computed(() => formatAreaListToTree(data.value)); |
| | | const { areaList } = useAllAreaList(); |
| | | |
| | | const areaTree = computed(() => formatAreaListToTree(areaList.value, null, unref(maxLayer))); |
| | | |
| | | return { areaTree: areaTree }; |
| | | } |
| | |
| | | } |
| | | |
| | | export function useAllAreaList() { |
| | | const { areaList } = useArea(); |
| | | const { data: areaList } = useQuery({ |
| | | queryKey: ['area.txt'], |
| | | queryFn() { |
| | | return axios |
| | | .get<API.AreaTreeNode[]>( |
| | | 'https://parkmanagement.oss-cn-hangzhou.aliyuncs.com/12333/area.txt' |
| | | ) |
| | | .then((res) => res.data); |
| | | }, |
| | | |
| | | placeholderData: () => [] as API.AreaTreeNode[], |
| | | staleTime: Infinity, |
| | | }); |
| | | |
| | | const findAreaCodeFromName = (areaName: string) => { |
| | | const areaItem = areaList.value.find((x) => x.areaName === areaName); |
| | |
| | | settlementCycle: '' as any as EnumSettlementCycle, |
| | | benefitCodes: '', |
| | | status: '' as any as EnumTaskStatus, |
| | | releaseStatus: EnumTaskReleaseStatus.InProcess, |
| | | releaseStatus: '' as any as EnumTaskReleaseStatus, |
| | | checkReceiveStatus: '' as any as EnumTaskCheckReceiveStatus, |
| | | enterpriseId: '', |
| | | time: '' as any as Date, |