Kaynağa Gözat

添加文档分类及优化编辑器大小

yangg 6 ay önce
ebeveyn
işleme
6aa416ca8e
40 değiştirilmiş dosya ile 408 ekleme ve 90 silme
  1. 1 1
      .env.development
  2. 0 0
      dist/index.html
  3. 0 0
      dist/static/css/app.a09ddf33.css
  4. 0 0
      dist/static/css/chunk-04c39295.e4b35bb8.css
  5. 0 0
      dist/static/css/chunk-194e2959.b3755e62.css
  6. 0 0
      dist/static/css/chunk-25587870.db2dda92.css
  7. 0 0
      dist/static/css/chunk-6c881204.7662a006.css
  8. 0 0
      dist/static/css/chunk-71b6858e.9015865e.css
  9. 0 0
      dist/static/css/chunk-c891d702.41e35c99.css
  10. 0 0
      dist/static/css/chunk-d8dd6e5c.9015865e.css
  11. 0 0
      dist/static/js/app.047567a5.js
  12. 0 0
      dist/static/js/app.1381b80f.js
  13. 0 0
      dist/static/js/chunk-04c39295.ab53f70e.js
  14. 0 0
      dist/static/js/chunk-1055b3f2.21fa9bac.js
  15. 0 0
      dist/static/js/chunk-15a824ae.ce698c6f.js
  16. 0 0
      dist/static/js/chunk-16694b50.23e17d58.js
  17. 0 0
      dist/static/js/chunk-16a60d86.87d244a6.js
  18. 0 0
      dist/static/js/chunk-194e2959.e8a774bf.js
  19. 0 0
      dist/static/js/chunk-25587870.19695872.js
  20. 0 0
      dist/static/js/chunk-2a8c4ce9.9dbb77bf.js
  21. 0 0
      dist/static/js/chunk-3b697c9a.b22b0711.js
  22. 0 0
      dist/static/js/chunk-3ecbedba.9fbaf37f.js
  23. 0 0
      dist/static/js/chunk-4444d405.014c7cc6.js
  24. 0 0
      dist/static/js/chunk-48f27aa5.fd85b2c9.js
  25. 0 0
      dist/static/js/chunk-698f71b6.edc02486.js
  26. 0 0
      dist/static/js/chunk-69f52cea.88f6d808.js
  27. 0 0
      dist/static/js/chunk-6c881204.4128bd72.js
  28. 0 0
      dist/static/js/chunk-708604c0.3edf073e.js
  29. 0 0
      dist/static/js/chunk-71b6858e.6c522d23.js
  30. 0 0
      dist/static/js/chunk-c891d702.1f6e5daa.js
  31. 0 0
      dist/static/js/chunk-cda0aa98.7b1507f2.js
  32. 0 0
      dist/static/js/chunk-d7c43ae4.cc3c004c.js
  33. 0 0
      dist/static/js/chunk-d8dd6e5c.d9bb778e.js
  34. 208 33
      src/components/CanvasEditor/index.vue
  35. 1 1
      src/components/CanvasEditor/option.js
  36. 72 32
      src/views/dashboard/admin/chart.vue
  37. 20 3
      src/views/document/com/components/Attribute/docAttr/index.vue
  38. 6 4
      src/views/document/create.vue
  39. 2 1
      src/views/project/ProjectInput.vue
  40. 98 15
      src/views/project/components/dataList.vue

+ 1 - 1
.env.development

@@ -3,7 +3,7 @@ ENV = 'development'
 port = 8080
 port = 8080
 # base api
 # base api
 VUE_APP_BASE_AI_API='https://ylaiapi.raycos.com.cn'
 VUE_APP_BASE_AI_API='https://ylaiapi.raycos.com.cn'
-VUE_APP_BASE_API = 'http://183.195.216.54:8084'
+VUE_APP_BASE_API = 'http://192.168.66.163:8084'
 #192.168.66.187
 #192.168.66.187
 #朱:192.168.66.163
 #朱:192.168.66.163
 #测试服务器:121.36.251.245
 #测试服务器:121.36.251.245

Dosya farkı çok büyük olduğundan ihmal edildi
+ 0 - 0
dist/index.html


Dosya farkı çok büyük olduğundan ihmal edildi
+ 0 - 0
dist/static/css/app.a09ddf33.css


Dosya farkı çok büyük olduğundan ihmal edildi
+ 0 - 0
dist/static/css/chunk-04c39295.e4b35bb8.css


Dosya farkı çok büyük olduğundan ihmal edildi
+ 0 - 0
dist/static/css/chunk-194e2959.b3755e62.css


+ 0 - 0
dist/static/css/chunk-1055b3f2.db2dda92.css → dist/static/css/chunk-25587870.db2dda92.css


Dosya farkı çok büyük olduğundan ihmal edildi
+ 0 - 0
dist/static/css/chunk-6c881204.7662a006.css


+ 0 - 0
dist/static/css/chunk-3b697c9a.9015865e.css → dist/static/css/chunk-71b6858e.9015865e.css


Dosya farkı çok büyük olduğundan ihmal edildi
+ 0 - 0
dist/static/css/chunk-c891d702.41e35c99.css


+ 0 - 0
dist/static/css/chunk-69f52cea.9015865e.css → dist/static/css/chunk-d8dd6e5c.9015865e.css


Dosya farkı çok büyük olduğundan ihmal edildi
+ 0 - 0
dist/static/js/app.047567a5.js


Dosya farkı çok büyük olduğundan ihmal edildi
+ 0 - 0
dist/static/js/app.1381b80f.js


Dosya farkı çok büyük olduğundan ihmal edildi
+ 0 - 0
dist/static/js/chunk-04c39295.ab53f70e.js


Dosya farkı çok büyük olduğundan ihmal edildi
+ 0 - 0
dist/static/js/chunk-1055b3f2.21fa9bac.js


