ソースを参照

工资管理按新需求进行修改

ouyj 3 週間 前
コミット
a6a1ae7e5d
2 ファイル変更113 行追加74 行削除
  1. 90 72
      pages/mine/salary/salaryDetail.vue
  2. 23 2
      pages/mine/salary/salaryList.vue

+ 90 - 72
pages/mine/salary/salaryDetail.vue

@@ -33,112 +33,113 @@
 			<view class="card">
 				<view class="card-row">
 					<text class="row-label">月工资</text>
-					<text class="row-value">{{ detail.monthly_salary || '0' }}</text>
+					<text class="row-value">{{ formatNumber(detail.monthly_salary) }}</text>
 				</view>
 				<view class="card-row">
 					<text class="row-label">应出勤天数</text>
-					<text class="row-value">{{ detail.should_attend_days || '0' }}</text>
+					<text class="row-value">{{ formatNumber(detail.should_attend_days) }}</text>
 				</view>
 				<view class="card-row">
-					<text class="row-label">实出勤天数</text>
-					<text class="row-value">{{ detail.actual_attend_days || '0' }}</text>
+					<text class="row-label">实出勤天数</text>
+					<text class="row-value">{{ formatNumber(detail.actual_attend_days) }}</text>
 				</view>
 				<view class="card-row">
-					<text class="row-label">休假天数</text>
-					<text class="row-value">{{ detail.leave_days || '0' }}</text>
+					<text class="row-label">粉尘/噪音补贴</text>
+					<text class="row-value">{{ formatNumber(detail.dust_noise_allowance) }}</text>
 				</view>
 				<view class="card-row">
-					<text class="row-label">公司放假天数</text>
-					<text class="row-value">{{ detail.company_holiday_days || '0' }}</text>
+					<text class="row-label">月工资*</text>
+					<text class="row-value">{{ formatNumber(detail.monthly_salary_star) }}</text>
 				</view>
-			</view>
-
-			<!-- 薪资结构 -->
-			<view class="card">
-				<view class="card-title">薪资结构</view>
 				<view class="card-row">
-					<text class="row-label">平时加班小时</text>
-					<text class="row-value">{{ detail.normal_overtime_hours || '0' }}</text>
+					<text class="row-label">应出勤天数*</text>
+					<text class="row-value">{{ formatNumber(detail.should_attend_days_star) }}</text>
 				</view>
 				<view class="card-row">
-					<text class="row-label">周末加班小时</text>
-					<text class="row-value">{{ detail.weekend_overtime_hours || '0' }}</text>
+					<text class="row-label">实际出勤天数*</text>
+					<text class="row-value">{{ formatNumber(detail.actual_attend_days_star) }}</text>
 				</view>
 				<view class="card-row">
-					<text class="row-label">节假日加班小时</text>
-					<text class="row-value">{{ detail.holiday_overtime_hours || '0' }}</text>
-				</view>
-				<view class="card-row">
-					<text class="row-label">夜班天数</text>
-					<text class="row-value">{{ detail.night_shift_days || '0' }}</text>
+					<text class="row-label">轮休天数</text>
+					<text class="row-value">{{ formatNumber(detail.rotating_rest_days) }}</text>
 				</view>
 				<view class="card-row">
-					<text class="row-label">基本工资</text>
-					<text class="row-value">{{ detail.basic_salary || '0' }}</text>
+					<text class="row-label">病假天数</text>
+					<text class="row-value">{{ formatNumber(detail.sick_leave_days) }}</text>
 				</view>
 				<view class="card-row">
-					<text class="row-label">岗位工资</text>
-					<text class="row-value">{{ detail.position_salary || '0' }}</text>
+					<text class="row-label">请假天数</text>
+					<text class="row-value">{{ formatNumber(detail.personal_leave_days) }}</text>
 				</view>
+			</view>
+
+			<!-- 加班情况 -->
+			<view class="card">
+<!--				<view class="card-title">加班情况</view>-->
 				<view class="card-row">
-					<text class="row-label">工作绩效</text>
-					<text class="row-value">{{ detail.work_performance || '0' }}</text>
+					<text class="row-label">平时加班小时</text>
+					<text class="row-value">{{ formatNumber(detail.normal_overtime_hours) }}</text>
 				</view>
 				<view class="card-row">
-					<text class="row-label">安全绩效</text>
-					<text class="row-value">{{ detail.safety_performance || '0' }}</text>
+					<text class="row-label">周末加班小时</text>
+					<text class="row-value">{{ formatNumber(detail.weekend_overtime_hours) }}</text>
 				</view>
 				<view class="card-row">
-					<text class="row-label">全勤工资</text>
-					<text class="row-value">{{ detail.full_attendance_salary || '0' }}</text>
+					<text class="row-label">节假日加班小时</text>
+					<text class="row-value">{{ formatNumber(detail.holiday_overtime_hours) }}</text>
 				</view>
 				<view class="card-row">
