From 984e0c27b8b56ba824aa1ac6f858e0c6ee7d545d Mon Sep 17 00:00:00 2001 From: rd <1344903914@qq.com> Date: Mon, 15 Sep 2025 15:42:37 +0800 Subject: [PATCH 01/33] =?UTF-8?q?refactor:=20=E9=99=90=E5=88=B6=E6=A0=87?= =?UTF-8?q?=E9=A2=98=E8=BE=93=E5=85=A5=E9=95=BF=E5=BA=A6=E5=B9=B6=E7=A7=BB?= =?UTF-8?q?=E9=99=A4=E5=BA=8F=E5=8F=B7=E8=BF=87=E6=BB=A4=E9=A1=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit -- 移除成品稿和原材料 将标题输入的最大长度从30改为20 - 移除列表中的序号搜索功能 -各页面中序号相关的过滤项 将标题输入框的最大长度限制- 更新相关常量和枚举定义从 30 改为20 - 注释掉审核列表中的序号搜索功能 - 优化相关组件的代码结构,提高可维护性 --- .../components/filter-block/index.vue | 36 +++++++++---------- .../manuscript/components/edit-form/index.vue | 2 +- .../list/components/filter-block/index.vue | 28 +++++++-------- .../manuscript/list/constants.ts | 2 +- .../components/filter-block/index.vue | 16 ++++----- .../components/raw-material/constants.ts | 4 +-- .../components/filter-block/index.vue | 34 +++++++++--------- .../manuscript/components/edit-form/index.vue | 3 +- .../list/components/filter-block/index.vue | 34 +++++++++--------- .../manuscript/list/constants.ts | 6 ++-- 10 files changed, 83 insertions(+), 82 deletions(-) diff --git a/src/views/material-center/components/finished-products/manuscript/check-list/components/filter-block/index.vue b/src/views/material-center/components/finished-products/manuscript/check-list/components/filter-block/index.vue index cec2842..0e61be1 100644 --- a/src/views/material-center/components/finished-products/manuscript/check-list/components/filter-block/index.vue +++ b/src/views/material-center/components/finished-products/manuscript/check-list/components/filter-block/index.vue @@ -23,23 +23,23 @@ -
- 序号 - - - - - -
+ + + + + + + + + + + + + + + + +
上传时间 diff --git a/src/views/material-center/components/finished-products/manuscript/components/edit-form/index.vue b/src/views/material-center/components/finished-products/manuscript/components/edit-form/index.vue index b778581..4133f47 100644 --- a/src/views/material-center/components/finished-products/manuscript/components/edit-form/index.vue +++ b/src/views/material-center/components/finished-products/manuscript/components/edit-form/index.vue @@ -309,7 +309,7 @@ export default { placeholder="请输入标题" size="large" class="!w-500px" - maxlength={30} + maxlength={20} showCount /> diff --git a/src/views/material-center/components/finished-products/manuscript/list/components/filter-block/index.vue b/src/views/material-center/components/finished-products/manuscript/list/components/filter-block/index.vue index fb0249e..0b391ec 100644 --- a/src/views/material-center/components/finished-products/manuscript/list/components/filter-block/index.vue +++ b/src/views/material-center/components/finished-products/manuscript/list/components/filter-block/index.vue @@ -25,20 +25,20 @@ @change="handleSearch" />
--> -
- 序号 - - - -
+ + + + + + + + + + + + + +
审核状态
-
- 序号 - - - -
+ + + + + + + +
上传时间
-
- 序号 - - - - - -
+ + + + + + + + + + + + + + + + +
上传时间 diff --git a/src/views/material-center/components/raw-material/components/tags-manage-modal/delete-tag.vue b/src/views/material-center/components/raw-material/components/tags-manage-modal/delete-tag.vue new file mode 100644 index 0000000..0543477 --- /dev/null +++ b/src/views/material-center/components/raw-material/components/tags-manage-modal/delete-tag.vue @@ -0,0 +1,63 @@ + + + + diff --git a/src/views/material-center/components/raw-material/components/tags-manage-modal/index.vue b/src/views/material-center/components/raw-material/components/tags-manage-modal/index.vue new file mode 100644 index 0000000..a7f0b32 --- /dev/null +++ b/src/views/material-center/components/raw-material/components/tags-manage-modal/index.vue @@ -0,0 +1,132 @@ + + + + + + diff --git a/src/views/material-center/components/raw-material/components/tags-manage-modal/style.scss b/src/views/material-center/components/raw-material/components/tags-manage-modal/style.scss new file mode 100644 index 0000000..2ec1a38 --- /dev/null +++ b/src/views/material-center/components/raw-material/components/tags-manage-modal/style.scss @@ -0,0 +1,51 @@ +.raw-material-tags-manage-modal { + border-radius: 8px; + + .ant-modal-body { + // padding: 24px 24px 44px !important; + overflow: hidden; + display: flex; + flex-direction: column; + + .arcanto-btn { + width: fit-content; + + .ant-btn-icon { + line-height: 16px; + } + } + + .tag-list { + display: flex; + flex-wrap: wrap; + gap: 12px; + + .tag-item { + height: 24px; + display: flex; + align-items: center; + background: #f5f5f5; + border-radius: 4px; + padding: 4px 12px; + position: relative; + + .delete-icon { + position: absolute; + z-index: 1; + top: -6px; + right: -6px; + cursor: pointer; + width: 12px; + height: 12px; + display: none; + } + + &:hover { + .delete-icon { + display: block; + } + } + } + } + } +} diff --git a/src/views/material-center/components/raw-material/index.vue b/src/views/material-center/components/raw-material/index.vue index 0673c1c..d662d5e 100644 --- a/src/views/material-center/components/raw-material/index.vue +++ b/src/views/material-center/components/raw-material/index.vue @@ -1,14 +1,18 @@ + + diff --git a/src/views/material-center/components/raw-material/components/add-raw-material-drawer/style.scss b/src/views/material-center/components/raw-material/components/add-raw-material-drawer/style.scss new file mode 100644 index 0000000..2362f69 --- /dev/null +++ b/src/views/material-center/components/raw-material/components/add-raw-material-drawer/style.scss @@ -0,0 +1,48 @@ +.xt-add-raw-material-modal { + .ant-drawer-header { + height: 58px; + border-bottom: none; + } + + .ant-upload { + width: 100%; + } + + .ant-drawer-body { + padding: 0; + display: flex; + flex-direction: column; + + .cts { + color: #211f24; + font-family: $font-family-regular; + font-size: 14px; + font-style: normal; + font-weight: 400; + line-height: 22px; + } + + .content { + .upload-box { + transition: all 0.3s; + + &:hover { + border-color: #6d4cfe; + } + } + + .upload-text { + color: #000; + text-align: center; + font-family: $font-family-regular; + font-size: 12px; + font-style: normal; + font-weight: 400; + line-height: 20px; + } + } + + .footer { + } + } +} diff --git a/src/views/material-center/components/raw-material/index.vue b/src/views/material-center/components/raw-material/index.vue index d662d5e..cc29a72 100644 --- a/src/views/material-center/components/raw-material/index.vue +++ b/src/views/material-center/components/raw-material/index.vue @@ -7,6 +7,7 @@ import FilterBlock from './components/filter-block/index.vue'; import RawMaterialTable from './components/table/index.vue'; import DeleteRawMaterialModal from './components/table/delete-file-modal.vue'; import TagsManageModal from './components/tags-manage-modal'; +import AddRawMaterialDrawer from './components/add-raw-material-drawer'; import { useTableSelectionWithPagination } from '@/hooks/useTableSelectionWithPagination'; import { getRawMaterialsPage } from '@/api/all/generationWorkshop'; @@ -32,6 +33,7 @@ export default defineComponent({ const deleteRawMaterialModalRef = ref(null); const tagsManageModalRef = ref(null); + const addRawMaterialDrawerRef = ref(null); const query = ref(cloneDeep(INITIAL_QUERY)); const handleSearch = () => { @@ -91,7 +93,7 @@ export default defineComponent({ tagsManageModalRef.value?.open(); }; const handleAddMaterial = () => { - console.log('handleAddMaterial'); + addRawMaterialDrawerRef.value?.open(); }; onMounted(() => { @@ -182,6 +184,7 @@ export default defineComponent({
+ ); From c08b13673f6d850ece249820e089a2b16b9ed5ef Mon Sep 17 00:00:00 2001 From: rd <1344903914@qq.com> Date: Wed, 17 Sep 2025 11:59:31 +0800 Subject: [PATCH 05/33] =?UTF-8?q?feat:=20=E4=BC=98=E5=8C=96=E5=88=A0?= =?UTF-8?q?=E9=99=A4=E6=A0=87=E7=AD=BE=E6=A8=A1=E6=80=81=E6=A1=86=E5=92=8C?= =?UTF-8?q?=E4=B8=8A=E4=BC=A0=E7=BB=84=E4=BB=B6=EF=BC=8C=E6=96=B0=E5=A2=9E?= =?UTF-8?q?=E6=96=87=E4=BB=B6=E9=A2=84=E7=AD=BE=E5=90=8DURL=E8=8E=B7?= =?UTF-8?q?=E5=8F=96=E5=8A=9F=E8=83=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 简化 `delete-tag.vue` 模态框模板结构 - 更新 `add-raw-material-drawer/index.vue` 组件,增加文件预签名URL获取和上传状态显示 - 新增 `getFilePreSignedUrl` API 函数 - 更新 `tools.ts` 中的文件扩展名提取函数 - 优化按钮激活状态样式 - 添加 `icon-no-text.png` 图标文件 --- src/api/all/common.ts | 7 +- src/styles/components/ant-button.scss | 2 +- src/utils/tools.ts | 8 +- .../add-raw-material-drawer/index.vue | 199 ++++++++++++------ .../add-raw-material-drawer/style.scss | 56 +++++ .../components/tags-manage-modal/add-tag.vue | 1 - .../tags-manage-modal/delete-tag.vue | 21 +- .../raw-material/img/icon-no-text.png | Bin 0 -> 1118 bytes 8 files changed, 214 insertions(+), 80 deletions(-) create mode 100644 src/views/material-center/components/raw-material/img/icon-no-text.png diff --git a/src/api/all/common.ts b/src/api/all/common.ts index fc1e92a..7deae61 100644 --- a/src/api/all/common.ts +++ b/src/api/all/common.ts @@ -73,7 +73,12 @@ export const getVideoPreSignedUrl = (params = {}) => { return Http.get('/v1/oss/video-pre-signed-url', params); }; +// 获取文件上传地址 +export const getFilePreSignedUrl = (params = {}) => { + return Http.get('/v1/oss/file-pre-signed-url', params); +}; + // 清除限流 export const postClearRateLimiter = (params = {}) => { return Http.post(`/v1/rate-limiter/clear`, params); -}; \ No newline at end of file +}; diff --git a/src/styles/components/ant-button.scss b/src/styles/components/ant-button.scss index 29bc47e..80b188b 100644 --- a/src/styles/components/ant-button.scss +++ b/src/styles/components/ant-button.scss @@ -71,7 +71,7 @@ } &:active { - background: $color-primary-7 !important; + background-color: $color-primary-7 !important; } } diff --git a/src/utils/tools.ts b/src/utils/tools.ts index 5df5a36..c0f2580 100644 --- a/src/utils/tools.ts +++ b/src/utils/tools.ts @@ -112,11 +112,15 @@ export function genRandomId() { return `id_${dayjs().unix()}_${Math.floor(Math.random() * 10000)}`; } +export function getFileExtension(filename) { + const match = filename.match(/\.([^.]+)$/); + return match ? match[1].toLowerCase() : ''; +} export function formatFileSize(bytes: number): string { if (bytes === 0) return '0 Bytes'; const k = 1024; - const sizes = ['Bytes', 'kb', 'mB', 'gB', 'tB']; + const sizes = ['Bytes', 'kb', 'mb', 'gb', 'tb']; const i = Math.floor(Math.log(bytes) / Math.log(k)); return parseFloat((bytes / Math.pow(k, i)).toFixed(2)) + ' ' + sizes[i]; @@ -218,7 +222,7 @@ export function getVideoInfo(file: File): Promise<{ duration: number; firstFrame }; // 设置视频源以触发加载 - video.src = URL.createObjectURL(file); + video.src = window.URL.createObjectURL(file); // 设置超时,防止长时间无响应 setTimeout(() => { diff --git a/src/views/material-center/components/raw-material/components/add-raw-material-drawer/index.vue b/src/views/material-center/components/raw-material/components/add-raw-material-drawer/index.vue index 57659a3..e8fbb40 100644 --- a/src/views/material-center/components/raw-material/components/add-raw-material-drawer/index.vue +++ b/src/views/material-center/components/raw-material/components/add-raw-material-drawer/index.vue @@ -1,5 +1,5 @@ diff --git a/src/views/material-center/components/raw-material/img/icon-no-text.png b/src/views/material-center/components/raw-material/img/icon-no-text.png new file mode 100644 index 0000000000000000000000000000000000000000..2cbb9e04363b94a989aaf08001eb9cdc3de92973 GIT binary patch literal 1118 zcmeAS@N?(olHy`uVBq!ia0vp^4Is?H1|$#LC7uRSoCO|{#S9E$svykh8Km+7D9BhG z5Po0a;hEN5y zoC|BYBX_O~S15PbA#`f$g75_~jHR!+#PecibXc5jo}`zAe&_{1k#amM-4;|(uu%s%tHe!A(m!5?q78wc9!w+ONA zW%BgA`#eJL{En#q$JYEm8F+d94jE~wKPqQ;^GKT=`z!tb4dWZ(g%h+?DivE^E#4IU z)@Iv&tKGHLPq}+PB-Q7(H=k2f;Q1%j(ly)RdBB5Ny!&6s+;e_$BTnJ8%smH&5f{u6h*iT(Pa7Jd4;8`ZY==%+a*%k$G37)Za7g=P%e&cRe`iI`y_1m_0 zIf^hIG5KNp`?kaG1?{WqTKOM*k@!*B_hQTKhrja{e&CXK&~B1{l-l)e_9=s1e8@h~ z+qJWy@W#{~C#Co4)tAXU|Jt!yMf^Z+Y}?lCKWbY!CRwxi+C#7X`ZTLk?ke~HV zPCnomZ}<0i&5g=K8(uyWUq8X-Eu&jUqS^ahleiybJP6%W-COyyd2ZwL+a7*J?F_T+ z{{7myd-i|9w8wt4e&mb!zur^5`ua`J@Bh7hCp~8<`+vaq?!?KDj?S;MVpmwsa6*%z zh^t`^6DG5S@rFuZX4Rj!D;MujT#|l;ck#Ae?)k0#SJWGR1-@lGwsWQNQE7YkginE0ked#^Dure`hYr|0mJxV0Gj|;Gn$|H>F|9xno=$^R%hj}JwsuY$ zmfQ?-`HEAD`b*RK`S}01aV%s?4AQqPJa47mxUV;qLv()fO}jEC4Pf@Tv4F$lM#SwI zx0A2`?|e3I{VpEu2`PW&{$#!1DgCEOz){s@gP7bo=SvR*Hapk8pZdT2vnnt*NZ9GL vNyN1YA7S;Vk$H7)@wDd^<`y4p_cN?*{9NdA?$cLbalqi|>gTe~DWM4ff=k_V literal 0 HcmV?d00001 From bf7963234e0122d7d9a5972573c1172ecb1d4ccb Mon Sep 17 00:00:00 2001 From: rd <1344903914@qq.com> Date: Wed, 17 Sep 2025 15:57:19 +0800 Subject: [PATCH 06/33] =?UTF-8?q?feat:=20=E4=BC=98=E5=8C=96=E5=8E=9F?= =?UTF-8?q?=E6=96=99=E5=BA=93=E4=B8=8A=E4=BC=A0=E5=8A=9F=E8=83=BD=E5=92=8C?= =?UTF-8?q?=E6=A0=87=E7=AD=BE=E7=AE=A1=E7=90=86?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 在 `AddRawMaterialDrawer` 组件中添加 `onUpdate` 事件以刷新数据 - 更新 `constants.ts` 中操作列的宽度 - 增加 Ant Select 和 Modal 的样式 - 新增批量添加、修改和详情的 API 函数 - 优化 `add-raw-material-drawer` 组件,增加标签输入和删除确认模态框 - 更新 `ant-select.scss` 和 `ant-modal.scss` 样式文件 --- src/api/all/generationWorkshop.ts | 16 ++ src/styles/components/ant-modal.scss | 27 +- src/styles/components/ant-select.scss | 15 ++ src/styles/components/ant-textarea.scss | 7 + .../add-raw-material-drawer/index.vue | 235 ++++++++++++++---- .../add-raw-material-drawer/style.scss | 6 + .../components/raw-material/constants.ts | 2 +- .../components/raw-material/index.vue | 2 +- 8 files changed, 265 insertions(+), 45 deletions(-) diff --git a/src/api/all/generationWorkshop.ts b/src/api/all/generationWorkshop.ts index cb73f96..3e24a5d 100644 --- a/src/api/all/generationWorkshop.ts +++ b/src/api/all/generationWorkshop.ts @@ -191,3 +191,19 @@ export const putRawMaterialTag = (params = {}) => { export const deleteRawMaterialTag = (id: string) => { return Http.delete(`/v1/raw-material-tags/${id}`); }; + +// 原料库-本地批量添加 +export const postBatchRawMaterial = (params = {}) => { + return Http.post('/v1/raw-materials/batch', params); +}; + +// 原料库-修改 +export const putRawMaterial = (params = {}) => { + const { id, ...rest } = params as { id: string; [key: string]: any }; + return Http.put(`/v1/raw-material/${id}`, rest); +}; + +// 原料库-详情 +export const getRawMaterialDetail = (id: string) => { + return Http.get(`/v1/raw-material/${id}`); +}; diff --git a/src/styles/components/ant-modal.scss b/src/styles/components/ant-modal.scss index 77b65de..c968195 100644 --- a/src/styles/components/ant-modal.scss +++ b/src/styles/components/ant-modal.scss @@ -22,7 +22,7 @@ } } .ant-modal-body { - padding: 24px 20px; + padding: 20px 24px; } .ant-modal-footer { margin-top: 0; @@ -38,5 +38,30 @@ } } } + + .ant-modal-confirm-body-wrapper { + .ant-modal-confirm-title { + .anticon { + font-size: 24px; + } + } + + .ant-modal-confirm-content { + margin-top: 8px; + color: var(--Text-2, #55585F); + font-family: $font-family-regular; + font-size: 14px; + font-style: normal; + font-weight: 400; + line-height: 22px; + } + + + .ant-modal-confirm-btns { + display: flex; + justify-content: end; + margin-top: 24px; + } + } } } diff --git a/src/styles/components/ant-select.scss b/src/styles/components/ant-select.scss index c66e615..afb4d1a 100644 --- a/src/styles/components/ant-select.scss +++ b/src/styles/components/ant-select.scss @@ -36,6 +36,20 @@ border-color: $color-error !important; } + &:not(.ant-select-disabled) { + &:hover { + .ant-select-selector { + border-color: rgb(var(--primary-6)) !important; + } + } + } + + &-disabled { + .ant-select-selector { + background-color: var(--BG-200, #f2f3f5) !important; + } + } + } .ant-select { @@ -57,6 +71,7 @@ &.ant-select-multiple { .ant-select-selector { + height: fit-content !important; padding: 0 12px 0 4px !important; .ant-select-selection-overflow-item { diff --git a/src/styles/components/ant-textarea.scss b/src/styles/components/ant-textarea.scss index 5c46dae..595c3fc 100644 --- a/src/styles/components/ant-textarea.scss +++ b/src/styles/components/ant-textarea.scss @@ -3,6 +3,13 @@ padding: 8px 12px 4px 12px; } + &:not(.ant-input-textarea-disabled) { + &:hover { + .ant-input { + border-color: rgb(var(--primary-6)) !important; + } + } + } &.ant-input-textarea-show-count { &::after { position: absolute; diff --git a/src/views/material-center/components/raw-material/components/add-raw-material-drawer/index.vue b/src/views/material-center/components/raw-material/components/add-raw-material-drawer/index.vue index e8fbb40..98135a3 100644 --- a/src/views/material-center/components/raw-material/components/add-raw-material-drawer/index.vue +++ b/src/views/material-center/components/raw-material/components/add-raw-material-drawer/index.vue @@ -1,14 +1,16 @@ + + diff --git a/src/views/material-center/components/raw-material/components/edit-raw-material-modal/style.scss b/src/views/material-center/components/raw-material/components/edit-raw-material-modal/style.scss new file mode 100644 index 0000000..e69de29 diff --git a/src/views/material-center/components/raw-material/components/table/index.vue b/src/views/material-center/components/raw-material/components/table/index.vue index 2e6288a..a23350a 100644 --- a/src/views/material-center/components/raw-material/components/table/index.vue +++ b/src/views/material-center/components/raw-material/components/table/index.vue @@ -76,7 +76,10 @@