liuhj před 1 rokem
rodič
revize
c38c62ce53
1 změnil soubory, kde provedl 366 přidání a 73 odebrání
  1. 366 73
      src/components/Finance/Payroll.vue

+ 366 - 73
src/components/Finance/Payroll.vue

@@ -3,17 +3,15 @@
         <div class="payroll-all">
             <div class="payroll-head">
                 <div class="payroll-head-li">
-                    <label>团组名称:</label>
-                    <el-select @change="Receivables" v-model="value" filterable placeholder="请选择">
-                        <el-option
-                        v-for="item in options"
-                        :key="item.id"
-                        :label="item.groupName"
-                        :value="item.id">
-                        </el-option>
-                    </el-select>
+                    <el-date-picker
+                    v-model="value2"
+                    type="month"
+                    placeholder="选择月"
+                    @change="PickTime()">
+                    </el-date-picker>
                 </div>
                 <div class="payroll-head-li">
+                    <el-button type="primary" @click="addsalary()">新增</el-button>
                     <el-button type="primary">成都公司工资单</el-button>
                     <el-button type="primary">四川公司工资单</el-button>
                     <el-button type="primary">纽茵公司工资单</el-button>
@@ -26,49 +24,65 @@
                     border
                     style="width: 100%">
                         <el-table-column
-                            prop="date"
+                            prop="yearMonth"
                             label="年月"
-                            width="180">
+                            width="80">
                         </el-table-column>
                         <el-table-column
                             prop="name"
                             label="员工"
-                            width="180">
+                            width="80">
                         </el-table-column>
                         <el-table-column
-                            prop="name"
+                            prop="startDate"
                             label="起止日期"
-                            width="180">
+                            width="220">
+                            <template slot-scope="scope">
+                                <div class="sub-box">{{scope.row.startDate+'~'+scope.row.endDate}}</div>
+                            </template>
                         </el-table-column>
                         <el-table-column
-                            prop="name"
-                            label="应发合计	"
-                            width="180">
+                            prop="should"
+                            label="应发合计"
+                            width="100">
                         </el-table-column>
                         <el-table-column
-                            prop="name"
+                            prop="totalDeductions"
                             label="扣款合计"
-                            width="180">
+                            width="100">
                         </el-table-column>
                         <el-table-column
                             prop="name"
                             label="税前合计	"
-                            width="180">
+                            width="100">
                         </el-table-column>
                         <el-table-column
-                            prop="name"
+                            prop="withholdingTax"
                             label="代缴个税"
-                            width="180">
+                            width="100">
                         </el-table-column>
                         <el-table-column
-                            prop="name"
+                            prop="afterTax"
                             label="税后合计"
-                            width="180">
+                            width="100">
+                        </el-table-column>
+                        <el-table-column
+                            prop="lastUpdateUserName"
+                            label="最后操作人"
+                            width="100">
+                        </el-table-column>
+                        <el-table-column
+                            prop="lastUpdateDt"
+                            label="最后时间"
+                            width="150">
                         </el-table-column>
                         <el-table-column
                             prop="name"
                             label="操 作">
-                            <el-button type="text" @click="dialogFormVisible = true">Dialog</el-button>
+                            <!-- eslint-disable-next-line -->
+                            <template slot-scope="scope">
+                                <el-button type="text" @click="SalaryDetails(scope.$index, scope.row)">Dialog</el-button>
+                            </template>
                         </el-table-column>
                     </el-table>
                 </template>
@@ -76,104 +90,118 @@
             <el-dialog top="3.5vh" title="薪资详细信息" :visible.sync="dialogFormVisible">
                 <el-form :model="form">
                     <div class="payroll-inif">
+                        <el-form-item label="员工" :label-width="formLabelWidth">
+                            <el-select size="medium" style="height:36px" :disabled="disabled" v-model="salaryinif.userId" filterable placeholder="请选择">
+                                <el-option
+                                  v-for="item in userlist"
+                                  :key="item.id"
+                                  :label="item.cnName"
+                                  :value="item.id">
+                                </el-option>
+                              </el-select>
+                        </el-form-item>
                         <el-form-item label="年月" :label-width="formLabelWidth">
