diff --git a/.env.production b/.env.production index 24e1e98..52f3b1c 100644 --- a/.env.production +++ b/.env.production @@ -5,8 +5,8 @@ VITE_BASE_URL = / # API 地址前缀 # VITE_API_URL = http://219.157.255.213:36010 -# VITE_API_URL = https://userdcar-server.hnxinyouhe.com - VITE_API_URL = https://usedcar.dev.hnxinyouhe.com +VITE_API_URL = https://userdcar-server.hnxinyouhe.com +# VITE_API_URL = https://usedcar.dev.hnxinyouhe.com # VITE_API_URL_WSS = wss://fdesk.hnxinyouhe.com # VITE_API_URL_WSS = wss://x-server.hnxinyouhe.com # Delete console diff --git a/src/components/core/forms/MultiFileUpload.vue b/src/components/core/forms/MultiFileUpload.vue index 36b3da3..0cf7f8e 100644 --- a/src/components/core/forms/MultiFileUpload.vue +++ b/src/components/core/forms/MultiFileUpload.vue @@ -7,11 +7,11 @@ :headers="uploadHeaders" :show-file-list="false" :on-success="handleUpload" - :before-upload="beforeUpload" - multiple + :before-upload="beforeUploadHandle" + :multiple="maxCount !== 1" :accept="accept" > -
+
{{ uploadText }} @@ -79,6 +79,7 @@ iconSrc?: string accept?: string maxSize?: number // MB + maxCount?: number // 最大文件数量,默认不限制 actionImageUplode?: string } @@ -94,11 +95,17 @@ iconSrc: contractIcon, accept: '.jpg,.jpeg,.png,.gif,.pdf,.doc,.docx,.xls,.xlsx,.txt', maxSize: 10, + maxCount: 0, // 0 表示不限制 actionImageUplode: `${import.meta.env.VITE_API_URL}/ticket/upload?scene=stock_orders` }) const actionImageUplode = computed(() => props.actionImageUplode) + // 是否已达到最大文件数量 + const isMaxCountReached = computed(() => { + return props.maxCount > 0 && fileList.value.length >= props.maxCount + }) + const emit = defineEmits() const fileList = computed({ @@ -123,6 +130,15 @@ return (file.file_name || '').toLowerCase().startsWith('image/') } + const beforeUploadHandle = (file: File) => { + // 检查文件数量限制 + if (isMaxCountReached.value) { + ElMessage.error(`最多只能上传${props.maxCount}个文件!`) + return false + } + return beforeUpload(file) + } + const beforeUpload = (file: File) => { const isValidType = new RegExp(props.accept.replace(/\./g, '\\.').replace(/,/g, '|'), 'i').test( file.name @@ -206,6 +222,12 @@ border-color: #409eff; background: #f0f9ff; } + + &.is-disabled { + cursor: not-allowed; + opacity: 0.5; + pointer-events: none; + } } .upload-icon { diff --git a/src/enums/auditEnum.ts b/src/enums/auditEnum.ts index 44fc765..b0e1f2f 100644 --- a/src/enums/auditEnum.ts +++ b/src/enums/auditEnum.ts @@ -7,7 +7,13 @@ export enum AuditStatusEnum { /** 审核通过 */ APPROVED = 1, /** 审核拒绝 */ - REJECTED = 2 + REJECTED = 2, + /** 推送中 */ + PUSHING = 3, + /** 推送成功 */ + PUSH_SUCCESS = 4, + /** 推送失败 */ + PUSH_FAILED = 5 } /** @@ -16,7 +22,10 @@ export enum AuditStatusEnum { export const AuditStatusMap: { [key: number]: string } = { 0: '待审核', 1: '审核通过', - 2: '审核拒绝' + 2: '审核拒绝', + 3: '推送中', + 4: '推送成功', + 5: '推送失败' } /** @@ -25,5 +34,8 @@ export const AuditStatusMap: { [key: number]: string } = { export const AuditStatusColorMap: { [key: number]: string } = { 0: 'warning', 1: 'success', - 2: 'danger' + 2: 'danger', + 3: 'info', + 4: 'success', + 5: 'danger' } diff --git a/src/router/routes/asyncRoutes.ts b/src/router/routes/asyncRoutes.ts index 1f08a16..15ea872 100644 --- a/src/router/routes/asyncRoutes.ts +++ b/src/router/routes/asyncRoutes.ts @@ -25,7 +25,7 @@ export const asyncRoutes: AppRouteRecord[] = [ name: 'publishAdd', component: 'admin/publish/publish_add', meta: { - title: '发布', + title: '发布(二手车)', roles: ['procurement', 'admin'] } }, @@ -34,8 +34,8 @@ export const asyncRoutes: AppRouteRecord[] = [ name: 'publishAddPro', component: 'admin/publish/publish_addpro', meta: { - title: '发布', - roles: ['supplier', 'businesspro'] + title: '发布(smartcar)', + roles: ['supplier', 'businesspro', 'adminpro'] } }, { @@ -43,7 +43,7 @@ export const asyncRoutes: AppRouteRecord[] = [ name: 'publishMyListPro', component: 'admin/publish/publish_my_listpro', meta: { - title: '我的发布', + title: '我的发布(smartcar)', roles: ['supplier', 'businesspro', 'adminpro'] } }, @@ -52,8 +52,8 @@ export const asyncRoutes: AppRouteRecord[] = [ name: 'publishMyList', component: 'admin/publish/publish_my_list', meta: { - title: '我的发布', - roles: ['procurement', 'admin', 'adminpro'] + title: '我的发布(二手车)', + roles: ['procurement', 'admin'] } }, { @@ -81,7 +81,7 @@ export const asyncRoutes: AppRouteRecord[] = [ meta: { title: '用户信息', isHide: true, - roles: ['procurement', 'business', 'admin', 'supplier', 'businesspro'] + roles: ['procurement', 'business', 'admin', 'supplier', 'businesspro', 'adminpro'] } }, { diff --git a/src/views/admin/audit/audit_list.vue b/src/views/admin/audit/audit_list.vue index 277d45a..3a8fa45 100644 --- a/src/views/admin/audit/audit_list.vue +++ b/src/views/admin/audit/audit_list.vue @@ -6,7 +6,7 @@ - + + + + - +
@@ -72,7 +75,7 @@ - + diff --git a/src/views/auth/feishu-callback.vue b/src/views/auth/feishu-callback.vue index d8f0a5b..bff462f 100644 --- a/src/views/auth/feishu-callback.vue +++ b/src/views/auth/feishu-callback.vue @@ -16,9 +16,14 @@ // 角色设置辅助函数 const getRoles = (role: number, role_wp: number | null) => { + const roles: string[] = [] + // 基础角色 - const baseRole = role == 1 ? 'business' : role == 2 ? 'procurement' : 'alls' - const roles = [baseRole] + if (role == 1) { + roles.push('business') + } else if (role == 2) { + roles.push('procurement') + } // 根据 role_wp 添加额外角色 if (role_wp == 1) { diff --git a/src/views/auth/login/index.vue b/src/views/auth/login/index.vue index 0d117d5..6c02a98 100644 --- a/src/views/auth/login/index.vue +++ b/src/views/auth/login/index.vue @@ -4,8 +4,8 @@ @@ -160,9 +160,14 @@ // 角色设置辅助函数 const getRoles = (role: number, role_wp: number | null) => { + const roles: string[] = [] + // 基础角色 - const baseRole = role == 1 ? 'business' : role == 2 ? 'procurement' : 'alls' - const roles = [baseRole] + if (role == 1) { + roles.push('business') + } else if (role == 2) { + roles.push('procurement') + } // 根据 role_wp 添加额外角色 if (role_wp == 1) {