Commit 00ded4f2 by 王昆

gsb

parents 3985eb2a 304c5a50
......@@ -5,14 +5,9 @@ const logCtl = system.getObject("web.oplogCtl");
const syncDays = Number(5);
class EcontractApi {
constructor() {
this.userSve = system.getObject("service.userSve");
this.departmentSve = system.getObject("service.departmentSve");
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.redisClient = system.getObject("util.redisClient");
this.outTradeNoKey = 'bpo_outtradeno';
}
......
......@@ -19,10 +19,18 @@ class BusistatCtl extends CtlBase {
return system.getResult2(list);
}
async signList(queryobj, qobj, req) {
async departmentList(queryobj, qobj, req) {
var params = qobj.search;
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);
} catch (e) {
console.log(e);
......@@ -30,34 +38,38 @@ class BusistatCtl extends CtlBase {
}
}
async signExport(pobj, req, res) {
async departmentExport(pobj, req, res) {
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 {
params.currentPage = 1;
params.pageSize = 60000;
var page = await this.service.signPage(params);
var csvobj = {
params.pageSize = -1;
let rows = await this.service.listByCondition(params);
let csvobj = {
fileName: "发薪统计-" + moment().format("YYYYMMDD") + ".csv",
rows: page.rows,
rows: rows,
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'],
excelStrings: true,
unwindBlank: true
},
headers: {
"id": "编号",
'busi_id': "商户id",
'user_department_name':"部门名称",
'user_name': "业务员",
'busi_id': "商户号",
'busi_name': "企业名称",
'user_name': "业务员姓名",
'user_department_name':"业务员部门",
'times':"发薪次数",
'amt':"申请发薪金额",
'service_tax':"服务费",
'actual_amt':"实发金额",
'deduct_amt':"扣除金额",
'income_tax':"个税",
'service_tax':"服务费",
'added_value_tax':"增值税"
'added_value_tax':"增值税",
'times':"发薪次数",
},
};
await this.excelClient.exportCsv(req, res, csvobj);
......
......@@ -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)";
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;
......@@ -17,34 +17,37 @@ class BusistatService extends ServiceBase {
return await this.dao.updateDepartmentName(params);
}
async signPage(params) {
var currentPage = Number(params.currentPage || 0);
var pageSize = Number(params.pageSize || 10);
async countByCondition(params) {
return await this.dao.countByCondition(params) || 0;
}
var where = {};
if (params.busi_name) {
where.busi_name = {
[this.db.Op.like]: "%" + params.busi_name + "%"
};
}
async listByCondition(params) {
let list = await this.dao.listByCondition(params);
this.setF2y(list);
return list;
}
if (params.user_department_name) {
where.user_department_name = params.user_department_name;
async departmentPage(params) {
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 = [
["id", 'desc']
];
var page = await this.getPageList(currentPage, pageSize, where, orderby);
if (page && page.rows) {
for(var row of page.rows) {
this.handleDate(row, ["created_at" , "updated_at"]);
}
// await this.setCompany(page.rows);
// await this.setMain(page.rows);
setF2y(list) {
if (!list || list.length == 0) {
return;
}
for (let item of list) {
item.amt = system.f2y(item.amt);
item.actual_amt = system.f2y(item.actual_amt);
item.deduct_amt = system.f2y(item.deduct_amt);
item.income_tax = system.f2y(item.income_tax);
item.service_tax = system.f2y(item.service_tax);
item.added_value_tax = system.f2y(item.added_value_tax);
}
return page;
}
}
......
......@@ -7,7 +7,7 @@
<div style="float:left;width: 400px;">
<span style="color:2F2F2F;font-size: 14px; float:left;" >统计日期: </span>
<el-date-picker
v-model="search.applyBegin"
v-model="search.begin"
type="date"
placeholder="开始时间"
style="width:140px;height: 36px;float:left;"
......@@ -16,7 +16,7 @@
default-value="">
</el-date-picker>
<el-date-picker
v-model="search.applyEnd"
v-model="search.end"
type="date"
style="width:140px;height: 36px;margin-left: 16px;float:left;"
placeholder="结束时间"
......@@ -25,38 +25,41 @@
default-value="">
</el-date-picker>
</div>
<div style="float:left;width: 300px;">
<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>
<div style="float:left;width: 300px;">
<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>
</div>
</div>
<div style="float:left;">
<span style="color:2F2F2F;font-size: 14px;" >部门: </span>
<div style="clear:both;height:20px;"></div>
<div style="width:100%;line-height: 40px;">
<div style="float:left;">
<span style="color:2F2F2F;font-size: 14px;" >业务部门: </span>
<el-select
v-model="search.user_department_name"
filterable
remote
clearable
reserve-keyword
style="width:340px;"
placeholder="请搜索公司名称"
@change="nameChange"
:remote-method="getCompanyNames"
:loading="nameLoading">
v-model="search.user_department_name"
filterable
remote
clearable
reserve-keyword
style="width:340px;"
placeholder="请搜索公司名称"
@change="nameChange"
:remote-method="getCompanyNames"
:loading="nameLoading">
<el-option
v-for="item in nameList"
:key="item.id"
:label="item.name"
:value="item.name">
<span style="float: left;width:150px;">{{ item.name }}</span>
v-for="item in nameList"
:key="item.id"
:label="item.name"
:value="item.name">
<span style="float: left;width:150px;">{{ item.name }}</span>
</el-option>
</el-select>
</div>
</el-select>
</div>
<div style="float:left;margin-top:5px;">
<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>
<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="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>
</el-card>
<el-card style="background-color: #FFFFFF;padding:10px 10px 30px 10px;margin-top: 20px;">
......@@ -79,7 +82,6 @@
<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="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="actual_amt" 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 @@
pageSize: 20,
total : 0,
name:'',
begin: '',
end: '',
},
rules: {
ecompanyName : [
......@@ -54,11 +56,39 @@
}
},
mounted: function () {
this.resetSearch(true);
this.resetSearch(true, true);
this.getMainList();
},
created: function () {},
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() {
return {
list: [],
......@@ -68,8 +98,11 @@
name:'',
}
},
resetSearch() {
resetSearch(flag, defaultWeek) {
this.search = this.getEmptySearch();
if (defaultWeek) {
this.setWeekDay();
}
this.getList();
},
tableHeaderColor({ row, column, rowIndex, columnIndex }) {
......@@ -95,7 +128,7 @@
getList() {
var self = this;
var params = this.getParams();
this.$root.postReq("/web/busistatCtl/signList", {
this.$root.postReq("/web/busistatCtl/departmentList", {
search: params
}).then(function (d) {
if (d.status == 0) {
......@@ -106,7 +139,7 @@
});
},
exportList() {
window.open("/web/busistatCtl/signExport" + this.getExportParams());
window.open("/web/busistatCtl/departmentExport" + this.getExportParams());
},
getParams() {
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