Merge remote-tracking branch 'origin/feature/v1.3_主agent_rxd' into test

This commit is contained in:
rd
2025-09-01 17:00:52 +08:00
10 changed files with 197 additions and 153 deletions

View File

@ -40,7 +40,6 @@ const layoutPageClass = computed(() => {
return result; return result;
}); });
onMounted(() => { onMounted(() => {
checkHasInviteCode(); checkHasInviteCode();
}); });
@ -60,18 +59,22 @@ const checkHasInviteCode = () => {
<Layout.Header class="layout-header-wrap"> <Layout.Header class="layout-header-wrap">
<Navbar /> <Navbar />
</Layout.Header> </Layout.Header>
<Layout class="flex layout-content-wrap"> <Layout class="flex app-content-layout">
<div class="flex flex-1 app-content-scroll">
<div class="app-content-inner">
<SiderBar /> <SiderBar />
<Layout <Layout
class="layout-content" class="layout-content"
:style="{ :style="{
paddingLeft: `${sidebarStore.sidebarWidth}px`, width: `calc(100vw - ${sidebarStore.sidebarWidth}px)`,
}" }"
> >
<Layout.Content :class="layoutPageClass" class="!min-h-initial"> <Layout.Content :class="layoutPageClass" class="!min-h-initial w-full">
<layout-page /> <layout-page />
</Layout.Content> </Layout.Content>
</Layout> </Layout>
</div>
</div>
</Layout> </Layout>
</Layout> </Layout>
</template> </template>
@ -87,27 +90,39 @@ const checkHasInviteCode = () => {
line-height: $navbar-height; line-height: $navbar-height;
padding-inline: inherit; padding-inline: inherit;
color: inherit; color: inherit;
position: fixed; // position: fixed;
top: 0; // top: 0;
left: 0; // left: 0;
z-index: 1000; // z-index: 1000;
width: 100%; width: 100%;
min-width: $layout-min-width; min-width: $layout-min-width;
} }
.layout-content-wrap { .app-content-layout {
width: 100%; width: 100%;
height: 100%; height: 100%;
background: transparent; background: transparent;
min-height: calc(100vh - $navbar-height); min-height: calc(100vh - $navbar-height);
.app-content-scroll {
min-height: calc(100vh - $navbar-height);
height: calc(100vh - $navbar-height);
overflow-y: auto;
overflow-x: auto;
.app-content-inner {
width: 100%;
height: calc(100vh - $navbar-height);
overflow: hidden;
display: flex;
}
}
:deep(.ant-layout-sider) { :deep(.ant-layout-sider) {
background: none; background: none;
box-shadow: none; box-shadow: none;
padding-top: $navbar-height; // padding-top: $navbar-height;
padding-bottom: 0; padding-bottom: 0;
position: fixed; // position: fixed;
top: 0; // top: 0;
left: 0; // left: 0;
z-index: 999; // z-index: 999;
height: 100%; height: 100%;
transition: all 0.2s cubic-bezier(0.34, 0.69, 0.1, 1); transition: all 0.2s cubic-bezier(0.34, 0.69, 0.1, 1);
.ant-layout-sider-trigger { .ant-layout-sider-trigger {
@ -118,9 +133,12 @@ const checkHasInviteCode = () => {
} }
} }
.layout-content { .layout-content {
padding-top: $navbar-height;
background: transparent; background: transparent;
transition: padding 0.2s cubic-bezier(0.34, 0.69, 0.1, 1); transition: padding 0.2s cubic-bezier(0.34, 0.69, 0.1, 1);
flex: 1;
height: 100%;
overflow-y: auto;
overflow-x: hidden;
} }
} }
} }

View File

