yh-pub 2.0.2 → 2.0.7

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (57) hide show
  1. package/{AdminLogin-W5d0M-rz.js → AdminLogin-BQ1XLQaD.js} +83 -72
  2. package/AdminLogin-BQ1XLQaD.js.map +1 -0
  3. package/{Error-BZ9xAkuT.js → Error-mAhb4JTd.js} +2 -2
  4. package/{Error-BZ9xAkuT.js.map → Error-mAhb4JTd.js.map} +1 -1
  5. package/Error401-B7NlVttM.js +31 -0
  6. package/Error401-B7NlVttM.js.map +1 -0
  7. package/Error404-Ba9ueMHc.js +31 -0
  8. package/Error404-Ba9ueMHc.js.map +1 -0
  9. package/Error500-DYjNCZNu.js +31 -0
  10. package/Error500-DYjNCZNu.js.map +1 -0
  11. package/{HomeIndex-DnGu5xD0.js → HomeIndex-BO9gew40.js} +172 -172
  12. package/HomeIndex-BO9gew40.js.map +1 -0
  13. package/{IconExplorer-IvNeUIhq.js → IconExplorer-CAqKbvQ1.js} +25 -25
  14. package/IconExplorer-CAqKbvQ1.js.map +1 -0
  15. package/Index-fSvx8Wih.js +5 -0
  16. package/Index-fSvx8Wih.js.map +1 -0
  17. package/{MainLogin-CgJLift-.js → MainLogin-D2XRuJDW.js} +92 -84
  18. package/MainLogin-D2XRuJDW.js.map +1 -0
  19. package/MenuManage-BPvVvMzw.js +626 -0
  20. package/MenuManage-BPvVvMzw.js.map +1 -0
  21. package/OrgManage-DM43rEPk.js +380 -0
  22. package/OrgManage-DM43rEPk.js.map +1 -0
  23. package/RoleManage-AqGTGljA.js +738 -0
  24. package/RoleManage-AqGTGljA.js.map +1 -0
  25. package/SysConfig-v9nYZf4a.js +733 -0
  26. package/SysConfig-v9nYZf4a.js.map +1 -0
  27. package/TenantList-PeEEKz0o.js +705 -0
  28. package/TenantList-PeEEKz0o.js.map +1 -0
  29. package/{index-C75ufNln.js → index-kZF68V9S.js} +9766 -9641
  30. package/index-kZF68V9S.js.map +1 -0
  31. package/index.es.js +51 -47
  32. package/package.json +1 -1
  33. package/style.css +1 -1
  34. package/AdminLogin-W5d0M-rz.js.map +0 -1
  35. package/Error401-DrA7Y9h3.js +0 -30
  36. package/Error401-DrA7Y9h3.js.map +0 -1
  37. package/Error404-C5K4o1R3.js +0 -30
  38. package/Error404-C5K4o1R3.js.map +0 -1
  39. package/Error500-D9nu1xhW.js +0 -30
  40. package/Error500-D9nu1xhW.js.map +0 -1
  41. package/HomeIndex-DnGu5xD0.js.map +0 -1
  42. package/IconExplorer-IvNeUIhq.js.map +0 -1
  43. package/Index-BMd4lEnI.js +0 -5
  44. package/Index-BMd4lEnI.js.map +0 -1
  45. package/MainLogin-CgJLift-.js.map +0 -1
  46. package/MenuManage-BJkQPgpt.js +0 -640
  47. package/MenuManage-BJkQPgpt.js.map +0 -1
  48. package/OrgManage-jLpAnwf4.js +0 -378
  49. package/OrgManage-jLpAnwf4.js.map +0 -1
  50. package/RoleManage-D2RwwJoM.js +0 -729
  51. package/RoleManage-D2RwwJoM.js.map +0 -1
  52. package/SysConfig-CYcl0wCh.js +0 -727
  53. package/SysConfig-CYcl0wCh.js.map +0 -1
  54. package/TenantList-CNVwmoEt.js +0 -693
  55. package/TenantList-CNVwmoEt.js.map +0 -1
  56. package/index-C75ufNln.js.map +0 -1
  57. package/index.d.ts +0 -35