-					<text class="row-label">岗位津贴</text>
-					<text class="row-value">{{ detail.position_allowance || '0' }}</text>
+					<text class="row-label">夜班天数</text>
+					<text class="row-value">{{ formatNumber(detail.night_shift_days) }}</text>
 				</view>
+
 				<view class="card-row">
 					<text class="row-label">夜中班津贴</text>
-					<text class="row-value">{{ detail.night_shift_allowance || '0' }}</text>
+					<text class="row-value">{{ formatNumber(detail.night_shift_allowance) }}</text>
 				</view>
 				<view class="card-row">
 					<text class="row-label">平时加班工资</text>
-					<text class="row-value">{{ detail.normal_overtime_pay || '0' }}</text>
+					<text class="row-value">{{ formatNumber(detail.normal_overtime_pay) }}</text>
 				</view>
 				<view class="card-row">
 					<text class="row-label">周末加班工资</text>
-					<text class="row-value">{{ detail.weekend_overtime_pay || '0' }}</text>
+					<text class="row-value">{{ formatNumber(detail.weekend_overtime_pay) }}</text>
 				</view>
 				<view class="card-row">
 					<text class="row-label">节假日加班工资</text>
-					<text class="row-value">{{ detail.holiday_overtime_pay || '0' }}</text>
+					<text class="row-value">{{ formatNumber(detail.holiday_overtime_pay) }}</text>
 				</view>
 				<view class="card-row">
 					<text class="row-label">放假补贴</text>
-					<text class="row-value">{{ detail.holiday_subsidy || '0' }}</text>
+					<text class="row-value">{{ formatNumber(detail.holiday_subsidy) }}</text>
 				</view>
 				<view class="card-row">
-					<text class="row-label">其它收入</text>
-					<text class="row-value">{{ detail.other_income || '0' }}</text>
+					<text class="row-label">病假工资</text>
+					<text class="row-value">{{ formatNumber(detail.sick_leave_salary) }}</text>
+				</view>
+				<view class="card-row">
+					<text class="row-label">部门绩效奖金</text>
+					<text class="row-value">{{ formatNumber(detail.department_performance) }}</text>
+				</view>
+				<view class="card-row">
+					<text class="row-label">其它</text>
+					<text class="row-value">{{ formatNumber(detail.other_income) }}</text>
+				</view>
+				<view class="card-row">
+					<text class="row-label">体检报销</text>
+					<text class="row-value">{{ formatNumber(detail.medical_exam_reimburse) }}</text>
 				</view>
 			</view>
 
-			<!-- 扣款与应发 -->
+			<!-- 薪资结构(扣款项) -->
 			<view class="card">
 				<view class="card-row">
 					<text class="row-label">全勤工资扣款</text>
-					<text class="row-value deduction">{{ detail.full_attendance_deduction || '0' }}</text>
-				</view>
-				<view class="card-row">
-					<text class="row-label">绩效工资扣款</text>
-					<text class="row-value deduction">{{ detail.performance_deduction || '0' }}</text>
+					<text class="row-value deduction">{{ formatNumber(detail.full_attendance_deduction) }}</text>
 				</view>
 				<view class="card-row highlight">
 					<text class="row-label">应发工资</text>
-					<text class="row-value">{{ detail.should_pay_salary || '0' }}</text>
-				</view>
-				<view class="card-row">
-					<text class="row-label">体检费报销</text>
-					<text class="row-value">{{ detail.medical_exam_reimburse || '0' }}</text>
+					<text class="row-value">{{ formatNumber(detail.should_pay_salary) }}</text>
 				</view>
 			</view>
 
@@ -147,23 +148,23 @@
 				<view class="card-title">五险缴费</view>
 				<view class="card-row">
 					<text class="row-label">养老保险</text>
-					<text class="row-value deduction">{{ detail.pension_insurance || '0' }}</text>
+					<text class="row-value deduction">{{ formatNumber(detail.pension_insurance) }}</text>
 				</view>
 				<view class="card-row">
-					<text class="row-label">失业险</text>
-					<text class="row-value deduction">{{ detail.unemployment_insurance || '0' }}</text>
+					<text class="row-label">失业险</text>
+					<text class="row-value deduction">{{ formatNumber(detail.unemployment_insurance) }}</text>
 				</view>
 				<view class="card-row">
-					<text class="row-label">医疗保险</text>
-					<text class="row-value deduction">{{ detail.medical_insurance || '0' }}</text>
+					<text class="row-label">基本医疗</text>
+					<text class="row-value deduction">{{ formatNumber(detail.medical_insurance) }}</text>
 				</view>
 				<view class="card-row">
