<template>
|
<nut-form :model-value="form" ref="payrollFormRef" :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"
|
disabled
|
/>
|
<div class="form-input-unit">元</div>
|
</div>
|
</nut-form-item>
|
<nut-form-item label="超时:" class="bole-form-item" prop="timeoutHours" label-width="90px">
|
<div class="bole-form-input-wrapper">
|
<NumberInput
|
v-model.trim="form.timeoutHours"
|
class="nut-input-text bole-input-text"
|
placeholder="请输入超时时长"
|
:min="0"
|
:max="999999999999"
|
:precision="2"
|
type="text"
|
@change="onTimeoutHoursChange"
|
/>
|
<div class="form-input-unit">小时</div>
|
</div>
|
</nut-form-item>
|
<nut-form-item label="超时费用:" class="bole-form-item" prop="timeoutFee" label-width="90px">
|
<div class="bole-form-input-wrapper">
|
<NumberInput
|
v-model.trim="form.timeoutFee"
|
class="nut-input-text bole-input-text"
|
placeholder="请输入超时费用"
|
:min="0"
|
:max="999999999999"
|
:precision="2"
|
type="text"
|
@change="onActualSettlementAmountChange"
|
/>
|
<div class="form-input-unit">元</div>
|
</div>
|
</nut-form-item>
|
<nut-form-item label="其他费用:" class="bole-form-item" prop="otherFee" label-width="90px">
|
<div class="bole-form-input-wrapper">
|
<NumberInput
|
v-model.trim="form.otherFee"
|
class="nut-input-text bole-input-text"
|
placeholder="请输入其他费用"
|
:max="999999999999"
|
:precision="2"
|
type="text"
|
@change="onActualSettlementAmountChange"
|
/>
|
<div class="form-input-unit">元</div>
|
</div>
|
</nut-form-item>
|
<nut-form-item
|
label="结算金额:"
|
class="bole-form-item"
|
prop="settlementAmount"
|
label-width="90px"
|
>
|
{{ `${settlementAmount}元` }}
|
</nut-form-item>
|
<nut-form-item label="备注:" class="bole-form-item alignTop" prop="remark" label-width="90px">
|
<nut-textarea v-model="form.remark" rows="4" placeholder="请输入备注"> </nut-textarea>
|
</nut-form-item>
|
</nut-form>
|
</template>
|
|
<script setup lang="ts">
|
import { FormRules } from '@nutui/nutui-taro/dist/types/__VUE/form/types';
|
import { computed, reactive, ref } from 'vue';
|
import NumberInput from '../Input/NumberInput.vue';
|
|
defineOptions({
|
name: 'ProRadio',
|
});
|
|
type Form = {
|
serviceFee: number;
|
timeoutHours: number;
|
timeoutFee: number;
|
otherFee: number;
|
remark: string;
|
timeoutServiceFee: number;
|
};
|
|
const form = defineModel<Form>();
|
const payrollFormRef = ref(null);
|
|
const rules = reactive<FormRules>({
|
verifyCode: [{ required: true, message: '请输入验证码' }],
|
});
|
|
function onTimeoutHoursChange(event: any) {
|
form.value.timeoutFee = form.value.timeoutServiceFee * event.detail.value;
|
onActualSettlementAmountChange();
|
}
|
|
function onActualSettlementAmountChange() {
|
//暂时注掉
|
// form.actualSettlementAmount = sumSettlementAmount();
|
}
|
|
function sumSettlementAmount() {
|
return (
|
getFeeValue(Number(form.value.timeoutFee ?? 0)) +
|
getFeeValue(Number(form.value.serviceFee ?? 0)) +
|
getFeeValue(Number(form.value.otherFee ?? 0))
|
);
|
}
|
|
const settlementAmount = computed(() => sumSettlementAmount());
|
|
function getFeeValue(val: number) {
|
return val || 0;
|
}
|
|
defineExpose({
|
payrollFormRef,
|
});
|
</script>
|
|
<style lang="scss">
|
@import '@/styles/common.scss';
|
</style>
|