feat: 调整

This commit is contained in:
rd
2025-09-05 16:55:15 +08:00
parent 3451546280
commit 6b8950ca4d
21 changed files with 36 additions and 216 deletions

View File

@ -8,7 +8,7 @@
import router from '@/router';
import { clearToken } from '@/utils/auth';
import { Message } from '@arco-design/web-vue';
import { message } from 'ant-design-vue';
/**
* 处理业务逻辑定义的错误code
@ -28,5 +28,5 @@ export const handleCodeError = (error: any) => {
default:
errMessage = error.msg || `未知错误-${error.code}`;
}
Message.error(errMessage);
message.error(errMessage);
};

View File

@ -118,10 +118,10 @@ const handleError = (error) => {
};
const customRequest = async (option) => {
const { onProgress, onError, onSuccess, fileItem, name } = option;
const { onProgress, onError, onSuccess, file, name } = option;
try {
// 1. 获取预签名上传URL
const response = await fetchImageUploadFile({ suffix: getFileExtension(fileItem.file.name) });
const response = await fetchImageUploadFile({ suffix: getFileExtension(file.name) });
const preSignedUrl = response?.data?.upload_url;
if (!preSignedUrl) {
@ -129,9 +129,9 @@ const customRequest = async (option) => {
}
console.log('preSignedUrl', preSignedUrl);
// 2. 使用预签名URL上传文件
const blob = new Blob([fileItem.file], { type: fileItem.file.type });
const blob = new Blob([file], { type: file.type });
await axios.put(preSignedUrl, blob, {
headers: { 'Content-Type': fileItem.file.type },
headers: { 'Content-Type': file.type },
});
onSuccess(JSON.stringify(response));

View File

@ -1,172 +0,0 @@
/*
* @Author: 田鑫
* @Date: 2023-02-16 15:02:51
* @LastEditors: 田鑫
* @LastEditTime: 2023-03-09 11:20:59
* @Description: table-hooks
*/
import type { PaginationProps, TableBorder, TableColumnData, TableData, TableRowSelection } from '@arco-design/web-vue';
type Size = 'mini' | 'small' | 'medium' | 'large';
interface IDefaultProps {
/** 是否显示边框 */
bordered?: TableBorder;
/** 是否显示选中效果 */
hoverable?: boolean;
/** 表格的大小 */
size?: Size;
/** 是否允许调整列宽 */
'column-resizable'?: boolean;
/** 是否为加载中状态 */
loading?: boolean;
/** 分页参数 */
pagination?: PaginationProps;
/** table数据类型 */
data?: any[];
/** 表头参数 */
columns?: TableColumnData[];
/** 表格行 key 的取值字段 */
'row-key'?: string;
/** 表格的行选择器配置 */
'row-selection'?: TableRowSelection;
'selected-keys'?: (string | number)[];
[x: string]: any;
}
interface IPagination {
/** 当前页数 */
current?: number;
/** 总页数默认是0条 */
total?: number;
}
interface ITableResponse<T> {
current?: number;
records?: T[];
size?: number;
total?: number;
[x: string]: any;
}
type GetListFunc<T> = (v: object) => Promise<ITableResponse<T>>;
export default function useTableProps<T>(loadListFunc: GetListFunc<T>) {
const defaultProps: IDefaultProps = {
bordered: { cell: true },
size: 'large',
'column-resizable': true,
loading: true,
data: [] as any[],
pagination: {
current: 1,
pageSize: 20,
total: 0,
showPageSize: true,
showTotal: true,
},
hoverable: false,
columns: [],
};
//* 属性组
const propsRes = reactive<IDefaultProps>(defaultProps);
//* 设置请求参数,如果出了分页参数还有搜索参数,在模板页面调用此方法,可以加入参数
const loadListParams = reactive<object>({
page: 1,
size: 20,
});
/**
* 单独设置默认属性
* @param params
*/
const setProps = (params: IDefaultProps) => {
if (Object.keys(params).length > 0) {
Object.assign(defaultProps, params);
}
};
/**
* 设置表头数据
* @param columns
*/
const setColumns = (columns: TableColumnData[]) => {
propsRes.columns = columns;
};
/**
* 设置loading
* @param status
*/
const setLoading = (status: boolean) => {
propsRes.loading = status;
};
/**
* 设置分页
* @param param0
*/
const setPagination = ({ current, total }: IPagination) => {
propsRes.pagination!.current = current;
total && (propsRes.pagination!.total = total);
Object.assign(loadListParams, { page: current });
};
/**
* 设置列表请求参数
* @param params
*/
const setLoadListParams = <R>(params?: R) => {
Object.assign(loadListParams, params);
};
/**
* 加载列表
* @returns
*/
const loadTableData = async (resetPageIndex = false) => {
if (resetPageIndex) {
setPagination({ current: 1 });
}
setLoading(true);
try {
const resData = await loadListFunc({
...loadListParams,
});
console.log(resData);
const response = resData as ITableResponse<T>;
propsRes.data = response.records;
setPagination({
current: response.current,
total: response.total,
});
setLoading(false);
return resData;
} catch (error) {
setLoading(false);
return [];
}
};
// 事件触发组
const propsEvent = reactive({
// 排序触发
sorterChange: (dataIndex: string, direction: string) => {
console.log(dataIndex, direction);
},
// 分页触发
pageChange: (current: number) => {
setPagination({ current });
loadTableData();
},
// 修改每页显示条数
pageSizeChange: (size: number) => {
propsRes.pagination!.pageSize = size;
Object.assign(loadListParams, { size });
loadTableData();
},
selectionChange: (rowKeys: (string | number)[]) => {
propsRes['selected-keys'] = rowKeys;
},
});
return {
propsRes,
propsEvent,
loadListParams,
setProps,
setColumns,
setLoading,
setPagination,
loadTableData,
setLoadListParams,
};
}

