Compare commits

...

4 Commits

Author SHA1 Message Date
a42559a936 修改报事报修 2025-09-06 17:15:19 +08:00
026ab919e7 修改单位管理界面-2 2025-09-04 18:05:06 +08:00
c173cd1879 修改单位管理界面 2025-09-04 09:53:48 +08:00
5da423035d 新增单位管理界面 2025-09-02 17:36:22 +08:00
25 changed files with 2416 additions and 627 deletions

295
package-lock.json generated
View File

@@ -11,6 +11,7 @@
"dependencies": {
"@icon-park/vue": "^1.3.5",
"hls.js": "^1.6.11",
"uqrcodejs": "^4.0.7",
"vue-i18n": "^8.20.0"
}
},
@@ -99,18 +100,144 @@
"prettier": "^1.18.2 || ^2.0.0"
}
},
"node_modules/ansi-regex": {
"version": "5.0.1",
"resolved": "https://registry.npmmirror.com/ansi-regex/-/ansi-regex-5.0.1.tgz",
"integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==",
"license": "MIT",
"engines": {
"node": ">=8"
}
},
"node_modules/ansi-styles": {
"version": "4.3.0",
"resolved": "https://registry.npmmirror.com/ansi-styles/-/ansi-styles-4.3.0.tgz",
"integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==",
"license": "MIT",
"dependencies": {
"color-convert": "^2.0.1"
},
"engines": {
"node": ">=8"
},
"funding": {
"url": "https://github.com/chalk/ansi-styles?sponsor=1"
}
},
"node_modules/camelcase": {
"version": "5.3.1",
"resolved": "https://registry.npmmirror.com/camelcase/-/camelcase-5.3.1.tgz",
"integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==",
"license": "MIT",
"engines": {
"node": ">=6"
}
},
"node_modules/cliui": {
"version": "6.0.0",
"resolved": "https://registry.npmmirror.com/cliui/-/cliui-6.0.0.tgz",
"integrity": "sha512-t6wbgtoCXvAzst7QgXxJYqPt0usEfbgQdftEPbLL/cvv6HPE5VgvqCuAIDR0NgU52ds6rFwqrgakNLrHEjCbrQ==",
"license": "ISC",
"dependencies": {
"string-width": "^4.2.0",
"strip-ansi": "^6.0.0",
"wrap-ansi": "^6.2.0"
}
},
"node_modules/color-convert": {
"version": "2.0.1",
"resolved": "https://registry.npmmirror.com/color-convert/-/color-convert-2.0.1.tgz",
"integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==",
"license": "MIT",
"dependencies": {
"color-name": "~1.1.4"
},
"engines": {
"node": ">=7.0.0"
}
},
"node_modules/color-name": {
"version": "1.1.4",
"resolved": "https://registry.npmmirror.com/color-name/-/color-name-1.1.4.tgz",
"integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==",
"license": "MIT"
},
"node_modules/csstype": {
"version": "3.1.3",
"resolved": "https://registry.npmmirror.com/csstype/-/csstype-3.1.3.tgz",
"integrity": "sha512-M1uQkMl8rQK/szD0LNhtqxIPLpimGm8sOBwU7lLnCpSbTyY3yeU1Vc7l4KT5zT4s/yOxHH5O7tIuuLOCnLADRw==",
"license": "MIT"
},
"node_modules/decamelize": {
"version": "1.2.0",
"resolved": "https://registry.npmmirror.com/decamelize/-/decamelize-1.2.0.tgz",
"integrity": "sha512-z2S+W9X73hAUUki+N+9Za2lBlun89zigOyGrsax+KUQ6wKW4ZoWpEYBkGhQjwAjjDCkWxhY0VKEhk8wzY7F5cA==",
"license": "MIT",
"engines": {
"node": ">=0.10.0"
}
},
"node_modules/dijkstrajs": {
"version": "1.0.3",
"resolved": "https://registry.npmmirror.com/dijkstrajs/-/dijkstrajs-1.0.3.tgz",
"integrity": "sha512-qiSlmBq9+BCdCA/L46dw8Uy93mloxsPSbwnm5yrKn2vMPiy8KyAskTF6zuV/j5BMsmOGZDPs7KjU+mjb670kfA==",
"license": "MIT"
},
"node_modules/emoji-regex": {
"version": "8.0.0",
"resolved": "https://registry.npmmirror.com/emoji-regex/-/emoji-regex-8.0.0.tgz",
"integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==",
"license": "MIT"
},
"node_modules/find-up": {
"version": "4.1.0",
"resolved": "https://registry.npmmirror.com/find-up/-/find-up-4.1.0.tgz",
"integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==",
"license": "MIT",
"dependencies": {
"locate-path": "^5.0.0",
"path-exists": "^4.0.0"
},
"engines": {
"node": ">=8"
}
},
"node_modules/get-caller-file": {
"version": "2.0.5",
"resolved": "https://registry.npmmirror.com/get-caller-file/-/get-caller-file-2.0.5.tgz",
"integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==",
"license": "ISC",
"engines": {
"node": "6.* || 8.* || >= 10.*"
}
},
"node_modules/hls.js": {
"version": "1.6.11",
"resolved": "https://registry.npmmirror.com/hls.js/-/hls.js-1.6.11.tgz",
"integrity": "sha512-tdDwOAgPGXohSiNE4oxGr3CI9Hx9lsGLFe6TULUvRk2TfHS+w1tSAJntrvxsHaxvjtr6BXsDZM7NOqJFhU4mmg==",
"license": "Apache-2.0"
},
"node_modules/is-fullwidth-code-point": {
"version": "3.0.0",
"resolved": "https://registry.npmmirror.com/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz",
"integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==",
"license": "MIT",
"engines": {
"node": ">=8"
}
},
"node_modules/locate-path": {
"version": "5.0.0",
"resolved": "https://registry.npmmirror.com/locate-path/-/locate-path-5.0.0.tgz",
"integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==",
"license": "MIT",
"dependencies": {
"p-locate": "^4.1.0"
},
"engines": {
"node": ">=8"
}
},
"node_modules/nanoid": {
"version": "3.3.11",
"resolved": "https://registry.npmmirror.com/nanoid/-/nanoid-3.3.11.tgz",
@@ -130,6 +257,51 @@
"node": "^10 || ^12 || ^13.7 || ^14 || >=15.0.1"
}
},
"node_modules/p-limit": {
"version": "2.3.0",
"resolved": "https://registry.npmmirror.com/p-limit/-/p-limit-2.3.0.tgz",
"integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==",
"license": "MIT",
"dependencies": {
"p-try": "^2.0.0"
},
"engines": {
"node": ">=6"
},
"funding": {
"url": "https://github.com/sponsors/sindresorhus"
}
},
"node_modules/p-locate": {
"version": "4.1.0",
"resolved": "https://registry.npmmirror.com/p-locate/-/p-locate-4.1.0.tgz",
"integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==",
"license": "MIT",
"dependencies": {
"p-limit": "^2.2.0"
},
"engines": {
"node": ">=8"
}
},
"node_modules/p-try": {
"version": "2.2.0",
"resolved": "https://registry.npmmirror.com/p-try/-/p-try-2.2.0.tgz",
"integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==",
"license": "MIT",
"engines": {
"node": ">=6"
}
},
"node_modules/path-exists": {
"version": "4.0.0",
"resolved": "https://registry.npmmirror.com/path-exists/-/path-exists-4.0.0.tgz",
"integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==",
"license": "MIT",
"engines": {
"node": ">=8"
}
},
"node_modules/picocolors": {
"version": "1.1.1",
"resolved": "https://registry.npmmirror.com/picocolors/-/picocolors-1.1.1.tgz",
@@ -137,6 +309,15 @@
"license": "ISC",
"peer": true
},
"node_modules/pngjs": {
"version": "5.0.0",
"resolved": "https://registry.npmmirror.com/pngjs/-/pngjs-5.0.0.tgz",
"integrity": "sha512-40QW5YalBNfQo5yRYmiw7Yz6TKKVr3h6970B2YE+3fQpsWcrbj1PzJgxeJ19DRQjhMbKPIuMY8rFaXc8moolVw==",
"license": "MIT",
"engines": {
"node": ">=10.13.0"
}
},
"node_modules/postcss": {
"version": "8.5.6",
"resolved": "https://registry.npmmirror.com/postcss/-/postcss-8.5.6.tgz",
@@ -166,6 +347,27 @@
"node": "^10 || ^12 || >=14"
}
},
"node_modules/require-directory": {
"version": "2.1.1",
"resolved": "https://registry.npmmirror.com/require-directory/-/require-directory-2.1.1.tgz",
"integrity": "sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==",
"license": "MIT",
"engines": {
"node": ">=0.10.0"
}
},
"node_modules/require-main-filename": {
"version": "2.0.0",
"resolved": "https://registry.npmmirror.com/require-main-filename/-/require-main-filename-2.0.0.tgz",
"integrity": "sha512-NKN5kMDylKuldxYLSUfrbo5Tuzh4hd+2E8NPPX02mZtn1VuREQToYe/ZdlJy+J3uCpfaiGF05e7B8W0iXbQHmg==",
"license": "ISC"
},
"node_modules/set-blocking": {
"version": "2.0.0",
"resolved": "https://registry.npmmirror.com/set-blocking/-/set-blocking-2.0.0.tgz",
"integrity": "sha512-KiKBS8AnWGEyLzofFfmvKwpdPzqiy16LvQfK3yv/fVH7Bj13/wl3JSR1J+rfgRE9q7xUJK4qvgS8raSOeLUehw==",
"license": "ISC"
},
"node_modules/source-map": {
"version": "0.6.1",
"resolved": "https://registry.npmmirror.com/source-map/-/source-map-0.6.1.tgz",
@@ -186,6 +388,38 @@
"node": ">=0.10.0"
}
},
"node_modules/string-width": {
"version": "4.2.3",
"resolved": "https://registry.npmmirror.com/string-width/-/string-width-4.2.3.tgz",
"integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==",
"license": "MIT",
"dependencies": {
"emoji-regex": "^8.0.0",
"is-fullwidth-code-point": "^3.0.0",
"strip-ansi": "^6.0.1"
},
"engines": {
"node": ">=8"
}
},
"node_modules/strip-ansi": {
"version": "6.0.1",
"resolved": "https://registry.npmmirror.com/strip-ansi/-/strip-ansi-6.0.1.tgz",
"integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==",
"license": "MIT",
"dependencies": {
"ansi-regex": "^5.0.1"
},
"engines": {
"node": ">=8"
}
},
"node_modules/uqrcodejs": {
"version": "4.0.7",
"resolved": "https://registry.npmmirror.com/uqrcodejs/-/uqrcodejs-4.0.7.tgz",
"integrity": "sha512-84+aZmD2godCVI+93lxE3YUAPNY8zAJvNA7xRS7R7U+q57KzMDepBSfNCwoRUhWOfR6eHFoAOcHRPwsP6ka1cA==",
"license": "Apache-2.0"
},
"node_modules/vue": {
"version": "2.7.16",
"resolved": "https://registry.npmmirror.com/vue/-/vue-2.7.16.tgz",
@@ -203,6 +437,67 @@
"resolved": "https://registry.npmjs.org/vue-i18n/-/vue-i18n-8.20.0.tgz",
"integrity": "sha512-ZiAOoeR4d/JtKpbjipx3I80ey7cYG1ki5gQ7HwzWm4YFio9brA15BEYHjalEoBaEfzF5OBEZP+Y2MvAaWnyXXg==",
"deprecated": "Vue I18n v8.x has reached EOL and is no longer actively maintained. About maintenance status, see https://vue-i18n.intlify.dev/guide/maintenance.html"
},
"node_modules/which-module": {
"version": "2.0.1",
"resolved": "https://registry.npmmirror.com/which-module/-/which-module-2.0.1.tgz",
"integrity": "sha512-iBdZ57RDvnOR9AGBhML2vFZf7h8vmBjhoaZqODJBFWHVtKkDmKuHai3cx5PgVMrX5YDNp27AofYbAwctSS+vhQ==",
"license": "ISC"
},
"node_modules/wrap-ansi": {
"version": "6.2.0",
"resolved": "https://registry.npmmirror.com/wrap-ansi/-/wrap-ansi-6.2.0.tgz",
"integrity": "sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA==",
"license": "MIT",
"dependencies": {
"ansi-styles": "^4.0.0",
"string-width": "^4.1.0",
"strip-ansi": "^6.0.0"
},
"engines": {
"node": ">=8"
}
},
"node_modules/y18n": {
"version": "4.0.3",
"resolved": "https://registry.npmmirror.com/y18n/-/y18n-4.0.3.tgz",
"integrity": "sha512-JKhqTOwSrqNA1NY5lSztJ1GrBiUodLMmIZuLiDaMRJ+itFd+ABVE8XBjOvIWL+rSqNDC74LCSFmlb/U4UZ4hJQ==",
"license": "ISC"
},
"node_modules/yargs": {
"version": "15.4.1",
"resolved": "https://registry.npmmirror.com/yargs/-/yargs-15.4.1.tgz",
"integrity": "sha512-aePbxDmcYW++PaqBsJ+HYUFwCdv4LVvdnhBy78E57PIor8/OVvhMrADFFEDh8DHDFRv/O9i3lPhsENjO7QX0+A==",
"license": "MIT",
"dependencies": {
"cliui": "^6.0.0",
"decamelize": "^1.2.0",
"find-up": "^4.1.0",
"get-caller-file": "^2.0.1",
"require-directory": "^2.1.1",
"require-main-filename": "^2.0.0",
"set-blocking": "^2.0.0",
"string-width": "^4.2.0",
"which-module": "^2.0.0",
"y18n": "^4.0.0",
"yargs-parser": "^18.1.2"
},
"engines": {
"node": ">=8"
}
},
"node_modules/yargs-parser": {
"version": "18.1.3",
"resolved": "https://registry.npmmirror.com/yargs-parser/-/yargs-parser-18.1.3.tgz",
"integrity": "sha512-o50j0JeToy/4K6OZcaQmW6lyXXKhq7csREXcDwk2omFPJEwUNOVtJKvmDr9EI1fAJZUyZcRF7kxGBWmRXudrCQ==",
"license": "ISC",
"dependencies": {
"camelcase": "^5.0.0",
"decamelize": "^1.2.0"
},
"engines": {
"node": ">=6"
}
}
}
}

