detail.js 7.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283
  1. import { useRef, useEffect, useMemo } from 'react';
  2. import PageContent from '@/components/PageContent';
  3. import { useLocation, useNavigate, useRequest } from '@umijs/max';
  4. import { Button, message } from 'antd';
  5. import md5 from 'md5';
  6. import {
  7. queryCadCommitCreate,
  8. queryCadCommitDel,
  9. queryCadCommitList,
  10. } from '../../services/cad';
  11. import moment from 'moment';
  12. const CadDeTail = () => {
  13. const navigate = useNavigate();
  14. const cadRef = useRef();
  15. const location = useLocation();
  16. const {
  17. state: { path, user = {}, project_id },
  18. } = location;
  19. console.log('---------------------------', path, user, project_id);
  20. //当前登录的用户信息
  21. let currentUser = {
  22. userId: user.ID,
  23. userName: user.CName,
  24. phone: user.Mobile,
  25. email: user.Email,
  26. description: '',
  27. type: 'FREE',
  28. };
  29. const doc_id = useMemo(() => md5(path), [path]);
  30. //添加、编辑评论
  31. const { run: runAdd, loading: loadingAdd } = useRequest(
  32. queryCadCommitCreate,
  33. {
  34. manual: true,
  35. onSuccess: (data) => {
  36. message.success('新建成功');
  37. setCommitList(data);
  38. },
  39. },
  40. );
  41. //删除评论
  42. const { run: runDel, loading: loadingDel } = useRequest(queryCadCommitDel, {
  43. manual: true,
  44. onSuccess: (data) => {
  45. message.success('删除成功');
  46. run();
  47. },
  48. });
  49. //请求评论列表
  50. const { run: run, loading } = useRequest(
  51. () => queryCadCommitList({ doc_id }),
  52. {
  53. manual: true,
  54. onSuccess: (data) => {
  55. setCommitList(data);
  56. },
  57. },
  58. );
  59. // let commentList = {
  60. // msg: '操作成功',
  61. // code: 0,
  62. // data: {
  63. // total: 2,
  64. // rows: [
  65. // {
  66. // createBy: 1317,
  67. // creator: '皮卡丘',
  68. // createTime: 1672040045000,
  69. // id: '1737299871415943168',
  70. // docId: '1703039467897',
  71. // handleId: '34',
  72. // parentId: '0',
  73. // level: 0,
  74. // withAt: 'NO',
  75. // withMark: 'NO',
  76. // content: '###梵蒂冈梵蒂冈发的',
  77. // mark: '',
  78. // replyList: [],
  79. // },
  80. // {
  81. // createBy: 1317,
  82. // creator: '柯南',
  83. // createTime: 1672040002000,
  84. // id: '1737299871415943169',
  85. // docId: '1703039467897',
  86. // handleId: '34',
  87. // parentId: '1737299871415943168',
  88. // level: 0,
  89. // withAt: 'NO',
  90. // withMark: 'YES',
  91. // content: '对符合法规和法国###',
  92. // mark: '[{"id":"7a4f4b9f-992d-15ef-9b17-7ca8abe833df","pt":[532.2265851288126,664.973293757502,0],"color":"red","type":0},{"id":"8bac4935-2e0b-444c-212e-bfca607c4f8e","points":[614.8609930415427,634.9244181528729,0,813.1835720320946,678.495287779585,0,834.217784955335,418.5725137995435,0,811.6811282518631,329.9283307658877,0],"color":"red","type":3},{"id":"a664f1ab-359b-87a0-7db9-f758e0e9e958","center":[294.8404678522429,338.9429934472764,0],"endPt":[365.45532552312125,275.84035467755535,0],"color":"cyan","type":1}]',
  93. // replyList: [],
  94. // },
  95. // ],
  96. // },
  97. // };
  98. //设置群组成员列表,作为@用户列表供用户选择
  99. let memberList = {
  100. msg: '操作成功',
  101. code: 0,
  102. data: {
  103. total: 2,
  104. rows: [
  105. // {
  106. // memberId: '2138',
  107. // phone: '',
  108. // email: '',
  109. // memberName: '何为',
  110. // memberType: 'USER',
  111. // lastTime: 1672039449000,
  112. // roleId: '1607272382833942531',
  113. // roleName: '查看者',
  114. // color: '#87CEFA',
  115. // },
  116. // {
  117. // memberId: '1317',
  118. // phone: '',
  119. // email: '',
  120. // memberName: '柯南',
  121. // memberType: 'PROJECT_ADMIN',
  122. // lastTime: 1672038572000,
  123. // roleId: '1607272382833942528',
  124. // roleName: '管理员',
  125. // color: '#87CEFA',
  126. // },
  127. ],
  128. },
  129. };
  130. useEffect(() => {
  131. const content = document.getElementById('container');
  132. ZwCloud2D.ZwEditor.ZwInit(content);
  133. ZwCloud2D.ZwDataProcessor.ZwSetConnectUrl(
  134. 'https://cad.greentech.com.cn',
  135. 'wss://cad.greentech.com.cn:5121',
  136. 'https://cad.greentech.com.cn',
  137. );
  138. //加载图纸
  139. ZwCloud2D.ZwDataProcessor.ZwSetLoadDwg(path);
  140. ZwCloud2D.ZwDataProcessor.ZwLoad();
  141. //请求评论内容并注入cad评论列表
  142. setTimeout(() => {
  143. run();
  144. }, 1000);
  145. //拦截cad评论面板方法,调用后端接口处理
  146. ZwCloud2D.ZwMessageCallback.ZwEvtUpdateCommentData = function (data) {
  147. console.log('------------------', data);
  148. switch (data.type) {
  149. case 'create':
  150. // 补充data.data中缺失的参数,保存新增的评论数据\
  151. const paramsAdd = {
  152. id: 0,
  153. project_id,
  154. user_name: user.CName,
  155. content: data.data.content,
  156. doc_id,
  157. parent_id: 0,
  158. with_mark: data.data.withMark || '',
  159. mark: data.data.mark || '',
  160. };
  161. runAdd(paramsAdd);
  162. break;
  163. case 'reply':
  164. const paramsReply = {
  165. id: 0,
  166. project_id,
  167. user_name: user.CName,
  168. content: data.data.content,
  169. doc_id,
  170. parent_id: data.data.parentId,
  171. with_mark: data.data.withMark || '',
  172. mark: data.data.mark || '',
  173. };
  174. runAdd(paramsReply);
  175. break;
  176. case 'delete':
  177. // 删除评论数据
  178. const paramsDel = {
  179. project_id,
  180. id: data.data.id,
  181. };
  182. runDel(paramsDel);
  183. break;
  184. case 'edit':
  185. // 编辑评论数据
  186. const paramsEdit = {
  187. project_id,
  188. id: data.data.id,
  189. user_name: user.CName,
  190. content: data.data.content,
  191. doc_id,
  192. parent_id: 0,
  193. with_mark: data.data.withMark || '',
  194. mark: data.data.mark || '',
  195. };
  196. runAdd(paramsEdit);
  197. break;
  198. default:
  199. break;
  200. }
  201. };
  202. }, []);
  203. const getRows = (list) => {
  204. if (!list || list?.length == 0) return [];
  205. return list?.map((item) => {
  206. const {
  207. user_id,
  208. user_name,
  209. id,
  210. parent_id = 0,
  211. content,
  212. create_time,
  213. mark,
  214. with_mark,
  215. children,
  216. } = item;
  217. return {
  218. createBy: user_id,
  219. creator: user_name,
  220. createTime: moment(create_time).valueOf(),
  221. id: id,
  222. docId: path,
  223. handleId: '34',
  224. parentId: parent_id,
  225. level: 0,
  226. withAt: 'NO',
  227. withMark: 'NO',
  228. content,
  229. mark,
  230. withMark: with_mark,
  231. replyList: getRows(children),
  232. };
  233. });
  234. };
  235. const setCommitList = (data) => {
  236. const resultData = {
  237. total: data.all_count,
  238. rows: [],
  239. };
  240. resultData.rows = getRows(data.list);
  241. //注入评论列表、用户列表(目前为空), 个人信息
  242. ZwCloud2D.ZwDataManager.ZwSetCommentData({
  243. commentList: { msg: '操作成功', code: 0, data: resultData },
  244. memberList: memberList,
  245. user: currentUser,
  246. });
  247. };
  248. const handleBackClick = () => {
  249. navigate(-1);
  250. };
  251. return (
  252. <PageContent>
  253. <div style={{ fontSize: '20px', marginBottom: '10px' }}>
  254. CAD在线审批
  255. <Button
  256. type="primary"
  257. style={{ float: 'right' }}
  258. onClick={handleBackClick}
  259. >
  260. 返回
  261. </Button>
  262. </div>
  263. <div
  264. id="container"
  265. style={{ width: '100%', height: '80vh' }}
  266. ref={cadRef}
  267. />
  268. </PageContent>
  269. );
  270. };
  271. export default CadDeTail;