View File

@ -3,7 +3,7 @@
* @Date: 2025-06-23 03:56:22
*/
import { defineStore } from 'pinia';
import type { AppState, RouteRecordNormalized, NotificationReturn } from './types';
import type { AppState, RouteRecordNormalized } from './types';
import defaultSettings from '@/config/settings.json';
import type { AppRouteRecordRaw } from '@/router/routes/types';

View File

@ -1,8 +1,7 @@
import type { RouteRecordNormalized } from 'vue-router';
import type { NotificationReturn } from '@arco-design/web-vue/es/notification/interface';
import type { AppRouteRecordRaw } from '@/router/routes/types';
export { RouteRecordNormalized, NotificationReturn };
export { RouteRecordNormalized };
export interface AppState {
theme: string;

View File

@ -1,7 +1,6 @@
<script lang="jsx">
import { Button, Input } from 'ant-design-vue';
import { Button, Input, Image } from 'ant-design-vue';
const { TextArea } = Input;
import { Image, Spin, Affix } from '@arco-design/web-vue';
import TextOverTips from '@/components/text-over-tips';
import SvgIcon from '@/components/svg-icon/index.vue';
import DeleteCommentModal from './delete-comment-modal.vue';
@ -126,7 +125,7 @@ export default {
</div>
</div>
)}
<TextArea
ref={textAreaRef}
autoSize

View File

@ -1,6 +1,6 @@
<script lang="jsx">
import { Button } from 'ant-design-vue';
import { Spin } from '@arco-design/web-vue';
import { Spin } from 'ant-design-vue';
import AiSuggest from './components/ai-suggest/';
import { getShareWorksList, getShareWorksDetail, patchShareWorksConfirm } from '@/api/all/generationWorkshop.ts';

View File

@ -1,6 +1,6 @@
<script lang="jsx">
import TextOverTips from '@/components/text-over-tips';
import { Image, Spin } from '@arco-design/web-vue';
import { Image, Spin } from 'ant-design-vue';
import { exactFormatTime } from '@/utils/tools';
import { handleUserHome } from '@/utils/user.ts';

