perf: 内容审核-底部按钮样式统一修改

This commit is contained in:
rd
2025-08-20 11:30:15 +08:00
parent 08c8488b67
commit 65ad58256e
18 changed files with 141 additions and 44 deletions

View File

@ -16,7 +16,7 @@
} }
.arco-pagination-options { .arco-pagination-options {
.arco-select { .arco-select {
background-color: transparent; background-color: transparent !important;
border-radius: 4px; border-radius: 4px;
border: 1px solid var(--BG-300, #e6e6e8); border: 1px solid var(--BG-300, #e6e6e8);
} }
@ -36,7 +36,7 @@
line-height: 22px; line-height: 22px;
} }
.arco-input-wrapper { .arco-input-wrapper {
background-color: transparent; background-color: transparent !important;
} }
} }
.arco-pagination-total { .arco-pagination-total {

View File

@ -8,6 +8,7 @@ import CheckListDrawer from './components/check-list-drawer';
import { slsWithCatch, rlsWithCatch, glsWithCatch } from '@/utils/stroage.ts'; import { slsWithCatch, rlsWithCatch, glsWithCatch } from '@/utils/stroage.ts';
import useGetAiReviewResult from '@/hooks/useGetAiReviewResult.ts'; import useGetAiReviewResult from '@/hooks/useGetAiReviewResult.ts';
import { useSidebarStore } from '@/stores/modules/side-bar';
import { import {
getWorkAuditsBatchDetailWriter, getWorkAuditsBatchDetailWriter,
putWorkAuditsUpdateWriter, putWorkAuditsUpdateWriter,
@ -20,6 +21,7 @@ export default {
setup(props, { emit, expose }) { setup(props, { emit, expose }) {
const router = useRouter(); const router = useRouter();
const route = useRoute(); const route = useRoute();
const sidebarStore = useSidebarStore();
const workIds = ref([]); const workIds = ref([]);
const isSaved = ref(false); const isSaved = ref(false);
@ -36,6 +38,9 @@ export default {
const selectedImageInfo = ref(null); const selectedImageInfo = ref(null);
const writerCode = computed(() => route.params.writerCode); const writerCode = computed(() => route.params.writerCode);
const collapsed = computed(() => {
return sidebarStore.menuCollapse;
});
const { handleStartCheck, handleAgainCheck, ticket, checkLoading, resetAiReviewInfo } = useGetAiReviewResult({ const { handleStartCheck, handleAgainCheck, ticket, checkLoading, resetAiReviewInfo } = useGetAiReviewResult({
cardInfo: selectCardInfo, cardInfo: selectCardInfo,
@ -237,7 +242,11 @@ export default {
</section> </section>
</div> </div>
</div> </div>
<footer class="flex justify-end items-center px-16px py-20px w-full bg-#fff footer-row"> <footer
class={`flex justify-end items-center px-16px py-16px w-full bg-#F6F5FC footer-row ${
collapsed.value ? 'collapsed' : ''
}`}
>
{renderFooterRow()} {renderFooterRow()}
</footer> </footer>

View File

@ -40,6 +40,9 @@ $footer-height: 68px;
bottom: 0; bottom: 0;
left: $sidebar-width; left: $sidebar-width;
width: calc(100% - $sidebar-width); width: calc(100% - $sidebar-width);
border-top: 1px solid #e6e6e8;
height: $footer-height; height: $footer-height;
&.collapsed {
left: $sidebar-width-collapse;
width: calc(100% - $sidebar-width-collapse);
}
} }

View File

@ -7,6 +7,7 @@ import { getWorksDetailWriter } from '@/api/all/generationWorkshop-writer.ts';
import { EnumManuscriptType } from '@/views/creative-generation-workshop/manuscript-writer/list/constants.ts'; import { EnumManuscriptType } from '@/views/creative-generation-workshop/manuscript-writer/list/constants.ts';
import { convertVideoUrlToCoverUrl, exactFormatTime } from '@/utils/tools.ts'; import { convertVideoUrlToCoverUrl, exactFormatTime } from '@/utils/tools.ts';
import { slsWithCatch } from '@/utils/stroage.ts'; import { slsWithCatch } from '@/utils/stroage.ts';
import { useSidebarStore } from '@/stores/modules/side-bar';
const DEFAULT_SOURCE_INFO = { const DEFAULT_SOURCE_INFO = {
title: '内容稿件列表', title: '内容稿件列表',
@ -18,6 +19,7 @@ export default {
setup(props, { emit, expose }) { setup(props, { emit, expose }) {
const router = useRouter(); const router = useRouter();
const route = useRoute(); const route = useRoute();
const sidebarStore = useSidebarStore();
const workId = ref(route.params.id); const workId = ref(route.params.id);
const { source, audit_status } = route.query; const { source, audit_status } = route.query;
@ -34,6 +36,9 @@ export default {
const isVideo = computed(() => dataSource.value.type === EnumManuscriptType.Video); const isVideo = computed(() => dataSource.value.type === EnumManuscriptType.Video);
const sourceInfo = computed(() => SOURCE_MAP.get(source) ?? DEFAULT_SOURCE_INFO); const sourceInfo = computed(() => SOURCE_MAP.get(source) ?? DEFAULT_SOURCE_INFO);
const writerCode = computed(() => route.params.writerCode); const writerCode = computed(() => route.params.writerCode);
const collapsed = computed(() => {
return sidebarStore.menuCollapse;
});
const onBack = () => { const onBack = () => {
router.push({ path: `${sourceInfo.value.routePath}/${writerCode.value}` }); router.push({ path: `${sourceInfo.value.routePath}/${writerCode.value}` });
@ -181,7 +186,13 @@ export default {
</div> </div>
</div> </div>
</div> </div>
<div class="flex justify-end items-center px-16px py-20px w-full bg-#fff footer-row">{renderFooterRow()}</div> <footer
class={`flex justify-end items-center px-16px py-16px w-full bg-#F6F5FC footer-row ${
collapsed.value ? 'collapsed' : ''
}`}
>
{renderFooterRow()}
</footer>
</Spin> </Spin>
); );
}, },

View File

@ -62,6 +62,9 @@ $footer-height: 68px;
bottom: 0; bottom: 0;
left: $sidebar-width; left: $sidebar-width;
width: calc(100% - $sidebar-width); width: calc(100% - $sidebar-width);
border-top: 1px solid #e6e6e8;
height: $footer-height; height: $footer-height;
&.collapsed {
left: $sidebar-width-collapse;
width: calc(100% - $sidebar-width-collapse);
}
} }

View File

@ -2,8 +2,9 @@
import { Button, Message as AMessage } from '@arco-design/web-vue'; import { Button, Message as AMessage } from '@arco-design/web-vue';
import EditForm, { ENUM_UPLOAD_STATUS, INITIAL_VIDEO_INFO } from '../components/edit-form'; import EditForm, { ENUM_UPLOAD_STATUS, INITIAL_VIDEO_INFO } from '../components/edit-form';
import CancelEditModal from './cancel-edit-modal.vue'; import CancelEditModal from './cancel-edit-modal.vue';
import { getWorksDetailWriter, putWorksUpdateWriter } from '@/api/all/generationWorkshop-writer.ts';
import { getWorksDetailWriter, putWorksUpdateWriter } from '@/api/all/generationWorkshop-writer.ts';
import { useSidebarStore } from '@/stores/modules/side-bar';
import { EnumManuscriptType } from '@/views/creative-generation-workshop/manuscript-writer/list/constants.ts'; import { EnumManuscriptType } from '@/views/creative-generation-workshop/manuscript-writer/list/constants.ts';
import { formatDuration, formatFileSize, convertVideoUrlToCoverUrl } from '@/utils/tools'; import { formatDuration, formatFileSize, convertVideoUrlToCoverUrl } from '@/utils/tools';
import { slsWithCatch } from '@/utils/stroage.ts'; import { slsWithCatch } from '@/utils/stroage.ts';
@ -15,6 +16,8 @@ export default {
setup(props, { emit, expose }) { setup(props, { emit, expose }) {
const router = useRouter(); const router = useRouter();
const route = useRoute(); const route = useRoute();
const sidebarStore = useSidebarStore();
const formRef = ref(null); const formRef = ref(null);
const cancelEditModal = ref(null); const cancelEditModal = ref(null);
const dataSource = ref({}); const dataSource = ref({});
@ -24,6 +27,9 @@ export default {
const workId = ref(route.params.id); const workId = ref(route.params.id);
const writerCode = computed(() => route.params.writerCode); const writerCode = computed(() => route.params.writerCode);
const collapsed = computed(() => {
return sidebarStore.menuCollapse;
});
const onCancel = () => { const onCancel = () => {
const isModified = !isEqual(dataSource.value, remoteDataSource.value); const isModified = !isEqual(dataSource.value, remoteDataSource.value);
@ -108,7 +114,12 @@ export default {
/> />
</div> </div>
</div> </div>
<div class="flex justify-end items-center px-16px py-20px w-full bg-#fff footer-row"> <footer
class={`flex justify-end items-center px-16px py-16px w-full bg-#F6F5FC footer-row ${
collapsed.value ? 'collapsed' : ''
}`}
>
{' '}
<Button size="medium" type="outline" onClick={onCancel} class="mr-12px"> <Button size="medium" type="outline" onClick={onCancel} class="mr-12px">
退出 退出
</Button> </Button>
@ -118,7 +129,7 @@ export default {
<Button type="primary" size="medium" onClick={() => onSave(true)} loading={uploadLoading.value}> <Button type="primary" size="medium" onClick={() => onSave(true)} loading={uploadLoading.value}>
保存并审核 保存并审核
</Button> </Button>
</div> </footer>
<CancelEditModal ref={cancelEditModal} /> <CancelEditModal ref={cancelEditModal} />
</> </>

View File

@ -20,6 +20,9 @@ $footer-height: 68px;
bottom: 0; bottom: 0;
left: $sidebar-width; left: $sidebar-width;
width: calc(100% - $sidebar-width); width: calc(100% - $sidebar-width);
border-top: 1px solid #e6e6e8;
height: $footer-height; height: $footer-height;
&.collapsed {
left: $sidebar-width-collapse;
width: calc(100% - $sidebar-width-collapse);
}
} }

View File

@ -9,20 +9,11 @@ import { EnumManuscriptType } from '@/views/creative-generation-workshop/manuscr
import { postWorksBatchWriter } from '@/api/all/generationWorkshop-writer.ts'; import { postWorksBatchWriter } from '@/api/all/generationWorkshop-writer.ts';
import { glsWithCatch, rlsWithCatch, slsWithCatch } from '@/utils/stroage.ts'; import { glsWithCatch, rlsWithCatch, slsWithCatch } from '@/utils/stroage.ts';
import { formatDuration, formatFileSize, convertVideoUrlToCoverUrl } from '@/utils/tools'; import { formatDuration, formatFileSize, convertVideoUrlToCoverUrl } from '@/utils/tools';
import { useSidebarStore } from '@/stores/modules/side-bar';
import icon1 from '@/assets/img/creative-generation-workshop/icon-photo.png'; import icon1 from '@/assets/img/creative-generation-workshop/icon-photo.png';
import icon2 from '@/assets/img/creative-generation-workshop/icon-video.png'; import icon2 from '@/assets/img/creative-generation-workshop/icon-video.png';
// const generateMockData = (count = 4) =>
// Array.from({ length: count }, (_, i) => ({
// id: `${i + 1}`,
// title: `标题${i + 1}`,
// content: '挖到宝了!这个平价好物让我素颜出门都自信✨挖到宝了!这个平价好物让我素颜出门都自信✨',
// type: i % 2 === 0 ? EnumManuscriptType.Image : EnumManuscriptType.Video,
// files: [],
// videoInfo: cloneDeep(INITIAL_VIDEO_INFO),
// }));
export default { export default {
components: { components: {
EditForm, EditForm,
@ -31,6 +22,8 @@ export default {
const formRef = ref(null); const formRef = ref(null);
const route = useRoute(); const route = useRoute();
const router = useRouter(); const router = useRouter();
const sidebarStore = useSidebarStore();
const cancelUploadModal = ref(null); const cancelUploadModal = ref(null);
const uploadSuccessModal = ref(null); const uploadSuccessModal = ref(null);
const works = ref([]); const works = ref([]);
@ -39,6 +32,10 @@ export default {
const uploadLoading = ref(false); const uploadLoading = ref(false);
const writerCode = computed(() => route.params.writerCode); const writerCode = computed(() => route.params.writerCode);
const collapsed = computed(() => {
return sidebarStore.menuCollapse;
});
const onCancel = () => { const onCancel = () => {
cancelUploadModal.value?.open(works.value.length); cancelUploadModal.value?.open(works.value.length);
}; };
@ -306,8 +303,13 @@ export default {
</div> </div>
)} )}
</div> </div>
<div class="flex justify-end items-center px-16px py-20px w-full bg-#fff footer-row">{renderFooterRow()}</div> <footer
class={`flex justify-end items-center px-16px py-16px w-full bg-#F6F5FC footer-row ${
collapsed.value ? 'collapsed' : ''
}`}
>
{renderFooterRow()}
</footer>
<CancelUploadModal ref={cancelUploadModal} /> <CancelUploadModal ref={cancelUploadModal} />
<UploadSuccessModal ref={uploadSuccessModal} /> <UploadSuccessModal ref={uploadSuccessModal} />
</> </>

View File

@ -24,6 +24,9 @@ $footer-height: 68px;
bottom: 0; bottom: 0;
left: $sidebar-width; left: $sidebar-width;
width: calc(100% - $sidebar-width); width: calc(100% - $sidebar-width);
border-top: 1px solid #e6e6e8;
height: $footer-height; height: $footer-height;
&.collapsed {
left: $sidebar-width-collapse;
width: calc(100% - $sidebar-width-collapse);
}
} }

View File

@ -8,6 +8,7 @@ import CheckListDrawer from './components/check-list-drawer';
import { slsWithCatch, rlsWithCatch, glsWithCatch } from '@/utils/stroage.ts'; import { slsWithCatch, rlsWithCatch, glsWithCatch } from '@/utils/stroage.ts';
import useGetAiReviewResult from '@/hooks/useGetAiReviewResult.ts'; import useGetAiReviewResult from '@/hooks/useGetAiReviewResult.ts';
import { useSidebarStore } from '@/stores/modules/side-bar';
import { import {
patchWorkAuditsAudit, patchWorkAuditsAudit,
patchWorkAuditsBatchAudit, patchWorkAuditsBatchAudit,
@ -23,6 +24,7 @@ export default {
setup(props, { emit, expose }) { setup(props, { emit, expose }) {
const router = useRouter(); const router = useRouter();
const route = useRoute(); const route = useRoute();
const sidebarStore = useSidebarStore();
const workIds = ref([]); const workIds = ref([]);
const isSaved = ref(false); const isSaved = ref(false);
@ -38,6 +40,10 @@ export default {
const selectCardInfo = ref({}); const selectCardInfo = ref({});
const selectedImageInfo = ref(null); const selectedImageInfo = ref(null);
const collapsed = computed(() => {
return sidebarStore.menuCollapse;
});
const { handleStartCheck, handleAgainCheck, ticket, checkLoading, resetAiReviewInfo } = useGetAiReviewResult({ const { handleStartCheck, handleAgainCheck, ticket, checkLoading, resetAiReviewInfo } = useGetAiReviewResult({
cardInfo: selectCardInfo, cardInfo: selectCardInfo,
startAiReviewFn: postWorkAuditsAiReview, startAiReviewFn: postWorkAuditsAiReview,
@ -238,7 +244,11 @@ export default {
</section> </section>
</div> </div>
</div> </div>
<footer class="flex justify-end items-center px-16px py-20px w-full bg-#fff footer-row"> <footer
class={`flex justify-end items-center px-16px py-16px w-full bg-#F6F5FC footer-row ${
collapsed.value ? 'collapsed' : ''
}`}
>
{renderFooterRow()} {renderFooterRow()}
</footer> </footer>

View File

@ -40,6 +40,9 @@ $footer-height: 68px;
bottom: 0; bottom: 0;
left: $sidebar-width; left: $sidebar-width;
width: calc(100% - $sidebar-width); width: calc(100% - $sidebar-width);
border-top: 1px solid #e6e6e8;
height: $footer-height; height: $footer-height;
&.collapsed {
left: $sidebar-width-collapse;
width: calc(100% - $sidebar-width-collapse);
}
} }

View File

@ -7,6 +7,7 @@ import { getWorksDetail } from '@/api/all/generationWorkshop';
import { EnumManuscriptType } from '@/views/creative-generation-workshop/manuscript/list/constants.ts'; import { EnumManuscriptType } from '@/views/creative-generation-workshop/manuscript/list/constants.ts';
import { convertVideoUrlToCoverUrl, exactFormatTime } from '@/utils/tools.ts'; import { convertVideoUrlToCoverUrl, exactFormatTime } from '@/utils/tools.ts';
import { slsWithCatch } from '@/utils/stroage.ts'; import { slsWithCatch } from '@/utils/stroage.ts';
import { useSidebarStore } from '@/stores/modules/side-bar';
const DEFAULT_SOURCE_INFO = { const DEFAULT_SOURCE_INFO = {
title: '内容稿件列表', title: '内容稿件列表',
@ -18,6 +19,7 @@ export default {
setup(props, { emit, expose }) { setup(props, { emit, expose }) {
const router = useRouter(); const router = useRouter();
const route = useRoute(); const route = useRoute();
const sidebarStore = useSidebarStore();
const workId = ref(route.params.id); const workId = ref(route.params.id);
const { source, audit_status } = route.query; const { source, audit_status } = route.query;
@ -33,6 +35,9 @@ export default {
const isVideo = computed(() => dataSource.value.type === EnumManuscriptType.Video); const isVideo = computed(() => dataSource.value.type === EnumManuscriptType.Video);
const sourceInfo = computed(() => SOURCE_MAP.get(source) ?? DEFAULT_SOURCE_INFO); const sourceInfo = computed(() => SOURCE_MAP.get(source) ?? DEFAULT_SOURCE_INFO);
const collapsed = computed(() => {
return sidebarStore.menuCollapse;
});
const onBack = () => { const onBack = () => {
router.push({ name: sourceInfo.value.routeName }); router.push({ name: sourceInfo.value.routeName });
@ -180,7 +185,13 @@ export default {
</div> </div>
</div> </div>
</div> </div>
<div class="flex justify-end items-center px-16px py-20px w-full bg-#fff footer-row">{renderFooterRow()}</div> <footer
class={`flex justify-end items-center px-16px py-16px w-full bg-#F6F5FC footer-row ${
collapsed.value ? 'collapsed' : ''
}`}
>
{renderFooterRow()}
</footer>
</Spin> </Spin>
); );
}, },

View File

@ -63,6 +63,9 @@ $footer-height: 68px;
bottom: 0; bottom: 0;
left: $sidebar-width; left: $sidebar-width;
width: calc(100% - $sidebar-width); width: calc(100% - $sidebar-width);
border-top: 1px solid #e6e6e8;
height: $footer-height; height: $footer-height;
&.collapsed {
left: $sidebar-width-collapse;
width: calc(100% - $sidebar-width-collapse);
}
} }

View File

@ -2,6 +2,8 @@
import { Button, Message as AMessage } from '@arco-design/web-vue'; import { Button, Message as AMessage } from '@arco-design/web-vue';
import EditForm, { ENUM_UPLOAD_STATUS, INITIAL_VIDEO_INFO } from '../components/edit-form'; import EditForm, { ENUM_UPLOAD_STATUS, INITIAL_VIDEO_INFO } from '../components/edit-form';
import CancelEditModal from './cancel-edit-modal.vue'; import CancelEditModal from './cancel-edit-modal.vue';
import { useSidebarStore } from '@/stores/modules/side-bar';
import { getWorksDetail, putWorksUpdate } from '@/api/all/generationWorkshop'; import { getWorksDetail, putWorksUpdate } from '@/api/all/generationWorkshop';
import { EnumManuscriptType } from '@/views/creative-generation-workshop/manuscript/list/constants.ts'; import { EnumManuscriptType } from '@/views/creative-generation-workshop/manuscript/list/constants.ts';
import { formatDuration, formatFileSize, convertVideoUrlToCoverUrl } from '@/utils/tools'; import { formatDuration, formatFileSize, convertVideoUrlToCoverUrl } from '@/utils/tools';
@ -14,6 +16,8 @@ export default {
setup(props, { emit, expose }) { setup(props, { emit, expose }) {
const router = useRouter(); const router = useRouter();
const route = useRoute(); const route = useRoute();
const sidebarStore = useSidebarStore();
const formRef = ref(null); const formRef = ref(null);
const cancelEditModal = ref(null); const cancelEditModal = ref(null);
const dataSource = ref({}); const dataSource = ref({});
@ -23,6 +27,10 @@ export default {
const workId = ref(route.params.id); const workId = ref(route.params.id);
const collapsed = computed(() => {
return sidebarStore.menuCollapse;
});
const onCancel = () => { const onCancel = () => {
const isModified = !isEqual(dataSource.value, remoteDataSource.value); const isModified = !isEqual(dataSource.value, remoteDataSource.value);
if (isModified && !isSaved.value) { if (isModified && !isSaved.value) {
@ -106,7 +114,11 @@ export default {
/> />
</div> </div>
</div> </div>
<div class="flex justify-end items-center px-16px py-20px w-full bg-#fff footer-row"> <footer
class={`flex justify-end items-center px-16px py-16px w-full bg-#F6F5FC footer-row ${
collapsed.value ? 'collapsed' : ''
}`}
>
<Button size="medium" type="outline" onClick={onCancel} class="mr-12px"> <Button size="medium" type="outline" onClick={onCancel} class="mr-12px">
退出 退出
</Button> </Button>
@ -116,7 +128,7 @@ export default {
<Button type="primary" size="medium" onClick={() => onSave(true)} loading={uploadLoading.value}> <Button type="primary" size="medium" onClick={() => onSave(true)} loading={uploadLoading.value}>
保存并审核 保存并审核
</Button> </Button>
</div> </footer>
<CancelEditModal ref={cancelEditModal} /> <CancelEditModal ref={cancelEditModal} />
</> </>

View File

@ -20,6 +20,9 @@ $footer-height: 68px;
bottom: 0; bottom: 0;
left: $sidebar-width; left: $sidebar-width;
width: calc(100% - $sidebar-width); width: calc(100% - $sidebar-width);
border-top: 1px solid #e6e6e8;
height: $footer-height; height: $footer-height;
&.collapsed {
left: $sidebar-width-collapse;
width: calc(100% - $sidebar-width-collapse);
}
} }

View File

@ -9,20 +9,11 @@ import { EnumManuscriptType } from '@/views/creative-generation-workshop/manuscr
import { postWorksBatch } from '@/api/all/generationWorkshop.ts'; import { postWorksBatch } from '@/api/all/generationWorkshop.ts';
import { glsWithCatch, rlsWithCatch, slsWithCatch } from '@/utils/stroage.ts'; import { glsWithCatch, rlsWithCatch, slsWithCatch } from '@/utils/stroage.ts';
import { formatDuration, formatFileSize, convertVideoUrlToCoverUrl } from '@/utils/tools'; import { formatDuration, formatFileSize, convertVideoUrlToCoverUrl } from '@/utils/tools';
import { useSidebarStore } from '@/stores/modules/side-bar';
import icon1 from '@/assets/img/creative-generation-workshop/icon-photo.png'; import icon1 from '@/assets/img/creative-generation-workshop/icon-photo.png';
import icon2 from '@/assets/img/creative-generation-workshop/icon-video.png'; import icon2 from '@/assets/img/creative-generation-workshop/icon-video.png';
// const generateMockData = (count = 4) =>
// Array.from({ length: count }, (_, i) => ({
// id: `${i + 1}`,
// title: `标题${i + 1}`,
// content: '挖到宝了!这个平价好物让我素颜出门都自信✨挖到宝了!这个平价好物让我素颜出门都自信✨',
// type: i % 2 === 0 ? EnumManuscriptType.Image : EnumManuscriptType.Video,
// files: [],
// videoInfo: cloneDeep(INITIAL_VIDEO_INFO),
// }));
export default { export default {
components: { components: {
EditForm, EditForm,
@ -31,6 +22,8 @@ export default {
const formRef = ref(null); const formRef = ref(null);
const route = useRoute(); const route = useRoute();
const router = useRouter(); const router = useRouter();
const sidebarStore = useSidebarStore();
const cancelUploadModal = ref(null); const cancelUploadModal = ref(null);
const uploadSuccessModal = ref(null); const uploadSuccessModal = ref(null);
const works = ref([]); const works = ref([]);
@ -38,6 +31,10 @@ export default {
const errorDataCards = ref([]); const errorDataCards = ref([]);
const uploadLoading = ref(false); const uploadLoading = ref(false);
const collapsed = computed(() => {
return sidebarStore.menuCollapse;
});
const onCancel = () => { const onCancel = () => {
cancelUploadModal.value?.open(works.value.length); cancelUploadModal.value?.open(works.value.length);
}; };
@ -307,7 +304,13 @@ export default {
</div> </div>
)} )}
</div> </div>
<div class="flex justify-end items-center px-16px py-20px w-full bg-#fff footer-row">{renderFooterRow()}</div> <footer
class={`flex justify-end items-center px-16px py-16px w-full bg-#F6F5FC footer-row ${
collapsed.value ? 'collapsed' : ''
}`}
>
{renderFooterRow()}
</footer>
<CancelUploadModal ref={cancelUploadModal} /> <CancelUploadModal ref={cancelUploadModal} />
<UploadSuccessModal ref={uploadSuccessModal} /> <UploadSuccessModal ref={uploadSuccessModal} />

View File

@ -24,6 +24,9 @@ $footer-height: 68px;
bottom: 0; bottom: 0;
left: $sidebar-width; left: $sidebar-width;
width: calc(100% - $sidebar-width); width: calc(100% - $sidebar-width);
border-top: 1px solid #e6e6e8;
height: $footer-height; height: $footer-height;
&.collapsed {
left: $sidebar-width-collapse;
width: calc(100% - $sidebar-width-collapse);
}
} }

View File

@ -9,6 +9,7 @@ import { useSharedDataStore } from '@/stores/modules/share-data';
export default { export default {
setup(props, { emit, expose }) { setup(props, { emit, expose }) {
const historyConversationDrawerRef = ref(null); const historyConversationDrawerRef = ref(null);
const senderRef = ref(null);
const searchValue = ref(''); const searchValue = ref('');
const sharedDataStore = useSharedDataStore(); const sharedDataStore = useSharedDataStore();
@ -42,6 +43,7 @@ export default {
const handleTagClick = (tag: string) => { const handleTagClick = (tag: string) => {
searchValue.value = tag; searchValue.value = tag;
handleSearch(); handleSearch();
senderRef.value?.focus();
}; };
onMounted(() => { onMounted(() => {
@ -50,7 +52,8 @@ export default {
searchValue.value = params.keyWord; searchValue.value = params.keyWord;
sharedDataStore.clearRouteParams(); sharedDataStore.clearRouteParams();
handleSubmit(); handleSearch();
senderRef.value?.focus();
} }
}); });
@ -66,6 +69,7 @@ export default {
<p class="cts text-center mb-104px">AI 辅助账号托管账号 自动生成爆款内容 定时任务发布</p> <p class="cts text-center mb-104px">AI 辅助账号托管账号 自动生成爆款内容 定时任务发布</p>
<Sender <Sender
v-model:value={searchValue.value} v-model:value={searchValue.value}
ref={senderRef}
onSubmit={handleSubmit} onSubmit={handleSubmit}
class="h-120px w-full mb-24px" class="h-120px w-full mb-24px"
placeholder="随时告诉我你想做什么,比如查数据、发任务、写内容,我会立刻帮你完成。" placeholder="随时告诉我你想做什么,比如查数据、发任务、写内容,我会立刻帮你完成。"