From fa5ee26bb701b816efc811c193ee55504a6efd51 Mon Sep 17 00:00:00 2001
From: wupengfei <834520024@qq.com>
Date: 星期三, 03 十二月 2025 17:51:23 +0800
Subject: [PATCH] feat: 通知

---
 apps/underTakeMiniApp/src/stores/modules/user.ts                             |    1 
 apps/underTakeMiniApp/src/subpackages/mine/setting/setting.vue               |    3 
 apps/underTakeMiniApp/src/subpackages/login/authorization/authorization.vue  |    3 
 apps/bMiniApp/src/subpackages/login/loginByForm/accountLoginForm.vue         |    1 
 apps/bMiniApp/src/subpackages/task/batchTaskList/InnerPage.vue               |   18 +++++
 apps/underTakeMiniApp/src/subpackages/login/loginByForm/accountLoginForm.vue |  110 +++++++++++++++++++++++++++---------
 apps/bMiniApp/src/subpackages/mine/setting/setting.vue                       |    3 
 apps/bMiniApp/src/subpackages/task/taskManage/InnerPage.vue                  |    2 
 apps/bMiniApp/project.private.config.json                                    |   11 ---
 9 files changed, 110 insertions(+), 42 deletions(-)

diff --git a/apps/bMiniApp/project.private.config.json b/apps/bMiniApp/project.private.config.json
index bf03b5e..844cba9 100644
--- a/apps/bMiniApp/project.private.config.json
+++ b/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
                 }
diff --git a/apps/bMiniApp/src/subpackages/login/loginByForm/accountLoginForm.vue b/apps/bMiniApp/src/subpackages/login/loginByForm/accountLoginForm.vue
index 1095240..ae09023 100644
--- a/apps/bMiniApp/src/subpackages/login/loginByForm/accountLoginForm.vue
+++ b/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({
diff --git a/apps/bMiniApp/src/subpackages/mine/setting/setting.vue b/apps/bMiniApp/src/subpackages/mine/setting/setting.vue
index 91110b0..cc30f04 100644
--- a/apps/bMiniApp/src/subpackages/mine/setting/setting.vue
+++ b/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('瑙g粦鎴愬姛');
+      updateUserInfo();
     }
   } catch (error) {}
 }
diff --git a/apps/bMiniApp/src/subpackages/task/batchTaskList/InnerPage.vue b/apps/bMiniApp/src/subpackages/task/batchTaskList/InnerPage.vue
index b66d93b..e41214e 100644
--- a/apps/bMiniApp/src/subpackages/task/batchTaskList/InnerPage.vue
+++ b/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">
diff --git a/apps/bMiniApp/src/subpackages/task/taskManage/InnerPage.vue b/apps/bMiniApp/src/subpackages/task/taskManage/InnerPage.vue
index ca5ddd0..77ebbdc 100644
--- a/apps/bMiniApp/src/subpackages/task/taskManage/InnerPage.vue
+++ b/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
             >
diff --git a/apps/underTakeMiniApp/src/stores/modules/user.ts b/apps/underTakeMiniApp/src/stores/modules/user.ts
index 5fc3404..8af4cda 100644
--- a/apps/underTakeMiniApp/src/stores/modules/user.ts
+++ b/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,
diff --git a/apps/underTakeMiniApp/src/subpackages/login/authorization/authorization.vue b/apps/underTakeMiniApp/src/subpackages/login/authorization/authorization.vue
index cd8af0c..6fcdefb 100644
--- a/apps/underTakeMiniApp/src/subpackages/login/authorization/authorization.vue
+++ b/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',
diff --git a/apps/underTakeMiniApp/src/subpackages/login/loginByForm/accountLoginForm.vue b/apps/underTakeMiniApp/src/subpackages/login/loginByForm/accountLoginForm.vue
index 61dc409..a13ad5f 100644
--- a/apps/underTakeMiniApp/src/subpackages/login/loginByForm/accountLoginForm.vue
+++ b/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">
diff --git a/apps/underTakeMiniApp/src/subpackages/mine/setting/setting.vue b/apps/underTakeMiniApp/src/subpackages/mine/setting/setting.vue
index 91110b0..cc30f04 100644
--- a/apps/underTakeMiniApp/src/subpackages/mine/setting/setting.vue
+++ b/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('瑙g粦鎴愬姛');
+      updateUserInfo();
     }
   } catch (error) {}
 }

--
Gitblit v1.9.1