From 36f2c20ea3df022390b677e782d8a4cd25f21f69 Mon Sep 17 00:00:00 2001
From: zhengyiming <540361168@qq.com>
Date: 星期三, 22 十月 2025 17:02:25 +0800
Subject: [PATCH] Merge branch 'master' of http://120.26.58.240:8888/r/flexJobMiniApp

---
 apps/bMiniApp/src/app.config.ts                                                    |    6 
 apps/bMiniApp/src/subpackages/payrollManage/payrollChange/payrollChange.config.ts  |    3 
 apps/bMiniApp/src/subpackages/task/taskCheck/InnerPage.vue                         |   47 +++++--
 apps/cMiniApp/src/subpackages/mine/setting/setting.vue                             |   14 ++
 apps/bMiniApp/src/subpackages/task/components/TaskCheckCard.vue                    |   73 +++++++++++
 apps/bMiniApp/src/subpackages/payrollManage/payrollChange/payrollChange.vue        |   17 ++
 apps/bMiniApp/src/constants/router.ts                                              |    1 
 apps/bMiniApp/src/subpackages/payrollManage/payrollManageDetail/InnerPage.vue      |   20 +++
 apps/bMiniApp/src/subpackages/payrollManage/payrollChange/InnerPage.vue            |  144 ++++++++++++++++++++++++
 apps/bMiniApp/src/subpackages/payrollManage/components/PayrollManageDetailCard.vue |    2 
 apps/bMiniApp/src/components/PageFooter/PageFooterBtn.vue                          |    2 
 apps/bMiniApp/project.config.json                                                  |    4 
 12 files changed, 307 insertions(+), 26 deletions(-)

