-
- {{ props.context }}
-
-
{
- isShow = !isShow;
- }
- "
- >
- {{ isShow ? '收起' : '展开' }}
-
-
+
+ {{ props.context }}
+
+
{
+ isShow = !isShow;
+ }
+ "
+ >
+ {{ isShow ? '收起' : '展开' }}
+
diff --git a/src/components/wyg-form/README.md b/src/components/wyg-form/README.md
deleted file mode 100644
index 54529d3..0000000
--- a/src/components/wyg-form/README.md
+++ /dev/null
@@ -1,5 +0,0 @@
-# 动态配置form表单
-示例见 views/components/form
-参数 fieldList:配置项,包括arco.design Form.Item和Input、Select以及自定义属性component等
-参数 model: 传默认值
-通过ref获取实例,调用子组件实例updateFieldsList方法更新配置项,调用setModel方法更新数据,调用setForm方法更新Form属性,自定义事件change处理逻辑
diff --git a/src/components/wyg-form/constants.ts b/src/components/wyg-form/constants.ts
deleted file mode 100644
index 382d2c2..0000000
--- a/src/components/wyg-form/constants.ts
+++ /dev/null
@@ -1,40 +0,0 @@
-// form.item的属性名称集合
-export const formItemKeys = [
- 'field',
- 'label',
- 'tooltip',
- 'showColon',
- 'noStyle',
- 'disabled',
- 'help',
- 'extra',
- 'required',
- 'asteriskPosition',
- 'rules',
- 'validateStatus',
- 'validateTrigger',
- 'wrapperColProps',
- 'hideLabel',
- 'hideAsterisk',
- 'labelColStyle',
- 'wrapperColStyle',
- 'rowProps',
- 'rowClass',
- 'contentClass',
- 'contentFlex',
- 'labelColFlex',
- 'feedback',
- 'labelComponent',
- 'labelAttrs',
-];
-// 自定义属性名称集合
-export const customKeys = ['component', 'lists'];
-// 响应式栅格默认配置
-export const COL_PROPS = {
- xs: 12,
- sm: 12,
- md: 8,
- lg: 8,
- xl: 6,
- xxl: 6,
-};
diff --git a/src/components/wyg-form/index.vue b/src/components/wyg-form/index.vue
deleted file mode 100644
index 36b4cd4..0000000
--- a/src/components/wyg-form/index.vue
+++ /dev/null
@@ -1,271 +0,0 @@
-
-
-
-
-
-
-
-
-
-
- {{ val['label'] }}
-
-
-
-
-
-
-
-
- {{ c['label'] }}
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
{{ formItemProps.label }}
-
-
-
-
-
-
-
-
-
-
-
- {{ _options.submitButtonText }}
-
- {{ _options.resetButtonText }}
-
-
- {{ _options.cancelButtonText }}
-
-
-
-
-
-
-
-
-
-
-
diff --git a/src/components/wyg-form/interface.d.ts b/src/components/wyg-form/interface.d.ts
deleted file mode 100644
index 34f6eef..0000000
--- a/src/components/wyg-form/interface.d.ts
+++ /dev/null
@@ -1,95 +0,0 @@
-import type { FieldRule } from '@arco-design/web-vue/es/form/interface';
-import { Size, ColProps, CascaderOption, InputProps } from '@arco-design/web-vue';
-console.log(InputProps, 'InputProps=====');
-
-export namespace Form {
- /** 表单项自身Props */
- interface FormItem
{
- field: string;
- label: string;
- tooltip?: string;
- showColon?: boolean;
- noStyle?: boolean;
- disabled?: boolean;
- help?: string;
- extra?: string;
- required?: boolean;
- asteriskPosition?: 'start' | 'end';
- rules?: FieldRule | FieldRule[];
- validateStatus?: 'success' | 'warning' | 'error' | 'validating';
- validateTrigger?: 'change' | 'input' | 'focus' | 'blur';
- labelColProps?: object;
- wrapperColProps?: object;
- hideLabel?: boolean;
- hideAsterisk?: boolean;
- labelColStyle?: object;
- wrapperColStyle?: object;
- rowProps?: object;
- rowClass?: string | Array | object;
- contentClass?: string | Array | object;
- contentFlex?: boolean;
- labelColFlex?: number | string;
- feedback?: boolean;
- labelComponent?: string;
- labelAttrs?: object;
- }
- // 当前 fieldItem 的类型 默认值'input'
- type ComponentType =
- | 'input'
- | 'textarea'
- | 'radio'
- | 'checkbox'
- | 'select'
- | 'time'
- | 'date'
- | 'rangeDate'
- | 'inputNumber'
- | 'cascader'
- | 'title'
- | 'slot';
- /** 自定义Props */
- interface CustomProps {
- component?: ComponentType;
- lists?: object; // 如果 type='checkbox' / 'radio' / 'select'时,需传入此配置项。格式参考FieldItemOptions配置项
- }
- /** Input、Select组件等的Props */
- interface ComponentProps {
- placeholder?: string; // 输入框占位文本
- readonly?: boolean; // 是否只读 false
- allowClear?: boolean; // 是否可清空 false
- onChange?: Function;
- options?: CascaderOption[];
- }
- /** 每一项配置项的属性 */
- interface FieldItem extends FormItem, CustomProps, ComponentProps {
- colProps?: ColProps;
- }
- /** 处理后的配置项属性 */
- interface NewFieldItem extends CustomProps {
- formItemProps: FormItem;
- componentProps: ComponentProps;
- field: string;
- colProps?: ColProps;
- }
- interface FieldItemOptions {
- label: string | number;
- value: string | number;
- }
- /** 表单Form自身Props */
- interface Options {
- layout?: 'horizontal' | 'vertical' | 'inline'; // 表单的布局方式,包括水平、垂直、多列
- size?: Size; // 用于控制该表单内组件的尺寸
- labelColProps?: object; // 标签元素布局选项。参数同 组件一致,默认值span: 5, offset: 0
- wrapperColProps?: object; // 表单控件布局选项。参数同 组件一致,默认值span: 19, offset: 0
- labelAlign?: 'left' | 'right'; // 标签的对齐方向,默认值'right'
- disabled?: boolean; // 是否禁用表单
- rules?: Record; // 表单项校验规则
- autoLabelWidth?: boolean; // 是否开启自动标签宽度,仅在 layout="horizontal" 下生效。默认值false
-
- showResetButton?: boolean; // 是否展示重置按钮
- showCancelButton?: boolean; // 是否展示取消按钮
- submitButtonText?: string;
- resetButtonText?: string;
- cancelButtonText?: string;
- }
-}
diff --git a/src/components/wyg-form/utils.ts b/src/components/wyg-form/utils.ts
deleted file mode 100644
index 9bfdafc..0000000
--- a/src/components/wyg-form/utils.ts
+++ /dev/null
@@ -1,25 +0,0 @@
-import { formItemKeys, customKeys, COL_PROPS } from './constants';
-import type { Form } from './interface';
-// fieldList更新
-export const changeFormList = (formList: Form.NewFieldItem[], updateList: Form.FieldItem[]): Form.NewFieldItem[] => {
- let list: any = formList;
- list.forEach((item: any, index: string | number) => {
- updateList.forEach((ele: any) => {
- if (item.field === ele.field) {
- list[index] = { ...item, ...ele };
- const keys: string[] = Object.keys(ele);
- keys.forEach((key: string) => {
- const val = ele[key];
- if (formItemKeys.includes(key)) {
- list[index].formItemProps[key] = val;
- } else if (customKeys.includes(key) || key === 'colProps') {
- list[index][key] = val;
- } else {
- list[index].componentProps[key] = val;
- }
- });
- }
- });
- });
- return list;
-};
diff --git a/src/components/wyg-table/index.vue b/src/components/wyg-table/index.vue
deleted file mode 100644
index 22d60aa..0000000
--- a/src/components/wyg-table/index.vue
+++ /dev/null
@@ -1,73 +0,0 @@
-
-
-
-
-
-
-
-
diff --git a/src/hooks/useGetAiReviewResult.ts b/src/hooks/useGetAiReviewResult.ts
new file mode 100644
index 0000000..188fd8c
--- /dev/null
+++ b/src/hooks/useGetAiReviewResult.ts
@@ -0,0 +1,80 @@
+export default function useGetAiReviewResult({
+ cardInfo,
+ updateAiReview,
+ startAiReviewFn,
+ getAiReviewResultFn,
+}: {
+ cardInfo: any;
+ updateAiReview: (ai_review: any) => void;
+ startAiReviewFn: (params: {
+ id: string;
+ platform: string;
+ content: string;
+ writerCode: string | undefined;
+ }) => Promise;
+ getAiReviewResultFn: (id: string, ticket: string, writerCode: string | undefined) => Promise;
+}) {
+ const route = useRoute();
+ const statusPollingTimer = ref(null);
+ const ticket = ref('');
+ const checkLoading = ref(false);
+ const checkResult = ref({});
+
+ const writerCode = computed(() => route.params.writerCode);
+
+ const handleStartCheck = async () => {
+ checkLoading.value = true;
+ const { id, platform, content } = cardInfo.value;
+ const { code, data } = await startAiReviewFn({
+ id,
+ platform,
+ content,
+ writerCode: writerCode.value as string | undefined,
+ });
+ if (code === 200) {
+ ticket.value = data.ticket;
+ startStatusPolling();
+ }
+ };
+ const handleAgainCheck = async () => {
+ checkResult.value = {};
+ ticket.value = '';
+ clearStatusPollingTimer();
+ handleStartCheck();
+ };
+ const startStatusPolling = () => {
+ clearStatusPollingTimer();
+ statusPollingTimer.value = setInterval(async () => {
+ const { code, data } = await getAiReviewResultFn(
+ cardInfo.value.id,
+ ticket.value,
+ writerCode.value as string | undefined,
+ );
+ if (code === 200 && data.status === 1) {
+ checkResult.value = data.ai_review;
+ updateAiReview?.(data.ai_review);
+ checkLoading.value = false;
+ clearStatusPollingTimer();
+ }
+ }, 3000);
+ };
+
+ const clearStatusPollingTimer = () => {
+ if (statusPollingTimer.value) {
+ clearInterval(statusPollingTimer.value);
+ statusPollingTimer.value = null;
+ }
+ };
+
+ onUnmounted(() => {
+ clearStatusPollingTimer();
+ });
+
+ return {
+ handleStartCheck,
+ handleAgainCheck,
+ checkResult,
+ checkLoading,
+ ticket,
+ };
+}
diff --git a/src/hooks/useTableSelectionWithPagination.ts b/src/hooks/useTableSelectionWithPagination.ts
index 80ae4aa..71286e5 100644
--- a/src/hooks/useTableSelectionWithPagination.ts
+++ b/src/hooks/useTableSelectionWithPagination.ts
@@ -45,6 +45,7 @@ export function useTableSelectionWithPagination(options: UseTableSelectionWithPa
// 全选/取消全选
const handleSelectAll = (checked: boolean) => {
+ console.log('handleSelectAll', checked)
const currentPageRows = dataSource.value;
const currentPageKeys = currentPageRows.map((v) => v[rowKey]);
diff --git a/src/layouts/Basic.vue b/src/layouts/Basic.vue
index 5b8aafb..935aa40 100644
--- a/src/layouts/Basic.vue
+++ b/src/layouts/Basic.vue
@@ -108,16 +108,19 @@ provide('toggleDrawerMenu', () => {
diff --git a/src/views/components/workplace/modules/product.vue b/src/views/components/workplace/modules/product.vue
index 616cecf..16ee2a2 100644
--- a/src/views/components/workplace/modules/product.vue
+++ b/src/views/components/workplace/modules/product.vue
@@ -24,23 +24,26 @@
@@ -69,7 +71,6 @@ import { now } from '@vueuse/core';
import { trialProduct } from '@/api/all';
import { useRouter } from 'vue-router';
import CustomerServiceModal from '@/components/customer-service-modal.vue';
-import { appRoutes } from '@/router/routes';
import { useSidebarStore } from '@/stores/modules/side-bar';
import { useEnterpriseStore } from '@/stores/modules/enterprise';
@@ -119,7 +120,6 @@ const gotoModule = (menuId: number) => {
'1': 'DataEngineHotTranslation',
'2': 'RepositoryBrandMaterials',
};
- console.log(routeMap[menuId]);
router.push({ name: routeMap[menuId] });
};
@@ -221,38 +221,6 @@ const gotoModule = (menuId: number) => {
.footer {
margin-top: 16px;
-
- .primary-button {
- height: 24px;
- border-radius: 4px;
- gap: 8px;
- padding: 2px 12px;
- background-color: rgba(109, 76, 254, 1) !important;
- font-family: $font-family-medium;
- font-weight: 400;
- font-size: 12px;
- line-height: 20px;
- text-align: right;
- vertical-align: middle;
- color: rgba(255, 255, 255, 1);
- margin-right: 8px;
- }
-
- .outline-button {
- height: 24px;
- border-radius: 4px;
- gap: 8px;
- padding: 2px 12px;
- border: 1px solid var(--Brand-Brand-6, rgba(109, 76, 254, 1));
- font-family: $font-family-medium;
- font-weight: 400;
- font-size: 12px;
- line-height: 20px;
- text-align: right;
- vertical-align: middle;
- color: rgba(109, 76, 254, 1);
- margin-right: 8px;
- }
}
}
diff --git a/src/views/creative-generation-workshop/explore/detail/components/ai-suggest/delete-comment-modal.vue b/src/views/creative-generation-workshop/explore/detail/components/ai-suggest/delete-comment-modal.vue
new file mode 100644
index 0000000..a160c8a
--- /dev/null
+++ b/src/views/creative-generation-workshop/explore/detail/components/ai-suggest/delete-comment-modal.vue
@@ -0,0 +1,39 @@
+
+
+
+
![]()
+
删除的评论将从对话中消失,但仍在被引用的评论中可见
+
+
+ 取消
+ 删除
+
+
+
+
+
diff --git a/src/views/creative-generation-workshop/explore/detail/components/ai-suggest/index.vue b/src/views/creative-generation-workshop/explore/detail/components/ai-suggest/index.vue
new file mode 100644
index 0000000..de7d009
--- /dev/null
+++ b/src/views/creative-generation-workshop/explore/detail/components/ai-suggest/index.vue
@@ -0,0 +1,313 @@
+
+
+
diff --git a/src/views/creative-generation-workshop/explore/detail/components/ai-suggest/style.scss b/src/views/creative-generation-workshop/explore/detail/components/ai-suggest/style.scss
new file mode 100644
index 0000000..51e2f79
--- /dev/null
+++ b/src/views/creative-generation-workshop/explore/detail/components/ai-suggest/style.scss
@@ -0,0 +1,93 @@
+.ai-suggest-box {
+ width: 440px;
+ height: fit-content;
+ max-height: 100%;
+ border-radius: 16px;
+ background: linear-gradient(126deg, #eef2fd 8.36%, #f5ebfe 49.44%, #fdebf3 90.52%);
+ box-shadow: 0 4px 8px 0 rgba(0, 0, 0, 0.1);
+ .cts {
+ color: #939499;
+ font-family: $font-family-regular;
+ font-size: 14px;
+ font-style: normal;
+ font-weight: 400;
+ line-height: 22px;
+ &.bold {
+ font-family: $font-family-medium;
+ }
+ }
+ .ai-text {
+ font-family: $font-family-medium;
+ font-size: 16px;
+ font-style: normal;
+ font-weight: 400;
+ line-height: 24px;
+ background: linear-gradient(85deg, #7d419d 4.56%, #31353d 94.75%);
+ background-clip: text;
+ -webkit-background-clip: text;
+ -webkit-text-fill-color: transparent;
+ }
+ :deep(.arco-textarea-wrapper) {
+ min-height: 38px;
+ display: flex;
+ border-color: transparent !important;
+ align-items: center;
+ border-radius: 8px !important;
+ background-color: #fff;
+ color: #211f24 !important;
+ transition: all 0.3s;
+ &:hover {
+ border-color: #6d4cfe !important;
+ }
+ &.arco-textarea-focus {
+ border-color: #6d4cfe !important;
+ }
+ }
+ .result-box {
+ background: rgba(255, 255, 255, 0.8);
+ backdrop-filter: blur(4px);
+ .result-item {
+ .s1 {
+ color: var(--Brand-6, #6d4cfe);
+ font-family: $font-family-manrope-regular;
+ font-size: 24px;
+ font-style: normal;
+ font-weight: 700;
+ line-height: 32px;
+ }
+ &:first-child {
+ position: relative;
+ &::after {
+ content: '';
+ position: absolute;
+ top: 50%;
+ transform: translateY(-50%);
+ right: 0;
+ width: 1px;
+ height: 32px;
+ background: var(--Border-1, #d7d7d9);
+ }
+ }
+ }
+ }
+ .collapse-box {
+ transition: all 0.3s;
+ }
+ .comment-box {
+ .cm {
+ background: linear-gradient(85deg, #7d419d 4.56%, #31353d 94.75%);
+ background-clip: text;
+ -webkit-background-clip: text;
+ -webkit-text-fill-color: transparent;
+ }
+
+ .comment-list {
+ backdrop-filter: blur(4px);
+ .comment-item {
+ &:not(:last-child) {
+ margin-bottom: 8px;
+ }
+ }
+ }
+ }
+}
diff --git a/src/views/creative-generation-workshop/explore/detail/constants.ts b/src/views/creative-generation-workshop/explore/detail/constants.ts
new file mode 100644
index 0000000..174f732
--- /dev/null
+++ b/src/views/creative-generation-workshop/explore/detail/constants.ts
@@ -0,0 +1,44 @@
+export const ENUM_OPINION = {
+ wait: 0, // 待确认
+ confirm: 1, // 已确认
+};
+
+export const formatRelativeTime = (date: number): string => {
+ const target = dayjs(date * 1000);
+
+ if (!target.isValid()) return '';
+
+ const now = dayjs();
+ // 处理未来时间
+ if (target.isAfter(now)) return '刚刚';
+
+ const diffInMinutes = now.diff(target, 'minute');
+ const diffInHours = now.diff(target, 'hour');
+ const diffInDays = now.diff(target, 'day');
+ const diffInYears = now.diff(target, 'year');
+
+ // 1分钟内
+ if (diffInMinutes < 1) {
+ return '刚刚';
+ }
+ // 1分钟 ~ 1小时
+ else if (diffInMinutes < 60) {
+ return `${diffInMinutes}分钟前`;
+ }
+ // 1小时 ~ 24小时
+ else if (diffInHours < 24) {
+ return `${diffInHours}小时前`;
+ }
+ // 1天 ~ 30天
+ else if (diffInDays < 30) {
+ return `${diffInDays}天前`;
+ }
+ // 超过30天但不到1年
+ else if (diffInYears < 1) {
+ return target.format('MM-DD HH:mm');
+ }
+ // 超过1年
+ else {
+ return target.format('YYYY-MM-DD HH:mm');
+ }
+};
diff --git a/src/views/creative-generation-workshop/explore/detail/index.vue b/src/views/creative-generation-workshop/explore/detail/index.vue
new file mode 100644
index 0000000..da84dd6
--- /dev/null
+++ b/src/views/creative-generation-workshop/explore/detail/index.vue
@@ -0,0 +1,275 @@
+
+
+
diff --git a/src/views/creative-generation-workshop/explore/detail/style.scss b/src/views/creative-generation-workshop/explore/detail/style.scss
new file mode 100644
index 0000000..01e8a64
--- /dev/null
+++ b/src/views/creative-generation-workshop/explore/detail/style.scss
@@ -0,0 +1,106 @@
+.explore-page {
+ position: relative;
+ padding-top: $navbar-height;
+ min-width: 1200px;
+ height: 100vh;
+ background: #fff;
+ display: flex;
+ flex-direction: column;
+ .page-header {
+ position: fixed;
+ left: 0;
+ right: 0;
+ top: 0;
+ z-index: 1000;
+ min-width: 1200px;
+ .content {
+ height: $navbar-height;
+ border-bottom: 1px solid var(--Border-1, #d7d7d9);
+ }
+ }
+ .cts {
+ color: #939499;
+ font-family: $font-family-regular;
+ font-size: 14px;
+ font-style: normal;
+ font-weight: 400;
+ line-height: 22px;
+ &.bold {
+ font-family: $font-family-medium;
+ }
+ }
+
+ .page-wrap {
+ flex: 1;
+ display: flex;
+ justify-content: center;
+ background: #fff;
+ .explore-detail-wrap {
+ min-height: 500px;
+ width: 684px;
+ .title {
+ color: var(--Text-1, #211f24);
+ font-family: $font-family-medium;
+ font-size: 28px;
+ font-style: normal;
+ font-weight: 400;
+ line-height: 40px; /* 142.857% */
+ }
+ }
+ .fold-box {
+ width: 40px;
+ height: 40px;
+ border-radius: 30px;
+ border: 1px solid var(--Border-1, #d7d7d9);
+ background: #fff;
+ box-shadow: 0 8px 16px 0 rgba(0, 0, 0, 0.15);
+ position: absolute;
+ right: 16px;
+ top: 32px;
+ display: flex;
+ justify-content: center;
+ align-items: center;
+ }
+ .main-video-box {
+ width: 320px;
+ height: auto;
+ background: #fff;
+ }
+ .main-img-box {
+ width: 347px;
+ height: auto;
+ background: #fff;
+ aspect-ratio: 3/4;
+ }
+ .desc-img-wrap {
+ display: grid;
+ grid-template-columns: repeat(3, 1fr);
+ gap: 24px;
+ .desc-img-box {
+ width: 212px;
+ height: 283px;
+ background: #fff;
+ object-fit: contain;
+ aspect-ratio: 3/4;
+ }
+ }
+ .play-icon {
+ position: absolute;
+ top: 50%;
+ left: 50%;
+ transform: translate(-50%, -50%);
+ z-index: 222;
+ width: 64px;
+ height: 64px;
+ background-image: url('@/assets/img/creative-generation-workshop/icon-play.png');
+ background-size: contain;
+ background-repeat: no-repeat;
+ background-position: center;
+ transition: background-image 0.3s ease;
+ }
+
+ .play-icon:hover {
+ background-image: url('@/assets/img/creative-generation-workshop/icon-play-hover.png');
+ }
+ }
+}
diff --git a/src/views/creative-generation-workshop/explore/list/index.vue b/src/views/creative-generation-workshop/explore/list/index.vue
new file mode 100644
index 0000000..aea464a
--- /dev/null
+++ b/src/views/creative-generation-workshop/explore/list/index.vue
@@ -0,0 +1,113 @@
+
+
+
diff --git a/src/views/creative-generation-workshop/explore/list/style.scss b/src/views/creative-generation-workshop/explore/list/style.scss
new file mode 100644
index 0000000..b315e92
--- /dev/null
+++ b/src/views/creative-generation-workshop/explore/list/style.scss
@@ -0,0 +1,63 @@
+.explore-page {
+ position: relative;
+ padding-top: $navbar-height;
+ min-width: 1200px;
+ background: #fff;
+ .cts {
+ font-family: $font-family-regular;
+ font-size: 14px;
+ font-style: normal;
+ font-weight: 400;
+ line-height: 22px;
+ &.bold {
+ font-family: $font-family-medium;
+ }
+ }
+ .page-header {
+ position: fixed;
+ left: 0;
+ right: 0;
+ top: 0;
+ z-index: 1000;
+ min-width: 1200px;
+ .content {
+ height: $navbar-height;
+ border-bottom: 1px solid var(--Border-1, #d7d7d9);
+ }
+ }
+ .page-wrapper {
+ background: #fff;
+ min-height: calc(100vh - $navbar-height);
+ .explore-container {
+ width: 1200px;
+ .explore-list-wrap {
+ :deep(.overflow-text) {
+ color: var(--Text-1, #211f24);
+ font-family: $font-family-regular;
+ font-size: 14px;
+ font-style: normal;
+ font-weight: 400;
+ line-height: 22px;
+ &.bold {
+ font-family: $font-family-medium;
+ }
+ }
+ .card-container {
+ display: grid;
+ grid-template-columns: repeat(4, 1fr);
+ gap: 24px;
+ .card-item {
+ border: 1px solid var(--Border-1, #d7d7d9);
+ cursor: pointer;
+ transition: all 0.3s;
+ &:hover {
+ box-shadow: 0 8px 16px 0 rgba(0, 0, 0, 0.15);
+ border: 1.01px solid var(--Border-1, #d7d7d9);
+ border-radius: 8.08px;
+ }
+ }
+ }
+ }
+ }
+ }
+}
diff --git a/src/views/creative-generation-workshop/manuscript-analysis/index.vue b/src/views/creative-generation-workshop/manuscript-analysis/index.vue
new file mode 100644
index 0000000..e69de29
diff --git a/src/views/creative-generation-workshop/manuscript-writer/check-list/components/filter-block/index.vue b/src/views/creative-generation-workshop/manuscript-writer/check-list/components/filter-block/index.vue
new file mode 100644
index 0000000..2cfc05a
--- /dev/null
+++ b/src/views/creative-generation-workshop/manuscript-writer/check-list/components/filter-block/index.vue
@@ -0,0 +1,141 @@
+
+
+
+
+
+
+
+
+
上传时间
+
onDateChange(value, 'created_at')"
+ />
+
+
+
+
审核平台
+
+ {{
+ item.label
+ }}
+
+
+
+
审核时间
+
onDateChange(value, 'audit_started_at')"
+ />
+
+
+
+
+
+
+
+
+ 搜索
+
+
+
+
+
+ 重置
+
+
+
+
+
+
+
diff --git a/src/views/creative-generation-workshop/manuscript-writer/check-list/components/manuscript-check-table/delete-manuscript-modal.vue b/src/views/creative-generation-workshop/manuscript-writer/check-list/components/manuscript-check-table/delete-manuscript-modal.vue
new file mode 100644
index 0000000..8cc9527
--- /dev/null
+++ b/src/views/creative-generation-workshop/manuscript-writer/check-list/components/manuscript-check-table/delete-manuscript-modal.vue
@@ -0,0 +1,53 @@
+
+
+
+
![]()
+
确认删除 {{ projectName }} 这个内容稿件吗?
+
+
+ 取消
+ 确认删除
+
+
+
+
+
diff --git a/src/views/creative-generation-workshop/manuscript-writer/check-list/components/manuscript-check-table/index.vue b/src/views/creative-generation-workshop/manuscript-writer/check-list/components/manuscript-check-table/index.vue
new file mode 100644
index 0000000..71c1a5d
--- /dev/null
+++ b/src/views/creative-generation-workshop/manuscript-writer/check-list/components/manuscript-check-table/index.vue
@@ -0,0 +1,192 @@
+
+ emits('select', selectedKeys, rowKeyValue, record)"
+ @select-all="(check) => emits('selectAll', check)"
+ >
+
+
+
+
+
+
+
+
{{ column.title }}
+
+
+
+
+
+
+
+
+ {{
+ getCustomerOpinionInfo(record.customer_opinion)?.label ?? '-'
+ }}
+
+
+
+ -
+
+
+
+ {{
+ record.ai_review?.compliance_level ? `${record.ai_review?.compliance_level}%` : '-'
+ }}
+
+
+
+
+
+
+
![]()
+
{{
+ record.type === EnumManuscriptType.Image ? '图文' : '视频'
+ }}
+
+
+
+ {{ exactFormatTime(record[column.dataIndex]) }}
+
+
+
+
+
+
+
+
+
+
+
![]()
+
审核
+
查看
+
详情
+
+
+
+ {{ formatTableField(column, record, true) }}
+
+
+
+
+
+
+
+
+
diff --git a/src/views/creative-generation-workshop/manuscript-writer/check-list/components/manuscript-check-table/style.scss b/src/views/creative-generation-workshop/manuscript-writer/check-list/components/manuscript-check-table/style.scss
new file mode 100644
index 0000000..5a1711b
--- /dev/null
+++ b/src/views/creative-generation-workshop/manuscript-writer/check-list/components/manuscript-check-table/style.scss
@@ -0,0 +1,19 @@
+.manuscript-table {
+ .cts {
+ color: var(--Text-1, #211f24);
+ font-family: $font-family-medium;
+ font-size: 14px;
+ font-style: normal;
+ font-weight: 400;
+ line-height: 22px;
+ &.num {
+ font-family: $font-family-manrope-regular;
+ }
+ }
+ :deep(.title) {
+ cursor: pointer;
+ &:hover {
+ color: #6d4cfe;
+ }
+ }
+}
diff --git a/src/views/creative-generation-workshop/manuscript-writer/check-list/constants.ts b/src/views/creative-generation-workshop/manuscript-writer/check-list/constants.ts
new file mode 100644
index 0000000..f1e5eeb
--- /dev/null
+++ b/src/views/creative-generation-workshop/manuscript-writer/check-list/constants.ts
@@ -0,0 +1,244 @@
+export const TABLE_COLUMNS1 = [
+ {
+ title: '序号',
+ dataIndex: 'uid',
+ width: 120,
+ fixed: 'left',
+ sortable: {
+ sortDirections: ['ascend', 'descend'],
+ },
+ },
+ {
+ title: '图片/视频',
+ dataIndex: 'cover',
+ width: 120,
+ },
+ {
+ title: '内容稿件标题',
+ dataIndex: 'title',
+ width: 300,
+ },
+ {
+ title: '稿件类型',
+ dataIndex: 'type',
+ width: 180,
+ },
+ {
+ title: '上传时间',
+ dataIndex: 'updated_at',
+ width: 180,
+ sortable: {
+ sortDirections: ['ascend', 'descend'],
+ },
+ },
+ {
+ title: '最后修改时间',
+ dataIndex: 'last_modified_at',
+ width: 180,
+ sortable: {
+ sortDirections: ['ascend', 'descend'],
+ },
+ },
+ {
+ title: '操作',
+ dataIndex: 'operation',
+ width: 120,
+ fixed: 'right',
+ },
+];
+export const TABLE_COLUMNS2 = [
+ {
+ title: '序号',
+ dataIndex: 'uid',
+ width: 120,
+ fixed: 'left',
+ sortable: {
+ sortDirections: ['ascend', 'descend'],
+ },
+ },
+ {
+ title: '图片/视频',
+ dataIndex: 'cover',
+ width: 120,
+ },
+ {
+ title: '内容稿件标题',
+ dataIndex: 'title',
+ width: 300,
+ },
+ {
+ title: '客户意见',
+ dataIndex: 'customer_opinion',
+ width: 220,
+ },
+ {
+ title: '审核平台',
+ dataIndex: 'platform',
+ width: 120,
+ },
+ {
+ title: '合规程度',
+ dataIndex: 'compliance_level',
+ suffix: '%',
+ width: 120,
+ },
+ {
+ title: '稿件类型',
+ dataIndex: 'type',
+ width: 180,
+ },
+ {
+ title: '审核时间',
+ dataIndex: 'audit_started_at',
+ width: 180,
+ sortable: {
+ sortDirections: ['ascend', 'descend'],
+ },
+ },
+ {
+ title: '最后修改时间',
+ dataIndex: 'last_modified_at',
+ width: 180,
+ sortable: {
+ sortDirections: ['ascend', 'descend'],
+ },
+ },
+ // {
+ // title: '修改人员',
+ // dataIndex: 'last_modifier',
+ // width: 180,
+ // },
+ {
+ title: '操作',
+ dataIndex: 'operation',
+ width: 120,
+ fixed: 'right',
+ },
+];
+export const TABLE_COLUMNS3 = [
+ {
+ title: '序号',
+ dataIndex: 'uid',
+ width: 120,
+ fixed: 'left',
+ sortable: {
+ sortDirections: ['ascend', 'descend'],
+ },
+ },
+ {
+ title: '图片/视频',
+ dataIndex: 'cover',
+ width: 120,
+ },
+ {
+ title: '内容稿件标题',
+ dataIndex: 'title',
+ width: 300,
+ },
+ {
+ title: '客户意见',
+ dataIndex: 'customer_opinion',
+ width: 200,
+ },
+ {
+ title: '审核平台',
+ dataIndex: 'platform',
+ width: 120,
+ },
+ {
+ title: '稿件类型',
+ dataIndex: 'type',
+ width: 180,
+ },
+ {
+ title: '通过时间',
+ dataIndex: 'audit_passed_at',
+ width: 180,
+ sortable: {
+ sortDirections: ['ascend', 'descend'],
+ },
+ },
+ {
+ title: '最后修改时间',
+ dataIndex: 'last_modified_at',
+ width: 180,
+ sortable: {
+ sortDirections: ['ascend', 'descend'],
+ },
+ },
+ // {
+ // title: '修改人员',
+ // dataIndex: 'last_modifier',
+ // width: 180,
+ // },
+ {
+ title: '操作',
+ dataIndex: 'operation',
+ width: 120,
+ fixed: 'right',
+ },
+];
+export enum AuditStatus {
+ Pending = '1',
+ Auditing = '2',
+ Passed = '3',
+}
+
+export const AUDIT_STATUS_LIST = [
+ {
+ label: '待审核',
+ value: AuditStatus.Pending,
+ tableColumns: TABLE_COLUMNS1,
+ },
+ {
+ label: '审核中',
+ value: AuditStatus.Auditing,
+ tableColumns: TABLE_COLUMNS2,
+ },
+ {
+ label: '已通过',
+ value: AuditStatus.Passed,
+ tableColumns: TABLE_COLUMNS3,
+ },
+];
+
+export const INITIAL_QUERY = {
+ audit_status: AuditStatus.Pending,
+ title: '',
+ created_at: [],
+ audit_started_at: [],
+ audit_platform: '',
+ sort_column: undefined,
+ sort_order: undefined,
+};
+
+import icon1 from '@/assets/img/media-account/icon-dy.png';
+import icon2 from '@/assets/img/media-account/icon-xhs.png';
+
+export const PLATFORMS = [
+ {
+ label: '小红书',
+ value: 1,
+ icon: icon2,
+ },
+ {
+ label: '抖音',
+ value: 2,
+ icon: icon1,
+ },
+];
+
+export const CUSTOMER_OPINION = [
+ {
+ label: '待确认',
+ value: 0,
+ bg: '#F2F3F5',
+ color: 'color-#3C4043',
+ },
+ {
+ label: '已确认',
+ value: 1,
+ bg: '#F0EDFF',
+ color: '!color-#6D4CFE',
+ },
+];
diff --git a/src/views/creative-generation-workshop/manuscript-writer/check-list/index.vue b/src/views/creative-generation-workshop/manuscript-writer/check-list/index.vue
new file mode 100644
index 0000000..1316e13
--- /dev/null
+++ b/src/views/creative-generation-workshop/manuscript-writer/check-list/index.vue
@@ -0,0 +1,208 @@
+
+
+
+
+
+
diff --git a/src/views/creative-generation-workshop/manuscript-writer/check-list/style.scss b/src/views/creative-generation-workshop/manuscript-writer/check-list/style.scss
new file mode 100644
index 0000000..a2c29f0
--- /dev/null
+++ b/src/views/creative-generation-workshop/manuscript-writer/check-list/style.scss
@@ -0,0 +1,42 @@
+.manuscript-check-wrap {
+ height: 100%;
+ display: flex;
+ flex-direction: column;
+ .filter-wrap {
+ :deep(.arco-tabs) {
+ .arco-tabs-tab {
+ height: 56px;
+ padding: 0 8px;
+ }
+ .arco-tabs-nav-extra {
+ padding-right: 24px;
+ }
+ .arco-tabs-content {
+ display: none;
+ }
+ }
+ .top {
+ .title {
+ font-family: $font-family-medium;
+ font-style: normal;
+ }
+
+ :deep(.arco-btn) {
+ .arco-btn-icon {
+ line-height: 16px;
+ }
+ }
+ }
+ }
+ .table-wrap {
+ display: flex;
+ flex-direction: column;
+ .pagination-box {
+ display: flex;
+ width: 100%;
+ padding: 16px 24px;
+ justify-content: flex-end;
+ align-items: center;
+ }
+ }
+}
diff --git a/src/views/creative-generation-workshop/manuscript-writer/check/cancel-check-modal.vue b/src/views/creative-generation-workshop/manuscript-writer/check/cancel-check-modal.vue
new file mode 100644
index 0000000..a54389f
--- /dev/null
+++ b/src/views/creative-generation-workshop/manuscript-writer/check/cancel-check-modal.vue
@@ -0,0 +1,58 @@
+
+
+
+
![]()
+
{{
+ action === 'exit'
+ ? '内容已修改尚未保存,若退出编辑,本次修改将不保存。'
+ : '当前内容已修改尚未保存,若切换内容稿件,本次修改将不保存。'
+ }}
+
+
+ 继续编辑
+
+ {{ action === 'exit' ? '确认退出' : '确认切换' }}
+
+
+
+
+
+
diff --git a/src/views/creative-generation-workshop/manuscript-writer/check/check-success-modal.vue b/src/views/creative-generation-workshop/manuscript-writer/check/check-success-modal.vue
new file mode 100644
index 0000000..396a150
--- /dev/null
+++ b/src/views/creative-generation-workshop/manuscript-writer/check/check-success-modal.vue
@@ -0,0 +1,62 @@
+
+
+
+
![]()
+
内容稿件已通过审核
+
想让内容更抓眼球、更吸流量吗?
+
试试「内容稿件分析」功能吧!
+
+
+
+
+
+
+
diff --git a/src/views/creative-generation-workshop/manuscript-writer/check/components/check-list-drawer/index.vue b/src/views/creative-generation-workshop/manuscript-writer/check/components/check-list-drawer/index.vue
new file mode 100644
index 0000000..fa0040b
--- /dev/null
+++ b/src/views/creative-generation-workshop/manuscript-writer/check/components/check-list-drawer/index.vue
@@ -0,0 +1,78 @@
+
+
+
diff --git a/src/views/creative-generation-workshop/manuscript-writer/check/components/check-list-drawer/style.scss b/src/views/creative-generation-workshop/manuscript-writer/check/components/check-list-drawer/style.scss
new file mode 100644
index 0000000..943ca06
--- /dev/null
+++ b/src/views/creative-generation-workshop/manuscript-writer/check/components/check-list-drawer/style.scss
@@ -0,0 +1,31 @@
+.check-list-drawer-xt {
+ .arco-drawer-body {
+ overflow: hidden;
+ display: flex;
+ flex-direction: column;
+ padding: 0 0 24px;
+ .cts {
+ color: var(--Text-1, #939499);
+
+ font-family: $font-family-regular;
+ font-size: 16px;
+ font-style: normal;
+ font-weight: 400;
+ line-height: 24px;
+ &.bold {
+ color: var(--Text-1, #211f24);
+ font-family: $font-family-medium;
+ }
+ }
+ .card-item {
+ border: 1px solid transparent;
+ &:not(:last-child) {
+ margin-bottom: 12px;
+ }
+ &.active {
+ border-color: #6d4cfe;
+ background-color: #f0edff;
+ }
+ }
+ }
+}
diff --git a/src/views/creative-generation-workshop/manuscript-writer/check/components/content-card/constants.ts b/src/views/creative-generation-workshop/manuscript-writer/check/components/content-card/constants.ts
new file mode 100644
index 0000000..791942f
--- /dev/null
+++ b/src/views/creative-generation-workshop/manuscript-writer/check/components/content-card/constants.ts
@@ -0,0 +1,57 @@
+export const escapeRegExp = (str: string) => {
+ return str.replace(/[.*+?^${}()|[\]\\]/g, '\\$&');
+};
+
+export const FORM_RULES = {
+ title: [{ required: true, message: '请输入标题' }],
+};
+export const enumTab = {
+ TEXT: 0,
+ IMAGE: 1,
+};
+export const TAB_LIST = [
+ {
+ label: '文本',
+ value: enumTab.TEXT,
+ },
+ // {
+ // label: '图片',
+ // value: enumTab.IMAGE,
+ // },
+];
+
+export enum Enum_Level {
+ LOW = 0,
+ MEDIUM = 1,
+ HIGH = 2,
+}
+
+export const LEVEL_MAP = new Map([
+ [Enum_Level.LOW, { label: '低风险', value: 'low_risk_number', color: '#6d4cfe' }],
+ [Enum_Level.MEDIUM, { label: '中风险', value: 'medium_risk_number', color: '#FFAE00' }],
+ [Enum_Level.HIGH, { label: '高风险', value: 'high_risk_number', color: '#F64B31' }],
+]);
+
+export const RESULT_LIST = [
+ {
+ label: '合规程度',
+ value: 'compliance_level',
+ color: LEVEL_MAP.get(Enum_Level.LOW)?.color,
+ suffix: '%',
+ },
+ {
+ label: '检验项',
+ value: 'inspection_items',
+ color: '#211F24',
+ },
+ {
+ label: '高风险',
+ value: 'high_risk_number',
+ color: LEVEL_MAP.get(Enum_Level.HIGH)?.color,
+ },
+ {
+ label: '中风险',
+ value: 'medium_risk_number',
+ color: LEVEL_MAP.get(Enum_Level.MEDIUM)?.color,
+ },
+];
diff --git a/src/views/creative-generation-workshop/manuscript-writer/check/components/content-card/highlight-textarea.vue b/src/views/creative-generation-workshop/manuscript-writer/check/components/content-card/highlight-textarea.vue
new file mode 100644
index 0000000..6d4535a
--- /dev/null
+++ b/src/views/creative-generation-workshop/manuscript-writer/check/components/content-card/highlight-textarea.vue
@@ -0,0 +1,179 @@
+
+
+
+
+
+
+
diff --git a/src/views/creative-generation-workshop/manuscript-writer/check/components/content-card/index.vue b/src/views/creative-generation-workshop/manuscript-writer/check/components/content-card/index.vue
new file mode 100644
index 0000000..7737510
--- /dev/null
+++ b/src/views/creative-generation-workshop/manuscript-writer/check/components/content-card/index.vue
@@ -0,0 +1,457 @@
+
+
+
diff --git a/src/views/creative-generation-workshop/manuscript-writer/check/components/content-card/style.scss b/src/views/creative-generation-workshop/manuscript-writer/check/components/content-card/style.scss
new file mode 100644
index 0000000..89c3e5f
--- /dev/null
+++ b/src/views/creative-generation-workshop/manuscript-writer/check/components/content-card/style.scss
@@ -0,0 +1,190 @@
+.content-wrap {
+ .cts {
+ color: #939499;
+ font-family: $font-family-regular;
+ font-size: 14px;
+ font-style: normal;
+ font-weight: 400;
+ line-height: 22px;
+ &.bold {
+ font-family: $font-family-medium;
+ }
+ }
+ .check-text {
+ background: linear-gradient(84deg, #266cff 4.57%, #a15af0 84.93%);
+ background-clip: text;
+ -webkit-background-clip: text;
+ -webkit-text-fill-color: transparent;
+ }
+ .left-box {
+ :deep(.arco-tabs) {
+ .arco-tabs-nav {
+ .arco-tabs-tab {
+ height: 40px;
+ // padding: 0 8px;
+ margin: 0 16px;
+ }
+ &::before {
+ display: none;
+ }
+ }
+ .arco-tabs-content {
+ display: none;
+ }
+ }
+ :deep(.arco-form) {
+ height: 100%;
+ display: flex;
+ flex-direction: column;
+ .arco-form-item {
+ margin-bottom: 24px;
+ .arco-form-item-label-col {
+ .arco-form-item-label {
+ color: #939499;
+ }
+ }
+ }
+ .content-form-item {
+ margin-bottom: 0;
+ display: flex;
+ flex-direction: column;
+ .arco-form-item-wrapper-col {
+ flex: 1;
+ .arco-form-item-content-wrapper,
+ .arco-form-item-content,
+ .arco-textarea-wrapper {
+ height: 100%;
+ }
+ }
+ }
+ }
+ .upload-box {
+ display: flex;
+ width: 100px;
+ height: 100px;
+ cursor: pointer;
+ transition: all 0.3s ease;
+ flex-direction: column;
+ justify-content: center;
+ align-items: center;
+ border-radius: 8px;
+ border: 1px dashed var(--Border-1, #d7d7d9);
+ background: var(--BG-200, #f2f3f5);
+ &:hover {
+ background: var(--Primary-1, #e6e6e8);
+ }
+ }
+ .swiper-wrap {
+ :deep(.swiper) {
+ height: 100%;
+ .swiper-wrapper {
+ align-items: center;
+ .swiper-slide {
+ transition: all;
+ &.active {
+ width: 60px !important;
+ height: 60px !important;
+ .group {
+ border: 2px solid var(--Brand-6, #6d4cfe);
+ background: url() lightgray 50% / cover no-repeat;
+ }
+ }
+ &:hover {
+ .close-icon {
+ display: block;
+ }
+ }
+ }
+ }
+ }
+
+ .swiper-box {
+ position: absolute;
+ margin-top: 0 !important;
+ width: 40px;
+ height: 40px;
+ border-radius: 50%;
+ background: rgba(0, 0, 0, 0.4);
+ transition: all;
+ display: flex;
+ justify-content: center;
+ align-items: center;
+ top: 50%;
+ transform: translateY(-50%);
+ &:hover {
+ background: rgba(0, 0, 0, 0.6);
+ }
+ &.swiper-button-prev {
+ left: 16px;
+ }
+ &.swiper-button-next {
+ right: 16px;
+ }
+ &::after {
+ display: none;
+ }
+ &.swiper-button-disabled {
+ display: none;
+ }
+ }
+ }
+ }
+ .right-box {
+ .s1 {
+ font-family: $font-family-manrope-regular;
+ font-size: 24px;
+ font-style: normal;
+ font-weight: 700;
+ line-height: 32px; /* 133.333% */
+ }
+ .result-item {
+ &:first-child {
+ position: relative;
+ &::after {
+ content: '';
+ position: absolute;
+ top: 50%;
+ transform: translateY(-50%);
+ right: 0;
+ width: 1px;
+ height: 32px;
+ background: var(--Border-1, #d7d7d9);
+ }
+ }
+ }
+ .suggestion-box {
+ .ai-text {
+ background: linear-gradient(85deg, #7d419d 4.56%, #31353d 94.75%);
+ background-clip: text;
+ -webkit-background-clip: text;
+ -webkit-text-fill-color: transparent;
+ font-family: $font-family-medium;
+ font-size: 16px;
+ font-style: normal;
+ font-weight: 400;
+ line-height: 24px;
+ }
+ }
+ :deep(.overflow-text) {
+ color: #211f24;
+ font-family: $font-family-regular;
+ font-size: 14px;
+ font-style: normal;
+ font-weight: 400;
+ line-height: 22px;
+ }
+ .forbid-word-box {
+ :deep(.overflow-text) {
+ &.level0 {
+ color: #6d4cfe;
+ }
+ &.level2 {
+ color: #f64b31;
+ }
+ &.level1 {
+ color: #ffae00;
+ }
+ }
+ }
+ }
+}
diff --git a/src/views/creative-generation-workshop/manuscript-writer/check/components/header-card/index.vue b/src/views/creative-generation-workshop/manuscript-writer/check/components/header-card/index.vue
new file mode 100644
index 0000000..ea569c7
--- /dev/null
+++ b/src/views/creative-generation-workshop/manuscript-writer/check/components/header-card/index.vue
@@ -0,0 +1,116 @@
+
+
+
diff --git a/src/views/creative-generation-workshop/manuscript-writer/check/components/header-card/style.scss b/src/views/creative-generation-workshop/manuscript-writer/check/components/header-card/style.scss
new file mode 100644
index 0000000..9a4dcef
--- /dev/null
+++ b/src/views/creative-generation-workshop/manuscript-writer/check/components/header-card/style.scss
@@ -0,0 +1,74 @@
+.header-wrap {
+ .cts {
+ color: #939499;
+ font-family: $font-family-regular;
+ font-size: 14px;
+ font-style: normal;
+ font-weight: 400;
+ line-height: 22px;
+ &.bold {
+ font-family: $font-family-medium;
+ }
+ }
+ .swiper-wrap {
+ .swiper-item {
+ transition: all;
+ &:hover {
+ background-color: #e6e6e8;
+ }
+ &.active {
+ background-color: #f0edff;
+ border-color: #6d4cfe;
+ :deep(.overflow-text) {
+ font-family: $font-family-medium !important;
+ }
+ }
+ }
+ .swiper-box {
+ width: 100px;
+ height: 64px;
+ position: absolute;
+ &.swiper-button-prev {
+ background: linear-gradient(270deg, rgba(255, 255, 255, 0) 0%, #fff 43.06%);
+ margin-top: 0 !important;
+ top: 0;
+ left: 0;
+ justify-content: flex-start;
+ padding-left: 8px;
+ }
+ &.swiper-button-next {
+ background: linear-gradient(90deg, rgba(255, 255, 255, 0) 0%, #fff 43.06%);
+ margin-top: 0 !important;
+ top: 0;
+ right: 0;
+ justify-content: flex-end;
+ padding-right: 8px;
+ }
+ &::after {
+ display: none;
+ }
+ .swiper-button {
+ width: 40px;
+ height: 40px;
+ background-color: #fff;
+ display: flex;
+ justify-content: center;
+ align-items: center;
+ border-radius: 8px;
+ border: 1px solid var(--Border-1, #d7d7d9);
+ &:hover {
+ background-color: #f7f8fa;
+ }
+ &.click {
+ background-color: #f2f3f5;
+ }
+ }
+ &.swiper-button-disabled {
+ display: none;
+ }
+ }
+ }
+ .platform-row {
+ border-bottom: 1px solid var(--Border-2, #e6e6e8);
+ }
+}
diff --git a/src/views/creative-generation-workshop/manuscript-writer/check/index.vue b/src/views/creative-generation-workshop/manuscript-writer/check/index.vue
new file mode 100644
index 0000000..a33d7d6
--- /dev/null
+++ b/src/views/creative-generation-workshop/manuscript-writer/check/index.vue
@@ -0,0 +1,248 @@
+
+
+
diff --git a/src/views/creative-generation-workshop/manuscript-writer/check/style.scss b/src/views/creative-generation-workshop/manuscript-writer/check/style.scss
new file mode 100644
index 0000000..2a6deb1
--- /dev/null
+++ b/src/views/creative-generation-workshop/manuscript-writer/check/style.scss
@@ -0,0 +1,39 @@
+$footer-height: 68px;
+.manuscript-check-wrap {
+ width: 100%;
+ height: calc(100% - 72px);
+ .cts {
+ color: #939499;
+ font-family: $font-family-regular;
+ font-size: 14px;
+ font-style: normal;
+ font-weight: 400;
+ line-height: 22px;
+ &.bold {
+ font-family: $font-family-medium;
+ }
+ }
+ .check-list-icon {
+ // width: 92px;
+ cursor: pointer;
+ height: 36px;
+ display: flex;
+ padding: 8px 12px;
+ justify-content: center;
+ align-items: center;
+ border-radius: 30px 0 0 30px;
+ border: 1px solid var(--Border-1, #d7d7d9);
+ background: #fff;
+ position: absolute;
+ right: 0;
+ top: calc($navbar-height + 8px);
+ }
+}
+.footer-row {
+ position: fixed;
+ bottom: 0;
+ left: $sidebar-width;
+ width: calc(100% - $sidebar-width);
+ border-top: 1px solid #e6e6e8;
+ height: $footer-height;
+}
diff --git a/src/views/creative-generation-workshop/manuscript-writer/components/edit-form/img-box.vue b/src/views/creative-generation-workshop/manuscript-writer/components/edit-form/img-box.vue
new file mode 100644
index 0000000..0746114
--- /dev/null
+++ b/src/views/creative-generation-workshop/manuscript-writer/components/edit-form/img-box.vue
@@ -0,0 +1,99 @@
+
+
+
+
+ 图片
+ {{ `(${files.length ?? 0}/18)` }}
+ 第一张为首图,支持拖拽排序
+
+
+
+
+
+
+
![]()
+
handleDeleteFile(index)"
+ />
+
+
+
+
+
+
+ 上传图片
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/views/creative-generation-workshop/manuscript-writer/components/edit-form/index.vue b/src/views/creative-generation-workshop/manuscript-writer/components/edit-form/index.vue
new file mode 100644
index 0000000..5330c9c
--- /dev/null
+++ b/src/views/creative-generation-workshop/manuscript-writer/components/edit-form/index.vue
@@ -0,0 +1,376 @@
+
+
+
diff --git a/src/views/creative-generation-workshop/manuscript-writer/components/edit-form/style.scss b/src/views/creative-generation-workshop/manuscript-writer/components/edit-form/style.scss
new file mode 100644
index 0000000..c16695e
--- /dev/null
+++ b/src/views/creative-generation-workshop/manuscript-writer/components/edit-form/style.scss
@@ -0,0 +1,32 @@
+.cts {
+ font-family: $font-family-regular;
+ font-size: 12px;
+ font-style: normal;
+ font-weight: 400;
+ line-height: 20px;
+}
+.upload-box {
+ display: flex;
+ width: 100px;
+ height: 100px;
+ cursor: pointer;
+ transition: all 0.3s ease;
+ flex-direction: column;
+ justify-content: center;
+ align-items: center;
+ border-radius: 8px;
+ border: 1px dashed var(--Border-1, #d7d7d9);
+ background: var(--BG-200, #f2f3f5);
+ &:hover {
+ background: var(--Primary-1, #e6e6e8);
+ }
+}
+.group {
+ border-radius: 8px;
+ &:hover {
+ .group-container {
+ background: linear-gradient(0deg, rgba(0, 0, 0, 0.2) 0%, rgba(0, 0, 0, 0.2) 100%),
+ url() lightgray 0px -40.771px / 100% 149.766% no-repeat;
+ }
+ }
+}
diff --git a/src/views/creative-generation-workshop/manuscript-writer/detail/index.vue b/src/views/creative-generation-workshop/manuscript-writer/detail/index.vue
new file mode 100644
index 0000000..bfd5fa3
--- /dev/null
+++ b/src/views/creative-generation-workshop/manuscript-writer/detail/index.vue
@@ -0,0 +1,193 @@
+
+
+
diff --git a/src/views/creative-generation-workshop/manuscript-writer/detail/style.scss b/src/views/creative-generation-workshop/manuscript-writer/detail/style.scss
new file mode 100644
index 0000000..f3fe2c6
--- /dev/null
+++ b/src/views/creative-generation-workshop/manuscript-writer/detail/style.scss
@@ -0,0 +1,65 @@
+$footer-height: 68px;
+.manuscript-detail-wrap {
+ width: 100%;
+ height: calc(100% - 72px);
+ .cts {
+ color: #939499;
+ font-family: $font-family-regular;
+ font-size: 14px;
+ font-style: normal;
+ font-weight: 400;
+ line-height: 22px;
+ &.bold {
+ font-family: $font-family-medium;
+ }
+ }
+ .main-video-box {
+ width: 320px;
+ height: auto;
+ background: #fff;
+ }
+ .main-img-box {
+ width: 320px;
+ height: auto;
+ background: #fff;
+ aspect-ratio: 3/4;
+ }
+ .desc-img-wrap {
+ display: grid;
+ grid-template-columns: repeat(3, 1fr);
+ gap: 24px;
+ .desc-img-box {
+ width: 212px;
+ height: 283px;
+ background: #fff;
+ object-fit: contain;
+ aspect-ratio: 3/4;
+ }
+ }
+ .play-icon {
+ position: absolute;
+ top: 50%;
+ left: 50%;
+ transform: translate(-50%, -50%);
+ z-index: 222;
+ width: 64px;
+ height: 64px;
+ background-image: url('@/assets/img/creative-generation-workshop/icon-play.png');
+ background-size: contain;
+ background-repeat: no-repeat;
+ background-position: center;
+ transition: background-image 0.3s ease;
+ }
+
+ .play-icon:hover {
+ background-image: url('@/assets/img/creative-generation-workshop/icon-play-hover.png');
+ }
+}
+.footer-row {
+ position: fixed;
+ bottom: 0;
+ left: $sidebar-width;
+ width: calc(100% - $sidebar-width);
+ border-top: 1px solid #e6e6e8;
+ height: $footer-height;
+}
diff --git a/src/views/creative-generation-workshop/manuscript-writer/edit/cancel-edit-modal.vue b/src/views/creative-generation-workshop/manuscript-writer/edit/cancel-edit-modal.vue
new file mode 100644
index 0000000..754b24c
--- /dev/null
+++ b/src/views/creative-generation-workshop/manuscript-writer/edit/cancel-edit-modal.vue
@@ -0,0 +1,35 @@
+
+
+
+
![]()
+
内容已修改尚未保存,若退出编辑,本次修改将不保存。
+
+
+ 继续编辑
+ 确认退出
+
+
+
+
+
diff --git a/src/views/creative-generation-workshop/manuscript-writer/edit/index.vue b/src/views/creative-generation-workshop/manuscript-writer/edit/index.vue
new file mode 100644
index 0000000..2d3f831
--- /dev/null
+++ b/src/views/creative-generation-workshop/manuscript-writer/edit/index.vue
@@ -0,0 +1,132 @@
+
+
+
diff --git a/src/views/creative-generation-workshop/manuscript-writer/edit/style.scss b/src/views/creative-generation-workshop/manuscript-writer/edit/style.scss
new file mode 100644
index 0000000..b574f60
--- /dev/null
+++ b/src/views/creative-generation-workshop/manuscript-writer/edit/style.scss
@@ -0,0 +1,25 @@
+$footer-height: 68px;
+.manuscript-edit-wrap {
+ height: calc(100% - 72px);
+ display: flex;
+ flex-direction: column;
+ .cts {
+ color: #939499;
+ font-family: $font-family-regular;
+ font-size: 14px;
+ font-style: normal;
+ font-weight: 400;
+ line-height: 22px;
+ &.bold {
+ font-family: $font-family-medium;
+ }
+ }
+}
+.footer-row {
+ position: fixed;
+ bottom: 0;
+ left: $sidebar-width;
+ width: calc(100% - $sidebar-width);
+ border-top: 1px solid #e6e6e8;
+ height: $footer-height;
+}
diff --git a/src/views/creative-generation-workshop/manuscript-writer/list/components/filter-block/index.vue b/src/views/creative-generation-workshop/manuscript-writer/list/components/filter-block/index.vue
new file mode 100644
index 0000000..4826fe8
--- /dev/null
+++ b/src/views/creative-generation-workshop/manuscript-writer/list/components/filter-block/index.vue
@@ -0,0 +1,149 @@
+
+
+
+
+
+
+
+ 审核状态
+
+
+
+
+
+
+
+
+ 搜索
+
+
+
+
+
+ 重置
+
+
+
+
+
+
+
diff --git a/src/views/creative-generation-workshop/manuscript-writer/list/components/manuscript-table/constants.ts b/src/views/creative-generation-workshop/manuscript-writer/list/components/manuscript-table/constants.ts
new file mode 100644
index 0000000..6b1a059
--- /dev/null
+++ b/src/views/creative-generation-workshop/manuscript-writer/list/components/manuscript-table/constants.ts
@@ -0,0 +1,68 @@
+export const TABLE_COLUMNS = [
+ {
+ title: '序号',
+ dataIndex: 'uid',
+ width: 120,
+ fixed: 'left',
+ sortable: {
+ sortDirections: ['ascend', 'descend'],
+ },
+ },
+ {
+ title: '图片/视频',
+ dataIndex: 'cover',
+ width: 120,
+ },
+ {
+ title: '内容稿件标题',
+ dataIndex: 'title',
+ width: 240,
+ },
+ // {
+ // title: '所属项目',
+ // dataIndex: 'projects',
+ // width: 240,
+ // },
+ {
+ title: '稿件类型',
+ dataIndex: 'type',
+ width: 180,
+ },
+ {
+ title: '审核状态',
+ dataIndex: 'audit_status',
+ width: 180,
+ },
+ {
+ title: '上传时间',
+ dataIndex: 'updated_at',
+ width: 180,
+ sortable: {
+ sortDirections: ['ascend', 'descend'],
+ },
+ },
+ // {
+ // title: '上传人员',
+ // dataIndex: 'uploader',
+ // width: 180,
+ // },
+ {
+ title: '最后修改时间',
+ dataIndex: 'last_modified_at',
+ width: 180,
+ sortable: {
+ sortDirections: ['ascend', 'descend'],
+ },
+ },
+ // {
+ // title: '最后修改人员',
+ // dataIndex: 'last_modifier',
+ // width: 180,
+ // },
+ {
+ title: '操作',
+ dataIndex: 'operation',
+ width: 180,
+ fixed: 'right'
+ },
+];
diff --git a/src/views/creative-generation-workshop/manuscript-writer/list/components/manuscript-table/delete-manuscript-modal.vue b/src/views/creative-generation-workshop/manuscript-writer/list/components/manuscript-table/delete-manuscript-modal.vue
new file mode 100644
index 0000000..2108398
--- /dev/null
+++ b/src/views/creative-generation-workshop/manuscript-writer/list/components/manuscript-table/delete-manuscript-modal.vue
@@ -0,0 +1,53 @@
+
+
+
+
![]()
+
确认删除 {{ projectName }} 这个稿件吗?
+
+
+ 取消
+ 确认删除
+
+
+
+
+
diff --git a/src/views/creative-generation-workshop/manuscript-writer/list/components/manuscript-table/index.vue b/src/views/creative-generation-workshop/manuscript-writer/list/components/manuscript-table/index.vue
new file mode 100644
index 0000000..fd3f79f
--- /dev/null
+++ b/src/views/creative-generation-workshop/manuscript-writer/list/components/manuscript-table/index.vue
@@ -0,0 +1,141 @@
+
+
+
+
+
+
+
+
+
+
{{ column.title }}
+
+
+
+
+
+
+
+ {{ exactFormatTime(record.create_at) }}
+
+
+
+
+
+
+ {{
+ getStatusInfo(record.audit_status).name
+ }}
+
+
+
+
+
![]()
+
{{
+ record.type === EnumManuscriptType.Image ? '图文' : '视频'
+ }}
+
+
+
+ {{ record[column.dataIndex].name || record[column.dataIndex].mobile }}
+
+
+ {{ exactFormatTime(record[column.dataIndex]) }}
+
+
+
+
+
+
+
+
+
+
+
![]()
+
编辑
+
详情
+
+
+
+ {{ formatTableField(column, record, true) }}
+
+
+
+
+
+
+
+
+
diff --git a/src/views/creative-generation-workshop/manuscript-writer/list/components/manuscript-table/style.scss b/src/views/creative-generation-workshop/manuscript-writer/list/components/manuscript-table/style.scss
new file mode 100644
index 0000000..8621a01
--- /dev/null
+++ b/src/views/creative-generation-workshop/manuscript-writer/list/components/manuscript-table/style.scss
@@ -0,0 +1,16 @@
+.manuscript-table {
+ .cts {
+ color: var(--Text-1, #211f24);
+ font-family: $font-family-medium;
+ font-size: 14px;
+ font-style: normal;
+ font-weight: 400;
+ line-height: 22px;
+ }
+ :deep(.title) {
+ cursor: pointer;
+ &:hover {
+ color: #6d4cfe;
+ }
+ }
+}
diff --git a/src/views/creative-generation-workshop/manuscript-writer/list/components/upload-manuscript-modal/index.vue b/src/views/creative-generation-workshop/manuscript-writer/list/components/upload-manuscript-modal/index.vue
new file mode 100644
index 0000000..19f6c5e
--- /dev/null
+++ b/src/views/creative-generation-workshop/manuscript-writer/list/components/upload-manuscript-modal/index.vue
@@ -0,0 +1,356 @@
+
+
+
diff --git a/src/views/creative-generation-workshop/manuscript-writer/list/components/upload-manuscript-modal/style.scss b/src/views/creative-generation-workshop/manuscript-writer/list/components/upload-manuscript-modal/style.scss
new file mode 100644
index 0000000..494dff7
--- /dev/null
+++ b/src/views/creative-generation-workshop/manuscript-writer/list/components/upload-manuscript-modal/style.scss
@@ -0,0 +1,31 @@
+.upload-manuscript-modal {
+ .text {
+ color: var(--Text-1, #211f24);
+ text-align: center;
+ font-family: $font-family-regular;
+ font-size: 14px;
+ font-style: normal;
+ font-weight: 400;
+ line-height: 22px;
+ }
+ .tip {
+ color: var(--Text-3, #737478);
+ text-align: center;
+ font-family: $font-family-regular;
+ font-size: 12px;
+ font-style: normal;
+ font-weight: 400;
+ line-height: 20px;
+ }
+ .upload-box {
+ display: flex;
+ height: 120px;
+ padding: 0 16px;
+ flex-direction: column;
+ justify-content: center;
+ align-items: center;
+ border-radius: 2px;
+ border: 1px dashed var(--Border-1, #d7d7d9);
+ background: var(--BG-200, #f2f3f5);
+ }
+}
diff --git a/src/views/creative-generation-workshop/manuscript-writer/list/constants.ts b/src/views/creative-generation-workshop/manuscript-writer/list/constants.ts
new file mode 100644
index 0000000..b06f7cd
--- /dev/null
+++ b/src/views/creative-generation-workshop/manuscript-writer/list/constants.ts
@@ -0,0 +1,56 @@
+export const INITIAL_QUERY = {
+ title: '',
+ // project_ids: [],
+ uid: '',
+ audit_status: '',
+ created_at: [],
+ sort_column: undefined,
+ sort_order: undefined,
+};
+
+export enum EnumCheckStatus {
+ All = '',
+ Wait = 1,
+ Checking = 2,
+ Passed = 3,
+}
+export enum EnumManuscriptType {
+ All = '',
+ Image = 0,
+ Video = 1,
+}
+
+export const CHECK_STATUS = [
+ {
+ name: '待审核',
+ id: EnumCheckStatus.Wait,
+ backgroundColor: '#F2F3F5',
+ color: '#3C4043'
+ },
+ {
+ name: '审核中',
+ id: EnumCheckStatus.Checking,
+ backgroundColor: '#FFF7E5',
+ color: '#FFAE00'
+ },
+ {
+ name: '已通过',
+ id: EnumCheckStatus.Passed,
+ backgroundColor: '#EBF7F2',
+ color: '#25C883'
+ },
+];
+export const MANUSCRIPT_TYPE = [
+ {
+ label: '全部',
+ value: EnumManuscriptType.All,
+ },
+ {
+ label: '图片',
+ value: EnumManuscriptType.Image,
+ },
+ {
+ label: '视频',
+ value: EnumManuscriptType.Video,
+ },
+]
diff --git a/src/views/creative-generation-workshop/manuscript-writer/list/index.vue b/src/views/creative-generation-workshop/manuscript-writer/list/index.vue
new file mode 100644
index 0000000..03be800
--- /dev/null
+++ b/src/views/creative-generation-workshop/manuscript-writer/list/index.vue
@@ -0,0 +1,113 @@
+
+
+
+
+
+
diff --git a/src/views/creative-generation-workshop/manuscript-writer/list/style.scss b/src/views/creative-generation-workshop/manuscript-writer/list/style.scss
new file mode 100644
index 0000000..64d8310
--- /dev/null
+++ b/src/views/creative-generation-workshop/manuscript-writer/list/style.scss
@@ -0,0 +1,29 @@
+.manuscript-list-wrap {
+ height: 100%;
+ display: flex;
+ flex-direction: column;
+ .filter-wrap {
+ .top {
+ .title {
+ font-family: $font-family-medium;
+ font-style: normal;
+ }
+ :deep(.arco-btn) {
+ .arco-btn-icon {
+ line-height: 16px;
+ }
+ }
+ }
+ }
+ .table-wrap {
+ display: flex;
+ flex-direction: column;
+ .pagination-box {
+ display: flex;
+ width: 100%;
+ padding: 16px 24px;
+ justify-content: flex-end;
+ align-items: center;
+ }
+ }
+}
diff --git a/src/views/creative-generation-workshop/manuscript-writer/upload/cancel-upload-modal.vue b/src/views/creative-generation-workshop/manuscript-writer/upload/cancel-upload-modal.vue
new file mode 100644
index 0000000..3f847d9
--- /dev/null
+++ b/src/views/creative-generation-workshop/manuscript-writer/upload/cancel-upload-modal.vue
@@ -0,0 +1,39 @@
+
+
+
+
![]()
+
确认取消上传这 {{ num }} 个文件吗?此操作不可恢复。
+
+
+ 继续编辑
+ 确认取消
+
+
+
+
+
diff --git a/src/views/creative-generation-workshop/manuscript-writer/upload/index.vue b/src/views/creative-generation-workshop/manuscript-writer/upload/index.vue
new file mode 100644
index 0000000..b42d1a9
--- /dev/null
+++ b/src/views/creative-generation-workshop/manuscript-writer/upload/index.vue
@@ -0,0 +1,304 @@
+
+
+
diff --git a/src/views/creative-generation-workshop/manuscript-writer/upload/style.scss b/src/views/creative-generation-workshop/manuscript-writer/upload/style.scss
new file mode 100644
index 0000000..f1dadcd
--- /dev/null
+++ b/src/views/creative-generation-workshop/manuscript-writer/upload/style.scss
@@ -0,0 +1,28 @@
+$footer-height: 68px;
+.manuscript-upload-wrap {
+ height: calc(100% - 72px);
+ .cts {
+ color: #939499;
+ font-family: $font-family-regular;
+ font-size: 14px;
+ font-style: normal;
+ font-weight: 400;
+ line-height: 22px;
+ &.bold {
+ font-family: $font-family-medium;
+ }
+ }
+ .right {
+ border-left: 1px solid var(--Border-2, #e6e6e8);
+ width: 320px;
+ flex-shrink: 0;
+ }
+}
+.footer-row {
+ position: fixed;
+ bottom: 0;
+ left: $sidebar-width;
+ width: calc(100% - $sidebar-width);
+ border-top: 1px solid #e6e6e8;
+ height: $footer-height;
+}
diff --git a/src/views/creative-generation-workshop/manuscript-writer/upload/upload-success-modal.vue b/src/views/creative-generation-workshop/manuscript-writer/upload/upload-success-modal.vue
new file mode 100644
index 0000000..8b9e1e9
--- /dev/null
+++ b/src/views/creative-generation-workshop/manuscript-writer/upload/upload-success-modal.vue
@@ -0,0 +1,65 @@
+
+
+
+
![]()
+
上传成功
+
为确保内容合规,建议您立即进行审核
+
检测是否存在违规内容
+
+
+ 回到列表
+ 批量审核
+
+
+
+
+
+
diff --git a/src/views/creative-generation-workshop/manuscript/check-list/components/filter-block/index.vue b/src/views/creative-generation-workshop/manuscript/check-list/components/filter-block/index.vue
new file mode 100644
index 0000000..2cfc05a
--- /dev/null
+++ b/src/views/creative-generation-workshop/manuscript/check-list/components/filter-block/index.vue
@@ -0,0 +1,141 @@
+
+
+
+
+
+
+
+
+
上传时间
+
onDateChange(value, 'created_at')"
+ />
+
+
+
+
审核平台
+
+ {{
+ item.label
+ }}
+
+
+
+
审核时间
+
onDateChange(value, 'audit_started_at')"
+ />
+
+
+
+
+
+
+
+
+ 搜索
+
+
+
+
+
+ 重置
+
+
+
+
+
+
+
diff --git a/src/views/creative-generation-workshop/manuscript/check-list/components/manuscript-check-table/delete-manuscript-modal.vue b/src/views/creative-generation-workshop/manuscript/check-list/components/manuscript-check-table/delete-manuscript-modal.vue
new file mode 100644
index 0000000..39f8fd3
--- /dev/null
+++ b/src/views/creative-generation-workshop/manuscript/check-list/components/manuscript-check-table/delete-manuscript-modal.vue
@@ -0,0 +1,58 @@
+
+
+
+
![]()
+
确认删除 {{ projectName }} 这个内容稿件吗?
+
+
+ 取消
+ 确认删除
+
+
+
+
+
diff --git a/src/views/creative-generation-workshop/manuscript/check-list/components/manuscript-check-table/index.vue b/src/views/creative-generation-workshop/manuscript/check-list/components/manuscript-check-table/index.vue
new file mode 100644
index 0000000..36b096d
--- /dev/null
+++ b/src/views/creative-generation-workshop/manuscript/check-list/components/manuscript-check-table/index.vue
@@ -0,0 +1,195 @@
+
+ emits('select', selectedKeys, rowKeyValue, record)"
+ @select-all="(check) => emits('selectAll', check)"
+ >
+
+
+
+
+
+
+
+
{{ column.title }}
+
+
+
+
+
+
+
+
+ {{
+ getCustomerOpinionInfo(record.customer_opinion)?.label ?? '-'
+ }}
+
+
+
+ -
+
+
+
+ {{ record.ai_review?.compliance_level ? `${record.ai_review?.compliance_level}%` : '-' }}
+
+
+
+
+
+
+
![]()
+
{{
+ record.type === EnumManuscriptType.Image ? '图文' : '视频'
+ }}
+
+
+
+ {{ record[column.dataIndex].name || record[column.dataIndex].mobile }}
+
+
+ {{ exactFormatTime(record[column.dataIndex]) }}
+
+
+
+
+
+
+
+
+
+
+
![]()
+
分享
+
审核
+
查看
+
+
+
+ {{ formatTableField(column, record, true) }}
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/views/creative-generation-workshop/manuscript/check-list/components/manuscript-check-table/style.scss b/src/views/creative-generation-workshop/manuscript/check-list/components/manuscript-check-table/style.scss
new file mode 100644
index 0000000..5a1711b
--- /dev/null
+++ b/src/views/creative-generation-workshop/manuscript/check-list/components/manuscript-check-table/style.scss
@@ -0,0 +1,19 @@
+.manuscript-table {
+ .cts {
+ color: var(--Text-1, #211f24);
+ font-family: $font-family-medium;
+ font-size: 14px;
+ font-style: normal;
+ font-weight: 400;
+ line-height: 22px;
+ &.num {
+ font-family: $font-family-manrope-regular;
+ }
+ }
+ :deep(.title) {
+ cursor: pointer;
+ &:hover {
+ color: #6d4cfe;
+ }
+ }
+}
diff --git a/src/views/creative-generation-workshop/manuscript/check-list/constants.ts b/src/views/creative-generation-workshop/manuscript/check-list/constants.ts
new file mode 100644
index 0000000..c6a9966
--- /dev/null
+++ b/src/views/creative-generation-workshop/manuscript/check-list/constants.ts
@@ -0,0 +1,254 @@
+export const TABLE_COLUMNS1 = [
+ {
+ title: '序号',
+ dataIndex: 'uid',
+ width: 120,
+ fixed: 'left',
+ sortable: {
+ sortDirections: ['ascend', 'descend'],
+ },
+ },
+ {
+ title: '图片/视频',
+ dataIndex: 'cover',
+ width: 120,
+ },
+ {
+ title: '内容稿件标题',
+ dataIndex: 'title',
+ width: 300,
+ },
+ {
+ title: '稿件类型',
+ dataIndex: 'type',
+ width: 180,
+ },
+ {
+ title: '上传时间',
+ dataIndex: 'updated_at',
+ width: 180,
+ sortable: {
+ sortDirections: ['ascend', 'descend'],
+ },
+ },
+ {
+ title: '上传人员',
+ dataIndex: 'uploader',
+ width: 180,
+ },
+ {
+ title: '最后修改时间',
+ dataIndex: 'last_modified_at',
+ width: 180,
+ sortable: {
+ sortDirections: ['ascend', 'descend'],
+ },
+ },
+ {
+ title: '修改人员',
+ dataIndex: 'last_modifier',
+ width: 180,
+ },
+ {
+ title: '操作',
+ dataIndex: 'operation',
+ width: 120,
+ fixed: 'right',
+ },
+];
+export const TABLE_COLUMNS2 = [
+ {
+ title: '序号',
+ dataIndex: 'uid',
+ width: 120,
+ fixed: 'left',
+ sortable: {
+ sortDirections: ['ascend', 'descend'],
+ },
+ },
+ {
+ title: '图片/视频',
+ dataIndex: 'cover',
+ width: 120,
+ },
+ {
+ title: '内容稿件标题',
+ dataIndex: 'title',
+ width: 300,
+ },
+ {
+ title: '客户意见',
+ dataIndex: 'customer_opinion',
+ width: 220,
+ },
+ {
+ title: '审核平台',
+ dataIndex: 'platform',
+ width: 120,
+ },
+ {
+ title: '合规程度',
+ dataIndex: 'compliance_level',
+ suffix: '%',
+ width: 120,
+ },
+ {
+ title: '稿件类型',
+ dataIndex: 'type',
+ width: 180,
+ },
+ {
+ title: '审核时间',
+ dataIndex: 'audit_started_at',
+ width: 180,
+ sortable: {
+ sortDirections: ['ascend', 'descend'],
+ },
+ },
+ {
+ title: '最后修改时间',
+ dataIndex: 'last_modified_at',
+ width: 180,
+ sortable: {
+ sortDirections: ['ascend', 'descend'],
+ },
+ },
+ {
+ title: '修改人员',
+ dataIndex: 'last_modifier',
+ width: 180,
+ },
+ {
+ title: '操作',
+ dataIndex: 'operation',
+ width: 120,
+ fixed: 'right',
+ },
+];
+export const TABLE_COLUMNS3 = [
+ {
+ title: '序号',
+ dataIndex: 'uid',
+ width: 120,
+ fixed: 'left',
+ sortable: {
+ sortDirections: ['ascend', 'descend'],
+ },
+ },
+ {
+ title: '图片/视频',
+ dataIndex: 'cover',
+ width: 120,
+ },
+ {
+ title: '内容稿件标题',
+ dataIndex: 'title',
+ width: 300,
+ },
+ {
+ title: '客户意见',
+ dataIndex: 'customer_opinion',
+ width: 200,
+ },
+ {
+ title: '审核平台',
+ dataIndex: 'platform',
+ width: 120,
+ },
+ {
+ title: '稿件类型',
+ dataIndex: 'type',
+ width: 180,
+ },
+ {
+ title: '通过时间',
+ dataIndex: 'audit_passed_at',
+ width: 180,
+ sortable: {
+ sortDirections: ['ascend', 'descend'],
+ },
+ },
+ {
+ title: '最后修改时间',
+ dataIndex: 'last_modified_at',
+ width: 180,
+ sortable: {
+ sortDirections: ['ascend', 'descend'],
+ },
+ },
+ {
+ title: '修改人员',
+ dataIndex: 'last_modifier',
+ width: 180,
+ },
+ {
+ title: '操作',
+ dataIndex: 'operation',
+ width: 120,
+ fixed: 'right',
+ },
+];
+export enum AuditStatus {
+ Pending = '1',
+ Auditing = '2',
+ Passed = '3',
+}
+
+export const AUDIT_STATUS_LIST = [
+ {
+ label: '待审核',
+ value: AuditStatus.Pending,
+ tableColumns: TABLE_COLUMNS1,
+ },
+ {
+ label: '审核中',
+ value: AuditStatus.Auditing,
+ tableColumns: TABLE_COLUMNS2,
+ },
+ {
+ label: '已通过',
+ value: AuditStatus.Passed,
+ tableColumns: TABLE_COLUMNS3,
+ },
+];
+
+export const INITIAL_QUERY = {
+ audit_status: AuditStatus.Pending,
+ title: '',
+ created_at: [],
+ audit_started_at: [],
+ audit_platform: '',
+ sort_column: undefined,
+ sort_order: undefined,
+};
+
+import icon1 from '@/assets/img/media-account/icon-dy.png';
+import icon2 from '@/assets/img/media-account/icon-xhs.png';
+
+export const PLATFORMS = [
+ {
+ label: '小红书',
+ value: 1,
+ icon: icon2,
+ },
+ {
+ label: '抖音',
+ value: 2,
+ icon: icon1,
+ },
+];
+
+export const CUSTOMER_OPINION = [
+ {
+ label: '待确认',
+ value: 0,
+ bg: '#F2F3F5',
+ color: 'color-#3C4043',
+ },
+ {
+ label: '已确认',
+ value: 1,
+ bg: '#F0EDFF',
+ color: '!color-#6D4CFE',
+ },
+];
diff --git a/src/views/creative-generation-workshop/manuscript/check-list/index.vue b/src/views/creative-generation-workshop/manuscript/check-list/index.vue
new file mode 100644
index 0000000..97a4075
--- /dev/null
+++ b/src/views/creative-generation-workshop/manuscript/check-list/index.vue
@@ -0,0 +1,207 @@
+
+
+
+
+
+
diff --git a/src/views/creative-generation-workshop/manuscript/check-list/style.scss b/src/views/creative-generation-workshop/manuscript/check-list/style.scss
new file mode 100644
index 0000000..a2c29f0
--- /dev/null
+++ b/src/views/creative-generation-workshop/manuscript/check-list/style.scss
@@ -0,0 +1,42 @@
+.manuscript-check-wrap {
+ height: 100%;
+ display: flex;
+ flex-direction: column;
+ .filter-wrap {
+ :deep(.arco-tabs) {
+ .arco-tabs-tab {
+ height: 56px;
+ padding: 0 8px;
+ }
+ .arco-tabs-nav-extra {
+ padding-right: 24px;
+ }
+ .arco-tabs-content {
+ display: none;
+ }
+ }
+ .top {
+ .title {
+ font-family: $font-family-medium;
+ font-style: normal;
+ }
+
+ :deep(.arco-btn) {
+ .arco-btn-icon {
+ line-height: 16px;
+ }
+ }
+ }
+ }
+ .table-wrap {
+ display: flex;
+ flex-direction: column;
+ .pagination-box {
+ display: flex;
+ width: 100%;
+ padding: 16px 24px;
+ justify-content: flex-end;
+ align-items: center;
+ }
+ }
+}
diff --git a/src/views/creative-generation-workshop/manuscript/check/cancel-check-modal.vue b/src/views/creative-generation-workshop/manuscript/check/cancel-check-modal.vue
new file mode 100644
index 0000000..235f796
--- /dev/null
+++ b/src/views/creative-generation-workshop/manuscript/check/cancel-check-modal.vue
@@ -0,0 +1,57 @@
+
+
+
+
![]()
+
{{
+ action === 'exit'
+ ? '内容已修改尚未保存,若退出编辑,本次修改将不保存。'
+ : '当前内容已修改尚未保存,若切换内容稿件,本次修改将不保存。'
+ }}
+
+
+ 继续编辑
+
+ {{ action === 'exit' ? '确认退出' : '确认切换' }}
+
+
+
+
+
+
diff --git a/src/views/creative-generation-workshop/manuscript/check/check-success-modal.vue b/src/views/creative-generation-workshop/manuscript/check/check-success-modal.vue
new file mode 100644
index 0000000..f1b0bf8
--- /dev/null
+++ b/src/views/creative-generation-workshop/manuscript/check/check-success-modal.vue
@@ -0,0 +1,61 @@
+
+
+
+
![]()
+
内容稿件已通过审核
+
想让内容更抓眼球、更吸流量吗?
+
试试「内容稿件分析」功能吧!
+
+
+
+
+
+
+
diff --git a/src/views/creative-generation-workshop/manuscript/check/components/check-list-drawer/index.vue b/src/views/creative-generation-workshop/manuscript/check/components/check-list-drawer/index.vue
new file mode 100644
index 0000000..fa0040b
--- /dev/null
+++ b/src/views/creative-generation-workshop/manuscript/check/components/check-list-drawer/index.vue
@@ -0,0 +1,78 @@
+
+
+
diff --git a/src/views/creative-generation-workshop/manuscript/check/components/check-list-drawer/style.scss b/src/views/creative-generation-workshop/manuscript/check/components/check-list-drawer/style.scss
new file mode 100644
index 0000000..943ca06
--- /dev/null
+++ b/src/views/creative-generation-workshop/manuscript/check/components/check-list-drawer/style.scss
@@ -0,0 +1,31 @@
+.check-list-drawer-xt {
+ .arco-drawer-body {
+ overflow: hidden;
+ display: flex;
+ flex-direction: column;
+ padding: 0 0 24px;
+ .cts {
+ color: var(--Text-1, #939499);
+
+ font-family: $font-family-regular;
+ font-size: 16px;
+ font-style: normal;
+ font-weight: 400;
+ line-height: 24px;
+ &.bold {
+ color: var(--Text-1, #211f24);
+ font-family: $font-family-medium;
+ }
+ }
+ .card-item {
+ border: 1px solid transparent;
+ &:not(:last-child) {
+ margin-bottom: 12px;
+ }
+ &.active {
+ border-color: #6d4cfe;
+ background-color: #f0edff;
+ }
+ }
+ }
+}
diff --git a/src/views/creative-generation-workshop/manuscript/check/components/content-card/constants.ts b/src/views/creative-generation-workshop/manuscript/check/components/content-card/constants.ts
new file mode 100644
index 0000000..791942f
--- /dev/null
+++ b/src/views/creative-generation-workshop/manuscript/check/components/content-card/constants.ts
@@ -0,0 +1,57 @@
+export const escapeRegExp = (str: string) => {
+ return str.replace(/[.*+?^${}()|[\]\\]/g, '\\$&');
+};
+
+export const FORM_RULES = {
+ title: [{ required: true, message: '请输入标题' }],
+};
+export const enumTab = {
+ TEXT: 0,
+ IMAGE: 1,
+};
+export const TAB_LIST = [
+ {
+ label: '文本',
+ value: enumTab.TEXT,
+ },
+ // {
+ // label: '图片',
+ // value: enumTab.IMAGE,
+ // },
+];
+
+export enum Enum_Level {
+ LOW = 0,
+ MEDIUM = 1,
+ HIGH = 2,
+}
+
+export const LEVEL_MAP = new Map([
+ [Enum_Level.LOW, { label: '低风险', value: 'low_risk_number', color: '#6d4cfe' }],
+ [Enum_Level.MEDIUM, { label: '中风险', value: 'medium_risk_number', color: '#FFAE00' }],
+ [Enum_Level.HIGH, { label: '高风险', value: 'high_risk_number', color: '#F64B31' }],
+]);
+
+export const RESULT_LIST = [
+ {
+ label: '合规程度',
+ value: 'compliance_level',
+ color: LEVEL_MAP.get(Enum_Level.LOW)?.color,
+ suffix: '%',
+ },
+ {
+ label: '检验项',
+ value: 'inspection_items',
+ color: '#211F24',
+ },
+ {
+ label: '高风险',
+ value: 'high_risk_number',
+ color: LEVEL_MAP.get(Enum_Level.HIGH)?.color,
+ },
+ {
+ label: '中风险',
+ value: 'medium_risk_number',
+ color: LEVEL_MAP.get(Enum_Level.MEDIUM)?.color,
+ },
+];
diff --git a/src/views/creative-generation-workshop/manuscript/check/components/content-card/highlight-textarea.vue b/src/views/creative-generation-workshop/manuscript/check/components/content-card/highlight-textarea.vue
new file mode 100644
index 0000000..be3b808
--- /dev/null
+++ b/src/views/creative-generation-workshop/manuscript/check/components/content-card/highlight-textarea.vue
@@ -0,0 +1,178 @@
+
+
+
+
+
+
+
diff --git a/src/views/creative-generation-workshop/manuscript/check/components/content-card/index.vue b/src/views/creative-generation-workshop/manuscript/check/components/content-card/index.vue
new file mode 100644
index 0000000..74506bb
--- /dev/null
+++ b/src/views/creative-generation-workshop/manuscript/check/components/content-card/index.vue
@@ -0,0 +1,457 @@
+
+
+
diff --git a/src/views/creative-generation-workshop/manuscript/check/components/content-card/style.scss b/src/views/creative-generation-workshop/manuscript/check/components/content-card/style.scss
new file mode 100644
index 0000000..89c3e5f
--- /dev/null
+++ b/src/views/creative-generation-workshop/manuscript/check/components/content-card/style.scss
@@ -0,0 +1,190 @@
+.content-wrap {
+ .cts {
+ color: #939499;
+ font-family: $font-family-regular;
+ font-size: 14px;
+ font-style: normal;
+ font-weight: 400;
+ line-height: 22px;
+ &.bold {
+ font-family: $font-family-medium;
+ }
+ }
+ .check-text {
+ background: linear-gradient(84deg, #266cff 4.57%, #a15af0 84.93%);
+ background-clip: text;
+ -webkit-background-clip: text;
+ -webkit-text-fill-color: transparent;
+ }
+ .left-box {
+ :deep(.arco-tabs) {
+ .arco-tabs-nav {
+ .arco-tabs-tab {
+ height: 40px;
+ // padding: 0 8px;
+ margin: 0 16px;
+ }
+ &::before {
+ display: none;
+ }
+ }
+ .arco-tabs-content {
+ display: none;
+ }
+ }
+ :deep(.arco-form) {
+ height: 100%;
+ display: flex;
+ flex-direction: column;
+ .arco-form-item {
+ margin-bottom: 24px;
+ .arco-form-item-label-col {
+ .arco-form-item-label {
+ color: #939499;
+ }
+ }
+ }
+ .content-form-item {
+ margin-bottom: 0;
+ display: flex;
+ flex-direction: column;
+ .arco-form-item-wrapper-col {
+ flex: 1;
+ .arco-form-item-content-wrapper,
+ .arco-form-item-content,
+ .arco-textarea-wrapper {
+ height: 100%;
+ }
+ }
+ }
+ }
+ .upload-box {
+ display: flex;
+ width: 100px;
+ height: 100px;
+ cursor: pointer;
+ transition: all 0.3s ease;
+ flex-direction: column;
+ justify-content: center;
+ align-items: center;
+ border-radius: 8px;
+ border: 1px dashed var(--Border-1, #d7d7d9);
+ background: var(--BG-200, #f2f3f5);
+ &:hover {
+ background: var(--Primary-1, #e6e6e8);
+ }
+ }
+ .swiper-wrap {
+ :deep(.swiper) {
+ height: 100%;
+ .swiper-wrapper {
+ align-items: center;
+ .swiper-slide {
+ transition: all;
+ &.active {
+ width: 60px !important;
+ height: 60px !important;
+ .group {
+ border: 2px solid var(--Brand-6, #6d4cfe);
+ background: url() lightgray 50% / cover no-repeat;
+ }
+ }
+ &:hover {
+ .close-icon {
+ display: block;
+ }
+ }
+ }
+ }
+ }
+
+ .swiper-box {
+ position: absolute;
+ margin-top: 0 !important;
+ width: 40px;
+ height: 40px;
+ border-radius: 50%;
+ background: rgba(0, 0, 0, 0.4);
+ transition: all;
+ display: flex;
+ justify-content: center;
+ align-items: center;
+ top: 50%;
+ transform: translateY(-50%);
+ &:hover {
+ background: rgba(0, 0, 0, 0.6);
+ }
+ &.swiper-button-prev {
+ left: 16px;
+ }
+ &.swiper-button-next {
+ right: 16px;
+ }
+ &::after {
+ display: none;
+ }
+ &.swiper-button-disabled {
+ display: none;
+ }
+ }
+ }
+ }
+ .right-box {
+ .s1 {
+ font-family: $font-family-manrope-regular;
+ font-size: 24px;
+ font-style: normal;
+ font-weight: 700;
+ line-height: 32px; /* 133.333% */
+ }
+ .result-item {
+ &:first-child {
+ position: relative;
+ &::after {
+ content: '';
+ position: absolute;
+ top: 50%;
+ transform: translateY(-50%);
+ right: 0;
+ width: 1px;
+ height: 32px;
+ background: var(--Border-1, #d7d7d9);
+ }
+ }
+ }
+ .suggestion-box {
+ .ai-text {
+ background: linear-gradient(85deg, #7d419d 4.56%, #31353d 94.75%);
+ background-clip: text;
+ -webkit-background-clip: text;
+ -webkit-text-fill-color: transparent;
+ font-family: $font-family-medium;
+ font-size: 16px;
+ font-style: normal;
+ font-weight: 400;
+ line-height: 24px;
+ }
+ }
+ :deep(.overflow-text) {
+ color: #211f24;
+ font-family: $font-family-regular;
+ font-size: 14px;
+ font-style: normal;
+ font-weight: 400;
+ line-height: 22px;
+ }
+ .forbid-word-box {
+ :deep(.overflow-text) {
+ &.level0 {
+ color: #6d4cfe;
+ }
+ &.level2 {
+ color: #f64b31;
+ }
+ &.level1 {
+ color: #ffae00;
+ }
+ }
+ }
+ }
+}
diff --git a/src/views/creative-generation-workshop/manuscript/check/components/header-card/index.vue b/src/views/creative-generation-workshop/manuscript/check/components/header-card/index.vue
new file mode 100644
index 0000000..ea569c7
--- /dev/null
+++ b/src/views/creative-generation-workshop/manuscript/check/components/header-card/index.vue
@@ -0,0 +1,116 @@
+
+
+
diff --git a/src/views/creative-generation-workshop/manuscript/check/components/header-card/style.scss b/src/views/creative-generation-workshop/manuscript/check/components/header-card/style.scss
new file mode 100644
index 0000000..9a4dcef
--- /dev/null
+++ b/src/views/creative-generation-workshop/manuscript/check/components/header-card/style.scss
@@ -0,0 +1,74 @@
+.header-wrap {
+ .cts {
+ color: #939499;
+ font-family: $font-family-regular;
+ font-size: 14px;
+ font-style: normal;
+ font-weight: 400;
+ line-height: 22px;
+ &.bold {
+ font-family: $font-family-medium;
+ }
+ }
+ .swiper-wrap {
+ .swiper-item {
+ transition: all;
+ &:hover {
+ background-color: #e6e6e8;
+ }
+ &.active {
+ background-color: #f0edff;
+ border-color: #6d4cfe;
+ :deep(.overflow-text) {
+ font-family: $font-family-medium !important;
+ }
+ }
+ }
+ .swiper-box {
+ width: 100px;
+ height: 64px;
+ position: absolute;
+ &.swiper-button-prev {
+ background: linear-gradient(270deg, rgba(255, 255, 255, 0) 0%, #fff 43.06%);
+ margin-top: 0 !important;
+ top: 0;
+ left: 0;
+ justify-content: flex-start;
+ padding-left: 8px;
+ }
+ &.swiper-button-next {
+ background: linear-gradient(90deg, rgba(255, 255, 255, 0) 0%, #fff 43.06%);
+ margin-top: 0 !important;
+ top: 0;
+ right: 0;
+ justify-content: flex-end;
+ padding-right: 8px;
+ }
+ &::after {
+ display: none;
+ }
+ .swiper-button {
+ width: 40px;
+ height: 40px;
+ background-color: #fff;
+ display: flex;
+ justify-content: center;
+ align-items: center;
+ border-radius: 8px;
+ border: 1px solid var(--Border-1, #d7d7d9);
+ &:hover {
+ background-color: #f7f8fa;
+ }
+ &.click {
+ background-color: #f2f3f5;
+ }
+ }
+ &.swiper-button-disabled {
+ display: none;
+ }
+ }
+ }
+ .platform-row {
+ border-bottom: 1px solid var(--Border-2, #e6e6e8);
+ }
+}
diff --git a/src/views/creative-generation-workshop/manuscript/check/index.vue b/src/views/creative-generation-workshop/manuscript/check/index.vue
new file mode 100644
index 0000000..30f5eba
--- /dev/null
+++ b/src/views/creative-generation-workshop/manuscript/check/index.vue
@@ -0,0 +1,250 @@
+
+
+
diff --git a/src/views/creative-generation-workshop/manuscript/check/style.scss b/src/views/creative-generation-workshop/manuscript/check/style.scss
new file mode 100644
index 0000000..2a6deb1
--- /dev/null
+++ b/src/views/creative-generation-workshop/manuscript/check/style.scss
@@ -0,0 +1,39 @@
+$footer-height: 68px;
+.manuscript-check-wrap {
+ width: 100%;
+ height: calc(100% - 72px);
+ .cts {
+ color: #939499;
+ font-family: $font-family-regular;
+ font-size: 14px;
+ font-style: normal;
+ font-weight: 400;
+ line-height: 22px;
+ &.bold {
+ font-family: $font-family-medium;
+ }
+ }
+ .check-list-icon {
+ // width: 92px;
+ cursor: pointer;
+ height: 36px;
+ display: flex;
+ padding: 8px 12px;
+ justify-content: center;
+ align-items: center;
+ border-radius: 30px 0 0 30px;
+ border: 1px solid var(--Border-1, #d7d7d9);
+ background: #fff;
+ position: absolute;
+ right: 0;
+ top: calc($navbar-height + 8px);
+ }
+}
+.footer-row {
+ position: fixed;
+ bottom: 0;
+ left: $sidebar-width;
+ width: calc(100% - $sidebar-width);
+ border-top: 1px solid #e6e6e8;
+ height: $footer-height;
+}
diff --git a/src/views/creative-generation-workshop/manuscript/components/edit-form/img-box.vue b/src/views/creative-generation-workshop/manuscript/components/edit-form/img-box.vue
new file mode 100644
index 0000000..0746114
--- /dev/null
+++ b/src/views/creative-generation-workshop/manuscript/components/edit-form/img-box.vue
@@ -0,0 +1,99 @@
+
+
+
+
+ 图片
+ {{ `(${files.length ?? 0}/18)` }}
+ 第一张为首图,支持拖拽排序
+
+
+
+
+
+
+
![]()
+
handleDeleteFile(index)"
+ />
+
+
+
+
+
+
+ 上传图片
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/views/creative-generation-workshop/manuscript/components/edit-form/index.vue b/src/views/creative-generation-workshop/manuscript/components/edit-form/index.vue
new file mode 100644
index 0000000..a4c5888
--- /dev/null
+++ b/src/views/creative-generation-workshop/manuscript/components/edit-form/index.vue
@@ -0,0 +1,374 @@
+
+
+
diff --git a/src/views/creative-generation-workshop/manuscript/components/edit-form/style.scss b/src/views/creative-generation-workshop/manuscript/components/edit-form/style.scss
new file mode 100644
index 0000000..c16695e
--- /dev/null
+++ b/src/views/creative-generation-workshop/manuscript/components/edit-form/style.scss
@@ -0,0 +1,32 @@
+.cts {
+ font-family: $font-family-regular;
+ font-size: 12px;
+ font-style: normal;
+ font-weight: 400;
+ line-height: 20px;
+}
+.upload-box {
+ display: flex;
+ width: 100px;
+ height: 100px;
+ cursor: pointer;
+ transition: all 0.3s ease;
+ flex-direction: column;
+ justify-content: center;
+ align-items: center;
+ border-radius: 8px;
+ border: 1px dashed var(--Border-1, #d7d7d9);
+ background: var(--BG-200, #f2f3f5);
+ &:hover {
+ background: var(--Primary-1, #e6e6e8);
+ }
+}
+.group {
+ border-radius: 8px;
+ &:hover {
+ .group-container {
+ background: linear-gradient(0deg, rgba(0, 0, 0, 0.2) 0%, rgba(0, 0, 0, 0.2) 100%),
+ url() lightgray 0px -40.771px / 100% 149.766% no-repeat;
+ }
+ }
+}
diff --git a/src/views/creative-generation-workshop/manuscript/components/share-manuscript-modal/constants.ts b/src/views/creative-generation-workshop/manuscript/components/share-manuscript-modal/constants.ts
new file mode 100644
index 0000000..19964f0
--- /dev/null
+++ b/src/views/creative-generation-workshop/manuscript/components/share-manuscript-modal/constants.ts
@@ -0,0 +1,40 @@
+export const INITIAL_FORM = {
+ audit_status: '',
+ sort_column: undefined,
+ sort_order: undefined,
+};
+
+export const TABLE_COLUMNS = [
+ {
+ title: '序号',
+ dataIndex: 'uid',
+ width: 120,
+ fixed: 'left',
+ sortable: {
+ sortDirections: ['ascend', 'descend'],
+ },
+ },
+ {
+ title: '内容稿件标题',
+ dataIndex: 'title',
+ width: 220,
+ },
+ {
+ title: '审核状态',
+ dataIndex: 'audit_status',
+ width: 120,
+ },
+ {
+ title: '稿件类型',
+ dataIndex: 'type',
+ width: 120,
+ },
+ {
+ title: '最后修改时间',
+ dataIndex: 'last_modified_at',
+ width: 160,
+ sortable: {
+ sortDirections: ['ascend', 'descend'],
+ },
+ },
+];
diff --git a/src/views/creative-generation-workshop/manuscript/components/share-manuscript-modal/index.vue b/src/views/creative-generation-workshop/manuscript/components/share-manuscript-modal/index.vue
new file mode 100644
index 0000000..ffa1247
--- /dev/null
+++ b/src/views/creative-generation-workshop/manuscript/components/share-manuscript-modal/index.vue
@@ -0,0 +1,293 @@
+
+
+
diff --git a/src/views/creative-generation-workshop/manuscript/components/share-manuscript-modal/share-modal.vue b/src/views/creative-generation-workshop/manuscript/components/share-manuscript-modal/share-modal.vue
new file mode 100644
index 0000000..968bc01
--- /dev/null
+++ b/src/views/creative-generation-workshop/manuscript/components/share-manuscript-modal/share-modal.vue
@@ -0,0 +1,137 @@
+
diff --git a/src/views/creative-generation-workshop/manuscript/components/share-manuscript-modal/style.scss b/src/views/creative-generation-workshop/manuscript/components/share-manuscript-modal/style.scss
new file mode 100644
index 0000000..d3dc205
--- /dev/null
+++ b/src/views/creative-generation-workshop/manuscript/components/share-manuscript-modal/style.scss
@@ -0,0 +1,27 @@
+.share-manuscript-modal {
+ .cts {
+ font-family: $font-family-regular;
+ font-size: 12px;
+ font-style: normal;
+ font-weight: 400;
+ line-height: 20px;
+ &.bold {
+ font-family: $font-family-medium;
+ }
+ }
+ .filter-row-item {
+ .label {
+ color: var(--Text-1, #211f24);
+ font-size: 14px;
+ }
+ }
+ .arco-modal-body {
+ height: 464px;
+ display: flex;
+ flex-direction: column;
+ overflow: hidden;
+ .arco-scrollbar-track {
+ display: none !important;
+ }
+ }
+}
diff --git a/src/views/creative-generation-workshop/manuscript/detail/index.vue b/src/views/creative-generation-workshop/manuscript/detail/index.vue
new file mode 100644
index 0000000..fbbdcc1
--- /dev/null
+++ b/src/views/creative-generation-workshop/manuscript/detail/index.vue
@@ -0,0 +1,192 @@
+
+
+
diff --git a/src/views/creative-generation-workshop/manuscript/detail/style.scss b/src/views/creative-generation-workshop/manuscript/detail/style.scss
new file mode 100644
index 0000000..f3fe2c6
--- /dev/null
+++ b/src/views/creative-generation-workshop/manuscript/detail/style.scss
@@ -0,0 +1,65 @@
+$footer-height: 68px;
+.manuscript-detail-wrap {
+ width: 100%;
+ height: calc(100% - 72px);
+ .cts {
+ color: #939499;
+ font-family: $font-family-regular;
+ font-size: 14px;
+ font-style: normal;
+ font-weight: 400;
+ line-height: 22px;
+ &.bold {
+ font-family: $font-family-medium;
+ }
+ }
+ .main-video-box {
+ width: 320px;
+ height: auto;
+ background: #fff;
+ }
+ .main-img-box {
+ width: 320px;
+ height: auto;
+ background: #fff;
+ aspect-ratio: 3/4;
+ }
+ .desc-img-wrap {
+ display: grid;
+ grid-template-columns: repeat(3, 1fr);
+ gap: 24px;
+ .desc-img-box {
+ width: 212px;
+ height: 283px;
+ background: #fff;
+ object-fit: contain;
+ aspect-ratio: 3/4;
+ }
+ }
+ .play-icon {
+ position: absolute;
+ top: 50%;
+ left: 50%;
+ transform: translate(-50%, -50%);
+ z-index: 222;
+ width: 64px;
+ height: 64px;
+ background-image: url('@/assets/img/creative-generation-workshop/icon-play.png');
+ background-size: contain;
+ background-repeat: no-repeat;
+ background-position: center;
+ transition: background-image 0.3s ease;
+ }
+
+ .play-icon:hover {
+ background-image: url('@/assets/img/creative-generation-workshop/icon-play-hover.png');
+ }
+}
+.footer-row {
+ position: fixed;
+ bottom: 0;
+ left: $sidebar-width;
+ width: calc(100% - $sidebar-width);
+ border-top: 1px solid #e6e6e8;
+ height: $footer-height;
+}
diff --git a/src/views/creative-generation-workshop/manuscript/edit/cancel-edit-modal.vue b/src/views/creative-generation-workshop/manuscript/edit/cancel-edit-modal.vue
new file mode 100644
index 0000000..7aff674
--- /dev/null
+++ b/src/views/creative-generation-workshop/manuscript/edit/cancel-edit-modal.vue
@@ -0,0 +1,34 @@
+
+
+
+
![]()
+
内容已修改尚未保存,若退出编辑,本次修改将不保存。
+
+
+ 继续编辑
+ 确认退出
+
+
+
+
+
diff --git a/src/views/creative-generation-workshop/manuscript/edit/index.vue b/src/views/creative-generation-workshop/manuscript/edit/index.vue
new file mode 100644
index 0000000..ae2abdb
--- /dev/null
+++ b/src/views/creative-generation-workshop/manuscript/edit/index.vue
@@ -0,0 +1,130 @@
+
+
+
diff --git a/src/views/creative-generation-workshop/manuscript/edit/style.scss b/src/views/creative-generation-workshop/manuscript/edit/style.scss
new file mode 100644
index 0000000..b574f60
--- /dev/null
+++ b/src/views/creative-generation-workshop/manuscript/edit/style.scss
@@ -0,0 +1,25 @@
+$footer-height: 68px;
+.manuscript-edit-wrap {
+ height: calc(100% - 72px);
+ display: flex;
+ flex-direction: column;
+ .cts {
+ color: #939499;
+ font-family: $font-family-regular;
+ font-size: 14px;
+ font-style: normal;
+ font-weight: 400;
+ line-height: 22px;
+ &.bold {
+ font-family: $font-family-medium;
+ }
+ }
+}
+.footer-row {
+ position: fixed;
+ bottom: 0;
+ left: $sidebar-width;
+ width: calc(100% - $sidebar-width);
+ border-top: 1px solid #e6e6e8;
+ height: $footer-height;
+}
diff --git a/src/views/creative-generation-workshop/manuscript/list/components/filter-block/index.vue b/src/views/creative-generation-workshop/manuscript/list/components/filter-block/index.vue
new file mode 100644
index 0000000..9e411aa
--- /dev/null
+++ b/src/views/creative-generation-workshop/manuscript/list/components/filter-block/index.vue
@@ -0,0 +1,149 @@
+
+
+
+
+
+
+
+ 审核状态
+
+
+
+
+
+
+
+
+ 搜索
+
+
+
+
+
+ 重置
+
+
+
+
+
+
+
diff --git a/src/views/creative-generation-workshop/manuscript/list/components/manuscript-table/constants.ts b/src/views/creative-generation-workshop/manuscript/list/components/manuscript-table/constants.ts
new file mode 100644
index 0000000..5199e88
--- /dev/null
+++ b/src/views/creative-generation-workshop/manuscript/list/components/manuscript-table/constants.ts
@@ -0,0 +1,68 @@
+export const TABLE_COLUMNS = [
+ {
+ title: '序号',
+ dataIndex: 'uid',
+ width: 120,
+ fixed: 'left',
+ sortable: {
+ sortDirections: ['ascend', 'descend'],
+ },
+ },
+ {
+ title: '图片/视频',
+ dataIndex: 'cover',
+ width: 120,
+ },
+ {
+ title: '内容稿件标题',
+ dataIndex: 'title',
+ width: 240,
+ },
+ // {
+ // title: '所属项目',
+ // dataIndex: 'projects',
+ // width: 240,
+ // },
+ {
+ title: '稿件类型',
+ dataIndex: 'type',
+ width: 180,
+ },
+ {
+ title: '审核状态',
+ dataIndex: 'audit_status',
+ width: 180,
+ },
+ {
+ title: '上传时间',
+ dataIndex: 'updated_at',
+ width: 180,
+ sortable: {
+ sortDirections: ['ascend', 'descend'],
+ },
+ },
+ {
+ title: '上传人员',
+ dataIndex: 'uploader',
+ width: 180,
+ },
+ {
+ title: '最后修改时间',
+ dataIndex: 'last_modified_at',
+ width: 180,
+ sortable: {
+ sortDirections: ['ascend', 'descend'],
+ },
+ },
+ {
+ title: '最后修改人员',
+ dataIndex: 'last_modifier',
+ width: 180,
+ },
+ {
+ title: '操作',
+ dataIndex: 'operation',
+ width: 180,
+ fixed: 'right'
+ },
+];
diff --git a/src/views/creative-generation-workshop/manuscript/list/components/manuscript-table/delete-manuscript-modal.vue b/src/views/creative-generation-workshop/manuscript/list/components/manuscript-table/delete-manuscript-modal.vue
new file mode 100644
index 0000000..ef68bd5
--- /dev/null
+++ b/src/views/creative-generation-workshop/manuscript/list/components/manuscript-table/delete-manuscript-modal.vue
@@ -0,0 +1,58 @@
+
+
+
+
![]()
+
确认删除 {{ projectName }} 这个稿件吗?
+
+
+ 取消
+ 确认删除
+
+
+
+
+
diff --git a/src/views/creative-generation-workshop/manuscript/list/components/manuscript-table/index.vue b/src/views/creative-generation-workshop/manuscript/list/components/manuscript-table/index.vue
new file mode 100644
index 0000000..ef2b35c
--- /dev/null
+++ b/src/views/creative-generation-workshop/manuscript/list/components/manuscript-table/index.vue
@@ -0,0 +1,143 @@
+
+
+
+
+
+
+
+
+
+
{{ column.title }}
+
+
+
+
+
+
+
+ {{ exactFormatTime(record.create_at) }}
+
+
+
+
+
+
+ {{
+ getStatusInfo(record.audit_status).name
+ }}
+
+
+
+
+
![]()
+
{{
+ record.type === EnumManuscriptType.Image ? '图文' : '视频'
+ }}
+
+
+
+ {{ record[column.dataIndex].name || record[column.dataIndex].mobile }}
+
+
+ {{ exactFormatTime(record[column.dataIndex]) }}
+
+
+
+
+
+
+
+
+
+
+
+
+
![]()
+
编辑
+
详情
+
+
+
+ {{ formatTableField(column, record, true) }}
+
+
+
+
+
+
+
+
+
diff --git a/src/views/creative-generation-workshop/manuscript/list/components/manuscript-table/style.scss b/src/views/creative-generation-workshop/manuscript/list/components/manuscript-table/style.scss
new file mode 100644
index 0000000..8621a01
--- /dev/null
+++ b/src/views/creative-generation-workshop/manuscript/list/components/manuscript-table/style.scss
@@ -0,0 +1,16 @@
+.manuscript-table {
+ .cts {
+ color: var(--Text-1, #211f24);
+ font-family: $font-family-medium;
+ font-size: 14px;
+ font-style: normal;
+ font-weight: 400;
+ line-height: 22px;
+ }
+ :deep(.title) {
+ cursor: pointer;
+ &:hover {
+ color: #6d4cfe;
+ }
+ }
+}
diff --git a/src/views/creative-generation-workshop/manuscript/list/components/upload-manuscript-modal/index.vue b/src/views/creative-generation-workshop/manuscript/list/components/upload-manuscript-modal/index.vue
new file mode 100644
index 0000000..1ec17ad
--- /dev/null
+++ b/src/views/creative-generation-workshop/manuscript/list/components/upload-manuscript-modal/index.vue
@@ -0,0 +1,390 @@
+
+
+
diff --git a/src/views/creative-generation-workshop/manuscript/list/components/upload-manuscript-modal/style.scss b/src/views/creative-generation-workshop/manuscript/list/components/upload-manuscript-modal/style.scss
new file mode 100644
index 0000000..494dff7
--- /dev/null
+++ b/src/views/creative-generation-workshop/manuscript/list/components/upload-manuscript-modal/style.scss
@@ -0,0 +1,31 @@
+.upload-manuscript-modal {
+ .text {
+ color: var(--Text-1, #211f24);
+ text-align: center;
+ font-family: $font-family-regular;
+ font-size: 14px;
+ font-style: normal;
+ font-weight: 400;
+ line-height: 22px;
+ }
+ .tip {
+ color: var(--Text-3, #737478);
+ text-align: center;
+ font-family: $font-family-regular;
+ font-size: 12px;
+ font-style: normal;
+ font-weight: 400;
+ line-height: 20px;
+ }
+ .upload-box {
+ display: flex;
+ height: 120px;
+ padding: 0 16px;
+ flex-direction: column;
+ justify-content: center;
+ align-items: center;
+ border-radius: 2px;
+ border: 1px dashed var(--Border-1, #d7d7d9);
+ background: var(--BG-200, #f2f3f5);
+ }
+}
diff --git a/src/views/creative-generation-workshop/manuscript/list/constants.ts b/src/views/creative-generation-workshop/manuscript/list/constants.ts
new file mode 100644
index 0000000..b06f7cd
--- /dev/null
+++ b/src/views/creative-generation-workshop/manuscript/list/constants.ts
@@ -0,0 +1,56 @@
+export const INITIAL_QUERY = {
+ title: '',
+ // project_ids: [],
+ uid: '',
+ audit_status: '',
+ created_at: [],
+ sort_column: undefined,
+ sort_order: undefined,
+};
+
+export enum EnumCheckStatus {
+ All = '',
+ Wait = 1,
+ Checking = 2,
+ Passed = 3,
+}
+export enum EnumManuscriptType {
+ All = '',
+ Image = 0,
+ Video = 1,
+}
+
+export const CHECK_STATUS = [
+ {
+ name: '待审核',
+ id: EnumCheckStatus.Wait,
+ backgroundColor: '#F2F3F5',
+ color: '#3C4043'
+ },
+ {
+ name: '审核中',
+ id: EnumCheckStatus.Checking,
+ backgroundColor: '#FFF7E5',
+ color: '#FFAE00'
+ },
+ {
+ name: '已通过',
+ id: EnumCheckStatus.Passed,
+ backgroundColor: '#EBF7F2',
+ color: '#25C883'
+ },
+];
+export const MANUSCRIPT_TYPE = [
+ {
+ label: '全部',
+ value: EnumManuscriptType.All,
+ },
+ {
+ label: '图片',
+ value: EnumManuscriptType.Image,
+ },
+ {
+ label: '视频',
+ value: EnumManuscriptType.Video,
+ },
+]
diff --git a/src/views/creative-generation-workshop/manuscript/list/index.vue b/src/views/creative-generation-workshop/manuscript/list/index.vue
new file mode 100644
index 0000000..457862e
--- /dev/null
+++ b/src/views/creative-generation-workshop/manuscript/list/index.vue
@@ -0,0 +1,121 @@
+
+
+
+
+
内容稿件列表
+
+
+ 分享内容稿件
+
+
+
+
+
+ 上传内容稿件
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/views/creative-generation-workshop/manuscript/list/style.scss b/src/views/creative-generation-workshop/manuscript/list/style.scss
new file mode 100644
index 0000000..64d8310
--- /dev/null
+++ b/src/views/creative-generation-workshop/manuscript/list/style.scss
@@ -0,0 +1,29 @@
+.manuscript-list-wrap {
+ height: 100%;
+ display: flex;
+ flex-direction: column;
+ .filter-wrap {
+ .top {
+ .title {
+ font-family: $font-family-medium;
+ font-style: normal;
+ }
+ :deep(.arco-btn) {
+ .arco-btn-icon {
+ line-height: 16px;
+ }
+ }
+ }
+ }
+ .table-wrap {
+ display: flex;
+ flex-direction: column;
+ .pagination-box {
+ display: flex;
+ width: 100%;
+ padding: 16px 24px;
+ justify-content: flex-end;
+ align-items: center;
+ }
+ }
+}
diff --git a/src/views/creative-generation-workshop/manuscript/upload/cancel-upload-modal.vue b/src/views/creative-generation-workshop/manuscript/upload/cancel-upload-modal.vue
new file mode 100644
index 0000000..358e4c4
--- /dev/null
+++ b/src/views/creative-generation-workshop/manuscript/upload/cancel-upload-modal.vue
@@ -0,0 +1,38 @@
+
+
+
+
![]()
+
确认取消上传这 {{ num }} 个文件吗?此操作不可恢复。
+
+
+ 继续编辑
+ 确认取消
+
+
+
+
+
diff --git a/src/views/creative-generation-workshop/manuscript/upload/index.vue b/src/views/creative-generation-workshop/manuscript/upload/index.vue
new file mode 100644
index 0000000..b970d4c
--- /dev/null
+++ b/src/views/creative-generation-workshop/manuscript/upload/index.vue
@@ -0,0 +1,305 @@
+
+
+
diff --git a/src/views/creative-generation-workshop/manuscript/upload/style.scss b/src/views/creative-generation-workshop/manuscript/upload/style.scss
new file mode 100644
index 0000000..f1dadcd
--- /dev/null
+++ b/src/views/creative-generation-workshop/manuscript/upload/style.scss
@@ -0,0 +1,28 @@
+$footer-height: 68px;
+.manuscript-upload-wrap {
+ height: calc(100% - 72px);
+ .cts {
+ color: #939499;
+ font-family: $font-family-regular;
+ font-size: 14px;
+ font-style: normal;
+ font-weight: 400;
+ line-height: 22px;
+ &.bold {
+ font-family: $font-family-medium;
+ }
+ }
+ .right {
+ border-left: 1px solid var(--Border-2, #e6e6e8);
+ width: 320px;
+ flex-shrink: 0;
+ }
+}
+.footer-row {
+ position: fixed;
+ bottom: 0;
+ left: $sidebar-width;
+ width: calc(100% - $sidebar-width);
+ border-top: 1px solid #e6e6e8;
+ height: $footer-height;
+}
diff --git a/src/views/creative-generation-workshop/manuscript/upload/upload-success-modal.vue b/src/views/creative-generation-workshop/manuscript/upload/upload-success-modal.vue
new file mode 100644
index 0000000..5ced374
--- /dev/null
+++ b/src/views/creative-generation-workshop/manuscript/upload/upload-success-modal.vue
@@ -0,0 +1,64 @@
+
+
+
+
![]()
+
上传成功
+
为确保内容合规,建议您立即进行审核
+
检测是否存在违规内容
+
+
+ 回到列表
+ 批量审核
+
+
+
+
+
+
diff --git a/src/views/property-marketing/media-account/account-manage/components/group-manage-modal/index.vue b/src/views/property-marketing/media-account/account-manage/components/group-manage-modal/index.vue
index d451d51..90730b9 100644
--- a/src/views/property-marketing/media-account/account-manage/components/group-manage-modal/index.vue
+++ b/src/views/property-marketing/media-account/account-manage/components/group-manage-modal/index.vue
@@ -25,7 +25,7 @@
-
+
添加项目
@@ -53,8 +53,6 @@ import ProjectTable from './components/project-table';
import AddProjectModal from './components/add-project-modal';
import DeleteProjectModal from './components/project-table/delete-project-modal.vue';
-import icon1 from '@/assets/img/media-account/icon-add.png';
-
const { dataSource, pageInfo, onPageChange, onPageSizeChange, resetPageInfo } = useTableSelectionWithPagination({
onPageChange: () => {
getData();
diff --git a/src/views/property-marketing/put-account/account-data/components/group-manage-modal/index.vue b/src/views/property-marketing/put-account/account-data/components/group-manage-modal/index.vue
index 4ee4610..49d4357 100644
--- a/src/views/property-marketing/put-account/account-data/components/group-manage-modal/index.vue
+++ b/src/views/property-marketing/put-account/account-data/components/group-manage-modal/index.vue
@@ -25,7 +25,7 @@
-
+
添加账户
@@ -104,7 +104,6 @@ import { getPlacementAccounts, getPlacementAccountsHealth } from '@/api/all/prop
import { getTaskStatus } from '@/api/all/common';
import { showImportResultNotification } from '@/utils/arcoD';
-import icon1 from '@/assets/img/media-account/icon-add.png';
import icon4 from '@/assets/img/media-account/icon-success.png';
import icon5 from '@/assets/img/media-account/icon-warn.png';
import icon6 from '@/assets/img/media-account/icon-close.png';
diff --git a/vite.config.ts b/vite.config.ts
index 5596072..4f70a94 100644
--- a/vite.config.ts
+++ b/vite.config.ts
@@ -40,8 +40,7 @@ export default defineConfig(({ mode }: ConfigEnv): UserConfig => {
changeOrigin: true,
rewrite: (path) => path.replace(/^\/api/, ''),
// 目标地址
- target: 'http://www.lingji.com/api',
- // target: 'http://192.168.40.22/api',
+ target: 'https://lingjiapi.lvfunai.com/api',
},
},
},