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