diff --git a/apps/bMiniApp/project.config.json b/apps/bMiniApp/project.config.json
index de908b8..34b7823 100644
--- a/apps/bMiniApp/project.config.json
+++ b/apps/bMiniApp/project.config.json
@@ -3,8 +3,8 @@
     "description": "",
     "setting": {
         "urlCheck": false,
-        "es6": false,
-        "enhance": false,
+        "es6": true,
+        "enhance": true,
         "postcss": false,
         "preloadBackgroundData": false,
         "minified": false,
diff --git a/apps/bMiniApp/src/app.config.ts b/apps/bMiniApp/src/app.config.ts
index 72894c0..2b04637 100644
--- a/apps/bMiniApp/src/app.config.ts
+++ b/apps/bMiniApp/src/app.config.ts
@@ -122,7 +122,11 @@
     },
     {
       root: 'subpackages/payrollManage',
-      pages: ['payrollManage/payrollManage', 'payrollManageDetail/payrollManageDetail'],
+      pages: [
+        'payrollManage/payrollManage',
+        'payrollManageDetail/payrollManageDetail',
+        'payrollChange/payrollChange',
+      ],
     },
     {
       root: 'subpackages/extraPage',
diff --git a/apps/bMiniApp/src/components/PageFooter/PageFooterBtn.vue b/apps/bMiniApp/src/components/PageFooter/PageFooterBtn.vue
index 204c530..3429f38 100644
--- a/apps/bMiniApp/src/components/PageFooter/PageFooterBtn.vue
+++ b/apps/bMiniApp/src/components/PageFooter/PageFooterBtn.vue
@@ -19,7 +19,7 @@
 <style lang="scss">
 @import '@/styles/common.scss';
 
-.page-footer-btn {
+.page-footer-btn.h5-button {
   flex: 1;
   min-width: 0;
   height: 88px;
diff --git a/apps/bMiniApp/src/constants/router.ts b/apps/bMiniApp/src/constants/router.ts
index 6ac8cc0..f39368a 100644
--- a/apps/bMiniApp/src/constants/router.ts
+++ b/apps/bMiniApp/src/constants/router.ts
@@ -26,6 +26,7 @@
 
   payrollManage = '/subpackages/payrollManage/payrollManage/payrollManage',
   payrollManageDetail = '/subpackages/payrollManage/payrollManageDetail/payrollManageDetail',
+  payrollChange = '/subpackages/payrollManage/payrollChange/payrollChange',
 
   authenticationHome = '/subpackages/authentication/authenticationHome/authenticationHome',
   authenticationResult = '/subpackages/authentication/authenticationResult/authenticationResult',
diff --git a/apps/bMiniApp/src/subpackages/payrollManage/components/PayrollManageDetailCard.vue b/apps/bMiniApp/src/subpackages/payrollManage/components/PayrollManageDetailCard.vue
index 43ff9d8..73231b3 100644
--- a/apps/bMiniApp/src/subpackages/payrollManage/components/PayrollManageDetailCard.vue
+++ b/apps/bMiniApp/src/subpackages/payrollManage/components/PayrollManageDetailCard.vue
@@ -13,10 +13,10 @@
               {{ `楼${toThousand(settlementAmount)}` }}
             </div>
           </div>
-          <slot name="actions"></slot>
         </div>
       </template>
     </FlexJobTopView>
+    <slot name="actions"></slot>
   </div>
 </template>
 
diff --git a/apps/bMiniApp/src/subpackages/payrollManage/payrollChange/InnerPage.vue b/apps/bMiniApp/src/subpackages/payrollManage/payrollChange/InnerPage.vue
new file mode 100644
index 0000000..bdf8ebf
--- /dev/null
+++ b/apps/bMiniApp/src/subpackages/payrollManage/payrollChange/InnerPage.vue
@@ -0,0 +1,144 @@
+<template>
+  <ContentScrollView :paddingH="false">
+    <nut-form :model-value="form" ref="formRef" :rules="rules">
+      <nut-form-item label="鏈嶅姟璐�:" class="bole-form-item" prop="serviceFee" label-width="90px">
+        <div class="bole-form-input-wrapper">
+          <NumberInput
+            v-model.trim="form.serviceFee"
+            class="nut-input-text bole-input-text"
+            placeholder="璇疯緭鍏ユ湇鍔¤垂"
+            :min="0"
+            :max="999999999999"
+            :precision="2"
+            type="text"
+          />
+          <div class="form-input-unit">鍏�</div>
+        </div>
+      </nut-form-item>
+      <nut-form-item label="瓒呮椂:" class="bole-form-item" prop="serviceFee" label-width="90px">
+        <div class="bole-form-input-wrapper">
+          <NumberInput
+            v-model.trim="form.serviceFee"
+            class="nut-input-text bole-input-text"
+            placeholder="璇疯緭鍏ヨ秴鏃舵椂闀�"
+            :min="0"
+            :max="999999999999"
+            :precision="2"
+            type="text"
+          />
+          <div class="form-input-unit">灏忔椂</div>
+        </div>
+      </nut-form-item>
+      <nut-form-item label="瓒呮椂璐圭敤:" class="bole-form-item" prop="serviceFee" label-width="90px">
+        <div class="bole-form-input-wrapper">
+          <NumberInput
+            v-model.trim="form.serviceFee"
+            class="nut-input-text bole-input-text"
+            placeholder="璇疯緭鍏ヨ秴鏃惰垂鐢�"
+            :min="0"
+            :max="999999999999"
+            :precision="2"
+            type="text"
+          />
+          <div class="form-input-unit">鍏�</div>
+        </div>
+      </nut-form-item>
+      <nut-form-item label="鍏朵粬璐圭敤:" class="bole-form-item" prop="serviceFee" label-width="90px">
+        <div class="bole-form-input-wrapper">
+          <NumberInput
+            v-model.trim="form.serviceFee"
+            class="nut-input-text bole-input-text"
+            placeholder="璇疯緭鍏ュ叾浠栬垂鐢�"
+            :min="0"
+            :max="999999999999"
+            :precision="2"
+            type="text"
+          />
+          <div class="form-input-unit">鍏�</div>
+        </div>
+      </nut-form-item>
+      <nut-form-item label="寮�鎴疯:" class="bole-form-item" prop="bank" label-width="90px">
+        {{ `缁撶畻璐圭敤${0}鍏僠 }}
+      </nut-form-item>
+      <nut-form-item label="澶囨敞:" class="bole-form-item" prop="remark" label-width="90px">
+        <nut-textarea v-model="form.remark" rows="4" placeholder="璇疯緭鍏ュ娉�"> </nut-textarea>
+      </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 { NumberInput } from '@12333/components';
+import { FormValidator, Message } from '@12333/utils';
+import * as userServices from '@12333/services/apiV2/user';
+import { EnumUserBankCardAccess } from '@12333/constants';
+import { goBack } from '@/utils';
+
+defineOptions({
+  name: 'InnerPage',
+});
+const { userDetail, updateUserInfo } = useUser();
+
+const form = reactive({
+  serviceFee: '' as any as number,
+  remark: '',
+});
+
+const rules = reactive<FormRules>({
+  code: [
+    { required: true, message: '璇疯緭鍏ラ摱琛屽崱鍙�' },
+    { message: '璇疯緭鍏ユ纭殑閾惰鍗″彿', validator: FormValidator.validatorBankCard },
+  ],
+  bank: [{ required: true, message: '璇疯緭鍏ュ紑鎴疯' }],
+  phoneNumber: [
+    { required: true, message: '璇峰~鍐欐墜鏈哄彿鐮�' },
+    { message: '璇疯緭鍏ユ纭殑鎵嬫満鍙风爜', validator: FormValidator.validatorPhoneNumber },
+  ],
+  verifyCode: [{ required: true, message: '璇疯緭鍏ラ獙璇佺爜' }],
+});
+
+const formRef = ref<any>(null);
+function handleConfirm() {
+  if (!formRef.value) return;
+  formRef.value.validate().then(({ valid, errors }: any) => {
+    if (valid) {
+      confirm();
+    }
+  });
+}
+
+async function confirm() {
+  try {
+    let params: API.SavePersonalUserBankCardCommand = {};
+    let res = await userServices.savePersonalUserBankCard(params);
+    if (res) {
+      Message.success('淇敼鎴愬姛', {
+        onClosed() {
+          goBack();
+        },
+      });
+    }
+  } catch (error) {}
+}
+</script>
+
+<style lang="scss">
+@import '@/styles/common.scss';
+
+.payrollChange-page-wrapper {
+  .bole-form-input-wrapper {
+    display: flex;
+    align-items: center;
+  }
+
+  .form-input-unit {
+    margin-left: 10px;
+    color: boleGetCssVar('text-color', 'primary');
+    flex-shrink: 0;
+  }
+}
+</style>
diff --git a/apps/bMiniApp/src/subpackages/payrollManage/payrollChange/payrollChange.config.ts b/apps/bMiniApp/src/subpackages/payrollManage/payrollChange/payrollChange.config.ts
new file mode 100644
index 0000000..305fdb1
--- /dev/null
+++ b/apps/bMiniApp/src/subpackages/payrollManage/payrollChange/payrollChange.config.ts
@@ -0,0 +1,3 @@
+export default definePageConfig({
+  disableScroll: true,
+});
diff --git a/apps/bMiniApp/src/subpackages/payrollManage/payrollChange/payrollChange.vue b/apps/bMiniApp/src/subpackages/payrollManage/payrollChange/payrollChange.vue
new file mode 100644
index 0000000..52cf4ff
--- /dev/null
+++ b/apps/bMiniApp/src/subpackages/payrollManage/payrollChange/payrollChange.vue
@@ -0,0 +1,17 @@
+<template>
+  <PageLayout class="payrollChange-page-wrapper" title="淇敼" has-border>
+    <InnerPage></InnerPage>
+  </PageLayout>
+</template>
+
+<script setup lang="ts">
+import InnerPage from './InnerPage.vue';
+
+defineOptions({
+  name: 'payrollChange',
+});
+</script>
+
+<style lang="scss">
+@import '@/styles/common.scss';
+</style>
diff --git a/apps/bMiniApp/src/subpackages/payrollManage/payrollManageDetail/InnerPage.vue b/apps/bMiniApp/src/subpackages/payrollManage/payrollManageDetail/InnerPage.vue
index 51959e7..c7075ee 100644
--- a/apps/bMiniApp/src/subpackages/payrollManage/payrollManageDetail/InnerPage.vue
+++ b/apps/bMiniApp/src/subpackages/payrollManage/payrollManageDetail/InnerPage.vue
@@ -60,7 +60,13 @@
           :isReal="item.isReal"
           :totalWorkHours="item.totalWorkHours"
           :settlementAmount="item.settlementAmount"
-        />
+        >
+          <template #actions>
+            <div class="payroll-manage-detail-card-actions">
+              <nut-button type="primary" plain @click="goPayrollChange(item)">淇敼</nut-button>
+            </div>
+          </template>
+        </PayrollManageDetailCard>
       </template>
     </InfiniteLoading>
     <PageFooter v-if="form.auditStatus === EnumTaskSettlementAuditStatus.Wait">
@@ -183,6 +189,12 @@
     }
   } catch (error) {}
 }
+
+function goPayrollChange(item: API.GetSettlementTaskUsersQueryResultItem) {
+  Taro.navigateTo({
+    url: `${RouterPath.payrollChange}?id=${item.id}`,
+  });
+}
 </script>
 
 <style lang="scss">
@@ -218,5 +230,11 @@
       }
     }
   }
+
+  .payroll-manage-detail-card-actions {
+    --nut-button-default-height: 24px;
+
+    text-align: right;
+  }
 }
 </style>
diff --git a/apps/bMiniApp/src/subpackages/task/components/TaskCheckCard.vue b/apps/bMiniApp/src/subpackages/task/components/TaskCheckCard.vue
index 801c3ee..c74a2cc 100644
--- a/apps/bMiniApp/src/subpackages/task/components/TaskCheckCard.vue
+++ b/apps/bMiniApp/src/subpackages/task/components/TaskCheckCard.vue
@@ -10,7 +10,7 @@
     >
       <template #actions>
         <template v-if="checkReceiveMethod === EnumTaskCheckReceiveMethod.CheckIn">
-          <nut-button
+          <!-- <nut-button
             v-if="!checkInTime"
             type="primary"
             class="task-check-card-phone-btn"
@@ -26,7 +26,10 @@
           >
           <div v-else class="task-check-card-phone-status" :style="{ color: Colors.Success }">
             {{ EnumTaskCheckReceiveStatusText[checkReceiveStatus] }}
-          </div>
+          </div> -->
+          <nut-button type="primary" class="task-check-card-phone-btn" @click.stop="handleMore"
+            >鎿嶄綔</nut-button
+          >
         </template>
         <template v-else>
           <nut-button
@@ -54,10 +57,18 @@
   EnumTaskCheckReceiveMethod,
 } from '@12333/constants';
 import { CheckInOrOutEventEnum } from '../constants';
+import { Portal } from 'senin-mini/components';
+import { ActionSheet } from '@nutui/nutui-taro';
 
 defineOptions({
   name: 'TaskCheckCard',
 });
+
+enum ManageActions {
+  CheckIn = 1,
+  CheckOut,
+  OutWork,
+}
 
 type Props = {
   avatar?: string;
@@ -79,6 +90,64 @@
   (e: 'checkReceive'): void;
   (e: 'checkInOrOut', ev: CheckInOrOutEventEnum): void;
 }>();
+
+const menuList = computed(() => {
+  let _menuList = [];
+  if (props.checkReceiveMethod === EnumTaskCheckReceiveMethod.CheckIn) {
+    _menuList.push(
+      {
+        name: '绛惧埌',
+        value: ManageActions.CheckIn,
+      },
+      {
+        name: '绛惧嚭',
+        value: ManageActions.CheckOut,
+      },
+      {
+        name: '鏈埌宀�',
+        value: ManageActions.OutWork,
+      }
+    );
+  }
+
+  return _menuList;
+});
+
+function handleMore() {
+  Portal.add((key) => {
+    return h(
+      Portal.Container,
+      { keyNumber: key, delayOpen: true },
+      {
+        default: ({ open, onClose }) =>
+          // @ts-ignore
+          h(ActionSheet, {
+            visible: open.value,
+            'onUpdate:visible': () => onClose(),
+            menuItems: menuList.value,
+            onChoose: (item) => {
+              handleEmit(item);
+              onClose();
+            },
+          }),
+      }
+    );
+  });
+}
+
+function handleEmit(action: { name: string; value: number }) {
+  switch (action.value) {
+    case ManageActions.CheckIn:
+      emit('checkInOrOut', CheckInOrOutEventEnum.CheckIn);
+      break;
+    case ManageActions.CheckOut:
+      emit('checkInOrOut', CheckInOrOutEventEnum.CheckOut);
+      break;
+    case ManageActions.OutWork:
+      emit('checkInOrOut', CheckInOrOutEventEnum.CheckOut);
+      break;
+  }
+}
 </script>
 
 <style lang="scss">
diff --git a/apps/bMiniApp/src/subpackages/task/taskCheck/InnerPage.vue b/apps/bMiniApp/src/subpackages/task/taskCheck/InnerPage.vue
index a4fc732..355261a 100644
--- a/apps/bMiniApp/src/subpackages/task/taskCheck/InnerPage.vue
+++ b/apps/bMiniApp/src/subpackages/task/taskCheck/InnerPage.vue
@@ -1,5 +1,5 @@
 <template>
-  <Calendar v-model="queryState.date"></Calendar>
+  <Calendar key="calendar" v-model="queryState.date"></Calendar>
   <ProTabs
     v-model="queryState.checkReceiveStatus"
     name="task-tab"
@@ -16,21 +16,23 @@
     ></ProTabPane>
     <ProTabPane :title="`宸查獙鏀禶" :pane-key="EnumTaskCheckReceiveStatus.Completed"></ProTabPane>
   </ProTabs>
-  <InfiniteLoading
-    scrollViewClassName="common-infinite-scroll-list"
-    v-bind="infiniteLoadingProps"
-    :key="queryState.checkReceiveStatus"
-  >
-    <template #renderItem="{ item }">
-      <MyTaskCard
-        :name="item.name"
-        :beginTime="item.beginTime"
-        :endTime="item.endTime"
-        :addressName="item.addressName"
-        @click="goSubmitTaskDetail(item)"
-      />
-    </template>
-  </InfiniteLoading>
+  <div class="task-list-container">
+    <InfiniteLoading
+      scrollViewClassName="common-infinite-scroll-list"
+      v-bind="infiniteLoadingProps"
+      :key="queryState.checkReceiveStatus"
+    >
+      <template #renderItem="{ item }">
+        <MyTaskCard
+          :name="item.name"
+          :beginTime="item.beginTime"
+          :endTime="item.endTime"
+          :addressName="item.addressName"
+          @click="goSubmitTaskDetail(item)"
+        />
+      </template>
+    </InfiniteLoading>
+  </div>
 </template>
 
 <script setup lang="ts">
@@ -65,3 +67,16 @@
   }
 }
 </script>
+
+<style lang="scss">
+@import '@/styles/common.scss';
+
+.taskCheck-page-wrapper {
+  .task-list-container {
+    flex: 1;
+    min-height: 0;
+    display: flex;
+    flex-direction: column;
+  }
+}
+</style>
diff --git a/apps/cMiniApp/src/subpackages/mine/setting/setting.vue b/apps/cMiniApp/src/subpackages/mine/setting/setting.vue
index e93197a..4ac4eb4 100644
--- a/apps/cMiniApp/src/subpackages/mine/setting/setting.vue
+++ b/apps/cMiniApp/src/subpackages/mine/setting/setting.vue
@@ -11,6 +11,7 @@
       <ListItem title="鐢ㄦ埛鍗忚" @click="goMineUserPolicy"></ListItem>
       <ListItem title="闅愮鏀跨瓥" @click="goPrivacyPolicy"></ListItem>
       <ListItem title="閫�鍑虹櫥褰�" @click="handleLoginout"></ListItem>
+      <!-- <ListItem title="浜哄伐瀹㈡湇" @click="goMineService"></ListItem> -->
       <nut-button :open-type="'contact'" class="setting-page-service">浜哄伐瀹㈡湇</nut-button>
     </List>
   </PageLayout>
@@ -59,13 +60,14 @@
 }
 
 function goMineService() {
-  const encodedUrl = encodeURIComponent('https://work.weixin.qq.com/kfid/kfcd24e0c60fd91099');
+  // const encodedUrl = encodeURIComponent('https://work.weixin.qq.com/kfid/kfcd24e0c60fd91099');
   Taro.openCustomerServiceChat({
     extInfo: {
       // url: 'https://work.weixin.qq.com/kfid/kfcd24e0c60fd91099',
-      url: `${RouterPath.extraPage}?url=${encodedUrl}`,
+      url: `${RouterPath.setting}`,
     },
     corpId: 'wwc84cb8e0525c772f',
+    // corpId: 'kfc2335f41fb4f0c0bc',
     fail: (res) => {
       Taro.showToast({
         title: res.errMsg,
@@ -91,6 +93,14 @@
     color: boleGetCssVar('text-color', 'primary');
     width: 100%;
 
+    &::before {
+      display: none;
+    }
+
+    &::after {
+      display: none;
+    }
+
     .nut-button__wrap {
       justify-content: flex-start;
     }

--
Gitblit v1.9.1