From 7aec520aa5370cdab82bb581e266616bdb19861d Mon Sep 17 00:00:00 2001 From: wcq <744800102@qq.com> Date: Fri, 25 Aug 2023 16:27:27 +0800 Subject: [PATCH] =?UTF-8?q?=E7=BC=96=E5=86=99=E6=96=B0=E9=A1=B5=E9=9D=A2,?= =?UTF-8?q?=E6=B7=BB=E5=8A=A0=E8=AF=84=E7=BA=A7=E5=AE=A1=E6=A0=B8=E5=A4=84?= =?UTF-8?q?=E7=90=86=E9=A1=B5=E9=9D=A2?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .env.development | 2 +- .env.production | 2 +- .gitignore | 2 +- index.html | 2 +- package.json | 2 +- public/favicon2.ico | Bin 0 -> 16958 bytes public/logo2.png | Bin 0 -> 2402 bytes src/assets/login/logo2.png | Bin 0 -> 2402 bytes src/components/EditTabel/fileUploadMd.vue | 21 +- src/layout/components/sidebar/horizontal.vue | 2 +- src/layout/components/sidebar/logo.vue | 4 +- src/layout/types.ts | 2 +- src/router/index.ts | 38 +- src/views/dashboard/components/ApplyBar.vue | 31 +- .../dashboard/components/RateLevelPie.vue | 38 +- src/views/login/index.vue | 2 +- src/views/smebiz/components/ExamineWork.vue | 261 ++++++++-- src/views/smebiz/components/RateWork.vue | 458 ++++++++++++++++++ src/views/smebiz/config.ts | 18 +- src/views/smebiz/rateApplyManage.vue | 74 ++- src/views/smebiz/types.ts | 2 +- src/views/welcome/index.vue | 2 +- src/wcq-components/TablePlus/TablePlus.vue | 83 ++-- src/wcq-components/TablePlus/api.ts | 11 +- .../TablePlus/components/ItemAddDialog.vue | 2 +- .../TablePlus/components/ItemEditDialog.vue | 2 +- .../components/MultipleSelectTable.vue | 133 ++--- .../TablePlus/components/OneSelectTable.vue | 19 +- .../components/QueryColumn/dateQuery.vue | 32 ++ .../components/QueryColumn/daterangeQuery.vue | 44 ++ .../components/QueryColumn/datetimeQuery.vue | 32 ++ .../QueryColumn/datetimerangeQuery.vue | 35 ++ .../components/QueryColumn/enumQuery.vue | 47 ++ .../components/QueryColumn/findInSetQuery.vue | 47 ++ .../components/QueryColumn/index.vue | 47 ++ .../components/QueryColumn/likeQuery.vue | 26 + src/wcq-components/TablePlus/config.ts | 24 + src/wcq-components/TablePlus/types.ts | 387 ++++++++------- src/wcq-components/TablePlus/utils.ts | 44 ++ vite.config.ts | 2 +- 40 files changed, 1595 insertions(+), 385 deletions(-) create mode 100644 public/favicon2.ico create mode 100644 public/logo2.png create mode 100644 src/assets/login/logo2.png create mode 100644 src/views/smebiz/components/RateWork.vue create mode 100644 src/wcq-components/TablePlus/components/QueryColumn/dateQuery.vue create mode 100644 src/wcq-components/TablePlus/components/QueryColumn/daterangeQuery.vue create mode 100644 src/wcq-components/TablePlus/components/QueryColumn/datetimeQuery.vue create mode 100644 src/wcq-components/TablePlus/components/QueryColumn/datetimerangeQuery.vue create mode 100644 src/wcq-components/TablePlus/components/QueryColumn/enumQuery.vue create mode 100644 src/wcq-components/TablePlus/components/QueryColumn/findInSetQuery.vue create mode 100644 src/wcq-components/TablePlus/components/QueryColumn/index.vue create mode 100644 src/wcq-components/TablePlus/components/QueryColumn/likeQuery.vue create mode 100644 src/wcq-components/TablePlus/config.ts diff --git a/.env.development b/.env.development index 01c4872..1642b45 100644 --- a/.env.development +++ b/.env.development @@ -2,7 +2,7 @@ VITE_PORT = 8848 # 开发环境读取配置文件路径 -VITE_PUBLIC_PATH = /wd-smebiz-manage-web/ +VITE_PUBLIC_PATH = /wd-smebiz-manage-web-v2/ # 开发环境路由历史模式(Hash模式传"hash"、HTML5模式传"h5"、Hash模式带base参数传"hash,base参数"、HTML5模式带base参数传"h5,base参数") VITE_ROUTER_HISTORY = "hash" diff --git a/.env.production b/.env.production index 2abddc0..cd72125 100644 --- a/.env.production +++ b/.env.production @@ -1,5 +1,5 @@ # 线上环境平台打包路径 -VITE_PUBLIC_PATH = /wd-smebiz-manage-web/ +VITE_PUBLIC_PATH = /wd-smebiz-manage-web-v2/ # 线上环境路由历史模式(Hash模式传"hash"、HTML5模式传"h5"、Hash模式带base参数传"hash,base参数"、HTML5模式带base参数传"h5,base参数") VITE_ROUTER_HISTORY = "hash" diff --git a/.gitignore b/.gitignore index 9d3fb47..fbf7065 100644 --- a/.gitignore +++ b/.gitignore @@ -19,5 +19,5 @@ tests/**/coverage/ *.njsproj *.sln tsconfig.tsbuildinfo -/wd-smebiz-manage-web/ +/wd-smebiz-manage-web-v2/ /yd-admin/ diff --git a/index.html b/index.html index ab50b7e..e80522d 100644 --- a/index.html +++ b/index.html @@ -9,7 +9,7 @@ content="width=device-width,initial-scale=1.0,minimum-scale=1.0,maximum-scale=1.0" /> 评级系统 - + diff --git a/package.json b/package.json index b3ebe56..5e44144 100644 --- a/package.json +++ b/package.json @@ -1,5 +1,5 @@ { - "name": "wd-smebiz-manage-web", + "name": "wd-smebiz-manage-web-v2", "version": "4.5.0", "private": true, "scripts": { diff --git a/public/favicon2.ico b/public/favicon2.ico new file mode 100644 index 0000000000000000000000000000000000000000..82d49707c183d5285fdaae3a9aa570a267f1d8ea GIT binary patch literal 16958 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%0ABbp`87{VElDpIf%RJRl(q<&N~?IT$BC0{|!R+ zG0*c_Kc9m~(0?xckHwCmAPXEG3??(#Yu!SjWOttL6AUE=AiFR5KgT@BfI-fj!RjH{ z;0O8469yB&mEaFR?`$@Q+kLF|om$6wU)kM<*qe|O-}qpj(H+|E1*^;Yf_p^#&)^BL zgm=DMC~pThlShuGl>h8AD%cO*9z%!t!Pp$r@av!b;W4~m_gioYj5u9hqY$H$E;Ug z8AN=w#ukIOfPAjpxD{w$S?G6|cbQA?5p9Y8vpg?dUcJiQ7S;#)okM-%Dp}>ajo^=9 z2KHwc2G;nL8+VoSTJlM5ZYrRFe(t&C z#60;yzj?<^eu(^=SL5R>OvA?XCP-`R`G>wnddXSo@XP?68W4zg_SE@}FPCf&0s z?wp4$@oKN}w(@T;yY`pf4*t#l{`Ds7I;cI#x*ZHwQnz`m(cgdeSDe~wo?XQML-Pw(|i}yZpFvQ=k_2$YB{+_@8w%5MgUwXO!>HTjR(C@Cg$F+p5 z13g?H2T zw!1_B!Q}z|mbzD;~GJMXzGhi}O|K5N+xX^XuBBvZ?u64?z&7!Ud znPFz3QzF;ByEF1i_wK$l^sF7-GrddabW>Mf|CY&IDckByrek7@Wp`IDqq(xyWH|k= zQ1U;P*BhriX?v<1T9+y_YkhSY88EBOq|B^MPYzYN-IqK`WxX$Xb))hcx4m=e%GWy2 z*QM8{>$$b*?mS)Gc{5!*hSsO-I;lSC+P7V07tznqcQd6kD)+eKEtHOuoxc7DqheFP literal 0 HcmV?d00001 diff --git a/public/logo2.png b/public/logo2.png new file mode 100644 index 0000000000000000000000000000000000000000..9742f72211fa306c11c547432fb56e70230c5eb6 GIT binary patch literal 2402 zcmV-o37z(dP)Px;97#k$RCr$PT+MP5M-c8FVc9ta!3&sMkg19};p75(g4hQPx4;tw-@r)~xGGU{ zgFFG|mY4(P2@sdWoX`P_+@d@HSUCj@o=)}bk7jmfwZHPp$!wJ`-r1R+{`zmadxYSg zS~-BVuI?5G2SCk2-~ey{m>f80x0i|Vei6Qqfd1M2{f#2u*7eQIX~4mS3s*?evqB6Z z=$(1J-zoHMO&>V`YGQn_tOLLS5b*)d1l21N8GJw=2u6Ug3;?GMYMl=#4_*=g1h{o} z@akT$!rSvp&j8_y1E4(5jTsyO6*DyNbPj;L9IJS|1E6At=AF&~ke6c>k9Po6%+O%E zgU>!&gj1&$;pphJ#0H0uu}8>{+dRgWiYO8Vy=h+vqo!~%q)$<*5O(}{A?;9wxBkO< zB_ZK2Xkfqf>Q!$_Y?)p<`e1qaG#nnT5{Rz=h{HuQX1DAJ1*$wwRRFwgFHv=j!(9aV zv^5xPS2rhA4**NL6pgzGa3e3FvkgGFn-Ky2te;8p?$cDhGG9l&WtB&uyG5rwApiv1 z>m$(3)?m;tx?ldTl4Km48+!lYN$g}grfdWReL{R5{7Zlwf)K-S$Pq0A9qm@>1FR;9 zpr_NJ*4O<4!XkkB%kqp+;940UQ5pcn{KF5NzmGcB5drK9l22Q&U+-qw4UefZ3bFwZ zb>>NQabbw}BmplY!0H4aHbS6IQB5cfz}xnPCji6*h7Tb;5OZ@|t$sg@Doz>zQF;%~ zpXY$$n*=Q%VRPxvw=KoItU=0|D-wpt?FKC)RKxsgC*6aNTIku{XmIAPMpEUxtTom|9!vp%Ni8d?1)giis&*}9uV_@4CU=#ZprpmdO5xZ(iFz@#igiYC(>09m-3VT=PH z1CypX!~rl(?q-<#&C=5S*k!v6-yy1OX5sGb3`^u1a$=ouu3gUX;8Fm5xp{S2iiXN= z?tTAD{U?&E@29s3Bwy`O$5ROrvc|KnaWHvlWQuP=h&i+B{f1<6;E8bDjW zbsxtru6f@{Ze!6Ny1CbV95V-B+*x0h2z=AhC`}Ro$NAfz%pY#`?(M4EH!GX#d>7cb z7>I})zyI)S*rBkpxo$KPD}m|m7<*sYym|uwd7fzPfNxWH`q`v6x7)?sHZxzu}oYPIq zrOox1#(YFQKrtksRULQ%bdfbJNg5ZLhb`8UOLx}qBf_mHg8~ikC11a20<3As+7{CW zPh)G*fT(0Lkqw{@GeOzS!zT9!jn!9Eza%MSrdZ5{Q7Yv3^K|p?W!Qn3N z@Ch`B|KY#aw1@1*Zf6kQwz$o9hRG`A~O<5ufY+ATTEykduEm zl&H5b|6z?y%me^N0&y!?Cu%Ag0AFZ~wW7}1Ce0a5P$vFN9e}uvrJDkvZ#u?^HjN`K z)`X;v3bnx~GjvA#wp@kDMDRfO1VxuB|G(w~OrN7gaF)bj@a9p*+2qWf%39%nrBgr8O(E%w9vtk2103aqHDgvSn zBpk)hBA%wk08o+I_;)bEz4?K{B&VF&1lgoKapL4?A^8*kOpqxi_jJh~5(?2FDOp>_ zKcC=%!kQHdNvHw0uP>629QvmAE2V|Lmd&O5fm{G&0>N~U#tBq+wrVcTIV<9&IJdCy zZuHM#lMj2=U)Az9IrbSbX%wP^M9aF9R}MFFV%BZF?+f_wXZ1IpFQJVfs>$etnb7J1 zP?3sfj&1|;Yb)sNmjp`l07*qoM6N<$f}0s%S^xk5 literal 0 HcmV?d00001 diff --git a/src/assets/login/logo2.png b/src/assets/login/logo2.png new file mode 100644 index 0000000000000000000000000000000000000000..9742f72211fa306c11c547432fb56e70230c5eb6 GIT binary patch literal 2402 zcmV-o37z(dP)Px;97#k$RCr$PT+MP5M-c8FVc9ta!3&sMkg19};p75(g4hQPx4;tw-@r)~xGGU{ zgFFG|mY4(P2@sdWoX`P_+@d@HSUCj@o=)}bk7jmfwZHPp$!wJ`-r1R+{`zmadxYSg zS~-BVuI?5G2SCk2-~ey{m>f80x0i|Vei6Qqfd1M2{f#2u*7eQIX~4mS3s*?evqB6Z z=$(1J-zoHMO&>V`YGQn_tOLLS5b*)d1l21N8GJw=2u6Ug3;?GMYMl=#4_*=g1h{o} z@akT$!rSvp&j8_y1E4(5jTsyO6*DyNbPj;L9IJS|1E6At=AF&~ke6c>k9Po6%+O%E zgU>!&gj1&$;pphJ#0H0uu}8>{+dRgWiYO8Vy=h+vqo!~%q)$<*5O(}{A?;9wxBkO< zB_ZK2Xkfqf>Q!$_Y?)p<`e1qaG#nnT5{Rz=h{HuQX1DAJ1*$wwRRFwgFHv=j!(9aV zv^5xPS2rhA4**NL6pgzGa3e3FvkgGFn-Ky2te;8p?$cDhGG9l&WtB&uyG5rwApiv1 z>m$(3)?m;tx?ldTl4Km48+!lYN$g}grfdWReL{R5{7Zlwf)K-S$Pq0A9qm@>1FR;9 zpr_NJ*4O<4!XkkB%kqp+;940UQ5pcn{KF5NzmGcB5drK9l22Q&U+-qw4UefZ3bFwZ zb>>NQabbw}BmplY!0H4aHbS6IQB5cfz}xnPCji6*h7Tb;5OZ@|t$sg@Doz>zQF;%~ zpXY$$n*=Q%VRPxvw=KoItU=0|D-wpt?FKC)RKxsgC*6aNTIku{XmIAPMpEUxtTom|9!vp%Ni8d?1)giis&*}9uV_@4CU=#ZprpmdO5xZ(iFz@#igiYC(>09m-3VT=PH z1CypX!~rl(?q-<#&C=5S*k!v6-yy1OX5sGb3`^u1a$=ouu3gUX;8Fm5xp{S2iiXN= z?tTAD{U?&E@29s3Bwy`O$5ROrvc|KnaWHvlWQuP=h&i+B{f1<6;E8bDjW zbsxtru6f@{Ze!6Ny1CbV95V-B+*x0h2z=AhC`}Ro$NAfz%pY#`?(M4EH!GX#d>7cb z7>I})zyI)S*rBkpxo$KPD}m|m7<*sYym|uwd7fzPfNxWH`q`v6x7)?sHZxzu}oYPIq zrOox1#(YFQKrtksRULQ%bdfbJNg5ZLhb`8UOLx}qBf_mHg8~ikC11a20<3As+7{CW zPh)G*fT(0Lkqw{@GeOzS!zT9!jn!9Eza%MSrdZ5{Q7Yv3^K|p?W!Qn3N z@Ch`B|KY#aw1@1*Zf6kQwz$o9hRG`A~O<5ufY+ATTEykduEm zl&H5b|6z?y%me^N0&y!?Cu%Ag0AFZ~wW7}1Ce0a5P$vFN9e}uvrJDkvZ#u?^HjN`K z)`X;v3bnx~GjvA#wp@kDMDRfO1VxuB|G(w~OrN7gaF)bj@a9p*+2qWf%39%nrBgr8O(E%w9vtk2103aqHDgvSn zBpk)hBA%wk08o+I_;)bEz4?K{B&VF&1lgoKapL4?A^8*kOpqxi_jJh~5(?2FDOp>_ zKcC=%!kQHdNvHw0uP>629QvmAE2V|Lmd&O5fm{G&0>N~U#tBq+wrVcTIV<9&IJdCy zZuHM#lMj2=U)Az9IrbSbX%wP^M9aF9R}MFFV%BZF?+f_wXZ1IpFQJVfs>$etnb7J1 zP?3sfj&1|;Yb)sNmjp`l07*qoM6N<$f}0s%S^xk5 literal 0 HcmV?d00001 diff --git a/src/components/EditTabel/fileUploadMd.vue b/src/components/EditTabel/fileUploadMd.vue index fed1c38..8c37dfa 100644 --- a/src/components/EditTabel/fileUploadMd.vue +++ b/src/components/EditTabel/fileUploadMd.vue @@ -23,21 +23,23 @@ type="primary" v-if="fileMd && props.showDownload === true" @click="fileDownload" - >下载下载 + diff --git a/src/layout/components/sidebar/horizontal.vue b/src/layout/components/sidebar/horizontal.vue index 9bcf846..b3186f4 100644 --- a/src/layout/components/sidebar/horizontal.vue +++ b/src/layout/components/sidebar/horizontal.vue @@ -37,7 +37,7 @@ nextTick(() => { class="horizontal-header" >
- logo + logo {{ title }}
- logo + logo {{ title }} - logo + logo {{ title }} diff --git a/src/layout/types.ts b/src/layout/types.ts index 3038129..78ea7bc 100644 --- a/src/layout/types.ts +++ b/src/layout/types.ts @@ -5,7 +5,7 @@ export const routerArrays: Array = VITE_HIDE_HOME === "false" ? [ { - path: "/welcome", + path: "/dashboard", meta: { title: "首页", icon: "homeFilled" diff --git a/src/router/index.ts b/src/router/index.ts index 515c065..7b6e3b6 100644 --- a/src/router/index.ts +++ b/src/router/index.ts @@ -1,9 +1,9 @@ // import "@/utils/sso"; -import { getConfig } from "@/config"; +import {getConfig} from "@/config"; import NProgress from "@/utils/progress"; -import { sessionKey, type DataInfo } from "@/utils/auth"; -import { useMultiTagsStoreHook } from "@/store/modules/multiTags"; -import { usePermissionStoreHook } from "@/store/modules/permission"; +import {sessionKey, type DataInfo} from "@/utils/auth"; +import {useMultiTagsStoreHook} from "@/store/modules/multiTags"; +import {usePermissionStoreHook} from "@/store/modules/permission"; import { Router, createRouter, @@ -21,7 +21,7 @@ import { formatTwoStageRoutes, formatFlatteningRoutes } from "./utils"; -import { buildHierarchyTree } from "@/utils/tree"; +import {buildHierarchyTree} from "@/utils/tree"; import {isUrl, openLink, isAllEmpty, storageLocal} from "@pureadmin/utils"; import remainingRouter from "./modules/remaining"; @@ -31,7 +31,13 @@ import remainingRouter from "./modules/remaining"; * 如何排除文件请看:https://cn.vitejs.dev/guide/features.html#negative-patterns */ const modules: Record = import.meta.glob( - ["./modules/**/*.ts", "!./modules/**/remaining.ts","!./modules/test.ts","!./modules/companyDataManage.ts"], + ["./modules/**/*.ts", "!./modules/**/remaining.ts", + // "!./modules/test.ts", + // "!./modules/rateApplyManage.ts", + + "!./modules/companyDataManage.ts", + "!./modules/rateManage.ts", + ], { eager: true } @@ -72,7 +78,7 @@ export const router: Router = createRouter({ if (from.meta.saveSrollTop) { const top: number = document.documentElement.scrollTop || document.body.scrollTop; - resolve({ left: 0, top }); + resolve({left: 0, top}); } } }); @@ -82,7 +88,7 @@ export const router: Router = createRouter({ /** 重置路由 */ export function resetRouter() { router.getRoutes().forEach(route => { - const { name, meta } = route; + const {name, meta} = route; if (name && router.hasRoute(name) && meta?.backstage) { router.removeRoute(name); router.options.routes = formatTwoStageRoutes( @@ -98,7 +104,7 @@ export function resetRouter() { /** 路由白名单 */ const whiteList = ["/login"]; -const { VITE_HIDE_HOME } = import.meta.env; +const {VITE_HIDE_HOME} = import.meta.env; router.beforeEach((to: ToRouteType, _from, next) => { if (to.meta?.keepAlive) { @@ -118,18 +124,20 @@ router.beforeEach((to: ToRouteType, _from, next) => { else document.title = item.meta.title as string; }); } + /** 如果已经登录并存在登录信息后不能跳转到路由白名单,而是继续保持在当前页面 */ function toCorrectRoute() { whiteList.includes(to.fullPath) ? next(_from.fullPath) : next(); } + if (userInfo) { // 无权限跳转403页面 if (to.meta?.roles && !isOneOfArray(to.meta?.roles, userInfo?.roles)) { - next({ path: "/error/403" }); + next({path: "/error/403"}); } // 开启隐藏首页后在浏览器地址栏手动输入首页welcome路由则跳转到404页面 if (VITE_HIDE_HOME === "true" && to.fullPath === "/welcome") { - next({ path: "/error/404" }); + next({path: "/error/404"}); } if (_from?.name) { // name为超链接 @@ -146,7 +154,7 @@ router.beforeEach((to: ToRouteType, _from, next) => { ) { initRouter().then((router: Router) => { if (!useMultiTagsStoreHook().getMultiTagsCache) { - const { path } = to; + const {path} = to; const route = findRouteByPath( path, router.options.routes[0].children @@ -156,14 +164,14 @@ router.beforeEach((to: ToRouteType, _from, next) => { if (route && route.meta?.title) { if (isAllEmpty(route.parentId) && route.meta?.backstage) { // 此处为动态顶级路由(目录) - const { path, name, meta } = route.children[0]; + const {path, name, meta} = route.children[0]; useMultiTagsStoreHook().handleTags("push", { path, name, meta }); } else { - const { path, name, meta } = route; + const {path, name, meta} = route; useMultiTagsStoreHook().handleTags("push", { path, name, @@ -183,7 +191,7 @@ router.beforeEach((to: ToRouteType, _from, next) => { if (whiteList.indexOf(to.path) !== -1) { next(); } else { - next({ path: "/login" }); + next({path: "/login"}); } } else { next(); diff --git a/src/views/dashboard/components/ApplyBar.vue b/src/views/dashboard/components/ApplyBar.vue index 7400fcc..696c8d3 100644 --- a/src/views/dashboard/components/ApplyBar.vue +++ b/src/views/dashboard/components/ApplyBar.vue @@ -9,6 +9,7 @@ import { GridComponent } from 'echarts/components'; import { LineChart } from 'echarts/charts'; import { UniversalTransition } from 'echarts/features'; import { CanvasRenderer } from 'echarts/renderers'; +import {useDark} from "@pureadmin/utils"; echarts.use([GridComponent, LineChart, CanvasRenderer, UniversalTransition]); @@ -33,7 +34,7 @@ const chartOption = ref( xAxis: [ { type: 'category', - data: ['Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat', 'Sun'], + data: ['23/8/12', '23/8/13', '23/8/14', '23/8/15', '23/8/16', '23/8/17', '23/8/18'], axisTick: { alignWithLabel: true } @@ -76,11 +77,21 @@ const elId = ref('apply_bar_' + Date.now()) onBeforeMount(() => { }) + +const isDark = useDark() +watch(() => isDark.isDark.value, (value: boolean) => { + if (chartObj.chart) { + chartObj.chart.dispose(); + chartObj.chart = echarts.init(document.getElementById(elId.value), value ? 'dark' : 'light'); //init函数后加参数:'light'/'dark'即为浅色深色主题 + chartObj.chart.setOption(chartOption.value); + props.data && chartObj.chart?.setOption(dataToOptionsData(props.data)); + } +}) onMounted(() => { elId.value = 'apply_bar_' + Date.now() + Math.random() nextTick(() => { const chartDom = document.getElementById(elId.value)!; - chartObj.chart = echarts.init(chartDom, 'dark') + chartObj.chart = echarts.init(chartDom, isDark.isDark.value ? 'dark' : 'light') chartObj.chartDom = chartDom chartObj.chart?.setOption(chartOption.value) window.addEventListener('resize', () => { @@ -88,20 +99,18 @@ onMounted(() => { }) }) }) +const dataToOptionsData = (data) => { + return { + xAxis: [{data: data.map(item => item[0])}], + series: [{data: data.map(item => item[1])}] + } +} watch(() => props.data, (newVal) => { - console.log({ - xAxis: [{data: newVal.map(item => item[0])}], - series: [{data: newVal.map(item => item[1])}] - }) - newVal && chartObj.chart?.setOption({ - xAxis: [{data: newVal.map(item => item[0])}], - series: [{data: newVal.map(item => item[1])}] - }); + newVal && chartObj.chart?.setOption(dataToOptionsData(newVal)); }, { immediate: true }) - diff --git a/src/views/dashboard/components/RateLevelPie.vue b/src/views/dashboard/components/RateLevelPie.vue index c6964b7..4c7f7ac 100644 --- a/src/views/dashboard/components/RateLevelPie.vue +++ b/src/views/dashboard/components/RateLevelPie.vue @@ -50,15 +50,15 @@ const chartOption = ref( }, series: [ { - name: 'Access From', + name: '等级', type: 'pie', radius: '80%', data: [ - {value: 1048, name: 'Search Engine'}, - {value: 735, name: 'Direct'}, - {value: 580, name: 'Email'}, - {value: 484, name: 'Union Ads'}, - {value: 300, name: 'Video Ads'} + {value: 1048, name: 'C'}, + {value: 735, name: 'B'}, + {value: 580, name: 'A'}, + {value: 484, name: 'AA'}, + {value: 300, name: 'AAA'} ], emphasis: { itemStyle: { @@ -75,7 +75,7 @@ const chartOption = ref( type ChartData = [string, number][] const data = ref() const props = withDefaults(defineProps<{ data: ChartData }>(), { - data: () => [] + data: () => [['AAA', 300], ['AA', 484], ['A', 580], ['B', 735], ['C', 1048]] }); const chartObj: { chartDom: HTMLElement, @@ -89,9 +89,15 @@ onBeforeMount(() => { }) const isDark = useDark() -watch(()=>isDark.isDark.value,(value:boolean)=>{ - +watch(() => isDark.isDark.value, (value: boolean) => { + if (chartObj.chart) { + chartObj.chart.dispose(); + chartObj.chart = echarts.init(document.getElementById(elId.value), value ? 'dark' : 'light'); //init函数后加参数:'light'/'dark'即为浅色深色主题 + chartObj.chart.setOption(chartOption.value); + props.data && chartObj.chart?.setOption(dataToOptionsData(props.data)); + } }) + onMounted(() => { elId.value = 'rate_level_pie_' + Date.now() + Math.random() nextTick(() => { @@ -104,14 +110,14 @@ onMounted(() => { }) }) }) + +const dataToOptionsData = (data) => { + return { + series: [{data: data.map(item => ({name: item[0], value: item[1]}))}] + } +} watch(() => props.data, (newVal) => { - console.log({ - xAxis: [{data: newVal.map(item => item[0])}], - series: [{data: newVal.map(item => item[1])}] - }) - newVal && chartObj.chart?.setOption({ - series: [{data: newVal.map(item => ({name: item[0], value: item[1]}))}] - }); + newVal && chartObj.chart?.setOption(dataToOptionsData(newVal)); }, { immediate: true }) diff --git a/src/views/login/index.vue b/src/views/login/index.vue index eeba506..89505f1 100644 --- a/src/views/login/index.vue +++ b/src/views/login/index.vue @@ -117,7 +117,7 @@ onBeforeUnmount(() => { diff --git a/src/wcq-components/TablePlus/components/QueryColumn/daterangeQuery.vue b/src/wcq-components/TablePlus/components/QueryColumn/daterangeQuery.vue new file mode 100644 index 0000000..74b92ca --- /dev/null +++ b/src/wcq-components/TablePlus/components/QueryColumn/daterangeQuery.vue @@ -0,0 +1,44 @@ + + + diff --git a/src/wcq-components/TablePlus/components/QueryColumn/datetimeQuery.vue b/src/wcq-components/TablePlus/components/QueryColumn/datetimeQuery.vue new file mode 100644 index 0000000..0ce5cec --- /dev/null +++ b/src/wcq-components/TablePlus/components/QueryColumn/datetimeQuery.vue @@ -0,0 +1,32 @@ + + + diff --git a/src/wcq-components/TablePlus/components/QueryColumn/datetimerangeQuery.vue b/src/wcq-components/TablePlus/components/QueryColumn/datetimerangeQuery.vue new file mode 100644 index 0000000..66378e0 --- /dev/null +++ b/src/wcq-components/TablePlus/components/QueryColumn/datetimerangeQuery.vue @@ -0,0 +1,35 @@ + + + diff --git a/src/wcq-components/TablePlus/components/QueryColumn/enumQuery.vue b/src/wcq-components/TablePlus/components/QueryColumn/enumQuery.vue new file mode 100644 index 0000000..44b1e23 --- /dev/null +++ b/src/wcq-components/TablePlus/components/QueryColumn/enumQuery.vue @@ -0,0 +1,47 @@ + + + diff --git a/src/wcq-components/TablePlus/components/QueryColumn/findInSetQuery.vue b/src/wcq-components/TablePlus/components/QueryColumn/findInSetQuery.vue new file mode 100644 index 0000000..d3e21af --- /dev/null +++ b/src/wcq-components/TablePlus/components/QueryColumn/findInSetQuery.vue @@ -0,0 +1,47 @@ + + + diff --git a/src/wcq-components/TablePlus/components/QueryColumn/index.vue b/src/wcq-components/TablePlus/components/QueryColumn/index.vue new file mode 100644 index 0000000..1875b57 --- /dev/null +++ b/src/wcq-components/TablePlus/components/QueryColumn/index.vue @@ -0,0 +1,47 @@ + + + diff --git a/src/wcq-components/TablePlus/components/QueryColumn/likeQuery.vue b/src/wcq-components/TablePlus/components/QueryColumn/likeQuery.vue new file mode 100644 index 0000000..a8553c7 --- /dev/null +++ b/src/wcq-components/TablePlus/components/QueryColumn/likeQuery.vue @@ -0,0 +1,26 @@ + + + diff --git a/src/wcq-components/TablePlus/config.ts b/src/wcq-components/TablePlus/config.ts new file mode 100644 index 0000000..645618d --- /dev/null +++ b/src/wcq-components/TablePlus/config.ts @@ -0,0 +1,24 @@ +import {QueryExpress} from "@/api/crudApi"; +import type {ColumnTypeName, QueryTypeEnum} from "./types"; +//查询值的数据初始值 +//查询配置的对应后端queryCommon类型 +//新建数据时的字段默认值 +const queryTypeDefaultValueDic: { [key in QueryTypeEnum]?: any } = { + date: null, + datetime: null, + // daterange: [null, null], + // datetimerange: [null, null] +} + +const queryTypeExpressDic: { [key in QueryTypeEnum]: QueryExpress } = { + date: "=", + datetime: "=", + find_in_set: "find_in_set", + enum: "=", + like: "like", +} + +export { + queryTypeDefaultValueDic, + queryTypeExpressDic, +}; diff --git a/src/wcq-components/TablePlus/types.ts b/src/wcq-components/TablePlus/types.ts index a0f929e..8e3ea37 100644 --- a/src/wcq-components/TablePlus/types.ts +++ b/src/wcq-components/TablePlus/types.ts @@ -1,260 +1,305 @@ +/////////////////////// import {ElTable} from "element-plus"; -type ColumnTypeName = - "string" - | "text" - | "datetime" - | "date" - | "integer" - | "double" - | "float" - | "boolean" - | "enum" - | "set" - | "list" - | "json" - | "relation" - | "o2mo" - | "o2mm" - | "m2m" - | "o2o" - | "foreign" +export type QueryTypeEnum = "like" | "date" | "datetime" | "enum" | "find_in_set"; + + +interface QueryConfigBase { + type: QueryTypeEnum; + options?: any[] | { name: string; value: any }[]; +} + +interface QueryLike extends QueryConfigBase { + type: "like"; +} + +interface QueryDate extends QueryConfigBase { + type: "date"; +} + +interface QueryDatetime extends QueryConfigBase { + type: "datetime"; +} + + +interface QueryEnum extends QueryConfigBase { + type: "enum"; + options?: any[] | { name: string; value: any }[]; +} + +interface QueryFindInSet extends QueryConfigBase { + type: "find_in_set"; + options?: any[] | { name: string; value: any }[]; +} + +export type QueryType = + | QueryLike + | QueryEnum + | QueryFindInSet + | QueryDate + | QueryDatetime + +export type ColumnTypeName = + "string" + | "text" + | "datetime" + | "date" + | "integer" + | "double" + | "float" + | "boolean" + | "enum" + | "set" + | "list" + | "json" + | "relation" + | "o2mo" + | "o2mm" + | "m2m" + | "o2o" + | "foreign" interface ColumnBase { - key: string - name: string - default?: any - primary?: boolean - require?: { - add?: boolean - update?: boolean - } - query?: { - type: "" - } - type: ColumnTypeName - config?: any - component?: { - //使用自定义组件 - inputColumn?: ColumnComponent;//编辑字段组件 - cellColumn?: ColumnComponent;//表格字段组件 - queryColumn?: ColumnComponent;//查询字段组件 - }; + key: string + name: string + default?: any + primary?: boolean + require?: { + add?: boolean + update?: boolean + } + query?: QueryType + type: ColumnTypeName + config?: any + component?: { + //使用自定义组件 + inputColumn?: ColumnComponent;//编辑字段组件 + cellColumn?: ColumnComponent;//表格字段组件 + queryColumn?: ColumnComponent;//查询字段组件 + }; } interface StringColumn extends ColumnBase { - type: "string" - config?: { - len?: number | { max?: number, min?: number } - re?: string - } + type: "string" + config?: { + len?: number | { max?: number, min?: number } + re?: string + } } interface TextColumn extends ColumnBase { - type: "text" - config?: { - len?: { max?: number, min?: number } - } + type: "text" + config?: { + len?: { max?: number, min?: number } + } } interface DatetimeColumn extends ColumnBase { - type: "datetime" + type: "datetime" } interface DateColumn extends ColumnBase { - type: "date" + type: "date" } interface IntegerColumn extends ColumnBase { - type: "integer" - config?: { - max?: number - min?: number - } + type: "integer" + config?: { + max?: number + min?: number + } } interface DoubleColumn extends ColumnBase { - type: "double" - config?: { - max?: number - min?: number - } + type: "double" + config?: { + max?: number + min?: number + } } interface FloatColumn extends ColumnBase { - type: "float" - config?: { - max?: number - min?: number - } + type: "float" + config?: { + max?: number + min?: number + } } interface BooleanColumn extends ColumnBase { - type: "boolean" + type: "boolean" } interface EnumColumn extends ColumnBase { - type: "enum" - config: { - options: any[] | { name: string, value: any }[] - } + type: "enum" + config: { + options: any[] | { name: string, value: any }[] + } } interface SetColumn extends ColumnBase { - type: "set", - config: { - options: any[] | { name: string, value: any }[] - } + type: "set", + config: { + options: any[] | { name: string, value: any }[] + } } interface ListColumn extends ColumnBase { - type: "list" - config: { - options: any[] | { name: string, value: any }[] - } + type: "list" + config: { + options: any[] | { name: string, value: any }[] + } } interface JsonColumn extends ColumnBase { - type: "json" - config: { - schema: TableModel - } + type: "json" + config: { + schema: JsonTableModel + } } // foreign不允许修改,或者只能一次修改这一个字段 interface ForeignColumn extends ColumnBase { - type: "foreign" - config: { - targetModel: TableModel - key: string - nameKey: string | string[] - } + type: "foreign" + config: { + targetModel: TableModel + key: string + nameKey: string | string[] + } } interface RelationColumn extends ColumnBase { - type: "relation" - config: { - relationType: "o2m_o" | "o2m_m" | "m2m" | "o2o" - targetModel: TableModel - } + type: "relation" + config: { + relationType: "o2m_o" | "o2m_m" | "m2m" | "o2o" + targetModel: TableModel + } } //父子一对多关系里的父亲,例如父子,一个父亲对应多个儿子,它的值应该是个id列表或者儿子模型列表 interface O2MOColumn extends ColumnBase { - type: "o2mo" - config: { - targetModel: TableModel - nameKey: string | string[]//字段值显示时使用的key - } + type: "o2mo" + config: { + targetModel: TableModel + nameKey: string | string[]//字段值显示时使用的key + } } //父子一对多关系里的儿子,例如父子,一个父亲对应多个儿子,它的值应该是个id列表或者父亲模型 interface O2MMColumn extends ColumnBase { - type: "o2mm" - config: { - targetModel: TableModel - } + type: "o2mm" + config: { + targetModel: TableModel + } } interface O2OColumn extends ColumnBase { - type: "o2o" - config: { - targetModel: TableModel - nameKey: string | string[] - //有这个字段的,可以创建与更新和选择 - //没有这个字段,只能创建与更新 - fromModelForeignKey?: string | null//从model的哪个key引用到targetModel的,例如一对一父子关系的儿子里面的parent_id - } + type: "o2o" + config: { + targetModel: TableModel + nameKey: string | string[] + //有这个字段的,可以创建与更新和选择 + //没有这个字段,只能创建与更新 + fromModelForeignKey?: string | null//从model的哪个key引用到targetModel的,例如一对一父子关系的儿子里面的parent_id + } } //多对多关系 interface M2MColumn extends ColumnBase { - type: "m2m" - config: { - targetModel: TableModel - nameKey: string | string[]//字段值显示时使用的key - } + type: "m2m" + config: { + targetModel: TableModel + nameKey: string | string[]//字段值显示时使用的key + } } type Column = - StringColumn - | TextColumn - | DateColumn - | DoubleColumn - | DatetimeColumn - | RelationColumn - | ListColumn - | SetColumn - | FloatColumn - | IntegerColumn - | JsonColumn - | BooleanColumn - | EnumColumn - | O2MOColumn - | M2MColumn - | O2OColumn - | ForeignColumn + StringColumn + | TextColumn + | DateColumn + | DoubleColumn + | DatetimeColumn + | RelationColumn + | ListColumn + | SetColumn + | FloatColumn + | IntegerColumn + | JsonColumn + | BooleanColumn + | EnumColumn + | O2MOColumn + | M2MColumn + | O2OColumn + | ForeignColumn interface ColumnComponent { - component: any; - props?: any; + component: any; + props?: any; +} + +interface JsonTableModel { + columns: Column[] + props?: { + //在表格中隐藏的字段 + hiddenColumns?: string[] + } } interface TableModel { - tableName: string - url: string - name: string - columns: Column[] - props?: { - //在表格中隐藏的字段 - hiddenColumns?: string[] - } + tableName: string + url: string + name: string + columns: Column[] + props?: { + //在表格中隐藏的字段 + hiddenColumns?: string[] + } } export type { - TableModel, - Column, - TextColumn, - DateColumn, - DoubleColumn, - DatetimeColumn, - RelationColumn, - ListColumn, - SetColumn, - FloatColumn, - IntegerColumn, - JsonColumn, - BooleanColumn, - EnumColumn, - StringColumn, - O2MOColumn, - M2MColumn, - O2OColumn, - ForeignColumn + TableModel, + Column, + TextColumn, + DateColumn, + DoubleColumn, + DatetimeColumn, + RelationColumn, + ListColumn, + SetColumn, + FloatColumn, + IntegerColumn, + JsonColumn, + BooleanColumn, + EnumColumn, + StringColumn, + O2MOColumn, + M2MColumn, + O2OColumn, + ForeignColumn } type MainElTableProps = InstanceType["$props"]; export interface TablePlusProps { - tableModel: TableModel; - mainElTableProps?: MainElTableProps; - formLabelWidth?: number; - handel?: { - afterDataChange?: () => any, - afterDelete?: () => any, - afterUpdate?: () => any, - afterAdd?: () => any, - } + tableModel: TableModel; + mainElTableProps?: MainElTableProps; + formLabelWidth?: number; + handel?: { + afterDataChange?: () => any, + afterDelete?: () => any, + afterUpdate?: () => any, + afterAdd?: () => any, + } } export interface MultipleSelectTableProps extends TablePlusProps { - selection?: null | string[] + selection?: null | string[] } export interface OneSelectTableProps extends TablePlusProps { - value: any + value: any } diff --git a/src/wcq-components/TablePlus/utils.ts b/src/wcq-components/TablePlus/utils.ts index 24fc406..669cb3e 100644 --- a/src/wcq-components/TablePlus/utils.ts +++ b/src/wcq-components/TablePlus/utils.ts @@ -1,4 +1,6 @@ import {Column} from "./types"; +import {Query} from "./api"; +import {queryTypeExpressDic} from "./config"; export function copy(obj: any) { return obj ? JSON.parse(JSON.stringify(obj)) : obj @@ -69,4 +71,46 @@ export function getColumnDefaultValue(column: Column) { } +export function getColumnQueryDefaultValue(column: Column) { + if (column.query) { + if (column.query.type == 'like') { + } else if (column.query.type == 'enum') { + + } else if (column.query.type == 'date') { + + } else if (column.query.type == 'datetime') { + + } else if (column.query.type == 'find_in_set') { + + } + } + return null +} + + +export function getQueryValue(column: Column, query: Query) { + let param = query.params.find(item => item.name == column.key) + if (!param) { + param = { + name: column.key, + type: queryTypeExpressDic[column.query.type], + value: null + } + query.params.push(param) + } + return param.value +} + +export function setQueryValue(column: Column, query: Query, value) { + let param = query.params.find(item => item.name == column.key) + if (!param) { + param = { + name: column.key, + type: queryTypeExpressDic[column.query.type], + value: null + } + query.params.push(param) + } + param.value = value +} diff --git a/vite.config.ts b/vite.config.ts index fea9b22..d76eb0b 100644 --- a/vite.config.ts +++ b/vite.config.ts @@ -58,7 +58,7 @@ export default ({command, mode}: ConfigEnv): UserConfigExport => { exclude }, build: { - outDir:"wd-smebiz-manage-web", + outDir:"wd-smebiz-manage-web-v2", sourcemap: false, // 消除打包大小超过500kb警告 chunkSizeWarningLimit: 4000,