zhangxiao
2024-08-17 c874f0b7f1fa41bfd6cd782cb92dc91632494c02
src/views/dmx/model/index.vue
@@ -12,14 +12,14 @@
          <a-row justify="space-between">
            <a-col :span="24" class="table_add_clore" v-if="loading">
              <a-tabs
                :default-active-key="tabKey"
                type="line"
                :default-active-key="tabKey"
                v-model:activeKey="tabKey"
                :editable="true"
                @tab-click="changeTabs"
                @add="handleAdd"
                @delete="handleDelete"
                show-add-button
                auto-switch
              >
                <a-tab-pane
                  v-for="(item, index) in tabData"
@@ -31,52 +31,71 @@
                    style="height: calc(100vh - 320px); overflow: auto"
                  >
                    <div class="card_content">
                      <div class="card-wrap content_top">
                      <div class="content_top">
                        <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 class="wrap_box_add">
                            <a-button
                              type="primary"
                              @click="handleAddModel"
                              :disabled="addBtn"
                            >
                              <template #icon>
                                <icon-plus />
                              </template>
                              添加
                            </a-button>
                          </div> -->
                          <div class="box_user_content">
                            <div class="box_usr_img">
                              <div class="card_wrap_box_img">
                                <img
                                  alt="暂无图片"
                                  :src="
                                    item.logo ? httpUrl + item.logo : pdfImg
                                  "
                                />
                              </div>
                              <!-- <div class="arco-card-body-content-dec">{{
                            list.type
                          }}</div> -->
                            </div>
                          </a-card>
                          <div class="arco-btn-group">
                            <a-space class="btn-group">
                              <div class="create_time">
                                创建时间:
                                <span> {{ item.create_date }} </span>
                              </div>
                              <div class="arco-content-title">
                                <div class="title_name"> {{ item.tags }}</div>
                              <!-- <editModel></editModel> -->
                              <a-button @click="handleDeleteModel(item, 1)">
                                删除
                              </a-button>
                              <a-button
                                type="primary"
                                @click="handleEditModel(item, 1)"
                              >
                                编辑
                              </a-button>
                            </a-space>
                                <div class="create_time">
                                  创建时间:
                                  <span> {{ item.create_date }} </span>
                                </div>
                              </div>
                            </div>
                            <div class="box_user_btn">
                              <a-space class="btn-group">
                                <!-- <editModel></editModel> -->
                                <a-button
                                  type="primary"
                                  @click="handleAddModel"
                                  :disabled="addBtn"
                                >
                                  <template #icon>
                                    <icon-plus />
                                  </template>
                                  添加
                                </a-button>
                                <a-button
                                  type="outline"
                                  @click="handleEditModel(item, 1)"
                                >
                                  编辑
                                </a-button>
                                <a-button
                                  @click="handleDeleteModel(item, 1)"
                                  class="btn_delete"
                                >
                                  删除
                                </a-button>
                              </a-space>
                            </div>
                          </div>
                        </div>
                      </div>
                      <div class="subset_list">
                      <div v-if="item.llm?.length > 0" class="no_data"></div>
                      <div class="subset_list" v-if="item.llm?.length > 0">
                        <div
                          class="card-wrap"
                          v-for="(list, index) of item.llm"
@@ -130,13 +149,7 @@
              </a-tabs>
            </a-col>
            <div> </div>
            <div class="box_right" v-if="Object.keys(tabData).length > 0">
              <!-- <div class="search_input">
                <a-input-search
                  :placeholder="$t('cardList.searchInput.placeholder')"
                  style="width: 240px"
                />
              </div> -->
            <!-- <div class="box_right" v-if="Object.keys(tabData).length > 0">
              <div>
                <a-button
                  type="primary"
@@ -149,7 +162,7 @@
                  添加
                </a-button>
              </div>
            </div>
            </div> -->
          </a-row>
        </a-card>
      </a-col>
@@ -224,7 +237,7 @@
  const isDeleteDialogVisible = ref(false); //删除提醒
  const modalList = ref({});
  const tabKey = ref('key');
  const tabKey = ref('');
  const changeTabs = async (val) => {
    tabKey.value = val;
    await getFactory();
@@ -285,8 +298,7 @@
          });
          if ((res as any).code == 0) {
            queryModel();
            tabKey.value = factory;
            await queryModel('');
          } else {
          }
        },
