wupengfei
2025-12-03 fa5ee26bb701b816efc811c193ee55504a6efd51
feat: 通知
9个文件已修改
152 ■■■■ 已修改文件
apps/bMiniApp/project.private.config.json 11 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
apps/bMiniApp/src/subpackages/login/loginByForm/accountLoginForm.vue 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
apps/bMiniApp/src/subpackages/mine/setting/setting.vue 3 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
apps/bMiniApp/src/subpackages/task/batchTaskList/InnerPage.vue 18 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
apps/bMiniApp/src/subpackages/task/taskManage/InnerPage.vue 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
apps/underTakeMiniApp/src/stores/modules/user.ts 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
apps/underTakeMiniApp/src/subpackages/login/authorization/authorization.vue 3 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
apps/underTakeMiniApp/src/subpackages/login/loginByForm/accountLoginForm.vue 110 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
apps/underTakeMiniApp/src/subpackages/mine/setting/setting.vue 3 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
apps/bMiniApp/project.private.config.json
@@ -26,8 +26,8 @@
                    "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": "待验收-验收详情",
@@ -75,13 +75,6 @@
                    "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
                }
apps/bMiniApp/src/subpackages/login/loginByForm/accountLoginForm.vue
@@ -65,7 +65,6 @@
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({
apps/bMiniApp/src/subpackages/mine/setting/setting.vue
@@ -30,7 +30,7 @@
});
const userStore = useUserStore();
const { isBindWechat } = useUser();
const { isBindWechat, updateUserInfo } = useUser();
const queryClient = useQueryClient();
const userAccount = computed(() => {
@@ -69,6 +69,7 @@
    let res = await authServices.unBindUserWxmpId(params);
    if (res) {
      Message.success('解绑成功');
      updateUserInfo();
    }
  } catch (error) {}
}
apps/bMiniApp/src/subpackages/task/batchTaskList/InnerPage.vue
@@ -25,8 +25,9 @@
        <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>
@@ -41,6 +42,7 @@
  EnumTaskUserArrangeStatus,
  EnumPagedListOrder,
  EnumGetArrangeTaskUsersQueryApplyStatus,
  EnumTaskUserHireStatus,
} from '@12333/constants';
import * as taskUserServices from '@12333/services/apiV2/taskUser';
import _ from 'lodash';
@@ -104,6 +106,20 @@
    }
  } 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">
apps/bMiniApp/src/subpackages/task/taskManage/InnerPage.vue
@@ -40,8 +40,10 @@
              >人员安排</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
            >
apps/underTakeMiniApp/src/stores/modules/user.ts
@@ -141,6 +141,7 @@
        {
          userName: params.userName,
          password: params.password,
          code: params.code,
          // password: md5Encrypt(params.password),
          type: AppLocalConfig.userType,
          clientType: AppLocalConfig.clientType,
apps/underTakeMiniApp/src/subpackages/login/authorization/authorization.vue
@@ -25,7 +25,7 @@
      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()">
@@ -62,7 +62,6 @@
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',
apps/underTakeMiniApp/src/subpackages/login/loginByForm/accountLoginForm.vue
@@ -1,32 +1,47 @@
<template>
  <div class="verification-code-login-form-wrapper">
    <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"
          class="bole-input-text"
          placeholder="请输入账号/手机号/邮箱"
          type="text"
        />
      </nut-form-item>
      <nut-form-item label="" class="bole-form-item" prop="userPassword" required>
        <nut-input
          v-model.trim="form.userPassword"
          class="bole-input-text"
          placeholder="请输入密码"
          :type="isShowPassword ? 'text' : 'password'"
          :key="isShowPassword ? 'text' : 'password'"
        >
          <template #right>
            <div class="password-icon-wrapper" @click="isShowPassword = !isShowPassword">
              <Eye v-if="isShowPassword"></Eye>
              <Marshalling v-else></Marshalling>
            </div>
          </template>
        </nut-input>
      </nut-form-item>
    </nut-form>
    <LargeButton class="login-btn" @click="handleLogin" :loading="form.loading">登录</LargeButton>
    <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"
            class="bole-input-text"
            placeholder="请输入账号/手机号/邮箱"
            type="text"
          />
        </nut-form-item>
        <nut-form-item label="" class="bole-form-item" prop="userPassword" required>
          <nut-input
            v-model.trim="form.userPassword"
            class="bole-input-text"
            placeholder="请输入密码"
            :type="isShowPassword ? 'text' : 'password'"
            :key="isShowPassword ? 'text' : 'password'"
          >
            <template #right>
              <div class="password-icon-wrapper" @click="isShowPassword = !isShowPassword">
                <Eye v-if="isShowPassword"></Eye>
                <Marshalling v-else></Marshalling>
              </div>
            </template>
          </nut-input>
        </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>
@@ -39,6 +54,7 @@
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',
@@ -57,6 +73,8 @@
const isShowPassword = ref(false);
const formRef = ref(null);
const isAccount = ref(false);
const wxMiniAppUserLoginRes = ref<API.LoginCommandCallback>();
const form = reactive({
  loading: false,
@@ -69,8 +87,24 @@
  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) {
@@ -78,6 +112,7 @@
        await userStore.loginByPassword({
          userName: form.userName,
          password: form.userPassword,
          code: loginRes.code,
        });
        jump();
      }
@@ -100,6 +135,27 @@
    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">
apps/underTakeMiniApp/src/subpackages/mine/setting/setting.vue
@@ -30,7 +30,7 @@
});
const userStore = useUserStore();
const { isBindWechat } = useUser();
const { isBindWechat, updateUserInfo } = useUser();
const queryClient = useQueryClient();
const userAccount = computed(() => {
@@ -69,6 +69,7 @@
    let res = await authServices.unBindUserWxmpId(params);
    if (res) {
      Message.success('解绑成功');
      updateUserInfo();
    }
  } catch (error) {}
}