-                            <el-date-picker v-model="form.name" size="medium" type="month" placeholder="选择月"></el-date-picker>
+                            <el-date-picker @change="Rangetime()" v-model="salaryinif.yearMonth" size="medium" type="month" placeholder="选择月"></el-date-picker>
                         </el-form-item>
                         <el-form-item label="工资日期起" :label-width="formLabelWidth">
-                            <el-date-picker v-model="form.region" size="medium" type="date" placeholder="选择日期"></el-date-picker>
+                            <el-date-picker v-model="salaryinif.startDate" size="medium" type="date" placeholder="选择日期"></el-date-picker>
                         </el-form-item>
                         <el-form-item label="工资日期止" :label-width="formLabelWidth">
-                            <el-date-picker v-model="form.region" size="medium" type="date" placeholder="选择日期"></el-date-picker>
+                            <el-date-picker v-model="salaryinif.endDate" size="medium" type="date" placeholder="选择日期"></el-date-picker>
                         </el-form-item>
                         <el-form-item label="基本工资" :label-width="formLabelWidth">
-                            <el-input-number :precision="2" size="medium" :controls="false" v-model="form.region"></el-input-number>
+                            <el-input-number :precision="2" size="medium" :controls="false" v-model="salaryinif.basic"></el-input-number>
                         </el-form-item>
                         <el-form-item label="绩效工资" :label-width="formLabelWidth">
-                            <el-input-number :precision="2" size="medium" :controls="false" v-model="form.region"></el-input-number>
+                            <el-input-number :precision="2" size="medium" :controls="false" v-model="salaryinif.floats"></el-input-number>
                         </el-form-item>
                         <el-form-item label="岗位津贴" :label-width="formLabelWidth">
-                            <el-input-number :precision="2" size="medium" :controls="false" v-model="form.region"></el-input-number>
+                            <el-input-number :precision="2" size="medium" :controls="false" v-model="salaryinif.postAllowance"></el-input-number>
                         </el-form-item>
                         <el-form-item label="服装洗理补贴" :label-width="formLabelWidth">
-                            <el-input-number :precision="2" size="medium" :controls="false" v-model="form.region"></el-input-number>
+                            <el-input-number :precision="2" size="medium" :controls="false" v-model="salaryinif.garmentWashSubsidies"></el-input-number>
                         </el-form-item>
                         <el-form-item label="通讯补贴" :label-width="formLabelWidth">
-                            <el-input-number :precision="2" size="medium" :controls="false" v-model="form.region"></el-input-number>
+                            <el-input-number :precision="2" size="medium" :controls="false" v-model="salaryinif.communicationSubsidies"></el-input-number>
                         </el-form-item>
                         <el-form-item label="交通补贴" :label-width="formLabelWidth">
-                            <el-input-number :precision="2" size="medium" :controls="false" v-model="form.region"></el-input-number>
+                            <el-input-number :precision="2" size="medium" :controls="false" v-model="salaryinif.trafficSubsidies"></el-input-number>
                         </el-form-item>
                         <el-form-item label="保密费" :label-width="formLabelWidth">
-                            <el-input-number :precision="2" size="medium" :controls="false" v-model="form.region"></el-input-number>
+                            <el-input-number :precision="2" size="medium" :controls="false" v-model="salaryinif.informationSecurityFee"></el-input-number>
                         </el-form-item>
                         <el-form-item label="操作奖金" :label-width="formLabelWidth">
-                            <el-input-number :precision="2" size="medium" :controls="false" v-model="form.region"></el-input-number>
+                            <el-input-number :precision="2" size="medium" :controls="false" v-model="salaryinif.operationBonus"></el-input-number>
                         </el-form-item>
                         <el-form-item label="其他补贴" :label-width="formLabelWidth">
-                            <el-input-number :precision="2" size="medium" :controls="false" v-model="form.region"></el-input-number>
+                            <el-input-number :precision="2" size="medium" :controls="false" v-model="salaryinif.otherSubsidies"></el-input-number>
                         </el-form-item>
                         <el-form-item label="部门集体团建费" :label-width="formLabelWidth">
