yxk_h5_master/pages/salary/salary.vue

243 lines
6.8 KiB
Vue
Raw Normal View History

2025-08-28 15:21:09 +08:00
<template>
<view class="page">
<view class="uni-flex uni-row">
<view class="otherFixed" >
<view class="text" style="width:90% !important" @click="filterDate">{{timeData.begin==''?'选择时期':(timeData.begin+'~'+timeData.end)}}</view>
</view>
</view>
<view class="example-body" v-if="listCards.length>0">
<view v-for="(item,index) in listCards" :key="index" class="example-box" style="position: relative;flex: 1;" >
<view class="uni-common-mt">
<view class="uni-list">
<view class="uni-list-cell" hover-class="uni-list-cell-hover">
<view class="uni-padding-wrap">
<view class="uni-flex uni-row">
<view class="mydefineText" style="width: 200upx;">所属时期</view>
<view class="mydefineText rightText">{{item.monthDate}}</view>
</view>
</view>
</view>
<view class="uni-list-cell" hover-class="uni-list-cell-hover">
<view class="uni-padding-wrap">
<view class="uni-flex uni-row">
<view class="mydefineText" style="width: 200upx;">员工姓名</view>
<view class="mydefineText rightText">{{item.employeeName}}</view>
</view>
</view>
</view>
<view v-for="(p,index) in nameCards" :key="index">
<view class="uni-list-cell" hover-class="uni-list-cell-hover">
<view class="uni-padding-wrap">
<view class="uni-flex uni-row">
<view class="mydefineText" style="width: 200upx;">{{p.name}}</view>
<view class="mydefineText rightText">{{item[p.property]}}</view>
</view>
</view>
</view>
</view>
</view>
</view>
</view>
<uni-calendar ref="calendar" :lunar="false" :range="true" @confirm="confirmDate" @cancel='cancleData'/>
<uni-load-more :status="loading_status"></uni-load-more>
<view class="goHome" @click='goMain()'>
<img src="../../static/img/gohome.png">
</view>
</view>
<view class="example-body" v-else>
<no-record ></no-record>
</view>
</view>
</template>
<script>
import mpvuePicker from '@/components/mpvue-picker/mpvuePicker.vue';
import noRecord from '@/components/xinsoft-no-record/xinsoft-no-record';
import uniLoadMore from '@/components/uni-load-more/uni-load-more.vue'
import uniCalendar from '@/components/uni-calendar/uni-calendar.vue'
import {
config
} from '../../request/js/config.js'
export default {
components: {
noRecord,uniLoadMore,mpvuePicker,uniCalendar,
},
data() {
return {
fixed: true,
pageno:1,//当前第几页
pagesize:5,//每页加载数据条数
id:'',
config:config,
deviceInfo:{},
filterResult:{},
listCards: [],
nameCards:[],
search_data: {
pageno: 1,
pagesize: 10000,
isShowSalaryAccounting:1
},
loading_status: 'more',//moreloading前、loadingloading中、noMore没有更多了
//日历变量。
timeData: {
begin: "",
end: ''
},
}
},
onLoad(options) {
var _this = this;
uni.getStorage({
key: 'userInfo',
success: function (res) {
console.log(res.data)
_this.id = res.data.userId
}
});
},
mounted() {
this.getName()
this.$nextTick(function(){
this.getAccounting()
})
},
methods: {
// 获取动态字段
getName() {
this.$http.request({
url: '/apis/salary/project/getProjectList',
paramsBody: this.search_data,
})
.then(res=> {
console.log(res.data)
if(res.data.code ==0) {
this.nameCards = res.data.data;
}
})
},
getAccounting() {
this.filterResult.pageno = this.pageno;
this.filterResult.pagesize = this.pagesize;
this.filterResult.userId = this.id;
this.filterResult.startTime = this.timeData.begin;
this.filterResult.endTime = this.timeData.end;
this.$http.request({
url: '/apis/salaryAccounting/pageList',
paramsBody: this.filterResult,
})
.then(res => {
uni.stopPullDownRefresh();
if(!res.data.data){
this.loading_status="noMore";
}else if(res.data.data.datas.length<this.pagesize){
this.loading_status="noMore";
}else{
this.loading_status="more";
}
if (res.data.code == 0) {
this.listCards = this.listCards.concat(res.data.data.datas);
this.listCards.forEach(item => {
item.monthDate = (item.monthDate).slice(0,7)
})
}
}).catch(err => {
this.loading_status="noMore";
});
},
/*
* 日历相关方法
*/
filterDate() {
this.$refs.calendar.open();
},
confirmDate(e) {
if (e.range.begin && e.range.end) {
this.timeData = {
begin: e.range.begin + ' 00:00:00',
end: e.range.end + ' 00:00:00'
}
this.listCards=[];
this.pagenumber=1;
this.loading_status="more";
this.getAccounting();
}
},
/**
* 对日期进行加减操作 该方法不会修改传入的Date对象
* @param date 如果为null 则表示为当前日期
* @param unit 单位 y: M: d: h:小时 m:分钟 s:
* @param value 增加的数值 可以为负数
* @return 返回值为修改后的新的Date对象
*/
addDate:function(date,unit,value){
date = new Date(date.replace(/-/g, "/"));
var units = {
y:'FullYear',
M:'Month',
d:'Date',
h:'Hours',
m:'Minutes',
s:'Seconds'
}
try{
if(units[unit]){
date['set'+units[unit]](date['get'+units[unit]]() + parseInt(value));
}
}catch (e){
console.error(e);
}
var day1 = new Date();
var time = date.getFullYear()+"-" + this.minTenAndZero(date.getMonth()+1) + "-" + this.minTenAndZero(date.getDate())+
" " + this.minTenAndZero(date.getHours()) + ":" + this.minTenAndZero(date.getMinutes()) + ":" + this.minTenAndZero(date.getSeconds());
return time;
},
minTenAndZero:function(value){
return value<10?('0'+value):value;
}
}
}
</script>
<style>
.mydefineText {
margin: 7px 5px;
height: 70upx;
line-height: 70upx;
color: #999;
font-size: 28upx;
}
.rightText{
text-align: right;
color: #333;
-webkit-flex: 1;
flex: 1;
text-overflow: ellipsis;
white-space: nowrap;
overflow: hidden
}
.red{color: #f00;}
.otherFixed {
position: relative;
background: #fff;
width: 101%;
text-align: center;
color: #666;
/* position: fixed; */
z-index: 2;
height: 40px;
right: 0;
}
</style>