Merge pull request #184 from timi137137/feat/timi137137

chore: 将模板代码向TS对齐
This commit is contained in:
yuyang 2022-06-23 14:54:08 +08:00 committed by GitHub
commit 5be1b14b07
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
21 changed files with 77 additions and 33 deletions

View File

@ -44,7 +44,24 @@
"import/first": "off", // https://github.com/vuejs/vue-eslint-parser/issues/58
"@typescript-eslint/no-explicit-any": "off",
"@typescript-eslint/explicit-module-boundary-types": "off",
"vue/first-attribute-linebreak": 0
"vue/first-attribute-linebreak": 0,
"@typescript-eslint/no-unused-vars": [
"error",
{
"argsIgnorePattern": "^_",
"varsIgnorePattern": "^_"
}
],
"no-unused-vars": [
"error",
{
"argsIgnorePattern": "^_",
"varsIgnorePattern": "^_"
}
],
"@typescript-eslint/ban-ts-comment": "off",
"@typescript-eslint/ban-types": "off"
},
"overrides": [
{
@ -57,6 +74,32 @@
"vue/no-v-html": 0,
"vue-scoped-css/enforce-style-type": ["error", { "allows": ["scoped"] }]
}
},
{
"files": ["*.ts", "*.tsx"], // https://github.com/typescript-eslint eslint-recommended
"rules": {
"constructor-super": "off", // ts(2335) & ts(2377)
"getter-return": "off", // ts(2378)
"no-const-assign": "off", // ts(2588)
"no-dupe-args": "off", // ts(2300)
"no-dupe-class-members": "off", // ts(2393) & ts(2300)
"no-dupe-keys": "off", // ts(1117)
"no-func-assign": "off", // ts(2539)
"no-import-assign": "off", // ts(2539) & ts(2540)
"no-new-symbol": "off", // ts(2588)
"no-obj-calls": "off", // ts(2349)
"no-redeclare": "off", // ts(2451)
"no-setter-return": "off", // ts(2408)
"no-this-before-super": "off", // ts(2376)
"no-undef": "off", // ts(2304)
"no-unreachable": "off", // ts(7027)
"no-unsafe-negation": "off", // ts(2365) & ts(2360) & ts(2358)
"no-var": "error", // ts transpiles let/const to var, so no need for vars any more
"prefer-const": "error", // ts provides better types with const
"prefer-rest-params": "error", // ts provides better types with rest args over arguments
"prefer-spread": "error", // ts transpiles spread to apply, so no need for manual apply
"valid-typeof": "off" // ts(2367)
}
}
]
}

View File

@ -1,4 +1,6 @@
#!/bin/sh
[[ "$(uname -a)" = *"MINGW64"* ]] && exit 0
[ -n "$CI" ] && exit 0
. "$(dirname "$0")/_/husky.sh"
exec < /dev/tty && npx git-cz --hook || true

View File

@ -70,7 +70,7 @@ import { useSettingStore } from '@/store';
import { getActive } from '@/router';
import { prefix } from '@/config/global';
import LogoFull from '@/assets/assets-logo-full.svg?component';
import { MenuRoute } from '@/interface';
import { MenuRoute } from '@/types/interface';
import Notice from './Notice.vue';
import Search from './Search.vue';

View File

