From dc3fb06f6d3253ddebf35fec2d805b1750086b01 Mon Sep 17 00:00:00 2001
From: zhangxiao <898441624@qq.com>
Date: 星期三, 14 八月 2024 17:31:51 +0800
Subject: [PATCH] fix: 上传组件新增删除功能,模型管理页面修改

---
 src/views/dmx/model/index.vue |  286 +++++++++++++++++++++++++++-----------------------------
 1 files changed, 139 insertions(+), 147 deletions(-)

diff --git a/src/views/dmx/model/index.vue b/src/views/dmx/model/index.vue
index 0d2955a..465a8be 100644
--- a/src/views/dmx/model/index.vue
+++ b/src/views/dmx/model/index.vue
@@ -27,96 +27,103 @@
                   :title="index"
                   :closable="Object.keys(tabData).length >= 4"
                 >
-                  <div
-                    style="display: flex; flex-wrap: wrap"
-                    class="card_content"
+                  <a-scrollbar
+                    style="height: calc(100vh - 320px); overflow: auto"
                   >
-                    <div class="card-wrap">
-                      <div class="card_wrap_box">
-                        <div class="card_wrap_box_img">
-                          <img
-                            :style="{
-                              width: '100%',
-                            }"
-                            alt="鏆傛棤鍥剧墖"
-                            :src="item.logo"
-                          />
-                        </div>
-                        <a-card :bordered="false" hoverable>
-                          <div class="arco-card-body-content">
-                            <div
-                              class="arco-card-body-content-title"
-                              style="word-wrap: break-word"
-                            >
-                              {{ item.tags }}
-                            </div>
-                            <!-- <div class="arco-card-body-content-dec">{{
+                    <div
+                      style="display: flex; flex-wrap: wrap"
+                      class="card_content"
+                    >
+                      <div class="card-wrap">
+                        <div class="card_wrap_box">
+                          <div class="card_wrap_box_img">
+                            <img
+                              :style="{
+                                width: '100%',
+                              }"
+                              alt="鏆傛棤鍥剧墖"
+                              :src="item.logo ? httpUrl + item.logo : pdfImg"
+                            />
+                          </div>
+                          <a-card :bordered="false" hoverable>
+                            <div class="arco-card-body-content">
+                              <div
+                                class="arco-card-body-content-title"
+                                style="word-wrap: break-word"
+                              >
+                                {{ item.tags }}
+                              </div>
+                              <!-- <div class="arco-card-body-content-dec">{{
                             list.type
                           }}</div> -->
-                          </div>
-                        </a-card>
-                        <div class="arco-btn-group">
-                          <a-space class="btn-group">
-                            <!-- <editModel></editModel> -->
-                            <a-button
-                              type="primary"
-                              @click="handleEditModel(item, 1)"
-                            >
-                              缂栬緫
-                            </a-button>
-                          </a-space>
-                        </div>
-                      </div>
-                    </div>
-                    <div
-                      class="card-wrap"
-                      v-for="(list, index) of item.llm"
-                      :key="index"
-                    >
-                      <div class="card_wrap_box">
-                        <div class="card_wrap_box_img">
-                          <img
-                            :style="{
-                              width: '100%',
-                            }"
-                            alt="鏆傛棤鍥剧墖"
-                            :src="list.logo"
-                          />
-                          <!--   src="https://p1-arco.byteimg.com/tos-cn-i-uwbnlip3yd/a20012a2d4d5b9db43dfc6a01fe508c0.png~tplv-uwbnlip3yd-webp.webp" -->
-                        </div>
-                        <a-card :bordered="false" hoverable>
-                          <div class="arco-card-body-content">
-                            <div class="arco-card-body-content-title">
-                              {{ list.name }}
                             </div>
-                            <div class="arco-card-body-content-dec">{{
-                              list.type
-                            }}</div>
+                          </a-card>
+                          <div class="arco-btn-group">
+                            <a-space class="btn-group">
+                              <!-- <editModel></editModel> -->
+                              <a-button @click="handleDeleteModel(item, 1)">
+                                鍒犻櫎
+                              </a-button>
+                              <a-button
+                                type="primary"
+                                @click="handleEditModel(item, 1)"
+                              >
+                                缂栬緫
+                              </a-button>
+                            </a-space>
                           </div>
