wupengfei
2 天以前 a0da24df7c71cd8349b44351415cc80ad696f170
fix: bug
3个文件已添加
8个文件已修改
289 ■■■■■ 已修改文件
apps/bMiniApp/project.config.json 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
apps/bMiniApp/src/app.config.ts 6 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
apps/bMiniApp/src/components/PageFooter/PageFooterBtn.vue 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
apps/bMiniApp/src/constants/router.ts 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
apps/bMiniApp/src/subpackages/payrollManage/components/PayrollManageDetailCard.vue 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
apps/bMiniApp/src/subpackages/payrollManage/payrollChange/InnerPage.vue 144 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
apps/bMiniApp/src/subpackages/payrollManage/payrollChange/payrollChange.config.ts 3 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
apps/bMiniApp/src/subpackages/payrollManage/payrollChange/payrollChange.vue 17 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
apps/bMiniApp/src/subpackages/payrollManage/payrollManageDetail/InnerPage.vue 20 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
apps/bMiniApp/src/subpackages/task/components/TaskCheckCard.vue 73 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
apps/bMiniApp/src/subpackages/task/taskCheck/InnerPage.vue 17 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
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,
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',
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;
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',
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>
apps/bMiniApp/src/subpackages/payrollManage/payrollChange/InnerPage.vue
New file
@@ -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>
apps/bMiniApp/src/subpackages/payrollManage/payrollChange/payrollChange.config.ts
New file
@@ -0,0 +1,3 @@
export default definePageConfig({
  disableScroll: true,
});
apps/bMiniApp/src/subpackages/payrollManage/payrollChange/payrollChange.vue
New file
@@ -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>
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>
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">
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,6 +16,7 @@
    ></ProTabPane>
    <ProTabPane :title="`已验收`" :pane-key="EnumTaskCheckReceiveStatus.Completed"></ProTabPane>
  </ProTabs>
  <div class="task-list-container">
  <InfiniteLoading
    scrollViewClassName="common-infinite-scroll-list"
    v-bind="infiniteLoadingProps"
@@ -31,6 +32,7 @@
      />
    </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>