| | |
| | | "name": "灵工详情", |
| | | "pathName": "subpackages/flexJob/flexJobDetailFromTask/flexJobDetailFromTask", |
| | | "query": "enterpriseEmployeeId=304f7e38-b973-478c-88aa-08ddf02e3176&id=ddecb887-8273-449b-6bcd-08de20009bf4&taskInfoId=ec3f301e-fa95-47a1-b8ee-08de1da3c153", |
| | | "scene": null, |
| | | "launchMode": "default" |
| | | "launchMode": "default", |
| | | "scene": null |
| | | }, |
| | | { |
| | | "name": "待验收-验收详情", |
| | |
| | | "name": "发薪详情", |
| | | "pathName": "subpackages/payrollManage/payrollManageDetail/payrollManageDetail", |
| | | "query": "id=ed553142-801d-40b4-5582-08de0fa2a04b&operatorToken=627f56a2-d8a2-4606-b69f-36eadf770ecb", |
| | | "launchMode": "default", |
| | | "scene": null |
| | | }, |
| | | { |
| | | "name": "", |
| | | "pathName": "subpackages/login/loginByForm/loginByForm", |
| | | "query": "redirect=%2Fpages%2Fmine%2Findex&%24taroTimestamp=1764663566375", |
| | | "launchMode": "default", |
| | | "scene": null |
| | | } |
| | |
| | | import { useUserStore } from '@/stores/modules/user'; |
| | | import { Eye, Marshalling } from '@nutui/icons-vue-taro'; |
| | | import Taro from '@tarojs/taro'; |
| | | import { AccessOpenTypeButton } from '@12333/components'; |
| | | import * as authServices from '@12333/services/apiV2/auth'; |
| | | |
| | | defineOptions({ |
| | |
| | | }); |
| | | |
| | | const userStore = useUserStore(); |
| | | const { isBindWechat } = useUser(); |
| | | const { isBindWechat, updateUserInfo } = useUser(); |
| | | const queryClient = useQueryClient(); |
| | | |
| | | const userAccount = computed(() => { |
| | |
| | | let res = await authServices.unBindUserWxmpId(params); |
| | | if (res) { |
| | | Message.success('解绑成功'); |
| | | updateUserInfo(); |
| | | } |
| | | } catch (error) {} |
| | | } |
| | |
| | | <template #footerRight> |
| | | <template v-if="showQueryState"> |
| | | <nut-button type="primary" @click.stop="handleArrange(item)">安排</nut-button> |
| | | <nut-button type="primary" @click.stop="handleArrange(item)">取消录用</nut-button> |
| | | <nut-button type="primary" @click.stop="setTaskUserHire(item)">取消录用</nut-button> |
| | | </template> |
| | | |
| | | <div v-else class="batch-task-card-status">已安排</div> |
| | | </template> |
| | | </FlexJobCard> |
| | |
| | | EnumTaskUserArrangeStatus, |
| | | EnumPagedListOrder, |
| | | EnumGetArrangeTaskUsersQueryApplyStatus, |
| | | EnumTaskUserHireStatus, |
| | | } from '@12333/constants'; |
| | | import * as taskUserServices from '@12333/services/apiV2/taskUser'; |
| | | import _ from 'lodash'; |
| | |
| | | } |
| | | } catch (error) {} |
| | | } |
| | | |
| | | async function setTaskUserHire(row: API.GetArrangeTaskUsersQueryResultItem) { |
| | | try { |
| | | let params: API.SetTaskUserHireCommand = { |
| | | id: row.id, |
| | | hireStatus: EnumTaskUserHireStatus.Cancel, |
| | | }; |
| | | let res = await taskUserServices.setTaskUserHire(params); |
| | | if (res) { |
| | | Message.success('已取消录用'); |
| | | invalidateQueries(); |
| | | } |
| | | } catch (error) {} |
| | | } |
| | | </script> |
| | | |
| | | <style lang="scss"> |
| | |
| | | >人员安排</nut-button |
| | | > |
| | | <nut-button |
| | | v-if="item.status === EnumTaskStatus.Wait" |
| | | type="primary" |
| | | class="dark-btn" |
| | | :color="Colors.Info" |
| | | @click.stop="goBatchTaskList(item, EnumTaskUserArrangeStatus.Wait)" |
| | | >取消录用</nut-button |
| | | > |
| | |
| | | { |
| | | userName: params.userName, |
| | | password: params.password, |
| | | code: params.code, |
| | | // password: md5Encrypt(params.password), |
| | | type: AppLocalConfig.userType, |
| | | clientType: AppLocalConfig.clientType, |
| | |
| | | v-model="state.policyChecked" |
| | | policyBtnText="若手机号未注册,将为您直接注册账号,注册即为同意" |
| | | /> |
| | | <div class="other-login-channel-wrapper" v-if="NODE_ENV === 'development'"> |
| | | <div class="other-login-channel-wrapper" v-if="!isLoginByWeb"> |
| | | <nut-divider>其他登录方式</nut-divider> |
| | | <div class="other-login-channel-list"> |
| | | <div class="other-login-channel-list-item" @click="goLoginByForm()"> |
| | |
| | | import { LoginFormTabs } from '../constants'; |
| | | import * as authServices from '@12333/services/apiV2/auth'; |
| | | import { subscribeMessageTemplateIdsForU } from '@12333/constants'; |
| | | import { NODE_ENV } from '@/constants'; |
| | | |
| | | defineOptions({ |
| | | name: 'authorization', |
| | |
| | | <template> |
| | | <div class="verification-code-login-form-wrapper"> |
| | | <nut-form class="verification-code-login-form" ref="formRef" :model-value="form" :rules="rules"> |
| | | <nut-button |
| | | v-if="isAccount" |
| | | type="primary" |
| | | class="authorization-page-wechat-wrapper" |
| | | @click="handleLoginByHasAccount" |
| | | > |
| | | <div class="authorization-page-wechat">手机号快速登录</div></nut-button |
| | | > |
| | | <template v-else> |
| | | <nut-form |
| | | class="verification-code-login-form" |
| | | ref="formRef" |
| | | :model-value="form" |
| | | :rules="rules" |
| | | > |
| | | <nut-form-item label="" class="bole-form-item" prop="userName" required> |
| | | <nut-input |
| | | v-model.trim="form.userName" |
| | |
| | | </nut-form-item> |
| | | </nut-form> |
| | | <LargeButton class="login-btn" @click="handleLogin" :loading="form.loading">登录</LargeButton> |
| | | </template> |
| | | <!-- <div class="go-register-btn" @click="goRegister">立即注册</div> --> |
| | | </div> |
| | | </template> |
| | |
| | | import { useUserStore } from '@/stores/modules/user'; |
| | | import { Eye, Marshalling } from '@nutui/icons-vue-taro'; |
| | | import Taro from '@tarojs/taro'; |
| | | import * as authServices from '@12333/services/apiV2/auth'; |
| | | |
| | | defineOptions({ |
| | | name: 'AccountLoginForm', |
| | |
| | | const isShowPassword = ref(false); |
| | | |
| | | const formRef = ref(null); |
| | | const isAccount = ref(false); |
| | | const wxMiniAppUserLoginRes = ref<API.LoginCommandCallback>(); |
| | | |
| | | const form = reactive({ |
| | | loading: false, |
| | |
| | | userPassword: [{ required: true, message: '请输入密码' }], |
| | | }); |
| | | |
| | | async function handleLoginByHasAccount() { |
| | | try { |
| | | if (props.policyChecked) { |
| | | userStore.loginSuccess(wxMiniAppUserLoginRes.value); |
| | | Message.success('登录成功', { |
| | | onClosed: () => { |
| | | jump(); |
| | | }, |
| | | }); |
| | | } else { |
| | | noAccess(); |
| | | } |
| | | } catch (error) {} |
| | | } |
| | | |
| | | async function handleLogin() { |
| | | try { |
| | | let loginRes = await Taro.login(); |
| | | if (props.policyChecked) { |
| | | const { valid } = await formRef.value.validate(); |
| | | if (valid) { |
| | |
| | | await userStore.loginByPassword({ |
| | | userName: form.userName, |
| | | password: form.userPassword, |
| | | code: loginRes.code, |
| | | }); |
| | | jump(); |
| | | } |
| | |
| | | url: RouterPath.registerForm, |
| | | }); |
| | | } |
| | | |
| | | onMounted(async () => { |
| | | try { |
| | | let loginRes = await Taro.login(); |
| | | const params: API.WxmpLoginCommand = { |
| | | code: loginRes.code, |
| | | type: AppLocalConfig.userType, |
| | | enterpriseType: AppLocalConfig.enterpriseType, |
| | | }; |
| | | wxMiniAppUserLoginRes.value = await authServices.wxmpLogin(params, { |
| | | skipErrorHandler: true, |
| | | }); |
| | | if (wxMiniAppUserLoginRes.value?.isBindPhoneNumber) { |
| | | isAccount.value = true; |
| | | } |
| | | } catch (error) { |
| | | if (error?.info?.errorCode == 's401') { |
| | | isAccount.value = false; |
| | | } |
| | | } |
| | | }); |
| | | </script> |
| | | |
| | | <style lang="scss"> |
| | |
| | | }); |
| | | |
| | | const userStore = useUserStore(); |
| | | const { isBindWechat } = useUser(); |
| | | const { isBindWechat, updateUserInfo } = useUser(); |
| | | const queryClient = useQueryClient(); |
| | | |
| | | const userAccount = computed(() => { |
| | |
| | | let res = await authServices.unBindUserWxmpId(params); |
| | | if (res) { |
| | | Message.success('解绑成功'); |
| | | updateUserInfo(); |
| | | } |
| | | } catch (error) {} |
| | | } |