-                        </a-card>
-                        <div class="arco-btn-group">
-                          <a-space class="btn-group">
-                            <a-button @click="handleDeleteModel(list)">
-                              鍒犻櫎
-                            </a-button>
-                            <a-button
-                              type="primary"
-                              @click="handleEditModel(list)"
-                            >
-                              缂栬緫
-                            </a-button>
+                        </div>
+                      </div>
+                      <div
+                        class="card-wrap"
+                        v-for="(list, index) of item.llm"
+                        :key="index"
+                      >
+                        <div class="card_wrap_box">
+                          <div class="card_wrap_box_img">
+                            <img
+                              :style="{
+                                width: '100%',
+                              }"
+                              alt="鏆傛棤鍥剧墖"
+                              :src="list.logo ? httpUrl + list.logo : pdfImg"
+                            />
+                            <!--   src="https://p1-arco.byteimg.com/tos-cn-i-uwbnlip3yd/a20012a2d4d5b9db43dfc6a01fe508c0.png~tplv-uwbnlip3yd-webp.webp" -->
+                          </div>
+                          <a-card :bordered="false" hoverable>
+                            <div class="arco-card-body-content">
+                              <div class="arco-card-body-content-title">
+                                {{ list.name }}
+                              </div>
+                              <div class="arco-card-body-content-dec">{{
+                                list.type
+                              }}</div>
+                            </div>
+                          </a-card>
+                          <div class="arco-btn-group">
+                            <a-space class="btn-group">
+                              <a-button @click="handleDeleteModel(list)">
+                                鍒犻櫎
+                              </a-button>
+                              <a-button
+                                type="primary"
+                                @click="handleEditModel(list)"
+                              >
+                                缂栬緫
+                              </a-button>
 
-                            <!-- <editModel></editModel> -->
-                          </a-space>
+                              <!-- <editModel></editModel> -->
+                            </a-space>
+                          </div>
                         </div>
                       </div>
                     </div>
-                  </div>
+                  </a-scrollbar>
                 </a-tab-pane>
               </a-tabs>
             </a-col>
             <div> </div>
-            <div class="box_right">
+            <div class="box_right" v-if="Object.keys(tabData).length > 0">
               <!-- <div class="search_input">
                 <a-input-search
                   :placeholder="$t('cardList.searchInput.placeholder')"
@@ -124,12 +131,7 @@
                 />
               </div> -->
               <div>
-                <!-- <addModel></addModel> -->
-                <a-button
-                  type="primary"
-                  :loading="loading2"
-                  @click="handleAddModel"
-                >
+                <a-button type="primary" @click="handleAddModel">
                   <template #icon>
                     <icon-plus />
                   </template>
@@ -174,7 +176,11 @@
     deleteLlmFactory,
   } from '@/api/model';
   import { Modal, Message } from '@arco-design/web-vue';
+  import { userModelState } from '@/store';
 
+  import pdfImg from '@/assets/images/icon-chart.png';
+
+  const modelStore = userModelState();
   let count = 5;
   const activeKey = ref(1);
   const data = ref([
@@ -198,18 +204,19 @@
     key: {
       tags: '娣诲姞key',
       id: 1,
+      live: 1,
     },
   });
 
   const isDeleteDialogVisible = ref(false); //鍒犻櫎鎻愰啋
-  const apiUrl = ref('http://127.0.0.1:5173');
-  // const httpUrl = import.meta.env.VITE_API_BASE_URL;
-  // console.log(apiUrl.value, 777);
+
   const modalList = ref({});
   const tabKey = ref('key');
   const changeTabs = (val) => {
     tabKey.value = val;
   };
+
+  const httpUrl = modelStore.hrefUrl;
   const show = ref(false);
   const tabShow = ref(false);
   const title = ref('娣诲姞妯″紡');
@@ -220,7 +227,7 @@
     title.value = '娣诲姞妯″瀷';
     editList.value.llm_factory = tabKey.value;
   };
-  const editList = ref({ llm_factory: '' });
+  const editList = ref<any>({ llm_factory: '' });
   //澧炲姞妯″瀷瀛愮被
   const handleAddModel = () => {
     modelType.value = 2;
@@ -248,27 +255,31 @@
   };
 
   //鍒犻櫎妯″瀷