@ -37,20 +37,20 @@ const isHomeRoute = computed(() => {
.navbar-wrap { .navbar-wrap {
position: relative; position: relative;
height: 100%; height: 100%;
&::before { // &::before {
width: 100%; // width: 100%;
height: 100%; // height: 100%;
background: url('@/assets/img/icon-app-header-bg.png') center top no-repeat !important; // background: url('@/assets/img/icon-app-header-bg.png') center top no-repeat !important;
background-size: cover !important; // background-size: cover !important;
bottom: 0; // bottom: 0;
content: ''; // content: '';
display: block; // display: block;
left: 0; // left: 0;
position: absolute; // position: absolute;
right: 0; // right: 0;
top: 0; // top: 0;
z-index: -998; // z-index: -998;
} // }
// background-color: var(--color-bg-2); // background-color: var(--color-bg-2);
// border-bottom: 1px solid var(--color-border); // border-bottom: 1px solid var(--color-border);

View File

@ -412,7 +412,7 @@ export default {
loading={true} loading={true}
tip={`${isTextTab.value ? '文本' : '图片'}检测中`} tip={`${isTextTab.value ? '文本' : '图片'}检测中`}
size={72} size={72}
class="h-298px !flex flex-col justify-center items-center color-#6d4cfe" class="h-298px !flex flex-col justify-center items-center"
/> />
</div> </div>
); );

View File

@ -180,6 +180,12 @@
line-height: 24px; line-height: 24px;
} }
} }
:deep(.arco-spin) {
.arco-spin-icon,
.arco-spin-tip {
color: #6d4cfe;
}
}
:deep(.overflow-text) { :deep(.overflow-text) {
color: #211f24; color: #211f24;
font-family: $font-family-regular; font-family: $font-family-regular;

View File

@ -4,49 +4,53 @@
* @Date: 2025-06-25 14:02:40 * @Date: 2025-06-25 14:02:40
--> -->
<template> <template>
<div class="container"> <div class="common-filter-wrap">
<div class="filter-row flex mb-20px"> <div class="filter-row flex">
<div class="filter-row-item flex items-center"> <div class="filter-row-item flex items-center">
<span class="label">账号名称</span> <span class="label">账号名称</span>
<a-space size="medium" class="w-240px"> <a-input
<a-input v-model="query.name" placeholder="请搜索..." size="medium" allow-clear @change="handleSearch"> v-model="query.name"
placeholder="请搜索..."
size="medium"
class="!w-240px"
allow-clear
@change="handleSearch"
>
<template #prefix> <template #prefix>
<icon-search /> <icon-search />
</template> </template>
</a-input> </a-input>
</a-space>
</div> </div>
<div class="filter-row-item flex items-center"> <div class="filter-row-item flex items-center">
<span class="label">分组</span> <span class="label">分组</span>
<a-space class="w-200px"> <CommonSelect class="!w-200px" v-model="query.group_ids" :options="groups" @change="handleSearch" />
<CommonSelect v-model="query.group_ids" :options="groups" @change="handleSearch" />
</a-space>
</div> </div>
<div class="filter-row-item flex items-center"> <div class="filter-row-item flex items-center">
<span class="label">状态</span> <span class="label">状态</span>
<a-space class="w-180px"> <StatusSelect v-model="query.status" @change="handleSearch" class="!w-180px" />
<StatusSelect v-model="query.status" @change="handleSearch" />
</a-space>
</div> </div>
<div class="filter-row-item flex items-center"> <div class="filter-row-item flex items-center">
<span class="label">运营人员</span> <span class="label">运营人员</span>
<a-space class="w-160px"> <CommonSelect
<CommonSelect v-model="query.operator_id" :multiple="false" :options="operators" @change="handleSearch" /> v-model="query.operator_id"
</a-space> :multiple="false"
:options="operators"
@change="handleSearch"
class="!w-160px"
/>
</div> </div>
</div> </div>
<div class="filter-row flex"> <div class="filter-row flex">
<div class="filter-row-item flex items-center"> <div class="filter-row-item flex items-center">
<span class="label">时间筛选</span> <span class="label">时间筛选</span>
<a-space class="w-240px"> <a-select v-model="query.type" size="medium" placeholder="全部" class="!w-240px" @change="handleSearch">
<a-select v-model="query.type" size="medium" placeholder="全部" class="w-120px" @change="handleSearch">
<template #arrow-icon> <icon-calendar size="16" /> </template> <template #arrow-icon> <icon-calendar size="16" /> </template>
<a-option :value="7" label="近7天">近7天</a-option> <a-option :value="7" label="近7天">近7天</a-option>
<!-- <a-option :value="14" label="近14天">近14天</a-option> --> <!-- <a-option :value="14" label="近14天">近14天</a-option> -->
<a-option :value="30" label="近30天">近30天</a-option> <a-option :value="30" label="近30天">近30天</a-option>
</a-select> </a-select>
</a-space>
</div> </div>
<div class="filter-row-item flex items-center">
<a-button type="outline" class="w-84px mr-12px" size="medium" @click="handleSearch"> <a-button type="outline" class="w-84px mr-12px" size="medium" @click="handleSearch">
<template #icon> <template #icon>
<icon-search /> <icon-search />
@ -61,6 +65,7 @@
</a-button> </a-button>
</div> </div>
</div> </div>
</div>
</template> </template>
<script setup> <script setup>

View File

@ -27,7 +27,7 @@
</div> </div>
</div> </div>
</div> </div>
<div class="filter-wrap bg-#fff rounded-8px px-24px py-24px mb-16px"> <div class=" bg-#fff rounded-8px mb-16px">
<FilterBlock v-model:query="query" @onSearch="handleSearch" @onReset="handleReset" /> <FilterBlock v-model:query="query" @onSearch="handleSearch" @onReset="handleReset" />
</div> </div>
<div class="table-wrap bg-#fff rounded-8px px-24px py-24px flex flex-col"> <div class="table-wrap bg-#fff rounded-8px px-24px py-24px flex flex-col">

View File

@ -4,9 +4,9 @@
* @Date: 2025-06-25 14:02:40 * @Date: 2025-06-25 14:02:40
--> -->
<template> <template>
<div class="container px-24px pt-12px pb-24px"> <div class="common-filter-wrap">
<div class="filter-row flex mb-20px"> <div class="filter-row flex">
<div class="filter-row-item flex items-center"> <div class="filter-row-item">
<span class="label">账号名称/ID/手机号</span> <span class="label">账号名称/ID/手机号</span>
<a-space size="medium"> <a-space size="medium">
<a-input <a-input
@ -23,13 +23,13 @@
</a-input> </a-input>
</a-space> </a-space>
</div> </div>
<div class="filter-row-item flex items-center"> <div class="filter-row-item">
<span class="label">状态</span> <span class="label">状态</span>
<a-space class="w-180px"> <a-space class="w-180px">
<StatusSelect v-model="query.status" @change="handleSearch" /> <StatusSelect v-model="query.status" @change="handleSearch" />
</a-space> </a-space>
</div> </div>
<div class="filter-row-item flex items-center"> <div class="filter-row-item">
<span class="label">平台</span> <span class="label">平台</span>
<a-space class="w-160px"> <a-space class="w-160px">
<a-select v-model="query.platform" size="medium" placeholder="全部" allow-clear @change="handleSearch"> <a-select v-model="query.platform" size="medium" placeholder="全部" allow-clear @change="handleSearch">
@ -43,32 +43,33 @@
</a-select> </a-select>
</a-space> </a-space>
</div> </div>
<div class="filter-row-item flex items-center"> <div class="filter-row-item">
<span class="label">运营人员</span> <span class="label">运营人员</span>
<a-space class="w-160px"> <a-space class="w-160px">
<CommonSelect v-model="query.operator_id" :multiple="false" :options="operators" @change="handleSearch" /> <CommonSelect v-model="query.operator_id" :multiple="false" :options="operators" @change="handleSearch" />
</a-space> </a-space>
</div> </div>
</div> </div>
<div class="filter-row flex"> <div class="filter-row">
<div class="filter-row-item flex items-center"> <div class="filter-row-item">
<span class="label">分组</span> <span class="label">分组</span>
<a-space class="w-200px"> <a-space class="w-200px">
<CommonSelect v-model="query.group_ids" multiple :options="groups" @change="handleSearch" /> <CommonSelect v-model="query.group_ids" multiple :options="groups" @change="handleSearch" />
</a-space> </a-space>
</div> </div>
<div class="filter-row-item flex items-center"> <div class="filter-row-item">
<span class="label">所属项目</span> <span class="label">所属项目</span>
<a-space class="w-200px"> <a-space class="w-200px">
<CommonSelect v-model="query.project_ids" :options="projects" @change="handleSearch" /> <CommonSelect v-model="query.project_ids" :options="projects" @change="handleSearch" />
</a-space> </a-space>
</div> </div>
<div class="filter-row-item flex items-center"> <div class="filter-row-item">
<span class="label">标签</span> <span class="label">标签</span>
<a-space class="w-320px"> <a-space class="w-320px">
<CommonSelect v-model="query.tag_ids" :options="tags" @change="handleSearch" /> <CommonSelect v-model="query.tag_ids" :options="tags" @change="handleSearch" />
</a-space> </a-space>
</div> </div>
<div class="filter-row-item">
<a-button type="outline" class="w-84px mr-12px" size="medium" @click="handleSearch"> <a-button type="outline" class="w-84px mr-12px" size="medium" @click="handleSearch">
<template #icon> <template #icon>
<icon-search /> <icon-search />
@ -83,6 +84,7 @@
</a-button> </a-button>
</div> </div>
</div> </div>
</div>
</template> </template>
<script setup> <script setup>

View File

@ -1,4 +1,4 @@
.container { .filter-wrap {
.filter-row { .filter-row {
.filter-row-item { .filter-row-item {
&:not(:last-child) { &:not(:last-child) {

View File

@ -4,11 +4,10 @@
* @Date: 2025-06-25 14:02:40 * @Date: 2025-06-25 14:02:40
--> -->
<template> <template>
<div class="container px-24px pt-12px pb-24px"> <div class="common-filter-wrap">
<div class="filter-row flex mb-20px"> <div class="filter-row">
<div class="filter-row-item flex items-center"> <div class="filter-row-item">
<span class="label">账号名称/ID/手机号</span> <span class="label">账号名称/ID/手机号</span>
<a-space size="medium">
<a-input <a-input
v-model="query.search" v-model="query.search"
class="w-240px" class="w-240px"
@ -21,38 +20,43 @@
<icon-search /> <icon-search />
</template> </template>
</a-input> </a-input>
</a-space>
</div> </div>
<div class="filter-row-item flex items-center"> <div class="filter-row-item">
<span class="label">状态</span> <span class="label">状态</span>
<a-space class="w-180px"> <StatusSelect v-model="query.status" class="w-180px" @change="handleSearch" />
<StatusSelect v-model="query.status" @change="handleSearch" />
</a-space>
</div> </div>
<div class="filter-row-item flex items-center"> <div class="filter-row-item">
<span class="label">平台</span> <span class="label">平台</span>
<a-space class="w-160px"> <a-select
<a-select v-model="query.platform" size="medium" placeholder="全部" allow-clear @change="handleSearch"> class="!w-160px"
v-model="query.platform"
size="medium"
placeholder="全部"
allow-clear
@change="handleSearch"
>
<a-option v-for="(item, index) in PLATFORM_LIST" :key="index" :value="item.value" :label="item.label">{{ <a-option v-for="(item, index) in PLATFORM_LIST" :key="index" :value="item.value" :label="item.label">{{
item.label item.label
}}</a-option> }}</a-option>
</a-select> </a-select>
</a-space>
</div> </div>
<div class="filter-row-item flex items-center"> <div class="filter-row-item">
<span class="label">运营人员</span> <span class="label">运营人员</span>
<a-space class="w-160px"> <CommonSelect
<CommonSelect v-model="query.operator_id" :multiple="false" :options="operators" @change="handleSearch" /> class="!w-160px"
</a-space> v-model="query.operator_id"
:multiple="false"
:options="operators"
@change="handleSearch"
/>
</div> </div>
</div> </div>
<div class="filter-row flex"> <div class="filter-row">
<div class="filter-row-item flex items-center"> <div class="filter-row-item">
<span class="label">所属项目</span> <span class="label">所属项目</span>
<a-space class="w-200px"> <CommonSelect class="!w-200px" v-model="query.project_ids" :options="projects" @change="handleSearch" />
<CommonSelect v-model="query.project_ids" :options="projects" @change="handleSearch" />
</a-space>
</div> </div>
<div class="filter-row-item">
<a-button type="outline" class="mr-12px" size="medium" @click="handleSearch"> <a-button type="outline" class="mr-12px" size="medium" @click="handleSearch">
<template #icon> <template #icon>
<icon-search /> <icon-search />
@ -67,6 +71,7 @@
</a-button> </a-button>
</div> </div>
</div> </div>
</div>
</template> </template>
<script setup> <script setup>

View File

@ -135,9 +135,11 @@
} }
} }
.right-box { .right-box {
border: 1px solid #E6E6E8; border: 1px solid #e6e6e8;
flex: 1; flex: 1;
border-radius: 8px; padding: 16px; display: flex; border-radius: 8px;
padding: 16px;
display: flex;
flex-direction: column; flex-direction: column;
overflow-y: auto; overflow-y: auto;
height: fit-content; height: fit-content;
@ -185,6 +187,12 @@
font-weight: 400; font-weight: 400;
line-height: 22px; line-height: 22px;
} }
:deep(.arco-spin) {
.arco-spin-icon,
.arco-spin-tip {
color: #6d4cfe;
}
}
.forbid-word-box { .forbid-word-box {
:deep(.overflow-text) { :deep(.overflow-text) {
&.level0 { &.level0 {