Commit 00ded4f2 by 王昆

gsb

parents 3985eb2a 304c5a50
...@@ -5,14 +5,9 @@ const logCtl = system.getObject("web.oplogCtl"); ...@@ -5,14 +5,9 @@ const logCtl = system.getObject("web.oplogCtl");
const syncDays = Number(5); const syncDays = Number(5);
class EcontractApi { class EcontractApi {
constructor() { constructor() {
this.userSve = system.getObject("service.userSve");
this.departmentSve = system.getObject("service.departmentSve");
this.esettleSve = system.getObject("service.esettleSve"); this.esettleSve = system.getObject("service.esettleSve");
this.busistatSve = system.getObject("service.busistatSve");
this.etemplatebusiSve = system.getObject("service.etemplatebusiSve");
this.restClient = system.getObject("util.restClient"); this.restClient = system.getObject("util.restClient");
this.redisClient = system.getObject("util.redisClient"); this.redisClient = system.getObject("util.redisClient");
this.outTradeNoKey = 'bpo_outtradeno'; this.outTradeNoKey = 'bpo_outtradeno';
} }
......
...@@ -19,10 +19,18 @@ class BusistatCtl extends CtlBase { ...@@ -19,10 +19,18 @@ class BusistatCtl extends CtlBase {
return system.getResult2(list); return system.getResult2(list);
} }
async signList(queryobj, qobj, req) { async departmentList(queryobj, qobj, req) {
var params = qobj.search; var params = qobj.search;
try { try {
var page = await this.service.signPage(params); if (params.begin) {
params.begin = Number(params.begin.replace(new RegExp("-", 'g'), ""));
}
if (params.end) {
params.end = Number(params.end.replace(new RegExp("-", 'g'), ""));
}
// this.doTimeCondition(params, ["statBegin", "statEnd"]);
let page = await this.service.departmentPage(params);
return system.getResult2(page); return system.getResult2(page);
} catch (e) { } catch (e) {
console.log(e); console.log(e);
...@@ -30,34 +38,38 @@ class BusistatCtl extends CtlBase { ...@@ -30,34 +38,38 @@ class BusistatCtl extends CtlBase {
} }
} }
async signExport(pobj, req, res) { async departmentExport(pobj, req, res) {
var params = JSON.parse(pobj.search); var params = JSON.parse(pobj.search);
if (params.begin) {
params.begin = Number(params.begin.replace(new RegExp("-", 'g'), ""));
}
if (params.end) {
params.end = Number(params.end.replace(new RegExp("-", 'g'), ""));
}
try { try {
params.currentPage = 1; params.currentPage = 1;
params.pageSize = 60000; params.pageSize = -1;
var page = await this.service.signPage(params); let rows = await this.service.listByCondition(params);
var csvobj = { let csvobj = {
fileName: "发薪统计-" + moment().format("YYYYMMDD") + ".csv", fileName: "发薪统计-" + moment().format("YYYYMMDD") + ".csv",
rows: page.rows, rows: rows,
opts: { opts: {
fields: ['id', 'busi_id', 'busi_name', 'user_name','user_department_name','times','amt','actual_amt','deduct_amt','income_tax','service_tax','added_value_tax'], fields: ['user_department_name', 'user_name', 'busi_id', 'busi_name', 'service_tax', 'actual_amt', 'deduct_amt', 'income_tax', 'added_value_tax', 'times'],
unwind: ['busistat'], unwind: ['busistat'],
excelStrings: true, excelStrings: true,
unwindBlank: true unwindBlank: true
}, },
headers: { headers: {
"id": "编号", 'user_department_name':"部门名称",
'busi_id': "商户id", 'user_name': "业务员",
'busi_id': "商户号",
'busi_name': "企业名称", 'busi_name': "企业名称",
'user_name': "业务员姓名", 'service_tax':"服务费",
'user_department_name':"业务员部门",
'times':"发薪次数",
'amt':"申请发薪金额",
'actual_amt':"实发金额", 'actual_amt':"实发金额",
'deduct_amt':"扣除金额", 'deduct_amt':"扣除金额",
'income_tax':"个税", 'income_tax':"个税",
'service_tax':"服务费", 'added_value_tax':"增值税",
'added_value_tax':"增值税" 'times':"发薪次数",
}, },
}; };
await this.excelClient.exportCsv(req, res, csvobj); await this.excelClient.exportCsv(req, res, csvobj);
......
...@@ -23,6 +23,97 @@ class BusistatDao extends Dao { ...@@ -23,6 +23,97 @@ class BusistatDao extends Dao {
let sql = "UPDATE `c_busi_stat` SET user_name = :user_name, user_id=:user_id, user_department_name= :user_department_name WHERE busi_id IN (:busiIds)"; let sql = "UPDATE `c_busi_stat` SET user_name = :user_name, user_id=:user_id, user_department_name= :user_department_name WHERE busi_id IN (:busiIds)";
return await this.customExecAddOrPutSql(sql, {replacements: params}); return await this.customExecAddOrPutSql(sql, {replacements: params});
} }
async countByCondition(params) {
let sql = [];
sql.push("SELECT");
sql.push("COUNT(DISTINCT busi_id) AS num ");
sql.push("FROM `c_busi_stat`");
sql.push("WHERE 1 = 1");
this.setCondition(sql, params);
let list = await this.customQuery(sql.join(" "), params);
if (!list || list.length == 0) {
return 0;
}
return list[0].num || 0;
}
async listByCondition(params) {
params.currentPage = Number(params.currentPage || 1);
params.pageSize = Number(params.pageSize || 10);
params.startRow = (params.currentPage - 1) * params.pageSize;
let sql = [];
sql.push("SELECT");
sql.push("id, busi_name, user_name, user_department_name, ");
sql.push("SUM(times) AS times, SUM(amt) AS amt, SUM(actual_amt) AS actual_amt, SUM(deduct_amt) AS deduct_amt,");
sql.push("SUM(income_tax) AS income_tax, SUM(service_tax) AS service_tax, SUM(added_value_tax) AS added_value_tax");
sql.push("FROM `c_busi_stat`");
sql.push("WHERE 1 = 1");
this.setCondition(sql, params);
sql.push("GROUP BY busi_id ");
sql.push("ORDER BY service_tax DESC ");
if(params.pageSize && params.pageSize != -1) {
sql.push(" LIMIT :startRow, :pageSize ");
}
return await this.customQuery(sql.join(" "), params);
}
async setCondition(sql, params) {
if (!sql || !params) {
return;
}
if (params.busi_name) {
params.busi_name_like = `%${params.busi_name}%`;
sql.push("AND busi_name LIKE :busi_name_like");
}
if (params.user_department_name) {
sql.push("AND user_department_name = :user_department_name");
}
if(params.begin) {
sql.push("AND stat_day >= :begin");
}
if(params.end) {
sql.push("AND stat_day <= :end");
}
}
// async departmentList(params){
//
// var currentPage = Number(params.currentPage || 0);
// var pageSize = Number(params.pageSize || 10);
// var countsql = "SELECT COUNT(DISTINCT busi_id) AS num FROM `c_busi_stat` " + "WHERE 1 = 1 "
// var listsql = "SELECT busi_name,user_name,user_department_name,SUM(times) AS times,SUM(amt) AS amt,SUM(actual_amt) AS actual_amt,SUM(deduct_amt) AS deduct_amt,SUM(income_tax) AS income_tax,SUM(service_tax) AS service_tax,SUM(added_value_tax) AS added_value_taxFROM `c_busi_stat` WHERE 1 = 1 \n"
//
// if (params.busi_name) {
// countsql = countsql+" AND busi_name LIKE :busi_name";
// listsql = listsql+ " AND busi_name LIKE :busi_name"
// }
// if (params.user_department_name) {
// countsql = countsql+" AND user_department_name = :user_department_name"
// listsql = listsql+ " AND user_department_name = :user_department_name"
// }
// if(params.begin) {
// countsql = countsql + " AND created_at >= :begin ";
// listsql = listsql+ " AND stat_day >= :begin"
// }
// if(params.end) {
// countsql = countsql + " AND created_at <= :end ";
// listsql = listsql+ " AND stat_day <= :end"
// }
// console.log(countsql)
// console.log(listsql)
// var count = await this.customQuery(countsql, {busi_name:params.busi_name,user_department_name:params.user_department_name,begin:params.begin,end:params.end});
//
// if(count[0].num == 0 ){
//
// }
//
//
// }
} }
module.exports = BusistatDao; module.exports = BusistatDao;
...@@ -17,34 +17,37 @@ class BusistatService extends ServiceBase { ...@@ -17,34 +17,37 @@ class BusistatService extends ServiceBase {
return await this.dao.updateDepartmentName(params); return await this.dao.updateDepartmentName(params);
} }
async signPage(params) { async countByCondition(params) {
var currentPage = Number(params.currentPage || 0); return await this.dao.countByCondition(params) || 0;
var pageSize = Number(params.pageSize || 10); }
var where = {}; async listByCondition(params) {
if (params.busi_name) { let list = await this.dao.listByCondition(params);
where.busi_name = { this.setF2y(list);
[this.db.Op.like]: "%" + params.busi_name + "%" return list;
}; }
}
if (params.user_department_name) { async departmentPage(params) {
where.user_department_name = params.user_department_name; let total = await this.countByCondition(params);
if (total == 0) {
return { count: 0, rows: [] };
} }
let list = await this.listByCondition(params);
return { count: total, rows: list };
}
var orderby = [ setF2y(list) {
["id", 'desc'] if (!list || list.length == 0) {
]; return;
}
var page = await this.getPageList(currentPage, pageSize, where, orderby); for (let item of list) {
if (page && page.rows) { item.amt = system.f2y(item.amt);
for(var row of page.rows) { item.actual_amt = system.f2y(item.actual_amt);
this.handleDate(row, ["created_at" , "updated_at"]); item.deduct_amt = system.f2y(item.deduct_amt);
} item.income_tax = system.f2y(item.income_tax);
// await this.setCompany(page.rows); item.service_tax = system.f2y(item.service_tax);
// await this.setMain(page.rows); item.added_value_tax = system.f2y(item.added_value_tax);
} }
return page;
} }
} }
......
...@@ -7,7 +7,7 @@ ...@@ -7,7 +7,7 @@
<div style="float:left;width: 400px;"> <div style="float:left;width: 400px;">
<span style="color:2F2F2F;font-size: 14px; float:left;" >统计日期: </span> <span style="color:2F2F2F;font-size: 14px; float:left;" >统计日期: </span>
<el-date-picker <el-date-picker
v-model="search.applyBegin" v-model="search.begin"
type="date" type="date"
placeholder="开始时间" placeholder="开始时间"
style="width:140px;height: 36px;float:left;" style="width:140px;height: 36px;float:left;"
...@@ -16,7 +16,7 @@ ...@@ -16,7 +16,7 @@
default-value=""> default-value="">
</el-date-picker> </el-date-picker>
<el-date-picker <el-date-picker
v-model="search.applyEnd" v-model="search.end"
type="date" type="date"
style="width:140px;height: 36px;margin-left: 16px;float:left;" style="width:140px;height: 36px;margin-left: 16px;float:left;"
placeholder="结束时间" placeholder="结束时间"
...@@ -25,38 +25,41 @@ ...@@ -25,38 +25,41 @@
default-value=""> default-value="">
</el-date-picker> </el-date-picker>
</div> </div>
<div style="float:left;width: 300px;"> <div style="float:left;width: 300px;">
<span style="color:2F2F2F;font-size: 14px;" >企业名称: </span> <span style="color:2F2F2F;font-size: 14px;" >企业名称: </span>
<el-input v-model="search.busi_name" placeholder="请输入模板名称" maxlength="100" clearable style="max-width:200px;height: 36px;" ></el-input> <el-input v-model="search.busi_name" placeholder="请输入模板名称" maxlength="100" clearable style="max-width:200px;height: 36px;" ></el-input>
</div>
</div> </div>
<div style="float:left;"> <div style="clear:both;height:20px;"></div>
<span style="color:2F2F2F;font-size: 14px;" >部门: </span> <div style="width:100%;line-height: 40px;">
<div style="float:left;">
<span style="color:2F2F2F;font-size: 14px;" >业务部门: </span>
<el-select <el-select
v-model="search.user_department_name" v-model="search.user_department_name"
filterable filterable
remote remote
clearable clearable
reserve-keyword reserve-keyword
style="width:340px;" style="width:340px;"
placeholder="请搜索公司名称" placeholder="请搜索公司名称"
@change="nameChange" @change="nameChange"
:remote-method="getCompanyNames" :remote-method="getCompanyNames"
:loading="nameLoading"> :loading="nameLoading">
<el-option <el-option
v-for="item in nameList" v-for="item in nameList"
:key="item.id" :key="item.id"
:label="item.name" :label="item.name"
:value="item.name"> :value="item.name">
<span style="float: left;width:150px;">{{ item.name }}</span> <span style="float: left;width:150px;">{{ item.name }}</span>
</el-option> </el-option>
</el-select> </el-select>
</div> </div>
<div style="float:left;margin-top:5px;"> <div style="float:left;margin-top:5px;margin-left:50px;">
<el-button @click="resetSearch()" style="float:right;width:68px;height:36px;background-color: #54C4A7;color: #FFFFFF;font-size: 14px;padding-top:10px;" >重置</el-button> <el-button @click="resetSearch()" style="float:right;width:68px;height:36px;background-color: #54C4A7;color: #FFFFFF;font-size: 14px;padding-top:10px;" >重置</el-button>
<el-button @click="opSearch" style="float:right;width:68px;height:36px;background-color: #54C4A7;color: #FFFFFF;font-size: 14px;padding-top:10px;margin-right: 10px;" >搜索</el-button> <el-button @click="opSearch" style="float:right;width:68px;height:36px;background-color: #54C4A7;color: #FFFFFF;font-size: 14px;padding-top:10px;margin-right: 10px;" >搜索</el-button>
</div>
</div> </div>
</div> </div>
</el-card> </el-card>
<el-card style="background-color: #FFFFFF;padding:10px 10px 30px 10px;margin-top: 20px;"> <el-card style="background-color: #FFFFFF;padding:10px 10px 30px 10px;margin-top: 20px;">
...@@ -79,7 +82,6 @@ ...@@ -79,7 +82,6 @@
<el-table-column prop="user_department_name" label="部门名称" :formatter="onColFormater" align="center" ></el-table-column> <el-table-column prop="user_department_name" label="部门名称" :formatter="onColFormater" align="center" ></el-table-column>
<el-table-column prop="user_name" label="业务员" :formatter="onColFormater" align="center" ></el-table-column> <el-table-column prop="user_name" label="业务员" :formatter="onColFormater" align="center" ></el-table-column>
<el-table-column prop="busi_id" label="商户号" :formatter="onColFormater" align="center" ></el-table-column> <el-table-column prop="busi_id" label="商户号" :formatter="onColFormater" align="center" ></el-table-column>
<el-table-column prop="busi_id" label="商户名称" :formatter="onColFormater" align="center" ></el-table-column>
<el-table-column prop="busi_name" label="公司名称" :formatter="onColFormater" align="center" ></el-table-column> <el-table-column prop="busi_name" label="公司名称" :formatter="onColFormater" align="center" ></el-table-column>
<el-table-column prop="actual_amt" label="实发金额" :formatter="onColFormater" align="center" ></el-table-column> <el-table-column prop="actual_amt" label="实发金额" :formatter="onColFormater" align="center" ></el-table-column>
<el-table-column prop="service_tax" label="服务费金额" :formatter="onColFormater" align="center" ></el-table-column> <el-table-column prop="service_tax" label="服务费金额" :formatter="onColFormater" align="center" ></el-table-column>
......
...@@ -32,6 +32,8 @@ ...@@ -32,6 +32,8 @@
pageSize: 20, pageSize: 20,
total : 0, total : 0,
name:'', name:'',
begin: '',
end: '',
}, },
rules: { rules: {
ecompanyName : [ ecompanyName : [
...@@ -54,11 +56,39 @@ ...@@ -54,11 +56,39 @@
} }
}, },
mounted: function () { mounted: function () {
this.resetSearch(true); this.resetSearch(true, true);
this.getMainList(); this.getMainList();
}, },
created: function () {}, created: function () {},
methods: { methods: {
setWeekDay(){
if (this.search.begin && this.search.end) {
return;
}
var now = new Date();
var nowDayOfWeek = now.getDay();
var nowDay = now.getDate();
var nowMonth = now.getMonth();
var nowYear = now.getYear();
nowYear += (nowYear < 2000) ? 1900 : 0;
var weekStartDate = new Date(nowYear, nowMonth, nowDay - nowDayOfWeek + 1);
this.search.begin = this.formatDate(weekStartDate);
var weekEndDate = new Date(nowYear, nowMonth, nowDay + (6 - nowDayOfWeek) + 1);
this.search.end = this.formatDate(weekEndDate);
console.log(this.search);
},
formatDate(date) {
var myyear = date.getFullYear();
var mymonth = date.getMonth() + 1;
var myweekday = date.getDate();
if (mymonth < 10) {
mymonth = "0" + mymonth;
}
if (myweekday < 10) {
myweekday = "0" + myweekday;
}
return (myyear + "-" + mymonth + "-" + myweekday);
},
getEmptySearch() { getEmptySearch() {
return { return {
list: [], list: [],
...@@ -68,8 +98,11 @@ ...@@ -68,8 +98,11 @@
name:'', name:'',
} }
}, },
resetSearch() { resetSearch(flag, defaultWeek) {
this.search = this.getEmptySearch(); this.search = this.getEmptySearch();
if (defaultWeek) {
this.setWeekDay();
}
this.getList(); this.getList();
}, },
tableHeaderColor({ row, column, rowIndex, columnIndex }) { tableHeaderColor({ row, column, rowIndex, columnIndex }) {
...@@ -95,7 +128,7 @@ ...@@ -95,7 +128,7 @@
getList() { getList() {
var self = this; var self = this;
var params = this.getParams(); var params = this.getParams();
this.$root.postReq("/web/busistatCtl/signList", { this.$root.postReq("/web/busistatCtl/departmentList", {
search: params search: params
}).then(function (d) { }).then(function (d) {
if (d.status == 0) { if (d.status == 0) {
...@@ -106,7 +139,7 @@ ...@@ -106,7 +139,7 @@
}); });
}, },
exportList() { exportList() {
window.open("/web/busistatCtl/signExport" + this.getExportParams()); window.open("/web/busistatCtl/departmentExport" + this.getExportParams());
}, },
getParams() { getParams() {
var params = {}; var params = {};
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment