diff --git a/src/layouts/components/siderBar/menu-list.ts b/src/layouts/components/siderBar/menu-list.ts index 3627793..6b2fa92 100644 --- a/src/layouts/components/siderBar/menu-list.ts +++ b/src/layouts/components/siderBar/menu-list.ts @@ -1,3 +1,5 @@ +import { GROUP_WRITER_NAME } from '@/router/routes/modules/materialCenter-writer'; + export interface typeMenuItem { key?: string | number; // 菜单组key label?: string; // 菜单组标题 @@ -103,28 +105,35 @@ export const MENU_LIST = >{ routeName: 'TaskManagement', }, ], - GroupMainWriter: [ + [GROUP_WRITER_NAME]: [ { - key: 'ModMaterialCenter', + key: 'ModWriterMaterialCenter', label: '素材中心', icon: 'svg-materialCenter', children: [ { - key: 'ModMediaFinishProductsWareHouseWriter', - icon: 'svg-finishProductsWareHouseWriter', + key: 'ModWriterMaterialCenterFinishedProductsWareHouse', + icon: 'svg-finishProductsWareHouse', label: '成品库', - routeName: 'FinishProductsWareHouseWriter', + routeName: 'WriterMaterialCenterFinishedProducts', requireLogin: true, - activeMatch: ['FinishProductsWareHouseWriter', 'FinishProductsWareHouseWriter'], - }, - { - key: 'ModMediaRawMaterialStorageWriter', - icon: 'svg-rawMaterialStorageWriter', - label: '原料库', - routeName: 'RawMaterialStorageWriter', - requireLogin: true, - activeMatch: ['RawMaterialStorageWriter', 'RawMaterialStorageWriter'], + activeMatch: [ + 'WriterMaterialCenterFinishedProducts', + 'WriterManuscriptUpload', + 'WriterManuscriptEdit', + 'WriterManuscriptDetail', + 'WriterManuscriptCheckListDetail', + 'WriterManuscriptCheck', + ], }, + // { + // key: 'ModWriterMaterialCenterRawMaterialStorage', + // icon: 'svg-rawMaterialStorage', + // label: '原料库', + // routeName: 'WriterMaterialCenterRawMaterial', + // requireLogin: true, + // activeMatch: ['WriterMaterialCenterRawMaterial'], + // }, ], }, ], diff --git a/src/router/routes/modules/manuscript-writer.ts b/src/router/routes/modules/manuscript-writer.ts index db30cf7..791f462 100644 --- a/src/router/routes/modules/manuscript-writer.ts +++ b/src/router/routes/modules/manuscript-writer.ts @@ -1,115 +1,115 @@ -import type { AppRouteRecordRaw } from '../types'; -import IconContentManuscript from '@/assets/svg/svg-contentManuscript.svg'; -import { MENU_GROUP_IDS } from '@/router/constants'; +// import type { AppRouteRecordRaw } from '../types'; +// import IconContentManuscript from '@/assets/svg/svg-contentManuscript.svg'; +// import { MENU_GROUP_IDS } from '@/router/constants'; -// 内容稿件-写手端 -const COMPONENTS: AppRouteRecordRaw[] = [ - { - path: '/writer/manuscript', - name: 'WriterManuscript', - redirect: 'writer/manuscript/list', - meta: { - locale: '内容稿件', - icon: IconContentManuscript, - requiresAuth: false, - requireLogin: false, - roles: ['*'], - id: MENU_GROUP_IDS.WRITER_CREATIVE_GENERATION_WORKSHOP_ID, - }, - children: [ - { - path: 'list/:writerCode', - name: 'WriterManuscriptList', - meta: { - locale: '内容稿件列表', - requiresAuth: false, - requireLogin: false, - roles: ['*'], - }, - component: () => import('@/views/creative-generation-workshop/manuscript-writer/list/index.vue'), - }, - { - path: 'upload/:writerCode', - name: 'WriterManuscriptUpload', - meta: { - locale: '稿件上传', - requiresAuth: false, - requireLogin: false, - hideFooter: true, - roles: ['*'], - hideInMenu: true, - activeMenu: 'WriterManuscriptList', - }, - component: () => import('@/views/creative-generation-workshop/manuscript-writer/upload/index.vue'), - }, - { - path: 'edit/:writerCode/:id', - name: 'WriterManuscriptEdit', - meta: { - locale: '账号详情', - requiresAuth: false, - requireLogin: false, - hideFooter: true, - roles: ['*'], - hideInMenu: true, - activeMenu: 'WriterManuscriptList', - }, - component: () => import('@/views/creative-generation-workshop/manuscript-writer/edit/index.vue'), - }, - { - path: 'detail/:writerCode/:id', - name: 'WriterManuscriptDetail', - meta: { - locale: '稿件详情', - requiresAuth: false, - requireLogin: false, - hideFooter: true, - roles: ['*'], - hideInMenu: true, - activeMenu: 'ManuscriptList', - }, - component: () => import('@/views/creative-generation-workshop/manuscript-writer/detail/index.vue'), - }, - { - path: 'check-list/:writerCode', - name: 'WriterManuscriptCheckList', - meta: { - locale: '内容稿件审核', - requiresAuth: false, - requireLogin: false, - roles: ['*'], - }, - component: () => import('@/views/creative-generation-workshop/manuscript-writer/check-list/index.vue'), - }, - { - path: 'check-list/detail/:id/:writerCode', - name: 'WriterManuscriptCheckListDetail', - meta: { - locale: '内容稿件审核详情', - requiresAuth: false, - requireLogin: false, - hideFooter: true, - hideInMenu: true, - roles: ['*'], - activeMenu: 'WriterManuscriptCheckList', - }, - component: () => import('@/views/creative-generation-workshop/manuscript-writer/detail/index.vue'), - }, - { - path: 'check/:writerCode', - name: 'WriterManuscriptCheck', - meta: { - locale: '稿件审核', - requiresAuth: false, - requireLogin: false, - hideFooter: true, - roles: ['*'], - hideInMenu: true, - activeMenu: 'WriterManuscriptCheckList', - }, - component: () => import('@/views/creative-generation-workshop/manuscript-writer/check/index.vue'), - }, - ], - }, -]; -export default COMPONENTS; +// // 内容稿件-写手端 +// const COMPONENTS: AppRouteRecordRaw[] = [ +// { +// path: '/writer/manuscript', +// name: 'WriterManuscript', +// redirect: 'writer/manuscript/list', +// meta: { +// locale: '内容稿件', +// icon: IconContentManuscript, +// requiresAuth: false, +// requireLogin: false, +// roles: ['*'], +// id: MENU_GROUP_IDS.WRITER_CREATIVE_GENERATION_WORKSHOP_ID, +// }, +// children: [ +// { +// path: 'list/:writerCode', +// name: 'WriterManuscriptList', +// meta: { +// locale: '内容稿件列表', +// requiresAuth: false, +// requireLogin: false, +// roles: ['*'], +// }, +// component: () => import('@/views/creative-generation-workshop/manuscript-writer/list/index.vue'), +// }, +// { +// path: 'upload/:writerCode', +// name: 'WriterManuscriptUpload', +// meta: { +// locale: '稿件上传', +// requiresAuth: false, +// requireLogin: false, +// hideFooter: true, +// roles: ['*'], +// hideInMenu: true, +// activeMenu: 'WriterManuscriptList', +// }, +// component: () => import('@/views/creative-generation-workshop/manuscript-writer/upload/index.vue'), +// }, +// { +// path: 'edit/:writerCode/:id', +// name: 'WriterManuscriptEdit', +// meta: { +// locale: '账号详情', +// requiresAuth: false, +// requireLogin: false, +// hideFooter: true, +// roles: ['*'], +// hideInMenu: true, +// activeMenu: 'WriterManuscriptList', +// }, +// component: () => import('@/views/creative-generation-workshop/manuscript-writer/edit/index.vue'), +// }, +// { +// path: 'detail/:writerCode/:id', +// name: 'WriterManuscriptDetail', +// meta: { +// locale: '稿件详情', +// requiresAuth: false, +// requireLogin: false, +// hideFooter: true, +// roles: ['*'], +// hideInMenu: true, +// activeMenu: 'ManuscriptList', +// }, +// component: () => import('@/views/creative-generation-workshop/manuscript-writer/detail/index.vue'), +// }, +// { +// path: 'check-list/:writerCode', +// name: 'WriterManuscriptCheckList', +// meta: { +// locale: '内容稿件审核', +// requiresAuth: false, +// requireLogin: false, +// roles: ['*'], +// }, +// component: () => import('@/views/creative-generation-workshop/manuscript-writer/check-list/index.vue'), +// }, +// { +// path: 'check-list/detail/:id/:writerCode', +// name: 'WriterManuscriptCheckListDetail', +// meta: { +// locale: '内容稿件审核详情', +// requiresAuth: false, +// requireLogin: false, +// hideFooter: true, +// hideInMenu: true, +// roles: ['*'], +// activeMenu: 'WriterManuscriptCheckList', +// }, +// component: () => import('@/views/creative-generation-workshop/manuscript-writer/detail/index.vue'), +// }, +// { +// path: 'check/:writerCode', +// name: 'WriterManuscriptCheck', +// meta: { +// locale: '稿件审核', +// requiresAuth: false, +// requireLogin: false, +// hideFooter: true, +// roles: ['*'], +// hideInMenu: true, +// activeMenu: 'WriterManuscriptCheckList', +// }, +// component: () => import('@/views/creative-generation-workshop/manuscript-writer/check/index.vue'), +// }, +// ], +// }, +// ]; +// export default COMPONENTS; diff --git a/src/router/routes/modules/materialCenter-writer.ts b/src/router/routes/modules/materialCenter-writer.ts new file mode 100644 index 0000000..6beba89 --- /dev/null +++ b/src/router/routes/modules/materialCenter-writer.ts @@ -0,0 +1,121 @@ +import type { AppRouteRecordRaw } from '../types'; +import { MENU_GROUP_IDS } from '@/router/constants'; + +import IconContentManuscript from '@/assets/svg/svg-contentManuscript.svg'; + +export const GROUP_WRITER_NAME = 'GroupWriterMaterialCenter'; + +const COMPONENTS: AppRouteRecordRaw[] = [ + { + path: '/writer/material-center', + name: 'WriterMaterialCenter', + redirect: '/writer/material-center/finished-products', + meta: { + locale: '素材中心', + icon: IconContentManuscript, + requiresAuth: true, + requireLogin: true, + roles: ['*'], + group: GROUP_WRITER_NAME, + id: MENU_GROUP_IDS.CREATIVE_GENERATION_WORKSHOP_ID, + }, + children: [ + { + path: 'finished-products/:writerCode', + name: 'WriterMaterialCenterFinishedProducts', + meta: { + locale: '成品库', + requiresAuth: true, + requireLogin: true, + roles: ['*'], + group: GROUP_WRITER_NAME, + }, + component: () => import('@/views/writer-material-center/index.vue'), + }, + { + path: 'raw-material/:writerCode', + name: 'WriterMaterialCenterRawMaterial', + meta: { + locale: '原料库', + requiresAuth: true, + requireLogin: true, + roles: ['*'], + group: GROUP_WRITER_NAME, + }, + component: () => import('@/views/writer-material-center/index.vue'), + }, + { + path: 'upload/:writerCode', + name: 'WriterManuscriptUpload', + meta: { + locale: '稿件上传', + requiresAuth: false, + requireLogin: false, + hideFooter: true, + roles: ['*'], + hideInMenu: true, + activeMenu: 'WriterMaterialCenterFinishedProducts', + }, + component: () => import('@/views/writer-material-center/components/finished-products/manuscript/upload/index.vue'), + }, + { + path: 'edit/:writerCode/:id', + name: 'WriterManuscriptEdit', + meta: { + locale: '稿件编辑', + requiresAuth: false, + requireLogin: false, + hideFooter: true, + roles: ['*'], + hideInMenu: true, + activeMenu: 'WriterMaterialCenterFinishedProducts', + }, + component: () => import('@/views/writer-material-center/components/finished-products/manuscript/edit/index.vue'), + }, + { + path: 'detail/:writerCode/:id', + name: 'WriterManuscriptDetail', + meta: { + locale: '稿件详情', + requiresAuth: false, + requireLogin: false, + hideFooter: true, + roles: ['*'], + hideInMenu: true, + activeMenu: 'WriterMaterialCenterFinishedProducts', + }, + component: () => import('@/views/writer-material-center/components/finished-products/manuscript/detail/index.vue'), + }, + { + path: 'check-list/detail/:id/:writerCode', + name: 'WriterManuscriptCheckListDetail', + meta: { + locale: '内容稿件审核详情', + requiresAuth: false, + requireLogin: false, + hideFooter: true, + hideInMenu: true, + roles: ['*'], + activeMenu: 'WriterMaterialCenterFinishedProducts', + }, + component: () => import('@/views/writer-material-center/components/finished-products/manuscript/detail/index.vue'), + }, + { + path: 'check/:writerCode', + name: 'WriterManuscriptCheck', + meta: { + locale: '稿件审核', + requiresAuth: false, + requireLogin: false, + hideFooter: true, + roles: ['*'], + hideInMenu: true, + activeMenu: 'WriterMaterialCenterFinishedProducts', + }, + component: () => import('@/views/writer-material-center/components/finished-products/manuscript/check/index.vue'), + }, + ], + }, +]; + +export default COMPONENTS; diff --git a/src/router/routes/modules/materialCenter.ts b/src/router/routes/modules/materialCenter.ts index e882bf9..0f91eb1 100644 --- a/src/router/routes/modules/materialCenter.ts +++ b/src/router/routes/modules/materialCenter.ts @@ -57,7 +57,7 @@ const COMPONENTS: AppRouteRecordRaw[] = [ path: 'edit/:id', name: 'ManuscriptEdit', meta: { - locale: '账号详情', + locale: '稿件编辑', requiresAuth: true, requireLogin: true, hideFooter: true, diff --git a/src/router/typeings.d.ts b/src/router/typeings.d.ts index b10cd66..f64b2f6 100644 --- a/src/router/typeings.d.ts +++ b/src/router/typeings.d.ts @@ -18,5 +18,6 @@ declare module 'vue-router' { isAgentRoute?: boolean; requireLogin?: boolean; // 是否需要登陆才能访问 independent?: boolean; // 独立于layout的路由 + group?: string; // 路由分组 } } diff --git a/src/views/creative-generation-workshop/manuscript-analysis/index.vue b/src/views/creative-generation-workshop/manuscript-analysis/index.vue deleted file mode 100644 index e69de29..0000000 diff --git a/src/views/material-center/components/finished-products/manuscript/check-list/components/manuscript-check-table/index.vue b/src/views/material-center/components/finished-products/manuscript/check-list/components/manuscript-check-table/index.vue index cccd53f..2f9467e 100644 --- a/src/views/material-center/components/finished-products/manuscript/check-list/components/manuscript-check-table/index.vue +++ b/src/views/material-center/components/finished-products/manuscript/check-list/components/manuscript-check-table/index.vue @@ -148,7 +148,7 @@ import icon2 from '@/assets/img/creative-generation-workshop/icon-photo.png'; import icon3 from '@/assets/img/creative-generation-workshop/icon-video.png'; import icon4 from '@/assets/img/error-img.png'; -const emits = defineEmits(['edit', 'sorterChange', 'delete', 'select', 'selectAll']); +const emits = defineEmits([ 'sorterChange', 'delete', 'select', 'selectAll']); const router = useRouter(); const props = defineProps({ diff --git a/src/views/material-center/components/finished-products/manuscript/check-list/index.vue b/src/views/material-center/components/finished-products/manuscript/check-list/index.vue index 7cee6e2..6762d17 100644 --- a/src/views/material-center/components/finished-products/manuscript/check-list/index.vue +++ b/src/views/material-center/components/finished-products/manuscript/check-list/index.vue @@ -40,7 +40,6 @@ :audit_status="query.audit_status" @sorterChange="handleSorterChange" @delete="handleDelete" - @edit="handleEdit" @select="handleSelect" @selectAll="handleSelectAll" /> @@ -175,23 +174,15 @@ const handleDelete = (item) => { const { id, title } = item; deleteManuscriptModalRef.value?.open({ id, name: `“${title}”` }); }; -const handleEdit = (item) => { - // addManuscriptModalRef.value?.open(item.id); -}; watch( () => props.audit_status, (newVal) => { - console.log('newVal', newVal) handleTabClick(newVal); }, - { immediate: false }, + { immediate: true, deep: true }, ); -onMounted(() => { - tableColumns.value = TABLE_COLUMNS1; - getData(); -}); provide('update', getData); diff --git a/src/views/material-center/components/finished-products/manuscript/components/upload-manuscript-modal/index.vue b/src/views/material-center/components/finished-products/manuscript/components/upload-manuscript-modal/index.vue index 5df2b60..523449d 100644 --- a/src/views/material-center/components/finished-products/manuscript/components/upload-manuscript-modal/index.vue +++ b/src/views/material-center/components/finished-products/manuscript/components/upload-manuscript-modal/index.vue @@ -97,7 +97,7 @@ export default { const { code, data } = await getWriterLinksGenerate(); if (code === 200) { const url = router.resolve({ - path: `/writer/manuscript/list/${data.code}`, + path: `/writer/material-center/finished-products/${data.code}`, }).href; form.value.writerLink = generateFullUrl(url); } diff --git a/src/views/writer-material-center/components/finished-products/constants.ts b/src/views/writer-material-center/components/finished-products/constants.ts new file mode 100644 index 0000000..c874ffd --- /dev/null +++ b/src/views/writer-material-center/components/finished-products/constants.ts @@ -0,0 +1,26 @@ +export enum AuditStatus { + All = '0', + Pending = '1', + Auditing = '2', + Passed = '3', +} + +export const TABS_LIST = [ + { + label: '全部', + value: AuditStatus.All, + }, + { + label: '待审核', + value: AuditStatus.Pending, + }, + { + label: '审核中', + value: AuditStatus.Auditing, + }, + { + label: '已通过', + value: AuditStatus.Passed, + }, +]; + diff --git a/src/views/writer-material-center/components/finished-products/index.vue b/src/views/writer-material-center/components/finished-products/index.vue new file mode 100644 index 0000000..abaafca --- /dev/null +++ b/src/views/writer-material-center/components/finished-products/index.vue @@ -0,0 +1,65 @@ + + + diff --git a/src/views/writer-material-center/components/finished-products/manuscript/check-list/components/filter-block/index.vue b/src/views/writer-material-center/components/finished-products/manuscript/check-list/components/filter-block/index.vue new file mode 100644 index 0000000..8442599 --- /dev/null +++ b/src/views/writer-material-center/components/finished-products/manuscript/check-list/components/filter-block/index.vue @@ -0,0 +1,142 @@ + + + + + diff --git a/src/views/writer-material-center/components/finished-products/manuscript/check-list/components/manuscript-check-table/delete-manuscript-modal.vue b/src/views/writer-material-center/components/finished-products/manuscript/check-list/components/manuscript-check-table/delete-manuscript-modal.vue new file mode 100644 index 0000000..8cc9527 --- /dev/null +++ b/src/views/writer-material-center/components/finished-products/manuscript/check-list/components/manuscript-check-table/delete-manuscript-modal.vue @@ -0,0 +1,53 @@ + + + diff --git a/src/views/writer-material-center/components/finished-products/manuscript/check-list/components/manuscript-check-table/index.vue b/src/views/writer-material-center/components/finished-products/manuscript/check-list/components/manuscript-check-table/index.vue new file mode 100644 index 0000000..6a1eb0b --- /dev/null +++ b/src/views/writer-material-center/components/finished-products/manuscript/check-list/components/manuscript-check-table/index.vue @@ -0,0 +1,202 @@ + + + + + diff --git a/src/views/writer-material-center/components/finished-products/manuscript/check-list/components/manuscript-check-table/style.scss b/src/views/writer-material-center/components/finished-products/manuscript/check-list/components/manuscript-check-table/style.scss new file mode 100644 index 0000000..5a1711b --- /dev/null +++ b/src/views/writer-material-center/components/finished-products/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/writer-material-center/components/finished-products/manuscript/check-list/constants.ts b/src/views/writer-material-center/components/finished-products/manuscript/check-list/constants.ts new file mode 100644 index 0000000..30bd2a1 --- /dev/null +++ b/src/views/writer-material-center/components/finished-products/manuscript/check-list/constants.ts @@ -0,0 +1,246 @@ +import { AuditStatus } from '@/views/writer-material-center/components/finished-products/constants'; + +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: 'customer_opinion', + // width: 120, + // }, + { + title: '稿件类型', + dataIndex: 'type', + width: 120, + }, + { + title: '上传时间', + dataIndex: 'created_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: 120, + // }, + { + title: '审核平台', + dataIndex: 'platform', + width: 120, + }, + { + title: '合规程度', + dataIndex: 'compliance_level', + suffix: '%', + width: 120, + }, + { + title: '稿件类型', + dataIndex: 'type', + width: 120, + }, + { + 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: 120, + // }, + { + title: '审核平台', + dataIndex: 'platform', + width: 120, + }, + { + title: '稿件类型', + dataIndex: 'type', + width: 120, + }, + { + 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 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/platform/icon-dy.png'; +import icon2 from '@/assets/img/platform/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/writer-material-center/components/finished-products/manuscript/check-list/index.vue b/src/views/writer-material-center/components/finished-products/manuscript/check-list/index.vue new file mode 100644 index 0000000..5b30ad5 --- /dev/null +++ b/src/views/writer-material-center/components/finished-products/manuscript/check-list/index.vue @@ -0,0 +1,196 @@ + + + + diff --git a/src/views/writer-material-center/components/finished-products/manuscript/check-list/style.scss b/src/views/writer-material-center/components/finished-products/manuscript/check-list/style.scss new file mode 100644 index 0000000..a3a41fc --- /dev/null +++ b/src/views/writer-material-center/components/finished-products/manuscript/check-list/style.scss @@ -0,0 +1,35 @@ +.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; + } +} diff --git a/src/views/writer-material-center/components/finished-products/manuscript/check/cancel-check-modal.vue b/src/views/writer-material-center/components/finished-products/manuscript/check/cancel-check-modal.vue new file mode 100644 index 0000000..0dc2606 --- /dev/null +++ b/src/views/writer-material-center/components/finished-products/manuscript/check/cancel-check-modal.vue @@ -0,0 +1,63 @@ + + + diff --git a/src/views/writer-material-center/components/finished-products/manuscript/check/check-success-modal.vue b/src/views/writer-material-center/components/finished-products/manuscript/check/check-success-modal.vue new file mode 100644 index 0000000..d7e437b --- /dev/null +++ b/src/views/writer-material-center/components/finished-products/manuscript/check/check-success-modal.vue @@ -0,0 +1,86 @@ + + + + diff --git a/src/views/writer-material-center/components/finished-products/manuscript/check/components/check-list-drawer/index.vue b/src/views/writer-material-center/components/finished-products/manuscript/check/components/check-list-drawer/index.vue new file mode 100644 index 0000000..78dc722 --- /dev/null +++ b/src/views/writer-material-center/components/finished-products/manuscript/check/components/check-list-drawer/index.vue @@ -0,0 +1,87 @@ + + + diff --git a/src/views/writer-material-center/components/finished-products/manuscript/check/components/check-list-drawer/style.scss b/src/views/writer-material-center/components/finished-products/manuscript/check/components/check-list-drawer/style.scss new file mode 100644 index 0000000..e32fa77 --- /dev/null +++ b/src/views/writer-material-center/components/finished-products/manuscript/check/components/check-list-drawer/style.scss @@ -0,0 +1,45 @@ +.check-list-drawer-xt { + .arco-drawer-mask { + background-color: transparent; + } + .arco-drawer { + box-shadow: 0 8px 16px 0 rgba(0, 0, 0, 0.15); + .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 { + cursor: pointer; + border: 1px solid transparent; + transition: all; + &:hover { + background-color: #e6e6e8; + } + &:not(:last-child) { + margin-bottom: 12px; + } + &.active { + border-color: #6d4cfe; + background-color: #f0edff; + :deep(.overflow-text) { + font-family: $font-family-medium !important; + } + } + } + } + } +} diff --git a/src/views/writer-material-center/components/finished-products/manuscript/check/components/content-card/constants.ts b/src/views/writer-material-center/components/finished-products/manuscript/check/components/content-card/constants.ts new file mode 100644 index 0000000..0dbe0da --- /dev/null +++ b/src/views/writer-material-center/components/finished-products/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_count', + 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/writer-material-center/components/finished-products/manuscript/check/components/content-card/highlight-textarea.vue b/src/views/writer-material-center/components/finished-products/manuscript/check/components/content-card/highlight-textarea.vue new file mode 100644 index 0000000..59ab272 --- /dev/null +++ b/src/views/writer-material-center/components/finished-products/manuscript/check/components/content-card/highlight-textarea.vue @@ -0,0 +1,233 @@ + + + + + diff --git a/src/views/writer-material-center/components/finished-products/manuscript/check/components/content-card/index.vue b/src/views/writer-material-center/components/finished-products/manuscript/check/components/content-card/index.vue new file mode 100644 index 0000000..fa0a8da --- /dev/null +++ b/src/views/writer-material-center/components/finished-products/manuscript/check/components/content-card/index.vue @@ -0,0 +1,475 @@ + + + diff --git a/src/views/writer-material-center/components/finished-products/manuscript/check/components/content-card/style.scss b/src/views/writer-material-center/components/finished-products/manuscript/check/components/content-card/style.scss new file mode 100644 index 0000000..1cbfb8b --- /dev/null +++ b/src/views/writer-material-center/components/finished-products/manuscript/check/components/content-card/style.scss @@ -0,0 +1,202 @@ +.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-btn { + .check-text { + background: linear-gradient(84deg, #266cff 4.57%, #a15af0 84.93%); + background-clip: text; + -webkit-background-clip: text; + -webkit-text-fill-color: transparent; + } + &:hover { + opacity: 0.8; + } + } + .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 { + border: 1px solid #E6E6E8; + flex: 1; + border-radius: 8px; padding: 16px; display: flex; + flex-direction: column; + overflow-y: auto; + height: fit-content; + max-height: 100%; + .s1 { + font-family: $font-family-manrope-medium; + 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/writer-material-center/components/finished-products/manuscript/check/components/header-card/index.vue b/src/views/writer-material-center/components/finished-products/manuscript/check/components/header-card/index.vue new file mode 100644 index 0000000..0abf2f7 --- /dev/null +++ b/src/views/writer-material-center/components/finished-products/manuscript/check/components/header-card/index.vue @@ -0,0 +1,116 @@ + + + diff --git a/src/views/writer-material-center/components/finished-products/manuscript/check/components/header-card/style.scss b/src/views/writer-material-center/components/finished-products/manuscript/check/components/header-card/style.scss new file mode 100644 index 0000000..9a4dcef --- /dev/null +++ b/src/views/writer-material-center/components/finished-products/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/writer-material-center/components/finished-products/manuscript/check/index.vue b/src/views/writer-material-center/components/finished-products/manuscript/check/index.vue new file mode 100644 index 0000000..198ad99 --- /dev/null +++ b/src/views/writer-material-center/components/finished-products/manuscript/check/index.vue @@ -0,0 +1,269 @@ + + + diff --git a/src/views/writer-material-center/components/finished-products/manuscript/check/style.scss b/src/views/writer-material-center/components/finished-products/manuscript/check/style.scss new file mode 100644 index 0000000..9bd24ba --- /dev/null +++ b/src/views/writer-material-center/components/finished-products/manuscript/check/style.scss @@ -0,0 +1,48 @@ +$footer-height: 68px; +.manuscript-check-wrap { + width: 100%; + height: calc(100% - ($footer-height - $layout-padding-bottom)); + .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); + &:hover { + .icon, + .cts { + color: #6d4cfe !important; + } + } + } +} +.footer-row { + position: fixed; + bottom: 0; + left: $sidebar-width; + width: calc(100% - $sidebar-width); + height: $footer-height; + &.collapsed { + left: $sidebar-width-collapse; + width: calc(100% - $sidebar-width-collapse); + } +} diff --git a/src/views/writer-material-center/components/finished-products/manuscript/components/edit-form/img-box.vue b/src/views/writer-material-center/components/finished-products/manuscript/components/edit-form/img-box.vue new file mode 100644 index 0000000..0746114 --- /dev/null +++ b/src/views/writer-material-center/components/finished-products/manuscript/components/edit-form/img-box.vue @@ -0,0 +1,99 @@ + + + + + diff --git a/src/views/writer-material-center/components/finished-products/manuscript/components/edit-form/index.vue b/src/views/writer-material-center/components/finished-products/manuscript/components/edit-form/index.vue new file mode 100644 index 0000000..f346adc --- /dev/null +++ b/src/views/writer-material-center/components/finished-products/manuscript/components/edit-form/index.vue @@ -0,0 +1,376 @@ + + + diff --git a/src/views/writer-material-center/components/finished-products/manuscript/components/edit-form/style.scss b/src/views/writer-material-center/components/finished-products/manuscript/components/edit-form/style.scss new file mode 100644 index 0000000..c16695e --- /dev/null +++ b/src/views/writer-material-center/components/finished-products/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/writer-material-center/components/finished-products/manuscript/components/upload-manuscript-modal/index.vue b/src/views/writer-material-center/components/finished-products/manuscript/components/upload-manuscript-modal/index.vue new file mode 100644 index 0000000..cb001ba --- /dev/null +++ b/src/views/writer-material-center/components/finished-products/manuscript/components/upload-manuscript-modal/index.vue @@ -0,0 +1,379 @@ + + + diff --git a/src/views/writer-material-center/components/finished-products/manuscript/components/upload-manuscript-modal/style.scss b/src/views/writer-material-center/components/finished-products/manuscript/components/upload-manuscript-modal/style.scss new file mode 100644 index 0000000..494dff7 --- /dev/null +++ b/src/views/writer-material-center/components/finished-products/manuscript/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/writer-material-center/components/finished-products/manuscript/detail/index.vue b/src/views/writer-material-center/components/finished-products/manuscript/detail/index.vue new file mode 100644 index 0000000..9fd5973 --- /dev/null +++ b/src/views/writer-material-center/components/finished-products/manuscript/detail/index.vue @@ -0,0 +1,222 @@ + + + diff --git a/src/views/writer-material-center/components/finished-products/manuscript/detail/style.scss b/src/views/writer-material-center/components/finished-products/manuscript/detail/style.scss new file mode 100644 index 0000000..436f9e0 --- /dev/null +++ b/src/views/writer-material-center/components/finished-products/manuscript/detail/style.scss @@ -0,0 +1,69 @@ +$footer-height: 68px; +.manuscript-detail-wrap { + width: 100%; + height: calc(100% - ($footer-height - $layout-padding-bottom)); + .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: 472px; + background: #333; + aspect-ratio: 3 / 4; + } + .main-img-box { + width: 320px; + height: auto; + max-height: 472px; + background: #fff; + } + .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); + height: $footer-height; + &.collapsed { + left: $sidebar-width-collapse; + width: calc(100% - $sidebar-width-collapse); + } +} diff --git a/src/views/writer-material-center/components/finished-products/manuscript/edit/cancel-edit-modal.vue b/src/views/writer-material-center/components/finished-products/manuscript/edit/cancel-edit-modal.vue new file mode 100644 index 0000000..b5d2020 --- /dev/null +++ b/src/views/writer-material-center/components/finished-products/manuscript/edit/cancel-edit-modal.vue @@ -0,0 +1,35 @@ + + + diff --git a/src/views/writer-material-center/components/finished-products/manuscript/edit/index.vue b/src/views/writer-material-center/components/finished-products/manuscript/edit/index.vue new file mode 100644 index 0000000..4a124e1 --- /dev/null +++ b/src/views/writer-material-center/components/finished-products/manuscript/edit/index.vue @@ -0,0 +1,143 @@ + + + diff --git a/src/views/writer-material-center/components/finished-products/manuscript/edit/style.scss b/src/views/writer-material-center/components/finished-products/manuscript/edit/style.scss new file mode 100644 index 0000000..0509c0a --- /dev/null +++ b/src/views/writer-material-center/components/finished-products/manuscript/edit/style.scss @@ -0,0 +1,28 @@ +$footer-height: 68px; +.manuscript-edit-wrap { + height: calc(100% - ($footer-height - $layout-padding-bottom)); + 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); + height: $footer-height; + &.collapsed { + left: $sidebar-width-collapse; + width: calc(100% - $sidebar-width-collapse); + } +} diff --git a/src/views/writer-material-center/components/finished-products/manuscript/list/components/filter-block/index.vue b/src/views/writer-material-center/components/finished-products/manuscript/list/components/filter-block/index.vue new file mode 100644 index 0000000..4826fe8 --- /dev/null +++ b/src/views/writer-material-center/components/finished-products/manuscript/list/components/filter-block/index.vue @@ -0,0 +1,149 @@ + + + diff --git a/src/views/writer-material-center/components/finished-products/manuscript/list/components/manuscript-table/constants.ts b/src/views/writer-material-center/components/finished-products/manuscript/list/components/manuscript-table/constants.ts new file mode 100644 index 0000000..dad1cb9 --- /dev/null +++ b/src/views/writer-material-center/components/finished-products/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: 'created_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/writer-material-center/components/finished-products/manuscript/list/components/manuscript-table/delete-manuscript-modal.vue b/src/views/writer-material-center/components/finished-products/manuscript/list/components/manuscript-table/delete-manuscript-modal.vue new file mode 100644 index 0000000..2108398 --- /dev/null +++ b/src/views/writer-material-center/components/finished-products/manuscript/list/components/manuscript-table/delete-manuscript-modal.vue @@ -0,0 +1,53 @@ + + + diff --git a/src/views/writer-material-center/components/finished-products/manuscript/list/components/manuscript-table/index.vue b/src/views/writer-material-center/components/finished-products/manuscript/list/components/manuscript-table/index.vue new file mode 100644 index 0000000..2304137 --- /dev/null +++ b/src/views/writer-material-center/components/finished-products/manuscript/list/components/manuscript-table/index.vue @@ -0,0 +1,156 @@ + + + + + diff --git a/src/views/writer-material-center/components/finished-products/manuscript/list/components/manuscript-table/style.scss b/src/views/writer-material-center/components/finished-products/manuscript/list/components/manuscript-table/style.scss new file mode 100644 index 0000000..8621a01 --- /dev/null +++ b/src/views/writer-material-center/components/finished-products/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/writer-material-center/components/finished-products/manuscript/list/constants.ts b/src/views/writer-material-center/components/finished-products/manuscript/list/constants.ts new file mode 100644 index 0000000..b06f7cd --- /dev/null +++ b/src/views/writer-material-center/components/finished-products/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/writer-material-center/components/finished-products/manuscript/list/index.vue b/src/views/writer-material-center/components/finished-products/manuscript/list/index.vue new file mode 100644 index 0000000..7d46355 --- /dev/null +++ b/src/views/writer-material-center/components/finished-products/manuscript/list/index.vue @@ -0,0 +1,96 @@ + + + + diff --git a/src/views/writer-material-center/components/finished-products/manuscript/list/style.scss b/src/views/writer-material-center/components/finished-products/manuscript/list/style.scss new file mode 100644 index 0000000..8570520 --- /dev/null +++ b/src/views/writer-material-center/components/finished-products/manuscript/list/style.scss @@ -0,0 +1,22 @@ +.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; + } +} diff --git a/src/views/writer-material-center/components/finished-products/manuscript/upload/cancel-upload-modal.vue b/src/views/writer-material-center/components/finished-products/manuscript/upload/cancel-upload-modal.vue new file mode 100644 index 0000000..dffaa65 --- /dev/null +++ b/src/views/writer-material-center/components/finished-products/manuscript/upload/cancel-upload-modal.vue @@ -0,0 +1,39 @@ + + + diff --git a/src/views/writer-material-center/components/finished-products/manuscript/upload/index.vue b/src/views/writer-material-center/components/finished-products/manuscript/upload/index.vue new file mode 100644 index 0000000..65be72d --- /dev/null +++ b/src/views/writer-material-center/components/finished-products/manuscript/upload/index.vue @@ -0,0 +1,334 @@ + + + diff --git a/src/views/writer-material-center/components/finished-products/manuscript/upload/style.scss b/src/views/writer-material-center/components/finished-products/manuscript/upload/style.scss new file mode 100644 index 0000000..d3c3f70 --- /dev/null +++ b/src/views/writer-material-center/components/finished-products/manuscript/upload/style.scss @@ -0,0 +1,32 @@ +$footer-height: 68px; +.manuscript-upload-wrap { + height: calc(100% - ($footer-height - $layout-padding-bottom)); + .cts, + :deep(.overflow-text) { + 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); + height: $footer-height; + &.collapsed { + left: $sidebar-width-collapse; + width: calc(100% - $sidebar-width-collapse); + } +} diff --git a/src/views/writer-material-center/components/finished-products/manuscript/upload/upload-success-modal.vue b/src/views/writer-material-center/components/finished-products/manuscript/upload/upload-success-modal.vue new file mode 100644 index 0000000..82b5db2 --- /dev/null +++ b/src/views/writer-material-center/components/finished-products/manuscript/upload/upload-success-modal.vue @@ -0,0 +1,65 @@ + + + + diff --git a/src/views/writer-material-center/components/finished-products/style.scss b/src/views/writer-material-center/components/finished-products/style.scss new file mode 100644 index 0000000..d93b8c2 --- /dev/null +++ b/src/views/writer-material-center/components/finished-products/style.scss @@ -0,0 +1,37 @@ +.finished-products-wrap { + :deep(.ant-tabs) { + .ant-tabs-nav { + margin-bottom: 0; + padding: 0 24px; + .ant-tabs-nav-wrap { + height: 56px; + .ant-tabs-nav-list { + .ant-tabs-tab { + .ant-tabs-tab-btn { + color: var(--Text-2, #55585f); + font-family: $font-family-regular; + font-size: 16px; + font-style: normal; + font-weight: 400; + line-height: 24px; + } + &.ant-tabs-tab-active { + .ant-tabs-tab-btn { + color: var(--Brand-6, #6d4cfe); + font-weight: 500; + font-family: $font-family-medium; + text-shadow: none; + } + } + } + .ant-tabs-ink-bar { + background: #6D4CFE; + } + } + } + } + .ant-tabs-content-holder { + display: none; + } + } +} diff --git a/src/views/writer-material-center/components/raw-material/index.vue b/src/views/writer-material-center/components/raw-material/index.vue new file mode 100644 index 0000000..f5c4aaf --- /dev/null +++ b/src/views/writer-material-center/components/raw-material/index.vue @@ -0,0 +1,16 @@ + + + diff --git a/src/views/writer-material-center/components/raw-material/style.scss b/src/views/writer-material-center/components/raw-material/style.scss new file mode 100644 index 0000000..3486458 --- /dev/null +++ b/src/views/writer-material-center/components/raw-material/style.scss @@ -0,0 +1,3 @@ +.raw-material-wrap { + +} \ No newline at end of file diff --git a/src/views/writer-material-center/index.vue b/src/views/writer-material-center/index.vue new file mode 100644 index 0000000..e304954 --- /dev/null +++ b/src/views/writer-material-center/index.vue @@ -0,0 +1,54 @@ + + + diff --git a/src/views/writer-material-center/style.scss b/src/views/writer-material-center/style.scss new file mode 100644 index 0000000..0d3706c --- /dev/null +++ b/src/views/writer-material-center/style.scss @@ -0,0 +1,2 @@ +.material-center-wrap { +}