-                            <el-input-number :precision="2" size="medium" :controls="false" v-model="form.region"></el-input-number>
+                            <el-input-number :precision="2" size="medium" :controls="false" v-model="salaryinif.groupCost"></el-input-number>
                         </el-form-item>
                         <el-form-item label="过节费" :label-width="formLabelWidth">
-                            <el-input-number :precision="2" size="medium" :controls="false" v-model="form.region"></el-input-number>
+                            <el-input-number :precision="2" size="medium" :controls="false" v-model="salaryinif.specialAllowance"></el-input-number>
                         </el-form-item>
                         <el-form-item label="代扣保险" :label-width="formLabelWidth">
-                            <el-input-number :precision="2" size="medium" :controls="false" v-model="form.region"></el-input-number>
+                            <el-input-number :precision="2" size="medium" :controls="false" v-model="salaryinif.withholdingInsurance"></el-input-number>
                         </el-form-item>
                         <el-form-item label="代扣公积金" :label-width="formLabelWidth">
-                            <el-input-number :precision="2" size="medium" :controls="false" v-model="form.region"></el-input-number>
+                            <el-input-number :precision="2" size="medium" :controls="false" v-model="salaryinif.reservedFunds"></el-input-number>
+                        </el-form-item>
+                        <el-form-item label="代缴个税" :label-width="formLabelWidth">
+                            <el-input-number :precision="2" size="medium" :controls="false" v-model="salaryinif.withholdingTax"></el-input-number>
                         </el-form-item>
                         <el-form-item label="餐补" :label-width="formLabelWidth">
-                            <el-input-number :precision="2" size="medium" :controls="false" v-model="form.region"></el-input-number>
+                            <el-input-number :precision="2" size="medium" :controls="false" v-model="salaryinif.mealsupplement"></el-input-number>
                         </el-form-item>
                     </div>
                     <div class="leave-inif">
                         <el-form-item label="事假" :label-width="formLabelWidth">
-                            <span>0.00 (共 0 小时)</span>
+                            <span>{{salaryinif.somethingFalse}} (共 0 小时)</span>
                         </el-form-item>
                         <el-form-item label="病假" :label-width="formLabelWidth">
-                            <span>0.00 (共 0 小时)</span>
+                            <span>{{salaryinif.sickLeave}} (共 0 小时)</span>
                         </el-form-item>
                         <el-form-item label="迟到" :label-width="formLabelWidth">
-                            <span>0.00 (30分钟以下共次,30分钟以上共次,60分钟以上共次,2小时以上共次)</span>
+                            <span>{{salaryinif.lateTo}} (30分钟以下共次,30分钟以上共次,60分钟以上共次,2小时以上共次)</span>
                         </el-form-item>
                         <el-form-item label="早退" :label-width="formLabelWidth">
-                            <span>0.00 (10分钟以下共次,10-30分钟共次,30-60分钟共次,1小时以上共次)</span>
+                            <span>{{salaryinif.leaveEarly}} (10分钟以下共次,10-30分钟共次,30-60分钟共次,1小时以上共次)</span>
                         </el-form-item>
                         <el-form-item label="旷工" :label-width="formLabelWidth">
-                            <span>0.00 (共 0 小时)</span>
+                            <span>{{salaryinif.absenteeism}} (共 0 小时)</span>
                         </el-form-item>
-                        <el-form-item label="打卡" :label-width="formLabelWidth">
-                            <span>0.00 (未打卡共次)</span>
+                        <el-form-item label="打卡" :label-width="formLabelWidth">
+                            <span>{{salaryinif.notPunch}} (未打卡共次)</span>
                         </el-form-item>
                     </div>
                     <div class="salary-payments">
                         <el-form-item label="其他扣款" :label-width="formLabelWidth">
-                            <span>0.00</span>
+                            <span>{{salaryinif.otherDeductions}}</span>
                         </el-form-item>
                         <el-form-item label="应发合计" :label-width="formLabelWidth">