@@ -1 +0,0 @@
1
- {"version":3,"file":"AdminLogin-W5d0M-rz.js","sources":["../layout/AdminLogin.vue"],"sourcesContent":["<template>\n <div class=\"login\" :style=\"{backgroundImage: `url(${appStore.loginBg || defaultLoginBg})`}\">\n <!-- 右上角返回主登录入口 -->\n <div\n class=\"back-entry\"\n @click=\"goBackToMainLogin\"\n title=\"返回主登录\">\n <YhIcon\n fontFamily=\"yhicon\"\n prefix=\"yh-\"\n name=\"left\"></YhIcon>\n </div>\n <div class=\"login-content\">\n <div class=\"login-title\">\n <img\n class=\"login-logo-placeholder\"\n src=\"\"\n alt=\"\" />\n <div class=\"login-title-text\">\n <div class=\"login-title-cn\">系统管理后台</div>\n <div class=\"login-title-en\">ADMIN</div>\n </div>\n </div>\n <div class=\"form-con\">\n <el-form\n ref=\"formRef\"\n :model=\"formValidate\"\n :rules=\"ruleValidate\"\n size=\"large\"\n @keydown.enter=\"submitLogin\">\n <el-form-item prop=\"name\">\n <el-input\n v-model=\"formValidate.name\"\n placeholder=\"请输入用户名\"\n autocomplete=\"off\">\n <template #prefix>\n <YhIcon\n fontFamily=\"yhicon\"\n prefix=\"yh-\"\n name=\"user\"></YhIcon>\n </template>\n </el-input>\n </el-form-item>\n <el-form-item prop=\"passwd\">\n <el-input\n type=\"password\"\n v-model=\"formValidate.passwd\"\n placeholder=\"请输入密码\"\n autocomplete=\"off\">\n <template #prefix>\n <YhIcon\n fontFamily=\"yhicon\"\n prefix=\"yh-\"\n name=\"lock\"></YhIcon>\n </template>\n </el-input>\n </el-form-item>\n <el-form-item>\n <el-button\n type=\"primary\"\n @click=\"submitLogin\"\n style=\"width: 100%\"\n :loading=\"loginLoading\">\n 登录\n </el-button>\n </el-form-item>\n </el-form>\n <p class=\"login-tip\"></p>\n </div>\n </div>\n </div>\n</template>\n<style lang=\"scss\" scoped>\n .login {\n position: relative;\n display: flex;\n flex-direction: column;\n min-height: 100vh;\n background-size: cover;\n background-position: center;\n --el-border-color: #ffffff;\n\n .back-entry {\n position: absolute;\n top: 20px;\n right: 20px;\n width: 40px;\n height: 40px;\n display: flex;\n align-items: center;\n justify-content: center;\n background: rgba(255, 255, 255, 0.1);\n border-radius: 8px;\n cursor: pointer;\n color: rgba(255, 255, 255, 0.7);\n transition: all 0.3s;\n z-index: 10;\n\n &:hover {\n background: rgba(255, 255, 255, 0.2);\n color: #ffffff;\n }\n\n i {\n font-size: 20px;\n }\n }\n\n &-content {\n flex: 1;\n display: flex;\n flex-direction: column;\n align-items: center;\n justify-content: center;\n gap: 40px;\n padding: 20px;\n }\n }\n\n .login-title {\n display: flex;\n align-items: center;\n justify-content: center;\n gap: 30px;\n\n .login-logo-placeholder {\n flex-shrink: 0;\n max-width: 80px;\n width: auto;\n height: auto;\n aspect-ratio: 1 / 1;\n object-fit: contain;\n visibility: hidden;\n }\n\n &-text {\n display: flex;\n flex-direction: column;\n align-items: center;\n }\n\n &-cn {\n font-size: 3rem;\n color: #fcfcfc;\n font-weight: bolder;\n }\n\n &-en {\n font-size: 1.5rem;\n color: #fcfcfc;\n font-family: 'Microsoft YaHei';\n }\n }\n\n .form-con {\n width: 100%;\n max-width: 600px;\n padding: 30px;\n backdrop-filter: blur(10px);\n border-radius: 8px;\n }\n\n .login-tip {\n font-size: 1rem;\n text-align: center;\n color: #ffa24a;\n min-height: 1.5em;\n margin-top: 10px;\n }\n</style>\n<script setup lang=\"ts\">\n import {ref, reactive} from 'vue';\n import {useRouter} from 'vue-router';\n import {useClientStore} from 'yh-client';\n import {useAppStore} from '../store';\n import {resetInitTasks, runInitTasks} from '../init';\n\n const router = useRouter();\n const clientStore = useClientStore();\n const appStore = useAppStore();\n const defaultLoginBg = new URL('../assets/images/login-bg.jpg', import.meta.url).href;\n\n const formValidate = reactive({\n name: '',\n passwd: '',\n });\n\n const ruleValidate = {\n name: [{required: true, message: '请输入用户名', trigger: 'blur'}],\n passwd: [{required: true, message: '请输入密码', trigger: 'blur'}],\n };\n\n const loginLoading = ref(false);\n const formRef = ref();\n\n async function submitLogin() {\n if (!formRef.value) return;\n\n const valid = await formRef.value.validate();\n if (!valid) return;\n\n loginLoading.value = true;\n try {\n await clientStore.saLogin({\n username: formValidate.name,\n password: formValidate.passwd,\n });\n\n // 重置并重新执行初始化任务(加载管理员信息、业务路由)\n resetInitTasks();\n await runInitTasks();\n\n const {ElMessage} = await import('element-plus');\n ElMessage.success('登录成功');\n\n router.push('/admin');\n } catch (e: any) {\n console.error(e);\n const {ElMessage} = await import('element-plus');\n ElMessage.error(e?.response?.data?.msg || e?.message || '登录失败');\n } finally {\n loginLoading.value = false;\n }\n }\n\n function goBackToMainLogin() {\n router.push('/login');\n }\n</script>\n"],"names":["router","useRouter","clientStore","useClientStore","appStore","useAppStore","defaultLoginBg","formValidate","reactive","ruleValidate","loginLoading","ref","formRef","submitLogin","resetInitTasks","runInitTasks","ElMessage","e","_b","_a","goBackToMainLogin","_createElementBlock","_normalizeStyle","_unref","_createElementVNode","_createVNode","_component_YhIcon","_hoisted_1","_hoisted_2","_component_el_form","_component_el_form_item","_component_el_input","_cache","$event","_component_el_button"],"mappings":"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"}
@@ -1,30 +0,0 @@
1
- import { defineComponent as r, openBlock as e, createBlock as c } from "vue";
2
- import { useRouter as n } from "vue-router";
3
- import { E as p } from "./Error-BZ9xAkuT.js";
4
- const f = /* @__PURE__ */ r({
5
- __name: "Error401",
6
- setup(a) {
7
- const t = n(), o = [
8
- {
9
- text: "返回上一页",
10
- type: "default",
11
- action: () => t.back()
12
- },
13
- {
14
- text: "返回首页",
15
- type: "primary",
16
- action: () => t.push("/")
17
- }
18
- ];
19
- return (s, i) => (e(), c(p, {
20
- code: "401",
21
- title: "未授权",
22
- description: "抱歉,您没有访问权限",
23
- buttons: o
24
- }));
25
- }
26
- });
27
- export {
28
- f as default
29
- };
30
- //# sourceMappingURL=Error401-DrA7Y9h3.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"Error401-DrA7Y9h3.js","sources":["../components/common/feedback/Error401.vue"],"sourcesContent":["<template>\n <Error\n code=\"401\"\n title=\"未授权\"\n description=\"抱歉,您没有访问权限\"\n :buttons=\"buttons\" />\n</template>\n\n<script setup lang=\"ts\">\nimport { useRouter } from \"vue-router\";\nimport Error from \"./Error.vue\";\nimport type { ErrorButton } from \"./Error.vue\";\n\nconst router = useRouter();\n\nconst buttons: ErrorButton[] = [\n {\n text: \"返回上一页\",\n type: \"default\",\n action: () => router.back(),\n },\n {\n text: \"返回首页\",\n type: \"primary\",\n action: () => router.push(\"/\"),\n },\n];\n</script>\n"],"names":["router","useRouter","buttons","_createBlock","Error"],"mappings":";;;;;;AAaA,UAAMA,IAASC,EAAA,GAETC,IAAyB;AAAA,MAC7B;AAAA,QACE,MAAM;AAAA,QACN,MAAM;AAAA,QACN,QAAQ,MAAMF,EAAO,KAAA;AAAA,MAAK;AAAA,MAE5B;AAAA,QACE,MAAM;AAAA,QACN,MAAM;AAAA,QACN,QAAQ,MAAMA,EAAO,KAAK,GAAG;AAAA,MAAA;AAAA,IAC/B;2BAxBAG,EAIuBC,GAAA;AAAA,MAHrB,MAAK;AAAA,MACL,OAAM;AAAA,MACN,aAAY;AAAA,MACX,SAAAF;AAAA,IAAA;;;"}
@@ -1,30 +0,0 @@
1
- import { defineComponent as r, openBlock as e, createBlock as c } from "vue";
2
- import { useRouter as n } from "vue-router";
3
- import { E as p } from "./Error-BZ9xAkuT.js";
4
- const f = /* @__PURE__ */ r({
5
- __name: "Error404",
6
- setup(a) {
7
- const t = n(), o = [
8
- {
9
- text: "返回上一页",
10
- type: "default",
11
- action: () => t.back()
12
- },
13
- {
14
- text: "返回首页",
15
- type: "primary",
16
- action: () => t.push("/")
17
- }
18
- ];
19
- return (s, i) => (e(), c(p, {
20
- code: "404",
21
- title: "页面不存在",
22
- description: "抱歉,您访问的页面不存在",
23
- buttons: o
24
- }));
25
- }
26
- });
27
- export {
28
- f as default
29
- };
30
- //# sourceMappingURL=Error404-C5K4o1R3.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"Error404-C5K4o1R3.js","sources":["../components/common/feedback/Error404.vue"],"sourcesContent":["<template>\n <Error\n code=\"404\"\n title=\"页面不存在\"\n description=\"抱歉,您访问的页面不存在\"\n :buttons=\"buttons\" />\n</template>\n\n<script setup lang=\"ts\">\nimport { useRouter } from \"vue-router\";\nimport Error from \"./Error.vue\";\nimport type { ErrorButton } from \"./Error.vue\";\n\nconst router = useRouter();\n\nconst buttons: ErrorButton[] = [\n {\n text: \"返回上一页\",\n type: \"default\",\n action: () => router.back(),\n },\n {\n text: \"返回首页\",\n type: \"primary\",\n action: () => router.push(\"/\"),\n },\n];\n</script>\n"],"names":["router","useRouter","buttons","_createBlock","Error"],"mappings":";;;;;;AAaA,UAAMA,IAASC,EAAA,GAETC,IAAyB;AAAA,MAC7B;AAAA,QACE,MAAM;AAAA,QACN,MAAM;AAAA,QACN,QAAQ,MAAMF,EAAO,KAAA;AAAA,MAAK;AAAA,MAE5B;AAAA,QACE,MAAM;AAAA,QACN,MAAM;AAAA,QACN,QAAQ,MAAMA,EAAO,KAAK,GAAG;AAAA,MAAA;AAAA,IAC/B;2BAxBAG,EAIuBC,GAAA;AAAA,MAHrB,MAAK;AAAA,MACL,OAAM;AAAA,MACN,aAAY;AAAA,MACX,SAAAF;AAAA,IAAA;;;"}
@@ -1,30 +0,0 @@
1
- import { defineComponent as r, openBlock as e, createBlock as c } from "vue";
2
- import { useRouter as n } from "vue-router";
3
- import { E as p } from "./Error-BZ9xAkuT.js";
4
- const f = /* @__PURE__ */ r({
5
- __name: "Error500",
6
- setup(a) {
7
- const t = n(), o = [
8
- {
9
- text: "返回上一页",
10
- type: "default",
11
- action: () => t.back()
12
- },
13
- {
14
- text: "返回首页",
15
- type: "primary",
16
- action: () => t.push("/")
17
- }
18
- ];
19
- return (s, i) => (e(), c(p, {
20
- code: "500",
21
- title: "服务器错误",
22
- description: "抱歉,服务器出了点问题",
23
- buttons: o
24
- }));
25
- }
26
- });
27
- export {
28
- f as default
29
- };
30
- //# sourceMappingURL=Error500-D9nu1xhW.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"Error500-D9nu1xhW.js","sources":["../components/common/feedback/Error500.vue"],"sourcesContent":["<template>\n <Error\n code=\"500\"\n title=\"服务器错误\"\n description=\"抱歉,服务器出了点问题\"\n :buttons=\"buttons\" />\n</template>\n\n<script setup lang=\"ts\">\nimport { useRouter } from \"vue-router\";\nimport Error from \"./Error.vue\";\nimport type { ErrorButton } from \"./Error.vue\";\n\nconst router = useRouter();\n\nconst buttons: ErrorButton[] = [\n {\n text: \"返回上一页\",\n type: \"default\",\n action: () => router.back(),\n },\n {\n text: \"返回首页\",\n type: \"primary\",\n action: () => router.push(\"/\"),\n },\n];\n</script>\n"],"names":["router","useRouter","buttons","_createBlock","Error"],"mappings":";;;;;;AAaA,UAAMA,IAASC,EAAA,GAETC,IAAyB;AAAA,MAC7B;AAAA,QACE,MAAM;AAAA,QACN,MAAM;AAAA,QACN,QAAQ,MAAMF,EAAO,KAAA;AAAA,MAAK;AAAA,MAE5B;AAAA,QACE,MAAM;AAAA,QACN,MAAM;AAAA,QACN,QAAQ,MAAMA,EAAO,KAAK,GAAG;AAAA,MAAA;AAAA,IAC/B;2BAxBAG,EAIuBC,GAAA;AAAA,MAHrB,MAAK;AAAA,MACL,OAAM;AAAA,MACN,aAAY;AAAA,MACX,SAAAF;AAAA,IAAA;;;"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"HomeIndex-DnGu5xD0.js","sources":["../layout/components/TrendChart.vue","../layout/HomeIndex.vue"],"sourcesContent":["<template>\n <div ref=\"dom\" :style=\"{ height: height }\"></div>\n</template>\n\n<script setup lang=\"ts\">\nimport { ref, onMounted, onBeforeUnmount } from 'vue';\nimport * as echarts from 'echarts';\n\ninterface SeriesData {\n name: string;\n data: number[];\n}\n\ninterface Props {\n xAxis?: string[];\n series?: SeriesData[];\n height?: string;\n}\n\nconst props = withDefaults(defineProps<Props>(), {\n xAxis: () => ['周一', '周二', '周三', '周四', '周五', '周六', '周日'],\n series: () => [\n { name: '入库量', data: [120, 132, 101, 134, 90, 230, 210] },\n { name: '出库量', data: [220, 182, 191, 234, 290, 330, 310] }\n ],\n height: '160px'\n});\n\nconst dom = ref<HTMLElement>();\n\nconst resize = () => {\n if (dom.value) {\n const chart = echarts.getInstanceByDom(dom.value);\n chart?.resize();\n }\n};\n\nonMounted(() => {\n if (!dom.value) return;\n\n const option = {\n tooltip: {\n trigger: 'axis',\n axisPointer: {\n type: 'cross',\n label: {\n backgroundColor: '#6a7985'\n }\n }\n },\n legend: {\n data: props.series.map(s => s.name)\n },\n grid: {\n top: '11%',\n left: '1.2%',\n right: '3%',\n bottom: '3%',\n containLabel: true\n },\n xAxis: {\n type: 'category',\n boundaryGap: false,\n data: props.xAxis\n },\n yAxis: {\n type: 'value'\n },\n series: props.series.map(s => ({\n name: s.name,\n type: 'line',\n stack: 'Total',\n data: s.data\n }))\n };\n\n const chart = echarts.init(dom.value);\n chart.setOption(option);\n window.addEventListener('resize', resize);\n});\n\nonBeforeUnmount(() => {\n window.removeEventListener('resize', resize);\n});\n</script>\n","<template>\n <el-row :gutter=\"24\">\n <el-col\n :span=\"24\"\n :md=\"24\"\n :lg=\"24\"\n style=\"color: rgb(126, 147, 187); font-size: 20px; font-weight: bold; text-align: center\">\n 仓库信息总览信息图\n </el-col>\n </el-row>\n <el-row :gutter=\"24\">\n <el-col\n :span=\"6\"\n :md=\"24\"\n :lg=\"6\"\n style=\"color: rgb(126, 147, 187); font-size: 16px; text-align: center\">\n 实时库存总数量\n </el-col>\n <el-col\n :span=\"6\"\n :md=\"24\"\n :lg=\"6\"\n style=\"color: rgb(126, 147, 187); font-size: 16px; text-align: center\">\n 空闲库位占比\n </el-col>\n <el-col\n :span=\"6\"\n :md=\"24\"\n :lg=\"6\"\n style=\"color: rgb(126, 147, 187); font-size: 16px; text-align: center\">\n 出入库记录趋势图\n </el-col>\n <el-col\n :span=\"6\"\n :md=\"24\"\n :lg=\"6\"\n style=\"color: rgb(126, 147, 187); font-size: 16px; text-align: center\">\n 呆滞库存数量\n </el-col>\n </el-row>\n <el-row\n :gutter=\"24\"\n style=\"margin-top: 10px\">\n <el-col\n :span=\"6\"\n :md=\"24\"\n :lg=\"6\"\n style=\"margin-bottom: 10px\">\n <el-card shadow=\"never\">\n <ChartBar\n style=\"height: 160px\"\n :data=\"barData\" />\n </el-card>\n </el-col>\n <el-col\n :span=\"6\"\n :md=\"24\"\n :lg=\"6\"\n style=\"margin-bottom: 10px\">\n <el-card shadow=\"never\">\n <ChartPie\n style=\"height: 160px\"\n :data=\"pieData\" />\n </el-card>\n </el-col>\n <el-col\n :span=\"6\"\n :md=\"24\"\n :lg=\"6\"\n style=\"margin-bottom: 10px\">\n <el-card shadow=\"never\">\n <TrendChart style=\"height: 160px\" />\n </el-card>\n </el-col>\n <el-col\n :span=\"6\"\n :md=\"24\"\n :lg=\"6\"\n style=\"margin-bottom: 10px\">\n <el-card shadow=\"never\">\n <ChartBar\n style=\"height: 160px\"\n :data=\"barData1\" />\n </el-card>\n </el-col>\n </el-row>\n <el-row :gutter=\"24\">\n <el-col\n :span=\"4\"\n :md=\"20\"\n :lg=\"4\"\n style=\"margin-bottom: 20px\">\n <el-card\n style=\"background-color: rgb(40, 65, 86)\"\n shadow=\"never\">\n <p style=\"text-align: center; color: white\">\n 0\n <br />\n 今日总单量\n </p>\n </el-card>\n </el-col>\n <el-col\n :span=\"4\"\n :md=\"20\"\n :lg=\"4\"\n style=\"margin-bottom: 20px\">\n <el-card\n style=\"background-color: rgb(0, 152, 139)\"\n shadow=\"never\">\n <p style=\"text-align: center; color: white\">\n 0\n <br />\n 待接收单量\n </p>\n </el-card>\n </el-col>\n <el-col\n :span=\"4\"\n :md=\"20\"\n :lg=\"4\"\n style=\"margin-bottom: 20px\">\n <el-card\n style=\"background-color: rgb(255, 181, 0)\"\n shadow=\"never\">\n <p style=\"text-align: center; color: white\">\n 0\n <br />\n 已入库单量\n </p>\n </el-card>\n </el-col>\n <el-col\n :span=\"4\"\n :md=\"20\"\n :lg=\"4\"\n style=\"margin-bottom: 20px\">\n <el-card\n style=\"background-color: rgb(0, 162, 255)\"\n shadow=\"never\">\n <p style=\"text-align: center; color: white\">\n 0\n <br />\n 待拣货单量\n </p>\n </el-card>\n </el-col>\n <el-col\n :span=\"4\"\n :md=\"20\"\n :lg=\"4\"\n style=\"margin-bottom: 20px\">\n <el-card\n style=\"background-color: rgb(255, 71, 0)\"\n shadow=\"never\">\n <p style=\"text-align: center; color: white\">\n 0\n <br />\n 已拣货单量\n </p>\n </el-card>\n </el-col>\n </el-row>\n <el-row>\n <el-table :data=\"data1\" style=\"width: 100%\">\n <el-table-column prop=\"code\" label=\"单据号\" />\n <el-table-column prop=\"type\" label=\"单据类型\" />\n <el-table-column prop=\"supplierName\" label=\"供应商名称\" />\n <el-table-column prop=\"warehouse\" label=\"仓库名称\" />\n <el-table-column prop=\"itemCode\" label=\"物料编码\" />\n <el-table-column prop=\"itemName\" label=\"物料名称\" />\n <el-table-column prop=\"lot\" label=\"批次号\" />\n <el-table-column prop=\"qty\" label=\"数量\" />\n <el-table-column prop=\"unit\" label=\"单位\" />\n <el-table-column prop=\"spec\" label=\"规格型号\" />\n </el-table>\n </el-row>\n</template>\n\n<script setup lang=\"ts\">\n import {ref, onMounted} from 'vue';\n import {ChartPie, ChartBar} from '../components/common/dataDisplay/echarts';\n import TrendChart from './components/TrendChart.vue';\n\n interface PieDataItem {\n name: string;\n value: number;\n }\n\n interface TableData {\n code: string;\n type: string;\n supplierName: string;\n warehouse: string;\n itemCode: string;\n itemName: string;\n lot: string;\n qty: string;\n unit: string;\n spec: string;\n }\n\n const pieData = ref<PieDataItem[]>([\n {value: 335, name: '占用'},\n {value: 1000, name: '总库位'},\n ]);\n\n const barData = ref<Record<string, number>>({\n 金刚线: 5001,\n 单晶硅片: 7200,\n 物料测试002: 600,\n 测试物料001: 1100,\n 测试物料003: 2000,\n });\n\n const barData1 = ref<Record<string, number>>({\n 五金配件库: 13253,\n 原料仓: 26321,\n 固废仓: 16321,\n });\n\n const data1: TableData[] = [\n {\n code: 'TCP2021093001',\n type: '采购入库',\n supplierName: '永乐集团',\n warehouse: '原料仓',\n itemCode: 'FB10001',\n itemName: '方棒',\n lot: '100001',\n qty: '1000',\n unit: '公斤',\n spec: '10*25',\n },\n {\n code: 'TCP2021093002',\n type: '采购入库',\n supplierName: '永乐集团',\n warehouse: '原料仓',\n itemCode: 'FB10002',\n itemName: '方棒',\n lot: '100002',\n qty: '1000',\n unit: '公斤',\n spec: '10*26',\n },\n ];\n\n onMounted(() => {\n // 可在此处调用 API 获取数据\n });\n</script>\n\n<style lang=\"less\">\n .count-style {\n font-size: 50px;\n }\n</style>\n"],"names":["props","__props","dom","ref","resize","chart","echarts.getInstanceByDom","onMounted","option","s","echarts.init","onBeforeUnmount","_createElementBlock","pieData","barData","barData1","data1","_createVNode","_component_el_row","_component_el_col","_cache","_component_el_card","_unref","ChartBar","ChartPie","TrendChart","_createElementVNode","_component_el_table","_component_el_table_column"],"mappings":"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"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"IconExplorer-IvNeUIhq.js","sources":["../layout/components/IconExplorer.vue"],"sourcesContent":["<template>\n <div class=\"icon-explorer-page\">\n <el-input\n v-model=\"keyword\"\n placeholder=\"输入中文、英文、拼音筛选\"\n allow-clear />\n\n <div\n v-loading=\"loading\"\n class=\"icon-grid-container\">\n <div\n v-for=\"item in filteredList\"\n :key=\"item.value\"\n class=\"icon-grid-item\"\n @click=\"copyIcon(item)\">\n <YhIcon\n :fontFamily=\"item.fontFamily\"\n :prefix=\"item.prefix\"\n :name=\"item.value\"></YhIcon>\n <span class=\"icon-name\">{{ item.value }}</span>\n </div>\n </div>\n </div>\n</template>\n\n<script setup lang=\"ts\">\n import {ref, computed, onMounted} from 'vue';\n import {ElMessage} from 'element-plus';\n import {getIconList, type IconItem} from '../../components/common/basic/iconData';\n\n const keyword = ref('');\n const loading = ref(false);\n const iconList = ref<IconItem[]>([]);\n\n // 搜索过滤\n const filteredList = computed(() => {\n const kw = keyword.value.toLowerCase();\n if (!kw) return iconList.value;\n return iconList.value.filter(\n (item) =>\n (item.label && item.label.toLowerCase().includes(kw)) ||\n (item.value && item.value.toLowerCase().includes(kw)) ||\n (item.pinyinFull && item.pinyinFull.includes(kw)) ||\n (item.pinyinFirst && item.pinyinFirst.includes(kw))\n );\n });\n\n // 剪贴板复制(含 fallback)\n function copyToClipboard(text: string) {\n if (navigator.clipboard) {\n navigator.clipboard.writeText(text);\n return;\n }\n // fallback:textarea 选区复制\n const textarea = document.createElement('textarea');\n textarea.value = text;\n textarea.style.position = 'fixed';\n textarea.style.opacity = '0';\n document.body.appendChild(textarea);\n textarea.select();\n document.execCommand('copy');\n document.body.removeChild(textarea);\n }\n\n function copyIcon(item: IconItem) {\n const code = `<YhIcon fontFamily=\"${item.fontFamily}\" prefix=\"${item.prefix}\" name=\"${item.value}\"></YhIcon>`;\n copyToClipboard(code);\n ElMessage.success(`已复制: ${code}`);\n }\n\n // 页面加载时获取图标数据\n onMounted(async () => {\n if (iconList.value.length > 0) return;\n loading.value = true;\n try {\n iconList.value = await getIconList();\n } finally {\n loading.value = false;\n }\n });\n</script>\n\n<style lang=\"scss\" scoped>\n .icon-explorer-page {\n height: 100%;\n overflow: hidden;\n box-sizing: border-box;\n padding: 20px;\n display: flex;\n flex-direction: column;\n }\n .icon-grid-container {\n flex: 1;\n overflow: auto;\n margin-top: 16px;\n display: flex;\n flex-wrap: wrap;\n align-content: flex-start;\n }\n\n .icon-grid-item {\n display: flex;\n flex-direction: column;\n align-items: center;\n justify-content: center;\n width: 88px;\n height: 88px;\n cursor: pointer;\n border-radius: 6px;\n transition: all 0.2s;\n\n &:hover {\n transform: scale(1.2);\n background: #f0f2f5;\n }\n\n i {\n font-size: 48px;\n }\n\n .icon-name {\n margin-top: 4px;\n font-size: 11px;\n color: #999;\n max-width: 80px;\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n }\n }\n</style>\n"],"names":["keyword","ref","loading","iconList","filteredList","computed","kw","item","copyToClipboard","text","textarea","copyIcon","code","ElMessage","onMounted","getIconList","_openBlock","_createElementBlock","_hoisted_1","_createVNode","_component_el_input","$event","_withDirectives","_hoisted_2","_Fragment","_renderList","_component_YhIcon","_createElementVNode","_hoisted_4","_toDisplayString"],"mappings":";;;;;;AA8BE,UAAMA,IAAUC,EAAI,EAAE,GAChBC,IAAUD,EAAI,EAAK,GACnBE,IAAWF,EAAgB,EAAE,GAG7BG,IAAeC,EAAS,MAAM;AAClC,YAAMC,IAAKN,EAAQ,MAAM,YAAA;AACzB,aAAKM,IACEH,EAAS,MAAM;AAAA,QACpB,CAACI,MACEA,EAAK,SAASA,EAAK,MAAM,YAAA,EAAc,SAASD,CAAE,KAClDC,EAAK,SAASA,EAAK,MAAM,YAAA,EAAc,SAASD,CAAE,KAClDC,EAAK,cAAcA,EAAK,WAAW,SAASD,CAAE,KAC9CC,EAAK,eAAeA,EAAK,YAAY,SAASD,CAAE;AAAA,MAAA,IANrCH,EAAS;AAAA,IAQ3B,CAAC;AAGD,aAASK,EAAgBC,GAAc;AACrC,UAAI,UAAU,WAAW;AACvB,kBAAU,UAAU,UAAUA,CAAI;AAClC;AAAA,MACF;AAEA,YAAMC,IAAW,SAAS,cAAc,UAAU;AAClD,MAAAA,EAAS,QAAQD,GACjBC,EAAS,MAAM,WAAW,SAC1BA,EAAS,MAAM,UAAU,KACzB,SAAS,KAAK,YAAYA,CAAQ,GAClCA,EAAS,OAAA,GACT,SAAS,YAAY,MAAM,GAC3B,SAAS,KAAK,YAAYA,CAAQ;AAAA,IACpC;AAEA,aAASC,EAASJ,GAAgB;AAChC,YAAMK,IAAO,uBAAuBL,EAAK,UAAU,aAAaA,EAAK,MAAM,WAAWA,EAAK,KAAK;AAChG,MAAAC,EAAgBI,CAAI,GACpBC,EAAU,QAAQ,QAAQD,CAAI,EAAE;AAAA,IAClC;AAGA,WAAAE,EAAU,YAAY;AACpB,UAAI,EAAAX,EAAS,MAAM,SAAS,IAC5B;AAAA,QAAAD,EAAQ,QAAQ;AAChB,YAAI;AACF,UAAAC,EAAS,QAAQ,MAAMY,EAAA;AAAA,QACzB,UAAA;AACE,UAAAb,EAAQ,QAAQ;AAAA,QAClB;AAAA;AAAA,IACF,CAAC;;AA9ED,aAAAc,EAAA,GAAAC,EAqBM,OArBNC,GAqBM;AAAA,QApBJC,EAGgBC,GAAA;AAAA,sBAFLpB,EAAA;AAAA,wDAAAA,EAAO,QAAAqB;AAAA,UAChB,aAAY;AAAA,UACZ,eAAA;AAAA,QAAA;QAEFC,GAAAN,EAAA,GAAAC,EAcM,OAdNM,GAcM;AAAA,kBAXJN,EAUMO,GAAA,MAAAC,EATWrB,EAAA,OAAY,CAApBG,YADTU,EAUM,OAAA;AAAA,YARH,KAAKV,EAAK;AAAA,YACX,OAAM;AAAA,YACL,SAAK,CAAAc,MAAEV,EAASJ,CAAI;AAAA,UAAA;YACrBY,EAG8BO,GAAA;AAAA,cAF3B,YAAYnB,EAAK;AAAA,cACjB,QAAQA,EAAK;AAAA,cACb,MAAMA,EAAK;AAAA,YAAA;YACdoB,EAA+C,QAA/CC,GAA+CC,EAApBtB,EAAK,KAAK,GAAA,CAAA;AAAA,UAAA;;cAX5BL,EAAA,KAAO;AAAA,QAAA;;;;;"}
package/Index-BMd4lEnI.js DELETED
@@ -1,5 +0,0 @@
1
- import { b as f } from "./index-C75ufNln.js";
2
- export {
3
- f as default
4
- };
5
- //# sourceMappingURL=Index-BMd4lEnI.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"Index-BMd4lEnI.js","sources":[],"sourcesContent":[],"names":[],"mappings":";"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"MainLogin-CgJLift-.js","sources":["../layout/MainLogin.vue"],"sourcesContent":["<template>\n <div\n class=\"login\"\n :style=\"{backgroundImage: `url(${appStore.loginBg || defaultLoginBg})`}\">\n <!-- 右上角后台管理入口 -->\n <div\n class=\"admin-entry\"\n @click=\"goToAdminLogin\"\n title=\"后台管理\">\n <YhIcon\n fontFamily=\"yhicon\"\n prefix=\"yh-\"\n name=\"setting\"></YhIcon>\n </div>\n <div class=\"login-content\">\n <div class=\"login-title\">\n <img\n class=\"login-logo\"\n :src=\"appStore.miniLogoUrl || defaultLogo\"\n alt=\"力控元海\" />\n <div class=\"login-title-text\">\n <div class=\"login-title-cn\">{{ title || '力控元海' }}</div>\n <div class=\"login-title-en\">{{ titleEn || 'ANYHAI' }}</div>\n </div>\n </div>\n <div class=\"form-con\">\n <el-form\n ref=\"loginForm\"\n :model=\"form\"\n :rules=\"rules\"\n size=\"large\"\n layout=\"inline\"\n @keydown.enter=\"handleSubmit\">\n <el-form-item prop=\"username\">\n <el-input\n ref=\"username\"\n v-model=\"form.username\"\n size=\"large\"\n placeholder=\"请输入用户名\">\n <template #prefix>\n <YhIcon\n fontFamily=\"yhicon\"\n prefix=\"yh-\"\n name=\"user\"></YhIcon>\n </template>\n </el-input>\n </el-form-item>\n <el-form-item prop=\"password\">\n <el-input\n ref=\"password\"\n type=\"password\"\n size=\"large\"\n v-model=\"form.password\"\n placeholder=\"请输入密码\"\n style=\"line-height: 40px\">\n <template #prefix>\n <YhIcon\n fontFamily=\"yhicon\"\n prefix=\"yh-\"\n name=\"lock\"></YhIcon>\n </template>\n </el-input>\n </el-form-item>\n <el-form-item>\n <el-button\n @click=\"handleSubmit\"\n type=\"primary\"\n style=\"width: 100%\"\n size=\"large\"\n :loading=\"loading\">\n 登录\n </el-button>\n </el-form-item>\n </el-form>\n <p class=\"login-tip\">{{ errorMsg }}</p>\n </div>\n </div>\n </div>\n</template>\n\n<script setup lang=\"ts\">\n import {ElMessage} from 'element-plus';\n import {ref, reactive, onMounted} from 'vue';\n import {useRouter} from 'vue-router';\n import {useClientStore, getConfig} from 'yh-client';\n import {useAppStore} from '../store';\n import {resetInitTasks, runInitTasks} from '../init';\n\n const router = useRouter();\n const clientStore = useClientStore();\n const appStore = useAppStore();\n\n // 默认 logo\n const defaultLogo = new URL('../assets/images/logo-mini.png', import.meta.url).href;\n const defaultLoginBg = new URL('../assets/images/login-bg.jpg', import.meta.url).href;\n\n // 标题配置\n const title = ref('');\n const titleEn = ref('');\n\n // 初始化时获取配置\n onMounted(() => {\n title.value = getConfig('title');\n titleEn.value = getConfig('titleEn');\n });\n\n const loginForm = ref();\n\n const errorMsg = ref('');\n const loading = ref(false);\n\n interface Form {\n username: string;\n password: string;\n }\n\n const form = reactive<Form>({\n username: '',\n password: '',\n });\n\n const rules = reactive({\n username: [{required: true, message: '账号不能为空', trigger: 'blur'}],\n password: [{required: true, message: '密码不能为空', trigger: 'blur'}],\n });\n\n async function handleSubmit() {\n if (!loginForm.value) return;\n\n const valid = await loginForm.value.validate();\n if (!valid) return;\n\n loading.value = true;\n errorMsg.value = '';\n\n try {\n // 登录\n await clientStore.login({\n username: form.username,\n password: form.password,\n });\n\n // 重置并重新执行初始化任务(加载用户信息、业务路由)\n resetInitTasks();\n await runInitTasks();\n\n ElMessage.success('登录成功');\n router.push('/');\n } catch (e: any) {\n console.error(e);\n errorMsg.value = e?.response?.data?.msg || e?.message || '登录失败';\n } finally {\n loading.value = false;\n }\n }\n\n function goToAdminLogin() {\n router.push('/admin/login');\n }\n</script>\n\n<style lang=\"scss\">\n .login {\n position: relative;\n display: flex;\n flex-direction: column;\n min-height: 100vh;\n background-size: cover;\n background-position: center;\n --el-border-color: #ffffff;\n\n .admin-entry {\n position: absolute;\n top: 20px;\n right: 20px;\n width: 40px;\n height: 40px;\n display: flex;\n align-items: center;\n justify-content: center;\n background: rgba(255, 255, 255, 0.1);\n border-radius: 8px;\n cursor: pointer;\n color: rgba(255, 255, 255, 0.7);\n transition: all 0.3s;\n z-index: 10;\n\n &:hover {\n background: rgba(255, 255, 255, 0.2);\n color: #ffffff;\n }\n\n i {\n font-size: 20px;\n }\n }\n\n &-content {\n flex: 1;\n display: flex;\n flex-direction: column;\n align-items: center;\n justify-content: center;\n gap: 40px;\n padding: 20px;\n }\n\n .login-title {\n display: flex;\n align-items: center;\n justify-content: center;\n gap: 30px;\n\n .login-logo {\n flex-shrink: 0;\n max-width: 80px;\n width: auto;\n height: auto;\n aspect-ratio: 1 / 1;\n object-fit: contain;\n }\n\n &-text {\n display: flex;\n flex-direction: column;\n align-items: center;\n }\n\n &-cn {\n font-size: 3rem;\n color: #fcfcfc;\n font-weight: bolder;\n }\n\n &-en {\n font-size: 1.5rem;\n color: #fcfcfc;\n font-family: 'Microsoft YaHei';\n }\n }\n\n .form-con {\n width: 100%;\n max-width: 600px;\n padding: 30px;\n backdrop-filter: blur(10px);\n border-radius: 8px;\n }\n\n .login-tip {\n font-size: 1rem;\n text-align: center;\n color: #ffa24a;\n min-height: 1.5em;\n margin-top: 10px;\n }\n\n &-info {\n padding: 40px 0;\n display: flex;\n justify-content: center;\n align-items: center;\n gap: 30px;\n\n &-item {\n text-align: center;\n }\n\n &-icon {\n width: 70px;\n height: 70px;\n border-radius: 35px;\n background-color: #fcfcfc;\n display: inline-flex;\n justify-content: center;\n align-items: center;\n\n i {\n font-size: 40px;\n color: #3e99fd;\n }\n }\n\n &-text {\n font-size: 1rem;\n color: #ffffff;\n margin-top: 10px;\n }\n }\n }\n</style>\n"],"names":["router","useRouter","clientStore","useClientStore","appStore","useAppStore","defaultLogo","defaultLoginBg","title","ref","titleEn","onMounted","getConfig","loginForm","errorMsg","loading","form","reactive","rules","handleSubmit","resetInitTasks","runInitTasks","ElMessage","e","_b","_a","goToAdminLogin","_createElementBlock","_normalizeStyle","_unref","_createElementVNode","_createVNode","_component_YhIcon","_hoisted_1","_hoisted_2","_hoisted_4","_hoisted_5","_toDisplayString","_hoisted_6","_hoisted_7","_component_el_form","_component_el_form_item","_component_el_input","_cache","$event","_component_el_button","_hoisted_8"],"mappings":"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"}