View File

@@ -23,6 +23,7 @@
"dependencies": {
"@icon-park/vue": "^1.3.5",
"hls.js": "^1.6.11",
"uqrcodejs": "^4.0.7",
"vue-i18n": "^8.20.0"
}
}

View File

@@ -1,528 +1,308 @@
{
"easycom": {
"^u-(.*)": "@/uview-ui/components/u-$1/u-$1.vue"
},
//案列页面
// "pages": [
// {
// "path": "pages/sys/login/index",
// "style": {
// "navigationBarTitleText": "登录"
// }
// },
// {
// "path": "pages/sys/login/forget",
// "style": {
// "navigationBarTitleText": "忘记密码"
// }
// },
// {
// "path": "pages/sys/login/reg",
// "style": {
// "navigationBarTitleText": "注册账号"
// }
// },
// {
// "path": "pages/sys/msg/index",
// "style": {
// "navigationBarTitleText": "消息"
// }
// },
// {
// "path": "pages/sys/msg/form",
// "style": {
// "navigationBarTitleText": "查看详情"
// }
// },
// {
// "path": "pages/sys/home/index",
// "style": {
// "navigationBarTitleText": "工作台",
// "navigationStyle": "custom" // 隐藏系统导航栏
// }
// },
// {
// "path": "pages/sys/user/index",
// "style": {
// "navigationBarTitleText": "我的",
// "navigationBarBackgroundColor":"#5b95ff",
// "navigationBarTextStyle": "white"
// }
// },
// {
// "path": "pages/sys/user/info",
// "style": {
// "navigationBarTitleText": "个人信息"
// }
// },
// {
// "path": "uview-ui/components/u-avatar-cropper/u-avatar-cropper",
// "style": {
// "navigationBarTitleText": "头像裁剪",
// "navigationBarBackgroundColor": "#000000"
// }
// },
// {
// "path": "pages/sys/user/help",
// "style": {
// "navigationBarTitleText": "帮助中心"
// }
// },
// {
// "path": "pages/sys/user/pwd",
// "style": {
// "navigationBarTitleText": "修改密码"
// }
// },
// {
// "path": "pages/sys/user/setting",
// "style": {
// "navigationBarTitleText": "系统设置"
// }
// },
// {
// "path": "pages/sys/user/comment",
// "style": {
// "navigationBarTitleText": "意见反馈"
// }
// },
// {
// "path": "pages/sys/user/about",
// "style": {
// "navigationBarTitleText": "关于我们"
// }
// },
// {
// "path": "pages/testData/form",
// "style": {
// "navigationBarTitleText": "新增编辑"
// }
// },
// {
// "path": "pages/testData/index",
// "style": {
// "navigationBarTitleText": "增删改查"
// }
// },
// {
// "path": "pages/common/webview",
// "style": {
// "navigationBarTitleText": "浏览网页"
// }
// },
// {
// "path": "pages/sys/login/code",
// "style": {
// "navigationBarTitleText": "验证码"
// }
// },
// {
// "path": "pages/sys/login/registerCode",
// "style": {
// "navigationBarTitleText": "验证码"
// }
// },
// {
// "path": "pages/sys/user/service",
// "style": {
// "navigationBarTitleText": "联系客服"
// }
// },
// {
// "path": "pages/sys/user/problem",
// "style": {
// "navigationBarTitleText": "常见问题"
// }
// },
// {
// "path": "pages/sys/user/currency",
// "style": {
// "navigationBarTitleText": "通用"
// }
// },
// {
// "path": "pages/sys/user/clear-cache",
// "style": {
// "navigationBarTitleText": "清除缓存"
// }
// },
// {
// "path": "pages/sys/workbench/index",
// "style": {
// "navigationBarTitleText": "工作台"
// }
// },
// {
// "path": "pages/sys/book/index",
// "style": {
// "navigationBarTitleText": "通讯录"
// }
// },
// {
// "path": "pages/sys/book/personal-details",
// "style": {
// "navigationBarTitleText": "详情"
// }
// },
// {
// "path": "pages/sys/msg/list-item",
// "style": {
// "navigationBarTitleText": "列表"
// }
// },
// {
// "path": "pages/sys/workbench/add-form",
// "style": {
// "navigationBarTitleText": "请假申请"
// }
// },
// {
// "path": "pages/sys/msg/examine-item",
// "style": {
// "navigationBarTitleText": "网上报销"
// }
// },
// {
// "path": "pages/sys/msg/details",
// "style": {
// "navigationBarTitleText": "详情"
// }
// },
// {
// "path": "pages/sys/user/modify",
// "style": {
// "navigationBarTitleText": "修改"
// }
// },
// {
// "path": "pages/sys/workbench/install",
// "style": {
// "navigationBarTitleText": "常用设置",
// "navigationStyle": "custom" // 隐藏系统导航栏
// }
// }
// ],
// "tabBar": {
// "color": "#333333",
// "selectedColor": "#4094ff",
// "backgroundColor": "#ffffff",
// "borderStyle": "white",
// "list": [
// {
// "pagePath": "pages/sys/msg/index",
// "iconPath": "static/aidex/tabbar/msg_1.png",
// "selectedIconPath": "static/aidex/tabbar/msg_2.png",
// "text": "消息"
// },
// // {
// // "pagePath": "pages/sys/home/index",
// // "iconPath": "static/aidex/tabbar/home_1.png",
// // "selectedIconPath": "static/aidex/tabbar/home_2.png",
// // "text": "首页"
// // },
// {
// "pagePath": "pages/sys/workbench/index",
// "iconPath": "static/aidex/tabbar/apply_1.png",
// "selectedIconPath": "static/aidex/tabbar/apply_2.png",
// "text": "工作台"
// },
// {
// "pagePath": "pages/sys/book/index",
// "iconPath": "static/aidex/tabbar/book_1.png",
// "selectedIconPath": "static/aidex/tabbar/book_2.png",
// "text": "通讯录"
// },
// {
// "pagePath": "pages/sys/user/index",
// "iconPath": "static/aidex/tabbar/my_1.png",
// "selectedIconPath": "static/aidex/tabbar/my_2.png",
// "text": "我的"
// }
// ]
// },
"pages": [{
"path": "pages/sys/login/login",
"style": {
"navigationBarTitleText": "登录",
"navigationStyle": "custom" // 隐藏系统导航栏
}
},
{
"path": "pages/sys/home/home",
"style": {
"navigationStyle": "custom"
}
},
{
"path": "pages/sys/workbench/workbench",
"style": {
"navigationStyle": "custom"
}
},
{
"path": "pages/sys/user/mine",
"style": {
"navigationStyle": "custom"
}
},
{
"path": "pages/sys/user/changeInfo/changeInfo",
"style": {
"navigationStyle": "custom"
}
},
{
"path": "pages/sys/user/message/message",
"style": {
"navigationStyle": "custom"
}
},
{
"path": "pages/sys/user/serviceCenter/serviceCenter",
"style": {
"navigationBarTitleText": "服务中心"
}
},
{
"path": "pages/sys/user/serviceCenter/questionDetail",
"style": {
"navigationBarTitleText": "服务中心"
}
},
{
"path": "pages/sys/user/myVisitor/myVisitor",
"style": {
"navigationBarTitleText": "我的访客"
}
},
{
"path": "pages/sys/user/myVisitor/creatVisitor",
"style": {
"navigationBarTitleText": "发起邀约"
}
},
{
"path": "pages/sys/user/myVisitor/creatVisitor2",
"style": {
"navigationBarTitleText": "发起邀约"
}
},
{
"path": "pages/sys/user/myVisitor/selectRoom",
"style": {
"navigationBarTitleText": "选择服务地址"
}
},
{
"path": "pages/sys/user/myVisitor/visitorInfo",
"style": {
"navigationStyle": "custom"
}
},
{
"path": "pages/sys/user/myPayment/myPayment",
"style": {
"navigationBarTitleText": "停车缴费"
}
},
{
"path": "pages/sys/user/myPayment/paymentRecords",
"style": {
"navigationBarTitleText": "缴费记录"
}
},
{
"path": "pages/sys/user/myPayment/myCarCode",
"style": {
"navigationBarTitleText": "我的车牌"
}
},
{
"path": "pages/sys/user/myRepair/myRepair",
"style": {
"navigationBarTitleText": "报事报修"
}
},
{
"path": "pages/sys/user/myRepair/addRepair",
"style": {
"navigationBarTitleText": "新增报事报修"
}
},
{
"path": "pages/sys/user/myRepair/selectLocation",
"style": {
"navigationBarTitleText": "选择服务地址"
}
},
{
"path": "pages/sys/user/myRepair/repaired",
"style": {
"navigationStyle": "custom"
}
},
{
"path": "pages/sys/user/myRepair/repairEvaluate",
"style": {
"navigationBarTitleText": "服务评价"
}
},
{
"path": "pages/sys/user/myRecord/myRecord",
"style": {
"navigationStyle": "custom"
}
},
{
"path": "pages/sys/workbench/oa/oa",
"style": {
"navigationBarTitleText": "审批中心"
}
},
{
"path": "pages/sys/workbench/oa/oaDetail",
"style": {
"navigationStyle": "custom"
}
},
{
"path" : "pages/sys/workbench/order/order",
"style" :
{
"navigationBarTitleText": "工单管理"
}
},
{
"path" : "pages/sys/workbench/order/createOrder",
"style" :
{
"navigationBarTitleText": "创建工单"
}
},
{
"path" : "pages/sys/workbench/order/orderDetail",
"style" :
{
"navigationBarTitleText": "工单详情"
}
},
{
"path" : "pages/sys/workbench/meet/meet",
"style" :
{
"navigationBarTitleText" : "会议预约"
}
},
{
"path" : "pages/sys/workbench/meet/createMeet",
"style" :
{
"navigationBarTitleText" : "会议室预约"
}
},
{
"path" : "pages/sys/workbench/camera",
"style" :
{
"navigationStyle": "custom"
}
},
{
"path" : "pages/sys/workbench/monitor/monitors",
"style" :
{
"navigationBarTitleText" : "监控室"
}
},
{
"path" : "pages/sys/workbench/monitor/monitorplay",
"style" :
{
"navigationStyle": "custom"
}
},
{
"path" : "pages/sys/workbench/earlyWarning/earlyWarning",
"style" :
{
"navigationStyle": "custom"
}
},
{
"path" : "pages/sys/workbench/earlyWarning/warnDetail",
"style" :
{
"navigationBarTitleText" : "预警详情"
}
},
{
"path" : "pages/sys/workbench/earlyWarning/warnStatistics",
"style" :
{
"navigationBarTitleText" : "预警统计"
}
},
{
"path" : "pages/sys/workbench/inspection/inspection",
"style" :
{
"navigationBarTitleText" : "工作巡检"
}
},
{
"path" : "pages/sys/workbench/inspection/inspectionProcess",
"style" :
{
"navigationBarTitleText" : "巡检任务"
}
}
],
"tabBar": {
"color": "#232323",
"selectedColor": "#0652FF",
"backgroundColor": "#fff",
"borderStyle": "black",
"list": [{
"pagePath": "pages/sys/home/home",
"iconPath": "static/ic_main_home.png",
"selectedIconPath": "static/ic_main_home_selected.png",
"text": "首页"
},
{
"pagePath": "pages/sys/workbench/workbench",
"iconPath": "static/ic_main_work.png",
"selectedIconPath": "static/ic_main_work_selected.png",
"text": "工作台"
},
{
"pagePath": "pages/sys/user/mine",
"iconPath": "static/ic_main_mine.png",
"selectedIconPath": "/static/ic_main_mine_selected.png",
"text": "我的"
}
]
},
"subPackages": [
],
"preloadRule": {
},
"globalStyle": {
"navigationBarTextStyle": "black",
"navigationBarTitleText": "Aidex",
"navigationBarBackgroundColor": "#ffffff"
},
"easycom": {
"autoscan": true,
"custom": {
"^u-(.*)": "uview-ui/components/u-$1/u-$1.vue"
}
}
"easycom": {
"^u-(.*)": "@/uview-ui/components/u-$1/u-$1.vue"
},
"pages": [
{
"path": "pages/sys/login/login",
"style": {
"navigationBarTitleText": "登录",
"navigationStyle": "custom"
// 隐藏系统导航栏
}
},
{
"path": "pages/sys/home/home",
"style": {
"navigationStyle": "custom"
}
},
{
"path": "pages/sys/workbench/workbench",
"style": {
"navigationStyle": "custom"
}
},
{
"path": "pages/sys/user/mine",
"style": {
"navigationStyle": "custom"
}
},
{
"path": "pages/sys/user/changeInfo/changeInfo",
"style": {
"navigationStyle": "custom"
}
},
{
"path": "pages/sys/user/message/message",
"style": {
"navigationStyle": "custom"
}
},
{
"path": "pages/sys/user/serviceCenter/serviceCenter",
"style": {
"navigationBarTitleText": "服务中心"
}
},
{
"path": "pages/sys/user/serviceCenter/questionDetail",
"style": {
"navigationBarTitleText": "服务中心"
}
},
{
"path": "pages/sys/user/myVisitor/myVisitor",
"style": {
"navigationBarTitleText": "我的访客"
}
},
{
"path": "pages/sys/user/myVisitor/creatVisitor",
"style": {
"navigationBarTitleText": "发起邀约"
}
},
{
"path": "pages/sys/user/myVisitor/creatVisitor2",
"style": {
"navigationBarTitleText": "发起邀约"
}
},
{
"path": "pages/sys/user/myVisitor/selectRoom",
"style": {
"navigationBarTitleText": "选择服务地址"
}
},
{
"path": "pages/sys/user/myVisitor/visitorInfo",
"style": {
"navigationStyle": "custom"
}
},
{
"path": "pages/sys/user/myPayment/myPayment",
"style": {
"navigationBarTitleText": "停车缴费"
}
},
{
"path": "pages/sys/user/myPayment/paymentRecords",
"style": {
"navigationBarTitleText": "缴费记录"
}
},
{
"path": "pages/sys/user/myPayment/myCarCode",
"style": {
"navigationBarTitleText": "我的车牌"
}
},
{
"path": "pages/sys/user/myRepair/myRepair",
"style": {
"navigationBarTitleText": "报事报修"
}
},
{
"path": "pages/sys/user/myRepair/addRepair",
"style": {
"navigationBarTitleText": "新增报事报修"
}
},
{
"path": "pages/sys/user/myRepair/selectLocation",
"style": {
"navigationBarTitleText": "选择服务地址"
}
},
{
"path": "pages/sys/user/myRepair/repaired",
"style": {
"navigationStyle": "custom"
}
},
{
"path": "pages/sys/user/myRepair/repairEvaluate",
"style": {
"navigationBarTitleText": "服务评价"
}
},
{
"path": "pages/sys/user/myRecord/myRecord",
"style": {
"navigationStyle": "custom"
}
},
{
"path": "pages/sys/workbench/oa/oa",
"style": {
"navigationBarTitleText": "审批中心"
}
},
{
"path": "pages/sys/workbench/oa/oaDetail",
"style": {
"navigationStyle": "custom"
}
},
{
"path": "pages/sys/workbench/order/order",
"style": {
"navigationBarTitleText": "工单管理"
}
},
{
"path": "pages/sys/workbench/order/createOrder",
"style": {
"navigationBarTitleText": "创建工单"
}
},
{
"path": "pages/sys/workbench/order/orderDetail",
"style": {
"navigationBarTitleText": "工单详情"
}
},
{
"path": "pages/sys/workbench/meet/meet",
"style": {
"navigationBarTitleText": "会议预约"
}
},
{
"path": "pages/sys/workbench/meet/createMeet",
"style": {
"navigationBarTitleText": "会议室预约"
}
},
{
"path": "pages/sys/workbench/camera",
"style": {
"navigationStyle": "custom"
}
},
{
"path": "pages/sys/workbench/monitor/monitors",
"style": {
"navigationBarTitleText": "监控室"
}
},
{
"path": "pages/sys/workbench/monitor/monitorplay",
"style": {
"navigationStyle": "custom"
}
},
{
"path": "pages/sys/workbench/earlyWarning/earlyWarning",
"style": {
"navigationStyle": "custom"
}
},
{
"path": "pages/sys/workbench/earlyWarning/warnDetail",
"style": {
"navigationBarTitleText": "预警详情"
}
},
{
"path": "pages/sys/workbench/earlyWarning/warnStatistics",
"style": {
"navigationBarTitleText": "预警统计"
}
},
{
"path": "pages/sys/workbench/inspection/inspection",
"style": {
"navigationBarTitleText": "工作巡检"
}
},
{
"path": "pages/sys/workbench/inspection/inspectionProcess",
"style": {
"navigationBarTitleText": "巡检任务"
}
},
{
"path": "pages/sys/workbench/unitManagement/unitManagement",
"style": {
"navigationBarTitleText": "单位管理"
}
},
{
"path": "pages/sys/workbench/unitManagement/employeeAudits",
"style": {
"navigationBarTitleText": "员工审核"
}
},
{
"path": "pages/sys/workbench/unitManagement/auditsDetail",
"style": {
"navigationBarTitleText": "审核详情"
}
},
{
"path": "pages/sys/workbench/unitManagement/employeeManagement",
"style": {
"navigationBarTitleText": "员工管理"
}
},
{
"path": "pages/sys/workbench/unitManagement/employeeEdit",
"style": {
"navigationBarTitleText": "员工审核"
}
},
{
"path": "pages/sys/workbench/unitManagement/employeeAdd",
"style": {
"navigationBarTitleText": "员工注册"
}
}
],
"tabBar": {
"color": "#232323",
"selectedColor": "#0652FF",
"backgroundColor": "#fff",
"borderStyle": "black",
"list": [
{
"pagePath": "pages/sys/home/home",
"iconPath": "static/ic_main_home.png",
"selectedIconPath": "static/ic_main_home_selected.png",
"text": "首页"
},
{
"pagePath": "pages/sys/workbench/workbench",
"iconPath": "static/ic_main_work.png",
"selectedIconPath": "static/ic_main_work_selected.png",
"text": "工作台"
},
{
"pagePath": "pages/sys/user/mine",
"iconPath": "static/ic_main_mine.png",
"selectedIconPath": "/static/ic_main_mine_selected.png",
"text": "我的"
}
]
},
"subPackages": [
],
"preloadRule": {
},
"globalStyle": {
"navigationBarTextStyle": "black",
"navigationBarTitleText": "Aidex",
"navigationBarBackgroundColor": "#ffffff"
},
"easycom": {
"autoscan": true,
"custom": {
"^u-(.*)": "uview-ui/components/u-$1/u-$1.vue"
}
}
}

