projectvip.jsx 28 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970971972973
  1. import React from "react";
  2. import $ from "jquery/src/ajax";
  3. import "./public.less";
  4. import "./shouKuan.less";
  5. import { AutoComplete, Button, Input, Spin, Table, Select, message, Tabs, Tag, Tooltip, Modal } from "antd";
  6. import OrderDesc from "../orderDetail/orderDesc";
  7. import { ChooseList } from "../../order/orderNew/chooseList"
  8. import ReactToPrint from "react-to-print";
  9. import OrderItemStatus from "../../../common/orderItemStatus";
  10. import { salesList } from "@/dataDic.js";
  11. import ShowModalDiv from "@/showModal.jsx";
  12. import VipLogs from "../../../common/logPopup/viplogs";//会员日志
  13. import { splitUrl } from "@/tools";
  14. import ImgList from "../../../common/imgList";
  15. import Cascaders from "../../../common/cascaders";
  16. const { TabPane } = Tabs;
  17. //财务专员会员项目审核
  18. const ProjectVip = React.createClass({
  19. //
  20. getInitialState() {
  21. return {
  22. dvisible: false,
  23. pageNo: 1,
  24. totalPage: 0,
  25. searchValues: {
  26. status: "1"
  27. },//查询条件
  28. loading: false,
  29. changeList: undefined,// 子组件改变的表格title数组
  30. pagination: {
  31. defaultCurrent: 1,
  32. defaultPageSize: 10,
  33. showQuickJumper: true,
  34. pageSize: 10,
  35. onChange: function (page) {
  36. this.setState({
  37. pageNo: page,
  38. });
  39. this.loadData(page);
  40. }.bind(this),
  41. showTotal: function (total) {
  42. return "共" + total + "条数据";
  43. },
  44. },
  45. columns: [
  46. {
  47. title: "销售类型",
  48. dataIndex: "salesType",
  49. key: "salesType",
  50. render: (text, record) => {
  51. return (
  52. <Tooltip
  53. title={salesList[text] + ((text == 3 || text == 4 || text == 5) ? (!record.other ? "" : "," + record.other) : "")}
  54. >
  55. <span>
  56. {salesList[text]}
  57. </span>
  58. </Tooltip>
  59. );
  60. },
  61. },
  62. {
  63. title: "合同编号",
  64. dataIndex: "contractNo",
  65. key: "contractNo",
  66. width: 160,
  67. render: (text, record) => {
  68. return (
  69. <Tooltip
  70. title={
  71. <Button
  72. type="primary"
  73. onClick={(e) => {
  74. e.stopPropagation();
  75. let input = document.getElementById("copyText");
  76. input.value = text;
  77. input.select();
  78. document.execCommand("copy");
  79. message.success("复制成功");
  80. }}
  81. >
  82. 复制
  83. </Button>
  84. }
  85. >
  86. <div>
  87. {text}
  88. <div style={{ display: "flex" }}>
  89. <OrderItemStatus deleteSign={record.deleteSign} />
  90. {
  91. record.approval == 1
  92. ? <Tag color="#faa755">特批待审</Tag> : record.approval == 2
  93. ? <Tag color="#ff0000">特批通过</Tag> : record.approval == 4
  94. ? <Tag color="#faa755">特批待审</Tag> : record.approval == 5
  95. ? <Tag color="#ff0000">特批通过</Tag> : ""
  96. }
  97. </div>
  98. </div>
  99. </Tooltip>
  100. );
  101. },
  102. },
  103. {
  104. title: "客户名称",
  105. dataIndex: "userName",
  106. key: "userName",
  107. width: 160,
  108. render: text => {
  109. return (
  110. <Tooltip title={text}>
  111. <div>{text}</div>
  112. </Tooltip>
  113. )
  114. }
  115. },
  116. {
  117. title: "订单编号",
  118. dataIndex: "orderNo",
  119. key: "orderNo",
  120. width: 140,
  121. render: (text, record) => {
  122. return (
  123. <Tooltip
  124. title={
  125. <Button
  126. type="primary"
  127. onClick={(e) => {
  128. e.stopPropagation();
  129. let input = document.getElementById("copyText");
  130. input.value = text;
  131. input.select();
  132. document.execCommand("copy");
  133. message.success("复制成功");
  134. }}
  135. >
  136. 复制
  137. </Button>
  138. }
  139. >
  140. <div>
  141. {text}
  142. <div>
  143. {record.totalAmount >= 10 && <Tag color="#ef7207">大客户</Tag>}
  144. {record.projectType == 1 && <Tag color="rgb(22, 155, 213)">会员</Tag>}
  145. </div>
  146. </div>
  147. </Tooltip>
  148. );
  149. },
  150. },
  151. {
  152. title: "订单部门",
  153. dataIndex: "depName",
  154. key: "depName",
  155. },
  156. {
  157. title: "订单负责人",
  158. dataIndex: "salesmanName",
  159. key: "salesmanName",
  160. },
  161. {
  162. title: "财务负责人",
  163. dataIndex: "financeName",
  164. key: "financeName",
  165. },
  166. {
  167. title: "会员项目",
  168. dataIndex: "projectName",
  169. key: "projectName",
  170. render: (text, record) => {
  171. return (
  172. <div>
  173. {text}
  174. {(record.memberType == 1 || record.memberType == 2) && <Tag color="#ff0000">特批项目</Tag>}
  175. </div>
  176. )
  177. }
  178. },
  179. {
  180. title: "数量",
  181. dataIndex: "commodityQuantity",
  182. key: "commodityQuantity",
  183. },
  184. {
  185. title: "总年限",
  186. dataIndex: "yearSum",
  187. key: "yearSum",
  188. render: (text, record) => {
  189. return (
  190. <div>{["", "一年", "二年", "三年", "四年", "五年"][text]}</div>
  191. );
  192. }
  193. },
  194. {
  195. title: "年限",
  196. dataIndex: "serviceLife",
  197. key: "serviceLife",
  198. render: (text, record) => {
  199. return (
  200. <div>{!!text && JSON.parse(text).toString()}</div>
  201. );
  202. }
  203. },
  204. {
  205. title: "本次派单",
  206. dataIndex: "serviceYear",
  207. key: "serviceYear",
  208. render: (text, record) => {
  209. return (
  210. <div>{!text ? "" : text}</div>
  211. );
  212. }
  213. },
  214. {
  215. title: "项目说明",
  216. dataIndex: "taskComment",
  217. key: "taskComment",
  218. render: (text, record) => {
  219. return (
  220. <div style={{ maxWidth: 220 }}>{text}</div>
  221. );
  222. }
  223. },
  224. {
  225. title: "状态",
  226. dataIndex: "status",
  227. key: "status",
  228. render: (text) => {
  229. return (
  230. <div>
  231. {["", "财务审核", "特批审核", "通过", "驳回"][text]}
  232. </div>
  233. );
  234. }
  235. },
  236. {
  237. title: "操作",
  238. dataIndex: "pictureUrl",
  239. key: "pictureUrl",
  240. width: 90,
  241. render: (text, recard) => {
  242. return (
  243. <div>
  244. <Button
  245. type="primary"
  246. style={{ margin: 5 }}
  247. onClick={(e) => {
  248. e.stopPropagation();
  249. let arr = text || [];
  250. this.setState({
  251. pictureUrlArr: splitUrl(arr, ",", globalConfig.avatarHost + "/upload"),
  252. recard,
  253. }, () => {
  254. this.setState({
  255. imgListVisible: true,
  256. })
  257. })
  258. }}
  259. >
  260. 审核
  261. </Button>
  262. <VipLogs id={recard.id} />
  263. </div>
  264. );
  265. },
  266. },
  267. ],
  268. dataSource: [],
  269. fjlist: [],// 营销员列表
  270. checkOrderNo: "",//操作订单编号
  271. checkData: "",//操作描述
  272. checkVisible: "",//审核弹窗开关
  273. checkId: "",//会员项目编号
  274. result: -1,//1同意 0驳回
  275. imgListVisible: false,//附件弹窗
  276. pictureUrlArr: [],//附件
  277. recard: {},
  278. };
  279. },
  280. componentWillMount() {
  281. this.loadData();
  282. // this.departmentList();
  283. },
  284. // 获取订单部门
  285. departmentList() {
  286. $.ajax({
  287. method: "get",
  288. dataType: "json",
  289. crossDomain: false,
  290. url: globalConfig.context + "/api/admin/organization/selectSuperId",
  291. data: {},
  292. success: function (data) {
  293. let thedata = data.data;
  294. let theArr = [];
  295. if (!thedata) {
  296. if (data.error && data.error.length) {
  297. message.warning(data.error[0].message);
  298. }
  299. } else {
  300. thedata.map(function (item, index) {
  301. theArr.push({
  302. key: index,
  303. name: item.name,
  304. id: item.id,
  305. });
  306. });
  307. }
  308. this.setState({
  309. departmentArr: theArr,
  310. });
  311. }.bind(this),
  312. }).always(
  313. function () {
  314. }.bind(this)
  315. );
  316. },
  317. // 列表数据
  318. loadData(pageNo, pageSize) {
  319. const { searchValues, pagination } = this.state
  320. this.setState({
  321. loading: true,
  322. });
  323. let datas = Object.assign(searchValues, {
  324. pageNo: pageNo || 1,
  325. pageSize: pageSize || 10,
  326. shiroType: 2, //财务审核
  327. });
  328. $.ajax({
  329. method: "get",
  330. dataType: "json",
  331. crossDomain: false,
  332. url: globalConfig.context + "/api/admin/orderProject/memberList",
  333. data: datas,
  334. success: function (data) {
  335. this.setState({
  336. loading: false,
  337. });
  338. if (data.error && data.error.length === 0) {
  339. if (data.data.list) {
  340. pagination.current = data.data.pageNo;
  341. pagination.total = data.data.totalCount;
  342. if (data.data && data.data.list && !data.data.list.length) {
  343. pagination.current = 0;
  344. pagination.total = 0;
  345. }
  346. this.setState({
  347. dataSource: data.data.list,
  348. pagination: this.state.pagination,
  349. pageNo: data.data.pageNo,
  350. totalPage: data.data.totalPage,
  351. });
  352. } else {
  353. this.setState({
  354. dataSource: data.data,
  355. pagination: false,
  356. });
  357. }
  358. } else {
  359. message.warning(data.error[0].message);
  360. }
  361. }.bind(this),
  362. }).always(
  363. function () {
  364. this.setState({
  365. loading: false,
  366. });
  367. }.bind(this)
  368. );
  369. },
  370. // 点击行
  371. tableRowClick(record) {
  372. this.state.RowData = record;
  373. this.setState({
  374. showDesc: true,
  375. });
  376. },
  377. // 关闭
  378. closeDesc(e, s) {
  379. this.state.showDesc = e;
  380. if (s) {
  381. this.loadData(this.state.pageNo);
  382. }
  383. },
  384. // 搜索
  385. search() {
  386. this.setState({
  387. selectedRowKeys: []
  388. })
  389. this.loadData();
  390. },
  391. // 重置
  392. reset() {
  393. this.setState({
  394. searchValues: JSON.parse(JSON.stringify({})),
  395. }, () => {
  396. this.Cascaders.empty();
  397. this.loadData();
  398. })
  399. },
  400. // 点击审核
  401. checkRemark(nmb) {
  402. this.setState({
  403. checkVisible: true,
  404. checkId: this.state.recard.id,
  405. result: nmb
  406. });
  407. },
  408. // 审核
  409. toExamine() {
  410. if (!this.state.checkData) {
  411. message.warning("请填写审核说明~");
  412. return;
  413. }
  414. this.setState({
  415. loading: true,
  416. });
  417. $.ajax({
  418. method: "POST",
  419. dataType: "json",
  420. crossDomain: false,
  421. url: globalConfig.context + "/api/admin/orderProject/examineMemberProject",
  422. data: {
  423. id: this.state.checkId,
  424. remarks: this.state.checkData,
  425. result: this.state.result, //1同意 0驳回
  426. type: 0, //0财务审核 1特批审核
  427. },
  428. }).done(
  429. function (data) {
  430. if (!data.error.length) {
  431. message.success("审核成功!");
  432. this.setState({
  433. loading: false,
  434. checkVisible: false,
  435. checkData: '',
  436. imgListVisible: false,
  437. });
  438. this.loadData()
  439. } else {
  440. message.warning(data.error[0].message);
  441. }
  442. }.bind(this)
  443. );
  444. },
  445. // 更改表格显示数据
  446. changeList(arr) {
  447. const newArr = [];
  448. this.state.columns.forEach((item) => {
  449. arr.forEach((val) => {
  450. if (val === item.title) {
  451. newArr.push(item);
  452. }
  453. });
  454. });
  455. this.setState({
  456. changeList: newArr,
  457. });
  458. },
  459. // 导出当前列表
  460. exportAll() {
  461. message.config({
  462. duration: 20,
  463. });
  464. let loading = message.loading("下载中...");
  465. this.setState({
  466. exportPendingLoading: true,
  467. });
  468. let data = {
  469. shiroType: 2, //财务审核
  470. };
  471. let obj1 = JSON.parse(JSON.stringify(this.state.searchValues));
  472. data = Object.assign(data, obj1);
  473. $.ajax({
  474. method: "get",
  475. dataType: "json",
  476. crossDomain: false,
  477. url: "/api/admin/orderProject/memberList/export",
  478. data,
  479. success: function (data) {
  480. if (data.error.length === 0) {
  481. this.download(data.data);
  482. } else {
  483. message.warning(data.error[0].message);
  484. }
  485. }.bind(this),
  486. }).always(
  487. function () {
  488. loading();
  489. this.setState({
  490. exportPendingLoading: false,
  491. });
  492. }.bind(this)
  493. );
  494. },
  495. // 打印
  496. printAll() {
  497. this.setState({
  498. dvisible: true,
  499. });
  500. this.loadData(1, 9999999);
  501. },
  502. // 下载
  503. download(fileName) {
  504. window.location.href =
  505. globalConfig.context + "/open/download?fileName=" + fileName;
  506. },
  507. // 查询订单负责人列表
  508. followUp(e) {
  509. const { searchValues } = this.state;
  510. this.setState({
  511. searchValues: Object.assign(searchValues, {
  512. aname: e,
  513. }),
  514. });
  515. $.ajax({
  516. method: "get",
  517. dataType: "json",
  518. crossDomain: false,
  519. url: globalConfig.context + "/api/admin/customer/listAdminByName",
  520. data: {
  521. adminName: e,
  522. },
  523. success: function (data) {
  524. let thedata = data.data;
  525. if (!thedata) {
  526. if (data.error && data.error.length) {
  527. message.warning(data.error[0].message);
  528. }
  529. thedata = {};
  530. }
  531. this.setState({
  532. fjlist: thedata,
  533. });
  534. }.bind(this),
  535. }).always(
  536. function () {
  537. this.setState({
  538. loading: false,
  539. });
  540. }.bind(this)
  541. );
  542. },
  543. // 选中订单负责人
  544. selectF(value) {
  545. const { searchValues, fjlist } = this.state;
  546. const newdataSources = JSON.stringify(fjlist) == "{}" ? [] : fjlist;
  547. this.setState({
  548. searchValues: Object.assign(searchValues, {
  549. salesmanId: newdataSources.find((item) => item.name == value).id,
  550. }),
  551. });
  552. },
  553. // 失去焦点
  554. blurChange(e) {
  555. let theType = "";
  556. let contactLists = this.state.customerArr || [];
  557. if (e) {
  558. contactLists.map(function (item) {
  559. if (item.name == e.toString()) {
  560. theType = item.id;
  561. }
  562. });
  563. }
  564. this.setState({
  565. theTypes: theType,
  566. });
  567. },
  568. // 删除数组最后一项(删除操作列)
  569. truncate(arr) {
  570. return arr.filter(function (v, i, ar) {
  571. return i !== ar.length - 1
  572. })
  573. },
  574. render() {
  575. const { TextArea } = Input
  576. const { searchValues, departmentArr = [] } = this.state
  577. const dataSources = this.state.fjlist || [];
  578. const options = dataSources.map((group) => (
  579. <Select.Option key={group.id} value={group.name}>
  580. {group.name}
  581. </Select.Option>
  582. ));
  583. return (
  584. <div className="user-content">
  585. <ShowModalDiv ShowModal={this.state.showModal} />
  586. <div className="content-title" style={{ marginBottom: 10 }}>
  587. <span style={{ fontWeight: 900, fontSize: 16 }}>会员项目审核</span>
  588. </div>
  589. <Tabs defaultActiveKey="2" onChange={this.callback} className="test">
  590. <TabPane tab="更改表格显示数据" key="1">
  591. <div style={{ marginLeft: 10 }}>
  592. <ChooseList
  593. columns={this.state.columns}
  594. changeFn={this.changeList}
  595. changeList={this.state.changeList}
  596. top={55}
  597. margin={11}
  598. />
  599. </div>
  600. </TabPane>
  601. <TabPane tab="搜索" key="2">
  602. <div className="user-search" style={{ marginLeft: 10 }}>
  603. <Input
  604. placeholder="订单编号"
  605. value={searchValues["orderNo"]
  606. ? searchValues["orderNo"]
  607. : ""}
  608. onChange={(e) => {
  609. searchValues["orderNo"] = e.target.value;
  610. this.setState({
  611. searchValues: searchValues,
  612. });
  613. }}
  614. />
  615. <Input
  616. placeholder="客户名称"
  617. value={searchValues["userName"]
  618. ? searchValues["userName"]
  619. : ""}
  620. onChange={(e) => {
  621. searchValues["userName"] = e.target.value;
  622. this.setState({
  623. searchValues: searchValues,
  624. });
  625. }}
  626. />
  627. <Cascaders
  628. ref={node => this.Cascaders = node}
  629. placeholder="订单部门"
  630. id="id"
  631. name="name"
  632. children="list"
  633. height={28}
  634. onSel={(e) => {
  635. searchValues["deps"] = JSON.stringify(e);
  636. this.setState({
  637. searchValues: searchValues,
  638. });
  639. }}
  640. />
  641. {/* <Select
  642. placeholder="订单部门"
  643. style={{ width: 190, marginRight: 10 }}
  644. value={searchValues["depId"]
  645. ? searchValues["depId"]
  646. : undefined}
  647. onChange={(e) => {
  648. searchValues["depId"] = e;
  649. this.setState({
  650. searchValues: searchValues,
  651. });
  652. }}
  653. >
  654. {departmentArr.map(function (item) {
  655. return (
  656. <Select.Option key={item.id}>{item.name}</Select.Option>
  657. );
  658. })}
  659. </Select> */}
  660. <Input
  661. placeholder="合同编号"
  662. value={searchValues["contractNo"]
  663. ? searchValues["contractNo"]
  664. : ""}
  665. onChange={(e) => {
  666. searchValues["contractNo"] = e.target.value;
  667. this.setState({
  668. searchValues: searchValues,
  669. });
  670. }}
  671. />
  672. <AutoComplete
  673. className="certain-category-search"
  674. dropdownClassName="certain-category-search-dropdown"
  675. dropdownMatchSelectWidth={false}
  676. style={{ width: "120px" }}
  677. dataSource={options}
  678. placeholder="订单负责人"
  679. value={searchValues.aname || undefined}
  680. onChange={this.followUp.bind(this)}
  681. filterOption={true}
  682. onSelect={this.selectF.bind(this)}
  683. >
  684. <Input />
  685. </AutoComplete>
  686. <Input
  687. placeholder="项目名称"
  688. value={searchValues["projectName"]
  689. ? searchValues["projectName"]
  690. : ""}
  691. onChange={(e) => {
  692. searchValues["projectName"] = e.target.value;
  693. this.setState({
  694. searchValues: searchValues,
  695. });
  696. }}
  697. />
  698. <Select
  699. style={{ width: 120 }}
  700. placeholder="签单金额"
  701. value={searchValues["amountStatus"]
  702. ? searchValues["amountStatus"]
  703. : undefined}
  704. onChange={(e) => {
  705. searchValues["amountStatus"] = e;
  706. this.setState({
  707. searchValues: searchValues,
  708. });
  709. }}
  710. >
  711. <Option value="0">10万元以下</Option>
  712. <Option value="1">10~20万元</Option>
  713. <Option value="2">20~30万元</Option>
  714. <Option value="3">30~40万元</Option>
  715. <Option value="4">40万元以上</Option>
  716. </Select>
  717. <Select
  718. style={{ width: 120 }}
  719. placeholder="特批状态"
  720. value={searchValues["approval"]
  721. ? searchValues["approval"]
  722. : undefined}
  723. onChange={(e) => {
  724. searchValues["approval"] = e;
  725. this.setState({
  726. searchValues: searchValues,
  727. });
  728. }}
  729. >
  730. <Option value="0">非特批</Option>
  731. <Option value="1">特批待审</Option>
  732. <Option value="2">特批通过</Option>
  733. <Option value="4">全部特批</Option>
  734. </Select>
  735. <Select
  736. style={{ width: 120 }}
  737. placeholder="审核状态"
  738. value={searchValues["status"]
  739. ? searchValues["status"]
  740. : undefined}
  741. onChange={(e) => {
  742. searchValues["status"] = e;
  743. this.setState({
  744. searchValues: searchValues,
  745. });
  746. }}
  747. >
  748. <Option value="1">财务审核</Option>
  749. <Option value="2">特批审核</Option>
  750. <Option value="3">通过</Option>
  751. <Option value="5">全部</Option>
  752. </Select>
  753. <Button
  754. type="primary"
  755. onClick={this.search}
  756. style={{ marginLeft: 10 }}
  757. disabled={this.state.loading ? true : false}
  758. >
  759. 搜索
  760. </Button>
  761. <Button onClick={this.reset}>重置</Button>
  762. </div>
  763. </TabPane>
  764. <TabPane tab="打印" key="3">
  765. <Button
  766. type="primary"
  767. style={{ margin: "11px 0px 10px 10px" }}
  768. onClick={this.printAll}
  769. >
  770. 打印当前列表
  771. </Button>
  772. </TabPane>
  773. <TabPane tab="导出Excel" key="4">
  774. <Button
  775. type="primary"
  776. style={{ margin: "11px 0px 10px 10px" }}
  777. onClick={this.exportAll}
  778. >
  779. 导出当前列表
  780. </Button>
  781. </TabPane>
  782. </Tabs>
  783. <div className="patent-table">
  784. <Spin spinning={this.state.loading}>
  785. <Table
  786. bordered
  787. columns={
  788. this.state.changeList == undefined
  789. ? this.state.columns
  790. : this.state.changeList
  791. }
  792. dataSource={this.state.dataSource}
  793. pagination={this.state.pagination}
  794. onRowDoubleClick={this.tableRowClick.bind(this)}
  795. size="small"
  796. />
  797. </Spin>
  798. </div>
  799. <textarea id="copyText" style={{ opacity: 0 }} />
  800. {/* 订单详情 */}
  801. <OrderDesc
  802. data={this.state.RowData}
  803. showDesc={this.state.showDesc}
  804. closeDesc={this.closeDesc.bind(this)}
  805. />
  806. {
  807. //打印预览
  808. this.state.dvisible &&
  809. <Modal
  810. visible={this.state.dvisible}
  811. footer=""
  812. title="所有列表信息"
  813. className="admin-desc-content"
  814. width="1300px"
  815. onCancel={() => {
  816. this.loadData();
  817. this.setState({
  818. dvisible: false,
  819. });
  820. }}
  821. >
  822. <Spin spinning={this.state.loading}>
  823. <div
  824. className="patent-table"
  825. style={{
  826. padding: "25px 0 30px 30px",
  827. }}
  828. ref={(e) => {
  829. this.refs.all = e;
  830. }}
  831. >
  832. <Table
  833. columns={this.truncate(this.state.columns)}
  834. dataSource={this.state.dataSource}
  835. pagination={false}
  836. bordered
  837. size="small"
  838. />
  839. </div>
  840. </Spin>
  841. <ReactToPrint
  842. trigger={() => (
  843. <Button
  844. type="primary"
  845. style={{
  846. float: "right",
  847. marginTop: 10,
  848. position: "absolute",
  849. top: 0,
  850. right: 30,
  851. }}
  852. >
  853. 打印
  854. </Button>
  855. )}
  856. content={() => this.refs.all}
  857. />
  858. </Modal>
  859. }
  860. {
  861. //审核弹窗
  862. this.state.checkVisible &&
  863. <Modal
  864. width="400px"
  865. maskClosable={false}
  866. title="审核订单"
  867. confirmLoading={this.state.loading}
  868. visible={this.state.checkVisible}
  869. onOk={this.toExamine}
  870. okText={this.state.result == 1 ? "通过" : this.state.result == 0 && "驳回"}
  871. onCancel={() => {
  872. this.loadData()
  873. this.setState({
  874. checkVisible: false,
  875. checkData: '',
  876. })
  877. }}
  878. >
  879. <TextArea
  880. rows={4}
  881. value={this.state.checkData}
  882. onChange={(e) => {
  883. this.setState({
  884. checkData: e.target.value,
  885. })
  886. }}
  887. placeholder="请填写审核内容"
  888. />
  889. </Modal>
  890. }
  891. {
  892. //查看附件
  893. this.state.imgListVisible &&
  894. <Modal
  895. maskClosable={false}
  896. visible={this.state.imgListVisible}
  897. onOk={() => {
  898. this.setState({
  899. imgListVisible: false,
  900. });
  901. }}
  902. onCancel={() => {
  903. this.setState({
  904. imgListVisible: false,
  905. });
  906. }}
  907. width="600px"
  908. title="审核"
  909. footer=""
  910. >
  911. <div style={{ marginBottom: 20 }}>
  912. 付款情况:
  913. {this.state.recard.memberType == "0"
  914. ? "已付会员节点全款" : this.state.recard.memberType == "1"
  915. ? "已付部分期款,需特批" : this.state.recard.memberType == "2"
  916. ? "未付款,需特批" : ""}
  917. </div>
  918. <div>附件:</div>
  919. <div>
  920. <ImgList
  921. fileList={this.state.pictureUrlArr}
  922. domId="publicStatistics"
  923. />
  924. </div>
  925. <div
  926. style={{
  927. display: "flex",
  928. flexDirection: "row",
  929. justifyContent: "center",
  930. }}
  931. >
  932. {
  933. this.state.recard.status == 1 &&
  934. <Button
  935. type="primary"
  936. style={{ margin: '20px 10px 5px' }}
  937. onClick={(e) => {
  938. e.stopPropagation();
  939. this.checkRemark(1);
  940. }}
  941. >
  942. 通过
  943. </Button>
  944. }
  945. {
  946. this.state.recard.status == 1 &&
  947. <Button
  948. type="danger"
  949. style={{ margin: '20px 10px 5px' }}
  950. onClick={(e) => {
  951. e.stopPropagation();
  952. this.checkRemark(0);
  953. }}
  954. >
  955. 驳回
  956. </Button>
  957. }
  958. </div>
  959. </Modal>
  960. }
  961. </div>
  962. );
  963. },
  964. });
  965. export default ProjectVip;