@ -1,6 +1,6 @@
import { defineComponent, PropType, computed, h } from 'vue';
import { prefix } from '@/config/global';
import { MenuRoute } from '@/interface';
import { MenuRoute } from '@/types/interface';
import { getActive } from '@/router';
const getMenuList = (list: MenuRoute[], basePath?: string): MenuRoute[] => {

View File

@ -49,7 +49,7 @@
import { useRouter } from 'vue-router';
import { storeToRefs } from 'pinia';
import { useNotificationStore } from '@/store';
import { NotificationItem } from '@/interface';
import { NotificationItem } from '@/types/interface';
const router = useRouter();
const store = useNotificationStore();

View File

@ -11,7 +11,7 @@ import LayoutContent from './components/Content.vue';
import Setting from './setting.vue';
import { prefix } from '@/config/global';
import { TRouterInfo } from '@/interface';
import { TRouterInfo } from '@/types/interface';
import '@/style/layout.less';

View File

@ -121,7 +121,7 @@ import { ref, onMounted } from 'vue';
import { prefix } from '@/config/global';
import { BASE_INFO_DATA, TABLE_COLUMNS_DATA as columns, PRODUCT_LIST } from './constants';
import request from '@/utils/request';
import { ResDataType } from '@/interface';
import { ResDataType } from '@/types/interface';
import Product from './components/Product.vue';

View File

@ -89,7 +89,7 @@ import { BASE_INFO_DATA, TABLE_COLUMNS as columns } from './constants';
import { changeChartsTheme } from '@/utils/color';
import { prefix } from '@/config/global';
import { ResDataType } from '@/interface';
import { ResDataType } from '@/types/interface';
import request from '@/utils/request';
echarts.use([

View File

@ -60,7 +60,7 @@ export default {
import { ref, computed } from 'vue';
import { storeToRefs } from 'pinia';
import { NOTIFICATION_TYPES } from '@/constants';
import { NotificationItem } from '@/interface';
import { NotificationItem } from '@/types/interface';
import EmptyIcon from '@/assets/assets-empty.svg?component';
import { useNotificationStore } from '@/store';

View File

@ -82,7 +82,7 @@ import { MessagePlugin } from 'tdesign-vue-next';
import { CONTRACT_STATUS, CONTRACT_TYPES, CONTRACT_PAYMENT_TYPES } from '@/constants';
import Trend from '@/components/trend/index.vue';
import { ResDataType } from '@/interface';
import { ResDataType } from '@/types/interface';
import request from '@/utils/request';
import { useSettingStore } from '@/store';

View File

@ -74,7 +74,7 @@ import { MessagePlugin } from 'tdesign-vue-next';
import ProductCard from '@/components/product-card/index.vue';
import DialogForm from './components/DialogForm.vue';
import request from '@/utils/request';
import { ResDataType } from '@/interface';
import { ResDataType } from '@/types/interface';
const INITIAL_DATA = {
name: '',

View File

@ -118,7 +118,7 @@ import { ref, computed, onMounted } from 'vue';
import { MessagePlugin } from 'tdesign-vue-next';
import Trend from '@/components/trend/index.vue';
import request from '@/utils/request';
import { ResDataType } from '@/interface';
import { ResDataType } from '@/types/interface';
import { useSettingStore } from '@/store';
import {

6
src/shims-vue.d.ts vendored
View File

@ -1,6 +0,0 @@
declare module '*.vue' {
import { DefineComponent } from 'vue';
// eslint-disable-next-line @typescript-eslint/no-explicit-any, @typescript-eslint/ban-types
const component: DefineComponent<{}, {}, any>;
export default component;
}

View File

@ -1,5 +1,5 @@
import { defineStore } from 'pinia';
import { NotificationItem } from '@/interface';
import { NotificationItem } from '@/types/interface';
const msgData = [
{

View File

@ -1,5 +1,5 @@
import { defineStore } from 'pinia';
import { TRouterInfo, TTabRouterType } from '@/interface';
import { TRouterInfo, TTabRouterType } from '@/types/interface';
import { store } from '@/store';
const homeRoute: Array<TRouterInfo> = [

View File

@ -1,11 +1,19 @@
// 通用声明
// Vue
declare module '*.vue' {
import { DefineComponent } from 'vue';
const component: DefineComponent<{}, {}, any>;
export default component;
}
declare type ClassName = { [className: string]: any } | ClassName[] | string;
declare interface ImportMeta {
env: {
MODE: 'mock' | 'development' | 'test' | 'release';
};
// eslint-disable-next-line no-unused-vars
glob: (url: string) => { url };
}

View File

@ -29,7 +29,7 @@ export function getDateArray(dateTime: string[] = [], divideNum = 10): string[]
*
* @memberOf DashboardBase
*/
export function getRandomArray(num = 100) {
export function getRandomArray(num = 100): number {
let resultNum = Number((Math.random() * num).toFixed(0));
if (resultNum <= 1) {

View File

@ -10,11 +10,11 @@ import { getSettingStore } from '@/store';
* @param {string} theme
* @returns {}
*/
export function getColorFromTheme(theme: string) {
export function getColorFromTheme(theme: string): Array<string> {
const settingStore = getSettingStore();
const { colorList, mode } = settingStore;
const isDarkMode = mode === 'dark';
let themeColorList = [];
let themeColorList;
const themeColor = getBrandColor(theme, colorList);
if (!/^#[A-F\d]{6}$/i.test(theme)) {
@ -52,7 +52,7 @@ export function getChartListColor(): Array<string> {
* @param {Array<string>} chartsList
* @param {string} theme
*/
export function changeChartsTheme(chartsList: echarts.EChartsType[]) {
export function changeChartsTheme(chartsList: echarts.EChartsType[]): void {
if (chartsList && chartsList.length) {
const chartChangeColor = getChartListColor();

View File

@ -1,4 +1,4 @@
import axios from 'axios';
import axios, { AxiosInstance } from 'axios';
import proxy from '../config/proxy';
const env = import.meta.env.MODE || 'development';
@ -8,19 +8,15 @@ const host = env === 'mock' ? '/' : proxy[env].host; // 如果是mock模式 就
const CODE = {
LOGIN_TIMEOUT: 1000,
REQUEST_SUCCESS: 0,
REQUEST_FOBID: 1001,
REQUEST_FAILED: 1001,
};
const instance = axios.create({
const instance: AxiosInstance = axios.create({
baseURL: host,
timeout: 1000,
timeout: 5000,
withCredentials: true,
});
instance.interceptors.request.use((config) => config);
instance.defaults.timeout = 5000;
instance.interceptors.response.use(
(response) => {
if (response.status === 200) {

View File

@ -14,6 +14,7 @@
"@/*": ["src/*"]
}
},
"include": ["**/*.ts", "src/**/*.d.ts", "src/**/*.ts", "src/**/*.tsx", "src/**/*.vue"],
"include": ["**/*.ts", "src/**/*.d.ts",
"src/types/**/*.d.ts", "src/**/*.ts", "src/**/*.tsx", "src/**/*.vue"],
"compileOnSave": false
}