View File

@@ -134,10 +134,9 @@
async realSubmit() {
let res = await this.$u.api.addOrder2(this.repairInfo);
if (res.code == '200') {
// 关闭页面前发送事件通知前页面刷新
uni.$emit('refreshData', '');
// 返回上一页
uni.navigateBack();
uni.navigateTo({
url: '/pages/sys/user/myRepair/repaired'
});
}
},

View File

@@ -245,34 +245,27 @@
position: relative;
}
.repair-empty-img-box {
border: 2rpx dashed #BDBDBD;
border-radius: 8rpx;
background: #fafbfc;
width: 100%;
min-height: 220rpx;
height: 500rpx;
display: flex;
align-items: center;
justify-content: center;
}
.repair-empty-img {
width: 90%;
max-width: 400rpx;
height: 180rpx;
width: 100%;
height: 100%;
object-fit: contain;
margin: 24rpx auto;
}
.repair-add-btn-box {
position: absolute;
right: 24rpx;
top: 500rpx;
right: -20rpx;
bottom: -40rpx;
}
.repair-add-btn {
width: 80rpx;
height: 80rpx;
border: 2rpx dashed #BDBDBD;
width: 100rpx;
height: 100rpx;
border-radius: 50%;
background: #fff;
box-shadow: 0 2rpx 8rpx rgba(0, 0, 0, 0.08);
}
.repair-list-box {
margin: 32rpx 0 0 0;
@@ -341,12 +334,13 @@
}
.repair-add-btn-fixed {
position: fixed;
right: 40rpx;
right: 5rpx;
bottom: 80rpx;
width: 100rpx;
height: 100rpx;
z-index: 100;
transition: transform 0.3s ease;
top: 50%;
transform: translateX(0);
}
.repair-add-btn-fixed.hide { transform: translateX(200%); }

