|
|
@@ -1,280 +1,668 @@ |
|
|
|
<template> |
|
|
|
<view class="page"> |
|
|
|
<!-- 主列表页 --> |
|
|
|
<view :class="sideOpen ? 'show' : ''" class="mainpage" style="padding-top: 80rpx;"> |
|
|
|
<!-- 顶部条目/分页信息栏 --> |
|
|
|
<l-customlist-banner @buttonClick="sideOpen = true">{{ tips }}</l-customlist-banner> |
|
|
|
|
|
|
|
<!-- 滚动列表,跨端支持上拉/下拉 --> |
|
|
|
<l-scroll-list v-if="ready" @pullDown="pullDown" @toBottom="fetchList()" ref="list"> |
|
|
|
<l-customlist :tips="loadState" showTips> |
|
|
|
<!-- 单条记录 --> |
|
|
|
<view class="customlist-item" v-for="item of list" :key="item.F_InvoiceId"> |
|
|
|
<view class="customlist-item-field"> |
|
|
|
<text class="customlist-item-field-title">姓名:</text> |
|
|
|
{{ displayListItem(item, 'EmpName') }} |
|
|
|
</view> |
|
|
|
<view class="customlist-item-field"> |
|
|
|
<text class="customlist-item-field-title">人员类别:</text> |
|
|
|
{{ displayListItem(item, 'PeopleType') }} |
|
|
|
</view> |
|
|
|
<view class="customlist-item-field"> |
|
|
|
<text class="customlist-item-field-title">发放年份:</text> |
|
|
|
{{ displayListItem(item, 'IssueYear') }} |
|
|
|
</view> |
|
|
|
|
|
|
|
<view class="customlist-item-field"> |
|
|
|
<text class="customlist-item-field-title">发放月份:</text> |
|
|
|
{{ displayListItem(item, 'IssueMonth') }} |
|
|
|
</view> |
|
|
|
|
|
|
|
<view class="customlist-item-field"> |
|
|
|
<text class="customlist-item-field-title">应发合计:</text> |
|
|
|
{{ displayListItem(item, 'TotalGrossPay') }} |
|
|
|
</view> |
|
|
|
|
|
|
|
<view class="customlist-item-field"> |
|
|
|
<text class="customlist-item-field-title">实发合计:</text> |
|
|
|
{{ displayListItem(item, 'NetCombined') }} |
|
|
|
<template> |
|
|
|
<view class="page"> |
|
|
|
<!-- 主列表页 --> |
|
|
|
<view :class="sideOpen ? 'show' : ''" class="mainpage" > |
|
|
|
<view class="timeTable_sec1"> |
|
|
|
<view class="tSec1Box" id="weekTime"> |
|
|
|
<text class="text-xxl cuIcon cuIcon-back" @click="timeTap(1)"></text> |
|
|
|
<text style="margin: 0;">{{searchData.IssueYear}}</text> |
|
|
|
<text>年</text> |
|
|
|
<text style="margin: 0;">{{searchData.IssueMonth}}</text> |
|
|
|
<text>月</text> |
|
|
|
<text class="text-xxl cuIcon cuIcon-right" @click="timeTap(2)"></text> |
|
|
|
</view> |
|
|
|
|
|
|
|
<view style="text-align: center;font-size: 60rpx;margin-top: 15rpx;color: #ffffff;"> |
|
|
|
¥{{list.length > 0 ? list[0].NetCombined || 0 : 0}} |
|
|
|
</view> |
|
|
|
|
|
|
|
<view style="text-align: center;font-size: 20rpx;margin-top: 15rpx;color: #94d4ff;"> |
|
|
|
<text style="margin: 0;">{{searchData.IssueYear}}</text> |
|
|
|
<text>年</text> |
|
|
|
<text style="margin: 0;">{{searchData.IssueMonth}}</text> |
|
|
|
<text>月实发工资</text> |
|
|
|
</view> |
|
|
|
|
|
|
|
</view> |
|
|
|
|
|
|
|
<!-- 操作按钮组 --> |
|
|
|
<l-customlist-action @view="action('view', item)" @edit="action('edit', item)" :showEdit="false" /> |
|
|
|
</view> |
|
|
|
</l-customlist> |
|
|
|
</l-scroll-list> |
|
|
|
</view> |
|
|
|
|
|
|
|
<!-- 关闭筛选栏按钮 --> |
|
|
|
<view @click="sideOpen = false" :class="sideOpen ? 'show' : ''" class="sideclose"> |
|
|
|
<l-icon type="pullright" color="blue" /> |
|
|
|
</view> |
|
|
|
|
|
|
|
<!-- 侧边栏 --> |
|
|
|
<scroll-view :class="sideOpen ? 'show' : ''" class="sidepage" scroll-y> |
|
|
|
<view v-if="ready" class="padding"> |
|
|
|
<l-input v-model="queryData.IssueYear" @change="searchChange()" title="年份" placeholder="按年份筛选,例:2022" /> |
|
|
|
<l-input v-model="queryData.IssueMonth" @change="searchChange()" title="月份" placeholder="按月份筛选,例:10" /> |
|
|
|
<l-input v-model="queryData.EmpName" @change="searchChange()" title="姓名" placeholder="按姓名筛选" /> |
|
|
|
<l-input v-model="queryData.PeopleType" @change="searchChange()" title="人员类别" placeholder="按人员类别筛选" /> |
|
|
|
<view class="padding-tb"> |
|
|
|
<l-button @click="reset" line="orange" class="block" block>重置筛选条件</l-button> |
|
|
|
</view> |
|
|
|
</view> |
|
|
|
</scroll-view> |
|
|
|
|
|
|
|
<!-- 添加按钮 --> |
|
|
|
<!-- <l-customlist-add v-if="!sideOpen" @click="action('create')" /> --> |
|
|
|
</view> |
|
|
|
</template> |
|
|
|
|
|
|
|
<script> |
|
|
|
import moment from 'moment' |
|
|
|
import get from 'lodash/get' |
|
|
|
import set from 'lodash/set' |
|
|
|
import pickBy from 'lodash/pickBy' |
|
|
|
import mapValues from 'lodash/mapValues' |
|
|
|
|
|
|
|
export default { |
|
|
|
data() { |
|
|
|
return { |
|
|
|
// 表单结构 |
|
|
|
scheme: { |
|
|
|
// F_CustomerId: { type: 'select', dataSource: '1', dataSourceId: 'crmCustomer,f_fullname,f_customerid' }, |
|
|
|
// F_InvoiceContent: { type: 'texteditor' }, |
|
|
|
// 姓名EmpName |
|
|
|
EmpName: { type: 'text' }, |
|
|
|
// 人员类别PeopleType |
|
|
|
PeopleType: { type: 'text' }, |
|
|
|
// 发放年份IssueYear |
|
|
|
IssueYear: { type: 'text' }, |
|
|
|
// 发放月份IssueMonth |
|
|
|
IssueMonth: { type: 'text' }, |
|
|
|
// 应发合计TotalGrossPay |
|
|
|
TotalGrossPay: { type: 'text' }, |
|
|
|
// 实发合计NetCombined |
|
|
|
NetCombined: { type: 'text' }, |
|
|
|
<!-- 顶部条目/分页信息栏 --> |
|
|
|
<!-- <l-customlist-banner @buttonClick="sideOpen = true">{{ tips }}</l-customlist-banner> --> |
|
|
|
|
|
|
|
<!-- 滚动列表,跨端支持上拉/下拉 --> |
|
|
|
<l-scroll-list style="height: calc(100% - 250rpx);" v-if="ready" @pullDown="pullDown" @toBottom="fetchList()" ref="list"> |
|
|
|
<l-customlist :tips="loadState" showTips> |
|
|
|
<!-- 单条记录 --> |
|
|
|
<view class="customlist-item" v-for="item of list" :key="item.F_InvoiceId"> |
|
|
|
<!-- <view class="customlist-item-field"> |
|
|
|
<text class="customlist-item-field-title">工资卡号:</text> |
|
|
|
{{ displayListItem(item, 'WageCardNo') }} |
|
|
|
</view> |
|
|
|
<view class="customlist-item-field"> |
|
|
|
<text class="customlist-item-field-title">人员类别:</text> |
|
|
|
{{ displayListItem(item, 'PeopleType') }} |
|
|
|
</view> |
|
|
|
<view class="customlist-item-field"> |
|
|
|
<text class="customlist-item-field-title">岗位等级:</text> |
|
|
|
{{ displayListItem(item, 'PostType') }} |
|
|
|
</view> |
|
|
|
<view class="customlist-item-field"> |
|
|
|
<text class="customlist-item-field-title">薪级:</text> |
|
|
|
{{ displayListItem(item, 'PayGrade') }} |
|
|
|
</view> |
|
|
|
<view class="customlist-item-field"> |
|
|
|
<text class="customlist-item-field-title">应发合计:</text> |
|
|
|
{{ displayListItem(item, 'TotalGrossPay') }} |
|
|
|
</view> --> |
|
|
|
<view class="item-title">基本工资</view> |
|
|
|
<view class="customlist-item-field"> |
|
|
|
<text class="customlist-item-field-title">岗位工资:</text> |
|
|
|
{{ displayListItem(item, 'PostWage') }} |
|
|
|
</view> |
|
|
|
<view class="customlist-item-field"> |
|
|
|
<text class="customlist-item-field-title">薪级工资:</text> |
|
|
|
{{ displayListItem(item, 'PayGradeWage') }} |
|
|
|
</view> |
|
|
|
<view class="customlist-item-field"> |
|
|
|
<text class="customlist-item-field-title">百分之十:</text> |
|
|
|
{{ displayListItem(item, 'TenPercent') }} |
|
|
|
</view> |
|
|
|
<!-- <view class="item-title">绩效工资</view> --> |
|
|
|
<view class="customlist-item-field"> |
|
|
|
<text class="customlist-item-field-title">基础绩效:</text> |
|
|
|
{{ displayListItem(item, 'BasicsPerformance') }} |
|
|
|
</view> |
|
|
|
<view class="customlist-item-field"> |
|
|
|
<text class="customlist-item-field-title">奖励绩效:</text> |
|
|
|
{{ displayListItem(item, 'AwardPerformance') }} |
|
|
|
</view> |
|
|
|
<!-- <view class="item-title">单列绩效</view> --> |
|
|
|
<view class="customlist-item-field"> |
|
|
|
<text class="customlist-item-field-title">基础绩效:</text> |
|
|
|
{{ displayListItem(item, 'SeparateBasicsPerformance') }} |
|
|
|
</view> |
|
|
|
<view class="customlist-item-field"> |
|
|
|
<text class="customlist-item-field-title">奖励绩效:</text> |
|
|
|
{{ displayListItem(item, 'SeparateAwardPerformance') }} |
|
|
|
</view> |
|
|
|
<!-- <view class="item-title">津贴补贴</view> --> |
|
|
|
<view class="customlist-item-field"> |
|
|
|
<text class="customlist-item-field-title">艰边津贴:</text> |
|
|
|
{{ displayListItem(item, 'RoughEdgeAllowance') }} |
|
|
|
</view> |
|
|
|
<view class="customlist-item-field"> |
|
|
|
<text class="customlist-item-field-title">民族津贴:</text> |
|
|
|
{{ displayListItem(item, 'NationAllowance') }} |
|
|
|
</view> |
|
|
|
<view class="customlist-item-field"> |
|
|
|
<text class="customlist-item-field-title">教龄补贴:</text> |
|
|
|
{{ displayListItem(item, 'TeachAllowance') }} |
|
|
|
</view> |
|
|
|
<view class="customlist-item-field"> |
|
|
|
<text class="customlist-item-field-title">特级教师津贴:</text> |
|
|
|
{{ displayListItem(item, 'SuperfineTeacherResearch') }} |
|
|
|
</view> |
|
|
|
<!-- <view class="item-title">改革性补贴</view> --> |
|
|
|
<view class="customlist-item-field"> |
|
|
|
<text class="customlist-item-field-title">交通补贴:</text> |
|
|
|
{{ displayListItem(item, 'Transportation') }} |
|
|
|
</view> |
|
|
|
<view class="customlist-item-field"> |
|
|
|
<text class="customlist-item-field-title">物业补贴:</text> |
|
|
|
{{ displayListItem(item, 'RealeState') }} |
|
|
|
</view> |
|
|
|
<view class="customlist-item-field"> |
|
|
|
<text class="customlist-item-field-title">工改保留补贴:</text> |
|
|
|
{{ displayListItem(item, 'WorkKeep') }} |
|
|
|
</view> |
|
|
|
<view class="customlist-item-field"> |
|
|
|
<text class="customlist-item-field-title">女职工卫生费:</text> |
|
|
|
{{ displayListItem(item, 'GirlStaffSanitation') }} |
|
|
|
</view> |
|
|
|
<view class="customlist-item-field"> |
|
|
|
<text class="customlist-item-field-title">乡镇补贴:</text> |
|
|
|
{{ displayListItem(item, 'TownshipSubsidy') }} |
|
|
|
</view> |
|
|
|
<view class="customlist-item-field"> |
|
|
|
<text class="customlist-item-field-title">住房补贴:</text> |
|
|
|
{{ displayListItem(item, 'HousingAllowance') }} |
|
|
|
</view> |
|
|
|
<view class="customlist-item-field"> |
|
|
|
<text class="customlist-item-field-title">住房公积金:</text> |
|
|
|
{{ displayListItem(item, 'HousingFundAllowance') }} |
|
|
|
</view> |
|
|
|
<view class="customlist-item-field"> |
|
|
|
<text class="customlist-item-field-title">其他:</text> |
|
|
|
{{ displayListItem(item, 'OtherOne') }} |
|
|
|
</view> |
|
|
|
<view class="customlist-item-field"> |
|
|
|
<text class="customlist-item-field-title">代扣合计:</text> |
|
|
|
{{ displayListItem(item, 'DeductionsSubtotal') }} |
|
|
|
</view> |
|
|
|
<view class="item-title">代扣代缴</view> |
|
|
|
<view class="customlist-item-field"> |
|
|
|
<text class="customlist-item-field-title">公积金:</text> |
|
|
|
{{ displayListItem(item, 'AccumulationFund') }} |
|
|
|
</view> |
|
|
|
<view class="customlist-item-field"> |
|
|
|
<text class="customlist-item-field-title">养老保险:</text> |
|
|
|
{{ displayListItem(item, 'EndowmentInsurance') }} |
|
|
|
</view> |
|
|
|
<view class="customlist-item-field"> |
|
|
|
<text class="customlist-item-field-title">职业年金:</text> |
|
|
|
{{ displayListItem(item, 'OccupationalAnnuities') }} |
|
|
|
</view> |
|
|
|
<view class="customlist-item-field"> |
|
|
|
<text class="customlist-item-field-title">医疗保险:</text> |
|
|
|
{{ displayListItem(item, 'MedicalInsurance') }} |
|
|
|
</view> |
|
|
|
<view class="customlist-item-field"> |
|
|
|
<text class="customlist-item-field-title">失业保险:</text> |
|
|
|
{{ displayListItem(item, 'UnemploymentInsurance') }} |
|
|
|
</view> |
|
|
|
<view class="customlist-item-field"> |
|
|
|
<text class="customlist-item-field-title">工会工费:</text> |
|
|
|
{{ displayListItem(item, 'LaborUnionWage') }} |
|
|
|
</view> |
|
|
|
<view class="customlist-item-field"> |
|
|
|
<text class="customlist-item-field-title">个人所得税:</text> |
|
|
|
{{ displayListItem(item, 'PersonalIncomeTax') }} |
|
|
|
</view> |
|
|
|
<view class="customlist-item-field"> |
|
|
|
<text class="customlist-item-field-title">其他:</text> |
|
|
|
{{ displayListItem(item, 'Other') }} |
|
|
|
</view> |
|
|
|
<!-- <view class="customlist-item-field"> |
|
|
|
<text class="customlist-item-field-title">姓名:</text> |
|
|
|
{{ displayListItem(item, 'EmpName') }} |
|
|
|
</view> |
|
|
|
<view class="customlist-item-field"> |
|
|
|
<text class="customlist-item-field-title">人员类别:</text> |
|
|
|
{{ displayListItem(item, 'PeopleType') }} |
|
|
|
</view> |
|
|
|
<view class="customlist-item-field"> |
|
|
|
<text class="customlist-item-field-title">发放年份:</text> |
|
|
|
{{ displayListItem(item, 'IssueYear') }} |
|
|
|
</view> |
|
|
|
|
|
|
|
<view class="customlist-item-field"> |
|
|
|
<text class="customlist-item-field-title">发放月份:</text> |
|
|
|
{{ displayListItem(item, 'IssueMonth') }} |
|
|
|
</view> |
|
|
|
|
|
|
|
<view class="customlist-item-field"> |
|
|
|
<text class="customlist-item-field-title">应发合计:</text> |
|
|
|
{{ displayListItem(item, 'TotalGrossPay') }} |
|
|
|
</view> |
|
|
|
|
|
|
|
<view class="customlist-item-field"> |
|
|
|
<text class="customlist-item-field-title">实发合计:</text> |
|
|
|
{{ displayListItem(item, 'NetCombined') }} |
|
|
|
</view> --> |
|
|
|
|
|
|
|
<!-- 操作按钮组 --> |
|
|
|
<!-- <l-customlist-action @view="action('view', item)" @edit="action('edit', item)" |
|
|
|
:showEdit="false" /> --> |
|
|
|
</view> |
|
|
|
</l-customlist> |
|
|
|
</l-scroll-list> |
|
|
|
</view> |
|
|
|
|
|
|
|
<!-- 关闭筛选栏按钮 --> |
|
|
|
<view @click="sideOpen = false" :class="sideOpen ? 'show' : ''" class="sideclose"> |
|
|
|
<l-icon type="pullright" color="blue" /> |
|
|
|
</view> |
|
|
|
|
|
|
|
<!-- 侧边栏 --> |
|
|
|
<scroll-view :class="sideOpen ? 'show' : ''" class="sidepage" scroll-y> |
|
|
|
<view v-if="ready" class="padding"> |
|
|
|
<l-input v-model="queryData.IssueYear" @change="searchChange()" title="年份" placeholder="按年份筛选,例:2022" /> |
|
|
|
<l-input v-model="queryData.IssueMonth" @change="searchChange()" title="月份" placeholder="按月份筛选,例:10" /> |
|
|
|
<l-input v-model="queryData.EmpName" @change="searchChange()" title="姓名" placeholder="按姓名筛选" /> |
|
|
|
<l-input v-model="queryData.PeopleType" @change="searchChange()" title="人员类别" placeholder="按人员类别筛选" /> |
|
|
|
<view class="padding-tb"> |
|
|
|
<l-button @click="reset" line="orange" class="block" block>重置筛选条件</l-button> |
|
|
|
</view> |
|
|
|
</view> |
|
|
|
</scroll-view> |
|
|
|
|
|
|
|
<!-- 添加按钮 --> |
|
|
|
<!-- <l-customlist-add v-if="!sideOpen" @click="action('create')" /> --> |
|
|
|
</view> |
|
|
|
</template> |
|
|
|
|
|
|
|
<script> |
|
|
|
import moment from 'moment' |
|
|
|
import get from 'lodash/get' |
|
|
|
import set from 'lodash/set' |
|
|
|
import pickBy from 'lodash/pickBy' |
|
|
|
import mapValues from 'lodash/mapValues' |
|
|
|
import common from '@/common/js/common.js' |
|
|
|
export default { |
|
|
|
data() { |
|
|
|
return { |
|
|
|
// 表单结构 |
|
|
|
scheme: { |
|
|
|
WageCardNo:{ |
|
|
|
type:'text' |
|
|
|
}, |
|
|
|
PeopleType:{ |
|
|
|
type:'text' |
|
|
|
}, |
|
|
|
PostType:{ |
|
|
|
type:'text' |
|
|
|
}, |
|
|
|
PayGrade:{ |
|
|
|
type:'text' |
|
|
|
}, |
|
|
|
TotalGrossPay:{ |
|
|
|
type:'text' |
|
|
|
}, |
|
|
|
PostWage:{ |
|
|
|
type:'text' |
|
|
|
}, |
|
|
|
PayGradeWage:{ |
|
|
|
type:'text' |
|
|
|
}, |
|
|
|
TenPercent:{ |
|
|
|
type:'text' |
|
|
|
}, |
|
|
|
BasicsPerformance:{ |
|
|
|
type:'text' |
|
|
|
}, |
|
|
|
AwardPerformance:{ |
|
|
|
type:'text' |
|
|
|
}, |
|
|
|
SeparateBasicsPerformance:{ |
|
|
|
type:'text' |
|
|
|
}, |
|
|
|
SeparateAwardPerformance:{ |
|
|
|
type:'text' |
|
|
|
}, |
|
|
|
RoughEdgeAllowance:{ |
|
|
|
type: 'text' |
|
|
|
}, |
|
|
|
NationAllowance:{ |
|
|
|
type: 'text' |
|
|
|
}, |
|
|
|
TeachAllowance:{ |
|
|
|
type: 'text' |
|
|
|
}, |
|
|
|
SuperfineTeacherResearch:{ |
|
|
|
type: 'text' |
|
|
|
}, |
|
|
|
Transportation:{ |
|
|
|
type: 'text' |
|
|
|
}, |
|
|
|
RealeState:{ |
|
|
|
type: 'text' |
|
|
|
}, |
|
|
|
WorkKeep:{ |
|
|
|
type: 'text' |
|
|
|
}, |
|
|
|
GirlStaffSanitation:{ |
|
|
|
type: 'text' |
|
|
|
}, |
|
|
|
TownshipSubsidy:{ |
|
|
|
type: 'text' |
|
|
|
}, |
|
|
|
HousingAllowance:{ |
|
|
|
type: 'text' |
|
|
|
}, |
|
|
|
HousingFundAllowance:{ |
|
|
|
type: 'text' |
|
|
|
}, |
|
|
|
OtherOne:{ |
|
|
|
type: 'text' |
|
|
|
}, |
|
|
|
DeductionsSubtotal:{ |
|
|
|
type: 'text' |
|
|
|
}, |
|
|
|
AccumulationFund:{ |
|
|
|
type: 'text' |
|
|
|
}, |
|
|
|
EndowmentInsurance:{ |
|
|
|
type: 'text' |
|
|
|
}, |
|
|
|
OccupationalAnnuities:{ |
|
|
|
type: 'text' |
|
|
|
}, |
|
|
|
MedicalInsurance:{ |
|
|
|
type: 'text' |
|
|
|
}, |
|
|
|
UnemploymentInsurance:{ |
|
|
|
type: 'text' |
|
|
|
}, |
|
|
|
LaborUnionWage:{ |
|
|
|
type: 'text' |
|
|
|
}, |
|
|
|
PersonalIncomeTax:{ |
|
|
|
type: 'text' |
|
|
|
}, |
|
|
|
Other:{ |
|
|
|
type: 'text' |
|
|
|
}, |
|
|
|
// F_CustomerId: { type: 'select', dataSource: '1', dataSourceId: 'crmCustomer,f_fullname,f_customerid' }, |
|
|
|
// F_InvoiceContent: { type: 'texteditor' }, |
|
|
|
// 姓名EmpName |
|
|
|
EmpName: { |
|
|
|
type: 'text' |
|
|
|
}, |
|
|
|
|
|
|
|
// 发放年份IssueYear |
|
|
|
IssueYear: { |
|
|
|
type: 'text' |
|
|
|
}, |
|
|
|
// 发放月份IssueMonth |
|
|
|
IssueMonth: { |
|
|
|
type: 'text' |
|
|
|
}, |
|
|
|
// 应发合计TotalGrossPay |
|
|
|
TotalGrossPay: { |
|
|
|
type: 'text' |
|
|
|
}, |
|
|
|
// 实发合计NetCombined |
|
|
|
NetCombined: { |
|
|
|
type: 'text' |
|
|
|
}, |
|
|
|
|
|
|
|
}, |
|
|
|
|
|
|
|
// 筛选菜单值 |
|
|
|
searchData: { |
|
|
|
Sqlparam: 1, |
|
|
|
IssueYear: '', |
|
|
|
IssueMonth: '' |
|
|
|
}, |
|
|
|
defaultQueryData: {}, |
|
|
|
queryData: { |
|
|
|
keyword: '' |
|
|
|
}, |
|
|
|
|
|
|
|
// 数据源 |
|
|
|
dataSource: { |
|
|
|
F_CustomerId: [] |
|
|
|
}, |
|
|
|
|
|
|
|
// 页面相关参数 |
|
|
|
ready: false, |
|
|
|
tips: '加载中…', |
|
|
|
loadState: '向下翻以加载更多', |
|
|
|
sideOpen: false, |
|
|
|
|
|
|
|
// 列表条目与分页信息 |
|
|
|
page: 1, |
|
|
|
total: 2, |
|
|
|
list: [], |
|
|
|
} |
|
|
|
}, |
|
|
|
|
|
|
|
async onLoad() { |
|
|
|
await this.init() |
|
|
|
}, |
|
|
|
|
|
|
|
onUnload() { |
|
|
|
this.OFF('invoice-list-change') |
|
|
|
}, |
|
|
|
|
|
|
|
methods: { |
|
|
|
// 页面初始化 |
|
|
|
async init() { |
|
|
|
let _this = this; |
|
|
|
let date = new Date() |
|
|
|
_this.searchData.IssueYear = date.getFullYear(); |
|
|
|
_this.searchData.IssueMonth = date.getMonth()+1; |
|
|
|
this.ON('invoice-list-change', this.refreshList) |
|
|
|
|
|
|
|
await Promise.all([ |
|
|
|
// 加载 F_CustomerId 字段的数据源:客户信息 |
|
|
|
// this.FETCH_DATASOURCE('crmCustomer').then(result => { |
|
|
|
// this.dataSource.F_CustomerId = result.data.map(t => ({ text: t.f_fullname, value: t.f_customerid })) |
|
|
|
// }), |
|
|
|
// 拉取列表信息 |
|
|
|
this.fetchList() |
|
|
|
]) |
|
|
|
|
|
|
|
this.defaultQueryData = this.COPY(this.queryData) |
|
|
|
this.ready = true |
|
|
|
}, |
|
|
|
// 切换时间 |
|
|
|
timeTap(num) { |
|
|
|
let _this = this; |
|
|
|
if (num == 1) { |
|
|
|
if(_this.searchData.IssueMonth == 1){ |
|
|
|
_this.searchData.IssueYear = _this.searchData.IssueYear - 1; |
|
|
|
_this.searchData.IssueMonth = 12 |
|
|
|
}else{ |
|
|
|
_this.searchData.IssueMonth = _this.searchData.IssueMonth - 1; |
|
|
|
} |
|
|
|
|
|
|
|
} else { |
|
|
|
if(_this.searchData.IssueMonth == 12){ |
|
|
|
_this.searchData.IssueYear = _this.searchData.IssueYear + 1; |
|
|
|
_this.searchData.IssueMonth = 1 |
|
|
|
}else{ |
|
|
|
_this.searchData.IssueMonth = _this.searchData.IssueMonth + 1; |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
this.fetchList() |
|
|
|
}, |
|
|
|
// 拉取列表 |
|
|
|
async fetchList(isConcat = true) { |
|
|
|
// if (this.page > this.total) { |
|
|
|
// return |
|
|
|
// } |
|
|
|
const result = await this.HTTP_GET( |
|
|
|
'learun/adms/WageSchedule/getlist', { |
|
|
|
pagination: { |
|
|
|
rows: 10, |
|
|
|
page: this.page, |
|
|
|
sidx: 'CreateTime', |
|
|
|
sord: 'DESC' |
|
|
|
}, |
|
|
|
queryJson: JSON.stringify(this.searchData) |
|
|
|
}, |
|
|
|
'加载数据时出错' |
|
|
|
) |
|
|
|
|
|
|
|
if (!result) { |
|
|
|
return |
|
|
|
} |
|
|
|
|
|
|
|
this.total = result.total |
|
|
|
// this.page = result.page + 1 |
|
|
|
// this.list = isConcat ? this.list.concat(result.rows) : result.rows; |
|
|
|
this.list = result.rows |
|
|
|
this.tips = `已加载 ${Math.min(result.page, result.total)} / ${result.total} 页,共 ${result.records} 项` |
|
|
|
this.loadState = result.page >= result.total ? '已加载所有项目' : '向下翻以加载更多' |
|
|
|
}, |
|
|
|
|
|
|
|
// 刷新清空列表 |
|
|
|
async refreshList(isConcat = true) { |
|
|
|
this.page = 1 |
|
|
|
this.total = 2 |
|
|
|
this.list = [] |
|
|
|
|
|
|
|
await this.fetchList(isConcat); |
|
|
|
}, |
|
|
|
|
|
|
|
// 列表下拉 |
|
|
|
pullDown() { |
|
|
|
this.refreshList().then(() => { |
|
|
|
this.$refs.list.stopPullDown() |
|
|
|
}) |
|
|
|
}, |
|
|
|
|
|
|
|
// 点击「编辑」、「查看」、「添加」、「删除」按钮 |
|
|
|
action(type, item) { |
|
|
|
switch (type) { |
|
|
|
default: |
|
|
|
case 'create': |
|
|
|
this.NAV_TO('./single?type=create') |
|
|
|
return |
|
|
|
|
|
|
|
case 'view': |
|
|
|
this.NAV_TO('./single?type=view&&id=' + item.Id, item, true) |
|
|
|
return |
|
|
|
|
|
|
|
case 'edit': |
|
|
|
this.NAV_TO('./single?type=edit', item, true) |
|
|
|
return |
|
|
|
} |
|
|
|
}, |
|
|
|
|
|
|
|
// 显示列表中的标题项 |
|
|
|
displayListItem(item, field) { |
|
|
|
const fieldItem = this.scheme[field] |
|
|
|
const value = item[field] |
|
|
|
|
|
|
|
switch (fieldItem.type) { |
|
|
|
case 'currentInfo': |
|
|
|
case 'organize': |
|
|
|
switch (fieldItem.dataType) { |
|
|
|
case 'user': |
|
|
|
return get(this.GET_GLOBAL('user'), `${value}.name`, '') |
|
|
|
case 'department': |
|
|
|
return get(this.GET_GLOBAL('department'), `${value}.name`, '') |
|
|
|
case 'company': |
|
|
|
return get(this.GET_GLOBAL('company'), `${value}.name`, '') |
|
|
|
default: |
|
|
|
return value || '' |
|
|
|
} |
|
|
|
|
|
|
|
case 'radio': |
|
|
|
case 'select': |
|
|
|
const selectItem = this.dataSource[field].find(t => t.value === value) |
|
|
|
return get(selectItem, 'text', '') |
|
|
|
|
|
|
|
case 'checkbox': |
|
|
|
if (!value || value.split(',').length <= 0) { |
|
|
|
return '' |
|
|
|
} |
|
|
|
const checkboxItems = value.split(',') |
|
|
|
return this.dataSource[field] |
|
|
|
.filter(t => checkboxItems.includes(t.value)) |
|
|
|
.map(t => t.text) |
|
|
|
.join(',') |
|
|
|
|
|
|
|
case 'datetime': |
|
|
|
if (!value) { |
|
|
|
return '' |
|
|
|
} |
|
|
|
return moment(value).format(Number(fieldItem.dateformat) === 0 ? 'YYYY年 M月 D日' : |
|
|
|
'YYYY-MM-DD HH:mm') |
|
|
|
|
|
|
|
default: |
|
|
|
return value || '' |
|
|
|
} |
|
|
|
}, |
|
|
|
|
|
|
|
// 设置搜索条件 |
|
|
|
async searchChange() { |
|
|
|
const result = {} |
|
|
|
|
|
|
|
const queryObj = pickBy(this.queryData, t => (Array.isArray(t) ? t.length > 0 : t)) |
|
|
|
Object.assign(result, mapValues(queryObj, t => (Array.isArray(t) ? t.join(',') : t))) |
|
|
|
|
|
|
|
this.searchData = result |
|
|
|
await this.refreshList(false); |
|
|
|
}, |
|
|
|
|
|
|
|
// 点击「清空搜索条件」按钮 |
|
|
|
reset() { |
|
|
|
this.queryData = this.COPY(this.defaultQueryData) |
|
|
|
this.searchChange() |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
</script> |
|
|
|
|
|
|
|
<style lang="less" scoped> |
|
|
|
@import '~@/common/css/sidepage.less'; |
|
|
|
@import '~@/common/css/customlist.less'; |
|
|
|
|
|
|
|
.customlist-item{ |
|
|
|
// padding: 0; |
|
|
|
padding-left: 0; |
|
|
|
padding-right: 0; |
|
|
|
padding-top: 0; |
|
|
|
} |
|
|
|
.customlist-item-field{ |
|
|
|
padding-left: 10px; |
|
|
|
padding-right: 10px; |
|
|
|
display: flex; |
|
|
|
justify-content: space-between; |
|
|
|
align-items: center; |
|
|
|
min-height: 52px; |
|
|
|
|
|
|
|
}, |
|
|
|
|
|
|
|
// 筛选菜单值 |
|
|
|
searchData: {}, |
|
|
|
defaultQueryData: {}, |
|
|
|
queryData: { |
|
|
|
keyword: '' |
|
|
|
}, |
|
|
|
|
|
|
|
// 数据源 |
|
|
|
dataSource: { |
|
|
|
F_CustomerId: [] |
|
|
|
}, |
|
|
|
|
|
|
|
// 页面相关参数 |
|
|
|
ready: false, |
|
|
|
tips: '加载中…', |
|
|
|
loadState: '向下翻以加载更多', |
|
|
|
sideOpen: false, |
|
|
|
|
|
|
|
// 列表条目与分页信息 |
|
|
|
page: 1, |
|
|
|
total: 2, |
|
|
|
list: [] |
|
|
|
} |
|
|
|
}, |
|
|
|
|
|
|
|
async onLoad() { |
|
|
|
await this.init() |
|
|
|
}, |
|
|
|
|
|
|
|
onUnload() { |
|
|
|
this.OFF('invoice-list-change') |
|
|
|
}, |
|
|
|
|
|
|
|
methods: { |
|
|
|
// 页面初始化 |
|
|
|
async init() { |
|
|
|
this.ON('invoice-list-change', this.refreshList) |
|
|
|
|
|
|
|
await Promise.all([ |
|
|
|
// 加载 F_CustomerId 字段的数据源:客户信息 |
|
|
|
// this.FETCH_DATASOURCE('crmCustomer').then(result => { |
|
|
|
// this.dataSource.F_CustomerId = result.data.map(t => ({ text: t.f_fullname, value: t.f_customerid })) |
|
|
|
// }), |
|
|
|
// 拉取列表信息 |
|
|
|
this.fetchList() |
|
|
|
]) |
|
|
|
|
|
|
|
this.defaultQueryData = this.COPY(this.queryData) |
|
|
|
this.ready = true |
|
|
|
}, |
|
|
|
|
|
|
|
// 拉取列表 |
|
|
|
async fetchList(isConcat=true) { |
|
|
|
if (this.page > this.total) { |
|
|
|
return |
|
|
|
} |
|
|
|
|
|
|
|
const result = await this.HTTP_GET( |
|
|
|
'learun/adms/WageSchedule/getlist', |
|
|
|
{ |
|
|
|
pagination: { rows: 10, page: this.page, sidx: 'CreateTime', sord: 'DESC' }, |
|
|
|
queryJson: JSON.stringify(this.searchData) |
|
|
|
}, |
|
|
|
'加载数据时出错' |
|
|
|
) |
|
|
|
|
|
|
|
if (!result) { |
|
|
|
return |
|
|
|
} |
|
|
|
|
|
|
|
this.total = result.total |
|
|
|
this.page = result.page + 1 |
|
|
|
this.list = isConcat?this.list.concat(result.rows):result.rows; |
|
|
|
|
|
|
|
this.tips = `已加载 ${Math.min(result.page, result.total)} / ${result.total} 页,共 ${result.records} 项` |
|
|
|
this.loadState = result.page >= result.total ? '已加载所有项目' : '向下翻以加载更多' |
|
|
|
}, |
|
|
|
|
|
|
|
// 刷新清空列表 |
|
|
|
async refreshList(isConcat=true) { |
|
|
|
this.page = 1 |
|
|
|
this.total = 2 |
|
|
|
this.list = [] |
|
|
|
|
|
|
|
await this.fetchList(isConcat); |
|
|
|
}, |
|
|
|
|
|
|
|
// 列表下拉 |
|
|
|
pullDown() { |
|
|
|
this.refreshList().then(() => { |
|
|
|
this.$refs.list.stopPullDown() |
|
|
|
}) |
|
|
|
}, |
|
|
|
|
|
|
|
// 点击「编辑」、「查看」、「添加」、「删除」按钮 |
|
|
|
action(type, item) { |
|
|
|
switch (type) { |
|
|
|
default: |
|
|
|
case 'create': |
|
|
|
this.NAV_TO('./single?type=create') |
|
|
|
return |
|
|
|
|
|
|
|
case 'view': |
|
|
|
this.NAV_TO('./single?type=view&&id='+item.Id, item, true) |
|
|
|
return |
|
|
|
|
|
|
|
case 'edit': |
|
|
|
this.NAV_TO('./single?type=edit', item, true) |
|
|
|
return |
|
|
|
} |
|
|
|
}, |
|
|
|
|
|
|
|
// 显示列表中的标题项 |
|
|
|
displayListItem(item, field) { |
|
|
|
const fieldItem = this.scheme[field] |
|
|
|
const value = item[field] |
|
|
|
|
|
|
|
switch (fieldItem.type) { |
|
|
|
case 'currentInfo': |
|
|
|
case 'organize': |
|
|
|
switch (fieldItem.dataType) { |
|
|
|
case 'user': |
|
|
|
return get(this.GET_GLOBAL('user'), `${value}.name`, '') |
|
|
|
case 'department': |
|
|
|
return get(this.GET_GLOBAL('department'), `${value}.name`, '') |
|
|
|
case 'company': |
|
|
|
return get(this.GET_GLOBAL('company'), `${value}.name`, '') |
|
|
|
default: |
|
|
|
return value || '' |
|
|
|
} |
|
|
|
|
|
|
|
case 'radio': |
|
|
|
case 'select': |
|
|
|
const selectItem = this.dataSource[field].find(t => t.value === value) |
|
|
|
return get(selectItem, 'text', '') |
|
|
|
|
|
|
|
case 'checkbox': |
|
|
|
if (!value || value.split(',').length <= 0) { |
|
|
|
return '' |
|
|
|
} |
|
|
|
const checkboxItems = value.split(',') |
|
|
|
return this.dataSource[field] |
|
|
|
.filter(t => checkboxItems.includes(t.value)) |
|
|
|
.map(t => t.text) |
|
|
|
.join(',') |
|
|
|
|
|
|
|
case 'datetime': |
|
|
|
if (!value) { |
|
|
|
return '' |
|
|
|
} |
|
|
|
return moment(value).format(Number(fieldItem.dateformat) === 0 ? 'YYYY年 M月 D日' : 'YYYY-MM-DD HH:mm') |
|
|
|
|
|
|
|
default: |
|
|
|
return value || '' |
|
|
|
} |
|
|
|
}, |
|
|
|
|
|
|
|
// 设置搜索条件 |
|
|
|
async searchChange() { |
|
|
|
const result = {} |
|
|
|
|
|
|
|
const queryObj = pickBy(this.queryData, t => (Array.isArray(t) ? t.length > 0 : t)) |
|
|
|
Object.assign(result, mapValues(queryObj, t => (Array.isArray(t) ? t.join(',') : t))) |
|
|
|
|
|
|
|
this.searchData = result |
|
|
|
await this.refreshList(false); |
|
|
|
}, |
|
|
|
|
|
|
|
// 点击「清空搜索条件」按钮 |
|
|
|
reset() { |
|
|
|
this.queryData = this.COPY(this.defaultQueryData) |
|
|
|
this.searchChange() |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
</script> |
|
|
|
|
|
|
|
<style lang="less" scoped> |
|
|
|
@import '~@/common/css/sidepage.less'; |
|
|
|
@import '~@/common/css/customlist.less'; |
|
|
|
</style> |
|
|
|
|
|
|
|
background-color: #ffffff; |
|
|
|
justify-content: space-between; |
|
|
|
border-bottom: 0.5px solid #eee; |
|
|
|
|
|
|
|
|
|
|
|
} |
|
|
|
.page { |
|
|
|
background: #fff; |
|
|
|
} |
|
|
|
|
|
|
|
.timeTable_sec1 { |
|
|
|
padding: 14px 12px; |
|
|
|
text-align: center; |
|
|
|
background: #0075c4; |
|
|
|
color: #94d4ff; |
|
|
|
font-size: 0; |
|
|
|
} |
|
|
|
|
|
|
|
.tSec1Box>* { |
|
|
|
display: inline-block; |
|
|
|
vertical-align: middle; |
|
|
|
} |
|
|
|
|
|
|
|
.tSec1Line { |
|
|
|
height: 13px; |
|
|
|
width: 1px; |
|
|
|
background: #94d4ff; |
|
|
|
margin: 0 10px; |
|
|
|
} |
|
|
|
|
|
|
|
.tSec1Box { |
|
|
|
font-size: 15px; |
|
|
|
overflow: hidden; |
|
|
|
white-space: nowrap; |
|
|
|
text-overflow: ellipsis; |
|
|
|
} |
|
|
|
|
|
|
|
#semester { |
|
|
|
margin-bottom: 10px; |
|
|
|
} |
|
|
|
|
|
|
|
#weekTime {} |
|
|
|
|
|
|
|
#weekTime text { |
|
|
|
margin: 0 10px; |
|
|
|
} |
|
|
|
|
|
|
|
.tSec1Box>text { |
|
|
|
width: auto; |
|
|
|
text-align: center; |
|
|
|
line-height: 22px; |
|
|
|
} |
|
|
|
|
|
|
|
.tSec1Box image { |
|
|
|
width: 15px; |
|
|
|
margin-right: 2px; |
|
|
|
} |
|
|
|
|
|
|
|
.tSec1Box text:after { |
|
|
|
display: none; |
|
|
|
} |
|
|
|
.item-title{ |
|
|
|
color: #000; |
|
|
|
font-size: 16px; |
|
|
|
line-height: 36px; |
|
|
|
background: #f1f1f1; |
|
|
|
margin-top: 5px; |
|
|
|
padding-left: 5px; |
|
|
|
} |
|
|
|
</style> |