浏览代码

cad评论功能

Renxy 1 年之前
父节点
当前提交
4b3ee993f3
共有 6 个文件被更改,包括 272 次插入116 次删除
  1. 1 0
      package.json
  2. 207 112
      src/pages/Cad/detail.js
  3. 5 2
      src/pages/Cad/index.js
  4. 2 1
      src/pages/PSRManage/detail.js
  5. 33 1
      src/services/cad.js
  6. 24 0
      yarn.lock

+ 1 - 0
package.json

@@ -20,6 +20,7 @@
     "exceljs": "^4.3.0",
     "file-saver": "^2.0.5",
     "luckyexcel": "^1.0.1",
+    "md5": "^2.3.0",
     "moment": "^2.29.4",
     "qs": "^6.11.1",
     "react-file-viewer": "^1.2.1",

+ 207 - 112
src/pages/Cad/detail.js

@@ -1,7 +1,14 @@
-import { useRef, useEffect } from 'react';
+import { useRef, useEffect, useMemo } from 'react';
 import PageContent from '@/components/PageContent';
-import { useLocation, useNavigate } from '@umijs/max';
-import { Button } from 'antd';
+import { useLocation, useNavigate, useRequest } from '@umijs/max';
+import { Button, message } from 'antd';
+import md5 from 'md5';
+import {
+  queryCadCommitCreate,
+  queryCadCommitDel,
+  queryCadCommitList,
+} from '../../services/cad';
+import moment from 'moment';
 
 const CadDeTail = () => {
   const navigate = useNavigate();
@@ -10,47 +17,87 @@ const CadDeTail = () => {
   const {
     state: { path, user = {}, project_id },
   } = location;
-  console.log(user);
 
-  let commentList = {
-    msg: '操作成功',
-    code: 0,
-    data: {
-      total: 2,
-      rows: [
-        {
-          createBy: 1317,
-          creator: '皮卡丘',
-          createTime: 1672040045000,
-          id: '1737299871415943168',
-          docId: '1703039467897',
-          handleId: '34',
-          parentId: '0',
-          level: 0,
-          withAt: 'NO',
-          withMark: 'NO',
-          content: '###梵蒂冈梵蒂冈发的',
-          mark: '',
-          replyList: [],
-        },
-        {
-          createBy: 1317,
-          creator: '柯南',
-          createTime: 1672040002000,
-          id: '1737299871415943168',
-          docId: '1703039467897',
-          handleId: '34',
-          parentId: '0',
-          level: 0,
-          withAt: 'NO',
-          withMark: 'YES',
-          content: '对符合法规和法国###',
-          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}]',
-          replyList: [],
-        },
-      ],
-    },
+  //当前登录的用户信息
+  let currentUser = {
+    userId: user.ID,
+    userName: user.CName,
+    phone: user.Mobile,
+    email: user.Email,
+    description: '',
+    type: 'FREE',
   };
+  const doc_id = useMemo(() => md5(path), [path]);
+
+  //添加、编辑评论
+  const { run: runAdd, loading: loadingAdd } = useRequest(
+    queryCadCommitCreate,
+    {
+      manual: true,
+      onSuccess: (data) => {
+        message.success('新建成功');
+        setCommitList(data);
+      },
+    },
+  );
+  //删除评论
+  const { run: runDel, loading: loadingDel } = useRequest(queryCadCommitDel, {
+    manual: true,
+    onSuccess: (data) => {
+      message.success('删除成功');
+      run();
+    },
+  });
+  //请求评论列表
+  const { run: run, loading } = useRequest(
+    () => queryCadCommitList({ doc_id }),
+    {
+      manual: true,
+      onSuccess: (data) => {
+        setCommitList(data);
+      },
+    },
+  );
+
+  // let commentList = {
+  //   msg: '操作成功',
+  //   code: 0,
+  //   data: {
+  //     total: 2,
+  //     rows: [
+  //       {
+  //         createBy: 1317,
+  //         creator: '皮卡丘',
+  //         createTime: 1672040045000,
+  //         id: '1737299871415943168',
+  //         docId: '1703039467897',
+  //         handleId: '34',
+  //         parentId: '0',
+  //         level: 0,
+  //         withAt: 'NO',
+  //         withMark: 'NO',
+  //         content: '###梵蒂冈梵蒂冈发的',
+  //         mark: '',
+  //         replyList: [],
+  //       },
+  //       {
+  //         createBy: 1317,
+  //         creator: '柯南',
+  //         createTime: 1672040002000,
+  //         id: '1737299871415943169',
+  //         docId: '1703039467897',
+  //         handleId: '34',
+  //         parentId: '1737299871415943168',
+  //         level: 0,
+  //         withAt: 'NO',
+  //         withMark: 'YES',
+  //         content: '对符合法规和法国###',
+  //         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}]',
+  //         replyList: [],
+  //       },
+  //     ],
+  //   },
+  // };
   //设置群组成员列表,作为@用户列表供用户选择
   let memberList = {
     msg: '操作成功',
@@ -58,42 +105,31 @@ const CadDeTail = () => {
     data: {
       total: 2,
       rows: [
-        {
-          memberId: '2138',
-          phone: '',
-          email: '',
-          memberName: '何为',
-          memberType: 'USER',
-          lastTime: 1672039449000,
-          roleId: '1607272382833942531',
-          roleName: '查看者',
-          color: '#87CEFA',
-        },
-        {
-          memberId: '1317',
-          phone: '',
-          email: '',
-          memberName: '柯南',
-          memberType: 'PROJECT_ADMIN',
-          lastTime: 1672038572000,
-          roleId: '1607272382833942528',
-          roleName: '管理员',
-          color: '#87CEFA',
-        },
+        // {
+        //   memberId: '2138',
+        //   phone: '',
+        //   email: '',
+        //   memberName: '何为',
+        //   memberType: 'USER',
+        //   lastTime: 1672039449000,
+        //   roleId: '1607272382833942531',
+        //   roleName: '查看者',
+        //   color: '#87CEFA',
+        // },
+        // {
+        //   memberId: '1317',
+        //   phone: '',
+        //   email: '',
+        //   memberName: '柯南',
+        //   memberType: 'PROJECT_ADMIN',
+        //   lastTime: 1672038572000,
+        //   roleId: '1607272382833942528',
+        //   roleName: '管理员',
+        //   color: '#87CEFA',
+        // },
       ],
     },
   };
-  //当前登录的用户信息
-  let currentUser = {
-    userId: user.ID,
-    userName: user.CName,
-    phone: user.Mobile,
-    email: user.Email,
-    description: '',
-    type: 'FREE',
-  };
-
-  console.log('-----path-------', path);
 
   useEffect(() => {
     const content = document.getElementById('container');
@@ -103,50 +139,109 @@ const CadDeTail = () => {
       'wss://cad.greentech.com.cn:5121',
       'https://cad.greentech.com.cn',
     );
+    //加载图纸
     ZwCloud2D.ZwDataProcessor.ZwSetLoadDwg(path);
     ZwCloud2D.ZwDataProcessor.ZwLoad();
+    //请求评论内容并注入cad评论列表
     setTimeout(() => {
-      ZwCloud2D.ZwDataManager.ZwSetCommentData({
-        commentList: commentList,
-        memberList: memberList,
-        user: currentUser,
-      });
+      run();
     }, 1000);
 
-    // ZwCloud2D.ZwMessageCallback.ZwEvtUpdateCommentData = function (data) {
-    //   console.log('------------------', data);
-    //   switch (data.type) {
-    //     case 'create':
-    //       // 补充data.data中缺失的参数,保存新增的评论数据\
-    //       const paramsadd = {
-    //         project_id,
-    //         user_name: user.CName,
-    //         content: data.data.content,
-    //         doc_id: path,
-    //       };
-    //       // addComment(data.data);
-    //       break;
-    //     case 'reply':
-    //       const params = {
-    //         project_id,
-    //         user_name: user.CName,
-    //         content: data.data.content,
-    //         doc_id: path,
-    //         parent_id: data.data.parentId,
-    //       };
-    //       // 补充data.data中缺失的参数,保存回复的评论数据
-    //       // replyComment(data.data);
-    //       break;
-    //     case 'delete':
-    //       // 删除评论数据
-    //       // deleteComment(data.data.id);
-    //       break;
-    //     default:
-    //       break;
-    //   }
-    // };
+    //拦截cad评论面包方法,调用后端接口处理
+    ZwCloud2D.ZwMessageCallback.ZwEvtUpdateCommentData = function (data) {
+      console.log('------------------', data);
+      switch (data.type) {
+        case 'create':
+          // 补充data.data中缺失的参数,保存新增的评论数据\
+          const paramsAdd = {
+            id: 0,
+            project_id,
+            user_name: user.CName,
+            content: data.data.content,
+            doc_id,
+            parent_id: 0,
+          };
+          runAdd(paramsAdd);
+          break;
+        case 'reply':
+          const paramsReply = {
+            project_id,
+            user_name: user.CName,
+            content: data.data.content,
+            doc_id,
+            parent_id: data.data.parentId,
+          };
+          runAdd(paramsReply);
+          break;
+        case 'delete':
+          // 删除评论数据
+          const paramsDel = {
+            project_id,
+            id: data.data.id,
+          };
+          runDel(paramsDel);
+          break;
+        case 'edit':
+          // 编辑评论数据
+          const paramsEdit = {
+            project_id,
+            id: data.data.id,
+            user_name: user.CName,
+            content: data.data.content,
+            doc_id,
+            parent_id: 0,
+          };
+          runAdd(paramsEdit);
+          break;
+        default:
+          break;
+      }
+    };
   }, []);
 
+  const getRows = (list) => {
+    return list.map((item) => {
+      const {
+        user_id,
+        user_name,
+        id,
+        parent_id = 0,
+        content,
+        create_time,
+        children,
+      } = item;
+      return {
+        createBy: user_id,
+        creator: user_name,
+        createTime: moment(create_time).valueOf(),
+        id: id,
+        docId: path,
+        handleId: '34',
+        parentId: parent_id,
+        level: 0,
+        withAt: 'NO',
+        withMark: 'NO',
+        content,
+        mark: '',
+        replyList: children ? getRows(children) : [],
+      };
+    });
+  };
+
+  const setCommitList = (data) => {
+    const resultData = {
+      total: data.all_count,
+      rows: [],
+    };
+    resultData.rows = getRows(data.list);
+    //注入评论列表、用户列表(目前为空), 个人信息
+    ZwCloud2D.ZwDataManager.ZwSetCommentData({
+      commentList: { msg: '操作成功', code: 0, data: resultData },
+      memberList: memberList,
+      user: currentUser,
+    });
+  };
+
   const handleBackClick = () => {
     navigate(-1);
   };

+ 5 - 2
src/pages/Cad/index.js

@@ -79,8 +79,9 @@ const CadDemo = () => {
                 onClick={() =>
                   navigate('/cad/detail', {
                     state: {
+                      user,
                       path: record.path,
-                      user: user,
+                      project_id: record.project_id,
                     },
                   })
                 }
@@ -127,6 +128,7 @@ const CadDemo = () => {
     defaultParams: [params],
     formatResult: (res) => {
       res.data?.list?.forEach((item) => {
+        const project_id = item.project_id;
         item.children?.forEach((cur) => {
           cur.name = item.name + cur.version;
           item.showCreate = cur.cad_status == 2 ? true : false;
@@ -136,9 +138,10 @@ const CadDemo = () => {
               const names = item.split('/');
               const name = names?.length > 1 ? names[1] : names[0];
               return {
-                name: name,
+                name,
                 path: item,
                 canShow: true,
+                project_id,
                 parent_id: cur.parent_id,
               };
             });

+ 2 - 1
src/pages/PSRManage/detail.js

@@ -518,6 +518,7 @@ const PSRDetail = () => {
         json_data: JSON.stringify(luckyData.data),
         data_type: data_type,
       };
+      console.log(params);
       runSaveOther(params);
     }
   };
@@ -554,7 +555,7 @@ const PSRDetail = () => {
       psr_json_data: JSON.stringify(allData),
     };
     console.log(params);
-    runSave(params);
+    // runSave(params);
   };
 
   //获取当月发生额的月份

+ 33 - 1
src/services/cad.js

@@ -45,10 +45,42 @@ export async function queryCadDirList(data) {
   });
 }
 
-//添加评论
+/**
+ * 添加评论
+ * @param {*} user_name
+ * @param {*} project_id
+ * @param {*} content
+ * @param {*} doc_id
+ * @param {*} parent_id
+ * @returns
+ */
 export async function queryCadCommitCreate(data) {
   return request(`/api/archive/v1/cad/comment/create`, {
     method: 'POST',
     data,
   });
 }
+
+/**
+ * 评论列表
+ * @param {*} doc_id
+ * @returns
+ */
+export async function queryCadCommitList(data) {
+  return request(`/api/archive/v1/cad/comment/list`, {
+    method: 'POST',
+    data,
+  });
+}
+/**
+ * 删除评论
+ * @param {*} project_id
+ * @param {*} id
+ * @returns
+ */
+export async function queryCadCommitDel(data) {
+  return request(`/api/archive/v1/cad/comment/del`, {
+    method: 'POST',
+    data,
+  });
+}

+ 24 - 0
yarn.lock

@@ -3895,6 +3895,11 @@ chalk@^4.0.0, chalk@^4.1.2:
     ansi-styles "^4.1.0"
     supports-color "^7.1.0"
 
+charenc@0.0.2:
+  version "0.0.2"
+  resolved "https://registry.npmmirror.com/charenc/-/charenc-0.0.2.tgz#c0a1d2f3a7092e03774bfa83f14c0fc5790a8667"
+  integrity sha512-yrLQ/yVUFXkzg7EDQsPieE/53+0RlaWTs+wBrvW36cyilJ2SaDWfl4Yj7MtLTXleV9uEKefbAGUPv2/iWSooRA==
+
 chokidar@3.5.3, chokidar@^3.4.0, chokidar@^3.5.3:
   version "3.5.3"
   resolved "https://registry.npmmirror.com/chokidar/-/chokidar-3.5.3.tgz#1cf37c8707b932bd1af1ae22c0432e2acd1903bd"
@@ -4256,6 +4261,11 @@ cross-spawn@^7.0.2, cross-spawn@^7.0.3:
     shebang-command "^2.0.0"
     which "^2.0.1"
 
+crypt@0.0.2:
+  version "0.0.2"
+  resolved "https://registry.npmmirror.com/crypt/-/crypt-0.0.2.tgz#88d7ff7ec0dfb86f713dc87bbb42d044d3e6c41b"
+  integrity sha512-mCxBlsHFYh9C+HVpiEacem8FEBnMXgU9gy4zmNC+SXAZNB/1idgp/aulFJ4FgCi7GPEVbfyng092GqL2k2rmow==
+
 crypto-browserify@^3.11.0:
   version "3.12.0"
   resolved "https://registry.npmmirror.com/crypto-browserify/-/crypto-browserify-3.12.0.tgz#396cf9f3137f03e4b8e532c58f698254e00f80ec"
@@ -6039,6 +6049,11 @@ is-boolean-object@^1.1.0, is-boolean-object@^1.1.2:
     call-bind "^1.0.2"
     has-tostringtag "^1.0.0"
 
+is-buffer@~1.1.6:
+  version "1.1.6"
+  resolved "https://registry.npmmirror.com/is-buffer/-/is-buffer-1.1.6.tgz#efaa2ea9daa0d7ab2ea13a97b2b8ad51fefbe8be"
+  integrity sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==
+
 is-callable@^1.0.4, is-callable@^1.1.3, is-callable@^1.1.4, is-callable@^1.2.4, is-callable@^1.2.7:
   version "1.2.7"
   resolved "https://registry.npmmirror.com/is-callable/-/is-callable-1.2.7.tgz#3bc2a85ea742d9e36205dcacdd72ca1fdc51b055"
@@ -6944,6 +6959,15 @@ md5.js@^1.3.4:
     inherits "^2.0.1"
     safe-buffer "^5.1.2"
 
+md5@^2.3.0:
+  version "2.3.0"
+  resolved "https://registry.npmmirror.com/md5/-/md5-2.3.0.tgz#c3da9a6aae3a30b46b7b0c349b87b110dc3bda4f"
+  integrity sha512-T1GITYmFaKuO91vxyoQMFETst+O71VUPEU3ze5GNzDm0OWdP8v1ziTaAEPUr/3kLsY3Sftgz242A1SetQiDL7g==
+  dependencies:
+    charenc "0.0.2"
+    crypt "0.0.2"
+    is-buffer "~1.1.6"
+
 mdn-data@2.0.14:
   version "2.0.14"
   resolved "https://registry.npmmirror.com/mdn-data/-/mdn-data-2.0.14.tgz#7113fc4281917d63ce29b43446f701e68c25ba50"