commit 9dac7e5fc9a9452768f7ee90dbf20b97021d18b8
Author: luozhun <2025254074@qq.com>
Date: Fri Nov 15 12:23:16 2024 +0800
Initial commit
diff --git a/.DS_Store b/.DS_Store
new file mode 100644
index 0000000..8c5b905
Binary files /dev/null and b/.DS_Store differ
diff --git a/.idea/.gitignore b/.idea/.gitignore
new file mode 100644
index 0000000..b58b603
--- /dev/null
+++ b/.idea/.gitignore
@@ -0,0 +1,5 @@
+# Default ignored files
+/shelf/
+/workspace.xml
+# Editor-based HTTP Client requests
+/httpRequests/
diff --git a/.idea/inspectionProfiles/Project_Default.xml b/.idea/inspectionProfiles/Project_Default.xml
new file mode 100644
index 0000000..03d9549
--- /dev/null
+++ b/.idea/inspectionProfiles/Project_Default.xml
@@ -0,0 +1,6 @@
+
+
+
+
+
+
\ No newline at end of file
diff --git a/.idea/modules.xml b/.idea/modules.xml
new file mode 100644
index 0000000..b1fac77
--- /dev/null
+++ b/.idea/modules.xml
@@ -0,0 +1,8 @@
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/.idea/policeSecurity.iml b/.idea/policeSecurity.iml
new file mode 100644
index 0000000..24643cc
--- /dev/null
+++ b/.idea/policeSecurity.iml
@@ -0,0 +1,12 @@
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/.idea/vcs.xml b/.idea/vcs.xml
new file mode 100644
index 0000000..35eb1dd
--- /dev/null
+++ b/.idea/vcs.xml
@@ -0,0 +1,6 @@
+
+
+
+
+
+
\ No newline at end of file
diff --git a/collect_information/.editorconfig b/collect_information/.editorconfig
new file mode 100644
index 0000000..5760be5
--- /dev/null
+++ b/collect_information/.editorconfig
@@ -0,0 +1,12 @@
+# http://editorconfig.org
+root = true
+
+[*]
+indent_style = space
+indent_size = 2
+charset = utf-8
+trim_trailing_whitespace = true
+insert_final_newline = true
+
+[*.md]
+trim_trailing_whitespace = false
diff --git a/collect_information/.env.development b/collect_information/.env.development
new file mode 100644
index 0000000..d7a068a
--- /dev/null
+++ b/collect_information/.env.development
@@ -0,0 +1,10 @@
+# 配置文档参考 https://taro-docs.jd.com/docs/next/env-mode-config
+TARO_APP_ID="wx0acd1c4fcf94bdd3"
+TARO_APP_BASE_API="http://172.10.10.93:8765"
+# TARO_APP_BASE_API="https://www.hnjinglian.cn:5678"
+
+
+
+# minio
+TARO_APP_MINIO_URL=http://118.253.177.137:9000
+TARO_APP_MINIO_BUCKET=police-security-dev
diff --git a/collect_information/.env.production b/collect_information/.env.production
new file mode 100644
index 0000000..d614d69
--- /dev/null
+++ b/collect_information/.env.production
@@ -0,0 +1,6 @@
+# TARO_APP_ID="wx0acd1c4fcf94bdd3"
+TARO_APP_BASE_API="https://www.hnjinglian.cn:5678"
+
+# minio
+TARO_APP_MINIO_URL=https://www.hnjinglian.cn:9002
+TARO_APP_MINIO_BUCKET=police-security
diff --git a/collect_information/.eslintrc b/collect_information/.eslintrc
new file mode 100644
index 0000000..59b61d8
--- /dev/null
+++ b/collect_information/.eslintrc
@@ -0,0 +1,19 @@
+// ESLint 检查 .vue 文件需要单独配置编辑器:
+// https://eslint.vuejs.org/user-guide/#editor-integrations
+{
+ "extends": [
+ "taro/vue3"
+ ],
+ "rules": {
+ // 添加组件命名忽略规则
+ "vue/multi-word-component-names": [
+ "error",
+ {
+ //需要忽略的组件名
+ "ignores": [
+ "index"
+ ]
+ }
+ ]
+ }
+}
diff --git a/collect_information/.gitignore b/collect_information/.gitignore
new file mode 100644
index 0000000..63712f5
--- /dev/null
+++ b/collect_information/.gitignore
@@ -0,0 +1,13 @@
+dist/
+deploy_versions/
+.temp/
+.rn_temp/
+node_modules/
+.DS_Store
+.swc
+.idea
+
+
+components.d.ts
+package-lock.json
+yarn.lock
diff --git a/collect_information/__tests__/index.test.js b/collect_information/__tests__/index.test.js
new file mode 100644
index 0000000..c3904d1
--- /dev/null
+++ b/collect_information/__tests__/index.test.js
@@ -0,0 +1,12 @@
+import TestUtils from '@tarojs/test-utils-vue3'
+
+describe('Testing', () => {
+
+ test('Test', async () => {
+ const testUtils = new TestUtils()
+ await testUtils.createApp()
+ await testUtils.PageLifecycle.onShow('pages/index/index')
+ expect(testUtils.html()).toMatchSnapshot()
+ })
+
+})
diff --git a/collect_information/babel.config.js b/collect_information/babel.config.js
new file mode 100644
index 0000000..dc20faf
--- /dev/null
+++ b/collect_information/babel.config.js
@@ -0,0 +1,10 @@
+// babel-preset-taro 更多选项和默认值:
+// https://github.com/NervJS/taro/blob/next/packages/babel-preset-taro/README.md
+module.exports = {
+ presets: [
+ ['taro', {
+ framework: 'vue3',
+ ts: true
+ }]
+ ]
+}
diff --git a/collect_information/config/dev.ts b/collect_information/config/dev.ts
new file mode 100644
index 0000000..c37eb43
--- /dev/null
+++ b/collect_information/config/dev.ts
@@ -0,0 +1,9 @@
+import type { UserConfigExport } from "@tarojs/cli";
+export default {
+ logger: {
+ quiet: false,
+ stats: true
+ },
+ mini: {},
+ h5: {}
+} satisfies UserConfigExport
diff --git a/collect_information/config/index.ts b/collect_information/config/index.ts
new file mode 100644
index 0000000..3a25c14
--- /dev/null
+++ b/collect_information/config/index.ts
@@ -0,0 +1,115 @@
+import {defineConfig, type UserConfigExport} from '@tarojs/cli'
+import TsconfigPathsPlugin from 'tsconfig-paths-webpack-plugin'
+import devConfig from './dev'
+import prodConfig from './prod'
+import ComponentsPlugin from 'unplugin-vue-components/webpack'
+import NutUIResolver from "@nutui/auto-import-resolver";
+
+// https://taro-docs.jd.com/docs/next/config#defineconfig-辅助函数
+export default defineConfig(async (merge, {command, mode}) => {
+ const baseConfig: UserConfigExport = {
+ projectName: 'collect_information',
+ date: '2024-9-14',
+ designWidth(input: any) {
+ // 配置 NutUI 375 尺寸
+ if (input?.file?.replace(/\\+/g, '/').indexOf('@nutui') > -1) {
+ return 375
+ }
+ // 全局使用 Taro 默认的 750 尺寸
+ return 750
+ },
+ deviceRatio: {
+ 640: 2.34 / 2,
+ 750: 1,
+ 828: 1.81 / 2,
+ 375: 2
+ },
+ sourceRoot: 'src',
+ outputRoot: 'dist',
+ // 开启 HTML 插件
+ plugins: ['@tarojs/plugin-html'],
+ defineConstants: {},
+ copy: {
+ patterns: [],
+ options: {}
+ },
+ framework: 'vue3',
+ compiler: 'webpack5',
+ cache: {
+ enable: false // Webpack 持久化缓存配置,建议开启。默认配置请参考:https://docs.taro.zone/docs/config-detail#cache
+ },
+ mini: {
+ miniCssExtractPluginOption: {
+ ignoreOrder: true
+ },
+ postcss: {
+ pxtransform: {
+ enable: true,
+ config: {}
+ },
+ url: {
+ enable: true,
+ config: {
+ limit: 1024 // 设定转换尺寸上限
+ }
+ },
+ cssModules: {
+ enable: false, // 默认为 false,如需使用 css modules 功能,则设为 true
+ config: {
+ namingPattern: 'module', // 转换模式,取值为 global/module
+ generateScopedName: '[name]__[local]___[hash:base64:5]'
+ }
+ }
+ },
+ webpackChain(chain) {
+ chain.resolve.plugin('tsconfig-paths').use(TsconfigPathsPlugin)
+ chain.plugin('unplugin-vue-components').use(ComponentsPlugin({
+ resolvers: [NutUIResolver({taro: true})]
+ }))
+ }
+ },
+ h5: {
+ publicPath: '/',
+ staticDirectory: 'static',
+ output: {
+ filename: 'js/[name].[hash:8].js',
+ chunkFilename: 'js/[name].[chunkhash:8].js'
+ },
+ miniCssExtractPluginOption: {
+ ignoreOrder: true,
+ filename: 'css/[name].[hash].css',
+ chunkFilename: 'css/[name].[chunkhash].css'
+ },
+ postcss: {
+ autoprefixer: {
+ enable: true,
+ config: {}
+ },
+ cssModules: {
+ enable: false, // 默认为 false,如需使用 css modules 功能,则设为 true
+ config: {
+ namingPattern: 'module', // 转换模式,取值为 global/module
+ generateScopedName: '[name]__[local]___[hash:base64:5]'
+ }
+ }
+ },
+ webpackChain(chain) {
+ chain.resolve.plugin('tsconfig-paths').use(TsconfigPathsPlugin)
+ }
+ },
+ rn: {
+ appName: 'taroDemo',
+ postcss: {
+ cssModules: {
+ enable: false, // 默认为 false,如需使用 css modules 功能,则设为 true
+ }
+ }
+ }
+ }
+ if (process.env.NODE_ENV === 'development') {
+ // 本地开发构建配置(不混淆压缩)
+ return merge({}, baseConfig, devConfig)
+ }
+ // 生产构建配置(默认开启压缩混淆等)
+ return merge({}, baseConfig, prodConfig)
+})
diff --git a/collect_information/config/prod.ts b/collect_information/config/prod.ts
new file mode 100644
index 0000000..c9ba67f
--- /dev/null
+++ b/collect_information/config/prod.ts
@@ -0,0 +1,32 @@
+import type { UserConfigExport } from "@tarojs/cli";
+export default {
+ mini: {},
+ h5: {
+ /**
+ * WebpackChain 插件配置
+ * @docs https://github.com/neutrinojs/webpack-chain
+ */
+ // webpackChain (chain) {
+ // /**
+ // * 如果 h5 端编译后体积过大,可以使用 webpack-bundle-analyzer 插件对打包体积进行分析。
+ // * @docs https://github.com/webpack-contrib/webpack-bundle-analyzer
+ // */
+ // chain.plugin('analyzer')
+ // .use(require('webpack-bundle-analyzer').BundleAnalyzerPlugin, [])
+ // /**
+ // * 如果 h5 端首屏加载时间过长,可以使用 prerender-spa-plugin 插件预加载首页。
+ // * @docs https://github.com/chrisvfritz/prerender-spa-plugin
+ // */
+ // const path = require('path')
+ // const Prerender = require('prerender-spa-plugin')
+ // const staticDir = path.join(__dirname, '..', 'dist')
+ // chain
+ // .plugin('prerender')
+ // .use(new Prerender({
+ // staticDir,
+ // routes: [ '/pages/index/index' ],
+ // postProcess: (context) => ({ ...context, outputPath: path.join(staticDir, 'index.html') })
+ // }))
+ // }
+ }
+} satisfies UserConfigExport
diff --git a/collect_information/jest.config.ts b/collect_information/jest.config.ts
new file mode 100644
index 0000000..e720a3c
--- /dev/null
+++ b/collect_information/jest.config.ts
@@ -0,0 +1,6 @@
+const defineJestConfig = require('@tarojs/test-utils-vue3/dist/jest.js').default
+
+module.exports = defineJestConfig({
+ testEnvironment: 'jsdom',
+ testMatch: ['/__tests__/**/*.(spec|test).[jt]s?(x)']
+})
diff --git a/collect_information/package.json b/collect_information/package.json
new file mode 100644
index 0000000..348ad9a
--- /dev/null
+++ b/collect_information/package.json
@@ -0,0 +1,95 @@
+{
+ "name": "collect_information",
+ "version": "1.0.0",
+ "private": true,
+ "description": "警保联动小程序",
+ "templateInfo": {
+ "name": "default",
+ "typescript": true,
+ "css": "Sass",
+ "framework": "Vue3"
+ },
+ "scripts": {
+ "build:weapp": "taro build --type weapp",
+ "build:swan": "taro build --type swan",
+ "build:alipay": "taro build --type alipay",
+ "build:tt": "taro build --type tt",
+ "build:h5": "taro build --type h5",
+ "build:rn": "taro build --type rn",
+ "build:qq": "taro build --type qq",
+ "build:jd": "taro build --type jd",
+ "build:quickapp": "taro build --type quickapp",
+ "build:harmony-hybrid": "taro build --type harmony-hybrid",
+ "dev:weapp": "npm run build:weapp -- --watch",
+ "dev:swan": "npm run build:swan -- --watch",
+ "dev:alipay": "npm run build:alipay -- --watch",
+ "dev:tt": "npm run build:tt -- --watch",
+ "dev:h5": "npm run build:h5 -- --watch",
+ "dev:rn": "npm run build:rn -- --watch",
+ "dev:qq": "npm run build:qq -- --watch",
+ "dev:jd": "npm run build:jd -- --watch",
+ "dev:quickapp": "npm run build:quickapp -- --watch",
+ "dev:harmony-hybrid": "npm run build:harmony-hybrid -- --watch",
+ "test": "jest"
+ },
+ "browserslist": [
+ "last 3 versions",
+ "Android >= 4.1",
+ "ios >= 8"
+ ],
+ "author": "",
+ "dependencies": {
+ "@babel/runtime": "^7.21.5",
+ "@nutui/nutui-taro": "^4.3.13",
+ "@tarojs/components": "3.6.26",
+ "@tarojs/helper": "3.6.26",
+ "@tarojs/plugin-framework-vue3": "3.6.26",
+ "@tarojs/plugin-html": "^3.6.26",
+ "@tarojs/plugin-platform-alipay": "3.6.26",
+ "@tarojs/plugin-platform-h5": "3.6.26",
+ "@tarojs/plugin-platform-harmony-hybrid": "3.6.26",
+ "@tarojs/plugin-platform-jd": "3.6.26",
+ "@tarojs/plugin-platform-qq": "3.6.26",
+ "@tarojs/plugin-platform-swan": "3.6.26",
+ "@tarojs/plugin-platform-tt": "3.6.26",
+ "@tarojs/plugin-platform-weapp": "3.6.26",
+ "@tarojs/runtime": "3.6.26",
+ "@tarojs/shared": "3.6.26",
+ "@tarojs/taro": "3.6.26",
+ "dayjs": "^1.11.13",
+ "pinia": "^2.2.2",
+ "vue": "^3.0.0"
+
+ },
+ "devDependencies": {
+ "@babel/core": "^7.8.0",
+ "@nutui/auto-import-resolver": "^1.0.0",
+ "@tarojs/cli": "3.6.26",
+ "@tarojs/taro-loader": "3.6.26",
+ "@tarojs/test-utils-vue3": "^0.1.1",
+ "@tarojs/webpack5-runner": "3.6.26",
+ "@types/jest": "^29.3.1",
+ "@types/node": "^18.15.11",
+ "@types/webpack-env": "^1.13.6",
+ "@typescript-eslint/eslint-plugin": "^6.2.0",
+ "@typescript-eslint/parser": "^6.2.0",
+ "@vue/babel-plugin-jsx": "^1.0.6",
+ "@vue/compiler-sfc": "^3.0.0",
+ "babel-preset-taro": "3.6.26",
+ "css-loader": "3.4.2",
+ "eslint": "^8.12.0",
+ "eslint-config-taro": "3.6.26",
+ "eslint-plugin-vue": "^8.0.0",
+ "jest": "^29.3.1",
+ "jest-environment-jsdom": "^29.5.0",
+ "postcss": "^8.4.18",
+ "style-loader": "1.3.0",
+ "stylelint": "^14.4.0",
+ "ts-node": "^10.9.1",
+ "tsconfig-paths-webpack-plugin": "^4.1.0",
+ "typescript": "^5.1.0",
+ "unplugin-vue-components": "^0.27.4",
+ "vue-loader": "^17.1.0",
+ "webpack": "5.78.0"
+ }
+}
diff --git a/collect_information/project.config.json b/collect_information/project.config.json
new file mode 100644
index 0000000..2d18dde
--- /dev/null
+++ b/collect_information/project.config.json
@@ -0,0 +1,15 @@
+{
+ "miniprogramRoot": "./dist",
+ "projectname": "collect_information",
+ "description": "警保联动小程序",
+ "appid": "touristappid",
+ "setting": {
+ "urlCheck": false,
+ "es6": false,
+ "enhance": false,
+ "compileHotReLoad": false,
+ "postcss": false,
+ "minified": false
+ },
+ "compileType": "miniprogram"
+}
diff --git a/collect_information/project.tt.json b/collect_information/project.tt.json
new file mode 100644
index 0000000..409b7a0
--- /dev/null
+++ b/collect_information/project.tt.json
@@ -0,0 +1,9 @@
+{
+ "miniprogramRoot": "./",
+ "projectname": "collect_information",
+ "appid": "testAppId",
+ "setting": {
+ "es6": false,
+ "minified": false
+ }
+}
diff --git a/collect_information/src/app.config.ts b/collect_information/src/app.config.ts
new file mode 100644
index 0000000..20ebb39
--- /dev/null
+++ b/collect_information/src/app.config.ts
@@ -0,0 +1,48 @@
+import { MINI_PROGRAM_USER_CONFIG } from "@/config";
+
+
+const tabBarItems = Object.values(MINI_PROGRAM_USER_CONFIG).map(item => item.tabBarList).flat()
+
+export default defineAppConfig({
+ pages: [
+ 'pages/login/login',
+ 'pages/register/register',
+ ...tabBarItems.map(i => i.pagePath)
+ ],
+ subPackages: [
+ {
+ root: "subPages/projectManager",
+ pages: [
+ 'myProject/myProject',
+ 'myProject/projectDetails/projectDetails',
+ 'securityUserForm/securityUserForm',
+ ]
+ },
+ {
+ root: "subPages/police",
+ pages: [
+ 'dailyInspection/dailyInspection',
+ 'myEnterprisesUnit/myEnterprisesUnit',
+ 'myEnterprisesUnit/projectDetails/projectDetails'
+ ]
+ },
+ {
+ root: "subPages/select",
+ pages: [
+ 'dailyLife/dailyLife',
+ 'signature/signature'
+ ]
+ },
+ ],
+
+ window: {
+ backgroundTextStyle: 'light',
+ navigationBarBackgroundColor: '#4e87ff',
+ navigationBarTitleText: '',
+ navigationBarTextStyle: 'white',
+ },
+ tabBar: {
+ custom: true,
+ list: tabBarItems
+ }
+})
diff --git a/collect_information/src/app.scss b/collect_information/src/app.scss
new file mode 100644
index 0000000..e69de29
diff --git a/collect_information/src/app.ts b/collect_information/src/app.ts
new file mode 100644
index 0000000..28f74dd
--- /dev/null
+++ b/collect_information/src/app.ts
@@ -0,0 +1,32 @@
+import {createApp} from 'vue'
+import '@/app.scss'
+import '@/assets/css/main.css'
+import {pinia} from "@/store";
+import Taro from "@tarojs/taro";
+import {MINI_PROGRAM_USER_CONFIG} from "@/config";
+import {useUserStore} from "@/store/userStore";
+import {initEnum} from "@/enums";
+
+const App = createApp({
+ onLaunch(opt) {
+ initEnum()
+ if (opt.path === 'subPages/projectManager/securityUserForm/securityUserForm' && opt.query.type === 'QcCodeInput') {
+ return
+ }
+ const tokenInfo = useUserStore().getTokenInfo();
+ if (tokenInfo) {
+ Taro.switchTab({
+ url: MINI_PROGRAM_USER_CONFIG[tokenInfo.extData.identity.value].toIndex
+ })
+ } else {
+ Taro.navigateTo({
+ url: '/pages/login/login',
+ })
+ }
+ },
+ // 入口组件不需要实现 render 方法,即使实现了也会被 taro 所覆盖
+})
+
+App.use(pinia)
+
+export default App
diff --git a/collect_information/src/assets/css/main.css b/collect_information/src/assets/css/main.css
new file mode 100644
index 0000000..199b446
--- /dev/null
+++ b/collect_information/src/assets/css/main.css
@@ -0,0 +1,308 @@
+/* -- 内外边距 -- */
+.margin-0 {
+ margin: 0;
+}
+
+.margin-xs {
+ margin: 10rpx;
+}
+
+.margin-sm {
+ margin: 20rpx;
+}
+
+.margin {
+ margin: 30rpx;
+}
+
+.margin-lg {
+ margin: 40rpx;
+}
+
+.margin-xl {
+ margin: 50rpx;
+}
+
+.margin-top-xs {
+ margin-top: 10rpx;
+}
+
+.margin-top-sm {
+ margin-top: 20rpx;
+}
+
+.margin-top {
+ margin-top: 30rpx;
+}
+
+.margin-top-lg {
+ margin-top: 40rpx;
+}
+
+.margin-top-xl {
+ margin-top: 50rpx;
+}
+
+.margin-right-xs {
+ margin-right: 10rpx;
+}
+
+.margin-right-sm {
+ margin-right: 20rpx;
+}
+
+.margin-right {
+ margin-right: 30rpx;
+}
+
+.margin-right-lg {
+ margin-right: 40rpx;
+}
+
+.margin-right-xl {
+ margin-right: 50rpx;
+}
+
+.margin-bottom-xs {
+ margin-bottom: 10rpx;
+}
+
+.margin-bottom-sm {
+ margin-bottom: 20rpx;
+}
+
+.margin-bottom {
+ margin-bottom: 30rpx;
+}
+
+.margin-bottom-lg {
+ margin-bottom: 40rpx;
+}
+
+.margin-bottom-xl {
+ margin-bottom: 50rpx;
+}
+
+.margin-left-xs {
+ margin-left: 10rpx;
+}
+
+.margin-left-sm {
+ margin-left: 20rpx;
+}
+
+.margin-left {
+ margin-left: 30rpx;
+}
+
+.margin-left-lg {
+ margin-left: 40rpx;
+}
+
+.margin-left-xl {
+ margin-left: 50rpx;
+}
+
+.margin-lr-xs {
+ margin-left: 10rpx;
+ margin-right: 10rpx;
+}
+
+.margin-lr-sm {
+ margin-left: 20rpx;
+ margin-right: 20rpx;
+}
+
+.margin-lr {
+ margin-left: 30rpx;
+ margin-right: 30rpx;
+}
+
+.margin-lr-lg {
+ margin-left: 40rpx;
+ margin-right: 40rpx;
+}
+
+.margin-lr-xl {
+ margin-left: 50rpx;
+ margin-right: 50rpx;
+}
+
+.margin-tb-xs {
+ margin-top: 10rpx;
+ margin-bottom: 10rpx;
+}
+
+.margin-tb-sm {
+ margin-top: 20rpx;
+ margin-bottom: 20rpx;
+}
+
+.margin-tb {
+ margin-top: 30rpx;
+ margin-bottom: 30rpx;
+}
+
+.margin-tb-lg {
+ margin-top: 40rpx;
+ margin-bottom: 40rpx;
+}
+
+.margin-tb-xl {
+ margin-top: 50rpx;
+ margin-bottom: 50rpx;
+}
+
+.padding-0 {
+ padding: 0;
+}
+
+.padding-xs {
+ padding: 10rpx;
+}
+
+.padding-sm {
+ padding: 20rpx;
+}
+
+.padding {
+ padding: 30rpx;
+}
+
+.padding-lg {
+ padding: 40rpx;
+}
+
+.padding-xl {
+ padding: 50rpx;
+}
+
+.padding-top-xs {
+ padding-top: 10rpx;
+}
+
+.padding-top-sm {
+ padding-top: 20rpx;
+}
+
+.padding-top {
+ padding-top: 30rpx;
+}
+
+.padding-top-lg {
+ padding-top: 40rpx;
+}
+
+.padding-top-xl {
+ padding-top: 50rpx;
+}
+
+.padding-right-xs {
+ padding-right: 10rpx;
+}
+
+.padding-right-sm {
+ padding-right: 20rpx;
+}
+
+.padding-right {
+ padding-right: 30rpx;
+}
+
+.padding-right-lg {
+ padding-right: 40rpx;
+}
+
+.padding-right-xl {
+ padding-right: 50rpx;
+}
+
+.padding-bottom-xs {
+ padding-bottom: 10rpx;
+}
+
+.padding-bottom-sm {
+ padding-bottom: 20rpx;
+}
+
+.padding-bottom {
+ padding-bottom: 30rpx;
+}
+
+.padding-bottom-lg {
+ padding-bottom: 40rpx;
+}
+
+.padding-bottom-xl {
+ padding-bottom: 50rpx;
+}
+
+.padding-left-xs {
+ padding-left: 10rpx;
+}
+
+.padding-left-sm {
+ padding-left: 20rpx;
+}
+
+.padding-left {
+ padding-left: 30rpx;
+}
+
+.padding-left-lg {
+ padding-left: 40rpx;
+}
+
+.padding-left-xl {
+ padding-left: 50rpx;
+}
+
+.padding-lr-xs {
+ padding-left: 10rpx;
+ padding-right: 10rpx;
+}
+
+.padding-lr-sm {
+ padding-left: 20rpx;
+ padding-right: 20rpx;
+}
+
+.padding-lr {
+ padding-left: 30rpx;
+ padding-right: 30rpx;
+}
+
+.padding-lr-lg {
+ padding-left: 40rpx;
+ padding-right: 40rpx;
+}
+
+.padding-lr-xl {
+ padding-left: 50rpx;
+ padding-right: 50rpx;
+}
+
+.padding-tb-xs {
+ padding-top: 10rpx;
+ padding-bottom: 10rpx;
+}
+
+.padding-tb-sm {
+ padding-top: 20rpx;
+ padding-bottom: 20rpx;
+}
+
+.padding-tb {
+ padding-top: 30rpx;
+ padding-bottom: 30rpx;
+}
+
+.padding-tb-lg {
+ padding-top: 40rpx;
+ padding-bottom: 40rpx;
+}
+
+.padding-tb-xl {
+ padding-top: 50rpx;
+ padding-bottom: 50rpx;
+}
diff --git a/collect_information/src/assets/images/banner.png b/collect_information/src/assets/images/banner.png
new file mode 100644
index 0000000..f29618c
Binary files /dev/null and b/collect_information/src/assets/images/banner.png differ
diff --git a/collect_information/src/assets/images/popuptiobg.png b/collect_information/src/assets/images/popuptiobg.png
new file mode 100644
index 0000000..8650666
Binary files /dev/null and b/collect_information/src/assets/images/popuptiobg.png differ
diff --git a/collect_information/src/assets/images/project.png b/collect_information/src/assets/images/project.png
new file mode 100644
index 0000000..9aef305
Binary files /dev/null and b/collect_information/src/assets/images/project.png differ
diff --git a/collect_information/src/assets/images/rotate.png b/collect_information/src/assets/images/rotate.png
new file mode 100644
index 0000000..1f52f3e
Binary files /dev/null and b/collect_information/src/assets/images/rotate.png differ
diff --git a/collect_information/src/assets/images/rotate1.png b/collect_information/src/assets/images/rotate1.png
new file mode 100644
index 0000000..58adfbb
Binary files /dev/null and b/collect_information/src/assets/images/rotate1.png differ
diff --git a/collect_information/src/assets/images/回单.jpg b/collect_information/src/assets/images/回单.jpg
new file mode 100644
index 0000000..20479b9
Binary files /dev/null and b/collect_information/src/assets/images/回单.jpg differ
diff --git a/collect_information/src/assets/images/工单.jpg b/collect_information/src/assets/images/工单.jpg
new file mode 100644
index 0000000..da046c5
Binary files /dev/null and b/collect_information/src/assets/images/工单.jpg differ
diff --git a/collect_information/src/assets/images/排名.jpg b/collect_information/src/assets/images/排名.jpg
new file mode 100644
index 0000000..96e4510
Binary files /dev/null and b/collect_information/src/assets/images/排名.jpg differ
diff --git a/collect_information/src/assets/images/旋转.png b/collect_information/src/assets/images/旋转.png
new file mode 100644
index 0000000..d3f7488
Binary files /dev/null and b/collect_information/src/assets/images/旋转.png differ
diff --git a/collect_information/src/assets/images/法制宣传.jpg b/collect_information/src/assets/images/法制宣传.jpg
new file mode 100644
index 0000000..21d0e0d
Binary files /dev/null and b/collect_information/src/assets/images/法制宣传.jpg differ
diff --git a/collect_information/src/assets/images/考核监督.jpg b/collect_information/src/assets/images/考核监督.jpg
new file mode 100644
index 0000000..0f9f7cc
Binary files /dev/null and b/collect_information/src/assets/images/考核监督.jpg differ
diff --git a/collect_information/src/assets/images/警保风采.jpg b/collect_information/src/assets/images/警保风采.jpg
new file mode 100644
index 0000000..8de01b4
Binary files /dev/null and b/collect_information/src/assets/images/警保风采.jpg differ
diff --git a/collect_information/src/assets/logo/avatar1.png b/collect_information/src/assets/logo/avatar1.png
new file mode 100644
index 0000000..09cb7a7
Binary files /dev/null and b/collect_information/src/assets/logo/avatar1.png differ
diff --git a/collect_information/src/assets/logo/guohui.png b/collect_information/src/assets/logo/guohui.png
new file mode 100644
index 0000000..d06ce3a
Binary files /dev/null and b/collect_information/src/assets/logo/guohui.png differ
diff --git a/collect_information/src/assets/mine/my-active.png b/collect_information/src/assets/mine/my-active.png
new file mode 100644
index 0000000..907d8a6
Binary files /dev/null and b/collect_information/src/assets/mine/my-active.png differ
diff --git a/collect_information/src/assets/mine/my.png b/collect_information/src/assets/mine/my.png
new file mode 100644
index 0000000..da73231
Binary files /dev/null and b/collect_information/src/assets/mine/my.png differ
diff --git a/collect_information/src/assets/mine/punch-active.png b/collect_information/src/assets/mine/punch-active.png
new file mode 100644
index 0000000..0098eb3
Binary files /dev/null and b/collect_information/src/assets/mine/punch-active.png differ
diff --git a/collect_information/src/assets/mine/punch.png b/collect_information/src/assets/mine/punch.png
new file mode 100644
index 0000000..e8ef36b
Binary files /dev/null and b/collect_information/src/assets/mine/punch.png differ
diff --git a/collect_information/src/config/index.ts b/collect_information/src/config/index.ts
new file mode 100644
index 0000000..ba8500d
--- /dev/null
+++ b/collect_information/src/config/index.ts
@@ -0,0 +1,46 @@
+import {UserConfig} from "@/types/config";
+
+/**
+ * 客户端
+ */
+export const CLIENT_TYPE = 'MINI_PROGRAM'
+
+/**
+ * 小程序用户配置
+ */
+export const MINI_PROGRAM_USER_CONFIG: Record = {
+ police: {
+ toIndex: '/pages/police/index/index',
+ tabBarList: [
+ {
+ pagePath: 'pages/police/index/index',
+ text: '首页',
+ iconPath: "assets/mine/punch.png",
+ selectedIconPath: "assets/mine/punch-active.png"
+ },
+ {
+ pagePath: 'pages/police/mine/index',
+ text: '我的',
+ iconPath: "assets/mine/my.png",
+ selectedIconPath: "assets/mine/my-active.png"
+ },
+ ]
+ },
+ project_manager: {
+ toIndex: '/pages/projectManager/index/index',
+ tabBarList: [
+ {
+ pagePath: 'pages/projectManager/index/index',
+ text: '首页',
+ iconPath: "assets/mine/punch.png",
+ selectedIconPath: "assets/mine/punch-active.png"
+ },
+ {
+ pagePath: 'pages/projectManager/mine/index',
+ text: '我的',
+ iconPath: "assets/mine/my.png",
+ selectedIconPath: "assets/mine/my-active.png"
+ },
+ ]
+ }
+}
diff --git a/collect_information/src/custom-tab-bar/index.json.ts b/collect_information/src/custom-tab-bar/index.json.ts
new file mode 100644
index 0000000..29210de
--- /dev/null
+++ b/collect_information/src/custom-tab-bar/index.json.ts
@@ -0,0 +1,3 @@
+export default {
+ "component": true
+}
diff --git a/collect_information/src/custom-tab-bar/index.vue b/collect_information/src/custom-tab-bar/index.vue
new file mode 100644
index 0000000..8d062e0
--- /dev/null
+++ b/collect_information/src/custom-tab-bar/index.vue
@@ -0,0 +1,82 @@
+
+
+
+
+
+ {{ item.text }}
+
+
+
+
+
+
+
diff --git a/collect_information/src/enums/index.ts b/collect_information/src/enums/index.ts
new file mode 100644
index 0000000..efdc1ef
--- /dev/null
+++ b/collect_information/src/enums/index.ts
@@ -0,0 +1,40 @@
+import api from "@/request";
+import Taro from "@tarojs/taro";
+
+type EnumType =
+ 'CheckStatus'
+ | 'DeleteFlag'
+ | 'IsEnable'
+ | 'IsOrNot'
+ | 'Sex'
+ | 'ServiceProjectType'
+ | 'MiniProgramUserIdentity'
+
+export const initEnum = () => {
+ api.get[]>>('/common/enums').then(resp => {
+ Taro.setStorageSync('enumMap', resp.data)
+ })
+};
+
+export const enumSelectNodes = (enumType: EnumType): SelectNodeVo[] => Taro.getStorageSync('enumMap')?.[enumType]
+
+export const getEnumByValue = (enumType: EnumType, value: T): null | SelectNodeVo => {
+ const enumList = enumSelectNodes(enumType);
+ if (!enumList) {
+ return null;
+ }
+ for (let i = 0; i < enumList.length; i++) {
+ if (value === enumList[i].value) {
+ return enumList[i]
+ }
+ }
+ return null;
+};
+
+export const getEnumLabelByValue = (enumType: EnumType, value: T): string => {
+ const enums = getEnumByValue(enumType, value)
+ if (!enums) {
+ return '-'
+ }
+ return enums.label;
+};
diff --git a/collect_information/src/index.html b/collect_information/src/index.html
new file mode 100644
index 0000000..21009d9
--- /dev/null
+++ b/collect_information/src/index.html
@@ -0,0 +1,17 @@
+
+
+
+
+
+
+
+
+
+
+ collect_information
+
+
+
+
+
+
diff --git a/collect_information/src/pages/login/login.config.ts b/collect_information/src/pages/login/login.config.ts
new file mode 100644
index 0000000..9d41d86
--- /dev/null
+++ b/collect_information/src/pages/login/login.config.ts
@@ -0,0 +1,3 @@
+export default definePageConfig({
+ navigationBarTitleText: '登录',
+})
diff --git a/collect_information/src/pages/login/login.scss b/collect_information/src/pages/login/login.scss
new file mode 100644
index 0000000..7977430
--- /dev/null
+++ b/collect_information/src/pages/login/login.scss
@@ -0,0 +1,87 @@
+.SignMultiple {
+ height: 100vh;
+ background: #f4f5f7;
+ position: relative;
+
+ .urlIndex {
+ display: flex;
+ justify-content: center;
+ align-items: center;
+ padding: 0;
+ margin: 0;
+ width: 100%;
+ height: 440rpx;
+ background: #3a6bbe;
+ text-align: center;
+ overflow: hidden;
+
+ .urlTitle {
+ width: 100%;
+ height: 300rpx;
+
+ .urlWelcome {
+ color: #fff;
+ font-size: 24px;
+ }
+
+ .urlHibiscus {
+ height: 200rpx;
+ line-height: 58rpx;
+ //font-size: 38rpx;
+ margin: 40rpx 20rpx;
+ border: 2px solid #a1b8e0;
+ display: flex;
+ justify-content: center;
+
+ .contact {
+ height: 100rpx;
+ width: 100rpx;
+ border-radius: 50%;
+ border: solid 1px gray;
+
+ .image {
+ width: 100%;
+ height: 100%;
+ border-radius: 50%
+ }
+ }
+ }
+ }
+ }
+
+ .type {
+ margin: 0 20rpx 0 20rpx;
+ width: 29%;
+ text-align: right;
+ }
+
+ .HiddenEse {
+ position: absolute;
+ top: 4px;
+ right: 0;
+ width: 76rpx;
+ height: 40rpx;
+
+ image {
+ width: 40rpx;
+ height: 40rpx;
+ }
+ }
+
+ .SignItem {
+ transform: translateY(15%);
+ display: flex;
+ flex-direction: column;
+ margin: 20rpx 48rpx;
+ border-radius: 20rpx;
+ }
+
+ .Cancel {
+ display: flex;
+ flex-direction: column;
+ justify-content: center;
+ text-align: center;
+ margin: 20rpx 40rpx;
+ }
+
+}
diff --git a/collect_information/src/pages/login/login.vue b/collect_information/src/pages/login/login.vue
new file mode 100644
index 0000000..ed09acd
--- /dev/null
+++ b/collect_information/src/pages/login/login.vue
@@ -0,0 +1,130 @@
+
+
+
+
+
+ 登录
+ 欢迎再次回来~
+
+
+
+ 一键登录
+
+
+
+
+
+
+
diff --git a/collect_information/src/pages/police/index/index.config.ts b/collect_information/src/pages/police/index/index.config.ts
new file mode 100644
index 0000000..a7c25c7
--- /dev/null
+++ b/collect_information/src/pages/police/index/index.config.ts
@@ -0,0 +1,3 @@
+export default definePageConfig({
+ navigationBarTitleText: '首页',
+})
diff --git a/collect_information/src/pages/police/index/index.scss b/collect_information/src/pages/police/index/index.scss
new file mode 100644
index 0000000..6ff67f6
--- /dev/null
+++ b/collect_information/src/pages/police/index/index.scss
@@ -0,0 +1,76 @@
+.nameTitle {
+ position: absolute;
+ top: 19%;
+ left: 55px;
+ height: 125rpx;
+ background-color: #fff;
+ width: 650rpx;
+ border-radius: 12rpx;
+ box-shadow: 0px 10px 10px -4px #e3e3e3;
+ display: flex;
+ justify-content: space-between;
+ align-items: center;
+
+ .itemSchool {
+ border-right: solid 1.5rpx #dadada;
+ display: flex;
+ flex-direction: column;
+ align-items: center;
+ width: 25%;
+ font-size: 24px
+ }
+
+ .itemSchool text:nth-child(1) {
+ margin-bottom: 10rpx;
+ color: #898a8a;
+ margin-left: -8px;
+ }
+}
+.nameTitle .itemSchool:nth-child(4) {
+ border-right: none;
+}
+.swiperDemoItem {
+ color: #3886d0;
+ display: flex;
+ padding: 20px 0 0 50px;
+ overflow: hidden;
+ height: 70rpx;
+ margin-top: 70px;
+
+ .swiperDemoIndex {
+ width: 15px;
+ height: 45px;
+ background-image: linear-gradient(to bottom, #5d9cf9, #317ad9);
+ border-radius: 20px;
+ margin-right: 15px;
+ }
+}
+.Module {
+ background-color: #fff;
+ overflow: hidden;
+ .subModule {
+ display: flex;
+ align-items: center;
+ flex-wrap: wrap;
+ .subModuleItem {
+ width: 246rpx;
+ height: 140rpx;
+ display: flex;
+ flex-direction: column;
+ align-items: center;
+ justify-content: center;
+ padding-bottom: 10rpx;
+ .subModuleIndex {
+ width: 45rpx;
+ height: 45rpx;
+ image {
+ width: 100%;
+ height: 100%;
+ }
+ }
+ }
+ }
+
+}
+
+
diff --git a/collect_information/src/pages/police/index/index.scss.bak b/collect_information/src/pages/police/index/index.scss.bak
new file mode 100644
index 0000000..650fcb5
--- /dev/null
+++ b/collect_information/src/pages/police/index/index.scss.bak
@@ -0,0 +1,47 @@
+.swiperDemoItem {
+ color: #3886d0;
+ display: flex;
+ padding: 20px 0 0 50px;
+ overflow: hidden;
+ height: 70rpx;
+
+ .swiperDemoIndex {
+ width: 15px;
+ height: 45px;
+ background-image: linear-gradient(to bottom, #5d9cf9, #317ad9);
+ //background: rgb();
+ border-radius: 20px;
+ margin-right: 15px;
+ }
+}
+
+.subModule {
+ display: flex;
+ align-items: center;
+ flex-wrap: wrap;
+ margin-right: -3px;
+ margin-left: -1px;
+
+ .subModuleItem {
+ width: 33%;
+ height: 180rpx;
+ display: flex;
+ flex-direction: column;
+ align-items: center;
+ justify-content: center;
+ padding-bottom: 10rpx;
+ border: 1px solid #ccc;
+ border-left: 0;
+ margin-top: -1px;
+
+ .subModuleIndex {
+ width: 65rpx;
+ height: 65rpx;
+
+ image {
+ width: 100%;
+ height: 100%;
+ }
+ }
+ }
+}
diff --git a/collect_information/src/pages/police/index/index.vue b/collect_information/src/pages/police/index/index.vue
new file mode 100644
index 0000000..3ab9781
--- /dev/null
+++ b/collect_information/src/pages/police/index/index.vue
@@ -0,0 +1,116 @@
+
+
+
+
+
+
+
+
+
+
+
+ 单位数量
+ {{ numberStatistics.enterprisesUnitCount }}
+
+
+ 服务项目
+
+ {{ numberStatistics.serviceProjectCount }}
+
+
+
+ 有保安证人员
+ {{ numberStatistics.securityUserCount }}
+
+
+ 无保安证人员
+ {{ numberStatistics.noCardSecurityUserCount }}
+
+
+
+
+ 请选择
+
+
+
+
+
+
+
+
+ {{ item.name }}
+
+
+
+
+
+
+
diff --git a/collect_information/src/pages/police/index/index.vue.bak b/collect_information/src/pages/police/index/index.vue.bak
new file mode 100644
index 0000000..2e7a226
--- /dev/null
+++ b/collect_information/src/pages/police/index/index.vue.bak
@@ -0,0 +1,108 @@
+
+
+
+
+
+
+
+
diff --git a/collect_information/src/pages/police/mine/index.config.ts b/collect_information/src/pages/police/mine/index.config.ts
new file mode 100644
index 0000000..a7c25c7
--- /dev/null
+++ b/collect_information/src/pages/police/mine/index.config.ts
@@ -0,0 +1,3 @@
+export default definePageConfig({
+ navigationBarTitleText: '首页',
+})
diff --git a/collect_information/src/pages/police/mine/index.scss b/collect_information/src/pages/police/mine/index.scss
new file mode 100644
index 0000000..22a7712
--- /dev/null
+++ b/collect_information/src/pages/police/mine/index.scss
@@ -0,0 +1,71 @@
+.public {
+ height: 100vh;
+ background-color: #fff;
+}
+.public-container {
+ height: 320rpx;
+ display: flex;
+ align-items: center;
+ background-image: url('../../../assets/images/banner.png');
+ background-repeat: no-repeat;
+ background-position: right;
+ overflow: hidden;
+ padding: 45rpx;
+ box-sizing: border-box;
+ .contacts {
+ height: 75rpx;
+ width: 75rpx;
+ border-radius: 50%;
+ border: solid 1px gray;
+ .image {
+ width: 100%;
+ height: 100%;
+ }
+ }
+ .tips-text {
+ display: flex;
+ font-size: 28rpx;
+ color: #fff;
+ line-height: 50rpx;
+ margin-left: 20rpx;
+ flex-direction: column;
+ justify-content: space-evenly;
+ }
+}
+.exit {
+ height: 100rpx;
+ line-height: 40px;
+ border-bottom: solid 0.5px #ebebf7;
+ box-sizing: border-box;
+ display: flex;
+ justify-content: space-between;
+ align-items: center;
+ color: #7d7d7d;
+ .exitItem {
+ display: flex;
+ align-items: center;
+ margin-left: 30rpx;
+ }
+ .exitItemIndex {
+ height: 40rpx;
+ width: 40rpx;
+ border-radius: 50%;
+ display: block;
+ line-height: 48rpx;
+ image {
+ width: 100%;
+ height: 100%;
+ }
+ }
+ .microscope {
+ width: 8px;
+ height: 8px;
+ display: inline-block;
+ border: solid 2px #ccc;
+ -webkit-transform: rotate(45deg);
+ transform: rotate(45deg);
+ border-bottom: white;
+ border-left: white;
+ }
+}
+
diff --git a/collect_information/src/pages/police/mine/index.vue b/collect_information/src/pages/police/mine/index.vue
new file mode 100644
index 0000000..2f180fa
--- /dev/null
+++ b/collect_information/src/pages/police/mine/index.vue
@@ -0,0 +1,80 @@
+
+
+
+
+
+
+
+
+ 名字
+
+ 部门
+ 未选择单位
+
+
+
+
+
+
+
+
+
+
+ {{ item.name }}
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/collect_information/src/pages/projectManager/index/index.config.ts b/collect_information/src/pages/projectManager/index/index.config.ts
new file mode 100644
index 0000000..a7c25c7
--- /dev/null
+++ b/collect_information/src/pages/projectManager/index/index.config.ts
@@ -0,0 +1,3 @@
+export default definePageConfig({
+ navigationBarTitleText: '首页',
+})
diff --git a/collect_information/src/pages/projectManager/index/index.scss b/collect_information/src/pages/projectManager/index/index.scss
new file mode 100644
index 0000000..6ff67f6
--- /dev/null
+++ b/collect_information/src/pages/projectManager/index/index.scss
@@ -0,0 +1,76 @@
+.nameTitle {
+ position: absolute;
+ top: 19%;
+ left: 55px;
+ height: 125rpx;
+ background-color: #fff;
+ width: 650rpx;
+ border-radius: 12rpx;
+ box-shadow: 0px 10px 10px -4px #e3e3e3;
+ display: flex;
+ justify-content: space-between;
+ align-items: center;
+
+ .itemSchool {
+ border-right: solid 1.5rpx #dadada;
+ display: flex;
+ flex-direction: column;
+ align-items: center;
+ width: 25%;
+ font-size: 24px
+ }
+
+ .itemSchool text:nth-child(1) {
+ margin-bottom: 10rpx;
+ color: #898a8a;
+ margin-left: -8px;
+ }
+}
+.nameTitle .itemSchool:nth-child(4) {
+ border-right: none;
+}
+.swiperDemoItem {
+ color: #3886d0;
+ display: flex;
+ padding: 20px 0 0 50px;
+ overflow: hidden;
+ height: 70rpx;
+ margin-top: 70px;
+
+ .swiperDemoIndex {
+ width: 15px;
+ height: 45px;
+ background-image: linear-gradient(to bottom, #5d9cf9, #317ad9);
+ border-radius: 20px;
+ margin-right: 15px;
+ }
+}
+.Module {
+ background-color: #fff;
+ overflow: hidden;
+ .subModule {
+ display: flex;
+ align-items: center;
+ flex-wrap: wrap;
+ .subModuleItem {
+ width: 246rpx;
+ height: 140rpx;
+ display: flex;
+ flex-direction: column;
+ align-items: center;
+ justify-content: center;
+ padding-bottom: 10rpx;
+ .subModuleIndex {
+ width: 45rpx;
+ height: 45rpx;
+ image {
+ width: 100%;
+ height: 100%;
+ }
+ }
+ }
+ }
+
+}
+
+
diff --git a/collect_information/src/pages/projectManager/index/index.vue b/collect_information/src/pages/projectManager/index/index.vue
new file mode 100644
index 0000000..f9bcefe
--- /dev/null
+++ b/collect_information/src/pages/projectManager/index/index.vue
@@ -0,0 +1,100 @@
+
+
+
+
+
+
+ 1123
+
+
+
+
+
+ 单位数量
+ 51
+
+
+ 服务项目
+ 13123
+
+
+ 有保安证人员
+ 1000
+
+
+ 无保安证人员
+ 140
+
+
+
+
+ 请选择
+
+
+
+
+
+
+
+
+ {{ item.name }}
+
+
+
+
+
+
+
diff --git a/collect_information/src/pages/projectManager/mine/index.config.ts b/collect_information/src/pages/projectManager/mine/index.config.ts
new file mode 100644
index 0000000..b4d3feb
--- /dev/null
+++ b/collect_information/src/pages/projectManager/mine/index.config.ts
@@ -0,0 +1,3 @@
+export default definePageConfig({
+ navigationBarTitleText: '我的',
+})
diff --git a/collect_information/src/pages/projectManager/mine/index.scss b/collect_information/src/pages/projectManager/mine/index.scss
new file mode 100644
index 0000000..321b2e7
--- /dev/null
+++ b/collect_information/src/pages/projectManager/mine/index.scss
@@ -0,0 +1,71 @@
+.mine {
+ height: 100vh;
+ background-color: #fff;
+}
+.mine-container {
+ height: 320rpx;
+ display: flex;
+ align-items: center;
+ background-image: url('../../../assets/images/banner.png');
+ background-repeat: no-repeat;
+ background-position: right;
+ overflow: hidden;
+ padding: 45rpx;
+ box-sizing: border-box;
+ .contacts {
+ height: 75rpx;
+ width: 75rpx;
+ border-radius: 50%;
+ border: solid 1px gray;
+ .image {
+ width: 100%;
+ height: 100%;
+ }
+ }
+ .tips-text {
+ display: flex;
+ font-size: 28rpx;
+ color: #fff;
+ line-height: 50rpx;
+ margin-left: 20rpx;
+ flex-direction: column;
+ justify-content: space-evenly;
+ }
+}
+.exit {
+ height: 100rpx;
+ line-height: 40px;
+ border-bottom: solid 0.5px #ebebf7;
+ box-sizing: border-box;
+ display: flex;
+ justify-content: space-between;
+ align-items: center;
+ color: #7d7d7d;
+ .exitItem {
+ display: flex;
+ align-items: center;
+ margin-left: 30rpx;
+ }
+ .exitItemIndex {
+ height: 40rpx;
+ width: 40rpx;
+ border-radius: 50%;
+ display: block;
+ line-height: 48rpx;
+ image {
+ width: 100%;
+ height: 100%;
+ }
+ }
+ .microscope {
+ width: 8px;
+ height: 8px;
+ display: inline-block;
+ border: solid 2px #ccc;
+ -webkit-transform: rotate(45deg);
+ transform: rotate(45deg);
+ border-bottom: white;
+ border-left: white;
+ }
+}
+
diff --git a/collect_information/src/pages/projectManager/mine/index.vue b/collect_information/src/pages/projectManager/mine/index.vue
new file mode 100644
index 0000000..b85b668
--- /dev/null
+++ b/collect_information/src/pages/projectManager/mine/index.vue
@@ -0,0 +1,81 @@
+
+
+
+
+
+
+
+ 名字
+
+ 保安部门
+ 未选择单位
+
+
+
+
+
+
+
+
+
+
+ {{ item.name }}
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/collect_information/src/pages/register/register.config.ts b/collect_information/src/pages/register/register.config.ts
new file mode 100644
index 0000000..1c854c8
--- /dev/null
+++ b/collect_information/src/pages/register/register.config.ts
@@ -0,0 +1,3 @@
+export default definePageConfig({
+ navigationBarTitleText: '注册'
+})
diff --git a/collect_information/src/pages/register/register.scss b/collect_information/src/pages/register/register.scss
new file mode 100644
index 0000000..d3ec4b4
--- /dev/null
+++ b/collect_information/src/pages/register/register.scss
@@ -0,0 +1,43 @@
+.register {
+ height: 100vh;
+}
+
+.nut-cell-group__wrap {
+ margin: 0;
+}
+
+.registerIndex {
+ width: 100%;
+}
+
+.registerBtn {
+ margin-top: 40rpx;
+ padding: 0 20px;
+}
+
+.buttonChoose {
+ margin: 0;
+ border: none;
+ background: transparent;
+ outline: none;
+ padding: 0;
+ height: 90rpx;
+ width: 90rpx;
+ border-radius: 50%;
+}
+
+.nickNameInput{
+ color: black;
+}
+
+.contact {
+ height: 83rpx;
+ width: 83rpx;
+ border-radius: 50%;
+ border: solid 1px gray;
+
+ .image {
+ width: 100%;
+ height: 100%;
+ }
+}
diff --git a/collect_information/src/pages/register/register.vue b/collect_information/src/pages/register/register.vue
new file mode 100644
index 0000000..7031d06
--- /dev/null
+++ b/collect_information/src/pages/register/register.vue
@@ -0,0 +1,225 @@
+
+
+
+
+
+
+
+
+
+
+
+
+ {{ item.label }}
+
+
+
+
+
+ {{ item.label }}
+
+
+
+
+
+
+ {{ streetCommunitySmallCommunityLabel || "请选择行政区划" }}
+
+
+
+
+ {{ selectedLabel || '请选择单位' }}
+
+
+
+
+
+
+
+
+ 注册
+
+
+
+
+
diff --git a/collect_information/src/picker-search/picker-search.json.ts b/collect_information/src/picker-search/picker-search.json.ts
new file mode 100644
index 0000000..29210de
--- /dev/null
+++ b/collect_information/src/picker-search/picker-search.json.ts
@@ -0,0 +1,3 @@
+export default {
+ "component": true
+}
diff --git a/collect_information/src/picker-search/picker-search.scss b/collect_information/src/picker-search/picker-search.scss
new file mode 100644
index 0000000..f5ee090
--- /dev/null
+++ b/collect_information/src/picker-search/picker-search.scss
@@ -0,0 +1,85 @@
+.uiwu-flex-align {
+ align-items: center;
+}
+
+.uiwu-flex {
+ display: flex;
+}
+
+.uiwu-flex-space {
+ align-items: center;
+ justify-content: space-between;
+}
+
+.uiwu-picker-search {
+ position: absolute;
+ height: 1031rpx;
+ left: 0;
+ right: 0;
+ bottom: 0;
+ background: url('../assets/images/popuptiobg.png') no-repeat 0 0 #fff;
+ background-size: 100% auto;
+ border-radius: 30rpx 30rpx 0 0;
+
+ &-btn {
+ padding: 20rpx 30rpx 40rpx;
+
+ text {
+ &:nth-child(1) {
+ color: #999;
+ }
+
+ &:nth-child(2) {
+ color: #00bbff;
+ }
+ }
+ }
+
+ &-input {
+ box-sizing: border-box;
+ height: 80rpx;
+ background: rgba(#f3f6fd, 0.6);
+ border-radius: 16rpx;
+ margin: 0 30rpx;
+ padding-left: 24rpx;
+ padding-right: 10rpx;
+
+ input {
+ font-size: 28rpx;
+ width: 100%;
+ }
+ }
+
+ .scroll-view {
+ width: 100%;
+ height: calc(100% - 212rpx);
+ margin-top: 30rpx;
+ }
+
+ .radio-group {
+ padding: 0 50rpx 30rpx;
+
+ &-item {
+ margin-bottom: 20rpx;
+
+ text {
+ font-size: 28rpx;
+ color: #666;
+ }
+
+ radio {
+ transform: scale(0.8);
+ }
+ }
+ }
+}
+
+.searchButton {
+ height: 60rpx;
+ width: 200rpx;
+ border-radius: 10rpx;
+ line-height: 60rpx;
+ text-align: center;
+ color: #fff;
+ background-color: #00bbff;
+}
diff --git a/collect_information/src/picker-search/picker-search.vue b/collect_information/src/picker-search/picker-search.vue
new file mode 100644
index 0000000..d23edcb
--- /dev/null
+++ b/collect_information/src/picker-search/picker-search.vue
@@ -0,0 +1,90 @@
+
+
+ 11111
+
+
+
+
+ 取消
+ 确定
+
+
+
+ 搜索
+
+
+
+
+
+
+
+
+
+
+
diff --git a/collect_information/src/request/index.ts b/collect_information/src/request/index.ts
new file mode 100644
index 0000000..9c89ee8
--- /dev/null
+++ b/collect_information/src/request/index.ts
@@ -0,0 +1,112 @@
+import Taro from "@tarojs/taro";
+import { ApiOptions } from "@/types/request";
+import { useUserStore } from "@/store/userStore";
+
+
+/**
+ * 请求拦截器
+ * @param chain
+ */
+const requestInterceptor = (chain: Taro.Chain) => {
+ const requestParams = chain.requestParams
+ const tokenInfo = useUserStore().getTokenInfo()
+ const { header } = requestParams;
+ const customHeader: Record = {}
+ //添加token
+ tokenInfo && (customHeader[tokenInfo.name] = tokenInfo.value);
+ requestParams.header = {
+ ...header,
+ ...customHeader
+ }
+ return chain.proceed(requestParams)
+}
+
+//所有的拦截器
+const interceptors = [requestInterceptor];
+//注册拦截器
+interceptors.forEach((interceptorItem) => Taro.addInterceptor(interceptorItem));
+
+class CustomRequest {
+ BASE_API: string = process.env.TARO_APP_BASE_API;
+
+ private request(url: string, method: keyof Taro.request.Method, options: ApiOptions, params?: object,): Promise> {
+ // console.log(this.BASE_API,'0000000')
+ return new Promise>((resolve, reject) => {
+ if (options.loading) {
+ Taro.showLoading({
+ title: '请求中...',
+ }).then()
+ // Taro.showLoading({
+ // title: '请求中...',
+ // })
+ }
+ Taro.request, object>({
+ url: this.BASE_API + url,
+ data: params,
+ method,
+ ...options,
+ success: (result) => {
+ Taro.hideLoading()
+ if (result.header['Content-Type'] === 'application/octet-stream') {
+ resolve(result.data)
+ return
+ }
+ const jsonResult = result.data
+ if (jsonResult.code !== 200) {
+ if ([401].includes(jsonResult.code)) {
+ // 重新登录 跳转登录页 提示错误
+ }
+ Taro.showToast({
+ title: jsonResult.message,
+ icon: 'none',
+ mask: true,
+ duration: 2000
+ }).then()
+ reject(jsonResult);
+ } else {
+ resolve(jsonResult);
+ }
+ },
+ fail: (res) => {
+ Taro.hideLoading()
+ Taro.showToast({
+ title: res.errMsg,
+ icon: 'none',
+ mask: true,
+ duration: 2000
+ }).then()
+ reject(res.errMsg);
+ }
+ })
+ })
+ }
+
+ get(url: string, params?: object, options: ApiOptions = { loading: false }): Promise> {
+ options.header = {
+ ...options.header,
+ "content-type": 'application/x-www-form-urlencoded'
+ }
+ return this.request(url, "GET", options, params)
+ }
+
+ post(url: string, params?: object, options: ApiOptions = { loading: false }): Promise> {
+ return this.request(url, "POST", options, params)
+ }
+
+ delete(url: string, params?: object, options: ApiOptions = { loading: false }): Promise> {
+ options.header = {
+ ...options.header,
+ "content-type": 'application/x-www-form-urlencoded'
+ }
+ return this.request(url, "DELETE", options, params)
+ }
+
+ put(url: string, params?: object, options: ApiOptions = { loading: false }): Promise> {
+ return this.request(url, "PUT", options, params)
+ }
+
+}
+
+const api = new CustomRequest();
+
+export default api
diff --git a/collect_information/src/store/daily.ts b/collect_information/src/store/daily.ts
new file mode 100644
index 0000000..50b7752
--- /dev/null
+++ b/collect_information/src/store/daily.ts
@@ -0,0 +1,37 @@
+import { defineStore } from 'pinia'
+
+export const useDailyStore = defineStore('daily', {
+ state: () => ({
+ userdailyinspection: [],
+ base64_1: '',
+ base64_2: '',
+ }),
+ actions: {
+ dailyinspectionList(data) {
+ this.userdailyinspection = [...data]
+ },
+ change_base64_1(data) {
+ this.base64_1 = data
+ },
+ change_base64_2(data) {
+ this.base64_2 = data
+ },
+ clearSignData() {
+ this.base64_1 = ''
+ this.base64_2 = ''
+ },
+
+ },
+ getters: {
+ getdailyinspection(state) {
+ return state.userdailyinspection
+ },
+ get_base64_1(state) {
+ return state.base64_1
+ },
+ get_base64_2(state) {
+ return state.base64_2
+ },
+
+ }
+})
diff --git a/collect_information/src/store/index.ts b/collect_information/src/store/index.ts
new file mode 100644
index 0000000..e917126
--- /dev/null
+++ b/collect_information/src/store/index.ts
@@ -0,0 +1,3 @@
+import {createPinia} from 'pinia'
+
+export const pinia = createPinia()
diff --git a/collect_information/src/store/tabBarStore.ts b/collect_information/src/store/tabBarStore.ts
new file mode 100644
index 0000000..accf8c3
--- /dev/null
+++ b/collect_information/src/store/tabBarStore.ts
@@ -0,0 +1,14 @@
+import {defineStore} from "pinia";
+import {ref} from "vue";
+
+export const useTabBarStore = defineStore('tabBar', () => {
+ const selected = ref(0)
+ const setSelected = (index: number) => {
+ selected.value = index;
+ }
+
+ return {
+ selected,
+ setSelected
+ }
+})
diff --git a/collect_information/src/store/userStore.ts b/collect_information/src/store/userStore.ts
new file mode 100644
index 0000000..2dafcb3
--- /dev/null
+++ b/collect_information/src/store/userStore.ts
@@ -0,0 +1,40 @@
+import {defineStore} from "pinia";
+import {ref} from "vue";
+import Taro from "@tarojs/taro";
+
+export const useUserStore = defineStore('userStore', () => {
+ /** 获取token信息 **/
+ const getTokenInfo = (): TokenInfo | null => {
+ const ti = Taro.getStorageSync('tokenInfo')
+ // 如果 ti 存在且不是空字符串,则返回 ti,否则返回 null
+ return (ti !== undefined && ti !== null && ti !== '') ? ti : null;
+ }
+ /** 用户token信息 **/
+ const tokenInfo = ref(getTokenInfo())
+ /** 保存token信息 **/
+ const saveTokenInfo = (t: TokenInfo) => {
+ tokenInfo.value = t;
+ Taro.setStorageSync('tokenInfo', tokenInfo.value)
+ }
+ /** 清楚token信息 */
+ const clearTokenInfo = () => {
+ tokenInfo.value = null
+ Taro.removeStorageSync('tokenInfo')
+ }
+
+
+ /**
+ * 重置用户数据
+ * 一般用于用户退出登录 重置所有相关数据
+ */
+ const resetUserInfo = () => {
+ clearTokenInfo()
+ }
+
+ return {
+ tokenInfo,
+ saveTokenInfo,
+ getTokenInfo,
+ resetUserInfo
+ }
+})
diff --git a/collect_information/src/subPages/police/dailyInspection/dailyInspection.scss b/collect_information/src/subPages/police/dailyInspection/dailyInspection.scss
new file mode 100644
index 0000000..1d91809
--- /dev/null
+++ b/collect_information/src/subPages/police/dailyInspection/dailyInspection.scss
@@ -0,0 +1,149 @@
+page {
+ position: relative;
+}
+
+.container {
+ width: 100%;
+
+}
+
+.picker {
+ padding: 30rpx 30rpx;
+ display: flex;
+ justify-content: space-between;
+}
+
+.exit {
+ height: 100rpx;
+ line-height: 40px;
+ border-bottom: solid 0.5px #ebebf7;
+ box-sizing: border-box;
+ display: flex;
+ justify-content: space-between;
+ align-items: center;
+
+ .exitItem {
+ display: flex;
+ align-items: center;
+ }
+
+ .iconoscope {
+ z-index: 9999;
+ width: 8px;
+ height: 8px;
+ display: inline-block;
+ border: solid 2px #c2c2c2;
+ margin-left: 10px;
+ transform: rotate(45deg);
+ border-bottom: white;
+ border-left: white;
+ }
+}
+
+.sigh_btns {
+ transform: rotate(-90deg);
+ transform-origin: center
+}
+
+.sigh_btns_noRotate {}
+
+
+
+.input_width {
+ width: 400rpx;
+ height: 40rpx;
+ display: flex;
+ justify-content: space-between;
+ align-items: center
+}
+
+
+
+
+
+.uiwu-flex-align {
+ align-items: center;
+}
+
+.uiwu-flex {
+ display: flex;
+}
+
+.uiwu-flex-space {
+ align-items: center;
+ justify-content: space-between;
+}
+
+.uiwu-picker-search {
+ position: absolute;
+ height: 1031rpx;
+ left: 0;
+ right: 0;
+ bottom: 0;
+ background: url('../../../assets/images/popuptiobg.png') no-repeat 0 0 #fff;
+ background-size: 100% auto;
+ border-radius: 30rpx 30rpx 0 0;
+
+ &-btn {
+ padding: 20rpx 30rpx 40rpx;
+
+ text {
+ &:nth-child(1) {
+ color: #999;
+ }
+
+ &:nth-child(2) {
+ color: rgb(73, 143, 242);
+ }
+ }
+ }
+
+ &-input {
+ box-sizing: border-box;
+ height: 80rpx;
+ background: rgba(#f3f6fd, 0.6);
+ border-radius: 16rpx;
+ margin: 0 30rpx;
+ padding-left: 24rpx;
+ padding-right: 10rpx;
+
+ input {
+ font-size: 28rpx;
+ width: 100%;
+ }
+ }
+
+ .scroll-view {
+ width: 100%;
+ height: 800rpx;
+ margin-top: 30rpx;
+ }
+
+ .radio-group {
+ padding: 0 50rpx 30rpx;
+ overflow-y: scroll;
+
+ &-item {
+ margin-bottom: 20rpx;
+
+ text {
+ font-size: 28rpx;
+ color: #666;
+ }
+
+ radio {
+ transform: scale(0.8);
+ }
+ }
+ }
+}
+
+.searchButton {
+ height: 60rpx;
+ width: 200rpx;
+ border-radius: 10rpx;
+ line-height: 60rpx;
+ text-align: center;
+ color: #fff;
+ background-color: rgb(73, 143, 242);
+}
diff --git a/collect_information/src/subPages/police/dailyInspection/dailyInspection.ts b/collect_information/src/subPages/police/dailyInspection/dailyInspection.ts
new file mode 100644
index 0000000..99bd791
--- /dev/null
+++ b/collect_information/src/subPages/police/dailyInspection/dailyInspection.ts
@@ -0,0 +1,3 @@
+export default definePageConfig({
+ navigationBarTitleText: '监督考核',
+})
diff --git a/collect_information/src/subPages/police/dailyInspection/dailyInspection.vue b/collect_information/src/subPages/police/dailyInspection/dailyInspection.vue
new file mode 100644
index 0000000..6a5ab3f
--- /dev/null
+++ b/collect_information/src/subPages/police/dailyInspection/dailyInspection.vue
@@ -0,0 +1,404 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 当前考核项目:
+
+ 请选择考核项目
+ {{ selectorCheckedType }}
+
+
+
+
+
+
+
+
+ {{ item.name }}({{ item?.totalScore }}分)
+
+
+
+ -{{ item?.currentScore }}
+
+
+
+
+
+
+
+
+
+
+
+
+ 考核人员签字
+
+
+
+
+
+
+
+
+ 被考评学校负责人
+
+
+
+
+
+
+
+
+
+ 确认提交
+
+
+
+
+
+
+ 取消
+ 确定
+
+
+
+ 搜索
+
+
+
+
+ {{ item.label }}
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/collect_information/src/subPages/police/myEnterprisesUnit/myEnterprisesUnit.scss b/collect_information/src/subPages/police/myEnterprisesUnit/myEnterprisesUnit.scss
new file mode 100644
index 0000000..94a2385
--- /dev/null
+++ b/collect_information/src/subPages/police/myEnterprisesUnit/myEnterprisesUnit.scss
@@ -0,0 +1,31 @@
+page {
+ background-color: #f0f0f0;
+}
+
+.myProject {
+ .myProjectItem {
+ margin: 20px;
+ border-radius: 10px;
+ background: #ffffff;
+ padding: 15px;
+ font-size: 28px;
+ line-height: 50px;
+ color: #333333;
+
+ .myProjectIndex {
+ color: #9b9b9f;
+ }
+
+ .project {
+ //display: flex;
+ //justify-content: space-between;
+ //flex-flow: wrap;
+ //text-align: center;
+
+ view {
+ width: 100%;
+ margin: 8px 0 8px 0;
+ }
+ }
+ }
+}
diff --git a/collect_information/src/subPages/police/myEnterprisesUnit/myEnterprisesUnit.ts b/collect_information/src/subPages/police/myEnterprisesUnit/myEnterprisesUnit.ts
new file mode 100644
index 0000000..db6b2a1
--- /dev/null
+++ b/collect_information/src/subPages/police/myEnterprisesUnit/myEnterprisesUnit.ts
@@ -0,0 +1,3 @@
+export default definePageConfig({
+ navigationBarTitleText: '企事业单位',
+})
diff --git a/collect_information/src/subPages/police/myEnterprisesUnit/myEnterprisesUnit.vue b/collect_information/src/subPages/police/myEnterprisesUnit/myEnterprisesUnit.vue
new file mode 100644
index 0000000..4ed49dc
--- /dev/null
+++ b/collect_information/src/subPages/police/myEnterprisesUnit/myEnterprisesUnit.vue
@@ -0,0 +1,62 @@
+
+
+
+
+ {{ item?.name }}
+ 单位类型:{{ item?.type.label }}
+
+ 地址:
+ {{ item?.provinceName }}{{ item.cityName }}{{ item.districtsName }}{{ item.streetName }}
+
+
+ 联系人:{{ item?.contactPersonInfo.name }}
+ 电话:{{ item?.contactPersonInfo.telephone }}
+
+
+
+
+
+ 项目名称:{{serviceProject.name}}
+ 项目类型:{{serviceProject.type.label}}
+
+
+ 项目负责人:{{serviceProject.projectManagerMiniProgramUserInfo?.name?serviceProject.projectManagerMiniProgramUserInfo?.name:'无分配项目经理'}}
+
+ 责任单位:{{serviceProject.securityUnitName}}
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/collect_information/src/subPages/police/myEnterprisesUnit/projectDetails/projectDetails.scss b/collect_information/src/subPages/police/myEnterprisesUnit/projectDetails/projectDetails.scss
new file mode 100644
index 0000000..ef412c6
--- /dev/null
+++ b/collect_information/src/subPages/police/myEnterprisesUnit/projectDetails/projectDetails.scss
@@ -0,0 +1,79 @@
+.projectDetails {
+ height: 100vh;
+ overflow: hidden;
+ background: #f1f1f1;
+ display: flex;
+ flex-direction: column;
+
+ .projectDetailsItem {
+ margin: 10px 20px 10px 20px;
+ border-radius: 10px;
+ background: #ffffff;
+ padding: 15px;
+ font-size: 28px;
+ line-height: 65px;
+ color: #333333;
+
+ .projectDetailsIndex {
+ display: flex;
+ flex-wrap: wrap;
+ line-height: 44rpx;
+ margin-bottom: 20px;
+
+ .content {
+ color: #9b9b9f;
+ }
+ }
+ }
+
+ .projectDetailsTableDrop {
+ height: 80%;
+
+ .projectDetailsTable {
+ margin: 20px;
+ border-radius: 10px;
+ background: #ffffff;
+ padding: 15px;
+ font-size: 28px;
+ line-height: 50px;
+ color: #333333;
+
+ .projectDetailsTableItem {
+ //display: flex;
+ justify-content: space-between;
+ align-items: center;
+ flex-wrap: wrap;
+ font-size: 24px;
+ margin-bottom: 15px;
+
+ .projectDetailsTableIndex {
+ display: flex;
+ justify-content: flex-end;
+ text-align: center;
+
+ view {
+ width: 70px;
+ margin-right: 20px;
+ }
+ }
+ }
+ }
+ }
+
+ .projectDetailsButton {
+ position: fixed;
+ bottom: 19px;
+ display: flex;
+ -webkit-justify-content: space-around;
+ margin-bottom: 10rpx;
+ right: 0;
+ width: 100%;
+ }
+
+ .nutPopup {
+ width: 300px;
+ height: 100px;
+ display: flex;
+ flex-wrap: wrap;
+ }
+}
diff --git a/collect_information/src/subPages/police/myEnterprisesUnit/projectDetails/projectDetails.ts b/collect_information/src/subPages/police/myEnterprisesUnit/projectDetails/projectDetails.ts
new file mode 100644
index 0000000..463c9fb
--- /dev/null
+++ b/collect_information/src/subPages/police/myEnterprisesUnit/projectDetails/projectDetails.ts
@@ -0,0 +1,3 @@
+export default definePageConfig({
+ navigationBarTitleText: '项目详情',
+})
diff --git a/collect_information/src/subPages/police/myEnterprisesUnit/projectDetails/projectDetails.vue b/collect_information/src/subPages/police/myEnterprisesUnit/projectDetails/projectDetails.vue
new file mode 100644
index 0000000..306fcdd
--- /dev/null
+++ b/collect_information/src/subPages/police/myEnterprisesUnit/projectDetails/projectDetails.vue
@@ -0,0 +1,142 @@
+
+
+
+
+
+ {{ enterprisesUnitName }}-----{{ serviceProject?.name }}项目
+
+
+
+
+ 经理名称:{{ serviceProject?.projectManagerMiniProgramUserInfo.name }}
+
+ 手机号:{{ serviceProject?.projectManagerMiniProgramUserInfo.telephone }}
+
+
+
+
+
+
+
+ 保安证件号:{{ serviceProject?.idNumber }}
+
+
+
+
+ 工作人员数量:{{ serviceProject?.staffTotal }}
+
+
+ 保安人员数量:{{ serviceProject?.securityUserTotal }}
+
+
+
+
+ 服务区域面积:{{ serviceProject?.serviceArea }}
+
+
+ 楼栋数量:{{ serviceProject?.buildingTotal }}
+
+
+
+
+ 户数:{{ serviceProject?.houseTotal }}
+
+
+
+
+
+
+ 项目人员
+
+
+
+
+
+
+ 姓名:{{ item?.name ? item?.name : '创建者' }}
+ 性别:{{ item.sex?.label ? item.sex?.label : ' 隐藏' }}
+ 职位:{{ item.workPost ? item.workPost : '创建者' }}
+
+
+ 保安证件:{{ item.securityNumber ? item.securityNumber : '无' }}
+ 出生年月:{{ dayjs(item.dateOfBirth).format('YYYY-MM-DD') }}
+
+
+ 创建时间:{{ item.createTime }}
+ 身份证:{{ item.idCard }}
+
+
+
+
+
+
+
+
+
+
+
diff --git a/collect_information/src/subPages/projectManager/myProject/myProject.scss b/collect_information/src/subPages/projectManager/myProject/myProject.scss
new file mode 100644
index 0000000..d94d1d9
--- /dev/null
+++ b/collect_information/src/subPages/projectManager/myProject/myProject.scss
@@ -0,0 +1,35 @@
+.myProject {
+ height: 100vh;
+ overflow: hidden;
+ background: #f1f1f1;
+
+ .myProjectItem {
+ //height: 20%;
+ margin: 20px;
+ border-radius: 10px;
+ background: #ffffff;
+ padding: 15px;
+ font-size: 28px;
+ line-height: 50px;
+ color: #333333;
+
+ .myProjectIndex {
+ color: #9b9b9f;
+ }
+
+ .project {
+ display: flex;
+ justify-content: space-between;
+ flex-flow: wrap;
+ text-align: center;
+
+ view {
+ width: 45%;
+ height: 100rpx;
+ border: 1px solid #cccccc;
+ line-height: 100rpx;
+ margin: 8px 0 8px 0;
+ }
+ }
+ }
+}
diff --git a/collect_information/src/subPages/projectManager/myProject/myProject.ts b/collect_information/src/subPages/projectManager/myProject/myProject.ts
new file mode 100644
index 0000000..7d4dae7
--- /dev/null
+++ b/collect_information/src/subPages/projectManager/myProject/myProject.ts
@@ -0,0 +1,3 @@
+export default definePageConfig({
+ navigationBarTitleText: '我的项目',
+})
diff --git a/collect_information/src/subPages/projectManager/myProject/myProject.vue b/collect_information/src/subPages/projectManager/myProject/myProject.vue
new file mode 100644
index 0000000..8cdf561
--- /dev/null
+++ b/collect_information/src/subPages/projectManager/myProject/myProject.vue
@@ -0,0 +1,56 @@
+
+
+
+
+
+ {{ item?.name }}
+
+ 地址:
+ {{ item?.provinceName }}{{ item.cityName }}{{ item.districtsName }}{{ item.streetName }}
+
+
+ 联系人:{{ item?.contactPersonInfo.name }}
+ 电话:{{ item?.contactPersonInfo.telephone }}
+
+
+
+ {{ serviceProject.name }}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/collect_information/src/subPages/projectManager/myProject/projectDetails/projectDetails.scss b/collect_information/src/subPages/projectManager/myProject/projectDetails/projectDetails.scss
new file mode 100644
index 0000000..acb1441
--- /dev/null
+++ b/collect_information/src/subPages/projectManager/myProject/projectDetails/projectDetails.scss
@@ -0,0 +1,105 @@
+.projectDetails {
+ height: 100vh;
+ overflow: hidden;
+ background: #f1f1f1;
+ display: flex;
+ flex-direction: column;
+
+ .projectDetailsItem {
+ margin: 10px 20px 10px 20px;
+ border-radius: 10px;
+ background: #ffffff;
+ padding: 15px;
+ font-size: 28px;
+ line-height: 65px;
+ color: #333333;
+
+ .projectDetailsIndex {
+ display: flex;
+ flex-wrap: wrap;
+ line-height: 44rpx;
+ margin-bottom: 20px;
+
+ .content {
+ color: #9b9b9f;
+ }
+ }
+ }
+
+ .projectDetailsTableDrop {
+ height: 80%;
+
+ .projectDetailsTable {
+ margin: 20px;
+ border-radius: 10px;
+ background: #ffffff;
+ padding: 15px;
+ font-size: 28px;
+ line-height: 50px;
+ color: #333333;
+
+ .projectDetailsTableItem {
+ //display: flex;
+ justify-content: space-between;
+ align-items: center;
+ flex-wrap: wrap;
+ font-size: 24px;
+ margin-bottom: 15px;
+
+ .projectDetailsTableIndex {
+ display: flex;
+ justify-content: flex-end;
+ text-align: center;
+
+ view {
+ width: 70px;
+ margin-right: 20px;
+ }
+ }
+ }
+ }
+ }
+
+ .projectDetailsButton {
+ position: fixed;
+ bottom: 19px;
+ display: flex;
+ -webkit-justify-content: space-around;
+ margin-bottom: 10rpx;
+ right: 0;
+ width: 100%;
+ }
+
+ .nutPopup {
+ width: 300px;
+ height: 100px;
+ display: flex;
+ flex-wrap: wrap;
+ }
+
+ .qrcodeVisibleUrl {
+ margin-bottom: 5px;
+
+ image {
+ width: 100%;
+ }
+ }
+
+ .warp {
+ display: flex;
+ align-items: center;
+ justify-content: center;
+ height: 100vh;
+
+ .warpItem {
+ width: 90%;
+ height: 50%;
+ text-align: center;
+
+ .rect {
+ width: 100%;
+ height: 100%;
+ }
+ }
+ }
+}
diff --git a/collect_information/src/subPages/projectManager/myProject/projectDetails/projectDetails.ts b/collect_information/src/subPages/projectManager/myProject/projectDetails/projectDetails.ts
new file mode 100644
index 0000000..463c9fb
--- /dev/null
+++ b/collect_information/src/subPages/projectManager/myProject/projectDetails/projectDetails.ts
@@ -0,0 +1,3 @@
+export default definePageConfig({
+ navigationBarTitleText: '项目详情',
+})
diff --git a/collect_information/src/subPages/projectManager/myProject/projectDetails/projectDetails.vue b/collect_information/src/subPages/projectManager/myProject/projectDetails/projectDetails.vue
new file mode 100644
index 0000000..b70a065
--- /dev/null
+++ b/collect_information/src/subPages/projectManager/myProject/projectDetails/projectDetails.vue
@@ -0,0 +1,270 @@
+
+
+
+
+
+ {{ enterprisesUnitName }}-----{{ serviceProject?.name }}
+
+
+
+
+
+ 经理名称:{{ serviceProject?.projectManagerMiniProgramUserInfo.name }}
+
+ 手机号:{{ serviceProject?.projectManagerMiniProgramUserInfo.telephone }}
+
+
+
+
+
+
+
+ 保安证件号:{{ serviceProject?.idNumber }}
+
+
+
+
+ 工作人员数量:{{ serviceProject?.staffTotal }}
+
+
+ 保安人员数量:{{ serviceProject?.securityUserTotal }}
+
+
+
+
+ 服务区域面积:{{ serviceProject?.serviceArea }}
+
+
+ 楼栋数量:{{ serviceProject?.buildingTotal }}
+
+
+
+
+ 户数:{{ serviceProject?.houseTotal }}
+
+
+
+
+
+
+ 项目人员({{ total }})
+
+
+
+
+
+
+ 姓名:{{ item?.name ? item?.name : '创建者' }}
+ 性别:{{ item.sex?.label ? item.sex?.label : ' 隐藏' }}
+ 职位:{{ item.workPost ? item.workPost : '无' }}
+
+
+ 保安证件:{{ item.securityNumber ? item.securityNumber : '无' }}
+ 出生年月:{{ dayjs(item.dateOfBirth).format('YYYY-MM-DD') }}
+
+
+ 创建时间:{{ item.createTime }}
+ 身份证:{{ item.idCard }}
+
+
+
+ 详情
+ 编辑
+ 删除
+
+
+
+
+
+
+
+
+ 项目人员录入
+ 二维码录入
+
+
+
+
+
+
+
+
+ 籍贯:{{ securityUserDetail.nativePlace }}
+ 公司:{{ securityUserDetail.securityUnitName }}
+ 家庭地址:{{ securityUserDetail.homeAddress }}
+ 备注:{{ securityUserDetail.remark }}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/collect_information/src/subPages/projectManager/securityUserForm/securityUserForm.scss b/collect_information/src/subPages/projectManager/securityUserForm/securityUserForm.scss
new file mode 100644
index 0000000..4dd980a
--- /dev/null
+++ b/collect_information/src/subPages/projectManager/securityUserForm/securityUserForm.scss
@@ -0,0 +1,8 @@
+.form {
+ .formButton {
+ display: flex;
+ margin-top: auto;
+ justify-content: space-around;
+ margin-bottom: 30px
+ }
+}
diff --git a/collect_information/src/subPages/projectManager/securityUserForm/securityUserForm.ts b/collect_information/src/subPages/projectManager/securityUserForm/securityUserForm.ts
new file mode 100644
index 0000000..65ce4c0
--- /dev/null
+++ b/collect_information/src/subPages/projectManager/securityUserForm/securityUserForm.ts
@@ -0,0 +1,3 @@
+export default definePageConfig({
+ navigationBarTitleText: '项目人员录入',
+})
diff --git a/collect_information/src/subPages/projectManager/securityUserForm/securityUserForm.vue b/collect_information/src/subPages/projectManager/securityUserForm/securityUserForm.vue
new file mode 100644
index 0000000..98dadd5
--- /dev/null
+++ b/collect_information/src/subPages/projectManager/securityUserForm/securityUserForm.vue
@@ -0,0 +1,159 @@
+
+
+
+
+
+
+
+
+ {{ item.label }}
+
+
+
+
+
+
+
+
+ {{
+ formData.dateOfBirth ? dayjs(formData.dateOfBirth).format('YYYY-MM-DD') : '请选择出生年月'
+ }}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 提交
+ 重置表单
+
+
+
+
+
+
+
diff --git a/collect_information/src/subPages/select/dailyLife/dailyLife.scss b/collect_information/src/subPages/select/dailyLife/dailyLife.scss
new file mode 100644
index 0000000..64337a3
--- /dev/null
+++ b/collect_information/src/subPages/select/dailyLife/dailyLife.scss
@@ -0,0 +1,26 @@
+.userinform {
+ height: 100%;
+ width: 100%;
+}
+
+.userItem {
+ color: #7b7b7b;
+ font-size: 14px;
+ margin-bottom: 8px;
+
+ .textIndex {
+ margin-left: 20rpx;
+ }
+}
+
+.text {
+ width: 96%;
+}
+
+.singleChoice {
+ width: 90%;
+}
+
+.label {
+ margin: 0 20px;
+}
diff --git a/collect_information/src/subPages/select/dailyLife/dailyLife.ts b/collect_information/src/subPages/select/dailyLife/dailyLife.ts
new file mode 100644
index 0000000..457d7f4
--- /dev/null
+++ b/collect_information/src/subPages/select/dailyLife/dailyLife.ts
@@ -0,0 +1,3 @@
+export default definePageConfig({
+ navigationBarTitleText: '',
+})
diff --git a/collect_information/src/subPages/select/dailyLife/dailyLife.vue b/collect_information/src/subPages/select/dailyLife/dailyLife.vue
new file mode 100644
index 0000000..7ea5510
--- /dev/null
+++ b/collect_information/src/subPages/select/dailyLife/dailyLife.vue
@@ -0,0 +1,121 @@
+
+
+
+
+
+
+
+ onChange(modelValue, item.name)">
+ {{ items.name }}
+
+
+ checkboxGroupChange(arr, index)" style="display: flex; flex-direction: column">
+ checkboxChange(state, label, index, i)"
+ v-for="(items, i) in item.standardList"
+ size="40"
+ :label="items.snowFlakeId"
+ :key="i"
+ style="margin-bottom: 20rpx"
+ shape="button"
+ >{{ items.name}}
+
+
+
+
+
+
+
+
+
diff --git a/collect_information/src/subPages/select/signature/signature.scss b/collect_information/src/subPages/select/signature/signature.scss
new file mode 100644
index 0000000..fc3270e
--- /dev/null
+++ b/collect_information/src/subPages/select/signature/signature.scss
@@ -0,0 +1,65 @@
+.sign-box {
+ position: fixed;
+ z-index: 100;
+ top: 0;
+ left: 0;
+ width: 100%;
+ height: 100%;
+}
+
+.fixedIcon {
+ z-index: 1000;
+ position: fixed;
+ right: 20px;
+ top: 20px;
+ height: 100rpx;
+ width: 100rpx;
+}
+
+.sign-view {
+ height: 100%;
+}
+
+.sigh_btns_false {
+ position: absolute;
+ bottom: 15rpx;
+ right: 0;
+ width: 100%;
+ height: 100rpx;
+ display: flex;
+ justify-content: space-evenly;
+ align-items: center;
+
+}
+
+.sigh_btns {
+ transform: rotate(90deg);
+ transform-origin: center
+}
+
+.sigh_btns_noRotate {}
+
+.sigh_btns_true {
+ position: absolute;
+ left: 0;
+ top: 0;
+ width: 20%;
+ height: 100%;
+ display: flex;
+ flex-direction: column;
+ justify-content: space-evenly;
+ align-items: center;
+}
+
+
+.mycanvas {
+ width: 100%;
+ background-color: #ececec;
+}
+
+.canvsborder {
+ border: 1rpx solid #333;
+ position: fixed;
+ top: 0;
+ left: 10000rpx;
+}
diff --git a/collect_information/src/subPages/select/signature/signature.ts b/collect_information/src/subPages/select/signature/signature.ts
new file mode 100644
index 0000000..5f9871a
--- /dev/null
+++ b/collect_information/src/subPages/select/signature/signature.ts
@@ -0,0 +1,4 @@
+export default definePageConfig({
+ navigationBarTitleText: '签名',
+ disableScroll: true
+})
diff --git a/collect_information/src/subPages/select/signature/signature.vue b/collect_information/src/subPages/select/signature/signature.vue
new file mode 100644
index 0000000..f0b3643
--- /dev/null
+++ b/collect_information/src/subPages/select/signature/signature.vue
@@ -0,0 +1,174 @@
+
+
+
+
+
+
+
+
+
+
+
+
+ 取消
+ 重写
+ 确认
+
+
+
+
+
+
diff --git a/collect_information/src/utils/index.ts b/collect_information/src/utils/index.ts
new file mode 100644
index 0000000..e69de29
diff --git a/collect_information/tsconfig.json b/collect_information/tsconfig.json
new file mode 100644
index 0000000..91cfcd5
--- /dev/null
+++ b/collect_information/tsconfig.json
@@ -0,0 +1,39 @@
+{
+ "compilerOptions": {
+ "target": "es2017",
+ "module": "commonjs",
+ "removeComments": false,
+ "preserveConstEnums": true,
+ "moduleResolution": "node",
+ "experimentalDecorators": true,
+ "noImplicitAny": false,
+ "allowSyntheticDefaultImports": true,
+ "outDir": "lib",
+ "noUnusedLocals": true,
+ "noUnusedParameters": true,
+ "strictNullChecks": true,
+ "sourceMap": true,
+ "rootDir": ".",
+ "jsx": "preserve",
+ "allowJs": true,
+ "resolveJsonModule": true,
+ "typeRoots": [
+ "node_modules/@types"
+ ],
+ "paths": {
+ // TS5090 leading './'
+ "@/*": [
+ "./src/*"
+ ],
+ "@/types/*": [
+ "./types/*"
+ ]
+ }
+ },
+ "include": [
+ "./src",
+ "./types",
+ "./config"
+ ],
+ "compileOnSave": false
+}
diff --git a/collect_information/types/config/index.ts b/collect_information/types/config/index.ts
new file mode 100644
index 0000000..4069599
--- /dev/null
+++ b/collect_information/types/config/index.ts
@@ -0,0 +1,8 @@
+import Taro from "@tarojs/taro";
+
+export interface UserConfig {
+ /** 跳转的首页地址 **/
+ toIndex: string;
+ /** 身份对应的tabBar列表 **/
+ tabBarList: Taro.TabBarItem[]
+}
diff --git a/collect_information/types/global.d.ts b/collect_information/types/global.d.ts
new file mode 100644
index 0000000..c5cf58f
--- /dev/null
+++ b/collect_information/types/global.d.ts
@@ -0,0 +1,158 @@
+///
+
+declare module '*.png';
+declare module '*.gif';
+declare module '*.jpg';
+declare module '*.jpeg';
+declare module '*.svg';
+declare module '*.css';
+declare module '*.less';
+declare module '*.scss';
+declare module '*.sass';
+declare module '*.styl';
+
+declare namespace NodeJS {
+ interface ProcessEnv {
+ /** NODE 内置环境变量, 会影响到最终构建生成产物 */
+ NODE_ENV: 'development' | 'production',
+ /** 当前构建的平台 */
+ TARO_ENV: 'weapp' | 'swan' | 'alipay' | 'h5' | 'rn' | 'tt' | 'quickapp' | 'qq' | 'jd'
+ /**
+ * 当前构建的小程序 appid
+ * @description 若不同环境有不同的小程序,可通过在 env 文件中配置环境变量`TARO_APP_ID`来方便快速切换 appid, 而不必手动去修改 dist/project.config.json 文件
+ * @see https://taro-docs.jd.com/docs/next/env-mode-config#特殊环境变量-taro_app_id
+ */
+ TARO_APP_ID: string
+ /** 后台服务接口地址 **/
+ TARO_APP_BASE_API: string
+ }
+}
+
+declare module '@tarojs/components' {
+ export * from '@tarojs/components/types/index.vue3'
+}
+
+/**
+ * 微信小程序用户身份
+ */
+type MiniProgramUserIdentity = 'police' | 'project_manager'
+
+/**
+ * 选择
+ */
+interface SelectNodeVo> {
+ value: T;
+ label: string;
+ orderIndex?: number;
+ disabled?: boolean;
+ extData?: E
+}
+
+/**
+ * 树
+ */
+interface TreeNodeVo> {
+ value: T;
+ parentValue: T;
+ label: string;
+ orderIndex?: number;
+ children?: TreeNodeVo[]
+ extData?: E;
+}
+
+/**
+ * 全局状态返回
+ */
+interface JsonResult {
+ code: number;
+ data?: T;
+ message: string;
+}
+
+/**
+ * 分页对象
+ */
+interface PagerVo {
+ size: number,
+ total: number;
+ current: number;
+ records: T[]
+}
+
+/**
+ * token信息
+ */
+interface TokenInfo {
+ /** token名称 **/
+ name: string;
+ /** token值 **/
+ value: string;
+ /** 拓展属性 **/
+ extData: {
+ /** 身份 **/
+ identity: BaseEnum
+ }
+}
+
+/**
+ * 基本枚举类型
+ */
+interface BaseEnum> {
+ value: T;
+ label: string;
+ extData: E;
+}
+
+interface StandardList {
+ ckItemId: string
+ deductionPoints: number
+ name: string
+ snowFlakeId: string
+ isSelected: boolean
+}
+interface ItemList {
+ ckGroupId: string
+ name: string
+ remark: string
+ snowFlakeId: string
+ standardList: StandardList[]
+ type: { value: string; label: string }
+ selectedID: string
+ selected_points: number
+ selectedGroup: any[]
+}
+interface StarRating {
+ itemList: ItemList[]
+ name: string
+ remark: string
+ snowFlakeId: string
+ totalScore: number
+ currentScore: number
+}
+interface UnitEnterprisesUnitList {
+ label: string
+ value: string
+ extData: {
+ type: {
+ label: string
+ value: string
+ }
+ }
+}
+interface CkProjectListByType {
+ label: string
+ value: string
+ extData: {
+ createTime: string
+ remark: string
+ totalScore: number
+ type: {
+ label: string
+ value: string
+ }
+ }
+}
+interface Item {
+ itemList: any[] // 根据实际情况调整类型
+ snowFlakeId: string
+}
diff --git a/collect_information/types/pages/police/index.ts b/collect_information/types/pages/police/index.ts
new file mode 100644
index 0000000..802c4de
--- /dev/null
+++ b/collect_information/types/pages/police/index.ts
@@ -0,0 +1,13 @@
+export interface DataStatisticsRes {
+ /*企事业单位数量 */
+ enterprisesUnitCount: number;
+
+ /*服务项目数量 */
+ serviceProjectCount: number;
+
+ /*保安人员数量 */
+ securityUserCount: number;
+
+ /*无证保安人员数量 */
+ noCardSecurityUserCount: number;
+}
diff --git a/collect_information/types/pages/register/index.ts b/collect_information/types/pages/register/index.ts
new file mode 100644
index 0000000..b840184
--- /dev/null
+++ b/collect_information/types/pages/register/index.ts
@@ -0,0 +1,8 @@
+export interface RegisterParams {
+ avatar: string;
+ name: string;
+ sex: number,
+ telephone: string,
+ identity: string;
+ unitId: string
+}
diff --git a/collect_information/types/request/index.ts b/collect_information/types/request/index.ts
new file mode 100644
index 0000000..fb99bfd
--- /dev/null
+++ b/collect_information/types/request/index.ts
@@ -0,0 +1,5 @@
+import Taro from "@tarojs/taro";
+
+export interface ApiOptions extends Omit {
+ loading?: boolean;
+}
diff --git a/collect_information/types/subPages/projectManager/myProject/index.ts b/collect_information/types/subPages/projectManager/myProject/index.ts
new file mode 100644
index 0000000..4bbe728
--- /dev/null
+++ b/collect_information/types/subPages/projectManager/myProject/index.ts
@@ -0,0 +1,63 @@
+export interface MyProjectList {
+ item?: any,
+ address?: string;
+ city?: string;
+ cityName?: string;
+ contactPersonInfo: ContactPersonInfo;
+ districts?: string;
+ districtsName?: string;
+ name: string;
+ province?: string;
+ provinceName: string;
+ remark?: string;
+ serviceProjectList: ServiceProjectList[];
+ snowFlakeId?: string;
+ securityUnitId: string;
+ street?: string;
+ streetName?: string;
+ type?:any
+}
+
+export interface ContactPersonInfo {
+ name: string;
+ telephone: string
+}
+
+export interface ServiceProjectList {
+ buildingTotal?: number;
+ houseTotal?: number;
+ idNumber?: string;
+ isRecruitSecurity?: null;
+ name?: string;
+ remark?: string;
+ securityUserTotal?: number;
+ securityUnitName?:string;
+ serviceArea?: number;
+ snowFlakeId?: string;
+ staffTotal?: number;
+ type?: any;
+ projectManagerMiniProgramUserInfo?: ProgramUserInfo
+}
+
+export interface ProgramUserInfo {
+ idCard?: null
+ name?: string
+ telephone?: string
+}
+
+export interface ServiceProjectSecurityUserPagerVo {
+ createTime?: string;
+ dateOfBirth?: string;
+ homeAddress?: string;
+ idCard?: string;
+ name?: string;
+ nativePlace?: string;
+ remark?: string;
+ securityNumber?: string;
+ securityUnitId?: string;
+ securityUnitName?: string;
+ serviceProjectId?: string;
+ snowFlakeId: string;
+ workPost?: string;
+ sex: BaseEnum
+}
diff --git a/collect_information/types/subPages/projectManager/securityUserForm/index.ts b/collect_information/types/subPages/projectManager/securityUserForm/index.ts
new file mode 100644
index 0000000..e02bb69
--- /dev/null
+++ b/collect_information/types/subPages/projectManager/securityUserForm/index.ts
@@ -0,0 +1,15 @@
+export interface SecurityUserFormParams {
+ snowFlakeId?: string;
+ securityUnitId: string;
+ serviceProjectId: string;
+ name?: string;
+ workPost?: string;
+ telephone?: string;
+ sex: number;
+ nativePlace?: string;
+ idCard: string;
+ dateOfBirth?: Date | null;
+ securityNumber?: string;
+ remark?: string;
+ homeAddress?: string
+}
diff --git a/collect_information/types/vue.d.ts b/collect_information/types/vue.d.ts
new file mode 100644
index 0000000..a97867d
--- /dev/null
+++ b/collect_information/types/vue.d.ts
@@ -0,0 +1,10 @@
+export {}
+
+declare module 'vue' {
+ export interface GlobalComponents extends JSX.IntrinsicElements {
+ /** Note: Vue 在 runtime 中将 JSX.IntrinsicElements 通过 index signature 重复声明标签
+ * 这会导致插件无法正常跳转类型,可以手动覆盖声明标签活得更好的体验,参考如下:
+ * 'scroll-view': JSX.IntrinsicElements['scroll-view']
+ */
+ }
+}
diff --git a/policeManagement/.env.development b/policeManagement/.env.development
new file mode 100644
index 0000000..09fc9f3
--- /dev/null
+++ b/policeManagement/.env.development
@@ -0,0 +1,13 @@
+VITE_APP_NAME=超级后台
+VITE_APP_ENV=development
+VITE_APP_PORT=1000
+VITE_DROP_CONSOLE=false
+
+# axios
+VITE_APP_BASE_API=/api
+# VITE_APP_PROXY_URL=http://localhost:8765
+VITE_APP_PROXY_URL=http://172.10.10.93:8765
+#
+
+# rsa 公钥
+VITE_APP_RSA_PUBLIC_KEY=MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDJps/EXxxSpEM1Ix4R0NWIOBciHCr7P7coDT8tNKfelgR7txcJOqHCO/MIWe7T04aHQTcpQxqx9hMca7dbqz8TZpz9jvLzE/6ZonVKxHsoFnNlHMp1/CPAJ9f6D9wYicum2KltJkmQ0g//D9W2zPCYoGOmSRFcZx/KEBa4EM53jQIDAQAB
diff --git a/policeManagement/.env.production b/policeManagement/.env.production
new file mode 100644
index 0000000..d7a7d29
--- /dev/null
+++ b/policeManagement/.env.production
@@ -0,0 +1,10 @@
+VITE_APP_NAME=超级后台
+VITE_APP_ENV=production
+VITE_APP_PORT=1001
+VITE_DROP_CONSOLE=true
+
+# axios
+VITE_APP_BASE_API=/api
+VITE_APP_PROXY_URL=http://172.10.10.93:8765
+# rsa 公钥
+VITE_APP_RSA_PUBLIC_KEY=MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQCpu1C3JHZ+Ng/eVVCZtwKsOZv9RktpAL13pKy4FoRHyNv2t8TPV2AMzLzfEzlWx001nBxyVxEMR2N9jAcqFLHv7r16ciOzbtzB9dky2G+bc9jIs4/EdVK5bAZcPRh5Jrb78sC9PHyR4AeceDyCIKHLUbWBJB4NTZE0s1Wh5kMynQIDAQAB
\ No newline at end of file
diff --git a/policeManagement/.gitignore b/policeManagement/.gitignore
new file mode 100644
index 0000000..bb4e3e5
--- /dev/null
+++ b/policeManagement/.gitignore
@@ -0,0 +1,27 @@
+# Logs
+logs
+*.log
+npm-debug.log*
+yarn-debug.log*
+yarn-error.log*
+pnpm-debug.log*
+lerna-debug.log*
+
+node_modules
+dist
+policeManagement
+package-lock.json
+dist-ssr
+*.local
+
+# Editor directories and files
+.vscode/*
+.vscode
+!.vscode/extensions.json
+.idea
+.DS_Store
+*.suo
+*.ntvs*
+*.njsproj
+*.sln
+*.sw?
diff --git a/policeManagement/README.md b/policeManagement/README.md
new file mode 100644
index 0000000..33895ab
--- /dev/null
+++ b/policeManagement/README.md
@@ -0,0 +1,5 @@
+# Vue 3 + TypeScript + Vite
+
+This template should help get you started developing with Vue 3 and TypeScript in Vite. The template uses Vue 3 `
+
+ Vite + Vue + TS
+
+
+
+
+
+