From d07500fef337fc0366d5c51723ddb3ba2071f33d Mon Sep 17 00:00:00 2001
From: 小小儁爺 <1694218219@qq.com>
Date: 星期五, 01 八月 2025 10:33:37 +0800
Subject: [PATCH] 1.计时工资功能开发
---
config/api.js | 7 +
pages.json | 7 +
pages/grzx/jsgz.vue | 365 ++++++++++++++++++++++++++++++++++++++++++++++++++++
pages/xtsy/index.vue | 3
4 files changed, 382 insertions(+), 0 deletions(-)
diff --git a/config/api.js b/config/api.js
index 82fb193..fc56e4a 100644
--- a/config/api.js
+++ b/config/api.js
@@ -423,4 +423,11 @@
export const WrkOrderPartDataSelect = (data, config = {}) => http.get(
'/GeneralBasicData/WrkOrderPartDataSelect', {
params: data
+ })
+
+
+//璁℃椂宸ヨ祫
+export const AppDailyWageReportSearch = (data, config = {}) => http.get(
+ '/AppPersonal/DailyWageReportSearch', {
+ params: data
})
\ No newline at end of file
diff --git a/pages.json b/pages.json
index da50d26..6c346e7 100644
--- a/pages.json
+++ b/pages.json
@@ -484,6 +484,13 @@
"navigationStyle": "custom",
"enablePullDownRefresh": false
}
+ }, {
+ "path": "pages/grzx/jsgz",
+ "style": {
+ "navigationBarTitleText": "璁℃椂宸ヨ祫",
+ "navigationStyle": "custom",
+ "enablePullDownRefresh": false
+ }
}
],
"globalStyle": {
diff --git a/pages/grzx/jsgz.vue b/pages/grzx/jsgz.vue
new file mode 100644
index 0000000..a1b20e6
--- /dev/null
+++ b/pages/grzx/jsgz.vue
@@ -0,0 +1,365 @@
+<template>
+ <view>
+ <page-nav title="璁℃椂宸ヨ祫"></page-nav>
+ <view class="mainContent" :style="{maxHeight:'1600rpx',overflow: 'scroll'}">
+ <view>
+ <u-gap height="10" bgColor="#eff0f1"></u-gap>
+ <view class="head">
+ <view class="head_block" style="height: 120rpx; display: flex;justify-content: space-around;">
+ <u-button :plain='today' @click="dateChange('today')" type="primary" shape="circle" text="浠婃棩">
+ </u-button>
+ <u-button :plain='month' @click="dateChange('month')" type="primary" shape="circle" text="鏈湀">
+ </u-button>
+ <u-button :plain='custom' @click="dateChange('custom')" type="primary" shape="circle"
+ text="鑷畾涔�"></u-button>
+ </view>
+ </view>
+ <u-gap height="10" bgColor="#eff0f1"></u-gap>
+ <view class="head">
+ <view class="head_block flex_column" :style="{minHeight:!custom?'310rpx':'230rpx'}">
+ <view v-if="!custom" class="flex_column"
+ style="display: flex;justify-content: space-around;width: 100%;">
+ <view class="" style="display: flex;justify-content: center;width: 100%;">
+ <view class="titleFont">寮�濮嬫棩鏈�</view>
+ <view class="titleFont">~</view>
+ <view class="titleFont">缁撴潫鏃ユ湡</view>
+ </view>
+ <!-- <view class='inputClass' style="margin:10rpx auto 0;">
+ <u--input placeholder="璇烽�夋嫨" border="surround" v-model="startDate"></u--input>
+ </view> -->
+ <!-- icon='calendar' -->
+ <u-button type="info" iconColor="#0659FF" size="" @click="calendarClick"
+ :text="calendarRange">
+ </u-button>
+
+ </view>
+ <view style="display: flex;justify-content: space-around;width: 100%;">
+ <view class="head_block_item flex_column">
+ <view class="titleFont">涓婄彮(灏忔椂)</view>
+ <view class="number">{{ parseFloat(form.workcount)}}</view>
+ </view>
+ <view class="head_block_item flex_column">
+ <view class="titleFont">宸ヤ环(鍏�/灏忔椂)</view>
+ <view class="number">{{ parseFloat(form.workprice)}}</view>
+ </view>
+ <view class="head_block_item flex_column">
+ <view class="titleFont">鍔犵彮(灏忔椂)</view>
+ <view class="number">{{parseFloat(form.overcount)}}</view>
+ </view>
+ <view class="head_block_item flex_column">
+ <view class="titleFont">宸ヤ环(灏忔椂)</view>
+ <view class="number">{{parseFloat(form.overprice)}}</view>
+ </view>
+ </view>
+
+ <view style="display: flex;justify-content: space-around;width: 100%;">
+ <view class="head_block_item flex_column">
+ <view class="titleFont">鎵i櫎(灏忔椂)</view>
+ <view class="number">{{ parseFloat(form.deductcount)}}</view>
+ </view>
+ <view class="head_block_item flex_column">
+ <view class="titleFont">鎵i櫎(鍏�)</view>
+ <view class="number">{{ parseFloat(form.deductmoney)}}</view>
+ </view>
+ <view class="head_block_item flex_column">
+ <view class="titleFont">璁℃椂(鍏�)</view>
+ <view class="number">{{parseFloat(form.timimoney)}}</view>
+ </view>
+ <view class="head_block_item flex_column">
+ <view class="titleFont">缁撶畻(鍏�)</view>
+ <view class="number">{{parseFloat(form.total)}}</view>
+ </view>
+ </view>
+ </view>
+ </view>
+ <u-gap height="10" bgColor="#eff0f1"></u-gap>
+ <view :style="{maxHeight:!custom?'830rpx':'960rpx',overflow: 'scroll'}">
+ <view v-for="(item,index) in detailOrderArray" :key="item.checkindate">
+ <view class="head">
+ <view
+ style="min-height: 100rpx; display: flex;justify-content: space-between; margin: 20rpx;">
+ <view class="flex_column" style="width: 50%;">
+ <view class="lineH60">
+ <view class="titleFont">
+ 鎵撳崱鏃ユ湡锛�
+ </view>
+ <view class="contentFont">
+ {{item.checkindate.substring(0,11)}}
+ </view>
+ </view>
+ <view class="lineH60">
+ <view class="titleFont">
+ 涓婄彮(灏忔椂)锛�
+ </view>
+ <view class="contentFont">
+ {{ parseFloat(item.workcount)}}
+ </view>
+ </view>
+ <view class="lineH60">
+ <view class="titleFont">
+ 鍔犵彮(灏忔椂)锛�
+ </view>
+ <view class="contentFont">
+ {{ parseFloat(item.overcount)}}
+ </view>
+ </view>
+ <view class="lineH60">
+ <view class="titleFont">
+ 鎵i櫎(灏忔椂)锛�
+ </view>
+ <view class="contentFont">
+ {{parseFloat(item.deductcount)}}
+ </view>
+ </view>
+ <view class="lineH60">
+ <view class="titleFont">
+ 璁℃椂(灏忔椂)锛�
+ </view>
+ <view class="contentFont">
+ {{parseFloat(item.timimoney)}}
+ </view>
+ </view>
+ </view>
+ <view class="flex_column" style="width: 50%;">
+ <view class="lineH60">
+ <view class="titleFont" style="color: transparent;">
+ 1
+ </view>
+ <view class="contentFont" style="color: transparent;">
+ 1
+ </view>
+ </view>
+ <view class="lineH60">
+ <view class="titleFont">
+ 宸ヤ环(鍏�/灏忔椂)锛�
+ </view>
+ <view class="contentFont">
+ {{ parseFloat(item.workprice)}}
+ </view>
+ </view>
+ <view class="lineH60">
+ <view class="titleFont">
+ 宸ヤ环(灏忔椂)锛�
+ </view>
+ <view class="contentFont">
+ {{ parseFloat(item.overprice)}}
+ </view>
+ </view>
+ <view class="lineH60">
+ <view class="titleFont">
+ 鎵i櫎(灏忔椂)锛�
+ </view>
+ <view class="contentFont">
+ {{parseFloat(item.deductcount)}}
+ </view>
+ </view>
+
+ <view class="lineH60">
+ <view class="titleFont">
+ 缁撶畻(鍏�)锛�
+ </view>
+ <view class="contentFont">
+ {{ parseFloat((parseFloat(item.timimoney) - parseFloat(item.deductmoney)).toFixed(2))}}
+ </view>
+ </view>
+ </view>
+ </view>
+ </view>
+ <u-gap height="10" v-if="index!==detailOrderArray.length" bgColor="#eff0f1"></u-gap>
+ </view>
+ </view>
+ </view>
+ </view>
+
+
+
+ <uni-calendar ref="calendar" :range='true' :insert="false" @confirm="calendarConfirm" />
+
+ </view>
+</template>
+
+
+<script>
+ import {
+ AppDailyWageReportSearch
+ } from '../../config/api.js';
+
+ export default {
+ onLoad(option) {},
+
+ onPullDownRefresh() {
+ setTimeout(() => {
+ this.init(() => {
+ uni.stopPullDownRefresh();
+ })
+ }, 1000);
+ },
+
+ data() {
+ return {
+ topRightMessageCount: '',
+
+ today: true,
+ month: false,
+ custom: true,
+
+ username: uni.getStorageSync('username'),
+ usercode: uni.getStorageSync('usercode'),
+ group_name: uni.getStorageSync('group_name'),
+
+ form: {
+ workcount: 0,
+ workprice: 0,
+ overcount: 0,
+ overprice: 0,
+ deductcount: 0,
+ deductmoney: 0,
+ timimoney: 0,
+ total: 0
+ },
+
+ calendarRange: new Date().getFullYear() + '-' + (new Date().getMonth() + 1).toString().padStart(
+ 2, '0') + '-01' + '~' + new Date().toISOString().slice(0, 10),
+
+ detailOrderArray: [],
+
+
+
+
+
+ key: new Date().getTime()
+
+ }
+ },
+ created() {
+
+ },
+ mounted() {
+ this.init()
+
+ // uni.getSystemInfo({
+ // success: (res) => {
+ // console.log(res);
+ // }
+ // })
+ this.getData()
+ },
+ methods: {
+ init() {
+ uni.stopPullDownRefresh();
+ },
+ // 鑾峰彇瀹夌伅娑堟伅鍒楄〃闀垮害
+ getTopRightMessageCountIsChange(val) {
+ this.topRightMessageCount = val
+ },
+ switchChange() {
+ this.getData()
+ },
+ // 璇锋眰鏁版嵁
+ async getData() {
+ const data = {
+ creatdate: this.calendarRange
+ }
+ const res = await AppDailyWageReportSearch(data)
+ if (res.code === '200') {
+ this.detailOrderArray = res.data
+ for (const key in this.form) {
+ this.form[key] = res.data.map(item => item[key]).reduce((acc, current) => acc + current,
+ 0).toFixed(2)
+ }
+ this.form.total = parseFloat((parseFloat(this.form.timimoney) - parseFloat(this.form.deductmoney))
+ .toFixed(
+ 2))
+ this.key = new Date().getTime()
+ }
+ },
+ // 鎸夐挳鍒囨崲
+ dateChange(val) {
+ if (val === 'today') {
+ this.today = false
+ this.month = true
+ this.custom = true
+ this.calendarRange = new Date().toISOString().slice(0, 10) + '~' + new Date().toISOString().slice(0,
+ 10)
+ } else if (val === 'month') {
+ this.today = true
+ this.month = false
+ this.custom = true
+
+ this.calendarRange = new Date().getFullYear() + '-' + (new Date().getMonth() + 1).toString().padStart(
+ 2, '0') + '-01' + '~' + new Date().toISOString().slice(0, 10)
+
+ } else if (val === 'custom') {
+ this.today = true
+ this.month = true
+ this.custom = false
+ this.calendarRange = new Date().getFullYear() + '-' + (new Date().getMonth() + 1).toString().padStart(
+ 2, '0') + '-01' + '~' + new Date().toISOString().slice(0, 10)
+ }
+ this.getData()
+ },
+ calendarConfirm(val) {
+ if (val.range.before < val.range.after) {
+ this.calendarRange = val.range.before + '~' + val.range.after
+ } else {
+ this.calendarRange = val.range.after + '~' + val.range.before
+ }
+
+ if (val.range.before === '') {
+ this.calendarRange = new Date().toISOString().slice(0, 10) + '~' + val.range.after
+ }
+ if (val.range.after === '') {
+ this.calendarRange = val.range.before + '~' + new Date().toISOString().slice(0, 10)
+ }
+ if (val.range.before === '' && val.range.after === '') {
+ this.calendarRange = new Date().toISOString().slice(0, 10) + '~' + new Date().toISOString().slice(0,
+ 10)
+ }
+ this.getData()
+ },
+ calendarClick() {
+ this.$refs.calendar.open();
+ }
+ }
+ }
+</script>
+
+<style lang="scss" scoped>
+ @import url('@/style/global.css');
+
+ ::v-deep .uicon-arrow-left>span {
+ display: block;
+ }
+
+ .u-button--circle {
+ margin: 0;
+ width: 180rpx;
+ border-radius: 20rpx;
+ }
+
+ .head_block_item {
+ text-align: center;
+
+ .number {
+ font-weight: bolder;
+ color: red;
+ }
+ }
+
+ .u-button--info {
+ width: 50%;
+ height: 40rpx;
+ border: 1px solid #0659FF;
+ border-radius: 10rpx;
+ }
+
+ ::v-deep .uicon-calendar {
+ font-size: 20rpx !important;
+ }
+
+ .lineH60 {
+ line-height: 60rpx;
+ height: 56rpx;
+ display: flex;
+ }
+</style>
\ No newline at end of file
diff --git a/pages/xtsy/index.vue b/pages/xtsy/index.vue
index 607ca0a..9fade61 100644
--- a/pages/xtsy/index.vue
+++ b/pages/xtsy/index.vue
@@ -172,6 +172,9 @@
case '2101':
url = 'grzx/mmsz' //瀵嗙爜璁剧疆
break;
+ case '2103':
+ url = 'grzx/jsgz' //璁℃椂宸ヨ祫
+ break;
case '2015':
url = 'grzx/xgbg'
break;
--
Gitblit v1.9.3