-                            <span>0.00</span>
+                            <span>{{salaryinif.should}}</span>
                         </el-form-item>
                         <el-form-item label="扣款合计" :label-width="formLabelWidth">
-                            <span>0.00</span>
+                            <span>{{salaryinif.totalDeductions}}</span>
                         </el-form-item>
                         <el-form-item label="税前合计" :label-width="formLabelWidth">
-                            <span>0.00</span>
+                            <span>{{salaryinif.afterTax}}</span>
                         </el-form-item>
                         <el-form-item label="税后合计" :label-width="formLabelWidth">
-                            <span>0.00</span>
+                            <span>{{salaryinif.afterTax}}</span>
                         </el-form-item>
                     </div>
                     <div class="remark-box">
                         <el-form-item label="备注" :label-width="formLabelWidth">
-                            <el-input :rows="1" type="textarea" v-model="form.region"></el-input>
+                            <el-input :rows="1" type="textarea" v-model="salaryinif.remark"></el-input>
                         </el-form-item>
                     </div>
                 </el-form>
                 <div slot="footer" class="dialog-footer">
+                    <el-button v-if="disabled" type="primary" @click="salaryAD('修改')">确认修改</el-button>
+                    <el-button v-if="preserve" type="primary" @click="salaryAD('新增')">保 存</el-button>
                     <el-button @click="dialogFormVisible = false">取 消</el-button>
-                    <el-button type="primary" @click="dialogFormVisible = false">确 定</el-button>
                 </div>
             </el-dialog>
         </div>
