123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147
  1. import React from "react";
  2. import Taro from "@tarojs/taro";
  3. import { View } from "@tarojs/components";
  4. import { CellGroup, Cell } from "@antmjs/vantui";
  5. import Page from "@/layouts/index";
  6. import { useModel } from "@/store";
  7. import {
  8. ROLE_INSPECTOR,
  9. ROLE_MANAGER,
  10. ROLE_CITIZEN,
  11. ROLE_QUERY_PERSON,
  12. ROLE_ORG_USER,
  13. } from "@/utils/user";
  14. import { getTaIssueById } from "@/services/taissue";
  15. import { getSysOrgById } from "@/services/sysorg";
  16. import IssueForm from "../components/Issue";
  17. import Save from "./components/Save";
  18. import Edit from "./components/Edit";
  19. import Assigned from "./components/Assigned";
  20. import Cancel from "./components/Cancel";
  21. // eslint-disable-next-line import/first
  22. import { PROCESS_END, PROCESS_START } from "@/utils/biz";
  23. export default (props) => {
  24. const router = Taro.useRouter();
  25. const { id } = router.params;
  26. const { user, duty } = useModel("user");
  27. const [loading, setLoading] = React.useState(false);
  28. const [issue, setIssue] = React.useState();
  29. React.useMemo(() => {
  30. if (id) {
  31. Taro.setNavigationBarTitle({
  32. title: "问题单详情",
  33. });
  34. } else {
  35. Taro.setNavigationBarTitle({
  36. title: "我要上报",
  37. });
  38. }
  39. }, [id]);
  40. // 各按钮状态
  41. const [readOnly, showOrg, canEdit, canAssigned, canCancel] =
  42. React.useMemo(() => {
  43. // 如果是督查员
  44. if (duty == ROLE_INSPECTOR) {
  45. return [
  46. issue && issue.processNode != PROCESS_START,
  47. true,
  48. // issue?.processNode && issue?.processNode != PROCESS_START, // true,
  49. issue && issue.processNode == PROCESS_START,
  50. false,
  51. false,
  52. ];
  53. }
  54. // 如果是管理员
  55. if (duty == ROLE_MANAGER) {
  56. return [
  57. issue && issue.processNode != PROCESS_START,
  58. true,
  59. false,
  60. issue && issue.processNode == PROCESS_START,
  61. issue && issue.processNode == PROCESS_START,
  62. ];
  63. }
  64. // 如果是查询员
  65. if (duty == ROLE_QUERY_PERSON) {
  66. return [true, true, false, false, false];
  67. }
  68. // 如果是交办单位人员
  69. if (duty == ROLE_ORG_USER) {
  70. return [true, true, false, false, false];
  71. }
  72. // 其他人员
  73. return [true, false, false, false, false];
  74. }, [issue, duty]);
  75. // const onIssueChange = (val = {}) => {
  76. // setIssue({
  77. // ...(issue || {}),
  78. // ...val,
  79. // })
  80. // }
  81. React.useEffect(() => {
  82. if (id) {
  83. setLoading(true);
  84. getTaIssueById(id)
  85. .then((res) => {
  86. setLoading(false);
  87. if (res.orgId) {
  88. getSysOrgById(res.orgId)
  89. .then((r) => {
  90. setIssue({
  91. ...res,
  92. orgName: r?.name,
  93. });
  94. })
  95. .catch(() => {
  96. setIssue(res);
  97. });
  98. } else {
  99. setIssue(res);
  100. }
  101. })
  102. .catch(() => {
  103. setLoading(false);
  104. });
  105. }
  106. }, [id]);
  107. return (
  108. <Page
  109. roles={[
  110. ROLE_INSPECTOR,
  111. ROLE_MANAGER,
  112. ROLE_CITIZEN,
  113. ROLE_ORG_USER,
  114. ROLE_QUERY_PERSON,
  115. ]}
  116. loading={loading}
  117. >
  118. <IssueForm
  119. issueId={id}
  120. issue={issue}
  121. readOnly={readOnly}
  122. showOrg={showOrg}
  123. showExpireDate={showOrg}
  124. renderAction={(formData) => (
  125. <View style={{ padding: "var(--main-space)", background: "#fff" }}>
  126. {!id && <Save formData={formData} />}
  127. {canEdit && <Edit issue={issue} formData={formData} />}
  128. {canAssigned && <Assigned issue={issue} formData={formData} />}
  129. {canCancel && <Cancel issue={issue} />}
  130. </View>
  131. )}
  132. />
  133. </Page>
  134. );
  135. };