Dosya farkı çok büyük olduğundan ihmal edildi
+ 0 - 0
dist/static/js/chunk-15a824ae.ce698c6f.js


Dosya farkı çok büyük olduğundan ihmal edildi
+ 0 - 0
dist/static/js/chunk-16694b50.23e17d58.js


Dosya farkı çok büyük olduğundan ihmal edildi
+ 0 - 0
dist/static/js/chunk-16a60d86.87d244a6.js


Dosya farkı çok büyük olduğundan ihmal edildi
+ 0 - 0
dist/static/js/chunk-194e2959.e8a774bf.js


Dosya farkı çok büyük olduğundan ihmal edildi
+ 0 - 0
dist/static/js/chunk-25587870.19695872.js


Dosya farkı çok büyük olduğundan ihmal edildi
+ 0 - 0
dist/static/js/chunk-2a8c4ce9.9dbb77bf.js


Dosya farkı çok büyük olduğundan ihmal edildi
+ 0 - 0
dist/static/js/chunk-3b697c9a.b22b0711.js


Dosya farkı çok büyük olduğundan ihmal edildi
+ 0 - 0
dist/static/js/chunk-3ecbedba.9fbaf37f.js


Dosya farkı çok büyük olduğundan ihmal edildi
+ 0 - 0
dist/static/js/chunk-4444d405.014c7cc6.js


Dosya farkı çok büyük olduğundan ihmal edildi
+ 0 - 0
dist/static/js/chunk-48f27aa5.fd85b2c9.js


Dosya farkı çok büyük olduğundan ihmal edildi
+ 0 - 0
dist/static/js/chunk-698f71b6.edc02486.js


Dosya farkı çok büyük olduğundan ihmal edildi
+ 0 - 0
dist/static/js/chunk-69f52cea.88f6d808.js


Dosya farkı çok büyük olduğundan ihmal edildi
+ 0 - 0
dist/static/js/chunk-6c881204.4128bd72.js


Dosya farkı çok büyük olduğundan ihmal edildi
+ 0 - 0
dist/static/js/chunk-708604c0.3edf073e.js


Dosya farkı çok büyük olduğundan ihmal edildi
+ 0 - 0
dist/static/js/chunk-71b6858e.6c522d23.js


Dosya farkı çok büyük olduğundan ihmal edildi
+ 0 - 0
dist/static/js/chunk-c891d702.1f6e5daa.js


Dosya farkı çok büyük olduğundan ihmal edildi
+ 0 - 0
dist/static/js/chunk-cda0aa98.7b1507f2.js


Dosya farkı çok büyük olduğundan ihmal edildi
+ 0 - 0
dist/static/js/chunk-d7c43ae4.cc3c004c.js


Dosya farkı çok büyük olduğundan ihmal edildi
+ 0 - 0
dist/static/js/chunk-d8dd6e5c.d9bb778e.js


+ 208 - 33
src/components/CanvasEditor/index.vue

@@ -1,5 +1,3 @@
- 
-
 <template>
 <template>
   <div class="canvas-editor-wrapper">
   <div class="canvas-editor-wrapper">
     <div class="canvas-container">
     <div class="canvas-container">
@@ -111,13 +109,74 @@
               </div>
               </div>
               <div class="menu-item__color" title="字体颜色">
               <div class="menu-item__color" title="字体颜色">
                 <i></i>
                 <i></i>
-                <span></span>
-                <input type="color" id="color" />
+                <div class="options">
+                  <div class="color-section">
+                    <div class="section-title">主题颜色</div>
+                    <ul>
+                      <!-- 第一行 -->
+                      <li data-color="#000000" title="黑色" style="background-color: #000000"></li>
+                      <li data-color="#2B579A" title="深蓝色" style="background-color: #2B579A"></li>
+                      <li data-color="#4472C4" title="蓝色" style="background-color: #4472C4"></li>
+                      <li data-color="#70AD47" title="绿色" style="background-color: #70AD47"></li>
+                      <li data-color="#FFC000" title="黄色" style="background-color: #FFC000"></li>
+                      <li data-color="#ED7D31" title="橙色" style="background-color: #ED7D31"></li>
+                      <li data-color="#C00000" title="红色" style="background-color: #C00000"></li>
+                      <li data-color="#7030A0" title="紫色" style="background-color: #7030A0"></li>
+                      <li data-color="#FFFFFF" title="白色" style="background-color: #FFFFFF"></li>
+
+                      <!-- 灰度行 -->
+                      <li data-color="#7F7F7F" title="深灰色" style="background-color: #7F7F7F"></li>
+                      <li data-color="#A5A5A5" title="灰色" style="background-color: #A5A5A5"></li>
+                      <li data-color="#D0D0D0" title="浅灰色" style="background-color: #D0D0D0"></li>
+
+                      <!-- 蓝色系列 -->
+                      <li data-color="#D6E3F3" title="浅蓝色-1" style="background-color: #D6E3F3"></li>
+                      <li data-color="#B4C7E7" title="浅蓝色-2" style="background-color: #B4C7E7"></li>
+                      <li data-color="#8EAADB" title="浅蓝色-3" style="background-color: #8EAADB"></li>
+                      <li data-color="#2E75B6" title="深蓝色-1" style="background-color: #2E75B6"></li>
+                      <li data-color="#1F4E79" title="深蓝色-2" style="background-color: #1F4E79"></li>
+                    </ul>
+                  </div>
+                  <div class="color-section">
+                    <div class="section-title">标准色</div>
+                    <ul>
+                      <li data-color="#FF0000" title="红色" style="background-color: #FF0000"></li>
+                      <li data-color="#FF6600" title="橙色" style="background-color: #FF6600"></li>
+                      <li data-color="#FFFF00" title="黄色" style="background-color: #FFFF00"></li>
+                      <li data-color="#00FF00" title="绿色" style="background-color: #00FF00"></li>
+                      <li data-color="#00FFFF" title="青色" style="background-color: #00FFFF"></li>
+                      <li data-color="#0000FF" title="蓝色" style="background-color: #0000FF"></li>
+                      <li data-color="#FF00FF" title="紫色" style="background-color: #FF00FF"></li>
+                    </ul>
+                  </div>
+                </div>
               </div>
               </div>
               <div class="menu-item__highlight" title="高亮">
               <div class="menu-item__highlight" title="高亮">
                 <i></i>
                 <i></i>