-					<text class="row-label">大病</text>
-					<text class="row-value deduction">{{ detail.critical_illness || '0' }}</text>
+					<text class="row-label">大病医疗</text>
+					<text class="row-value deduction">{{ formatNumber(detail.critical_illness) }}</text>
 				</view>
 				<view class="card-row">
-					<text class="row-label">五险小计</text>
-					<text class="row-value deduction">{{ detail.insurance_subtotal || '0' }}</text>
+					<text class="row-label">小计</text>
+					<text class="row-value deduction">{{ formatNumber(detail.insurance_subtotal) }}</text>
 				</view>
 			</view>
 
@@ -171,41 +172,58 @@
 			<view class="card">
 				<view class="card-row">
 					<text class="row-label">个人所得税</text>
-					<text class="row-value deduction">{{ detail.personal_income_tax || '0' }}</text>
+					<text class="row-value deduction">{{ formatNumber(detail.personal_income_tax) }}</text>
 				</view>
 				<view class="card-row">
 					<text class="row-label">其他扣款</text>
-					<text class="row-value deduction">{{ detail.other_deduction || '0' }}</text>
+					<text class="row-value deduction">{{ formatNumber(detail.other_deduction) }}</text>
 				</view>
 				<view class="card-row final">
 					<text class="row-label">实发工资</text>
-					<text class="row-value">{{ detail.actual_pay_salary || '0' }}</text>
+					<text class="row-value">{{ formatNumber(detail.actual_pay_salary) }}</text>
 				</view>
 			</view>
 
 			<!-- 备注信息 -->
-			<view class="card" v-if="detail.remark || detail.no_insurance_reason">
-				<view class="remark-item" v-if="detail.remark">
+			<view class="card" v-if="detail.remark">
+				<view class="remark-item">
 					<text class="remark-label">备注</text>
 					<text class="remark-value">{{ detail.remark }}</text>
 				</view>
-				<view class="remark-item" v-if="detail.no_insurance_reason">
-					<text class="remark-label">未缴五险原因</text>
-					<text class="remark-value">{{ detail.no_insurance_reason }}</text>
-				</view>
 			</view>
 		</scroll-view>
 	</view>
 </template>
 
 <script setup>
-import { ref } from 'vue';
+import { ref, computed } from 'vue';
 import { onLoad } from '@dcloudio/uni-app';
 import { getMySalaryDetail } from '@/api/salary.js';
 
 const detail = ref({});
 const universalid = ref('');
 
+// 格式化数字:保留两位小数
+function formatNumber(value) {
+	if (value == null || value === '' || value === '-' || value === 'null' || value === 'undefined') {
+		return '';
+	}
+	var str = String(value).trim();
+	if (str === '' || str === '-' || str === 'null' || str === 'undefined') {
+		return '';
+	}
+	var num = parseFloat(str);
+	if (isNaN(num)) {
+		return str;
+	}
+	// 如果本来就是整数,直接返回
+	if (num === Math.floor(num) && !String(num).includes('.')) {
+		return String(Math.floor(num));
+	}
+	// 保留两位小数(四舍五入)
+	return num.toFixed(2);
+}
+
 onLoad((options) => {
 	if (options.universalid) {
 		universalid.value = options.universalid;

+ 23 - 2
pages/mine/salary/salaryList.vue

@@ -37,10 +37,10 @@
 						</view>
 						<view class="info-line money-line">
 							<text class="label">应发:</text>
-							<text class="value should-pay">¥{{ item.should_pay_salary || '0.00' }}</text>
+							<text class="value should-pay">¥{{ formatNumber(item.should_pay_salary) }}</text>
 							<text class="divider">|</text>
 							<text class="label">实发:</text>
-							<text class="value actual-pay-small">¥{{ item.actual_pay_salary || '0.00' }}</text>
+							<text class="value actual-pay-small">¥{{ formatNumber(item.actual_pay_salary) }}</text>
 						</view>
 					</view>
 				</view>
@@ -67,6 +67,27 @@ const hasMore = ref(true);
 const pageNum = ref(1);
 const pageSize = ref(20);
 
+// 格式化数字:保留两位小数
+function formatNumber(value) {
+	if (value == null || value === '' || value === '-' || value === 'null' || value === 'undefined') {
+		return '';
+	}
+	var str = String(value).trim();
+	if (str === '' || str === '-' || str === 'null' || str === 'undefined') {
+		return '';
+	}
+	var num = parseFloat(str);
+	if (isNaN(num)) {
+		return str;
+	}
+	// 如果本来就是整数,直接返回
+	if (num === Math.floor(num) && !String(num).includes('.')) {
+		return String(Math.floor(num));
+	}
+	// 保留两位小数(四舍五入)
+	return num.toFixed(2);
+}
+
 onLoad(() => {
 	// 不设置默认月份,由用户自行选择
   loadSalaryList();