View File

@ -3,6 +3,9 @@
.ant-drawer-mask {
background-color: transparent;
}
.ant-drawer-header {
display: none;
}
.ant-drawer-body {
overflow: hidden;
display: flex;

View File

@ -1,9 +1,8 @@
<script lang="jsx">
import axios from 'axios';
import { Swiper, SwiperSlide } from 'swiper/vue';
import { Button, Form, Input, FormItem, Tabs, message } from 'ant-design-vue';
import { Button, Form, Input, FormItem, Tabs, message, Image, Upload, Spin } from 'ant-design-vue';
import { IconLoading } from '@arco-design/web-vue/es/icon';
import { Image, Upload, Spin } from '@arco-design/web-vue';
import TextOverTips from '@/components/text-over-tips';
import HighlightTextarea from './highlight-textarea';

View File

@ -1,6 +1,6 @@
<script lang="jsx">
import { Button, message } from 'ant-design-vue';
import { Spin } from '@arco-design/web-vue';
import { Spin } from 'ant-design-vue';
import CancelCheckModal from './cancel-check-modal.vue';
import CheckSuccessModal from './check-success-modal.vue';
import HeaderCard from './components/header-card';

View File

@ -1,7 +1,7 @@
<script lang="jsx">
import axios from 'axios';
import { Button, Form, FormItem, Input, message } from 'ant-design-vue';
import { Upload } from '@arco-design/web-vue';
import { Upload } from 'ant-design-vue';
// import CommonSelect from '@/components/common-select';
// import { VueDraggable } from 'vue-draggable-plus';
import TextOverTips from '@/components/text-over-tips';

View File

@ -1,6 +1,5 @@
<script lang="jsx">
import { Modal, Button, Form, FormItem, RadioGroup, Radio, Input, message } from 'ant-design-vue';
import { Upload } from '@arco-design/web-vue';
import { Modal, Button, Form, FormItem, RadioGroup, Radio, Input, message, Upload } from 'ant-design-vue';
import { useClipboard } from '@vueuse/core';
import { getWriterLinksGenerate, getTemplateUrl, postWorksByLink, postWorksByFile } from '@/api/all/generationWorkshop';
import { generateFullUrl } from '@/utils/tools';
@ -148,9 +147,7 @@ export default {
// 文件上传处理
const handleUpload = async (option) => {
taskStatus.value = TASK_STATUS.LOADING;
const {
fileItem: { file },
} = option;
const { file } = option;
const formData = new FormData();
formData.append('file', file);

View File

@ -1,5 +1,5 @@
<script lang="jsx">
import { Spin } from '@arco-design/web-vue';
import { Spin } from 'ant-design-vue';
import { Button, message } from 'ant-design-vue';
import { useRouter, useRoute } from 'vue-router';

View File

@ -4,9 +4,8 @@
-->
<script lang="jsx">
import { ref, computed } from 'vue';
import { Button, Modal, Form, FormItem, RadioGroup, Radio, Input, message, Tooltip } from 'ant-design-vue';
import { Button, Modal, Form, FormItem, RadioGroup, Radio, Input, message, Tooltip, Upload, Switch } from 'ant-design-vue';
const { TextArea } = Input;
import { Upload, Switch } from '@arco-design/web-vue';
import AuthorizedAccountModal from '../authorized-account-modal';
// import ImportPromptModal from '../import-prompt-modal';
import StatusBox from '@/views/property-marketing/media-account/components/status-select/status-box.tsx';
@ -122,10 +121,9 @@ export default {
}
};
function handleUpload(option) {
const { fileItem } = option;
uploadStatus.value = UploadStatus.WAITING;
file.value = fileItem.file;
fileName.value = fileItem.name;
file.value = option.file;
fileName.value = option.file.name;
}
function removeFile() {
fileName.value = '';

View File

@ -72,7 +72,7 @@
<script setup lang="ts">
import { reactive, ref } from 'vue';
import { Button, Tabs, Space, Pagination, Spin } from 'ant-design-vue';
import { Button, Tabs, Space, Pagination, Spin, message as Amessage } from 'ant-design-vue';
const { TabPane } = Tabs;
import PlacementGuideList from './components/table-data/placementGuideList.vue';
import listSearchForm from './components/table-data/listSearchForm.vue';
@ -85,7 +85,6 @@ import {
getPlacementGuideHistory,
savePlacementGuide,
} from '@/api/all/propertyMarketing';
import { Message } from '@arco-design/web-vue';
import { AiResultStatus, generatePDF } from '@/views/property-marketing/put-account/investment-guidelines/constants';
import { uploadPdf } from '@/views/property-marketing/put-account/investment-guidelines/constants';
@ -180,7 +179,7 @@ const downPage = async () => {
document.body.removeChild(link);
exportLoading.value = false;
} catch (error) {
Message.error(error.message);
Amessage.error(error.message);
exportLoading.value = false;
}
};
@ -215,7 +214,7 @@ const syncGetAiResult = async () => {
aiResult.action_guide = data.result?.action_guide?.modules || [];
aiResult.overview = data.result?.overview?.content_blocks[0] || [];
} else if (data.ai_result_status === AiResultStatus.FAILED) {
Message.error('AI分析失败');
Amessage.error('AI分析失败');
aiError();
}
saveForm.code = data?.code;
@ -262,7 +261,7 @@ const handleSave = async () => {
};
const { code, message, data } = await savePlacementGuide(updatedSaveForm);
if (code === 200) {
Message.success(message);
Amessage.success(message);
}
};

View File

@ -3,6 +3,9 @@
.ant-drawer-mask {
background-color: transparent;
}
.ant-drawer-header {
display: none;
}
.ant-drawer-body {
overflow: hidden;
display: flex;

View File

@ -7,7 +7,7 @@ const { TextArea } = Input;
const { TabPane } = Tabs;
import { IconLoading, message } from '@arco-design/web-vue/es/icon';
import { Image, Upload, Spin } from '@arco-design/web-vue';
import { Image, Upload, Spin } from 'ant-design-vue';
import TextOverTips from '@/components/text-over-tips';
import 'swiper/css';

View File

@ -1,8 +1,7 @@
<script lang="jsx">
import axios from 'axios';
import { Button, Form, FormItem, Input, message } from 'ant-design-vue';
import { Button, Form, FormItem, Input, message, Upload } from 'ant-design-vue';
const { TextArea } = Input;
import { Upload } from '@arco-design/web-vue';
import CommonSelect from '@/components/common-select';
import { VueDraggable } from 'vue-draggable-plus';
import TextOverTips from '@/components/text-over-tips';

View File

@ -1,7 +1,6 @@
<script lang="jsx">
import { Modal, Button, Form, FormItem, Input, message } from 'ant-design-vue';
import { Modal, Button, Form, FormItem, Input, message, Upload } from 'ant-design-vue';
const { TextArea } = Input;
import { Upload } from '@arco-design/web-vue';
import {
getTemplateUrlWriter,
postWorksByLinkWriter,
@ -122,9 +121,7 @@ export default {
const handleUpload = async (option) => {
taskStatus.value = TASK_STATUS.LOADING;
const {
fileItem: { file },
} = option;
const { file } = option;
const formData = new FormData();
formData.append('file', file);

View File

@ -1,6 +1,5 @@
<script lang="jsx">
import { Button } from 'ant-design-vue';
import { Spin } from '@arco-design/web-vue';
import { Button, Spin } from 'ant-design-vue';
import { useRouter, useRoute } from 'vue-router';
import { AuditStatus } from '@/views/writer-material-center/components/finished-products/constants';