From a9e4d032eb46debe2891c09c01cb017901717d37 Mon Sep 17 00:00:00 2001 From: herenshan112 Date: Mon, 17 Nov 2025 08:18:59 +0800 Subject: [PATCH 1/3] =?UTF-8?q?=E4=BF=AE=E6=94=B9=E6=9D=83=E9=99=90?= =?UTF-8?q?=E8=AE=BE=E7=BD=AE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/api/system/roleapi/postrole.ts | 37 + src/api/system/roleapi/power.ts | 13 + src/api/system/roleapi/types.ts | 37 + .../rolepower/setuprole/setuprolepower.vue | 3 + .../system/monitor/online/index copy 4.vue | 865 +++++++++++++++++ src/views/system/monitor/online/index.vue | 351 +------ src/views/system/monitor/online/index123.vue | 903 ++++++++++++++++++ src/views/system/monitor/online/index2.vue | 823 ++++++++++++++++ .../{index copy.vue => index_20251112.vue} | 0 src/views/system/monitor/online/page.vue | 283 ++++++ .../lowcodepage/pageFlow/appTableFlow.vue | 2 +- ....timestamp-1762732876054-97f8b5f7ef739.mjs | 215 +++++ 12 files changed, 3187 insertions(+), 345 deletions(-) create mode 100644 src/api/system/roleapi/power.ts create mode 100644 src/views/system/monitor/online/index copy 4.vue create mode 100644 src/views/system/monitor/online/index123.vue create mode 100644 src/views/system/monitor/online/index2.vue rename src/views/system/monitor/online/{index copy.vue => index_20251112.vue} (100%) create mode 100644 src/views/system/monitor/online/page.vue create mode 100644 vite.config.ts.timestamp-1762732876054-97f8b5f7ef739.mjs diff --git a/src/api/system/roleapi/postrole.ts b/src/api/system/roleapi/postrole.ts index e059889..a2e7874 100644 --- a/src/api/system/roleapi/postrole.ts +++ b/src/api/system/roleapi/postrole.ts @@ -103,6 +103,13 @@ export function gainAppTableList(data?: any){ data:data }); } +export function gainAppTableListNew(data?: any){ + return request({ + url: '/systemapi/grant/gainAppTableListNew', + method: 'post', + data:data + }); +} /** * 获取指定角色授权 */ @@ -113,3 +120,33 @@ export function setpAppTableForms(data?: any){ data:data }); } +/** + * 获取首层子行政组织和本组织下的人员 + */ +export function getMyPeoplceAndSunOrg(data?: any){ + return request({ + url: '/systemapi/authorize/getMyPeoplceAndSunOrg', + method: 'post', + data:data + }); +} +/** + * 获取首层子行政组织和本组织下的岗位及人员 + */ +export function getMyPeopleAndSunOrgPost(data?: any){ + return request({ + url: '/systemapi/authorize/getMyPeopleAndSunOrgPost', + method: 'post', + data:data + }); +} +/** + * 获取人员 + */ +export function getPowerPageUser(data?: any){ + return request({ + url: '/systemapi/authorize/getPowerPageUser', + method: 'post', + data:data + }); +} diff --git a/src/api/system/roleapi/power.ts b/src/api/system/roleapi/power.ts new file mode 100644 index 0000000..d629c11 --- /dev/null +++ b/src/api/system/roleapi/power.ts @@ -0,0 +1,13 @@ +import request from "@/utils/request"; +import { getSystemPower } from "./types"; + +/** + * 获取平台授权项目 + */ + export function appPowerUnit(data: getSystemPower){ + return request({ + url: '/systemapi/authorize/appPowerUnit', + method: 'post', + data:data + }); +} diff --git a/src/api/system/roleapi/types.ts b/src/api/system/roleapi/types.ts index 50ab1cc..630c9af 100644 --- a/src/api/system/roleapi/types.ts +++ b/src/api/system/roleapi/types.ts @@ -285,3 +285,40 @@ export interface custerAppTablePower extends custerAppInfo{ attribute:number[] }; } + +//获取平台授权项目 +export interface getSystemPower{ + powerType:string; + appType:string; + appSystem:string; + roleId:string; +} + + +// 平台授权结构体 +export interface AppPowerInfo { + id :number; + name :string; //菜单名称 + types :number; + perm :number; + sort :number; + parentId :number; + isTrue :boolean; +} + +// 分流 +export interface AppMenuBut extends AppPowerInfo { + buttenPower:AppPowerInfo[] +} + +// 平台授权结构树 +export interface AppPowerTree extends AppMenuBut { + children:AppPowerTree[] + visible :number; + visibleRange:VisibleRangeInfo[]; //当可见范围为自定义范围时。此辅助选项生效 +} + +export interface VisibleRangeInfo { + types:number; + val:string; +} diff --git a/src/views/powermanage/rolepower/setuprole/setuprolepower.vue b/src/views/powermanage/rolepower/setuprole/setuprolepower.vue index 72a164e..a386767 100644 --- a/src/views/powermanage/rolepower/setuprole/setuprolepower.vue +++ b/src/views/powermanage/rolepower/setuprole/setuprolepower.vue @@ -385,6 +385,7 @@ const pickOrgIdClick = () => { v-for="itemes in appList" :class="itemes.signCode == activeAppId ? 'active' : ''" @click="pickAppList(itemes)" + :key="itemes.id" > {{ itemes.name }} @@ -406,6 +407,7 @@ const pickOrgIdClick = () => { v-for="itemes in appList" :class="itemes.signCode == activeAppId ? 'active' : ''" @click="pickAppList(itemes)" + :key="itemes.id" > {{ itemes.name }} @@ -590,4 +592,5 @@ const pickOrgIdClick = () => { background-color: #a0cfff; } } + diff --git a/src/views/system/monitor/online/index copy 4.vue b/src/views/system/monitor/online/index copy 4.vue new file mode 100644 index 0000000..93caa87 --- /dev/null +++ b/src/views/system/monitor/online/index copy 4.vue @@ -0,0 +1,865 @@ + + + + diff --git a/src/views/system/monitor/online/index.vue b/src/views/system/monitor/online/index.vue index 47d6d78..08db74b 100644 --- a/src/views/system/monitor/online/index.vue +++ b/src/views/system/monitor/online/index.vue @@ -1,355 +1,18 @@ diff --git a/src/views/system/monitor/online/index123.vue b/src/views/system/monitor/online/index123.vue new file mode 100644 index 0000000..202d4b1 --- /dev/null +++ b/src/views/system/monitor/online/index123.vue @@ -0,0 +1,903 @@ + + + + diff --git a/src/views/system/monitor/online/index2.vue b/src/views/system/monitor/online/index2.vue new file mode 100644 index 0000000..dbe2f5c --- /dev/null +++ b/src/views/system/monitor/online/index2.vue @@ -0,0 +1,823 @@ + + + + diff --git a/src/views/system/monitor/online/index copy.vue b/src/views/system/monitor/online/index_20251112.vue similarity index 100% rename from src/views/system/monitor/online/index copy.vue rename to src/views/system/monitor/online/index_20251112.vue diff --git a/src/views/system/monitor/online/page.vue b/src/views/system/monitor/online/page.vue new file mode 100644 index 0000000..bce0bb3 --- /dev/null +++ b/src/views/system/monitor/online/page.vue @@ -0,0 +1,283 @@ + + + + diff --git a/src/views/sysworkflow/lowcodepage/pageFlow/appTableFlow.vue b/src/views/sysworkflow/lowcodepage/pageFlow/appTableFlow.vue index dc6670c..8e2c7d4 100644 --- a/src/views/sysworkflow/lowcodepage/pageFlow/appTableFlow.vue +++ b/src/views/sysworkflow/lowcodepage/pageFlow/appTableFlow.vue @@ -1,7 +1,7 @@ - diff --git a/src/views/hr/archives/index_251128.vue b/src/views/hr/archives/index_251128.vue new file mode 100644 index 0000000..921f7c4 --- /dev/null +++ b/src/views/hr/archives/index_251128.vue @@ -0,0 +1,1465 @@ + + + + diff --git a/src/views/system/monitor/online/index.vue b/src/views/system/monitor/online/index.vue index 08db74b..8ddbfdc 100644 --- a/src/views/system/monitor/online/index.vue +++ b/src/views/system/monitor/online/index.vue @@ -4,15 +4,1063 @@ @ 备注: --> - - {{ openOrClose }}======={{ openclosebox }} + @@ -200,4 +199,4 @@ const updateNode = (val:any) =>{ display:block; cursor:pointer; } - + diff --git a/vite.config.ts.timestamp-1763685117626-b9e83b063ec3.mjs b/vite.config.ts.timestamp-1763685117626-b9e83b063ec3.mjs new file mode 100644 index 0000000..6ffe830 --- /dev/null +++ b/vite.config.ts.timestamp-1763685117626-b9e83b063ec3.mjs @@ -0,0 +1,215 @@ +// vite.config.ts +import vue from "file:///E:/f_pang/object/my_object_html/ShutongInterconnectedChemicalCloudPlatform/node_modules/@vitejs/plugin-vue/dist/index.mjs"; +import { loadEnv, defineConfig } from "file:///E:/f_pang/object/my_object_html/ShutongInterconnectedChemicalCloudPlatform/node_modules/vite/dist/node/index.js"; +import AutoImport from "file:///E:/f_pang/object/my_object_html/ShutongInterconnectedChemicalCloudPlatform/node_modules/unplugin-auto-import/dist/vite.js"; +import Components from "file:///E:/f_pang/object/my_object_html/ShutongInterconnectedChemicalCloudPlatform/node_modules/unplugin-vue-components/dist/vite.mjs"; +import { ElementPlusResolver } from "file:///E:/f_pang/object/my_object_html/ShutongInterconnectedChemicalCloudPlatform/node_modules/unplugin-vue-components/dist/resolvers.mjs"; +import Icons from "file:///E:/f_pang/object/my_object_html/ShutongInterconnectedChemicalCloudPlatform/node_modules/unplugin-icons/dist/vite.mjs"; +import IconsResolver from "file:///E:/f_pang/object/my_object_html/ShutongInterconnectedChemicalCloudPlatform/node_modules/unplugin-icons/dist/resolver.mjs"; +import { createSvgIconsPlugin } from "file:///E:/f_pang/object/my_object_html/ShutongInterconnectedChemicalCloudPlatform/node_modules/vite-plugin-svg-icons/dist/index.mjs"; +import UnoCSS from "file:///E:/f_pang/object/my_object_html/ShutongInterconnectedChemicalCloudPlatform/node_modules/unocss/dist/vite.mjs"; +import { terser } from "file:///E:/f_pang/object/my_object_html/ShutongInterconnectedChemicalCloudPlatform/node_modules/rollup-plugin-terser/rollup-plugin-terser.mjs"; +import path from "path"; +var __vite_injected_original_dirname = "E:\\f_pang\\object\\my_object_html\\ShutongInterconnectedChemicalCloudPlatform"; +var pathSrc = path.resolve(__vite_injected_original_dirname, "src"); +var vite_config_default = defineConfig(({ mode }) => { + const env = loadEnv(mode, process.cwd()); + return { + resolve: { + alias: { + "@": pathSrc + } + }, + css: { + // CSS 预处理器 + preprocessorOptions: { + //define global scss variable + scss: { + javascriptEnabled: true, + additionalData: ` + @use "@/styles/variables.scss" as *; + ` + } + } + }, + server: { + host: "0.0.0.0", + port: Number(env.VITE_APP_PORT), + open: true, + // 运行是否自动打开浏览器 + proxy: { + // 反向代理解决跨域 + [env.VITE_APP_BASE_API]: { + target: env.VITE_APP_BASE_URL, + // 线上接口地址 + // target: "http://vapi.youlai.tech", // 线上接口地址 + // target: 'http://localhost:8989', // 本地接口地址 , 后端工程仓库地址:https://gitee.com/youlaiorg/youlai-boot + changeOrigin: true, + rewrite: (path2) => path2.replace(new RegExp("^" + env.VITE_APP_BASE_API), "") + // 替换 /dev-api 为 target 接口地址 + } + // '/dev-api/kpiapi': { + // target: 'http://127.0.0.1:6666', + // changeOrigin: true, + // rewrite: (path) => + // path.replace(new RegExp("^" + '/dev-api/kpiapi'), ""), + // }, + // '/dev-api/systemapi': { + // target: 'http://127.0.0.1:17777', + // changeOrigin: true, + // rewrite: (path) => + // path.replace(new RegExp("^" + '/dev-api/systemapi'), ""), + // }, + // '/dev-api/hrapi': { + // target: 'http://127.0.0.1:39168', + // changeOrigin: true, + // rewrite: (path) => + // path.replace(new RegExp("^" + '/dev-api/hrapi'), ""), + // }, + // '/dev-api/api': { + // target: 'http://127.0.0.1:8888', + // changeOrigin: true, + // rewrite: (path) => + // path.replace(new RegExp("^" + '/dev-api/api'), ""), + // }, + // '/dev-api/javasys': { + // target: 'http://172.20.2.87:8111', + // changeOrigin: true, + // rewrite: (path) => + // path.replace(new RegExp("^" + '/dev-api/javasys'), ""), + // }, + // '/dev-api/javasys/lowCode ': { + // target: 'http://172.20.2.87:8112', + // changeOrigin: true, + // rewrite: (path) => + // path.replace(new RegExp("^" + '/dev-api/javasys/lowCode '), ""), + // } + } + }, + plugins: [ + vue(), + UnoCSS({ + /* options */ + }), + AutoImport({ + // 自动导入 Vue 相关函数,如:ref, reactive, toRef 等 + imports: ["vue", "@vueuse/core"], + //ignore: ['h'], // 自动添加 import { h } from '/node_modules/.vite/deps/vue.js 代码问题处理 + eslintrc: { + enabled: false, + // Default `false` + filepath: "./.eslintrc-auto-import.json", + // Default `./.eslintrc-auto-import.json` + globalsPropValue: true + // Default `true`, (true | false | 'readonly' | 'readable' | 'writable' | 'writeable') + }, + resolvers: [ + // 自动导入 Element Plus 相关函数,如:ElMessage, ElMessageBox... (带样式) + ElementPlusResolver(), + // 自动导入图标组件 + IconsResolver({}) + ], + vueTemplate: true, + // 是否在 vue 模板中自动导入 + dts: path.resolve(pathSrc, "types", "auto-imports.d.ts") + // 自动导入组件类型声明文件位置,默认根目录; false 关闭自动生成 + }), + Components({ + resolvers: [ + // 自动注册图标组件 + IconsResolver({ + enabledCollections: ["ep"] + //@iconify-json/ep 是 Element Plus 的图标库 + }), + // 自动导入 Element Plus 组件 + ElementPlusResolver() + ], + dts: path.resolve(pathSrc, "types", "components.d.ts") + // 自动导入组件类型声明文件位置,默认根目录; false 关闭自动生成 + }), + Icons({ + // 自动安装图标库 + autoInstall: true + }), + createSvgIconsPlugin({ + // 指定需要缓存的图标文件夹 + iconDirs: [path.resolve(pathSrc, "assets/icons")], + // 指定symbolId格式 + symbolId: "icon-[dir]-[name]" + }) + ], + build: { + terserOptions: { + compress: { + drop_console: true + // 关闭所有的 console.log 打印 + } + }, + rollupOptions: { + plugins: [ + terser({ + compress: { + drop_console: true + // 关闭所有的 console.log 打印 + } + }) + ] + } + }, + optimizeDeps: { + include: [ + "vue", + "vue-router", + "pinia", + "axios", + "element-plus/es/components/form/style/css", + "element-plus/es/components/form-item/style/css", + "element-plus/es/components/button/style/css", + "element-plus/es/components/input/style/css", + "element-plus/es/components/input-number/style/css", + "element-plus/es/components/switch/style/css", + "element-plus/es/components/upload/style/css", + "element-plus/es/components/menu/style/css", + "element-plus/es/components/col/style/css", + "element-plus/es/components/icon/style/css", + "element-plus/es/components/row/style/css", + "element-plus/es/components/tag/style/css", + "element-plus/es/components/dialog/style/css", + "element-plus/es/components/loading/style/css", + "element-plus/es/components/radio/style/css", + "element-plus/es/components/radio-group/style/css", + "element-plus/es/components/popover/style/css", + "element-plus/es/components/scrollbar/style/css", + "element-plus/es/components/tooltip/style/css", + "element-plus/es/components/dropdown/style/css", + "element-plus/es/components/dropdown-menu/style/css", + "element-plus/es/components/dropdown-item/style/css", + "element-plus/es/components/sub-menu/style/css", + "element-plus/es/components/menu-item/style/css", + "element-plus/es/components/divider/style/css", + "element-plus/es/components/card/style/css", + "element-plus/es/components/link/style/css", + "element-plus/es/components/breadcrumb/style/css", + "element-plus/es/components/breadcrumb-item/style/css", + "element-plus/es/components/table/style/css", + "element-plus/es/components/tree-select/style/css", + "element-plus/es/components/table-column/style/css", + "element-plus/es/components/select/style/css", + "element-plus/es/components/option/style/css", + "element-plus/es/components/pagination/style/css", + "element-plus/es/components/tree/style/css", + "element-plus/es/components/alert/style/css", + "@vueuse/core", + "path-to-regexp", + "echarts", + "@wangeditor/editor", + "@wangeditor/editor-for-vue", + "vue-i18n" + ] + } + }; +}); +export { + vite_config_default as default +}; +//# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsidml0ZS5jb25maWcudHMiXSwKICAic291cmNlc0NvbnRlbnQiOiBbImNvbnN0IF9fdml0ZV9pbmplY3RlZF9vcmlnaW5hbF9kaXJuYW1lID0gXCJFOlxcXFxmX3BhbmdcXFxcb2JqZWN0XFxcXG15X29iamVjdF9odG1sXFxcXFNodXRvbmdJbnRlcmNvbm5lY3RlZENoZW1pY2FsQ2xvdWRQbGF0Zm9ybVwiO2NvbnN0IF9fdml0ZV9pbmplY3RlZF9vcmlnaW5hbF9maWxlbmFtZSA9IFwiRTpcXFxcZl9wYW5nXFxcXG9iamVjdFxcXFxteV9vYmplY3RfaHRtbFxcXFxTaHV0b25nSW50ZXJjb25uZWN0ZWRDaGVtaWNhbENsb3VkUGxhdGZvcm1cXFxcdml0ZS5jb25maWcudHNcIjtjb25zdCBfX3ZpdGVfaW5qZWN0ZWRfb3JpZ2luYWxfaW1wb3J0X21ldGFfdXJsID0gXCJmaWxlOi8vL0U6L2ZfcGFuZy9vYmplY3QvbXlfb2JqZWN0X2h0bWwvU2h1dG9uZ0ludGVyY29ubmVjdGVkQ2hlbWljYWxDbG91ZFBsYXRmb3JtL3ZpdGUuY29uZmlnLnRzXCI7aW1wb3J0IHZ1ZSBmcm9tIFwiQHZpdGVqcy9wbHVnaW4tdnVlXCI7XHJcblxyXG5pbXBvcnQgeyBVc2VyQ29uZmlnLCBDb25maWdFbnYsIGxvYWRFbnYsIGRlZmluZUNvbmZpZyB9IGZyb20gXCJ2aXRlXCI7XHJcblxyXG5pbXBvcnQgQXV0b0ltcG9ydCBmcm9tIFwidW5wbHVnaW4tYXV0by1pbXBvcnQvdml0ZVwiO1xyXG5pbXBvcnQgQ29tcG9uZW50cyBmcm9tIFwidW5wbHVnaW4tdnVlLWNvbXBvbmVudHMvdml0ZVwiO1xyXG5pbXBvcnQgeyBFbGVtZW50UGx1c1Jlc29sdmVyIH0gZnJvbSBcInVucGx1Z2luLXZ1ZS1jb21wb25lbnRzL3Jlc29sdmVyc1wiO1xyXG5cclxuaW1wb3J0IEljb25zIGZyb20gXCJ1bnBsdWdpbi1pY29ucy92aXRlXCI7XHJcbmltcG9ydCBJY29uc1Jlc29sdmVyIGZyb20gXCJ1bnBsdWdpbi1pY29ucy9yZXNvbHZlclwiO1xyXG5cclxuaW1wb3J0IHsgY3JlYXRlU3ZnSWNvbnNQbHVnaW4gfSBmcm9tIFwidml0ZS1wbHVnaW4tc3ZnLWljb25zXCI7XHJcblxyXG5pbXBvcnQgVW5vQ1NTIGZyb20gXCJ1bm9jc3Mvdml0ZVwiO1xyXG5cclxuaW1wb3J0IHsgdGVyc2VyIH0gZnJvbSAncm9sbHVwLXBsdWdpbi10ZXJzZXInO1xyXG5cclxuaW1wb3J0IHBhdGggZnJvbSBcInBhdGhcIjtcclxuY29uc3QgcGF0aFNyYyA9IHBhdGgucmVzb2x2ZShfX2Rpcm5hbWUsIFwic3JjXCIpO1xyXG5cclxuZXhwb3J0IGRlZmF1bHQgZGVmaW5lQ29uZmlnKCh7IG1vZGUgfTogQ29uZmlnRW52KTogVXNlckNvbmZpZyA9PiB7XHJcbiAgY29uc3QgZW52ID0gbG9hZEVudihtb2RlLCBwcm9jZXNzLmN3ZCgpKTtcclxuICByZXR1cm4ge1xyXG4gICAgcmVzb2x2ZToge1xyXG4gICAgICBhbGlhczoge1xyXG4gICAgICAgIFwiQFwiOiBwYXRoU3JjLFxyXG4gICAgICB9LFxyXG4gICAgfSxcclxuICAgIGNzczoge1xyXG4gICAgICAvLyBDU1MgXHU5ODg0XHU1OTA0XHU3NDA2XHU1NjY4XHJcbiAgICAgIHByZXByb2Nlc3Nvck9wdGlvbnM6IHtcclxuICAgICAgICAvL2RlZmluZSBnbG9iYWwgc2NzcyB2YXJpYWJsZVxyXG4gICAgICAgIHNjc3M6IHtcclxuICAgICAgICAgIGphdmFzY3JpcHRFbmFibGVkOiB0cnVlLFxyXG4gICAgICAgICAgYWRkaXRpb25hbERhdGE6IGBcclxuICAgICAgICAgICAgQHVzZSBcIkAvc3R5bGVzL3ZhcmlhYmxlcy5zY3NzXCIgYXMgKjtcclxuICAgICAgICAgIGAsXHJcbiAgICAgICAgfSxcclxuICAgICAgfSxcclxuICAgIH0sXHJcbiAgICBzZXJ2ZXI6IHtcclxuICAgICAgaG9zdDogXCIwLjAuMC4wXCIsXHJcbiAgICAgIHBvcnQ6IE51bWJlcihlbnYuVklURV9BUFBfUE9SVCksXHJcbiAgICAgIG9wZW46IHRydWUsIC8vIFx1OEZEMFx1ODg0Q1x1NjYyRlx1NTQyNlx1ODFFQVx1NTJBOFx1NjI1M1x1NUYwMFx1NkQ0Rlx1ODlDOFx1NTY2OFxyXG4gICAgICBwcm94eToge1xyXG4gICAgICAgIC8vIFx1NTNDRFx1NTQxMVx1NEVFM1x1NzQwNlx1ODlFM1x1NTFCM1x1OERFOFx1NTdERlxyXG4gICAgICAgIFtlbnYuVklURV9BUFBfQkFTRV9BUEldOiB7XHJcbiAgICAgICAgICB0YXJnZXQ6IGVudi5WSVRFX0FQUF9CQVNFX1VSTCwgLy8gXHU3RUJGXHU0RTBBXHU2M0E1XHU1M0UzXHU1NzMwXHU1NzQwXHJcbiAgICAgICAgICAvLyB0YXJnZXQ6IFwiaHR0cDovL3ZhcGkueW91bGFpLnRlY2hcIiwgLy8gXHU3RUJGXHU0RTBBXHU2M0E1XHU1M0UzXHU1NzMwXHU1NzQwXHJcbiAgICAgICAgICAvLyB0YXJnZXQ6ICdodHRwOi8vbG9jYWxob3N0Ojg5ODknLCAgLy8gXHU2NzJDXHU1NzMwXHU2M0E1XHU1M0UzXHU1NzMwXHU1NzQwICwgXHU1NDBFXHU3QUVGXHU1REU1XHU3QTBCXHU0RUQzXHU1RTkzXHU1NzMwXHU1NzQwXHVGRjFBaHR0cHM6Ly9naXRlZS5jb20veW91bGFpb3JnL3lvdWxhaS1ib290XHJcbiAgICAgICAgICBjaGFuZ2VPcmlnaW46IHRydWUsXHJcbiAgICAgICAgICByZXdyaXRlOiAocGF0aCkgPT5cclxuICAgICAgICAgICAgcGF0aC5yZXBsYWNlKG5ldyBSZWdFeHAoXCJeXCIgKyBlbnYuVklURV9BUFBfQkFTRV9BUEkpLCBcIlwiKSwgLy8gXHU2NkZGXHU2MzYyIC9kZXYtYXBpIFx1NEUzQSB0YXJnZXQgXHU2M0E1XHU1M0UzXHU1NzMwXHU1NzQwXHJcbiAgICAgICAgfSxcclxuICAgICAgICAvLyAnL2Rldi1hcGkva3BpYXBpJzoge1xyXG4gICAgICAgIC8vICAgdGFyZ2V0OiAnaHR0cDovLzEyNy4wLjAuMTo2NjY2JyxcclxuICAgICAgICAvLyAgIGNoYW5nZU9yaWdpbjogdHJ1ZSxcclxuICAgICAgICAvLyAgIHJld3JpdGU6IChwYXRoKSA9PlxyXG4gICAgICAgIC8vICAgICBwYXRoLnJlcGxhY2UobmV3IFJlZ0V4cChcIl5cIiArICcvZGV2LWFwaS9rcGlhcGknKSwgXCJcIiksXHJcbiAgICAgICAgLy8gfSxcclxuXHJcbiAgICAgICAgLy8gJy9kZXYtYXBpL3N5c3RlbWFwaSc6IHtcclxuICAgICAgICAvLyAgIHRhcmdldDogJ2h0dHA6Ly8xMjcuMC4wLjE6MTc3NzcnLFxyXG4gICAgICAgIC8vICAgY2hhbmdlT3JpZ2luOiB0cnVlLFxyXG4gICAgICAgIC8vICAgcmV3cml0ZTogKHBhdGgpID0+XHJcbiAgICAgICAgLy8gICAgIHBhdGgucmVwbGFjZShuZXcgUmVnRXhwKFwiXlwiICsgJy9kZXYtYXBpL3N5c3RlbWFwaScpLCBcIlwiKSxcclxuICAgICAgICAvLyB9LFxyXG4gICAgICAgIC8vICcvZGV2LWFwaS9ocmFwaSc6IHtcclxuICAgICAgICAvLyAgIHRhcmdldDogJ2h0dHA6Ly8xMjcuMC4wLjE6MzkxNjgnLFxyXG4gICAgICAgIC8vICAgY2hhbmdlT3JpZ2luOiB0cnVlLFxyXG4gICAgICAgIC8vICAgcmV3cml0ZTogKHBhdGgpID0+XHJcbiAgICAgICAgLy8gICAgIHBhdGgucmVwbGFjZShuZXcgUmVnRXhwKFwiXlwiICsgJy9kZXYtYXBpL2hyYXBpJyksIFwiXCIpLFxyXG4gICAgICAgIC8vIH0sXHJcbiAgICAgICAgLy8gJy9kZXYtYXBpL2FwaSc6IHtcclxuICAgICAgICAvLyAgIHRhcmdldDogJ2h0dHA6Ly8xMjcuMC4wLjE6ODg4OCcsXHJcbiAgICAgICAgLy8gICBjaGFuZ2VPcmlnaW46IHRydWUsXHJcbiAgICAgICAgLy8gICByZXdyaXRlOiAocGF0aCkgPT5cclxuICAgICAgICAvLyAgICAgcGF0aC5yZXBsYWNlKG5ldyBSZWdFeHAoXCJeXCIgKyAnL2Rldi1hcGkvYXBpJyksIFwiXCIpLFxyXG4gICAgICAgIC8vIH0sXHJcbiAgICAgICAgLy8gJy9kZXYtYXBpL2phdmFzeXMnOiB7XHJcbiAgICAgICAgLy8gICB0YXJnZXQ6ICdodHRwOi8vMTcyLjIwLjIuODc6ODExMScsXHJcbiAgICAgICAgLy8gICBjaGFuZ2VPcmlnaW46IHRydWUsXHJcbiAgICAgICAgLy8gICByZXdyaXRlOiAocGF0aCkgPT5cclxuICAgICAgICAvLyAgICAgcGF0aC5yZXBsYWNlKG5ldyBSZWdFeHAoXCJeXCIgKyAnL2Rldi1hcGkvamF2YXN5cycpLCBcIlwiKSxcclxuICAgICAgICAvLyB9LFxyXG4gICAgICAgIC8vICcvZGV2LWFwaS9qYXZhc3lzL2xvd0NvZGUgJzoge1xyXG4gICAgICAgIC8vICAgdGFyZ2V0OiAnaHR0cDovLzE3Mi4yMC4yLjg3OjgxMTInLFxyXG4gICAgICAgIC8vICAgY2hhbmdlT3JpZ2luOiB0cnVlLFxyXG4gICAgICAgIC8vICAgcmV3cml0ZTogKHBhdGgpID0+XHJcbiAgICAgICAgLy8gICAgIHBhdGgucmVwbGFjZShuZXcgUmVnRXhwKFwiXlwiICsgJy9kZXYtYXBpL2phdmFzeXMvbG93Q29kZSAnKSwgXCJcIiksXHJcbiAgICAgICAgLy8gfVxyXG4gICAgICB9LFxyXG4gICAgfSxcclxuXHJcbiAgICBwbHVnaW5zOiBbXHJcblxyXG4gICAgICB2dWUoKSxcclxuICAgICAgVW5vQ1NTKHtcclxuICAgICAgICAvKiBvcHRpb25zICovXHJcbiAgICAgIH0pLFxyXG4gICAgICBBdXRvSW1wb3J0KHtcclxuICAgICAgICAvLyBcdTgxRUFcdTUyQThcdTVCRkNcdTUxNjUgVnVlIFx1NzZGOFx1NTE3M1x1NTFGRFx1NjU3MFx1RkYwQ1x1NTk4Mlx1RkYxQXJlZiwgcmVhY3RpdmUsIHRvUmVmIFx1N0I0OVxyXG4gICAgICAgIGltcG9ydHM6IFtcInZ1ZVwiLCBcIkB2dWV1c2UvY29yZVwiXSxcclxuICAgICAgICAvL2lnbm9yZTogWydoJ10sIC8vIFx1ODFFQVx1NTJBOFx1NkRGQlx1NTJBMCBpbXBvcnQgeyBoIH0gZnJvbSAnL25vZGVfbW9kdWxlcy8udml0ZS9kZXBzL3Z1ZS5qcyBcdTRFRTNcdTc4MDFcdTk1RUVcdTk4OThcdTU5MDRcdTc0MDZcclxuICAgICAgICBlc2xpbnRyYzoge1xyXG4gICAgICAgICAgZW5hYmxlZDogZmFsc2UsIC8vICBEZWZhdWx0IGBmYWxzZWBcclxuICAgICAgICAgIGZpbGVwYXRoOiBcIi4vLmVzbGludHJjLWF1dG8taW1wb3J0Lmpzb25cIiwgLy8gRGVmYXVsdCBgLi8uZXNsaW50cmMtYXV0by1pbXBvcnQuanNvbmBcclxuICAgICAgICAgIGdsb2JhbHNQcm9wVmFsdWU6IHRydWUsIC8vIERlZmF1bHQgYHRydWVgLCAodHJ1ZSB8IGZhbHNlIHwgJ3JlYWRvbmx5JyB8ICdyZWFkYWJsZScgfCAnd3JpdGFibGUnIHwgJ3dyaXRlYWJsZScpXHJcbiAgICAgICAgfSxcclxuICAgICAgICByZXNvbHZlcnM6IFtcclxuICAgICAgICAgIC8vIFx1ODFFQVx1NTJBOFx1NUJGQ1x1NTE2NSBFbGVtZW50IFBsdXMgXHU3NkY4XHU1MTczXHU1MUZEXHU2NTcwXHVGRjBDXHU1OTgyXHVGRjFBRWxNZXNzYWdlLCBFbE1lc3NhZ2VCb3guLi4gKFx1NUUyNlx1NjgzN1x1NUYwRilcclxuICAgICAgICAgIEVsZW1lbnRQbHVzUmVzb2x2ZXIoKSxcclxuICAgICAgICAgIC8vIFx1ODFFQVx1NTJBOFx1NUJGQ1x1NTE2NVx1NTZGRVx1NjgwN1x1N0VDNFx1NEVGNlxyXG4gICAgICAgICAgSWNvbnNSZXNvbHZlcih7fSksXHJcbiAgICAgICAgXSxcclxuICAgICAgICB2dWVUZW1wbGF0ZTogdHJ1ZSwgLy8gXHU2NjJGXHU1NDI2XHU1NzI4IHZ1ZSBcdTZBMjFcdTY3N0ZcdTRFMkRcdTgxRUFcdTUyQThcdTVCRkNcdTUxNjVcclxuICAgICAgICBkdHM6IHBhdGgucmVzb2x2ZShwYXRoU3JjLCBcInR5cGVzXCIsIFwiYXV0by1pbXBvcnRzLmQudHNcIiksIC8vICBcdTgxRUFcdTUyQThcdTVCRkNcdTUxNjVcdTdFQzRcdTRFRjZcdTdDN0JcdTU3OEJcdTU4RjBcdTY2MEVcdTY1ODdcdTRFRjZcdTRGNERcdTdGNkVcdUZGMENcdTlFRDhcdThCQTRcdTY4MzlcdTc2RUVcdTVGNTU7IGZhbHNlIFx1NTE3M1x1OTVFRFx1ODFFQVx1NTJBOFx1NzUxRlx1NjIxMFxyXG4gICAgICB9KSxcclxuXHJcbiAgICAgIENvbXBvbmVudHMoe1xyXG4gICAgICAgIHJlc29sdmVyczogW1xyXG4gICAgICAgICAgLy8gXHU4MUVBXHU1MkE4XHU2Q0U4XHU1MThDXHU1NkZFXHU2ODA3XHU3RUM0XHU0RUY2XHJcbiAgICAgICAgICBJY29uc1Jlc29sdmVyKHtcclxuICAgICAgICAgICAgZW5hYmxlZENvbGxlY3Rpb25zOiBbXCJlcFwiXSwgLy9AaWNvbmlmeS1qc29uL2VwIFx1NjYyRiBFbGVtZW50IFBsdXMgXHU3Njg0XHU1NkZFXHU2ODA3XHU1RTkzXHJcbiAgICAgICAgICB9KSxcclxuICAgICAgICAgIC8vIFx1ODFFQVx1NTJBOFx1NUJGQ1x1NTE2NSBFbGVtZW50IFBsdXMgXHU3RUM0XHU0RUY2XHJcbiAgICAgICAgICBFbGVtZW50UGx1c1Jlc29sdmVyKCksXHJcbiAgICAgICAgXSxcclxuICAgICAgICBkdHM6IHBhdGgucmVzb2x2ZShwYXRoU3JjLCBcInR5cGVzXCIsIFwiY29tcG9uZW50cy5kLnRzXCIpLCAvLyAgXHU4MUVBXHU1MkE4XHU1QkZDXHU1MTY1XHU3RUM0XHU0RUY2XHU3QzdCXHU1NzhCXHU1OEYwXHU2NjBFXHU2NTg3XHU0RUY2XHU0RjREXHU3RjZFXHVGRjBDXHU5RUQ4XHU4QkE0XHU2ODM5XHU3NkVFXHU1RjU1OyBmYWxzZSBcdTUxNzNcdTk1RURcdTgxRUFcdTUyQThcdTc1MUZcdTYyMTBcclxuICAgICAgfSksXHJcblxyXG4gICAgICBJY29ucyh7XHJcbiAgICAgICAgLy8gXHU4MUVBXHU1MkE4XHU1Qjg5XHU4OEM1XHU1NkZFXHU2ODA3XHU1RTkzXHJcbiAgICAgICAgYXV0b0luc3RhbGw6IHRydWUsXHJcbiAgICAgIH0pLFxyXG5cclxuICAgICAgY3JlYXRlU3ZnSWNvbnNQbHVnaW4oe1xyXG4gICAgICAgIC8vIFx1NjMwN1x1NUI5QVx1OTcwMFx1ODk4MVx1N0YxM1x1NUI1OFx1NzY4NFx1NTZGRVx1NjgwN1x1NjU4N1x1NEVGNlx1NTkzOVxyXG4gICAgICAgIGljb25EaXJzOiBbcGF0aC5yZXNvbHZlKHBhdGhTcmMsIFwiYXNzZXRzL2ljb25zXCIpXSxcclxuICAgICAgICAvLyBcdTYzMDdcdTVCOUFzeW1ib2xJZFx1NjgzQ1x1NUYwRlxyXG4gICAgICAgIHN5bWJvbElkOiBcImljb24tW2Rpcl0tW25hbWVdXCIsXHJcbiAgICAgIH0pLFxyXG4gICAgXSxcclxuICAgIGJ1aWxkOiB7XHJcbiAgICAgIHRlcnNlck9wdGlvbnM6IHtcclxuICAgICAgICBjb21wcmVzczoge1xyXG4gICAgICAgICAgZHJvcF9jb25zb2xlOiB0cnVlLCAvLyBcdTUxNzNcdTk1RURcdTYyNDBcdTY3MDlcdTc2ODQgY29uc29sZS5sb2cgXHU2MjUzXHU1MzcwXHJcbiAgICAgICAgfSxcclxuICAgICAgfSxcclxuICAgICAgcm9sbHVwT3B0aW9uczoge1xyXG4gICAgICAgIHBsdWdpbnM6IFtcclxuICAgICAgICAgIHRlcnNlcih7XHJcbiAgICAgICAgICAgIGNvbXByZXNzOiB7XHJcbiAgICAgICAgICAgICAgZHJvcF9jb25zb2xlOiB0cnVlLCAvLyBcdTUxNzNcdTk1RURcdTYyNDBcdTY3MDlcdTc2ODQgY29uc29sZS5sb2cgXHU2MjUzXHU1MzcwXHJcbiAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICB9KSxcclxuICAgICAgICBdLFxyXG4gICAgICB9LFxyXG4gICAgfSxcclxuICAgIG9wdGltaXplRGVwczoge1xyXG4gICAgICBpbmNsdWRlOiBbXHJcbiAgICAgICAgXCJ2dWVcIixcclxuICAgICAgICBcInZ1ZS1yb3V0ZXJcIixcclxuICAgICAgICBcInBpbmlhXCIsXHJcbiAgICAgICAgXCJheGlvc1wiLFxyXG4gICAgICAgIFwiZWxlbWVudC1wbHVzL2VzL2NvbXBvbmVudHMvZm9ybS9zdHlsZS9jc3NcIixcclxuICAgICAgICBcImVsZW1lbnQtcGx1cy9lcy9jb21wb25lbnRzL2Zvcm0taXRlbS9zdHlsZS9jc3NcIixcclxuICAgICAgICBcImVsZW1lbnQtcGx1cy9lcy9jb21wb25lbnRzL2J1dHRvbi9zdHlsZS9jc3NcIixcclxuICAgICAgICBcImVsZW1lbnQtcGx1cy9lcy9jb21wb25lbnRzL2lucHV0L3N0eWxlL2Nzc1wiLFxyXG4gICAgICAgIFwiZWxlbWVudC1wbHVzL2VzL2NvbXBvbmVudHMvaW5wdXQtbnVtYmVyL3N0eWxlL2Nzc1wiLFxyXG4gICAgICAgIFwiZWxlbWVudC1wbHVzL2VzL2NvbXBvbmVudHMvc3dpdGNoL3N0eWxlL2Nzc1wiLFxyXG4gICAgICAgIFwiZWxlbWVudC1wbHVzL2VzL2NvbXBvbmVudHMvdXBsb2FkL3N0eWxlL2Nzc1wiLFxyXG4gICAgICAgIFwiZWxlbWVudC1wbHVzL2VzL2NvbXBvbmVudHMvbWVudS9zdHlsZS9jc3NcIixcclxuICAgICAgICBcImVsZW1lbnQtcGx1cy9lcy9jb21wb25lbnRzL2NvbC9zdHlsZS9jc3NcIixcclxuICAgICAgICBcImVsZW1lbnQtcGx1cy9lcy9jb21wb25lbnRzL2ljb24vc3R5bGUvY3NzXCIsXHJcbiAgICAgICAgXCJlbGVtZW50LXBsdXMvZXMvY29tcG9uZW50cy9yb3cvc3R5bGUvY3NzXCIsXHJcbiAgICAgICAgXCJlbGVtZW50LXBsdXMvZXMvY29tcG9uZW50cy90YWcvc3R5bGUvY3NzXCIsXHJcbiAgICAgICAgXCJlbGVtZW50LXBsdXMvZXMvY29tcG9uZW50cy9kaWFsb2cvc3R5bGUvY3NzXCIsXHJcbiAgICAgICAgXCJlbGVtZW50LXBsdXMvZXMvY29tcG9uZW50cy9sb2FkaW5nL3N0eWxlL2Nzc1wiLFxyXG4gICAgICAgIFwiZWxlbWVudC1wbHVzL2VzL2NvbXBvbmVudHMvcmFkaW8vc3R5bGUvY3NzXCIsXHJcbiAgICAgICAgXCJlbGVtZW50LXBsdXMvZXMvY29tcG9uZW50cy9yYWRpby1ncm91cC9zdHlsZS9jc3NcIixcclxuICAgICAgICBcImVsZW1lbnQtcGx1cy9lcy9jb21wb25lbnRzL3BvcG92ZXIvc3R5bGUvY3NzXCIsXHJcbiAgICAgICAgXCJlbGVtZW50LXBsdXMvZXMvY29tcG9uZW50cy9zY3JvbGxiYXIvc3R5bGUvY3NzXCIsXHJcbiAgICAgICAgXCJlbGVtZW50LXBsdXMvZXMvY29tcG9uZW50cy90b29sdGlwL3N0eWxlL2Nzc1wiLFxyXG4gICAgICAgIFwiZWxlbWVudC1wbHVzL2VzL2NvbXBvbmVudHMvZHJvcGRvd24vc3R5bGUvY3NzXCIsXHJcbiAgICAgICAgXCJlbGVtZW50LXBsdXMvZXMvY29tcG9uZW50cy9kcm9wZG93bi1tZW51L3N0eWxlL2Nzc1wiLFxyXG4gICAgICAgIFwiZWxlbWVudC1wbHVzL2VzL2NvbXBvbmVudHMvZHJvcGRvd24taXRlbS9zdHlsZS9jc3NcIixcclxuICAgICAgICBcImVsZW1lbnQtcGx1cy9lcy9jb21wb25lbnRzL3N1Yi1tZW51L3N0eWxlL2Nzc1wiLFxyXG4gICAgICAgIFwiZWxlbWVudC1wbHVzL2VzL2NvbXBvbmVudHMvbWVudS1pdGVtL3N0eWxlL2Nzc1wiLFxyXG4gICAgICAgIFwiZWxlbWVudC1wbHVzL2VzL2NvbXBvbmVudHMvZGl2aWRlci9zdHlsZS9jc3NcIixcclxuICAgICAgICBcImVsZW1lbnQtcGx1cy9lcy9jb21wb25lbnRzL2NhcmQvc3R5bGUvY3NzXCIsXHJcbiAgICAgICAgXCJlbGVtZW50LXBsdXMvZXMvY29tcG9uZW50cy9saW5rL3N0eWxlL2Nzc1wiLFxyXG4gICAgICAgIFwiZWxlbWVudC1wbHVzL2VzL2NvbXBvbmVudHMvYnJlYWRjcnVtYi9zdHlsZS9jc3NcIixcclxuICAgICAgICBcImVsZW1lbnQtcGx1cy9lcy9jb21wb25lbnRzL2JyZWFkY3J1bWItaXRlbS9zdHlsZS9jc3NcIixcclxuICAgICAgICBcImVsZW1lbnQtcGx1cy9lcy9jb21wb25lbnRzL3RhYmxlL3N0eWxlL2Nzc1wiLFxyXG4gICAgICAgIFwiZWxlbWVudC1wbHVzL2VzL2NvbXBvbmVudHMvdHJlZS1zZWxlY3Qvc3R5bGUvY3NzXCIsXHJcbiAgICAgICAgXCJlbGVtZW50LXBsdXMvZXMvY29tcG9uZW50cy90YWJsZS1jb2x1bW4vc3R5bGUvY3NzXCIsXHJcbiAgICAgICAgXCJlbGVtZW50LXBsdXMvZXMvY29tcG9uZW50cy9zZWxlY3Qvc3R5bGUvY3NzXCIsXHJcbiAgICAgICAgXCJlbGVtZW50LXBsdXMvZXMvY29tcG9uZW50cy9vcHRpb24vc3R5bGUvY3NzXCIsXHJcbiAgICAgICAgXCJlbGVtZW50LXBsdXMvZXMvY29tcG9uZW50cy9wYWdpbmF0aW9uL3N0eWxlL2Nzc1wiLFxyXG4gICAgICAgIFwiZWxlbWVudC1wbHVzL2VzL2NvbXBvbmVudHMvdHJlZS9zdHlsZS9jc3NcIixcclxuICAgICAgICBcImVsZW1lbnQtcGx1cy9lcy9jb21wb25lbnRzL2FsZXJ0L3N0eWxlL2Nzc1wiLFxyXG4gICAgICAgIFwiQHZ1ZXVzZS9jb3JlXCIsXHJcblxyXG4gICAgICAgIFwicGF0aC10by1yZWdleHBcIixcclxuICAgICAgICBcImVjaGFydHNcIixcclxuICAgICAgICBcIkB3YW5nZWRpdG9yL2VkaXRvclwiLFxyXG4gICAgICAgIFwiQHdhbmdlZGl0b3IvZWRpdG9yLWZvci12dWVcIixcclxuICAgICAgICBcInZ1ZS1pMThuXCIsXHJcbiAgICAgIF0sXHJcbiAgICB9LFxyXG4gIH07XHJcbn0pO1xyXG4iXSwKICAibWFwcGluZ3MiOiAiO0FBQTBaLE9BQU8sU0FBUztBQUUxYSxTQUFnQyxTQUFTLG9CQUFvQjtBQUU3RCxPQUFPLGdCQUFnQjtBQUN2QixPQUFPLGdCQUFnQjtBQUN2QixTQUFTLDJCQUEyQjtBQUVwQyxPQUFPLFdBQVc7QUFDbEIsT0FBTyxtQkFBbUI7QUFFMUIsU0FBUyw0QkFBNEI7QUFFckMsT0FBTyxZQUFZO0FBRW5CLFNBQVMsY0FBYztBQUV2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 From ef4f7e263b24fc4107d58dae7301e669a4f9dff9 Mon Sep 17 00:00:00 2001 From: herenshan112 Date: Thu, 4 Dec 2025 08:31:26 +0800 Subject: [PATCH 3/3] =?UTF-8?q?=E5=91=98=E5=B7=A5=E6=9D=83=E9=99=90?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/api/DesignForm/index.ts | 4 +- src/api/system/roleapi/power.ts | 24 + src/directive/permission/button.ts | 24 +- src/store/modules/user.ts | 2 +- src/views/hr/archives/archivescont.vue | 5 +- src/views/hr/archives/index.vue | 924 +++++++++++++++--- src/views/hr/archives/index_20251202.vue | 200 ++++ .../hr/archives/unitpage/addUserPage.vue | 274 ++++++ .../hr/archives/unitpage/batchImport.vue | 235 +++++ src/views/hr/archives/unitpage/lockInfo.vue | 96 ++ .../hr/archives/unitpage/uploadTemplate.vue | 222 +++++ src/views/nested/.editorconfig | 12 + .../lowcodepage/appPage/appSetUp/setup.vue | 1 + 13 files changed, 1892 insertions(+), 131 deletions(-) create mode 100644 src/views/hr/archives/index_20251202.vue create mode 100644 src/views/hr/archives/unitpage/addUserPage.vue create mode 100644 src/views/hr/archives/unitpage/batchImport.vue create mode 100644 src/views/hr/archives/unitpage/lockInfo.vue create mode 100644 src/views/hr/archives/unitpage/uploadTemplate.vue create mode 100644 src/views/nested/.editorconfig diff --git a/src/api/DesignForm/index.ts b/src/api/DesignForm/index.ts index 5410828..f35bbe0 100644 --- a/src/api/DesignForm/index.ts +++ b/src/api/DesignForm/index.ts @@ -63,7 +63,9 @@ export const getRequest = (apiKey: string, data?: any, options: any = {}) => { return request(obj) } // export const uploadUrl = '/api/' + allApi.upload -export const uploadUrl = import.meta.env.VITE_APP_BASE_API+"/api/upordown" +// export const uploadUrl = import.meta.env.VITE_APP_BASE_API+"/api/upordown" +export const uploadUrl = import.meta.env.VITE_APP_BASE_API+"/setupFile/uploads/oneFileUpload" +export const uploadUrlNew = import.meta.env.VITE_APP_BASE_API+"/setupFile/uploads/oneFileUpload" export function uploadFiledTinymce(data:any, url:any) { return request({ url: url || '/api/upordown', diff --git a/src/api/system/roleapi/power.ts b/src/api/system/roleapi/power.ts index 6a3037c..39bbd92 100644 --- a/src/api/system/roleapi/power.ts +++ b/src/api/system/roleapi/power.ts @@ -23,3 +23,27 @@ export function authorizeOrgTree(data?: getSystemPower){ data:data }); } +/** +@ 作者: 秦东 +@ 时间: 2025-11-28 10:24:09 +@ 功能: 根据权限获取数据 +*/ +export function authorizePeopleList(data?: getSystemPower){ + return request({ + url: '/systemapi/hr/authorizePeopleList', + method: 'post', + data:data + }); +} +/** +@ 作者: 秦东 +@ 时间: 2025-11-28 10:24:09 +@ 功能: 新增人员 +*/ +export function addNewPeople(data?: getSystemPower){ + return request({ + url: '/systemapi/hr/addNewPeople', + method: 'post', + data:data + }); +} diff --git a/src/directive/permission/button.ts b/src/directive/permission/button.ts index d57d71c..b44d998 100644 --- a/src/directive/permission/button.ts +++ b/src/directive/permission/button.ts @@ -7,17 +7,17 @@ import { useUserStore } from "@/store/modules/user"; export const hasButton: Directive = { mounted(el: HTMLElement, binding: DirectiveBinding) { const userStore = useUserStore(); - // const { value,oldValue } = binding; - // console.log("按钮权限",el,"-->",binding,"-->",value,"-->",oldValue,"-->",userStore.myPower); - console.log("按钮权限",el,"-->",binding,"-->","-->",userStore.myPower); - // if (value) { - // const requiredPerms = value; // DOM绑定需要的按钮权限标识 - // const hasPerm = userStore.myPower.menuIdAry.some((perm: any) => { - // return requiredPerms.includes(perm); - // }); - // if (!hasPerm) { - // el.parentNode?.removeChild(el); - // } - // } + const { value } = binding; + // console.log("按钮权限",el,"-->",binding,"-->",value,"-->",userStore.myPower.menuButIdAry,"-->",userStore.myPower); + + if (value) { + const requiredPerms = value; // DOM绑定需要的按钮权限标识 + const hasPerm = userStore.myPower.menuButIdAry.some((perm: any) => { + return requiredPerms.includes(perm); + }); + if (!hasPerm) { + el.parentNode?.removeChild(el); + } + } } } diff --git a/src/store/modules/user.ts b/src/store/modules/user.ts index f8db4d3..4863bda 100644 --- a/src/store/modules/user.ts +++ b/src/store/modules/user.ts @@ -96,7 +96,7 @@ export const useUserStore = defineStore("user", () => { // }); getUserInfoIng() .then(({data})=>{ - console.log("获取用户信息:角色必须是非null数组!",data); + // console.log("获取用户信息:角色必须是非null数组!",data); // debugger; if (!data) { return reject("验证失败,请重新登录。"); diff --git a/src/views/hr/archives/archivescont.vue b/src/views/hr/archives/archivescont.vue index 1a0e2b4..34ef36f 100644 --- a/src/views/hr/archives/archivescont.vue +++ b/src/views/hr/archives/archivescont.vue @@ -57,7 +57,7 @@ const userIcon = ref(); //人员头像 const boxTitle = ref(); //弹出框标题 const userConting = ref(""); //人员信息 const rowLoading = ref(false); -const imgUploadApiUrl = import.meta.env.VITE_APP_BASE_API + "/api/upordown"; //图片上传地址 +const imgUploadApiUrl = import.meta.env.VITE_APP_BASE_API+"/setupFile/uploads/oneFileUpload";//图片上传地址 const editMyOrgCont = ref(false); //编辑行政组织 const editMyCont = ref(false); //编辑个人信息 /** @@ -134,11 +134,14 @@ const handleAvatarSuccess: UploadProps["onSuccess"] = ( uploadFiles ) => { userIcon.value = URL.createObjectURL(uploadFile.raw!); + // console.log("上传成功-------------------->", uploadFile); + // console.log("上传成功-------------------->", props.archivesdata.id); //修改人员头像 editMyInfoIcon({ id: props.archivesdata.id, iconpath: response.data.url, }).then((data) => { + fileUploadIng.value = false; ElMessage.success("编辑成功"); emits("getarchivespageclick"); }); diff --git a/src/views/hr/archives/index.vue b/src/views/hr/archives/index.vue index 9f44a36..013825e 100644 --- a/src/views/hr/archives/index.vue +++ b/src/views/hr/archives/index.vue @@ -1,40 +1,96 @@ diff --git a/src/views/hr/archives/index_20251202.vue b/src/views/hr/archives/index_20251202.vue new file mode 100644 index 0000000..6cddce0 --- /dev/null +++ b/src/views/hr/archives/index_20251202.vue @@ -0,0 +1,200 @@ + + + + diff --git a/src/views/hr/archives/unitpage/addUserPage.vue b/src/views/hr/archives/unitpage/addUserPage.vue new file mode 100644 index 0000000..329a616 --- /dev/null +++ b/src/views/hr/archives/unitpage/addUserPage.vue @@ -0,0 +1,274 @@ + + + + diff --git a/src/views/hr/archives/unitpage/batchImport.vue b/src/views/hr/archives/unitpage/batchImport.vue new file mode 100644 index 0000000..9d66ac7 --- /dev/null +++ b/src/views/hr/archives/unitpage/batchImport.vue @@ -0,0 +1,235 @@ + + + + diff --git a/src/views/hr/archives/unitpage/lockInfo.vue b/src/views/hr/archives/unitpage/lockInfo.vue new file mode 100644 index 0000000..44f79ef --- /dev/null +++ b/src/views/hr/archives/unitpage/lockInfo.vue @@ -0,0 +1,96 @@ + + + + diff --git a/src/views/hr/archives/unitpage/uploadTemplate.vue b/src/views/hr/archives/unitpage/uploadTemplate.vue new file mode 100644 index 0000000..3f93580 --- /dev/null +++ b/src/views/hr/archives/unitpage/uploadTemplate.vue @@ -0,0 +1,222 @@ + + + + + diff --git a/src/views/nested/.editorconfig b/src/views/nested/.editorconfig new file mode 100644 index 0000000..b9c127d --- /dev/null +++ b/src/views/nested/.editorconfig @@ -0,0 +1,12 @@ +# EditorConfig is awesome: https://EditorConfig.org + +# top-most EditorConfig file +root = true + +[*] +indent_style = space +indent_size = 4 +end_of_line = crlf +charset = utf-8 +trim_trailing_whitespace = false +insert_final_newline = false \ No newline at end of file diff --git a/src/views/sysworkflow/lowcodepage/appPage/appSetUp/setup.vue b/src/views/sysworkflow/lowcodepage/appPage/appSetUp/setup.vue index cd5b270..11676ae 100644 --- a/src/views/sysworkflow/lowcodepage/appPage/appSetUp/setup.vue +++ b/src/views/sysworkflow/lowcodepage/appPage/appSetUp/setup.vue @@ -85,6 +85,7 @@ const submitForm = () => { // console.log("提交数据",appSetupCont) appBasicSettings(appSetupCont) .then(() => { + // eslint-disable-next-line vue/no-mutating-props props.appCont.appName = appSetupCont.title; props.appCont.appSvg = appSetupCont.appSvg; props.appCont.describe = appSetupCont.appdescribe;