import React from "react"; import $ from "jquery/src/ajax"; import moment from "moment"; import { Button, Form, Input, Spin, Table, Select, message, Tabs, AutoComplete, DatePicker, Modal, } from "antd"; import { ChooseList } from "../../order/orderNew/chooseList"; import { ShowModal, getAccountName, getSecondaryAccountName } from "../../../tools" import ShowModalDiv from "@/showModal.jsx"; import AccountDetails from "./accountDetails"; import { accountType, typeLists, accountStatus } from "@/dataDic"; const FormItem = Form.Item; const { RangePicker } = DatePicker; const { TabPane } = Tabs; const AccountDetaillist = React.createClass({ getInitialState() { return { showDetails: false, data: {}, logvisible: false, logdataSour: [], visible: "", reason: "", checkData: {}, aname: "", searchValues: { myType: "0" }, // 列表筛选条件 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: "type", key: "type", width: 140, 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", }, { title: "实报金额(元)", dataIndex: "realAmount", key: "realAmount", }, { title: "天数", dataIndex: "days", key: "days", }, { title: "报销编号", dataIndex: "checkNo", key: "checkNo", }, { title: "报销至订单", dataIndex: "buyerName", key: "buyerName", render: (text, record) => { return ( record.targetType == 0 ?
固定费用
:
{text || ""}
{record.contractNo || ""}
); }, }, { title: "报销至部门", dataIndex: "applyDepName", key: "applyDepName", render: (text, record) => { return ( {record.targetType == 0 && text} ); }, }, { 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 ( (!!text || text == 0) && {accountStatus[text].label} ); }, }, { title: "操作", dataIndex: "operate", key: "operate", render: (text, record) => { return (
{this.props.isOperate && } {this.props.isOperate && record.examine == 1 && } {this.props.isOperate && record.examine == 1 && } {record.status != 0 && }
) } }, ], logcolumns: [ { title: "审核人", dataIndex: "auditorName", key: "auditorName" }, { title: "操作", dataIndex: "status", key: "status", width: 120, render: (text, record) => { return ( {["【发起】", "【通过】", "【完成】", "【驳回】", "【撤销】", "【修改】"][text]} {this.state.processStatus == record.processStatus && !record.id &&  审核中...} ); }, }, { title: "操作时间", dataIndex: "createTimeStr", key: "createTimeStr", width: 88, }, { title: "备注", dataIndex: "remarks", key: "remarks", render: (text, record) => { return (
{text}
) } } ], }; }, 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, // expenseMain: 1, // processStatus: this.props.isOperate ? 1 : 2, }); $.ajax({ method: "get", dataType: "json", crossDomain: false, url: globalConfig.context + "/api/admin/expenseAccount/detailsList", data: datas, success: function (data) { ShowModal(this); this.setState({ loading: false, }); if (data.error && data.error.length === 0) { if (data.data.list) { pagination.current = data.data.pageNo; pagination.total = data.data.totalCount; if (data.data && data.data.list && !data.data.list.length) { pagination.current = 0; pagination.total = 0; } this.setState({ dataSource: data.data.list, pagination: this.state.pagination, pageNo: data.data.pageNo, totalAmount: data.data.totalAmount, }); } else { this.setState({ dataSource: data.data, pagination: false, }); } } else { message.warning(data.error[0].message); } }.bind(this), }).always( function () { this.setState({ loading: false, }); }.bind(this) ); }, // 日志 getLogData(eaid) { $.ajax({ method: "get", dataType: "json", crossDomain: false, url: globalConfig.context + "/api/admin/expenseAccount/log/list", data: { eaid }, success: function (data) { if (data.error.length === 0) { this.setState({ logdataSour: data.data || [] }); this.isHere(data.data || []) } else { message.warning(data.error[0].message); } }.bind(this) }).always( function () { }.bind(this) ); }, // isHere(list = []) { for (var i = 0; i < list.length; i++) { if (!list[i].id) { this.setState({ processStatus: list[i].processStatus }) return } } }, download(urls) { if (!urls) { message.error("暂无可下载的附件!"); } else { let list = urls.split(',') || [] list.forEach(e => { var aLink = document.createElement('a'); aLink.download = e; aLink.href = globalConfig.context + `/open/download?fileName=${e}&delete=false`; document.body.appendChild(aLink); aLink.click(); document.body.removeChild(aLink); }); } }, 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) ); }, // 审核 toExamine(num) { const { checkData, reason } = this.state if (!reason) { message.warning("请填写审核说明~"); return; } this.setState({ loading: true, }); $.ajax({ method: "POST", dataType: "json", crossDomain: false, url: globalConfig.context + "/api/admin/expenseAccount/examine", data: { id: checkData.id, reason, status: num,//1同意 3驳回 }, }).done( function (data) { if (!data.error.length) { message.success("审核成功!"); this.setState({ visible: "", reason: "", showDetails: false, checkData: {}, }); this.loadData() } else { message.warning(data.error[0].message); } }.bind(this) ); }, tableRowClick(e) { this.setState({ showDetails: true, id: e.id, }) // this.getDetails(e.id) }, // 查询负责人 followUp(e) { this.setState({ aname: e }); $.ajax({ method: "get", dataType: "json", crossDomain: false, url: globalConfig.context + "/api/admin/customer/listAdminByName", data: { adminName: e, }, success: function (data) { let thedata = data.data || []; if (!thedata) { if (data.error && data.error.length) { message.warning(data.error[0].message); } thedata = {}; } this.setState({ fjlist: thedata, }); }.bind(this), }).always( function () { this.setState({ loading: false, }); }.bind(this) ); }, // 选中负责人 selectF(value) { const { searchValues, fjlist } = this.state; const newdataSources = JSON.stringify(fjlist) == "{}" ? [] : fjlist; this.setState({ searchValues: Object.assign(searchValues, { aid: newdataSources.find((item) => item.name == value).id, }), }); }, // 搜索 search() { this.loadData(); }, // 重置 reset() { this.setState({ aname: "", searchValues: { myType: "0" }, }, () => { 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/expenseAccount/detailsListExport", data, success: function (data) { if (data.error.length === 0) { this.download(data.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 }, render() { const { TextArea } = Input const { searchValues, visible, } = this.state const formItemLayout = { labelCol: { span: 5 }, wrapperCol: { span: 18 }, }; const dataSources = this.state.fjlist || []; const options = dataSources.map((group) => ( {group.name} )); return (
{ this.setState({ showModal: false }) }} />
报销明细列表
{ searchValues["contractNo"] = e.target.value; this.setState({ searchValues: searchValues, }); }} /> { searchValues["buyerName"] = e.target.value; this.setState({ searchValues: searchValues, }); }} /> { searchValues["checkNo"] = e.target.value; this.setState({ searchValues: searchValues, }); }} />
报销时间: { this.setState({ searchValues: Object.assign(searchValues, { startTime: dataString[0], endTime: dataString[1], }), }); }} />

{ {`金额总计(元):${this.state.totalAmount}`} }

{ //审核弹窗 this.state.visible != "" && { this.toExamine(visible == "adopt" ? 1 : visible == "reject" && 3) }} okText={this.state.visible == "adopt" ? "通过" : this.state.visible == "reject" && "驳回"} onCancel={() => { this.setState({ visible: '', reason: "", checkData: {}, }) }} >