import React from "react";
import $ from "jquery/src/ajax";
import moment from "moment";
import {
Button,
Form,
Input,
Spin,
Table,
Select,
message,
Tabs,
DatePicker,
Modal,
Tooltip,
Tag,
} from "antd";
import { ChooseList } from "../../order/orderNew/chooseList";
import { ShowModal, getAccountName, getSecondaryAccountName, getClockState } from "../../../tools"
import { accountType, accountStatus } from "@/dataDic";
import ShowModalDiv from "@/showModal.jsx";
import OrderDetail from '../../order/orderNew/changeComponent/orderDetail';
import './index.less';
const FormItem = Form.Item;
const { RangePicker } = DatePicker;
const { TabPane } = Tabs;
const AccountTotal = React.createClass({
getInitialState() {
return {
searchValues: {
targetType: 1
}, // 列表筛选条件
loading: false, //加载动画
changeList: undefined, // 更改后的表格显示数据
dataSource: [], // 列表数据
departmentArr: [],
pagination: {
defaultCurrent: 1,
defaultPageSize: 10,
showQuickJumper: true,
pageSize: 10,
onChange: function (page) {
this.loadData(page);
}.bind(this),
showTotal: function (total) {
return "共" + total + "条数据";
},
},
columns: [
{
title: "合同/客户",
dataIndex: "contractNo",
key: "contractNo",
render: (text, record) => {
return (
this.state.searchValues["targetType"] == 1 ?
{text}
{" / " + record.buyerName}
: {record.depName}
);
},
},
{
title: "公出/实际/超出(时)",
dataIndex: "maxDuration",
key: "maxDuration",
render: (text, record) => {
return (
{
e.stopPropagation();
this.getListC(record.contractNo)
this.setState({
visibleC: true
})
// this.tableRowClick(record)
}}
>
{text + " / " + record.actualDuration + " / " + record.exceedDuration}
);
},
},
{
title: "合同总额/已收款(万元)",
dataIndex: "totalAmount",
key: "totalAmount",
render: (text, record) => {
return (
{
e.stopPropagation();
this.xiangqing(record.orderNo)
this.xiangmu(record.orderNo)
this.jiedian(record.orderNo)
this.jiedianNew(record.orderNo)
this.setState({
visibleD: true,
orderNo: record.orderNo,
})
}}
>
{text + " / " + record.settlementAmount}
);
},
},
{
title: "报销总额(元)",
dataIndex: "expenseAmount",
key: "expenseAmount",
render: (text, record) => {
return (
{
e.stopPropagation();
this.tableRowClick(record)
}}
>
{text}
);
},
},
{
title: "已付成本(万元)",
dataIndex: "paymentAmount",
key: "paymentAmount",
render: (text, record) => {
return (
{
e.stopPropagation();
this.tableRowClick(record)
}}
>
{text}
);
},
},
{
title: "报销人数/天数/报销次数",
dataIndex: "peopleCount",
key: "peopleCount",
render: (text, record) => {
return (
{
e.stopPropagation();
this.tableRowClick(record)
}}
>
{text + " / " + record.days + " / " + record.expenseCount}
);
},
},
{
title: "报销未审核/驳回次数",
dataIndex: "notExamine",
key: "notExamine",
render: (text, record) => {
return (
{
e.stopPropagation();
this.tableRowClick(record)
}}
>
{text + " / " + record.rejectCount}
);
},
},
],
visible: false,
columnsA: [
{
title: "类型",
dataIndex: "type",
key: "type",
render: (text, record) => {
return (
{(text == 0 && !record.typeOther)
? getAccountName(record.sonType, record.sonTypeOther)
: getSecondaryAccountName(text, record.typeOther)}
);
},
},
{
title: "报销时间",
dataIndex: "releaseStart",
key: "releaseStart",
render: (text, record) => {
return (
{text}
至
{record.releaseEnd}
);
},
},
{
title: "工时",
dataIndex: "duration",
key: "duration",
},
{
title: "报销金额(元)",
dataIndex: "amount",
key: "amount",
width: 70,
},
{
title: "实报金额(元)",
dataIndex: "realAmount",
key: "realAmount",
width: 70,
},
{
title: "天数",
dataIndex: "days",
key: "days",
},
{
title: "报销编号",
dataIndex: "checkNo",
key: "checkNo",
},
{
title: "报销合同",
dataIndex: "contractNo",
key: "contractNo",
},
{
title: "客户",
dataIndex: "buyerName",
key: "buyerName",
},
{
title: "报销人",
dataIndex: "aname",
key: "aname",
},
{
title: "财务负责人",
dataIndex: "financeName",
key: "financeName",
},
{
title: "报销公司/支付公司",
dataIndex: "payDepName",
key: "payDepName",
render: (text, record) => {
return (
{record.applyDepName || ""}
{text || ""}
);
},
},
{
title: "发起时间",
dataIndex: "createTimeStr",
key: "createTimeStr",
},
{
title: "状态",
dataIndex: "status",
key: "status",
render: (text, record) => {
return (
{accountStatus[text].label}
);
},
},
],
dataSourceA: [],
columnsC: [
{
title: "编号",
dataIndex: "key",
key: "key",
width: 45,
fixed: "left",
},
{
title: "客户名称",
dataIndex: "userName",
key: "userName",
width: 150,
fixed: "left",
render: (text, record) => {
return (
{text}
{["未签单", "已签单"][record.signBills]}
{record.signBills == 1 && `(${record.signTime})`}
);
},
},
{
title: "公出地点",
dataIndex: "districtName",
key: "districtName",
width: 120,
render: (text) => {
return (
{text}
);
},
},
{
title: "跟单人",
dataIndex: "sname",
key: "sname",
width: 90,
render: (text, record) => {
return (
{text}
);
},
},
{
title: "公出人员",
dataIndex: "aname",
key: "aname",
width: 190,
render: (text, record) => {
return (
[ 打卡人:{text} ]
{record.assist !== 0 &&
[ 协单人:{record.assistAidName}]
}
{!!record.assistantName &&
[ 协单助手:{record.assistantName}]
}
);
},
},
{
title: "申请时间",
dataIndex: "createTimes",
key: "createTimes",
width: 80,
},
{
title: "公出时间",
dataIndex: "releaseStarts",
key: "releaseStarts",
width: 130,
render: (text, record) => (
{text}
至
{record.releaseEnds}
),
},
{
title: "公出时长(时)",
dataIndex: "duration",
key: "duration",
width: 50,
},
{
title: "打卡时间",
dataIndex: "clockInTimes",
key: "clockInTimes",
width: 80,
render: (text, record) => (
{text}
{["未打卡", "已打卡", "异常打卡"][record.clockIn]}
)
},
{
title: "标签",
dataIndex: "status",
key: "status",
width: 200,
render: (text, record) => (
{
record.type === 0
? "业务公出" : record.type === 1
? "技术公出" : record.type === 2
? "行政公出" : record.type === 3
? "技术协单" : record.type === 4
? "协单助手" : ""
}
{getClockState(text).title}
{record.updateStatus == 1 && 改}
{record.type === 1 &&
{record.contractNo}
}
{record.type === 1 &&
{record.totalAmout + "(万元)"}
}
),
},
{
title: "公出目标",
dataIndex: "remarks",
key: "remarks",
width: 280,
render: (text) => {
return (
{text}
);
},
},
{
title: "公出计划",
dataIndex: "plan",
key: "plan",
width: 280,
render: (text) => {
return (
{text}
);
},
},
{
title: "预计效果",
dataIndex: "expectedEffect",
key: "expectedEffect",
width: 280,
render: (text) => {
return (
{text}
);
},
},
{
title: "本次公出目标总结",
dataIndex: "supplement",
key: "supplement",
width: 280,
render: (text) => {
return (
{text}
);
},
},
{
title: "下一次公出计划",
dataIndex: "nextPlan",
key: "nextPlan",
width: 280,
render: (text) => {
return (
{text}
);
},
},
{
title: "审核/指导",
dataIndex: "auditInfo",
key: "auditInfo",
width: 200,
render: (text, record) => {
return
{record.auditTimes && `审核时间:${record.auditTimes}`}
{text}
;
},
},
],
dataSourceC: [],
paginationC: {
defaultCurrent: 1,
defaultPageSize: 9999,
showQuickJumper: true,
pageSize: 9999,
onChange: function (page) {
this.getListC(page);
}.bind(this),
showTotal: function (total) {
return "共" + total + "条数据";
},
},
visibleC: false,
visibleD: false,
};
},
componentWillMount() {
this.departmentList();
this.loadData();
},
// 列表接口
loadData(pageNo) {
const { searchValues, pagination } = this.state;
this.setState({
loading: true,
});
let datas = Object.assign(searchValues, {
// pageNo: pageNo || 1,
// pageSize: pagination.pageSize,
});
$.ajax({
method: "get",
dataType: "json",
crossDomain: false,
url: globalConfig.context + "/api/admin/expenseCounts/getCounts",
data: datas,
success: function (data) {
ShowModal(this);
this.setState({
loading: false,
});
if (data.error && data.error.length === 0) {
if (data.data) {
pagination.current = data.data.pageNo;
pagination.total = data.data.totalCount;
if (data.data && data.data && !data.data.length) {
pagination.current = 0;
pagination.total = 0;
}
this.setState({
dataSource: data.data,
pagination: this.state.pagination,
pageNo: data.data.pageNo,
totalAmount: data.data.totalAmount,
});
}
} else {
message.warning(data.error[0].message);
}
}.bind(this),
}).always(
function () {
this.setState({
loading: false,
});
}.bind(this)
);
},
// 公出信息
getListC(contractNo) {
const { paginationC, } = this.state;
this.setState({
loading: true,
});
$.ajax({
method: "get",
dataType: "json",
crossDomain: false,
url: globalConfig.context + "/api/admin/release/publicReleaseAndCount",
data: {
pageNo: 1,
pageSize: paginationC.pageSize,
statusType: 1,
contractNo,
},
success: function (data) {
setTimeout(() => {
this.setState({
loading: false,
});
}, 300);
if (data.error && data.error.length === 0) {
if (data.data.list) {
paginationC.current = data.data.pageNo;
paginationC.total = data.data.totalCount;
if (data.data && data.data.list && !data.data.list.length) {
paginationC.current = 0;
paginationC.total = 0;
}
}
this.setState({
dataSourceC: data.data.list,
paginationC: this.state.paginationC,
pageNoC: data.data.pageNo,
peopleCount: data.data.peopleCount,
count: data.data.count,
durationCount: data.data.durationCount,
});
} else {
message.warning(data.error[0].message);
}
}.bind(this),
}).always(
function () {
}.bind(this)
);
},
addRowColor(record) {
if (record.assist === 1 || record.assist === 2 || record.assist === 3) {
return 'light'
} else {
return 'dark'
}
},
departmentList() {
$.ajax({
method: "get",
dataType: "json",
crossDomain: false,
url: globalConfig.context + "/api/admin/organization/selectSuperId",
data: {},
success: function (data) {
let thedata = data.data;
let theArr = [];
if (!thedata) {
if (data.error && data.error.length) {
message.warning(data.error[0].message);
}
} else {
thedata.map(function (item, index) {
theArr.push({
key: index,
name: item.name,
id: item.id
});
});
}
this.setState({
departmentArr: theArr
});
}.bind(this)
}).always(
function () {
}.bind(this)
);
},
// 搜索
search() {
this.loadData();
},
// 重置
reset() {
this.setState({
searchValues: {
targetType: 1
},
}, () => {
this.loadData();
})
},
changeList(arr) {
const newArr = [];
this.state.columns.forEach((item) => {
arr.forEach((val) => {
if (val === item.title) {
newArr.push(item);
}
});
});
this.setState({
changeList: newArr,
});
},
export() {
this.setState({
exportExecLoading: true
})
let loading = message.loading('加载中...');
let data = this.state.searchValues;
$.ajax({
method: "get",
dataType: "json",
crossDomain: false,
url: globalConfig.context + "/api/admin/expenseCounts/getCounts/Export",
data,
success: function (data) {
if (data.error.length === 0) {
this.download(data.data);
} else {
message.warning(data.error[0].message);
}
}.bind(this),
}).always(function () {
loading();
this.setState({
exportExecLoading: false
})
}.bind(this));
},
// 下载
download(fileName) {
window.location.href = globalConfig.context + "/open/download?fileName=" + fileName
},
// 清理缓存
getCountsClear() {
this.setState({
loading: true,
});
$.ajax({
method: "get",
dataType: "json",
crossDomain: false,
url: globalConfig.context + "/api/admin/expenseCounts/getCountsClear",
data: {},
success: function (data) {
ShowModal(this);
this.setState({
loading: false,
});
if (data.error && data.error.length === 0) {
message.success("清除成功!")
} else {
message.warning(data.error[0].message);
}
}.bind(this),
}).always(
function () {
this.setState({
loading: false,
});
}.bind(this)
);
},
tableRowClick(e) {
this.setState({
visible: true,
contractNo: e.contractNo,
}, () => {
this.getListA()
})
},
getListA() {
this.setState({
loading: true,
});
let data = {
pageNo: 1,
pageSize: 9999,
contractNo: this.state.contractNo,
};
$.ajax({
method: "get",
dataType: "json",
crossDomain: false,
url: globalConfig.context + "/api/admin/expenseAccount/detailsList",
data: data,
success: function (data) {
ShowModal(this);
this.setState({
loading: false,
});
if (data.error && data.error.length === 0) {
if (data.data.list) {
this.setState({
dataSourceA: data.data.list,
totalAmountA: data.data.totalAmount,
});
}
} else {
message.warning(data.error[0].message);
}
}.bind(this),
}).always(
function () {
this.setState({
loading: false,
});
}.bind(this)
);
},
//订单详情
xiangqing(orderNos) {
this.setState({
orderData: {}
}, () => {
$.ajax({
method: "get",
dataType: "json",
crossDomain: false,
url: globalConfig.context + "/api/admin/newOrder/getOrderNewDetail",
data: {
orderNo: orderNos
},
success: function (data) {
if (data.error.length || data.data.list == "") {
if (data.error && data.error.length) {
message.warning(data.error[0].message);
}
} else {
let thisdata = data.data;
this.setState({
orderUid: thisdata.uid,
userName: thisdata.userName,
primaryOrderNo: thisdata.primaryOrder,
additionalOrder: thisdata.additionalOrder,
contractNo: thisdata.contractNo,
// arrears: thisdata.arrears,
orderData: thisdata,
isAddition: thisdata.additionalOrder ? true : false,
deleteSign: thisdata.deleteSign,
});
}
}.bind(this)
});
});
},
//项目列表
xiangmu(orderNos) {
$.ajax({
method: "get",
dataType: "json",
crossDomain: false,
url: globalConfig.context + "/api/admin/newOrder/getOrderTask",
data: {
orderNo: orderNos
},
success: function (data) {
let theArr = [];
if (data.error.length || data.data.list == "") {
if (data.error && data.error.length) {
message.warning(data.error[0].message);
}
} else {
for (let i = 0; i < data.data.length; i++) {
let thisdata = data.data[i];
thisdata.key = i;
thisdata.sort = thisdata.cSort;
theArr.push(thisdata);
}
}
this.setState({
dataSourceX: theArr
});
}.bind(this)
});
},
//节点列表
jiedian(orderNos) {
$.ajax({
method: "get",
dataType: "json",
crossDomain: false,
url: globalConfig.context + "/api/admin/newOrder/selectOrderDun",
data: {
orderNo: orderNos
},
success: function (data) {
let theArr = [];
let thisData = [];
if (data.error.length || data.data.list == "") {
if (data.error && data.error.length) {
message.warning(data.error[0].message);
}
} else {
for (let i = 0; i < data.data.length; i++) {
thisData = data.data[i];
theArr.push({
key: i,
dunSubject: thisData.dunSubject
? thisData.dunSubject.toString()
: "", //催款科目
id: thisData.id, //节点Id
money: thisData.money, //催款金额
dunStatus: thisData.dunStatus //催款状态
});
}
this.setState({
contactList: theArr
});
}
}.bind(this)
});
},
jiedianNew(orderNos) {
$.ajax({
method: "get",
dataType: "json",
crossDomain: false,
url:
globalConfig.context + "/api/admin/newOrderDun/selectListNewOrderDun",
data: {
orderNo: orderNos
},
success: function (data) {
if (data.error && data.error.length) {
message.warning(data.error[0].message);
} else {
let theArr = [];
let thisData = [];
let arr = data.data || [];
let totalCui = 0;
for (let i = 0; i < arr.length; i++) {
thisData = arr[i];
totalCui += +thisData.money;
theArr.push({
key: i,
dunSubject: thisData.dunSubject
? thisData.dunSubject.toString()
: "", //催款科目
id: thisData.id, //节点Id
money: thisData.money, //催款金额
// orderNo: record ? record.orderNo : this.props.datauser.orderNo,
commodityName: thisData.commodityName,
projectType: thisData.projectType,
dunTypeName: thisData.dunTypeName,
status: thisData.status,
waitDay: thisData.waitDay,
effectiveCount: thisData.effectiveCount,
startDate: thisData.startDate,
dunType: thisData.dunType,
appropriationRatio: thisData.appropriationRatio,
customizeName: thisData.customizeName,
customizeTimes: thisData.customizeTimes,
tid: thisData.tid,
});
}
if (!totalCui) {
totalCui = 0;
}
totalCui = (Math.round(totalCui * 1000000) / 1000000).toFixed(6);
this.setState({
contactListNew: theArr,
totalCui
});
}
}.bind(this)
}).always(
function () {
this.setState({
loading: false
});
}.bind(this)
);
},
getOrderLog(orderNo) {
this.setState({
rizhivisible: true
});
this.rizhi(orderNo);
},
rizhi(orderNo) {
$.ajax({
method: "get",
dataType: "json",
crossDomain: false,
url: "/api/admin/newOrder/selectOrderLog",
data: {
orderNo: orderNo
},
success: function (data) {
let theArr = [];
let thisData = data.data;
if (!thisData.length) {
if (data.error && data.error.length) {
message.warning(data.error[0].message);
}
thisData = {};
} else {
for (let i = 0; i < data.data.length; i++) {
let thisdata = data.data[i];
theArr.push({
processName: thisdata.processName,
adminName: thisdata.adminName,
createDate: thisdata.createDate,
remarks: thisdata.remarks
});
}
}
this.setState({
dataSourcerizhi: theArr
});
}.bind(this)
});
},
render() {
const { searchValues, } = this.state
return (
);
},
});
export default AccountTotal;