diff --git a/config/unplugin/auto-import.ts b/config/unplugin/auto-import.ts index 7778cc9..91f9266 100644 --- a/config/unplugin/auto-import.ts +++ b/config/unplugin/auto-import.ts @@ -16,7 +16,21 @@ export function configAutoImport() { '@vueuse/core', { dayjs: [['default', 'dayjs']], - 'lodash-es': ['cloneDeep', 'omit', 'pick', 'union', 'uniq', 'isNumber', 'uniqBy', 'isEmpty', 'merge', 'debounce'], + 'lodash-es': [ + 'cloneDeep', + 'omit', + 'pick', + 'union', + 'map', + 'uniq', + 'isNumber', + 'uniqBy', + 'isEmpty', + 'merge', + 'debounce', + 'isEqual', + 'isString' + ], '@/hooks': ['useModal'], }, ], diff --git a/env.d.ts b/env.d.ts index 11f02fe..fda0b3d 100644 --- a/env.d.ts +++ b/env.d.ts @@ -1 +1,6 @@ /// +declare module '*.vue' { + import type { DefineComponent } from 'vue'; + const vueComponent: DefineComponent<{}, {}, any>; + export default vueComponent; +} diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 86ec473..5129e2e 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -1829,8 +1829,8 @@ packages: copy-to@2.0.1: resolution: {integrity: sha512-3DdaFaU/Zf1AnpLiFDeNCD4TOWe3Zl2RZaTzUvWiIk5ERzcCodOE20Vqq4fzCbNoHURFHT4/us/Lfq+S2zyY4w==} - core-js@3.44.0: - resolution: {integrity: sha512-aFCtd4l6GvAXwVEh3XbbVqJGHDJt0OZRa+5ePGx3LLwi12WfexqQxcsohb2wgsa/92xtl19Hd66G/L+TaAxDMw==} + core-js@3.45.0: + resolution: {integrity: sha512-c2KZL9lP4DjkN3hk/an4pWn5b5ZefhRJnAc42n6LJ19kSnbeRbdQZE5dSeE2LBol1OwJD3X1BQvFTAsa8ReeDA==} core-util-is@1.0.3: resolution: {integrity: sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ==} @@ -3696,11 +3696,6 @@ packages: resolution: {integrity: sha512-4y7uGv8bd2WdM9vpQsiQNo41Ln1NvhvDRuVt0k2JZQ+ezN2uaQes7lZeZ+QQUHOLQAtDaBJ+7wCbi+ab/KFs+w==} engines: {node: '>=0.10.0'} - marked@16.1.1: - resolution: {integrity: sha512-ij/2lXfCRT71L6u0M29tJPhP0bM5shLL3u5BePhFwPELj2blMJ6GDtD7PfJhRLhJ/c2UwrK17ySVcDzy2YHjHQ==} - engines: {node: '>= 20'} - hasBin: true - match-file@0.2.2: resolution: {integrity: sha512-BDEZIcrBSnooL0zC72Yt3z1HhJiCq+2pMnHKVDeYN/cilCrz3KrpqKPm4ZOfWCoDolRl4QyKQpfRlQWF6PqnjQ==} engines: {node: '>=0.10.0'} @@ -7623,7 +7618,7 @@ snapshots: dependencies: '@babel/runtime': 7.28.2 '@types/raf': 3.4.3 - core-js: 3.44.0 + core-js: 3.45.0 raf: 3.4.1 regenerator-runtime: 0.13.11 rgbcolor: 1.0.1 @@ -7847,7 +7842,8 @@ snapshots: copy-to@2.0.1: {} - core-js@3.44.0: {} + core-js@3.45.0: + optional: true core-util-is@1.0.3: {} @@ -8084,6 +8080,7 @@ snapshots: dompurify@3.2.6: optionalDependencies: '@types/trusted-types': 2.0.7 + optional: true domutils@1.7.0: dependencies: @@ -9687,7 +9684,7 @@ snapshots: fflate: 0.8.2 optionalDependencies: canvg: 3.0.11 - core-js: 3.44.0 + core-js: 3.45.0 dompurify: 3.2.6 html2canvas: 1.4.1 @@ -10073,8 +10070,6 @@ snapshots: dependencies: object-visit: 1.0.1 - marked@16.1.1: {} - match-file@0.2.2: dependencies: is-glob: 3.1.0 diff --git a/src/App.vue b/src/App.vue index 21ab695..d177a78 100644 --- a/src/App.vue +++ b/src/App.vue @@ -1,6 +1,6 @@ @@ -46,7 +46,7 @@ onMounted(() => { }); }); onUnmounted(() => { - sideBarStore.stopUnreadInfoPolling(); + sidebarStore.stopUnreadInfoPolling(); }); diff --git a/src/api/all/common.ts b/src/api/all/common.ts index d06e4f4..574d7e9 100644 --- a/src/api/all/common.ts +++ b/src/api/all/common.ts @@ -61,4 +61,14 @@ export const postBatchDownload = (params = {}) => { // 任务中心-批量查询任务状态 export const batchQueryTaskStatus = (params = {}) => { return Http.get(`/v1/tasks/batch-query-status`, params); -}; \ No newline at end of file +}; + +// 获取图片上传地址 +export const getImagePreSignedUrl = (params = {}) => { + return Http.get('/v1/oss/image-pre-signed-url', params); +}; + +// 获取视频上传地址 +export const getVideoPreSignedUrl = (params = {}) => { + return Http.get('/v1/oss/video-pre-signed-url', params); +}; diff --git a/src/api/all/generationWorkshop-writer.ts b/src/api/all/generationWorkshop-writer.ts new file mode 100644 index 0000000..02493cb --- /dev/null +++ b/src/api/all/generationWorkshop-writer.ts @@ -0,0 +1,160 @@ +/** + * 写手端接口 + */ + +import Http from '@/api'; + +// 内容稿件-批量添加(写手) +export const postWorksBatchWriter = (params = {}, writerCode: string) => { + return Http.post('/v1/writer/works/batch', params, { + headers: { 'writer-code': writerCode }, + }); +}; + +// 内容稿件-分页(写手) +export const getWorksPageWriter = (writerCode: string, params = {}) => { + return Http.get('/v1/writer/works', params, { + headers: { 'writer-code': writerCode }, + }); +}; + +// 内容稿件-详情(写手) +export const getWorksDetailWriter = (writerCode: string, id: string) => { + return Http.get( + `/v1/writer/works/${id}`, + {}, + { + headers: { 'writer-code': writerCode }, + }, + ); +}; + +// 内容稿件-修改(写手) +export const putWorksUpdateWriter = (writerCode: string, params = {}) => { + const { id, ...rest } = params as { id: string; [key: string]: any }; + return Http.put(`/v1/writer/works/${id}`, rest, { + headers: { 'writer-code': writerCode }, + }); +}; + +// 内容稿件-删除(写手) +export const deleteWorkWriter = (writerCode: string, id: string) => { + return Http.delete(`/v1/writer/works/${id}`, { + headers: { 'writer-code': writerCode }, + }); +}; + +// 内容稿件-获取模板(写手) +export const getTemplateUrlWriter = (writerCode: string) => { + return Http.get( + '/v1/writer/works/template', + {}, + { + headers: { 'writer-code': writerCode }, + }, + ); +}; + +// 内容稿件审核-分页(写手) +export const getWorkAuditsPageWriter = (writerCode: string, params = {}) => { + return Http.get('/v1/writer/work-audits', params, { + headers: { 'writer-code': writerCode }, + }); +}; + +// 内容稿件审核-详情(写手) +export const getWorkAuditsDetailWriter = (writerCode: string, id: string) => { + return Http.get( + `/v1/writer/work-audits/${id}`, + {}, + { + headers: { 'writer-code': writerCode }, + }, + ); +}; + +// 内容稿件审核-多个详情(写手) +export const getWorkAuditsBatchDetailWriter = (writerCode: string, params = {}) => { + return Http.get('/v1/writer/work-audits/list', params, { + headers: { 'writer-code': writerCode }, + }); +}; + +// 内容稿件-审核(写手) +export const patchWorkAuditsAuditWriter = (id: string, writerCode: string) => { + return Http.patch( + `/v1/writer/work-audits/${id}/audit`, + {}, + { + headers: { 'writer-code': writerCode }, + }, + ); +}; + +// 内容稿件-批量审核(写手) +export const patchWorkAuditsBatchAuditWriter = (writerCode: string, params: {}) => { + return Http.patch('/v1/writer/work-audits/batch-audit', params, { + headers: { 'writer-code': writerCode }, + }); +}; + +// 内容稿件审核-修改(写手) +export const putWorkAuditsUpdateWriter = (writerCode: string, params = {}) => { + const { id: auditId, ...rest } = params as { id: string; [key: string]: any }; + return Http.put(`/v1/writer/work-audits/${auditId}`, rest, { + headers: { 'writer-code': writerCode }, + }); +}; + +// 内容稿件审核-审核通过(写手) +export const putWorkAuditsAuditPassWriter = (writerCode: string, params = {}) => { + const { id: auditId, ...rest } = params as { id: string; [key: string]: any }; + return Http.put(`/v1/writer/work-audits/${auditId}/audit-pass`, rest, { + headers: { 'writer-code': writerCode }, + }); +}; + +// 内容稿件审核-AI审查(写手) +export const postWorkAuditsAiReviewWriter = (params = {}) => { + const { id: auditId, writerCode, ...rest } = params as { id: string; writerCode: string; [key: string]: any }; + return Http.post(`/v1/writer/work-audits/${auditId}/ai-review`, rest, { + headers: { 'writer-code': writerCode }, + }); +}; + +// 内容稿件审核-获取AI审查结果(写手) +export const getWorkAuditsAiReviewResultWriter = (id: string, ticket: string, writerCode: string) => { + return Http.get( + `/v1/writer/work-audits/${id}/ai-review/${ticket}`, + {}, + { + headers: { 'writer-code': writerCode }, + }, + ); +}; + +// 内容稿件-通过链接获取稿件 +export const postWorksByLinkWriter = (writerCode: string, params = {}) => { + return Http.post('/v1/writer/works/by-link', params, { + headers: { 'writer-code': writerCode }, + }); +}; + +// 内容稿件-通过文档获取稿件 +export const postWorksByFileWriter = (params = {}, config = {}) => { + return Http.post('/v1/writer/works/by-file', params, config); +}; + +// 获取图片上传地址 +export const getImagePreSignedUrlWriter = (writerCode: string,params = {}) => { + return Http.get('/v1/writer/oss/image-pre-signed-url', params, { + headers: { 'writer-code': writerCode }, + }); +}; + +// 获取视频上传地址 +export const getVideoPreSignedUrlWriter = (writerCode: string,params = {}) => { + return Http.get('/v1/writer/oss/video-pre-signed-url', params, { + headers: { 'writer-code': writerCode }, + }); +}; diff --git a/src/api/all/generationWorkshop.ts b/src/api/all/generationWorkshop.ts new file mode 100644 index 0000000..8c9a16d --- /dev/null +++ b/src/api/all/generationWorkshop.ts @@ -0,0 +1,152 @@ +import Http from '@/api'; + +// 内容稿件-列表 +export const getWorksList = (params = {}) => { + return Http.get('/v1/works/list', params); +}; + +// 内容稿件-获取模板 +export const getTemplateUrl = (params = {}) => { + return Http.get('/v1/works/template', params); +}; + +// 内容稿件-通过链接获取稿件 +export const postWorksByLink = (params = {}) => { + return Http.post('/v1/works/by-link', params); +}; + +// 内容稿件-通过文档获取稿件 +export const postWorksByFile = (params = {}, config = {}) => { + return Http.post('/v1/works/by-file', params, config); +}; + +// 内容稿件-批量添加 +export const postWorksBatch = (params = {}) => { + return Http.post('/v1/works/batch', params); +}; + +// 生成分享链接 +export const postShareLinksGenerate = (params = {}) => { + return Http.post('/v1/share-links/generate', params); +}; + +// 生成写手链接 +export const getWriterLinksGenerate = () => { + return Http.get('/v1/writer-links/generate'); +}; + +// 内容稿件-修改 +export const putWorksUpdate = (params = {}) => { + const { id, ...rest } = params as { id: string; [key: string]: any }; + return Http.put(`/v1/works/${id}`, rest); +}; + +// 内容稿件-删除 +export const deleteWork = (id: string) => { + return Http.delete(`/v1/works/${id}`); +}; + +// 内容稿件-分页 +export const getWorksPage = (params = {}) => { + return Http.get('/v1/works', params); +}; + +// 内容稿件-详情 +export const getWorksDetail = (id: string) => { + return Http.get(`/v1/works/${id}`); +}; + +// 内容稿件审核-分页 +export const getWorkAuditsPage = (params = {}) => { + return Http.get('/v1/work-audits', params); +}; + +// 内容稿件审核-详情 +export const getWorkAuditsDetail = (id: string) => { + return Http.get(`/v1/work-audits/${id}`); +}; + +// 内容稿件审核-多个详情 +export const getWorkAuditsBatchDetail = (params = {}) => { + return Http.get('/v1/work-audits/list', params); +}; + +// 内容稿件-审核 +export const patchWorkAuditsAudit = (id: string, params = {}) => { + return Http.patch(`/v1/work-audits/${id}/audit`, params); +}; + +// 内容稿件-批量审核 +export const patchWorkAuditsBatchAudit = (params = {}) => { + return Http.patch('/v1/work-audits/batch-audit', params); +}; + +// 内容稿件审核-修改 +export const putWorkAuditsUpdate = (params = {}) => { + const { id: auditId, ...rest } = params as { id: string; [key: string]: any }; + return Http.put(`/v1/work-audits/${auditId}`, rest); +}; + +// 内容稿件审核-审核通过 +export const putWorkAuditsAuditPass = (params = {}) => { + const { id: auditId, ...rest } = params as { id: string; [key: string]: any }; + return Http.put(`/v1/work-audits/${auditId}/audit-pass`, rest); +}; + +// 内容稿件审核-AI审查 +export const postWorkAuditsAiReview = (params = {}) => { + const { id, ...rest } = params as { id: string; [key: string]: any }; + return Http.post(`/v1/work-audits/${id}/ai-review`, rest); +}; + +// 内容稿件审核-获取AI审查结果 +export const getWorkAuditsAiReviewResult = (id: string, ticket: string) => { + return Http.get(`/v1/work-audits/${id}/ai-review/${ticket}`); +}; + +// 内容稿件-列表(客户) +export const getShareWorksList = (shareCode: string) => { + return Http.get( + '/v1/share/works/list', + {}, + { + headers: { 'share-code': shareCode }, + }, + ); +}; + +// 内容稿件-详情(客户) +export const getShareWorksDetail = (id: string, shareCode: string) => { + return Http.get( + `/v1/share/works/${id}`, + {}, + { + headers: { 'share-code': shareCode }, + }, + ); +}; + +// 内容稿件-确认(客户) +export const patchShareWorksConfirm = (id: string, shareCode: string) => { + return Http.patch( + `/v1/share/works/${id}/confirm`, + {}, + { + headers: { 'share-code': shareCode }, + }, + ); +}; + +// 内容稿件-评论(客户) +export const postShareWorksComments = (id: string, shareCode: string, params = {}) => { + return Http.post(`/v1/share/works/${id}/comments`, params, { + headers: { 'share-code': shareCode }, + }); +}; + +// 内容稿件-删除评论(客户) +export const deleteShareWorksComments = (id: string, commentId: string, shareCode: string) => { + return Http.delete(`/v1/share/works/${id}/comments/${commentId}`, { + headers: { 'share-code': shareCode }, + }); +}; diff --git a/src/api/index.ts b/src/api/index.ts index c7d5a6a..2684e95 100644 --- a/src/api/index.ts +++ b/src/api/index.ts @@ -10,6 +10,7 @@ import axios from 'axios'; import type { AxiosInstance, AxiosRequestConfig, AxiosResponse } from 'axios'; import { handleUserLogout, goUserLogin } from '@/utils/user'; import { useEnterpriseStore } from '@/stores/modules/enterprise'; +import { glsWithCatch } from '@/utils/stroage'; import pinia from '@/stores'; const contentType = 'application/json'; @@ -43,7 +44,7 @@ export class Request { (config: AxiosRequestConfig) => { const store = useEnterpriseStore(pinia); - const token = localStorage.getItem('accessToken') as string; + const token = glsWithCatch('accessToken'); config.headers!.Authorization = token; if (store.enterpriseInfo) { diff --git a/src/assets/img/creative-generation-workshop/icon-avatar-default.png b/src/assets/img/creative-generation-workshop/icon-avatar-default.png new file mode 100644 index 0000000..277a80f Binary files /dev/null and b/src/assets/img/creative-generation-workshop/icon-avatar-default.png differ diff --git a/src/assets/img/creative-generation-workshop/icon-close.png b/src/assets/img/creative-generation-workshop/icon-close.png new file mode 100644 index 0000000..0c06dc5 Binary files /dev/null and b/src/assets/img/creative-generation-workshop/icon-close.png differ diff --git a/src/assets/img/creative-generation-workshop/icon-confirm.png b/src/assets/img/creative-generation-workshop/icon-confirm.png new file mode 100644 index 0000000..9adbf19 Binary files /dev/null and b/src/assets/img/creative-generation-workshop/icon-confirm.png differ diff --git a/src/assets/img/creative-generation-workshop/icon-lf.png b/src/assets/img/creative-generation-workshop/icon-lf.png new file mode 100644 index 0000000..beee438 Binary files /dev/null and b/src/assets/img/creative-generation-workshop/icon-lf.png differ diff --git a/src/assets/img/creative-generation-workshop/icon-lf2.png b/src/assets/img/creative-generation-workshop/icon-lf2.png new file mode 100644 index 0000000..2fe57e6 Binary files /dev/null and b/src/assets/img/creative-generation-workshop/icon-lf2.png differ diff --git a/src/assets/img/creative-generation-workshop/icon-line.png b/src/assets/img/creative-generation-workshop/icon-line.png new file mode 100644 index 0000000..17b462d Binary files /dev/null and b/src/assets/img/creative-generation-workshop/icon-line.png differ diff --git a/src/assets/img/creative-generation-workshop/icon-magic.png b/src/assets/img/creative-generation-workshop/icon-magic.png new file mode 100644 index 0000000..0076dec Binary files /dev/null and b/src/assets/img/creative-generation-workshop/icon-magic.png differ diff --git a/src/assets/img/creative-generation-workshop/icon-photo.png b/src/assets/img/creative-generation-workshop/icon-photo.png new file mode 100644 index 0000000..270b691 Binary files /dev/null and b/src/assets/img/creative-generation-workshop/icon-photo.png differ diff --git a/src/assets/img/creative-generation-workshop/icon-play-hover.png b/src/assets/img/creative-generation-workshop/icon-play-hover.png new file mode 100644 index 0000000..5756142 Binary files /dev/null and b/src/assets/img/creative-generation-workshop/icon-play-hover.png differ diff --git a/src/assets/img/creative-generation-workshop/icon-play.png b/src/assets/img/creative-generation-workshop/icon-play.png new file mode 100644 index 0000000..95b46f2 Binary files /dev/null and b/src/assets/img/creative-generation-workshop/icon-play.png differ diff --git a/src/assets/img/creative-generation-workshop/icon-success.png b/src/assets/img/creative-generation-workshop/icon-success.png new file mode 100644 index 0000000..3a3c569 Binary files /dev/null and b/src/assets/img/creative-generation-workshop/icon-success.png differ diff --git a/src/assets/img/creative-generation-workshop/icon-upload-fail.png b/src/assets/img/creative-generation-workshop/icon-upload-fail.png new file mode 100644 index 0000000..b0b667e Binary files /dev/null and b/src/assets/img/creative-generation-workshop/icon-upload-fail.png differ diff --git a/src/assets/img/creative-generation-workshop/icon-video.png b/src/assets/img/creative-generation-workshop/icon-video.png new file mode 100644 index 0000000..471861e Binary files /dev/null and b/src/assets/img/creative-generation-workshop/icon-video.png differ diff --git a/src/assets/img/error-img.png b/src/assets/img/error-img.png new file mode 100644 index 0000000..7a303d7 Binary files /dev/null and b/src/assets/img/error-img.png differ diff --git a/src/assets/svg/svg-comment.svg b/src/assets/svg/svg-comment.svg new file mode 100644 index 0000000..848f0cd --- /dev/null +++ b/src/assets/svg/svg-comment.svg @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file diff --git a/src/assets/svg/svg-contentManuscript.svg b/src/assets/svg/svg-contentManuscript.svg new file mode 100644 index 0000000..a9ddac0 --- /dev/null +++ b/src/assets/svg/svg-contentManuscript.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/components/_base/menu/index.vue b/src/components/_base/menu/index.vue index 04c296b..e78ad55 100644 --- a/src/components/_base/menu/index.vue +++ b/src/components/_base/menu/index.vue @@ -88,30 +88,20 @@ export default defineComponent({ // 跳过没有 name 的菜单项,防止 key 报错 if (!element?.name) return; - // const icon element?.meta?.icon const icon = element?.meta?.icon ? (() => { if (typeof element.meta.icon === 'string') { - return h( - 'svg', - { - style: { - width: '16px', - height: '16px', - }, - }, - [ - h('use', { - 'xlink:href': element.meta.icon, - }), - ], + return ( + + + ); } else { - // 如果是对象,按原来的方式渲染 return h(element.meta.icon as object); } })() : null; + if (element.children && element.children.length > 0) { nodes.push( { const _filterRoutes = appRoutes.filter((v) => v.meta?.id === sidebarStore.activeMenuId); diff --git a/src/components/_base/navbar/components/navbar-menu/index.vue b/src/components/_base/navbar/components/navbar-menu/index.vue index 88953ff..d5be9d6 100644 --- a/src/components/_base/navbar/components/navbar-menu/index.vue +++ b/src/components/_base/navbar/components/navbar-menu/index.vue @@ -33,9 +33,11 @@ - diff --git a/src/components/hover-image-preview/index.vue b/src/components/hover-image-preview/index.vue new file mode 100644 index 0000000..2366750 --- /dev/null +++ b/src/components/hover-image-preview/index.vue @@ -0,0 +1,93 @@ + + + + + + diff --git a/src/components/text-over-tips/index.vue b/src/components/text-over-tips/index.vue index c116d05..57c8d43 100644 --- a/src/components/text-over-tips/index.vue +++ b/src/components/text-over-tips/index.vue @@ -3,22 +3,20 @@ -
-
- {{ props.context }} -
-
- {{ isShow ? '收起' : '展开' }} - -
+
+ {{ props.context }} +
+
+ {{ isShow ? '收起' : '展开' }} +
@@ -53,7 +51,6 @@ const props = defineProps({ default: false, }, }); - const data = reactive({}); const isShow = ref(false); const contentStyle = computed(() => { 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 @@ - - - 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..7d179f6 100644 --- a/src/layouts/Basic.vue +++ b/src/layouts/Basic.vue @@ -108,7 +108,6 @@ 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..2f00f7a --- /dev/null +++ b/src/views/creative-generation-workshop/explore/detail/components/ai-suggest/index.vue @@ -0,0 +1,318 @@ + + + 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..9301e11 --- /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..4b73d14 --- /dev/null +++ b/src/views/creative-generation-workshop/explore/detail/style.scss @@ -0,0 +1,107 @@ +.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: 472px; + background: #333; + aspect-ratio: 3 / 4; + } + .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..36b6c25 --- /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 @@ + + + + + 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 @@ + + + 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..5fc83d7 --- /dev/null +++ b/src/views/creative-generation-workshop/manuscript-writer/check-list/components/manuscript-check-table/index.vue @@ -0,0 +1,195 @@ + + + + + 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..11b2a55 --- /dev/null +++ b/src/views/creative-generation-workshop/manuscript-writer/check-list/constants.ts @@ -0,0 +1,249 @@ +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: 220, + }, + { + 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..faf9cd9 --- /dev/null +++ b/src/views/creative-generation-workshop/manuscript-writer/check-list/index.vue @@ -0,0 +1,169 @@ + + + + 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 @@ + + + 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..c02dbf5 --- /dev/null +++ b/src/views/creative-generation-workshop/manuscript-writer/check/components/content-card/highlight-textarea.vue @@ -0,0 +1,219 @@ + + + + + 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..f563bc1 --- /dev/null +++ b/src/views/creative-generation-workshop/manuscript-writer/check/components/content-card/index.vue @@ -0,0 +1,475 @@ + + + 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..5e93d97 --- /dev/null +++ b/src/views/creative-generation-workshop/manuscript-writer/check/components/content-card/style.scss @@ -0,0 +1,197 @@ +.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 { + 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-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..878a7ae --- /dev/null +++ b/src/views/creative-generation-workshop/manuscript-writer/check/index.vue @@ -0,0 +1,256 @@ + + + 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 @@ + + + + + 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..021c963 --- /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..c52763f --- /dev/null +++ b/src/views/creative-generation-workshop/manuscript-writer/detail/style.scss @@ -0,0 +1,66 @@ +$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: 472px; + background: #333; + aspect-ratio: 3 / 4; + } + .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 @@ + + + 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..a658031 --- /dev/null +++ b/src/views/creative-generation-workshop/manuscript-writer/list/components/manuscript-table/index.vue @@ -0,0 +1,144 @@ + + + + + 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..1a14f55 --- /dev/null +++ b/src/views/creative-generation-workshop/manuscript-writer/list/components/upload-manuscript-modal/index.vue @@ -0,0 +1,359 @@ + + + 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 @@ + + + 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..ec9e755 --- /dev/null +++ b/src/views/creative-generation-workshop/manuscript-writer/upload/index.vue @@ -0,0 +1,320 @@ + + + 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 @@ + + + + + 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 @@ + + + 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..20194d4 --- /dev/null +++ b/src/views/creative-generation-workshop/manuscript/check-list/components/manuscript-check-table/index.vue @@ -0,0 +1,200 @@ + + + + + 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..4d61416 --- /dev/null +++ b/src/views/creative-generation-workshop/manuscript/check-list/constants.ts @@ -0,0 +1,259 @@ +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: 220, + }, + { + 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..2971ecf --- /dev/null +++ b/src/views/creative-generation-workshop/manuscript/check-list/index.vue @@ -0,0 +1,166 @@ + + + + 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 @@ + + + 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..3644d31 --- /dev/null +++ b/src/views/creative-generation-workshop/manuscript/check/components/content-card/highlight-textarea.vue @@ -0,0 +1,220 @@ + + + + + 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..16d274f --- /dev/null +++ b/src/views/creative-generation-workshop/manuscript/check/components/content-card/index.vue @@ -0,0 +1,476 @@ + + + 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..5e93d97 --- /dev/null +++ b/src/views/creative-generation-workshop/manuscript/check/components/content-card/style.scss @@ -0,0 +1,197 @@ +.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 { + 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-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..b2969c4 --- /dev/null +++ b/src/views/creative-generation-workshop/manuscript/check/index.vue @@ -0,0 +1,256 @@ + + + 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 @@ + + + + + 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..a4435a6 --- /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..9bfb2bf --- /dev/null +++ b/src/views/creative-generation-workshop/manuscript/components/share-manuscript-modal/share-modal.vue @@ -0,0 +1,151 @@ + 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..02f8d59 --- /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..c52763f --- /dev/null +++ b/src/views/creative-generation-workshop/manuscript/detail/style.scss @@ -0,0 +1,66 @@ +$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: 472px; + background: #333; + aspect-ratio: 3 / 4; + } + .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..f75ddb8 --- /dev/null +++ b/src/views/creative-generation-workshop/manuscript/list/components/manuscript-table/constants.ts @@ -0,0 +1,73 @@ +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: 'customer_opinion', + width: 220, + }, + // { + // 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 @@ + + + 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..d24630b --- /dev/null +++ b/src/views/creative-generation-workshop/manuscript/list/components/manuscript-table/index.vue @@ -0,0 +1,133 @@ + + + + + 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..23f9ba7 --- /dev/null +++ b/src/views/creative-generation-workshop/manuscript/list/components/upload-manuscript-modal/index.vue @@ -0,0 +1,392 @@ + + + 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 @@ + + + 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..cdab32b --- /dev/null +++ b/src/views/creative-generation-workshop/manuscript/upload/index.vue @@ -0,0 +1,321 @@ + + + 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 @@
@@ -47,7 +47,7 @@ 暂无分组 @@ -89,7 +89,6 @@ import DeleteGroup from './delete-group.vue'; import icon1 from '@/assets/img/media-account/icon-delete.png'; import icon2 from '@/assets/img/media-account/icon-empty.png'; -import icon3 from '@/assets/img/media-account/icon-add.png'; const emit = defineEmits(['update']); diff --git a/src/views/property-marketing/media-account/account-manage/components/tags-manage-modal/index.vue b/src/views/property-marketing/media-account/account-manage/components/tags-manage-modal/index.vue index 83d9ba5..77950ea 100644 --- a/src/views/property-marketing/media-account/account-manage/components/tags-manage-modal/index.vue +++ b/src/views/property-marketing/media-account/account-manage/components/tags-manage-modal/index.vue @@ -25,7 +25,7 @@ @@ -45,7 +45,7 @@ 暂无标签 @@ -65,7 +65,6 @@ import { getTagsList } from '@/api/all/propertyMarketing'; import AddTag from './add-tag.vue'; import DeleteTag from './delete-tag.vue'; -import iconAdd from '@/assets/img/media-account/icon-add.png'; import iconDelete from '@/assets/img/media-account/icon-delete-1.png'; const emit = defineEmits(['update']); diff --git a/src/views/property-marketing/media-account/account-manage/index.vue b/src/views/property-marketing/media-account/account-manage/index.vue index 0f45c81..ae128f4 100644 --- a/src/views/property-marketing/media-account/account-manage/index.vue +++ b/src/views/property-marketing/media-account/account-manage/index.vue @@ -22,7 +22,7 @@ @@ -142,7 +142,6 @@ import { getMediaAccountSyncStatus, } from '@/api/all/propertyMarketing'; -import icon1 from '@/assets/img/media-account/icon-add.png'; import icon2 from '@/assets/img/media-account/icon-group.png'; import icon3 from '@/assets/img/media-account/icon-tag.png'; import icon4 from '@/assets/img/media-account/icon-success.png'; diff --git a/src/views/property-marketing/project-manage/project-list/components/project-table/constants.ts b/src/views/property-marketing/project-manage/project-list/components/project-table/constants.ts index a23eb25..2ed2491 100644 --- a/src/views/property-marketing/project-manage/project-list/components/project-table/constants.ts +++ b/src/views/property-marketing/project-manage/project-list/components/project-table/constants.ts @@ -13,7 +13,7 @@ export const TABLE_COLUMNS = [ title: '项目预算', dataIndex: 'budget', width: 180, - prefix: "¥" + prefix: '¥', }, { title: '关联平台账号', @@ -42,5 +42,6 @@ export const TABLE_COLUMNS = [ title: '操作', dataIndex: 'operation', width: 100, + fixed: 'right', }, ]; diff --git a/src/views/property-marketing/project-manage/project-list/index.vue b/src/views/property-marketing/project-manage/project-list/index.vue index 404ccd3..51d8643 100644 --- a/src/views/property-marketing/project-manage/project-list/index.vue +++ b/src/views/property-marketing/project-manage/project-list/index.vue @@ -6,7 +6,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 @@
@@ -46,7 +46,7 @@ 暂无分组 @@ -88,7 +88,6 @@ import DeleteGroup from './delete-group.vue'; import icon1 from '@/assets/img/media-account/icon-delete.png'; import icon2 from '@/assets/img/media-account/icon-empty.png'; -import icon3 from '@/assets/img/media-account/icon-add.png'; const emit = defineEmits(['update']); const visible = ref(false); diff --git a/src/views/property-marketing/put-account/account-manage/components/add-account-modal/index.vue b/src/views/property-marketing/put-account/account-manage/components/add-account-modal/index.vue index 7f0aa6e..028a821 100644 --- a/src/views/property-marketing/put-account/account-manage/components/add-account-modal/index.vue +++ b/src/views/property-marketing/put-account/account-manage/components/add-account-modal/index.vue @@ -308,7 +308,7 @@ const handleBatchImport = async () => { if (code === 200) { const id = genRandomId(); showExportNotification(`正在导入“${file.value.name}”,请稍后...`, { id }); - emit('startQueryTaskStatus', data.id, id); + emits('startQueryTaskStatus', data.id, id); onClose(); } else { uploadStatus.value = UploadStatus.ERROR; diff --git a/src/views/property-marketing/put-account/account-manage/index.vue b/src/views/property-marketing/put-account/account-manage/index.vue index e110d61..16fc6ba 100644 --- a/src/views/property-marketing/put-account/account-manage/index.vue +++ b/src/views/property-marketing/put-account/account-manage/index.vue @@ -10,7 +10,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';