diff --git a/.image/common/crm-feature.png b/.image/common/crm-feature.png new file mode 100644 index 00000000..e1c9670c Binary files /dev/null and b/.image/common/crm-feature.png differ diff --git a/README.md b/README.md index db78baa9..f78b0cba 100644 --- a/README.md +++ b/README.md @@ -202,6 +202,12 @@ _前端基于 crmeb uniapp 经过授权重构,优化代码实现,接入芋 演示地址: +### CRM 系统 + +![功能图](/.image/common/crm-feature.png) + +演示地址: + ## 🐷 演示图 ### 系统功能 diff --git a/src/api/infra/file/index.ts b/src/api/infra/file/index.ts index 87d966e1..0e1b2e7c 100644 --- a/src/api/infra/file/index.ts +++ b/src/api/infra/file/index.ts @@ -38,3 +38,8 @@ export const getFilePresignedUrl = (path: string) => { export const createFile = (data: any) => { return request.post({ url: '/infra/file/create', data }) } + +// 上传文件 +export const updateFile = (data: any) => { + return request.upload({ url: '/infra/file/upload', data }) +} diff --git a/src/components/UploadFile/src/useUpload.ts b/src/components/UploadFile/src/useUpload.ts index 0c6d49db..cadad9e9 100644 --- a/src/components/UploadFile/src/useUpload.ts +++ b/src/components/UploadFile/src/useUpload.ts @@ -1,8 +1,6 @@ -import { getAccessToken, getTenantId } from '@/utils/auth' import * as FileApi from '@/api/infra/file' import CryptoJS from 'crypto-js' import { UploadRawFile, UploadRequestOptions } from 'element-plus/es/components/upload/src/upload' -import { ajaxUpload } from 'element-plus/es/components/upload/src/ajax' import axios from 'axios' export const useUpload = () => { @@ -26,11 +24,21 @@ export const useUpload = () => { return { data: presignedInfo.url } }) } else { - // 模式二:后端上传(需要增加后端身份认证请求头) - options.headers['Authorization'] = 'Bearer ' + getAccessToken() - options.headers['tenant-id'] = getTenantId() - // 使用 ElUpload 的上传方法 - return ajaxUpload(options) + // 模式二:后端上传 + // 重写 el-upload httpRequest 文件上传成功会走成功的钩子,失败走失败的钩子 + return new Promise((resolve, reject) => { + FileApi.updateFile({ file: options.file }) + .then((res) => { + if (res.code === 0) { + resolve(res) + } else { + reject(res) + } + }) + .catch((res) => { + reject(res) + }) + }) } } diff --git a/src/utils/formatTime.ts b/src/utils/formatTime.ts index 8b8dd438..ed434cb0 100644 --- a/src/utils/formatTime.ts +++ b/src/utils/formatTime.ts @@ -1,4 +1,5 @@ import dayjs from 'dayjs' +import type { TableColumnCtx } from 'element-plus' /** * 日期快捷选项适用于 el-date-picker @@ -68,10 +69,7 @@ export function formatDate(date: Date, format?: string): string { return '' } // 日期存在,则进行格式化 - if (format === undefined) { - format = 'YYYY-MM-DD HH:mm:ss' - } - return dayjs(date).format(format) + return date ? dayjs(date).format(format ?? 'YYYY-MM-DD HH:mm:ss') : '' } /** @@ -171,7 +169,7 @@ export function formatAxis(param: Date): string { * @param ms 毫秒 * @returns {string} 字符串 */ -export function formatPast2(ms) { +export function formatPast2(ms: number): string { const day = Math.floor(ms / (24 * 60 * 60 * 1000)) const hour = Math.floor(ms / (60 * 60 * 1000) - day * 24) const minute = Math.floor(ms / (60 * 1000) - day * 24 * 60 - hour * 60) @@ -199,12 +197,8 @@ export function formatPast2(ms) { * @param column 字段 * @param cellValue 字段值 */ -// @ts-ignore -export const dateFormatter = (row, column, cellValue): string => { - if (!cellValue) { - return '' - } - return formatDate(cellValue) +export function dateFormatter(_row: any, _column: TableColumnCtx, cellValue: any): string { + return cellValue ? formatDate(cellValue) : '' } /** @@ -214,12 +208,8 @@ export const dateFormatter = (row, column, cellValue): string => { * @param column 字段 * @param cellValue 字段值 */ -// @ts-ignore -export const dateFormatter2 = (row, column, cellValue) => { - if (!cellValue) { - return - } - return formatDate(cellValue, 'YYYY-MM-DD') +export function dateFormatter2(_row: any, _column: TableColumnCtx, cellValue: any): string { + return cellValue ? formatDate(cellValue, 'YYYY-MM-DD') : '' } /** @@ -227,7 +217,7 @@ export const dateFormatter2 = (row, column, cellValue) => { * @param param 传入日期 * @returns 带时间00:00:00的日期 */ -export function beginOfDay(param: Date) { +export function beginOfDay(param: Date): Date { return new Date(param.getFullYear(), param.getMonth(), param.getDate(), 0, 0, 0) } @@ -236,7 +226,7 @@ export function beginOfDay(param: Date) { * @param param 传入日期 * @returns 带时间23:59:59的日期 */ -export function endOfDay(param: Date) { +export function endOfDay(param: Date): Date { return new Date(param.getFullYear(), param.getMonth(), param.getDate(), 23, 59, 59) } @@ -245,7 +235,7 @@ export function endOfDay(param: Date) { * @param param1 日期1 * @param param2 日期2 */ -export function betweenDay(param1: Date, param2: Date) { +export function betweenDay(param1: Date, param2: Date): number { param1 = convertDate(param1) param2 = convertDate(param2) // 计算差值 @@ -257,7 +247,7 @@ export function betweenDay(param1: Date, param2: Date) { * @param param1 日期 * @param param2 添加的时间 */ -export function addTime(param1: Date, param2: number) { +export function addTime(param1: Date, param2: number): Date { param1 = convertDate(param1) return new Date(param1.getTime() + param2) } @@ -266,7 +256,7 @@ export function addTime(param1: Date, param2: number) { * 日期转换 * @param param 日期 */ -export function convertDate(param: Date | string) { +export function convertDate(param: Date | string): Date { if (typeof param === 'string') { return new Date(param) } diff --git a/src/views/bpm/definition/index.vue b/src/views/bpm/definition/index.vue index 1c179e78..31ed8413 100644 --- a/src/views/bpm/definition/index.vue +++ b/src/views/bpm/definition/index.vue @@ -1,4 +1,6 @@