|
@@ -40,8 +40,13 @@
|
|
<el-form-item >
|
|
<el-form-item >
|
|
<el-link type="primary" :underline="false" @click="assignToProject" style="margin-left:5px;">查看项目成本分配</el-link>
|
|
<el-link type="primary" :underline="false" @click="assignToProject" style="margin-left:5px;">查看项目成本分配</el-link>
|
|
</el-form-item>
|
|
</el-form-item>
|
|
|
|
+
|
|
<el-form-item style="float:right;">
|
|
<el-form-item style="float:right;">
|
|
- <el-link type="primary" :underline="false" @click="exportData">导出数据</el-link>
|
|
|
|
|
|
+ <el-link type="primary" :underline="false" @click="exportData">导出项目成本数据</el-link>
|
|
|
|
+ </el-form-item>
|
|
|
|
+
|
|
|
|
+ <el-form-item style="float:right;margin-right:30px;" v-if="hasNoProjectUsers">
|
|
|
|
+ <el-link type="primary" :underline="false" @click="showNoProjectUsers">查看无项目数据</el-link>
|
|
</el-form-item>
|
|
</el-form-item>
|
|
</el-form>
|
|
</el-form>
|
|
<div id="container" style="height:300px"></div>
|
|
<div id="container" style="height:300px"></div>
|
|
@@ -102,6 +107,29 @@
|
|
</el-upload>
|
|
</el-upload>
|
|
</div>
|
|
</div>
|
|
</el-dialog>
|
|
</el-dialog>
|
|
|
|
+
|
|
|
|
+ <!--无项目人员列表-->
|
|
|
|
+ <el-dialog title="无项目人员列表" v-if="showNPDialog" :visible.sync="showNPDialog" :close-on-click-modal="false" customClass="customWidth" width="1200px">
|
|
|
|
+ <el-table :data="npUserList" highlight-current-row v-loading="listLoading"
|
|
|
|
+ show-summary=true
|
|
|
|
+ ref="table"
|
|
|
|
+ :height="400" style="width: 100%;">
|
|
|
|
+ <el-table-column prop="name" label="姓名" sortable width="150"></el-table-column>
|
|
|
|
+ <el-table-column prop="monthCost" label="工资" width="150"></el-table-column>
|
|
|
|
+ <el-table-column prop="bonus" label="奖金" ></el-table-column>
|
|
|
|
+ <el-table-column prop="allowance" label="津贴" ></el-table-column>
|
|
|
|
+ <el-table-column prop="insuranceOld" label="养老保险" ></el-table-column>
|
|
|
|
+ <el-table-column prop="insuranceMedical" label="医疗保险" ></el-table-column>
|
|
|
|
+ <el-table-column prop="insuranceLosejob" label="失业保险" ></el-table-column>
|
|
|
|
+ <el-table-column prop="houseFund" label="住房公积金" ></el-table-column>
|
|
|
|
+ <el-table-column prop="others" label="其他" ></el-table-column>
|
|
|
|
+ <el-table-column prop="totalCost" label="总成本" ></el-table-column>
|
|
|
|
+ </el-table>
|
|
|
|
+ <div slot="footer" class="dialog-footer">
|
|
|
|
+ <div style="float:left;color:#ff9900;">*以上人员当月尚无投入的项目,请提醒他们填写日报。</div>
|
|
|
|
+ <el-button type="primary" @click="showNPDialog = false" >关闭</el-button>
|
|
|
|
+ </div>
|
|
|
|
+ </el-dialog>
|
|
</section>
|
|
</section>
|
|
</template>
|
|
</template>
|
|
<style scoped>
|
|
<style scoped>
|
|
@@ -121,6 +149,9 @@
|
|
export default {
|
|
export default {
|
|
data() {
|
|
data() {
|
|
return {
|
|
return {
|
|
|
|
+ showNPDialog: false,
|
|
|
|
+ npUserList:[],
|
|
|
|
+ hasNoProjectUsers: false,
|
|
isUploading:false,
|
|
isUploading:false,
|
|
importDialog: false,
|
|
importDialog: false,
|
|
importParam:{syncUserCost:true, syncHistoryReport:true},
|
|
importParam:{syncUserCost:true, syncHistoryReport:true},
|
|
@@ -139,28 +170,46 @@
|
|
};
|
|
};
|
|
},
|
|
},
|
|
methods: {
|
|
methods: {
|
|
-
|
|
|
|
|
|
+ showNoProjectUsers() {
|
|
|
|
+ this.showNPDialog = true;
|
|
|
|
+ this.http.post('/finance/getNoProjectUsers', {yearMonth: this.date},
|
|
|
|
+ res => {
|
|
|
|
+ if (res.code == "ok") {
|
|
|
|
+ this.npUserList = res.data;
|
|
|
|
+ }});
|
|
|
|
+ },
|
|
assignToProject(){
|
|
assignToProject(){
|
|
var _this = this;
|
|
var _this = this;
|
|
this.http.post('/finance/getTimeCost', {yearMonth: this.date},
|
|
this.http.post('/finance/getTimeCost', {yearMonth: this.date},
|
|
res => {
|
|
res => {
|
|
if (res.code == "ok") {
|
|
if (res.code == "ok") {
|
|
var xList = [], yList = [], list = res.data.costList,
|
|
var xList = [], yList = [], list = res.data.costList,
|
|
|
|
+
|
|
totalMoneyCost = res.data.totalMoneyCost;
|
|
totalMoneyCost = res.data.totalMoneyCost;
|
|
|
|
+ var nopCost = 0;
|
|
|
|
+ if (res.data.noProjectItem.project != null) {
|
|
|
|
+ this.hasNoProjectUsers = true;
|
|
|
|
+ nopCost = res.data.noProjectItem.cost;
|
|
|
|
+ } else {
|
|
|
|
+ this.hasNoProjectUsers = false;
|
|
|
|
+ }
|
|
|
|
+
|
|
for(var i in list) {
|
|
for(var i in list) {
|
|
xList.push(list[i].project);
|
|
xList.push(list[i].project);
|
|
- yList.push({
|
|
|
|
- "value": list[i].cost,
|
|
|
|
- "id": list[i].id,
|
|
|
|
- "time": list[i].workingTime
|
|
|
|
- });
|
|
|
|
|
|
+
|
|
|
|
+ yList.push({
|
|
|
|
+ "value": list[i].cost,
|
|
|
|
+ "id": list[i].id,
|
|
|
|
+ "time": list[i].workingTime
|
|
|
|
+ });
|
|
}
|
|
}
|
|
|
|
|
|
var myChart = echarts.init(document.getElementById("container"));
|
|
var myChart = echarts.init(document.getElementById("container"));
|
|
_this.myChart = myChart;
|
|
_this.myChart = myChart;
|
|
var option = {
|
|
var option = {
|
|
title: {
|
|
title: {
|
|
- text: '项目成本统计 总计' + totalMoneyCost + '元',
|
|
|
|
|
|
+ text: '项目成本总计 ' + totalMoneyCost + '元'
|
|
|
|
+ +(this.hasNoProjectUsers?",无项目人员成本总计 " + nopCost+"元, 共: "+(totalMoneyCost+nopCost)+"元":""),
|
|
left:'left',
|
|
left:'left',
|
|
},
|
|
},
|
|
// 工具箱
|
|
// 工具箱
|
|
@@ -207,7 +256,7 @@
|
|
data: yList,
|
|
data: yList,
|
|
}]
|
|
}]
|
|
};
|
|
};
|
|
- myChart.setOption(option);
|
|
|
|
|
|
+ option && myChart.setOption(option);
|
|
// myChart.getZr().on('click', params => {
|
|
// myChart.getZr().on('click', params => {
|
|
// const pointInPixel = [params.offsetX, params.offsetY];
|
|
// const pointInPixel = [params.offsetX, params.offsetY];
|
|
// if (myChart.containPixel('grid', pointInPixel)) {
|
|
// if (myChart.containPixel('grid', pointInPixel)) {
|
|
@@ -288,6 +337,7 @@
|
|
changeMonth() {
|
|
changeMonth() {
|
|
//改变月份
|
|
//改变月份
|
|
this.getList();
|
|
this.getList();
|
|
|
|
+ this.assignToProject();
|
|
},
|
|
},
|
|
// 批量导入人员
|
|
// 批量导入人员
|
|
importFinance(item) {
|
|
importFinance(item) {
|