-  const handleDeleteModel = (val) => {
-    Modal.confirm({
-      title: '璀﹀憡',
-      content: '纭鍒犻櫎鍚�',
-      okText: '纭畾',
-      cancelText: '鍙栨秷',
-      onOk: async () => {
-        const factory = tabKey.value;
-        const res = await deleteLlm({
-          llm_factory: tabKey.value,
-          llm_name: val.name,
-        });
+  const handleDeleteModel = (val, type) => {
+    if (type == 1) {
+      handleDelete(val);
+    } else {
+      Modal.confirm({
+        title: '璀﹀憡',
+        content: '纭鍒犻櫎鍚�',
+        okText: '纭畾',
+        cancelText: '鍙栨秷',
+        onOk: async () => {
+          const factory = tabKey.value;
+          const res = await deleteLlm({
+            llm_factory: tabKey.value,
+            llm_name: val.name,
+          });
 
-        if ((res as any).code == 0) {
-          queryModel();
-          tabKey.value = factory;
-        } else {
-        }
-      },
-      onCancel: () => {},
-    });
+          if ((res as any).code == 0) {
+            queryModel();
+            tabKey.value = factory;
+          } else {
+          }
+        },
+        onCancel: () => {},
+      });
+    }
   };
 
   //鐖剁骇妯″瀷
@@ -280,7 +291,7 @@
     }
     if (key !== 'key') {
       const res = await deleteLlmFactory(key);
-      if (res.code == 200) {
+      if ((res as any).code == 200) {
         Reflect.deleteProperty(tabData.value, key);
         queryModel();
       }
@@ -288,7 +299,7 @@
   };
 
   const visible = ref(false);
-  const formRef = ref(null);
+  const formRef = ref();
 
   const form = reactive({
     size: 'medium',
@@ -313,16 +324,6 @@
     });
     return false;
   };
-  // const handleCancel = () => {
-  //   formRef.value.resetFields();
-  //   visible.value = false;
-  // };
-  // const handleSubmit = ({ values, errors }) => {
-  //   this.$refs.formRef.validate().then((res, a, b) => {
-  //     debugger;
-  //     console.log('values', values);
-  //   });
-  // };
 
   //鑾峰彇妯″瀷鍒楄〃
   const loading = ref(false);
@@ -333,6 +334,15 @@
     tabData.value = Object.assign({}, tabData.value, res.data);
   };
   queryModel();
+  //杩斿洖婊¤冻鏉′欢鐨勫璞�
+  const filterObject = (obj, threshold) => {
+    return Object.keys(obj)
+      .filter((key) => obj[key] > threshold)
+      .reduce((result, key) => {
+        result[key] = obj[key];
+        return result;
+      }, {});
+  };
 
   const refreshParentMethod = () => {
     queryModel();
@@ -357,6 +367,7 @@
       font-size: 14px;
     }
   }
+
   :deep(.arco-list-col) {
     display: flex;
     flex-direction: row;
@@ -420,6 +431,9 @@
       // border-radius: 0;
       // background-color: #eee;
     }
+    :deep(.arco-tabs-tab-close-btn) {
+      display: none;
+    }
     :deep(.arco-tabs-tab-close-btn .arco-icon) {
       color: #666;
     }
@@ -443,10 +457,13 @@
   }
   .card_content {
     .card_wrap_box_img {
-      min-height: 200px;
+      // min-height: 200px;
       height: 200px;
+      width: 100%;
       img {
-        max-height: 190px;
+        width: 100%; /* 鎴栬�呭叾浠栧浐瀹氬搴� */
+        height: 100%; /* 鎴栬�呭叾浠栧浐瀹氶珮搴� */
+        object-fit: cover; /* 涓嶄細鍙樺舰锛屼絾鍙兘瑁佸壀鍥剧墖 */
       }
     }
     .card_wrap_box {
@@ -462,32 +479,7 @@
   .card-wrap {
     width: 320px;
     height: 350px;
-    margin: 30px;
-    transition: all 0.3s;
-    border: 1px solid var(--color-neutral-3);
-    border-radius: 4px;
-    &:hover {
-      transform: translateY(-4px);
-      // box-shadow: 4px 4px 10px rgba(0, 0, 0, 0.1);
-    }
-  }
-  .card-wrap {
-    width: 320px;
-    height: 350px;
-    margin: 30px;
-    transition: all 0.3s;
-    border: 1px solid var(--color-neutral-3);
-    border-radius: 4px;
-    position: relative;
-    &:hover {
-      transform: translateY(-4px);
-      // box-shadow: 4px 4px 10px rgba(0, 0, 0, 0.1);
-    }
-  }
-  .card-wrap {
-    width: 320px;
-    height: 350px;
-    margin: 30px;
+    margin: 20px 30px;
     transition: all 0.3s;
     border: 1px solid var(--color-neutral-3);
     border-radius: 4px;

--
Gitblit v1.8.0