View File

@@ -44,16 +44,16 @@
detailItem: null // 接收传递的详情项
}
},
onLoad(options) {
// 接收传递的detailItem参数
if (options.detailItem) {
try {
this.detailItem = JSON.parse(decodeURIComponent(options.detailItem));
} catch (e) {
console.error('解析detailItem参数失败', e);
}
}
},
// onLoad(options) {
// // 接收传递的detailItem参数
// if (options.detailItem) {
// try {
// this.detailItem = JSON.parse(decodeURIComponent(options.detailItem));
// } catch (e) {
// console.error('解析detailItem参数失败', e);
// }
// }
// },
methods: {
// 删除图片
deletePic(event) {

View File

@@ -3,7 +3,6 @@
<!-- 顶部栏 -->
<view class="repaired-navbar">
<image src="/static/ic_back.png" class="repaired-back" @click="goBack" />
<text class="repaired-progress" @click="goProgress">查看进度</text>
</view>
<!-- 成功图标 -->
<view class="repaired-icon-box">
@@ -13,7 +12,7 @@
<view class="repaired-title">提交成功</view>
<view class="repaired-desc">提交成功后我们将及时为您服务</view>
<!-- 返回首页按钮 -->
<button class="repaired-btn" @click="goHome">返回首页</button>
<button class="repaired-btn" @click="goMyREpair">返回报事报修管理</button>
</view>
</template>
@@ -23,12 +22,10 @@ export default {
goBack() {
uni.navigateBack();
},
goProgress() {
// 跳转到进度页面
uni.showToast({ title: '查看进度', icon: 'none' });
},
goHome() {
uni.switchTab({ url: '/pages/home/home' });
goMyREpair() {
uni.navigateTo({
url: '/pages/sys/user/myRepair/myRepair'
});
}
}
}

View File

@@ -10,23 +10,21 @@
</view>
<!-- 列表区 -->
<view class="ins-list">
<view v-for="(item, idx) in list" :key="idx" class="ins-card" @click="goProcess(item)">
<view class="ins-row">
<view class="ins-no">保洁部日常巡检 {{ item.createTime.substring(0,11) }}</view>
<view class="ins-status" :class="getStatusColor(item.status)">
{{ getStatusLabel(item.status) }}
</view>
</view>
<image class="ins-line-image" src="/static/ic_my_repair_03.png" />
<view class="ins-info">巡检人{{ item.createTime }}</view>
<view class="ins-info">计划完成时间{{ item.typeName }}</view>
<view class="ins-info">实际完成时间{{ item.location }}</view>
<view class="ins-info">巡检进度{{ item.location }}</view>
</view>
<view v-for="(item, idx) in list" :key="idx" class="ins-card" @click="goProcess(item)">
<view class="ins-row">
<view class="ins-no">保洁部日常巡检 {{ item.createTime.substring(0,11) }}</view>
<view class="ins-status" :class="getStatusColor(item.status)">
{{ getStatusLabel(item.status) }}
</view>
</view>
<image class="ins-line-image" src="/static/ic_my_repair_03.png" />
<view class="ins-info">巡检人{{ item.createTime }}</view>
<view class="ins-info">计划完成时间{{ item.typeName }}</view>
<view class="ins-info">实际完成时间{{ item.location }}</view>
<view class="ins-info">巡检进度{{ item.location }}</view>
</view>
</view>
</view>
</view>
</template>
<script>
@@ -79,10 +77,10 @@
this.$set(this.tabLoaded, idx, true);
this.loading = false;
},
goProcess(item) {
goProcess(item) {
const detailItemStr = encodeURIComponent(JSON.stringify(item));
uni.navigateTo({
url: `/pages/sys/workbench/inspection/inspectionProcess?detailItem=${item}`
uni.navigateTo({
url: `/pages/sys/workbench/inspection/inspectionProcess?detailItem=${item}`
});
},
@@ -180,43 +178,43 @@
margin-top: 25rpx;
margin-left: 19rpx;
margin-right: 50rpx;
}
.ins-no {
font-size: 24rpx;
color: #0B0B0B;
font-weight: 500;
}
.ins-status {
font-size: 24rpx;
font-weight: 500;
}
.ins-line-image {
margin: left 29rpx;
margin-right: 39rpx;
height: 2rpx;
margin-bottom: 29rpx;
}
.ins-status.orange {
color: #F3AB44;
}
.ins-status.doing {
color: #00C9AA;
}
.ins-status.done {
color: #8A8A8A;
}
.ins-info {
font-size: 24rpx;
color: #888;
margin-bottom: 30rpx;
margin-left: 47rpx;
}
.ins-no {
font-size: 24rpx;
color: #0B0B0B;
font-weight: 500;
}
.ins-status {
font-size: 24rpx;
font-weight: 500;
}
.ins-line-image {
margin: left 29rpx;
margin-right: 39rpx;
height: 2rpx;
margin-bottom: 29rpx;
}
.ins-status.orange {
color: #F3AB44;
}
.ins-status.doing {
color: #00C9AA;
}
.ins-status.done {
color: #8A8A8A;
}
.ins-info {
font-size: 24rpx;
color: #888;
margin-bottom: 30rpx;
margin-left: 47rpx;
}
</style>

View File

@@ -57,15 +57,7 @@
</view>
</view>
<!-- 底部操作按钮 -->
<view
v-if="((!isManager && detailStep != 0) || (isManager && detailStep == 0)) && detailStep != 3&&!isNaomalUser"
class="btn-group">
<button class="btn ghost"
@click="transfer(1)">{{ isManager ? '指派' : (detailStep == 2 ? '完成' : '开始') }}</button>
<button v-if="detailStep == 1" class="btn primary" @click="transfer(2)">转派</button>
</view>
<view class="kg">
<view class="kg">
</view>
<SelectUser :visible.sync="showSelect" :list="users" :multiple="false" @confirm="onConfirm" />
</view>

View File

@@ -0,0 +1,205 @@
<template>
<view class="page-container">
<!-- 渐变蓝色背景 -->
<view class="gradient-bg"></view>
<!-- 用户信息卡片 -->
<view class="user-card">
<view class="user-info">
<view class="info-row">
<text class="label">用户姓名</text>
<text class="value">余永乐</text>
</view>
<view class="info-row">
<text class="label">性别</text>
<text class="value"></text>
</view>
<view class="info-row">
<text class="label">证件号</text>
<text class="value">5001255658789955</text>
</view>
<view class="info-row">
<text class="label">联系电话</text>
<text class="value">17898987887</text>
</view>
<view class="info-row">
<text class="label">所属单位</text>
<text class="value">x x x x x</text>
</view>
<!-- 人脸图片区域 -->
<view class="face-image-section">
<text class="label">人脸图片</text>
<image
class="face-image"
:src="auditsDetail.avatar || '/static/ic_avg.png'"
mode="aspectFill"
/>
</view>
</view>
</view>
<view class="user-card">
<view class="user-info">
<view class="info-row">
<text class="label">邮箱</text>
<text class="value">-</text>
</view>
<view class="info-row">
<text class="label">车牌号</text>
<text class="value">-</text>
</view>
</view>
</view>
<!-- 底部按钮 -->
<view v-if="pageType === 'handle'" class="action-buttons">
<button class="approve-btn" @click="handleApprove">通过</button>
<button class="reject-btn" @click="handleReject">拒绝</button>
</view>
</view>
</template>
<script>
export default {
data() {
return {
pageType: 'handle', // 'handle' 或 'detail'
auditsDetail: {},
handleDesc: '',
selectedImages: [],
realImages: [],
infoImages: []
};
},
methods: {
// 原有方法保持不变...
handleApprove() {
console.log('approve');
},
handleReject() {
console.log('reject');
},
async submit(action) {
// 提交逻辑...
},
// 其他原有方法...
}
};
</script>
<style scoped>
/* 渐变蓝色背景 */
.gradient-bg {
position: fixed;
top: 0;
left: 0;
right: 0;
height: 500rpx;
background: linear-gradient(to bottom, #0A60ED, #FFFFFF);
z-index: -1;
}
.page-container {
padding: 48rpx 30rpx;
background-color: transparent;
min-height: 100vh;
box-sizing: border-box;
}
/* 用户信息卡片样式 */
.user-card {
background-color: #fff;
border-radius: 16rpx;
padding: 30rpx;
margin-bottom: 20rpx;
box-shadow: 0 4rpx 12rpx rgba(0, 0, 0, 0.08);
}
.user-info {
width: 100%;
}
.info-row {
display: flex;
justify-content: space-between;
margin-bottom: 32rpx;
font-size: 32rpx;
}
.info-row .label {
color: #000;
font-weight: 500;
}
.info-row .value {
color: #7F7F7F;
}
/* 人脸图片区域 */
.face-image-section {
margin-bottom: 32rpx;
}
.face-image-section .label {
display: block;
margin-bottom: 20rpx;
color: #000;
font-weight: 500;
}
.face-image {
width: 200rpx;
height: 200rpx;
border-radius: 8rpx;
border: 1rpx solid #eee;
}
/* 底部按钮样式 */
.action-buttons {
display: flex;
justify-content: space-between;
margin-top: 40rpx;
padding: 0 30rpx;
}
.action-buttons button {
flex: 1;
height: 88rpx;
line-height: 88rpx;
border-radius: 44rpx;
font-size: 32rpx;
font-weight: 500;
}
.reject-btn {
background-color: transparent;
color: #0190FF;
border: 2rpx solid #0190FF;
margin-left: 20rpx;
transition: all 0.15s ease; /* 添加过渡效果 */
}
.reject-btn:active {
color: #FFFFFF; /* 文字改为白色 */
background-color: #0170CC; /* 背景改为深蓝色 */
border-color: #0170CC;
box-shadow: 0 4rpx 12rpx rgba(1, 112, 204, 0.4); /* 阴影加深 */
transform: translateY(2rpx); /* 轻微下压效果 */
}
.approve-btn {
background-color: #0190FF;
color: #fff;
border: none;
transition: all 0.15s ease; /* 添加过渡效果 */
}
.approve-btn:active {
background-color: #0150A0; /* 更深的蓝色 */
box-shadow: 0 4rpx 12rpx rgba(1, 80, 160, 0.4); /* 阴影加深 */
transform: translateY(2rpx); /* 轻微下压效果 */
}
</style>

View File

@@ -0,0 +1,348 @@
<template>
<view class="register-container">
<!-- 表单内容 -->
<view class="form-content">
<!-- 所属单位 -->
<view class="form-item">
<text class="item-label">所属单位</text>
<input class="item-input" type="text" placeholder="区农委办" disabled/>
</view>
<!-- 用户姓名 -->
<view class="form-item">
<text class="item-label required">用户姓名</text>
<input class="item-input" type="text" placeholder="请输入"/>
</view>
<!-- 性别 -->
<view class="form-item">
<text class="item-label required">性别</text>
<picker class="item-input" @change="bindPickerChange" :value="index" :range="array">
<view class="picker-content">{{array[index]}}</view>
</picker>
</view>
<!-- 证件号 -->
<view class="form-item">
<text class="item-label required">证件号</text>
<input class="item-input" type="text" placeholder="请输入"/>
</view>
<!-- 联系电话 -->
<view class="form-item">
<text class="item-label required">联系电话</text>
<input class="item-input" type="number" placeholder="请输入"/>
</view>
<!-- 验证码 -->
<view class="form-item">
<text class="item-label required">验证码</text>
<view class="code-input-wrapper">
<input class="item-input code-input" type="number" placeholder="请输入"/>
<button class="get-code-btn">获取验证码</button>
</view>
</view>
<!-- 登录密码 -->
<view class="form-item">
<text class="item-label required">登录密码</text>
<input class="item-input" type="password" placeholder="请输入"/>
</view>
<!-- 确认密码 -->
<view class="form-item">
<text class="item-label required">确认密码</text>
<input class="item-input" type="password" placeholder="请输入"/>
</view>
<!-- 密码提示 -->
<view class="form-tip password-tip">
密码至少包含8~20位大写字母小写字母数字和特殊字符 (!@$%^&*$%&+&*=\[]?)其中的任意一种
</view>
<!-- 人脸照片 - 独立表单项 -->
<view class="form-item face-upload-item">
<text class="item-label">人脸照片</text>
<view class="face-upload-container">
<view class="upload-wrapper">
<button class="upload-btn" @click="chooseImage">+</button>
<view class="image-preview" v-if="imageUrl">
<image :src="imageUrl" mode="aspectFill" class="preview-image"></image>
<view class="delete-btn" @click="deleteImage">×</view>
</view>
</view>
</view>
</view>
<view class="form-tip upload-tip">
请上传正脸并不超过5MB的jpg,jpeg,png,gif,webp格式文件
</view>
<!-- 邮箱和车牌号码 -->
<view class="form-item">
<text class="item-label">邮箱</text>
<input class="item-input" type="text" placeholder="请输入"/>
</view>
<view class="form-item">
<text class="item-label">车牌号码</text>
<input class="item-input" type="text" placeholder="请输入"/>
</view>
</view>
<!-- 提交按钮 -->
<button class="submit-btn">提交</button>
</view>
</template>
<script>
export default {
data() {
return {
imageUrl: '', // 存储上传的图片URL
array: ['男', '女'],
index: 0,
}
},
methods: {
bindPickerChange: function(e) {
console.log('picker发送选择改变携带值为', e.detail.value)
this.index = e.detail.value
},
// 选择图片
chooseImage() {
uni.chooseImage({
count: 1,
sizeType: ['compressed'],
sourceType: ['album', 'camera'],
success: (res) => {
const tempFilePaths = res.tempFilePaths;
this.imageUrl = tempFilePaths[0];
// 这里可以添加图片上传到服务器的逻辑
}
});
},
// 删除图片
deleteImage() {
this.imageUrl = '';
}
}
}
</script>
<style scoped>
.register-container {
padding: 20px 15px;
background-color: #f7f7f7;
min-height: 100vh;
box-sizing: border-box;
}
/* 表单内容 */
.form-content {
background-color: #fff;
border-radius: 8px;
padding: 0;
margin-bottom: 20px;
overflow: hidden;
}
/* 表单项 - 只有上下边框 */
.form-item {
display: flex;
align-items: center;
border-top: 1px solid #dcdfe6;
border-bottom: 1px solid #dcdfe6;
padding: 10px 15px;
margin: 0;
background-color: #fff;
}
/* 提示信息样式 - 独占一行灰色背景 */
.form-tip {
display: block;
width: 100%;
padding: 10px 15px;
font-size: 12px;
color: #666;
background-color: #f5f5f5;
line-height: 1.5;
}
.upload-tip {
margin-top: -1px; /* 消除与上方边框的重叠 */
}
/* 表单项标签 */
.item-label {
width: 80px;
font-size: 14px;
color: #333;
margin-right: 15px;
flex-shrink: 0;
text-align: left; /* 确保标签左对齐 */
}
/* 必填项标记 */
.item-label.required::before {
content: "*";
color: #f56c6c;
margin-right: 4px;
}
/* 输入框样式 */
.item-input {
flex: 1;
height: 40px;
border: none;
padding: 0 10px;
font-size: 14px;
box-sizing: border-box;
background: transparent;
text-align: right;
}
/* 性别选择器 */
.picker-content {
text-align: right;
color: #333; /* 修改为与输入框一致的颜色 */
line-height: 40px; /* 与输入框高度匹配 */
}
/* 验证码输入区域 */
.code-input-wrapper {
display: flex;
align-items: center;
flex: 1;
}
.code-input {
flex: 1;
margin-right: 10px;
}
.get-code-btn {
width: 100px;
height: 40px;
line-height: 40px;
font-size: 12px;
color: #409eff;
background-color: #ecf5ff;
border: 1px solid #b3d8ff;
border-radius: 4px;
padding: 0;
}
/* 上传区域 */
.upload-wrapper {
display: flex;
align-items: center;
flex: 1;
}
.upload-btn {
width: 80px;
height: 40px;
line-height: 40px;
font-size: 14px;
color: #409eff;
background-color: #ecf5ff;
border: 1px solid #b3d8ff;
border-radius: 4px;
margin-right: 10px;
padding: 0;
}
/* 提交按钮 */
.submit-btn {
width: 100%;
height: 44px;
line-height: 44px;
font-size: 16px;
color: #fff;
background-color: #409eff;
border-radius: 4px;
border: none;
}
.upload-wrapper {
display: flex;
align-items: center;
justify-content: flex-start; /* 左对齐 */
flex: 1;
}
.upload-btn {
width: 60px; /* 正方形 */
height: 60px; /* 正方形 */
line-height: 40px;
font-size: 40px; /* 加大+号 */
color: #409eff;
background-color: #ecf5ff;
border: 1px solid #b3d8ff;
border-radius: 4px;
margin-right: 10px;
padding: 0;
text-align: center;
}
.face-upload-item {
flex-direction: column;
align-items: flex-start;
}
.face-upload-container {
margin-top: 10px;
}
.upload-wrapper {
display: flex;
align-items: center;
justify-content: flex-start;
}
.upload-btn {
width: 60px;
height: 60px;
line-height: 60px;
font-size: 30px;
color: #409eff;
background-color: #ecf5ff;
border: 1px dashed #b3d8ff;
border-radius: 4px;
margin-right: 10px;
padding: 0;
text-align: center;
display: flex;
justify-content: center;
align-items: center;
}
/* 图片预览样式 */
.image-preview {
position: relative;
width: 60px;
height: 60px;
border-radius: 4px;
overflow: hidden;
}
.preview-image {
width: 100%;
height: 100%;
}
.delete-btn {
position: absolute;
top: 0;
right: 0;
width: 20px;
height: 20px;
background-color: rgba(0, 0, 0, 0.5);
color: white;
border-radius: 50%;
display: flex;
justify-content: center;
align-items: center;
font-size: 14px;
line-height: 1;
}
</style>

View File

@@ -0,0 +1,238 @@
<template>
<view class="audits-container">
<!-- 员工审核列表 -->
<scroll-view
class="list-container"
scroll-y
:refresher-enabled="true"
refresher-background="#f7f7f7"
:refresher-triggered="refresherTriggered"
@refresherrefresh="onRefresh"
@scrolltolower="loadMore"
:lower-threshold="50"
scroll-with-animation>
<!-- 员工审核卡片 -->
<view v-for="(item, index) in list" :key="index" class="employee-card" @click="handleCardClick(item)">
<!-- 左侧头像 -->
<image class="avatar" :src="item.avatar || '/static/ic_avg.png'"/>
<!-- 右侧信息 -->
<view class="info-container">
<view class="name-row">
<text class="name">{{ item.name }}</text>
<image
class="gender-icon"
:src="item.gender === '1' ? '/static/ic_man.png' : '/static/ic_women.png'"
/>
<text class="phone">{{ item.phone }}</text>
</view>
<text class="time">{{ item.applyTime }}</text>
</view>
<!-- 审核状态 - 精确贴合右上角 -->
<view class="status-badge"
:class="{
'status-pending': item.status === '1',
'status-processed': item.status === '2'
}">
{{ item.status === '1' ? "待处理" : "已处理" }}
</view>
</view>
<!-- 底部加载提示 -->
<view v-if="loading" class="loading-text">加载中...</view>
<view v-if="noMore" class="loading-text">没有更多数据了</view>
</scroll-view>
</view>
</template>
<script>
export default {
data() {
return {
list: [
{name: "于永乐", gender: "1", phone: "12448155", applyTime: "2025-09-01 10:51:32", status: "1"}
], // 员工列表数据
pageNum: 1, // 当前页码
pageSize: 10, // 每页数量
noMore: false, // 是否没有更多数据
loading: false, // 加载状态
refresherTriggered: false // 下拉刷新状态
};
},
created() {
this.loadData();
},
methods: {
// 下拉刷新
async onRefresh() {
this.refresherTriggered = true;
this.pageNum = 1;
this.noMore = false;
await this.loadData();
this.refresherTriggered = false;
},
// 滚动加载更多
async loadMore() {
if (this.loading || this.noMore) return;
this.pageNum++;
await this.loadData();
},
// 请求数据
async loadData() {
this.loading = true;
try {
let res = await this.$u.api.getEmployeeAuditList({
pageNum: this.pageNum,
pageSize: this.pageSize
});
if (res.code == "200") {
let rows = res.rows || [];
if (rows.length < this.pageSize) {
this.noMore = true;
}
if (this.pageNum === 1) {
this.list = rows;
} else {
this.list = [...this.list, ...rows];
}
}
} catch (e) {
console.error(e);
} finally {
this.loading = false;
}
},
// 点击卡片事件
handleCardClick(item) {
if (item.status === '1') {
uni.navigateTo({
url: `/pages/sys/workbench/unitManagement/auditsDetail`
});
}
}
}
};
</script>
<style scoped>
.audits-container {
height: 100vh;
background-color: #f7f7f7;
display: flex;
flex-direction: column;
overflow: hidden;
}
.list-container {
flex: 1;
padding: 28rpx 30rpx;
box-sizing: border-box;
}
.avatar {
width: 100rpx;
height: 100rpx;
border-radius: 50%;
margin-right: 24rpx;
}
.info-container {
flex: 1;
padding-right: 120rpx; /* 为状态标签留出空间 */
}
.name-row {
display: flex;
align-items: center;
margin-bottom: 10rpx;
}
.name {
font-size: 36rpx;
color: #333;
font-weight: bold;
margin-right: 20rpx;
}
.gender-icon {
width: 32rpx;
height: 32rpx;
margin-right: 20rpx;
}
.phone {
font-size: 26rpx;
color: #999;
}
.time {
font-size: 26rpx;
color: #999;
margin-top: 8rpx;
}
.employee-card {
background-color: #fff;
border-radius: 16rpx;
padding: 30rpx;
margin-bottom: 20rpx;
display: flex;
align-items: center;
position: relative;
box-shadow: 0 2rpx 8rpx rgba(0, 0, 0, 0.03);
overflow: hidden; /* 新增:确保状态标签圆角贴合 */
}
.status-badge {
position: absolute;
top: 0;
right: 0;
font-size: 28rpx;
padding: 6rpx 20rpx;
border-top-left-radius: 10px;
border-bottom-left-radius: 10px;
width: 26%;
text-align:left;
font-weight: bold;
color: #fff;
}
.status-pending {
background: linear-gradient(to right, #007CFF, #FFFFFF); /* 蓝色渐变 */
}
.status-processed {
background: linear-gradient(to right, #A5A5A5, #FFFFFF); /* 灰色渐变 */
color: #FBFDFF;
}
.loading-text {
text-align: center;
color: #999;
font-size: 26rpx;
padding: 20rpx;
}
/* 隐藏滚动条 */
.list-container {
-webkit-overflow-scrolling: touch;
scrollbar-width: none;
-ms-overflow-style: none;
}
.list-container::-webkit-scrollbar {
display: none;
}
:deep .list-container ::-webkit-scrollbar {
display: none !important;
width: 0 !important;
height: 0 !important;
background-color: transparent !important;
}
</style>

View File

@@ -0,0 +1,255 @@
<template>
<view class="page-container">
<!-- 用户信息卡片 -->
<view class="user-card">
<view class="user-info">
<view class="info-row">
<text class="label">用户姓名</text>
<text class="value">余永乐</text>
</view>
<view class="info-row">
<text class="label">性别</text>
<text class="value"></text>
</view>
<view class="info-row">
<text class="label">证件号</text>
<text class="value">5001255658789955</text>
</view>
<view class="info-row">
<text class="label">联系电话</text>
<text class="value">17898987887</text>
</view>
<view class="info-row">
<text class="label">所属单位</text>
<text class="value">x x x x x</text>
</view>
<!-- 人脸图片区域 -->
<view class="face-image-section">
<text class="label">人脸图片</text>
<image
class="face-image"
:src="auditsDetail.avatar || '/static/ic_avg.png'"
mode="aspectFill"
/>
</view>
</view>
</view>
<view class="user-card">
<view class="user-info">
<view class="info-row">
<text class="label">邮箱</text>
<text class="value">-</text>
</view>
<view class="info-row">
<text class="label">车牌号</text>
<text class="value">-</text>
</view>
</view>
</view>
<view class="user-card">
<view class="user-info">
<view class="info-row">
<text class="label">入驻时间</text>
<text class="value">-</text>
</view>
<view class="info-row">
<text class="label">在职状态</text>
<view class="status-options">
<!-- 启用选项 -->
<view class="radio-option" @click="changeStatus(auditsDetail, '1')">
<view class="radio-circle" :class="{ 'active': auditsDetail.status === '1' }"></view>
<text class="radio-label">启用</text>
</view>
<!-- 禁用选项 -->
<view class="radio-option" @click="changeStatus(auditsDetail, '0')">
<view class="radio-circle" :class="{ 'active': auditsDetail.status === '0' }"></view>
<text class="radio-label">禁用</text>
</view>
</view>
</view>
</view>
</view>
</view>
</template>
<script>
export default {
data() {
return {
pageType: 'handle', // 'handle' 或 'detail'
auditsDetail: {status:'0'},
handleDesc: '',
selectedImages: [],
realImages: [],
infoImages: []
};
},
methods: {
// 原有方法保持不变...
handleApprove() {
console.log('approve');
},
handleReject() {
console.log('reject');
},
async submit(action) {
// 提交逻辑...
},
// 新增状态变更方法
changeStatus(item, newStatus) {
item.status = newStatus;
// 这里可以添加API调用更新状态
this.$u.api.updateEmployeeStatus({
id: item.id,
status: newStatus
}).then(res => {
if (res.code === '200') {
uni.showToast({
title: '状态更新成功',
icon: 'success'
});
}
});
}
}
};
</script>
<style scoped>
.page-container {
padding: 48rpx 30rpx;
background-color: #f7f7f7;
min-height: 100vh;
box-sizing: border-box;
}
/* 用户信息卡片样式 */
.user-card {
background-color: #fff;
border-radius: 16rpx;
padding: 30rpx;
margin-bottom: 20rpx;
box-shadow: 0 4rpx 12rpx rgba(0, 0, 0, 0.08);
}
.user-info {
width: 100%;
}
.info-row {
display: flex;
justify-content: space-between;
margin-bottom: 32rpx;
font-size: 32rpx;
}
.info-row .label {
color: #000;
font-weight: 500;
}
.info-row .value {
color: #7F7F7F;
}
/* 人脸图片区域 */
.face-image-section {
margin-bottom: 32rpx;
}
.face-image-section .label {
display: block;
margin-bottom: 20rpx;
color: #000;
font-weight: 500;
}
.face-image {
width: 200rpx;
height: 200rpx;
border-radius: 8rpx;
border: 1rpx solid #eee;
}
/* 底部按钮样式 */
.action-buttons {
display: flex;
justify-content: space-between;
margin-top: 40rpx;
padding: 0 30rpx;
}
.action-buttons button {
flex: 1;
height: 88rpx;
line-height: 88rpx;
border-radius: 44rpx;
font-size: 32rpx;
font-weight: 500;
}
/* 状态选项容器 */
.status-options {
display: flex;
align-items: center;
margin-left: 20rpx;
}
/* 单选选项容器 */
.radio-option {
display: flex;
align-items: center;
margin-right: 40rpx;
cursor: pointer;
}
/* 圆形单选按钮 */
.radio-circle {
width: 32rpx;
height: 32rpx;
border-radius: 50%;
border: 5rpx solid #ccc;
margin-right: 10rpx;
position: relative;
transition: all 0.3s;
}
/* 激活状态的圆形 */
.radio-circle.active {
border-color: #0090FF;
}
/* 圆形中间的实心点 */
.radio-circle.active::after {
content: '';
position: absolute;
width: 32rpx;
height: 32rpx;
background-color: #0090FF;
border-radius: 50%;
border: 2rpx solid #ccc;
top: 50%;
left: 50%;
transform: translate(-50%, -50%);
}
/* 禁用状态的特殊样式 */
.radio-option:last-child .radio-circle.active {
border-color: #FF4D4F;
}
.radio-option:last-child .radio-circle.active::after {
background-color: #FF4D4F;
}
/* 选项文字 */
.radio-label {
font-size: 28rpx;
color: #333;
}
</style>

View File

@@ -0,0 +1,317 @@
<template>
<view class="audits-container">
<!-- 新增搜索栏 -->
<view class="search-bar">
<!-- 修改后的搜索栏 -->
<view class="search-bar">
<u-search
placeholder="请输入姓名或手机号搜索"
v-model="searchKeyword"
@search="handleSearch"
@clear="handleClearSearch"
:show-action="false"
bg-color="#FFFFFF"
shape="round"
:search-icon="'/static/ic_search_gray.png'"
></u-search>
</view>
</view>
<!-- 员工审核列表 -->
<scroll-view
class="list-container"
scroll-y
:refresher-enabled="true"
refresher-background="#f7f7f7"
:refresher-triggered="refresherTriggered"
@refresherrefresh="onRefresh"
@scrolltolower="loadMore"
:lower-threshold="50"
scroll-with-animation>
<!-- 员工审核卡片 -->
<view v-for="(item, index) in list" :key="index" class="employee-card">
<!-- 左侧头像 -->
<image class="avatar" :src="item.avatar || '/static/ic_avg.png'"/>
<!-- 右侧信息 -->
<view class="info-container">
<view class="name-row">
<text class="name">{{ item.name }}</text>
<image
class="gender-icon"
:src="item.gender === '1' ? '/static/ic_man.png' : '/static/ic_women.png'"
/>
</view>
<text class="phone">{{ item.phone }}</text>
</view>
<!-- 编辑图标 -->
<image
class="edit-icon"
src="/static/ic_edit.png"
@click.stop="handleCardClick(item)"
/>
<!-- 审核状态 - 精确贴合右上角 -->
<view class="date-badge">
{{ formatDate(item.applyTime ) }}
</view>
</view>
<!-- 底部加载提示 -->
<view v-if="loading" class="loading-text">加载中...</view>
<view v-if="noMore" class="loading-text">没有更多数据了</view>
<view v-if="searchKeyword && filteredList.length === 0" class="loading-text">未找到匹配结果</view>
</scroll-view>
</view>
</template>
<script>
export default {
data() {
return {
list: [
{name: "于永乐", gender: "1", phone: "12448155", applyTime: "2025-09-01 10:51:32", status: "1"}
], // 员工列表数据
pageNum: 1, // 当前页码
pageSize: 10, // 每页数量
noMore: false, // 是否没有更多数据
loading: false, // 加载状态
refresherTriggered: false, // 下拉刷新状态
searchKeyword: '', // 搜索关键词
};
},
created() {
this.loadData();
},
computed: {
// 添加过滤后的列表计算属性
filteredList() {
if (!this.searchKeyword) return this.list;
const keyword = this.searchKeyword.toLowerCase();
return this.list.filter(item =>
item.name.toLowerCase().includes(keyword) ||
(item.phone && item.phone.includes(keyword))
);
}
},
methods: {
// 下拉刷新
async onRefresh() {
this.refresherTriggered = true;
this.pageNum = 1;
this.noMore = false;
await this.loadData();
this.refresherTriggered = false;
},
// 滚动加载更多
async loadMore() {
if (this.loading || this.noMore) return;
this.pageNum++;
await this.loadData();
},
// 请求数据
async loadData() {
this.loading = true;
try {
let res = await this.$u.api.getEmployeeAuditList({
pageNum: this.pageNum,
pageSize: this.pageSize
});
if (res.code == "200") {
let rows = res.rows || [];
if (rows.length < this.pageSize) {
this.noMore = true;
}
if (this.pageNum === 1) {
this.list = rows;
} else {
this.list = [...this.list, ...rows];
}
}
} catch (e) {
console.error(e);
} finally {
this.loading = false;
}
},
// 点击卡片事件
handleCardClick(item) {
if (item.status === '1') {
uni.navigateTo({
url: `/pages/sys/workbench/unitManagement/employeeEdit`
});
}
},
// 新增搜索方法
handleSearch() {
this.pageNum = 1;
this.noMore = false;
if (this.searchKeyword) {
// 如果有搜索关键词,使用本地过滤
this.refresherTriggered = true;
setTimeout(() => {
this.refresherTriggered = false;
}, 500);
} else {
// 如果没有搜索关键词,重新加载数据
this.onRefresh();
}
},
// 新增清除搜索方法
handleClearSearch() {
this.searchKeyword = '';
this.onRefresh();
},
// 格式化日期为YYYY-MM-DD
formatDate(dateStr) {
if (!dateStr) return '';
const date = new Date(dateStr);
// 获取年月日
const year = date.getFullYear();
const month = (date.getMonth() + 1).toString().padStart(2, '0'); // 补零
const day = date.getDate().toString().padStart(2, '0'); // 补零
return `${year}-${month}-${day}`;
}
}
};
</script>
<style scoped>
.audits-container {
height: 100vh;
background-color: #f7f7f7;
display: flex;
flex-direction: column;
overflow: hidden;
}
.list-container {
flex: 1;
padding: 28rpx 30rpx;
box-sizing: border-box;
}
.avatar {
width: 100rpx;
height: 100rpx;
border-radius: 50%;
margin-right: 24rpx;
}
.info-container {
flex: 1;
padding-right: 100rpx; /* 为状态标签留出空间 */
}
.name-row {
display: flex;
align-items: center;
margin-bottom: 10rpx;
}
.name {
font-size: 36rpx;
color: #333;
font-weight: bold;
margin-right: 20rpx;
}
.gender-icon {
width: 32rpx;
height: 32rpx;
margin-right: 20rpx;
}
.phone {
font-size: 26rpx;
color: #999;
}
.employee-card {
background-color: #fff;
border-radius: 16rpx;
padding: 30rpx;
margin-bottom: 20rpx;
display: flex;
align-items: center;
position: relative;
box-shadow: 0 2rpx 8rpx rgba(0, 0, 0, 0.03);
overflow: hidden; /* 新增:确保状态标签圆角贴合 */
}
.date-badge {
position: absolute;
top: 0;
right: 0;
font-size: 28rpx;
padding: 6rpx 12rpx;
border-top-left-radius: 10px;
border-bottom-left-radius: 10px;
width: 28%;
text-align: left;
color: #ADADAD;
}
.loading-text {
text-align: center;
color: #999;
font-size: 26rpx;
padding: 20rpx;
}
/* 隐藏滚动条 */
.list-container {
-webkit-overflow-scrolling: touch;
scrollbar-width: none;
-ms-overflow-style: none;
}
.list-container::-webkit-scrollbar {
display: none;
}
:deep .list-container ::-webkit-scrollbar {
display: none !important;
width: 0 !important;
height: 0 !important;
background-color: transparent !important;
}
/* 新增搜索栏样式 */
.search-bar {
padding: 20rpx 17rpx;
background-color: #f7f7f7;
position: sticky;
top: 0;
z-index: 10;
}
/* 调整列表容器上边距 */
.list-container {
flex: 1;
padding: 0 30rpx 28rpx 30rpx; /* 上边距改为0因为搜索栏已经有padding */
box-sizing: border-box;
}
/* 新增编辑图标样式 */
.edit-icon {
width: 50rpx;
height: 50rpx;
position: absolute;
right: 50rpx;
top: 60%;
transform: translateY(-50%);
z-index: 2;
bottom: 50rpx;
}
</style>

View File

@@ -0,0 +1,370 @@
<template>
<view class="unit-management">
<!-- 顶部单位信息栏 -->
<view class="unit-header-container">
<view class="unit-header">
<image class="header-icon" src="/static/ic_enterprise.png" mode="aspectFit"/>
<view class="unit-title">南川区******单位共189人</view>
</view>
</view>
<!-- 功能模块卡片区 -->
<view class="function-container">
<!-- 左侧列员工审核+员工管理 -->
<view class="left-column">
<!-- 员工审核卡片 -->
<view class="function-card" @click="goToEmployeeReview">
<view class="card-content">
<view class="card-text">
<view class="card-title">员工审核</view>
<view class="card-subtitle">入职/审核</view>
</view>
<view class="card-icon">
<image src="/static/ic_review.png" mode="aspectFit"/>
</view>
</view>
</view>
<!-- 员工管理卡片 -->
<view class="function-card" @click="goToEmployeeManagement">
<view class="card-content">
<view class="card-text">
<view class="card-title">员工管理</view>
<view class="card-subtitle">权限/离职</view>
</view>
<view class="card-icon">
<image src="/static/ic_resign.png" mode="aspectFit"/>
</view>
</view>
</view>
</view>
<!-- 右侧邀请新员工卡片 -->
<view class="right-card" @click="showInviteDialog">
<image class="card-bg" src="/static/ic_unitBg.png" mode="aspectFill"/>
<view class="card-content">
<view class="card-text">
<view class="card-title">邀请新员工</view>
<view class="card-subtitle">入职/邀请</view>
</view>
<view class="card-icon">
<image src="/static/ic_Invite_employees.png" mode="aspectFit"/>
</view>
</view>
</view>
</view>
<!-- 邀请新员工弹窗 -->
<view class="invite-dialog" v-if="showDialog">
<view class="dialog-content">
<!-- 盾牌背景图 -->
<image class="shield-bg" src="/static/ic_shield.png" mode="aspectFit"/>
<!-- 手机插画部分 -->
<view class="phone-illustration">
<image class="phone-image" src="/static/121221.png" mode="aspectFit"/>
</view>
<!-- 二维码部分修改为动态生成 -->
<view class="qr-code-container" :style="{'--qr-size': qrSize + 'rpx'}">
<canvas id="qrcode" canvas-id="qrcode" style="width: 200px;height: 200px;"></canvas>
</view>
<!-- 关闭按钮 -->
<view class="close-circle-btn" @click.stop="hideInviteDialog">
<view class="close-x"></view>
</view>
</view>
</view>
</view>
</template>
<script>
// 引入二维码生成库
import uQRCode from 'uqrcodejs';
export default {
data() {
return {
showDialog: false,
qrSize: 400, // 与CSS中保持一致
}
},
methods: {
goToEmployeeReview() {
uni.navigateTo({
url: '/pages/sys/workbench/unitManagement/employeeAudits'
});
},
goToEmployeeManagement() {
uni.navigateTo({
url: '/pages/sys/workbench/unitManagement/employeeManagement'
});
},
showInviteDialog() {
this.showDialog = true;
this.$nextTick( () => {
this.makeQRCode();
});
},
hideInviteDialog() {
this.showDialog = false;
},
// 修改后的makeQRCode方法
makeQRCode() {
// 获取uQRCode实例
var qr = new uQRCode();
// 设置二维码内容
qr.data = "localhost:8081/#/pages/sys/workbench/unitManagement/employeeAdd";
// 设置二维码大小必须与canvas设置的宽高一致
qr.size = 200;
// 调用制作二维码方法
qr.make();
// 获取canvas上下文
var canvasContext = uni.createCanvasContext('qrcode', this); // 如果是组件this必须传入
// 设置uQRCode实例的canvas上下文
qr.canvasContext = canvasContext;
// 调用绘制方法将二维码图案绘制到canvas上
qr.drawCanvas();
}
}
}
</script>
<style scoped>
.unit-management {
display: flex;
flex-direction: column;
height: 95vh;
background-color: #f5f5f5;
padding: 20rpx;
}
.unit-header-container {
display: flex;
justify-content: center;
margin-bottom: 20rpx;
}
.unit-header {
background-color: #2186FF;
padding: 20rpx 30rpx;
color: white;
border-radius: 16rpx;
width: 100%;
max-width: 100%;
display: flex;
align-items: center;
justify-content: center;
}
.header-icon {
width: 40rpx;
height: 40rpx;
margin: 0 40rpx;
}
.unit-title {
font-size: 36rpx;
font-weight: bold;
}
.function-container {
flex: 1;
display: flex;
flex-direction: row;
justify-content: space-between;
}
.left-column {
width: 48%;
height: 24%;
display: flex;
flex-direction: column;
justify-content: space-between;
}
.right-card {
width: 48%;
height: 24%;
background-color: white;
border-radius: 16rpx;
box-shadow: 0 2rpx 8rpx rgba(0, 0, 0, 0.05);
display: flex;
flex-direction: column;
justify-content: center;
position: relative;
overflow: hidden;
}
.function-card {
width: 100%;
height: 46%;
background-color: white;
border-radius: 16rpx;
box-shadow: 0 2rpx 8rpx rgba(0, 0, 0, 0.05);
display: flex;
flex-direction: column;
justify-content: center;
}
.card-content {
display: flex;
flex-direction: row;
align-items: center;
justify-content: space-between;
padding: 0 38rpx;
}
.card-text {
display: flex;
flex-direction: column;
}
.card-title {
font-size: 32rpx;
font-weight: bold;
color: #333;
margin-bottom: 8rpx;
}
.card-subtitle {
font-size: 24rpx;
color: #ADADAD;
}
.card-icon {
width: 80rpx;
height: 80rpx;
border-radius: 50%;
display: flex;
align-items: flex-end;
justify-content: center;
}
.card-icon image {
width: 60rpx;
height: 60rpx;
}
.card-bg {
padding-bottom: 24rpx;
width: 90%;
height: 50%;
top: 0;
left: 5%;
z-index: 0;
display: flex;
}
/* 邀请弹窗样式 */
.invite-dialog {
position: fixed;
top: 0;
left: 0;
right: 0;
bottom: 0;
background-color: rgba(0, 0, 0, 0.5);
display: flex;
justify-content: center;
align-items: center;
z-index: 1000;
}
.dialog-content {
width: 77%;
border-radius: 20rpx;
display: flex;
flex-direction: column;
align-items: center;
position: relative;
overflow: hidden;
}
.shield-bg {
position: absolute;
top: 0;
left: 0;
width: 100%;
height: 100%;
z-index: 0;
}
.phone-illustration {
position: relative;
width: 200rpx;
height: 200rpx;
margin-bottom: 40rpx;
z-index: 1;
}
.phone-image {
width: 100%;
height: 100%;
}
/* 修复:统一用动态尺寸,移除固定宽高,优化居中 */
.qr-code-container {
/* 容器尺寸略大于二维码,留出白边 */
width:380rpx;
height: 380rpx;
background-color: white;
border-radius: 10rpx;
margin-top: 50rpx;
display: flex;
justify-content: center;
align-items: center;
overflow: hidden;
position: relative;
top: 30rpx;
z-index: 1;
}
/* 新增圆形关闭按钮样式 */
.close-circle-btn {
width: 80rpx;
height: 80rpx;
border-radius: 50%;
background-color: white;
display: flex;
justify-content: center;
align-items: center;
margin-top: 40rpx;
margin-bottom: 20rpx;
box-shadow: 0 4rpx 12rpx rgba(0, 0, 0, 0.1);
position: relative;
z-index: 1;
cursor: pointer;
}
/* 创建X形状 */
.close-x {
position: relative;
width: 40rpx;
height: 40rpx;
}
.close-x::before,
.close-x::after {
content: '';
position: absolute;
top: 50%;
left: 50%;
width: 40rpx;
height: 4rpx;
background-color: #999;
border-radius: 2rpx;
}
.close-x::before {
transform: translate(-50%, -50%) rotate(45deg);
}
.close-x::after {
transform: translate(-50%, -50%) rotate(-45deg);
}
</style>

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.2 KiB

BIN
static/ic_avg.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 23 KiB

BIN
static/ic_edit.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 994 B

BIN
static/ic_enterprise.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.0 KiB

BIN
static/ic_man.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.8 KiB

BIN
static/ic_resign.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.9 KiB

BIN
static/ic_review.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.5 KiB

BIN
static/ic_shield.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 342 KiB

BIN
static/ic_unitBg.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 35 KiB

BIN
static/ic_women.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.5 KiB