accountReview.jsx 26 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899
  1. import React from "react";
  2. import $ from "jquery/src/ajax";
  3. import moment from "moment";
  4. import {
  5. Button,
  6. Form,
  7. Input,
  8. Spin,
  9. Table,
  10. Select,
  11. message,
  12. Tabs,
  13. AutoComplete,
  14. DatePicker,
  15. Modal,
  16. Radio,
  17. } from "antd";
  18. import { ChooseList } from "../../order/orderNew/chooseList";
  19. import { ShowModal, getVehicleName, getTypeName, commonAdd, dealBigMoney } from "../../../tools"
  20. import ShowModalDiv from "@/showModal.jsx";
  21. import AccountDetails from "./accountDetails";
  22. import { accountType, accountStatus } from "@/dataDic";
  23. const FormItem = Form.Item;
  24. const { RangePicker } = DatePicker;
  25. const { TabPane } = Tabs;
  26. const RadioGroup = Radio.Group;
  27. const AccountReview = React.createClass({
  28. getInitialState() {
  29. return {
  30. info: {},
  31. showDetails: false,
  32. data: {},
  33. logvisible: false,
  34. logdataSour: [],
  35. visible: "",
  36. reason: "",
  37. checkData: {},
  38. aname: "",
  39. searchValues: {
  40. examineStatus: this.props.isOperate ? "1" : undefined,
  41. roleType: this.props.isOperate ? undefined : "0"
  42. }, // 列表筛选条件
  43. loading: false, //加载动画
  44. changeList: undefined, // 更改后的表格显示数据
  45. dataSource: [], // 列表数据
  46. departmentArr: [],
  47. pagination: {
  48. defaultCurrent: 1,
  49. defaultPageSize: 10,
  50. showQuickJumper: true,
  51. pageSize: 10,
  52. onChange: function (page) {
  53. this.loadData(page);
  54. }.bind(this),
  55. showTotal: function (total) {
  56. return "共" + total + "条数据";
  57. },
  58. },
  59. columns: [
  60. {
  61. title: "类型",
  62. dataIndex: "type",
  63. key: "type",
  64. width: 140,
  65. render: (text, record) => {
  66. return (
  67. <span>
  68. {text == 0 ? record.typeOther : accountType.find(item => item.value === text).label}
  69. </span>
  70. );
  71. },
  72. },
  73. {
  74. title: "报销金额(元)",
  75. dataIndex: "amount",
  76. key: "amount",
  77. },
  78. {
  79. title: "实报金额(元)",
  80. dataIndex: "realAmount",
  81. key: "realAmount",
  82. },
  83. {
  84. title: "报销编号",
  85. dataIndex: "checkNo",
  86. key: "checkNo",
  87. },
  88. // {
  89. // title: "报销至订单",
  90. // dataIndex: "buyerName",
  91. // key: "buyerName",
  92. // render: (text, record) => {
  93. // return (
  94. // record.targetType == 0
  95. // ? <div>固定费用</div>
  96. // : <div>
  97. // <div>{text || ""}</div>
  98. // <div>{record.contractNo || ""}</div>
  99. // </div>
  100. // );
  101. // },
  102. // },
  103. // {
  104. // title: "报销至部门",
  105. // dataIndex: "applyDepName",
  106. // key: "applyDepName",
  107. // render: (text, record) => {
  108. // return (
  109. // <span>{record.targetType == 0 && text}</span>
  110. // );
  111. // },
  112. // },
  113. {
  114. title: "报销人",
  115. dataIndex: "aname",
  116. key: "aname",
  117. },
  118. {
  119. title: "财务负责人",
  120. dataIndex: "financeName",
  121. key: "financeName",
  122. },
  123. {
  124. title: "状态",
  125. dataIndex: "status",
  126. key: "status",
  127. render: (text, record) => {
  128. return (
  129. <span style={{ color: accountStatus[text].color }}>
  130. {accountStatus[text].label}
  131. </span>
  132. );
  133. },
  134. },
  135. {
  136. title: "报销公司/支付公司",
  137. dataIndex: "payDepName",
  138. key: "payDepName",
  139. render: (text, record) => {
  140. return (
  141. <div>
  142. <div>{record.applyDepName || ""}</div>
  143. <div>{text || ""}</div>
  144. </div>
  145. );
  146. },
  147. },
  148. {
  149. title: "报销时间",
  150. dataIndex: "createTimeStr",
  151. key: "createTimeStr",
  152. },
  153. {
  154. title: "操作",
  155. dataIndex: "operate",
  156. key: "operate",
  157. render: (text, record) => {
  158. return (
  159. <div>
  160. <div>
  161. {this.props.isOperate &&
  162. <Button type="primary"
  163. style={{ margin: 4 }}
  164. onClick={() => { this.download(record.attachmentUrl) }}
  165. >下载</Button>}
  166. {this.props.isOperate && record.examine == 1 &&
  167. <Button type="primary"
  168. style={{ margin: 4 }}
  169. onClick={(e) => {
  170. e.stopPropagation();
  171. this.getConfig(record.id)
  172. this.setState({
  173. visible: "adopt",
  174. checkData: record,
  175. })
  176. }}
  177. >同意</Button>}
  178. {this.props.isOperate && record.examine == 1 &&
  179. <Button type="danger"
  180. style={{ margin: 4 }}
  181. onClick={(e) => {
  182. e.stopPropagation();
  183. this.setState({
  184. visible: "reject",
  185. checkData: record,
  186. })
  187. }}
  188. >驳回</Button>}
  189. {record.status != 0 && <Button
  190. style={{ margin: 4 }}
  191. onClick={() => {
  192. this.setState({
  193. logvisible: true
  194. })
  195. this.getLogData(record.id)
  196. }}>日志</Button>}
  197. </div>
  198. </div>
  199. )
  200. }
  201. },
  202. ],
  203. logcolumns: [
  204. {
  205. title: "审核人",
  206. dataIndex: "auditorName",
  207. key: "auditorName"
  208. },
  209. {
  210. title: "操作",
  211. dataIndex: "status",
  212. key: "status",
  213. width: 120,
  214. render: (text, record) => {
  215. return (
  216. <span style={{ color: ["#1D4FEA", "#34DE38", "#108EE9", "red", "#808080", "#1D4FEA"][text] }}>
  217. {["【发起】", "【通过】", "【完成】", "【驳回】", "【撤销】", "【修改】"][text]}
  218. {this.state.processStatus == record.processStatus && !record.id &&
  219. <span style={{ color: "#FFA500" }}>&nbsp;审核中...</span>}
  220. </span>
  221. );
  222. },
  223. },
  224. {
  225. title: "操作时间",
  226. dataIndex: "createTimeStr",
  227. key: "createTimeStr",
  228. width: 88,
  229. },
  230. {
  231. title: "备注",
  232. dataIndex: "remarks",
  233. key: "remarks",
  234. render: (text, record) => {
  235. return (
  236. <div style={{ minWidth: 250 }}>{text}</div>
  237. )
  238. }
  239. }
  240. ],
  241. };
  242. },
  243. componentWillMount() {
  244. this.departmentList();
  245. this.loadData();
  246. },
  247. getConfig(id) {
  248. $.ajax({
  249. method: "get",
  250. dataType: "json",
  251. crossDomain: false,
  252. url: globalConfig.context + "/api/admin/expenseAccount/getDepDetails",
  253. data: { id },
  254. success: function (data) {
  255. if (data.error.length === 0) {
  256. this.setState({
  257. info: data.data
  258. });
  259. } else {
  260. message.warning(data.error[0].message);
  261. }
  262. }.bind(this)
  263. }).always(
  264. function () {
  265. }.bind(this)
  266. );
  267. },
  268. // 列表接口
  269. loadData(pageNo) {
  270. const { searchValues, pagination } = this.state;
  271. this.setState({
  272. loading: true,
  273. });
  274. let datas = Object.assign(searchValues, {
  275. pageNo: pageNo || 1,
  276. pageSize: pagination.pageSize,
  277. expenseMain: 1,
  278. processStatus: this.props.isOperate ? 1 : undefined,
  279. });
  280. $.ajax({
  281. method: "get",
  282. dataType: "json",
  283. crossDomain: false,
  284. url: globalConfig.context + "/api/admin/expenseAccount/pageList",
  285. data: datas,
  286. success: function (data) {
  287. ShowModal(this);
  288. this.setState({
  289. loading: false,
  290. });
  291. if (data.error && data.error.length === 0) {
  292. if (data.data.list) {
  293. pagination.current = data.data.pageNo;
  294. pagination.total = data.data.totalCount;
  295. if (data.data && data.data.list && !data.data.list.length) {
  296. pagination.current = 0;
  297. pagination.total = 0;
  298. }
  299. this.setState({
  300. dataSource: data.data.list,
  301. pagination: this.state.pagination,
  302. pageNo: data.data.pageNo,
  303. totalAmount: data.data.totalAmount,
  304. });
  305. } else {
  306. this.setState({
  307. dataSource: data.data,
  308. pagination: false,
  309. });
  310. }
  311. } else {
  312. message.warning(data.error[0].message);
  313. }
  314. }.bind(this),
  315. }).always(
  316. function () {
  317. this.setState({
  318. loading: false,
  319. });
  320. }.bind(this)
  321. );
  322. },
  323. // 日志
  324. getLogData(eaid) {
  325. $.ajax({
  326. method: "get",
  327. dataType: "json",
  328. crossDomain: false,
  329. url: globalConfig.context + "/api/admin/expenseAccount/log/list",
  330. data: { eaid },
  331. success: function (data) {
  332. if (data.error.length === 0) {
  333. this.setState({
  334. logdataSour: data.data || []
  335. });
  336. this.isHere(data.data || [])
  337. } else {
  338. message.warning(data.error[0].message);
  339. }
  340. }.bind(this)
  341. }).always(
  342. function () {
  343. }.bind(this)
  344. );
  345. },
  346. //
  347. isHere(list = []) {
  348. for (var i = 0; i < list.length; i++) {
  349. if (!list[i].id) {
  350. this.setState({
  351. processStatus: list[i].processStatus
  352. })
  353. return
  354. }
  355. }
  356. },
  357. download(urls) {
  358. if (!urls) {
  359. message.error("暂无可下载的附件!");
  360. } else {
  361. let list = urls.split(',') || []
  362. list.forEach(e => {
  363. var aLink = document.createElement('a');
  364. aLink.download = e;
  365. aLink.href = globalConfig.context + `/open/download?fileName=${e}&delete=false`;
  366. document.body.appendChild(aLink);
  367. aLink.click();
  368. document.body.removeChild(aLink);
  369. });
  370. }
  371. },
  372. departmentList() {
  373. $.ajax({
  374. method: "get",
  375. dataType: "json",
  376. crossDomain: false,
  377. url: globalConfig.context + "/api/admin/organization/selectSuperId",
  378. data: {},
  379. success: function (data) {
  380. let thedata = data.data;
  381. let theArr = [];
  382. if (!thedata) {
  383. if (data.error && data.error.length) {
  384. message.warning(data.error[0].message);
  385. }
  386. } else {
  387. thedata.map(function (item, index) {
  388. theArr.push({
  389. key: index,
  390. name: item.name,
  391. id: item.id
  392. });
  393. });
  394. }
  395. this.setState({
  396. departmentArr: theArr
  397. });
  398. }.bind(this)
  399. }).always(
  400. function () {
  401. }.bind(this)
  402. );
  403. },
  404. // 审核
  405. toExamine(num) {
  406. const { checkData, reason } = this.state
  407. if (!reason) {
  408. message.warning("请填写审核说明~");
  409. return;
  410. }
  411. if (num == 1 && this.state.info.ceoExamine == 1) {
  412. if (!this.state.approval && this.state.approval != 0) {
  413. message.warning("是否需要董事长审核");
  414. return;
  415. }
  416. }
  417. this.setState({
  418. loading: true,
  419. });
  420. $.ajax({
  421. method: "POST",
  422. dataType: "json",
  423. crossDomain: false,
  424. url: globalConfig.context + "/api/admin/expenseAccount/examine",
  425. data: {
  426. id: checkData.id,
  427. reason,
  428. status: num,//1同意 3驳回
  429. approval: this.state.approval,
  430. },
  431. }).done(
  432. function (data) {
  433. if (!data.error.length) {
  434. message.success("审核成功!");
  435. this.setState({
  436. visible: "",
  437. reason: "",
  438. showDetails: false,
  439. checkData: {},
  440. });
  441. this.loadData(this.state.pageNo)
  442. } else {
  443. message.warning(data.error[0].message);
  444. }
  445. }.bind(this)
  446. );
  447. },
  448. tableRowClick(e) {
  449. this.setState({
  450. showDetails: true,
  451. id: e.id,
  452. })
  453. // this.getDetails(e.id)
  454. },
  455. // 查询负责人
  456. followUp(e) {
  457. this.setState({
  458. aname: e
  459. });
  460. $.ajax({
  461. method: "get",
  462. dataType: "json",
  463. crossDomain: false,
  464. url: globalConfig.context + "/api/admin/customer/listAdminByName",
  465. data: {
  466. adminName: e,
  467. },
  468. success: function (data) {
  469. let thedata = data.data || [];
  470. if (!thedata) {
  471. if (data.error && data.error.length) {
  472. message.warning(data.error[0].message);
  473. }
  474. thedata = {};
  475. }
  476. this.setState({
  477. fjlist: thedata,
  478. });
  479. }.bind(this),
  480. }).always(
  481. function () {
  482. this.setState({
  483. loading: false,
  484. });
  485. }.bind(this)
  486. );
  487. },
  488. // 选中负责人
  489. selectF(value) {
  490. const { searchValues, fjlist } = this.state;
  491. const newdataSources = JSON.stringify(fjlist) == "{}" ? [] : fjlist;
  492. this.setState({
  493. searchValues: Object.assign(searchValues, {
  494. aid: newdataSources.find((item) => item.name == value).id,
  495. }),
  496. });
  497. },
  498. // 搜索
  499. search() {
  500. this.loadData();
  501. },
  502. // 重置
  503. reset() {
  504. this.setState({
  505. aname: "",
  506. searchValues: {
  507. examineStatus: this.props.isOperate ? "1" : undefined,
  508. roleType: this.props.isOperate ? undefined : "0",
  509. },
  510. }, () => {
  511. this.loadData();
  512. })
  513. },
  514. changeList(arr) {
  515. const newArr = [];
  516. this.state.columns.forEach((item) => {
  517. arr.forEach((val) => {
  518. if (val === item.title) {
  519. newArr.push(item);
  520. }
  521. });
  522. });
  523. this.setState({
  524. changeList: newArr,
  525. });
  526. },
  527. render() {
  528. const { TextArea } = Input
  529. const { searchValues, visible, } = this.state
  530. const formItemLayout = {
  531. labelCol: { span: 5 },
  532. wrapperCol: { span: 18 },
  533. };
  534. const dataSources = this.state.fjlist || [];
  535. const options = dataSources.map((group) => (
  536. <Select.Option key={group.id} value={group.name}>
  537. {group.name}
  538. </Select.Option>
  539. ));
  540. return (
  541. <div className="user-content">
  542. <ShowModalDiv ShowModal={this.state.showModal} onClose={() => { this.setState({ showModal: false }) }} />
  543. <div className="content-title" style={{ marginBottom: 10 }}>
  544. <span style={{ fontWeight: 900, fontSize: 16 }}>{this.props.isOperate ? "报销审核" : "报销列表"}</span>
  545. </div>
  546. <Tabs defaultActiveKey="2" className="test">
  547. <TabPane tab="搜索" key="2">
  548. <div className="user-search" style={{ marginLeft: 10 }}>
  549. {
  550. !this.props.isOperate &&
  551. <Select
  552. style={{ width: 140 }}
  553. placeholder=""
  554. value={searchValues["roleType"]
  555. ? searchValues["roleType"]
  556. : undefined}
  557. onChange={(e) => {
  558. searchValues["roleType"] = e;
  559. this.setState({
  560. searchValues: searchValues,
  561. });
  562. }}
  563. >
  564. <Option value="0">全部列表</Option>
  565. <Option value="1">我的列表</Option>
  566. </Select>
  567. }
  568. <Input
  569. placeholder="合同编号"
  570. value={searchValues["contractNo"]
  571. ? searchValues["contractNo"]
  572. : ""}
  573. onChange={(e) => {
  574. searchValues["contractNo"] = e.target.value;
  575. this.setState({
  576. searchValues: searchValues,
  577. });
  578. }}
  579. />
  580. <Input
  581. placeholder="客户名称"
  582. value={searchValues["username"]
  583. ? searchValues["username"]
  584. : ""}
  585. onChange={(e) => {
  586. searchValues["username"] = e.target.value;
  587. this.setState({
  588. searchValues: searchValues,
  589. });
  590. }}
  591. />
  592. <Select
  593. style={{ width: 140 }}
  594. placeholder="报销类型"
  595. value={searchValues["type"]
  596. ? searchValues["type"]
  597. : undefined}
  598. onChange={(e) => {
  599. searchValues["type"] = e;
  600. this.setState({
  601. searchValues: searchValues,
  602. });
  603. }}
  604. >
  605. <Option value="1">差旅费</Option>
  606. <Option value="2">非业务报销</Option>
  607. <Option value="3">第三方付款</Option>
  608. <Option value="4">申请借支</Option>
  609. <Option value="5">申请抵扣</Option>
  610. <Option value="0">其他</Option>
  611. </Select>
  612. <AutoComplete
  613. className="certain-category-search"
  614. dropdownClassName="certain-category-search-dropdown"
  615. dropdownMatchSelectWidth={false}
  616. style={{ width: 140 }}
  617. dataSource={options}
  618. placeholder="报销人"
  619. value={this.state.aname}
  620. onChange={this.followUp.bind(this)}
  621. filterOption={true}
  622. onSelect={this.selectF.bind(this)}
  623. >
  624. <Input />
  625. </AutoComplete>
  626. <Select
  627. placeholder="所属部门"
  628. style={{ width: 180, marginRight: 10 }}
  629. value={searchValues["depId"]
  630. ? searchValues["depId"]
  631. : undefined}
  632. onChange={e => {
  633. searchValues["depId"] = e;
  634. this.setState({
  635. searchValues: searchValues,
  636. });
  637. }}
  638. >
  639. {this.state.departmentArr.map(function (item) {
  640. return <Select.Option key={item.id}>{item.name}</Select.Option>;
  641. })}
  642. </Select>
  643. <Select
  644. placeholder="申请部门"
  645. style={{ width: 180, marginRight: 10 }}
  646. value={searchValues["applyDep"]
  647. ? searchValues["applyDep"]
  648. : undefined}
  649. onChange={e => {
  650. searchValues["applyDep"] = e;
  651. this.setState({
  652. searchValues: searchValues,
  653. });
  654. }}
  655. >
  656. {this.state.departmentArr.map(function (item) {
  657. return <Select.Option key={item.id}>{item.name}</Select.Option>;
  658. })}
  659. </Select>
  660. <Select
  661. placeholder="支付部门"
  662. style={{ width: 180, marginRight: 10 }}
  663. value={searchValues["payDep"]
  664. ? searchValues["payDep"]
  665. : undefined}
  666. onChange={e => {
  667. searchValues["payDep"] = e;
  668. this.setState({
  669. searchValues: searchValues,
  670. });
  671. }}
  672. >
  673. {this.state.departmentArr.map(function (item) {
  674. return <Select.Option key={item.id}>{item.name}</Select.Option>;
  675. })}
  676. </Select>
  677. <Select
  678. style={{ width: 140 }}
  679. placeholder="审核状态"
  680. value={searchValues["examineStatus"]
  681. ? searchValues["examineStatus"]
  682. : undefined}
  683. onChange={(e) => {
  684. searchValues["examineStatus"] = e;
  685. this.setState({
  686. searchValues: searchValues,
  687. });
  688. }}
  689. >
  690. <Option value="0">全部</Option>
  691. <Option value="1">待审核</Option>
  692. <Option value="2">已审核</Option>
  693. </Select>
  694. <Input
  695. placeholder="报销编号"
  696. value={searchValues["checkNo"]
  697. ? searchValues["checkNo"]
  698. : ""}
  699. onChange={(e) => {
  700. searchValues["checkNo"] = e.target.value;
  701. this.setState({
  702. searchValues: searchValues,
  703. });
  704. }}
  705. />
  706. <div style={{ marginTop: 10 }}>
  707. <span>报销时间:</span>
  708. <RangePicker
  709. style={{ width: 300 }}
  710. value={[
  711. searchValues.startTime ? moment(searchValues.startTime) : null,
  712. searchValues.endTime ? moment(searchValues.endTime) : null,
  713. ]}
  714. onChange={(data, dataString) => {
  715. this.setState({
  716. searchValues: Object.assign(searchValues, {
  717. startTime: dataString[0],
  718. endTime: dataString[1],
  719. }),
  720. });
  721. }}
  722. />
  723. <Button
  724. type="primary"
  725. onClick={this.search}
  726. style={{ margin: "0 10px" }}
  727. >
  728. 搜索
  729. </Button>
  730. <Button onClick={this.reset}>重置</Button>
  731. </div>
  732. </div>
  733. </TabPane>
  734. <TabPane tab="更改表格显示数据" key="1">
  735. <div style={{ marginLeft: 10 }}>
  736. <ChooseList
  737. columns={this.state.columns}
  738. changeFn={this.changeList}
  739. changeList={this.state.changeList}
  740. top={55}
  741. margin={11}
  742. />
  743. </div>
  744. </TabPane>
  745. </Tabs>
  746. <div className="patent-table">
  747. <Spin spinning={this.state.loading}>
  748. <Table
  749. bordered
  750. columns={
  751. this.state.changeList == undefined
  752. ? this.state.columns
  753. : this.state.changeList
  754. }
  755. dataSource={this.state.dataSource}
  756. pagination={this.state.pagination}
  757. onRowDoubleClick={this.tableRowClick.bind(this)}
  758. size="small"
  759. />
  760. </Spin>
  761. <p
  762. style={{ display: "inline-block", fontSize: "14px", color: "red" }}
  763. >
  764. {
  765. <span style={{ marginRight: 10 }}>
  766. {`金额总计(元):${this.state.totalAmount}`}
  767. </span>
  768. }
  769. </p>
  770. </div>
  771. {
  772. //审核弹窗
  773. this.state.visible != "" &&
  774. <Modal
  775. width="400px"
  776. maskClosable={false}
  777. title="审核"
  778. confirmLoading={this.state.loading}
  779. visible={this.state.visible != ""}
  780. onOk={() => { this.toExamine(visible == "adopt" ? 1 : visible == "reject" && 3) }}
  781. okText={this.state.visible == "adopt" ? "通过" : this.state.visible == "reject" && "驳回"}
  782. onCancel={() => {
  783. this.setState({
  784. visible: '',
  785. reason: "",
  786. checkData: {},
  787. })
  788. }}
  789. >
  790. <div style={{ width: "90%", margin: "0 auto" }}>
  791. <TextArea
  792. rows={4}
  793. value={this.state.reason}
  794. onChange={(e) => {
  795. this.setState({
  796. reason: e.target.value,
  797. })
  798. }}
  799. placeholder="请填写审核内容"
  800. />
  801. {
  802. this.state.visible == "adopt" && this.state.info.ceoExamine == 1 &&
  803. <div style={{ marginTop: 10 }}>
  804. <RadioGroup
  805. value={this.state.approval}
  806. onChange={(e) => {
  807. this.setState({
  808. approval: e.target.value
  809. })
  810. }} >
  811. <Radio value={0}>不需要董事长审核</Radio>
  812. <Radio value={1}>需要董事长审核</Radio>
  813. </RadioGroup>
  814. </div>
  815. }
  816. </div>
  817. </Modal>
  818. }
  819. {
  820. this.state.showDetails &&
  821. <AccountDetails
  822. showDetails={this.state.showDetails}
  823. id={this.state.id}
  824. isOperate={this.props.isOperate}
  825. onCancel={() => {
  826. this.setState({
  827. showDetails: false
  828. }, () => {
  829. this.loadData(this.state.pageNo)
  830. })
  831. }}
  832. />
  833. }
  834. {
  835. // 审核日志
  836. this.state.logvisible &&
  837. <Modal
  838. visible={this.state.logvisible}
  839. className="admin-desc-content"
  840. width="800px"
  841. maskClosable={false}
  842. title="审核日志"
  843. footer={null}
  844. onCancel={() => {
  845. this.setState({
  846. logvisible: false,
  847. })
  848. }}
  849. >
  850. <div className="patent-table">
  851. <Spin spinning={this.state.loading}>
  852. <Table
  853. columns={this.state.logcolumns}
  854. dataSource={this.state.logdataSour}
  855. pagination={false}
  856. bordered
  857. size="small"
  858. />
  859. </Spin>
  860. </div>
  861. </Modal>
  862. }
  863. </div>
  864. );
  865. },
  866. });
  867. export default AccountReview;