-                <span></span>
-                <input type="color" id="highlight" />
+                <div class="options">
+                  <ul>
+                    <!-- 第一行 -->
+                    <li data-color="transparent" title="无" style="background-color: transparent">✓</li>
+                    <li data-color="#ffff00" title="黄色" style="background-color: #ffff00"></li>
+                    <li data-color="#00ff00" title="绿色" style="background-color: #00ff00"></li>
+                    <li data-color="#00ffff" title="青色" style="background-color: #00ffff"></li>
+                    <li data-color="#ff00ff" title="粉色" style="background-color: #ff00ff"></li>
+                    <li data-color="#0000ff" title="蓝色" style="background-color: #0000ff"></li>
+                    
+                    <!-- 第二行 -->
+                    <li data-color="#800000" title="深红色" style="background-color: #800000"></li>
+                    <li data-color="#ff0000" title="红色" style="background-color: #ff0000"></li>
+                    <li data-color="#808000" title="橄榄色" style="background-color: #808000"></li>
+                    <li data-color="#008000" title="深绿色" style="background-color: #008000"></li>
+                    <li data-color="#008080" title="青灰色" style="background-color: #008080"></li>
+                    <li data-color="#000080" title="深蓝色" style="background-color: #000080"></li>
+                    
+                    <!-- 第三行 -->
+                    <li data-color="#000000" title="黑色" style="background-color: #000000"></li>
+                    <li data-color="#808080" title="深灰色" style="background-color: #808080"></li>
+                    <li data-color="#c0c0c0" title="灰色" style="background-color: #c0c0c0"></li>
+                  </ul>
+                </div>
               </div>
               </div>
             </div>
             </div>
             <div class="menu-divider"></div>
             <div class="menu-divider"></div>
@@ -379,7 +438,7 @@
                 <i title="纸张类型"></i>
                 <i title="纸张类型"></i>
                 <div class="options">
                 <div class="options">
                   <ul>
                   <ul>
-                    <li data-paper-size="1320*1123" class="active">A4</li>
+                    <li data-paper-size="794*1123" class="active">A4</li>
                     <li data-paper-size="1593*2251">A2</li>
                     <li data-paper-size="1593*2251">A2</li>
                     <li data-paper-size="1125*1593">A3</li>
                     <li data-paper-size="1125*1593">A3</li>
                     <li data-paper-size="565*796">A5</li>
                     <li data-paper-size="565*796">A5</li>
@@ -698,26 +757,38 @@ export default {
       instance.command.executeSubscript();
       instance.command.executeSubscript();
     };
     };
 
 
-    const colorControlDom = document.querySelector("#color");
-    colorControlDom.oninput = function () {
-      instance.command.executeColor(colorControlDom.value);
+    const colorDom = document.querySelector('.menu-item__color');
+    const colorOptionDom = colorDom.querySelector('.options');
+    colorDom.onclick = function() {
+      console.log('color');
+      colorOptionDom.classList.toggle('visible');
     };
     };
-    const colorDom = document.querySelector(".menu-item__color");
-    const colorSpanDom = colorDom.querySelector("span");
-    colorDom.onclick = function () {
-      console.log("color");
-      colorControlDom.click();
+    colorOptionDom.onclick = function(evt) {
+      const li = evt.target;
+      const color = li.dataset.color;
+      if (color) {
+        instance.command.executeColor(color);
+      }
     };
     };
 
 
-    const highlightControlDom = document.querySelector("#highlight");
-    highlightControlDom.oninput = function () {
-      instance.command.executeHighlight(highlightControlDom.value);
+    // 高亮功能代码
+    const highlightDom = document.querySelector('.menu-item__highlight');
+    const highlightOptionDom = highlightDom.querySelector('.options');
+    highlightDom.onclick = function() {
+      console.log('highlight');
+      highlightOptionDom.classList.toggle('visible');
     };
     };
-    const highlightDom = document.querySelector(".menu-item__highlight");
-    const highlightSpanDom = highlightDom.querySelector("span");
-    highlightDom.onclick = function () {
-      console.log("highlight");
-      highlightControlDom?.click();
+    highlightOptionDom.onclick = function(evt) {
+      const li = evt.target;
+      const color = li.dataset.color;
+      if (color) {
+        // 如果选择"无",则清除高亮
+        if (color === 'transparent') {
+          instance.command.executeHighlight(null);
+        } else {
+          instance.command.executeHighlight(color);
+        }
+      }
     };
     };
 
 
     const titleDom = document.querySelector(".menu-item__title");
     const titleDom = document.querySelector(".menu-item__title");
