# QTComponents
**Repository Path**: QingTian18/Vue3-Ts-eltable
## Basic Information
- **Project Name**: QTComponents
- **Description**: 我的个人组件库,目前有echarts按需引入的几个图表的组件,el-table的二次封装组件,基于vue3的h函数的一个弹框组件。
- **Primary Language**: Unknown
- **License**: Not specified
- **Default Branch**: master
- **Homepage**: None
- **GVP Project**: No
## Statistics
- **Stars**: 1
- **Forks**: 0
- **Created**: 2023-08-14
- **Last Updated**: 2025-03-11
## Categories & Tags
**Categories**: Uncategorized
**Tags**: None
## README
# QT组件库
### 介绍
1,Vue3+Ts 二次封装 el-table
实现 table 定制化,删除行,增加行
2,Echart 组件,包括柱状图、环形图、仪表盘组件
3,token失效时,在失效页面弹出登录框重新登录
4,uni-app 水印相机
### 更新日志
#### 2024/07/14
增加一个使用uniapp编写的水印相机,实现实时预览水印以及照片的水印添加
#### 2024/04/12 更新
增加一个方法,在 token 失效时,不跳转页面,在当前页面重新登录,以此解决页面填写内容以后,因为 token 失效导致的数据丢失,从而重新填写的问题(reLoginModal)
#### 10.8 更新
优化自定义列宽与滚动
优化范围输入
#### 9.4 更新
增加 date(单元格里日期选择),rang(范围输入),img(图片展示),select(下拉选择) 样式
增加项目中使用到的 Echart 组件,包括柱状图、环形图、仪表盘组件
### 使用演示
#### reLoginModal 使用演示
```TypeScript
import { openModal } from "url/reLoginModal/components/function/openFunctionModal";
import CLoginModal from "url/reLoginModal/components/CLoginModal.vue";
/**
* @description 响应拦截器
* 服务器换返回信息 -> [拦截统一处理] -> 客户端JS获取到信息
*/
this.service.interceptors.response.use(
(response: AxiosResponse) => {
const { data } = response;
// * 在请求结束后,并关闭请求 loading
tryHideFullScreenLoading();
// * 登陆失效(code == 401)
console.log("响应码:", data.code);
if (data.code === ResultEnum.TOKEN_INVALID || data.code === ResultEnum.TOKEN_OVERDUE) {
if (!isShowingTokenDialog) {
isShowingTokenDialog = true;
const globalStore = GlobalStore();
ElMessageBox.confirm("token失效,请重新登录", "重新登录", {
confirmButtonText: "在当前页重新登录",
cancelButtonText: "取消",
type: "warning",
closeOnPressEscape: false,
closeOnClickModal: false,
showClose: false
})
.then(() => {
console.log("执行了then");
openModal(CLoginModal, {
userAccount:
globalStore.userCacheData &&
globalStore.userCacheData.userAccount &&
globalStore.userCacheData.userAccount.length
? globalStore.userCacheData.userAccount
: ""
}); // globalStore.userCacheData.userAccount
isShowingTokenDialog = false;
// console.log(route.path);
// if (route.path !== "/login") {
// openModal(CLoginModal, { message: "去登录" });
// }
})
.catch(() => {
isShowingTokenDialog = false;
globalStore.setToken("");
router.replace(LOGIN_URL);
// return Promise.reject(data);
});
}
return false;
}
// * 成功请求(在页面上除非特殊情况,否则不用在页面处理失败逻辑)
return data;
},
);
```
#### myTable 使用演示
```html
```
### 声明
封装组件是为了更好的工作,随着工作的需求增加,会不断增加组件的功能,同时也会更新文档。