@@ -305,7 +317,9 @@
    const res = await deleteLlmFactory(tabKey.value);
    if ((res as any).code == 200) {
      // Reflect.deleteProperty(tabData.value, tabKey.value);
      queryModel();
      await queryModel(null);
      Message.success('删除成功');
    }
  };
@@ -318,51 +332,62 @@
    name: '',
  });
  const handleOk = () => {
    count += 1;
    formRef.value?.validate().then((res) => {
      if (res) {
        return;
      }
      data.value = data.value.concat({
        key: count,
        title: `${form.name}`,
        content: ``,
      });
      visible.value = false;
      activeKey.value = count;
    });
    nextTick(() => {
      visible.value = true;
    });
    return false;
    // count += 1;
    // formRef.value?.validate().then((res) => {
    //   if (res) {
    //     return;
    //   }
    //   data.value = data.value.concat({
    //     key: count,
    //     title: `${form.name}`,
    //     content: ``,
    //   });
    //   visible.value = false;
    //   activeKey.value = count;
    // });
    // nextTick(() => {
    //   visible.value = true;
    // });
    // return false;
  };
  //获取模型列表
  const loading = ref(false);
  const queryModel = async () => {
  const queryModel = async (name) => {
    const res = await modelmyLlms();
    modalList.value = res.data;
    loading.value = true;
    // tabData.value = Object.assign({}, tabData.value, res.data);
    tabData.value = filterObject(res.data, 1);
    tabKey.value = Object.keys(tabData.value)[0];
    await filterObject(res.data, 1, name);
    await getFactory();
  };
  queryModel();
  queryModel(null);
  //返回满足条件的对象
  const filterObject = (obj, threshold) => {
    return Object.keys(obj)
  const filterObject = (obj, threshold, name) => {
    tabData.value = '';
    tabKey.value = '';
    const objs = Object.keys(obj)
      .filter((key) => obj[key].added == 1)
      .reduce((result, key) => {
        result[key] = obj[key];
        return result;
      }, {});
    tabData.value = objs;
    if (name) {
      tabKey.value = name;
    } else {
      tabKey.value = Object.keys(tabData.value)[0];
    }
    console.log(tabKey.value, 6766);
  };
  const refreshParentMethod = async (name) => {
    // console.log(name, 678776);
    await queryModel();
    await queryModel(name);
    // tabKey.value = name;
    // 这里执行需要的操作
  };
@@ -377,6 +402,13 @@
    } else {
      addBtn.value = false;
    }
    // if (!name) {
    //   tabKey.value = Object.keys(tabData.value)[0];
    // } else {
    //   tabKey.value = name;
    // }
    console.log(tabKey.value, 9787);
  };
</script>
@@ -486,7 +518,64 @@
    }
  }
  .content_top {
    border-bottom: 1px solid #f0f0f0 !important;
    border-radius: 18px;
    border: 1px solid #eaecf0;
    background: #e6e7eb;
    box-shadow: 0 1px 2px #1018280d;
    .card_wrap_box {
      padding: 10px 20px;
      .wrap_box_add {
        // text-align: right;
      }
      .card_wrap_box_img {
        width: 60px;
        height: 60px;
        border-radius: 50%;
        img {
          width: 100%;
          height: 100%;
          border-radius: 50%;
        }
      }
      .box_user_content {
        display: flex;
        align-items: center;
        justify-content: space-between;
        .box_usr_img {
          display: flex;
          align-items: center;
          .arco-content-title {
            line-height: 34px;
            margin-left: 20px;
            .title_name {
              font-size: 16px;
              color: #333;
            }
          }
        }
        .box_user_btn {
          text-align: right;
          // .btn_delete {
          //   margin-left: 10px;
          // }
        }
      }
    }
  }
  .content_bottom {
    margin-top: 20px;
    .card_content {
      .card_wrap_box {
        padding: 20px;
        .card_wrap_box_img {
          width: 80px;
          height: 80px;
        }
      }
    }
  }
  .card_content {
    .card_wrap_box_img {
@@ -503,6 +592,16 @@
      display: flex;
      flex-direction: row;
      flex-wrap: wrap;
      // border-top: 1px solid #f0f0f0;
    }
    .no_data {
      border-top: 1px solid #f0f0f0;
      height: 30px;
      line-height: 30px;
      margin-top: 10px;
      font-size: 16px;
      color: #333;
    }
    .card_wrap_box {
      // position: relative;