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 (
{ this.setState({ showModal: false }) }} />
报销总计
{ searchValues["targetType"] == 1 && { searchValues["contactNo"] = e.target.value; this.setState({ searchValues: searchValues, }); }} /> } { searchValues["buyerName"] = e.target.value; this.setState({ searchValues: searchValues, }); }} /> 报销时间: { this.setState({ searchValues: Object.assign(searchValues, { startTime: dataString[0], endTime: dataString[1], }), }); }} />
{ this.setState({ visible: false }) }} >
{ this.state.visibleD && { this.setState({ visibleD: false }) }} > } { this.setState({ visibleC: false }) }} >
); }, }); export default AccountTotal;