index.tsx 4.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163
  1. import BreadTit from "@/components/BreadTit";
  2. import LookObjTable from "@/components/LookObjTable";
  3. import { RootState } from "@/store";
  4. import {
  5. auditObject1API,
  6. getObj1InfoTableAPI2,
  7. object1infoOutAPI,
  8. } from "@/store/action/object1";
  9. import { statusObj } from "@/utils/dataChange";
  10. import history, { urlParameter } from "@/utils/history";
  11. import { Button, message, Select } from "antd";
  12. import TextArea from "antd/es/input/TextArea";
  13. import React, { useCallback, useEffect, useRef, useState } from "react";
  14. import { useDispatch, useSelector } from "react-redux";
  15. import { useLocation } from "react-router-dom";
  16. import styles from "./index.module.scss";
  17. const { Option } = Select;
  18. function AuditObject1() {
  19. const dispatch = useDispatch();
  20. // 获取地址栏参数
  21. const location = useLocation();
  22. const urlParamRef = useRef<any>({});
  23. useEffect(() => {
  24. urlParamRef.current = urlParameter(location.search);
  25. // console.log("地址栏参数", urlParamRef.current);
  26. }, [location]);
  27. // 点击返回
  28. const cancelFu = () => {
  29. history.push({
  30. pathname: `/object`,
  31. state: {
  32. k: urlParamRef.current.k ? urlParamRef.current.k : "1",
  33. d: urlParamRef.current.d,
  34. },
  35. });
  36. };
  37. const getInfo = useCallback(async () => {
  38. const id = urlParamRef.current.id;
  39. const res1 = await object1infoOutAPI(id);
  40. const res2 = await getObj1InfoTableAPI2(id);
  41. const info = res1.data;
  42. info.statusTxt = statusObj[info.status];
  43. const list = res2.data;
  44. dispatch({ type: "object1/getLookInfo", payload: { info, list } });
  45. }, [dispatch]);
  46. useEffect(() => {
  47. getInfo();
  48. }, [getInfo]);
  49. const { info, list: tableList } = useSelector(
  50. (state: RootState) => state.object1Store.lookInfo
  51. );
  52. // 审核结果筛选
  53. const [value, setValue] = useState(3);
  54. const valueChangeFu = (val: number) => {
  55. setValue(val);
  56. };
  57. // 审核说明
  58. const [value2, setValue2] = useState("");
  59. // 点击确定
  60. const btnOkFu = async () => {
  61. const txt = value2.replaceAll(" ", "").replaceAll("\n", "");
  62. if (txt === "") return message.warning("审核说明不能为空!");
  63. const res: any = await auditObject1API({
  64. id: Number(urlParamRef.current.id),
  65. reason: value2,
  66. status: value,
  67. });
  68. if (res.code === 0) {
  69. message.success("操作成功!");
  70. cancelFu();
  71. }
  72. };
  73. return (
  74. <div className={styles.AuditObject1}>
  75. <div className="breadTit">
  76. <BreadTit>
  77. <div className="breadTitRow">藏品登记</div>
  78. <div className="splitStr">/</div>
  79. <div className="breadTitRow active">审核</div>
  80. </BreadTit>
  81. </div>
  82. <div className="objectSonMain">
  83. <div className="topTit">登记信息</div>
  84. <div className="topInfo">
  85. <div className="topInfoRow">
  86. <div>
  87. <div className="one">登记编号:</div>
  88. <div>{info.num}</div>
  89. </div>
  90. <div>
  91. <div className="one">登记人员:</div>
  92. <div>{info.creatorName}</div>
  93. </div>
  94. <div>
  95. <div className="one">藏品来源:</div>
  96. <div>{info.sourceName}</div>
  97. </div>
  98. </div>
  99. <div className="topInfoTex" title="87979">
  100. <span>登记说明:</span>
  101. {info.description ? info.description : "-"}
  102. </div>
  103. </div>
  104. <br />
  105. <div className="topTit">藏品信息</div>
  106. <div className="goodsInfo">
  107. {/* 封装的表格信息 */}
  108. <LookObjTable data={tableList} y={245} />
  109. <br />
  110. <div className="inputBox1">
  111. <div className="inputBoxTit">
  112. <span>* </span>审核结果:
  113. </div>
  114. <Select
  115. style={{ width: 150 }}
  116. value={value}
  117. onChange={(val) => valueChangeFu(val)}
  118. >
  119. <Option value={3}>通过</Option>
  120. <Option value={2}>不通过</Option>
  121. </Select>
  122. </div>
  123. <div className="inputBox1 inputBox2">
  124. <div className="inputBoxTit">
  125. <span>* </span>审核说明:
  126. </div>
  127. <div className="inputBoxText">
  128. <TextArea
  129. value={value2}
  130. onChange={(e) => setValue2(e.target.value)}
  131. rows={3}
  132. placeholder="请输入"
  133. showCount
  134. maxLength={255}
  135. />
  136. </div>
  137. </div>
  138. </div>
  139. <div className="backBtn">
  140. <Button onClick={btnOkFu} type="primary">
  141. 提交
  142. </Button>
  143. &emsp;
  144. <Button onClick={cancelFu}>返回</Button>
  145. </div>
  146. </div>
  147. </div>
  148. );
  149. }
  150. const MemoAuditObject1 = React.memo(AuditObject1);
  151. export default MemoAuditObject1;