@@ -1836,21 +1907,21 @@ export default {
         : strikeoutDom.classList.remove("active");
         : strikeoutDom.classList.remove("active");
       if (payload.color) {
       if (payload.color) {
         colorDom.classList.add("active");
         colorDom.classList.add("active");
-        colorControlDom.value = payload.color;
-        colorSpanDom.style.backgroundColor = payload.color;
+        const colorSpan = colorDom.querySelector('span');
+        if (colorSpan) {
+          colorSpan.style.backgroundColor = payload.color;
+        }
       } else {
       } else {
         colorDom.classList.remove("active");
         colorDom.classList.remove("active");
-        colorControlDom.value = "#000000";
-        colorSpanDom.style.backgroundColor = "#000000";
+        const colorSpan = colorDom.querySelector('span');
+        if (colorSpan) {
+          colorSpan.style.backgroundColor = "#000000";
+        }
       }
       }
       if (payload.highlight) {
       if (payload.highlight) {
         highlightDom.classList.add("active");
         highlightDom.classList.add("active");
-        highlightControlDom.value = payload.highlight;
-        highlightSpanDom.style.backgroundColor = payload.highlight;
       } else {
       } else {
         highlightDom.classList.remove("active");
         highlightDom.classList.remove("active");
-        highlightControlDom.value = "#ffff00";
-        highlightSpanDom.style.backgroundColor = "#ffff00";
       }
       }
 
 
       // 行布局
       // 行布局
@@ -2163,7 +2234,7 @@ export default {
       position: static;
       position: static;
       display: flex;
       display: flex;
       flex-direction: column;
       flex-direction: column;
-      height: 700px;//calc(100% - 90px); /* 减去header和footer的高度 */
+      max-height: 600px;//calc(100% - 90px); /* 减去header和footer的高度 */
       background-color: #f2f4f7;
       background-color: #f2f4f7;
       overflow: auto; /* 仅让Main区域可滚动 */
       overflow: auto; /* 仅让Main区域可滚动 */
       flex-grow: 1; /* 让Main区域占据剩余空间 */
       flex-grow: 1; /* 让Main区域占据剩余空间 */
@@ -2312,7 +2383,7 @@ export default {
     .menu-item .options {
     .menu-item .options {
       width: 70px;
       width: 70px;
       position: absolute;
       position: absolute;
-      left: 0;
+      //left: 0;
       top: 25px;
       top: 25px;
       padding: 10px;
       padding: 10px;
       background: #fff;
       background: #fff;
@@ -3244,6 +3315,110 @@ export default {
     .ce-contextmenu-word-tool {
     .ce-contextmenu-word-tool {
       background-image: url("./assets/images/word-tool.svg");
       background-image: url("./assets/images/word-tool.svg");
     }
     }
+
+    .menu-item__color .options {
+      width: 220px;
+      padding: 8px;
+    }
+
+    .menu-item__color .color-section {
+      margin-bottom: 10px;
+    }
+
+    .menu-item__color .section-title {
+      font-size: 12px;
+      color: #666;
+      margin-bottom: 5px;
+      padding-left: 2px;
+    }
+
+    .menu-item__color .options ul {
+      display: flex;
+      flex-wrap: wrap;
+      gap: 2px;
+    }
+
+    .menu-item__color .options li {
+      width: 18px;
+      height: 18px;
+      border: 1px solid #ddd;
+      cursor: pointer;
+      margin: 0;
+      position: relative;
+    }
+
+    .menu-item__color .options li:hover {
+      border-color: #000;
+    }
+
+    .menu-item__color .options li[data-color="#FFFFFF"] {
+      border: 1px solid #ddd;
+    }
+
+    // 添加悬浮提示样式
+    .menu-item__color .options li:hover::after {
+      content: attr(title);
+      position: absolute;
+      bottom: 100%;
+      left: 50%;
+      transform: translateX(-50%);
+      padding: 4px 8px;
+      background-color: #333;
+      color: white;
+      font-size: 12px;
+      border-radius: 4px;
+      white-space: nowrap;
+      z-index: 1000;
+    }
+
+    .menu-item__highlight .options {
+      width: 180px;
+      padding: 5px;
+    }
+
+    .menu-item__highlight .options ul {
+      display: grid;
+      grid-template-columns: repeat(6, 1fr);
+      gap: 2px;
+    }
+
+    .menu-item__highlight .options li {
+      width: 24px;
+      height: 24px;
+      border: 1px solid #ddd;
+      cursor: pointer;
+      margin: 0;
+      position: relative;
+      display: flex;
+      align-items: center;
+      justify-content: center;
+      color: #666;
+    }
+
+    /* 特殊处理"无"选项 */
+    .menu-item__highlight .options li[data-color="transparent"] {
+      background: white;
+      font-size: 16px;
+    }
+
+    .menu-item__highlight .options li:hover {
+      border-color: #000;
+    }
+
+    .menu-item__highlight .options li:hover::after {
+      content: attr(title);
+      position: absolute;
+      bottom: 100%;
+      left: 50%;
+      transform: translateX(-50%);
+      padding: 4px 8px;
+      background-color: #333;
+      color: white;
+      font-size: 12px;
+      border-radius: 4px;
+      white-space: nowrap;
+      z-index: 1000;
+    }
   }
   }
 }
 }
 </style>
 </style>

+ 1 - 1
src/components/CanvasEditor/option.js

@@ -1,5 +1,5 @@
 const IEditorOption = {
 const IEditorOption = {
-  width: 1320,  // A4 纸张宽度
+  width: 794,  // A4 纸张宽度
   height: 1123,  // A4 纸张高度
   height: 1123,  // A4 纸张高度
     /* mode: undefined,
     /* mode: undefined,
     defaultType: undefined,
     defaultType: undefined,

+ 72 - 32
src/views/dashboard/admin/chart.vue

@@ -42,16 +42,16 @@
                       <div class="card">
                       <div class="card">
                         <div class="card-header">
                         <div class="card-header">
                           <div class="row">
                           <div class="row">
-                            <div class="col">
-                              <h5>C/GPU使用率</h5>
-                            </div>
+                            <!-- <div class="col">
+                              <h5>CPU/GPU使用率</h5>
+                            </div> -->
                             <!--  <div class="col-auto text-end">
                             <!--  <div class="col-auto text-end">
                               <span>This Month</span>
                               <span>This Month</span>
                             </div> -->
                             </div> -->
                           </div>
                           </div>
                         </div>
                         </div>
                         <div class="card-body">
                         <div class="card-body">
-                          <div class="row mb-2">
+                          <div class="row mb-2" style="padding-bottom: 20px;">
                             <div class="col-auto">
                             <div class="col-auto">
                               <h2 class="m-0">
                               <h2 class="m-0">
                                 <strong>{{ cpuValue + "%"
                                 <strong>{{ cpuValue + "%"
@@ -353,7 +353,7 @@
                                       <a class="dropdown-item" href="#">1周</a>
                                       <a class="dropdown-item" href="#">1周</a>
                                       <a class="dropdown-item" href="#">2年</a>
                                       <a class="dropdown-item" href="#">2年</a>
                                       <a class="dropdown-item" href="#"
                                       <a class="dropdown-item" href="#"
-                                        >3个</a
+                                        >3个��</a
                                       >
                                       >
                                     </div>
                                     </div>
                                   </div> -->
                                   </div> -->
@@ -548,7 +548,7 @@
                           </div>
                           </div>
                         </div>
                         </div>
 
 
-                        <!-- 入卡片 -->
+                        <!-- ���入卡片 -->
                         <div class="col-md-4 col-xl-2 col-sm-6">
                         <div class="col-md-4 col-xl-2 col-sm-6">
                           <div class="card">
                           <div class="card">
                             <div class="card-body">
                             <div class="card-body">
@@ -819,20 +819,20 @@ export default {
 
 
     // 初始化支持工单完成率图表
     // 初始化支持工单完成率图表
     initHdComplitedTicket() {
     initHdComplitedTicket() {
-      const chart = am4core.create(
-        this.$refs.hdComplitedTicket,
-        am4charts.GaugeChart
-      );
+      const chart = am4core.create(this.$refs.hdComplitedTicket, am4charts.GaugeChart);
       chart.logo.disabled = true;
       chart.logo.disabled = true;
-      chart.innerRadius = am4core.percent(82);
-
+      
+      // 调整内半径,使圆环更完整
+      chart.innerRadius = am4core.percent(70);
+      
       // 修改主配置
       // 修改主配置
       const axis = chart.xAxes.push(new am4charts.ValueAxis());
       const axis = chart.xAxes.push(new am4charts.ValueAxis());
       axis.min = 0;
       axis.min = 0;
       axis.max = 100;
       axis.max = 100;
       axis.strictMinMax = true;
       axis.strictMinMax = true;
-      // 设置固定的半径
-      axis.renderer.radius = 80; // 使用固定像素值而不是百分比
+      
+      // 调整轴的位置和大小
+      axis.renderer.radius = am4core.percent(100);
       axis.renderer.inside = true;
       axis.renderer.inside = true;
       axis.renderer.line.strokeOpacity = 0;
       axis.renderer.line.strokeOpacity = 0;
       axis.renderer.ticks.template.strokeOpacity = 1;
       axis.renderer.ticks.template.strokeOpacity = 1;
@@ -845,11 +845,12 @@ export default {
       const axis2 = chart.xAxes.push(new am4charts.ValueAxis());
       const axis2 = chart.xAxes.push(new am4charts.ValueAxis());
       axis2.min = 0;
       axis2.min = 0;
       axis2.max = 100;
       axis2.max = 100;
-      // 设置固定的内半径
-      axis2.renderer.innerRadius = 65; // 使用固定像素值
-      axis2.renderer.radius = 80; // 设置固定的外半径
-
       axis2.strictMinMax = true;
       axis2.strictMinMax = true;
+      
+      // 调整第二轴的半径
+      axis2.renderer.innerRadius = am4core.percent(70);
+      axis2.renderer.radius = am4core.percent(100);
+      
       axis2.renderer.labels.template.disabled = true;
       axis2.renderer.labels.template.disabled = true;
       axis2.renderer.ticks.template.disabled = true;
       axis2.renderer.ticks.template.disabled = true;
       axis2.renderer.grid.template.disabled = true;
       axis2.renderer.grid.template.disabled = true;
@@ -867,12 +868,12 @@ export default {
       range1.axisFill.fillOpacity = 1;
       range1.axisFill.fillOpacity = 1;
       range1.axisFill.fill = am4core.color("#eff3f6");
       range1.axisFill.fill = am4core.color("#eff3f6");
 
 
-      // 添加标签
+      // 调整标签位置,让其更靠上
       const label = chart.radarContainer.createChild(am4core.Label);
       const label = chart.radarContainer.createChild(am4core.Label);
       label.isMeasured = false;
       label.isMeasured = false;
       label.fontSize = 18;
       label.fontSize = 18;
       label.x = am4core.percent(50);
       label.x = am4core.percent(50);
-      label.y = am4core.percent(100);
+      label.y = am4core.percent(85); // 调整到85%的位置
       label.horizontalCenter = "middle";
       label.horizontalCenter = "middle";
       label.verticalCenter = "bottom";
       label.verticalCenter = "bottom";
       label.text = "50%";
       label.text = "50%";
@@ -881,10 +882,10 @@ export default {
       label2.isMeasured = false;
       label2.isMeasured = false;
       label2.fontSize = 12;
       label2.fontSize = 12;
       label2.x = am4core.percent(50);
       label2.x = am4core.percent(50);
-      label2.y = am4core.percent(100);
+      label2.y = am4core.percent(85); // 调整到85%的位置
       label2.horizontalCenter = "middle";
       label2.horizontalCenter = "middle";
       label2.verticalCenter = "top";
       label2.verticalCenter = "top";
-      label2.text = "Complited Ticket";
+      label2.text = "Memory Usage";
 
 
       // 配置指针
       // 配置指针
       const hand = chart.hands.push(new am4charts.ClockHand());
       const hand = chart.hands.push(new am4charts.ClockHand());
@@ -895,18 +896,25 @@ export default {
       hand.value = 50;
       hand.value = 50;
       hand.disabled = true;
       hand.disabled = true;
 
 
-      // 更新事件处理
       hand.events.on("propertychanged", (ev) => {
       hand.events.on("propertychanged", (ev) => {
         range0.endValue = ev.target.value;
         range0.endValue = ev.target.value;
         range1.value = ev.target.value;
         range1.value = ev.target.value;
         axis2.invalidate();
         axis2.invalidate();
       });
       });
-      // 设置图表容器的固定大小
-      //chart.width = 160; // 设置固定宽度
+
+      // 设置图表容器的固定大小和位置
+      chart.width = am4core.percent(100);
+      chart.height = 100; // 固定高度为100px
+      chart.margin(0, 0, 0, 0);
+      chart.padding(0, 0, 0, 0);
+
+      // 调整图表位置,向上偏移以显示完整
+      chart.seriesContainer.dy = -15; // 向上偏移15px
+      chart.radius = am4core.percent(90); // 调整整体大小为90%
 
 
       // 定时更新数据
       // 定时更新数据
       const interval = setInterval(() => {
       const interval = setInterval(() => {
-        const value = this.currentPercentage.percent; // Math.round(Math.random() * 100);
+        const value = this.currentPercentage.percent;
         label.text = value + "%";
         label.text = value + "%";
         new am4core.Animation(
         new am4core.Animation(
           hand,
           hand,
@@ -919,9 +927,7 @@ export default {
         ).start();
         ).start();
       }, 2000);
       }, 2000);
 
 
-      chart.padding(0, 0, 0, 0);
-
-      // 保存表实例和定时器
+      // 保存图表实例和定时器
       this.charts.hdComplitedTicket = {
       this.charts.hdComplitedTicket = {
         chart: chart,
         chart: chart,
         interval: interval,
         interval: interval,
@@ -1167,6 +1173,43 @@ export default {
         dateAxis.zoom({ start: 1 / 15, end: 1.2 }, false, true);
         dateAxis.zoom({ start: 1 / 15, end: 1.2 }, false, true);
       });
       });
 
 
+      // 添加图例
+      const legend = chart.createChild(am4charts.Legend);
+      legend.data = [{
+        name: "CPU使用率",
+        fill: am4core.color("#FF425C")
+      }, {
+        name: "GPU使用率", 
+        fill: am4core.color("#19BCBF")
+      }];
+      
+      // 配置图例位置和样式
+      legend.position = "absolute";
+      legend.align = "right";
+      legend.valign = "top";
+      legend.dx = 0; // 向左偏移10px
+      legend.dy =-230;  // 向下偏移10px
+      legend.fontSize = 12;
+      legend.width = 230; // 调整宽度以适应文字
+
+      // 使图例水平排列
+      legend.layout = "horizontal";
+      legend.useDefaultMarker = true;
+
+      // 配置图例标记样式
+      legend.markers.template.width = 12;
+      legend.markers.template.height = 12;
+      legend.markers.template.marginRight = 5;
+
+      // 配置图例项的间距
+      legend.itemContainers.template.paddingTop = 0;
+      legend.itemContainers.template.paddingBottom = 0;
+      legend.itemContainers.template.marginLeft = 5;
+      
+      // 移除图例背景
+      legend.background.fill = am4core.color("#fff");
+      legend.background.fillOpacity = 0;
+
       // 存储图表实例
       // 存储图表实例
       this.charts.siteVisitorChart = chart;
       this.charts.siteVisitorChart = chart;
 
 
@@ -1379,9 +1422,6 @@ export default {
           this.updateChartPercentData(this.kenList[0]);
           this.updateChartPercentData(this.kenList[0]);
         }
         }
       });
       });
-      GET_Rbq().then((res) => {
-        console.log(res);
-      });
       /* 获取文档数量 */
       /* 获取文档数量 */
       searchlistDoc({ page: 1, pageSize: 9999 }).then((res) => {
       searchlistDoc({ page: 1, pageSize: 9999 }).then((res) => {
         this.docTotal = res.data.dataList.length;
         this.docTotal = res.data.dataList.length;

+ 20 - 3
src/views/document/com/components/Attribute/docAttr/index.vue

@@ -10,7 +10,16 @@
           :disabled="articleId"
           :disabled="articleId"
         />
         />
       </el-form-item>
       </el-form-item>
-
+      <el-form-item label="选择分类:">
+        <el-select v-model="attrs.document_type" style="width:100%;" placeholder="请选择所属分类">
+          <el-option
+                v-for="(item,index) in articleCategoryList"
+                :key="index"
+                :label="item.label"
+                :value="item.value"
+              />
+        </el-select>
+      </el-form-item>
       <!--<el-form-item label="选择分类:">
       <!--<el-form-item label="选择分类:">
         <el-select v-model="attrs.category_id" style="width:100%;" placeholder="请选择所属分类">
         <el-select v-model="attrs.category_id" style="width:100%;" placeholder="请选择所属分类">
           <el-option
           <el-option
@@ -59,6 +68,7 @@ export default {
         return {
         return {
           category_id: "",
           category_id: "",
           title: "",
           title: "",
+          document_type:"",
           linkProduct: [],
           linkProduct: [],
           linkProject: [],
           linkProject: [],
         };
         };
@@ -74,7 +84,14 @@ export default {
   },
   },
   data() {
   data() {
     return {
     return {
-      articleCategoryList: [],
+      articleCategoryList: [{
+        label:'临床',
+        value:'Clinical'
+      },
+    {
+       label:'非临床',
+        value:'NonClinical'
+    }],
       productList: [],
       productList: [],
       projectList: [],
       projectList: [],
       articleId:0
       articleId:0
@@ -114,7 +131,7 @@ export default {
       searchDocumentCategory({ page: 1, pageSize: 99, status: 5 }).then(
       searchDocumentCategory({ page: 1, pageSize: 99, status: 5 }).then(
         (res) => {
         (res) => {
           if (res.status != 200) return;
           if (res.status != 200) return;
-          _this.articleCategoryList = res.data.dataList;
+          //_this.articleCategoryList = res.data.dataList;
         }
         }
       );
       );
     },
     },

+ 6 - 4
src/views/document/create.vue

@@ -747,6 +747,7 @@ export default {
         linkProduct: [],
         linkProduct: [],
         linkProject: [],
         linkProject: [],
         projects: "",
         projects: "",
+        document_type: "",
       },
       },
       insertCmd: null,
       insertCmd: null,
       showViewForm: false,
       showViewForm: false,
@@ -1473,6 +1474,7 @@ export default {
           links: res.data.links || "",
           links: res.data.links || "",
           linkProject: res.data.linkProject || [],
           linkProject: res.data.linkProject || [],
           projects: res.data.projects || "",
           projects: res.data.projects || "",
+          document_type: res.data.document_type || "",
         };
         };
 
 
         // 解析文档数据
         // 解析文档数据
@@ -1699,10 +1701,10 @@ export default {
         _this.$alert("增加组件");
         _this.$alert("增加组件");
         return;
         return;
       }
       }
-      /* if (_this.docAttr.category_id == "" || _this.docAttr.category_id <= 0) {
+      if (_this.docAttr.document_type == "") {
         _this.$alert("请选择分类");
         _this.$alert("请选择分类");
         return;
         return;
-      } */
+      }
       if (_this.docAttr.title == "") {
       if (_this.docAttr.title == "") {
         _this.$alert("请填写模版标题");
         _this.$alert("请填写模版标题");
         return;
         return;
@@ -1728,10 +1730,10 @@ export default {
         _this.$alert("增加组件");
         _this.$alert("增加组件");
         return;
         return;
       }
       }
-      /* if (_this.docAttr.category_id == "" || _this.docAttr.category_id <= 0) {
+      if (_this.docAttr.document_type == "") {
         _this.$alert("请选择分类");
         _this.$alert("请选择分类");
         return;
         return;
-      } */
+      }
       if (_this.docAttr.title == "") {
       if (_this.docAttr.title == "") {
         _this.$alert("请填写模版标题");
         _this.$alert("请填写模版标题");
         return;
         return;

+ 2 - 1
src/views/project/ProjectInput.vue

@@ -254,7 +254,8 @@
         title="编辑内容"
         title="编辑内容"
         :visible.sync="contentDialogVisible"
         :visible.sync="contentDialogVisible"
         :close-on-click-modal="false"
         :close-on-click-modal="false"
-        width="80%"
+        width="70%"
+        top="10px"
       >
       >
         <!--  <el-form :model="contentForm" ref="contentForm">
         <!--  <el-form :model="contentForm" ref="contentForm">
           <el-form-item label="内容" prop="content"> -->
           <el-form-item label="内容" prop="content"> -->

+ 98 - 15
src/views/project/components/dataList.vue

@@ -146,16 +146,59 @@
       :close-on-click-modal="false"
       :close-on-click-modal="false"
       top="5%"
       top="5%"
     >
     >
-    <div class="header_t">
-      <el-button type="primary" @click="confirmTemplateSelection">确 定</el-button>
-      <el-button @click="closeTemplateDialog">取 消</el-button>
+    <div class="dialog-header" style="margin-bottom: 20px;">
+      <!-- 左侧按钮 -->
+      <div class="header-left">
+        <el-button type="primary" @click="confirmTemplateSelection">确 定</el-button>
+        <el-button @click="closeTemplateDialog">取 消</el-button>
+      </div>
+      
+      <!-- 右侧选择框 -->
+      <div class="header-right">
+        <el-select 
+          v-model="templateQueryForm.document_type"
+          placeholder="请选择模板类型"
+          @change="handleDocTypeChange"
+          style="width: 200px;"
+        >
+          <el-option
+            v-for="item in documentTypes"
+            :key="item.value"
+            :label="item.label"
+            :value="item.value"
+          />
+        </el-select>
+      </div>
     </div>
     </div>
+      <!-- 添加文档类型筛选 -->
+      <!-- <div class="filter-section" style="margin-bottom: 20px;">
+        <el-select 
+          v-model="templateQueryForm.document_type"
+          placeholder="请选择文档类型"
+          @change="handleDocTypeChange"
+          style="width: 200px;"
+        >
+          <el-option
+            v-for="item in documentTypes"
+            :key="item.value"
+            :label="item.label"
+            :value="item.value"
+          />
+        </el-select>
+      </div> -->
+
+      
       <el-table
       <el-table
         ref="templateTable"
         ref="templateTable"
         :data="templateList"
         :data="templateList"
         @selection-change="handleSelectionChange"
         @selection-change="handleSelectionChange"
         @select="handleSelect"
         @select="handleSelect"
-        :max-height="600">
+        :max-height="600"
+        v-loading="templateLoading"
+        element-loading-text="加载中..."
+        element-loading-spinner="el-icon-loading"
+        element-loading-background="rgba(255, 255, 255, 0.8)"
+      >
         <el-table-column
         <el-table-column
           type="selection"
           type="selection"
           width="55">
           width="55">
@@ -332,6 +375,7 @@ export default {
       templateQueryForm: {
       templateQueryForm: {
         page: 1,
         page: 1,
         pageSize: 10, // 默认每页显示10条
         pageSize: 10, // 默认每页显示10条
+        document_type: '', // 添加文档类型字段
       },
       },
       pageSizes: [10, 20, 50, 100], // 每页显示条数选项
       pageSizes: [10, 20, 50, 100], // 每页显示条数选项
       templateTotal: 0, // 模版总数
       templateTotal: 0, // 模版总数
@@ -368,6 +412,13 @@ export default {
       selectedPageIds: new Map(), // 存储每页的选择状态
       selectedPageIds: new Map(), // 存储每页的选择状态
       isAllSelected: false, // 是否全选
       isAllSelected: false, // 是否全选
       selectionCache: new Map(), // 添加选择缓存
       selectionCache: new Map(), // 添加选择缓存
+      
+      // 添加文档类型选项
+      documentTypes: [
+        { label: '全部', value: '' },
+        { label: '临床', value: 'Clinical' },
+        { label: '非临床', value: 'NonClinical' }
+      ],
     };
     };
   },
   },
   mounted() {
   mounted() {
@@ -376,7 +427,7 @@ export default {
   },
   },
   methods: {
   methods: {
     /* 使用html-docx-js方法替换 */
     /* 使用html-docx-js方法替换 */
-    // 预处理内容,处理分页和表格
+    // 预处理内容,处理分页��和表格
     preprocessContent(content) {
     preprocessContent(content) {
       const tempDiv = document.createElement("div");
       const tempDiv = document.createElement("div");
       tempDiv.innerHTML = content;
       tempDiv.innerHTML = content;
@@ -855,7 +906,7 @@ export default {
       );
       );
     },
     },
 
 
-    // 添加内容处方法
+    // 添加内容处��方法
     processContentForWord(content) {
     processContentForWord(content) {
       const tempDiv = document.createElement("div");
       const tempDiv = document.createElement("div");
       tempDiv.innerHTML = content;
       tempDiv.innerHTML = content;
@@ -934,7 +985,7 @@ export default {
     // 生成表格样式
     // 生成表格样式
     generateTableStyles() {
     generateTableStyles() {
       return `
       return `
-        /* 原有表��样式保持不变 */
+        /* 原有表样式保持不变 */
         .table-with-border {
         .table-with-border {
           /* ... */
           /* ... */
         }
         }
@@ -1065,7 +1116,7 @@ export default {
       if (table.style.border || table.classList.contains("bordered"))
       if (table.style.border || table.classList.contains("bordered"))
         return true;
         return true;
 
 
-      // 检查第一个单格是否有边框
+      // 检查第一个单���格是否有边框
       const firstCell = table.querySelector("td, th");
       const firstCell = table.querySelector("td, th");
       if (firstCell && firstCell.style.border) return true;
       if (firstCell && firstCell.style.border) return true;
 
 
@@ -1434,7 +1485,7 @@ export default {
           // 清理URL对象
           // 清理URL对象
           URL.revokeObjectURL(link.href);
           URL.revokeObjectURL(link.href);
 
 
-          this.$message.success("转换��功");
+          this.$message.success("转换功");
         } else {
         } else {
           throw new Error(res.data.message || "转换失败");
           throw new Error(res.data.message || "转换失败");
         }
         }
@@ -1837,7 +1888,7 @@ export default {
               const fullMatch = match[0];
               const fullMatch = match[0];
               const segments = [match[1], match[2], match[3], match[4]];
               const segments = [match[1], match[2], match[3], match[4]];
 
 
-              // 验证个段落的格式
+              // 验证��个段落的格式
               const isValid = segments.every((segment) => segment.length > 0);
               const isValid = segments.every((segment) => segment.length > 0);
 
 
               if (isValid) {
               if (isValid) {
@@ -2400,20 +2451,20 @@ export default {
     async loadTemplateList() {
     async loadTemplateList() {
       this.templateLoading = true;
       this.templateLoading = true;
       try {
       try {
-        const res = await searchList(this.templateQueryForm);
+        const res = await searchList({
+          ...this.templateQueryForm,
+          document_type: this.templateQueryForm.document_type || undefined // 只在有值时传递
+        });
+        
         if (res.status === 200) {
         if (res.status === 200) {
           this.templateList = res.data.dataList;
           this.templateList = res.data.dataList;
           this.templateTotal = res.data.totalRecord;
           this.templateTotal = res.data.totalRecord;
           this.templateDialogVisible = true;
           this.templateDialogVisible = true;
 
 
-          // 等待 DOM 更新
           await this.$nextTick();
           await this.$nextTick();
           
           
           if (this.$refs.templateTable) {
           if (this.$refs.templateTable) {
-            // 清除当前选择
             this.$refs.templateTable.clearSelection();
             this.$refs.templateTable.clearSelection();
-            
-            // 恢复选中状态
             this.restoreSelectionState();
             this.restoreSelectionState();
           }
           }
         }
         }
@@ -3240,6 +3291,13 @@ export default {
       // 重新加载数据
       // 重新加载数据
       this.loadTemplateList();
       this.loadTemplateList();
     },
     },
+    
+    // 处理文档类型变化
+    handleDocTypeChange(value) {
+      this.templateQueryForm.document_type = value;
+      this.templateQueryForm.page = 1; // 重置页码
+      this.loadTemplateList(); // 重新加载列表
+    },
   },
   },
 };
 };
 </script>
 </script>
@@ -3311,4 +3369,29 @@ export default {
   padding: 10px 0;
   padding: 10px 0;
   text-align: right;
   text-align: right;
 }
 }
+
+.filter-section {
+  display: flex;
+  align-items: center;
+  gap: 10px;
+  padding: 0 20px;
+}
+
+/* 添加到已有的 style 标签中 */
+.dialog-header {
+  display: flex;
+  justify-content: space-between;
+  align-items: center;
+  padding: 0 20px;
+}
+
+.header-left {
+  display: flex;
+  gap: 10px;
+}
+
+.header-right {
+  display: flex;
+  align-items: center;
+}
 </style>
 </style>

Bu fark içinde çok fazla dosya değişikliği olduğu için bazı dosyalar gösterilmiyor