@@ -183,31 +211,293 @@
 export default {
     data() {
       return {
-        tableData: [{
-          date: '2016-05-02',
-          name: '王小虎',
-          address: '上海市普陀区金沙江路 1518 弄'
-        }, {
-          date: '2016-05-04',
-          name: '王小虎',
-          address: '上海市普陀区金沙江路 1517 弄'
-        }, {
-          date: '2016-05-01',
-          name: '王小虎',
-          address: '上海市普陀区金沙江路 1519 弄'
-        }, {
-          date: '2016-05-03',
-          name: '王小虎',
-          address: '上海市普陀区金沙江路 1516 弄'
-        }],
+        userlist:[],
+        loginuserid:'',
+        value2:'',
+        tableData: [],
         dialogTableVisible: false,
         dialogFormVisible: false,
+        disabled:true,
+        preserve:'',
+        //薪资详细
+        salaryinif:{
+            userId:"",//员工Id
+            name:"",//姓名
+            yearMonth:"",//年月
+            startDate:"",//工资日期 起
+            endDate:"",//工资日期 止
+            basic:"",//基本工资
+            floats:"",//绩效工资
+            postAllowance:"",//岗位津贴
+            garmentWashSubsidies:"",//服装洗理补贴
+            communicationSubsidies:"",// 通讯补贴
+            trafficSubsidies:"",// 交通补贴
+            informationSecurityFee:"",// 保密费
+            operationBonus:"",// 操作奖金
+            specialAllowance:"",// 特殊津贴
+            otherSubsidies:"",// 其他补贴
+            withholdingInsurance:"",// 代扣保险
+            mealsupplement:"",// 餐补
+            reservedFunds:"",// 代扣公积金
+            groupCost:"",// 部门集体团建费
+            sickLeave:"",// 病假
+            somethingFalse:"",//  事假
+            lateTo:"",//  迟到 
+            leaveEarly:"",//   早退  
+            absenteeism:"",//旷工 
+            notPunch:"",//未打卡 
+            otherDeductions:"",//其他扣款 
+            should:"",//应发合计 
+            totalDeductions:"",//扣款合计 
+            totalRealHair:"",//实发合计 
+            withholdingTax:"",//代扣个税 
+            afterTax:"",//税后工资 
+            isLock:"",//锁定标识 
+            lastUpdateUserId:"",//最后操作人 
+            lastUpdateUserName:"",//最后操作人Name 
+            lastUpdateDt:"",//最后操作时间 
+            remark:"",//备注 
+        },
         form: {
           name: '',
           region: '',
         },
         formLabelWidth: '120px'
       }
+    },
+    methods:{
+        Rangetime(){
+            console.log('2023-10' instanceof Date)
+            console.log(this.salaryinif.startDate instanceof Date)
+        },
+        getnewDate(){
+            let nowDate = new Date()
+            let date = {
+                year: nowDate.getFullYear(),
+                month: nowDate.getMonth() + 1,
+                date: nowDate.getDate()
+            }
+            console.log(date.year + '-' + date.month)
+            this.value2=date.year + '-' + date.month;
+            this.GetWageSheetList();
+        },
+        //获取员工
+        GetWageSheetBasicsDataSource(){
+            var url = "/api/PersonnelModule/GetWageSheetBasicsDataSource"
+            var that = this
+            this.$axios({
+                method: 'post',
+                url: url,
+                headers: {
+                    Authorization: 'Bearer ' + this.token
+                }
+            }).then(function (res) {
+                if(res.data.code==200){
+                    console.log(res.data.data.userNames)
+                    that.userlist=res.data.data.userNames
+                   
+                }else{
+                    that.$message({
+                        message: '加载失败!原因:'+res.data.msg,
+                        type: 'warning'
+                    });
+                }
+            })
+        },
+        //薪资列表
+        GetWageSheetList(){
+            var url = "/api/PersonnelModule/GetWageSheetList"
+            var that = this
+            this.$axios({
+                method: 'post',
+                url: url,
+                headers: {
+                    Authorization: 'Bearer ' + this.token
+                },
+                data:{
+                    portType: 1,
+                    yearMonth: that.value2,
+                }
+            }).then(function (res) {
+                that.tableData=[];
+                if(res.data.code==200){
+                    console.log(res)
+                    that.tableData=res.data.data;
+                    console.log( that.tableData)
+                }else{
+                    that.$message({
+                        message: '加载失败!原因:'+res.data.msg,
+                        type: 'warning'
+                    });
+                }
+            })
+        },
+        //日期处理(日)
+        TimeProcessingri(val){
+            if(val instanceof Date){
+                let newsyear=val.getFullYear();
+                let newsMonth=val.getMonth() + 1;
+                let newsday=val.getDate();
+                if((val.getMonth() + 1)<10){
+                    newsMonth='0'+newsMonth
+                }else{
+                    newsMonth=val.getMonth() + 1
+                }
+                return newsyear+ '-' +newsMonth+ '-' + newsday;
+            }else{
+                return val
+            }
+        },
+        //日期处理(月)
+        TimeProcessingyue(val){
+            if(val instanceof Date){
+                let newsyear=val.getFullYear();
+                let newsMonth=val.getMonth() + 1;
+                if((val.getMonth() + 1)<10){
+                    newsMonth='0'+newsMonth
+                }else{
+                    newsMonth=val.getMonth() + 1
+                }
+                return newsyear+ '-' +newsMonth;
+            }else{
+                return val
+            }
+            
+        },
+        //时间切换
+        PickTime(){
+            let newyear=this.value2.getFullYear();
+            let newMonth=this.value2.getMonth() + 1;
+            if((this.value2.getMonth() + 1)<10){
+                newMonth='0'+newMonth
+            }else{
+                newMonth=this.value2.getMonth() + 1
+            }
+            this.value2=newyear+ '-' +newMonth;
+            console.log(this.value2)
+            this.GetWageSheetList();
+        },
+        //薪资详细
+        SalaryDetails(index, row){
+            this.dialogFormVisible = true;
+            this.disabled=true;
+            this.preserve=false;
+            console.log(row.id)
+            var url = "/api/PersonnelModule/GetWageSheetById"
+            var that = this
+            this.$axios({
+                method: 'post',
+                url: url,
+                headers: {
+                    Authorization: 'Bearer ' + this.token
+                },
+                data:{
+                    portType: 1,
+                    id: row.id,
+                }
+            }).then(function (res) {
+                if(res.data.code==200){
+                    console.log(res)
+                    that.salaryinif=res.data.data;
+                }else{
+                    that.$message({
+                        message: '加载失败!原因:'+res.data.msg,
+                        type: 'warning'
+                    });
+                }
+            })
+        },
+        //薪资(新增,修改)API
+        PostWageSheetAddOrEdit(inif){
+            console.log(inif)
+            var url = "/api/PersonnelModule/PostWageSheetAddOrEdit"
+            var that = this
+            this.$axios({
+                method: 'post',
+                url: url,
+                headers: {
+                    Authorization: 'Bearer ' + this.token
+                },
+                data:{
+                    status:inif.statuss,
+                    createUserId:that.loginuserid,
+                    userId:that.salaryinif.userId,
+                    id:inif.ids,
+                    remark:that.salaryinif.remark,
+                    yearMonth:that.TimeProcessingyue(that.salaryinif.yearMonth),
+                    startDate:that.TimeProcessingri(that.salaryinif.startDate),
+                    endDate:that.TimeProcessingri(that.salaryinif.endDate),
+                    basic:that.salaryinif.basic,
+                    floats:that.salaryinif.floats,
+                    postAllowance:that.salaryinif.postAllowance,
+                    garmentWashSubsidies:that.salaryinif.garmentWashSubsidies,
+                    communicationSubsidies:that.salaryinif.communicationSubsidies,
+                    trafficSubsidies:that.salaryinif.trafficSubsidies,
+                    informationSecurityFee:that.salaryinif.informationSecurityFee,
+                    operationBonus:that.salaryinif.operationBonus,
+                    specialAllowance:that.salaryinif.specialAllowance,
+                    otherSubsidies:that.salaryinif.otherSubsidies,
+                    withholdingInsurance:that.salaryinif.withholdingInsurance,
+                    mealsupplement:that.salaryinif.mealsupplement,
+                    reservedFunds:that.salaryinif.reservedFunds,
+                    groupCost:that.salaryinif.groupCost,
+                    sickLeave:that.salaryinif.sickLeave,
+                    somethingFalse:that.salaryinif.somethingFalse,
+                    lateTo:that.salaryinif.lateTo,
+                    leaveEarly:that.salaryinif.leaveEarly,
+                    absenteeism:that.salaryinif.absenteeism,
+                    notPunch:that.salaryinif.notPunch,
+                    otherDeductions:that.salaryinif.otherDeductions,
+                    should:that.salaryinif.should,
+                    totalDeductions:that.salaryinif.totalDeductions,
+                    totalRealHair:that.salaryinif.totalRealHair,
+                    withholdingTax:that.salaryinif.withholdingTax,
+                    afterTax:that.salaryinif.afterTax,
+                }
+            }).then(function (res) {
+                if(res.data.code==200){
+                    console.log(res)
+                }else{
+                    that.$message({
+                        message: '加载失败!原因:'+res.data.msg,
+                        type: 'warning'
+                    });
+                }
+            })
+        },
+        //薪资(新增,修改)
+        salaryAD(text){
+            this.dialogFormVisible = false;
+            let inifadd={
+                statuss:'',
+                userIds:'',
+                ids:''
+            }
+            if(text=='新增'){
+                inifadd.statuss=1;
+                inifadd.userIds=0;
+                inifadd.ids=0;
+                this.PostWageSheetAddOrEdit(inifadd)
+            }else if(text=='修改'){
+                inifadd.statuss=2;
+                inifadd.userIds=this.salaryinif.userId;
+                inifadd.ids=this.salaryinif.id;
+                this.PostWageSheetAddOrEdit(inifadd)
+            }
+            
+        },
+        //新增薪资
+        addsalary(){
+            this.dialogFormVisible = true;
+            this.disabled=false;
+            this.preserve=true;
+            this.salaryinif={};
+        }
+    },
+    mounted(){
+        this.GetWageSheetBasicsDataSource()
+        this.loginuserid=JSON.parse(localStorage.getItem('userinif')).userInfo.userId;
+        this.getnewDate();
     }
 }
 </script>
@@ -271,4 +561,7 @@ export default {
 .remark-box{
     margin: 0 80px;
 }
+.payroll-inif .el-input--medium {
+    width: 218px;
+}
 </style>