Browse Source

添加我的页面,退出登录;巡检上报取消联系人联系电话

fenbao
wangyx 4 months ago
parent
commit
7ec610a997
  1. 8
      main.js
  2. 287
      node_modules/.package-lock.json
  3. 290
      package-lock.json
  4. 3
      package.json
  5. 14
      pages/api.js
  6. 12
      pages/login/login.vue
  7. 153
      pages/tabBar/mine/index.vue
  8. 177
      pages/tabBar/work/index.vue
  9. 36
      pagesA/checkout/detail/detail.vue
  10. 2
      pagesA/release/list/list.vue
  11. 124
      pagesA/xjPage/xj.vue
  12. 11
      store/index.js
  13. 23
      store/user.js

8
main.js

@ -1,5 +1,6 @@
import App from './App' import App from './App'
import uView from "uview-ui"; import uView from "uview-ui";
import store from "./store";
// import Vconsole from "vconsole"; // import Vconsole from "vconsole";
Vue.use(uView); Vue.use(uView);
// new Vconsole(); // new Vconsole();
@ -15,8 +16,9 @@ Vue.prototype.handleTree = handleTree
App.mpType = 'app' App.mpType = 'app'
// uni.$u.config.unit = 'rpx' // uni.$u.config.unit = 'rpx'
const app = new Vue({ const app = new Vue({
...App store,
}) ...App,
});
app.$mount() app.$mount()
// #endif // #endif
@ -24,7 +26,7 @@ app.$mount()
import { createSSRApp } from 'vue' import { createSSRApp } from 'vue'
export function createApp() { export function createApp() {
const app = createSSRApp(App) const app = createSSRApp(App)
return { return { store,
app app
} }
} }

287
node_modules/.package-lock.json

@ -3,6 +3,42 @@
"lockfileVersion": 3, "lockfileVersion": 3,
"requires": true, "requires": true,
"packages": { "packages": {
"node_modules/@babel/helper-string-parser": {
"version": "7.27.1",
"resolved": "https://registry.npmmirror.com/@babel/helper-string-parser/-/helper-string-parser-7.27.1.tgz",
"integrity": "sha512-qMlSxKbpRlAridDExk92nSobyDdpPijUq2DW6oDnUqd0iOGxmQjyqhMIihI9+zv4LPyZdRje2cavWPbCbWm3eA==",
"license": "MIT",
"peer": true,
"engines": {
"node": ">=6.9.0"
}
},
"node_modules/@babel/helper-validator-identifier": {
"version": "7.27.1",
"resolved": "https://registry.npmmirror.com/@babel/helper-validator-identifier/-/helper-validator-identifier-7.27.1.tgz",
"integrity": "sha512-D2hP9eA+Sqx1kBZgzxZh0y1trbuU+JoDkiEwqhQ36nodYqJwyEIhPSdMNd7lOm/4io72luTPWH20Yda0xOuUow==",
"license": "MIT",
"peer": true,
"engines": {
"node": ">=6.9.0"
}
},
"node_modules/@babel/parser": {
"version": "7.28.0",
"resolved": "https://registry.npmmirror.com/@babel/parser/-/parser-7.28.0.tgz",
"integrity": "sha512-jVZGvOxOuNSsuQuLRTh13nU0AogFlw32w/MT+LV6D3sP5WdbW61E77RnkbaO2dUvmPAYrBDJXGn5gGS6tH4j8g==",
"license": "MIT",
"peer": true,
"dependencies": {
"@babel/types": "^7.28.0"
},
"bin": {
"parser": "bin/babel-parser.js"
},
"engines": {
"node": ">=6.0.0"
}
},
"node_modules/@babel/runtime": { "node_modules/@babel/runtime": {
"version": "7.27.6", "version": "7.27.6",
"resolved": "https://registry.npmmirror.com/@babel/runtime/-/runtime-7.27.6.tgz", "resolved": "https://registry.npmmirror.com/@babel/runtime/-/runtime-7.27.6.tgz",
@ -12,6 +48,20 @@
"node": ">=6.9.0" "node": ">=6.9.0"
} }
}, },
"node_modules/@babel/types": {
"version": "7.28.1",
"resolved": "https://registry.npmmirror.com/@babel/types/-/types-7.28.1.tgz",
"integrity": "sha512-x0LvFTekgSX+83TI28Y9wYPUfzrnl2aT5+5QLnO6v7mSJYtEEevuDRN0F0uSHRk1G1IWZC43o00Y0xDDrpBGPQ==",
"license": "MIT",
"peer": true,
"dependencies": {
"@babel/helper-string-parser": "^7.27.1",
"@babel/helper-validator-identifier": "^7.27.1"
},
"engines": {
"node": ">=6.9.0"
}
},
"node_modules/@jridgewell/gen-mapping": { "node_modules/@jridgewell/gen-mapping": {
"version": "0.3.12", "version": "0.3.12",
"resolved": "https://registry.npmmirror.com/@jridgewell/gen-mapping/-/gen-mapping-0.3.12.tgz", "resolved": "https://registry.npmmirror.com/@jridgewell/gen-mapping/-/gen-mapping-0.3.12.tgz",
@ -51,7 +101,6 @@
"version": "1.5.4", "version": "1.5.4",
"resolved": "https://registry.npmmirror.com/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.5.4.tgz", "resolved": "https://registry.npmmirror.com/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.5.4.tgz",
"integrity": "sha512-VT2+G1VQs/9oz078bLrYbecdZKs912zQlkelYpuf+SXF+QvZDYJlbx/LSx+meSAwdDFnF8FVXW92AVjjkVmgFw==", "integrity": "sha512-VT2+G1VQs/9oz078bLrYbecdZKs912zQlkelYpuf+SXF+QvZDYJlbx/LSx+meSAwdDFnF8FVXW92AVjjkVmgFw==",
"dev": true,
"license": "MIT", "license": "MIT",
"peer": true "peer": true
}, },
@ -175,6 +224,121 @@
"undici-types": "~7.8.0" "undici-types": "~7.8.0"
} }
}, },
"node_modules/@vue/compiler-core": {
"version": "3.5.17",
"resolved": "https://registry.npmmirror.com/@vue/compiler-core/-/compiler-core-3.5.17.tgz",
"integrity": "sha512-Xe+AittLbAyV0pabcN7cP7/BenRBNcteM4aSDCtRvGw0d9OL+HG1u/XHLY/kt1q4fyMeZYXyIYrsHuPSiDPosA==",
"license": "MIT",
"peer": true,
"dependencies": {
"@babel/parser": "^7.27.5",
"@vue/shared": "3.5.17",
"entities": "^4.5.0",
"estree-walker": "^2.0.2",
"source-map-js": "^1.2.1"
}
},
"node_modules/@vue/compiler-dom": {
"version": "3.5.17",
"resolved": "https://registry.npmmirror.com/@vue/compiler-dom/-/compiler-dom-3.5.17.tgz",
"integrity": "sha512-+2UgfLKoaNLhgfhV5Ihnk6wB4ljyW1/7wUIog2puUqajiC29Lp5R/IKDdkebh9jTbTogTbsgB+OY9cEWzG95JQ==",
"license": "MIT",
"peer": true,
"dependencies": {
"@vue/compiler-core": "3.5.17",
"@vue/shared": "3.5.17"
}
},
"node_modules/@vue/compiler-sfc": {
"version": "3.5.17",
"resolved": "https://registry.npmmirror.com/@vue/compiler-sfc/-/compiler-sfc-3.5.17.tgz",
"integrity": "sha512-rQQxbRJMgTqwRugtjw0cnyQv9cP4/4BxWfTdRBkqsTfLOHWykLzbOc3C4GGzAmdMDxhzU/1Ija5bTjMVrddqww==",
"license": "MIT",
"peer": true,
"dependencies": {
"@babel/parser": "^7.27.5",
"@vue/compiler-core": "3.5.17",
"@vue/compiler-dom": "3.5.17",
"@vue/compiler-ssr": "3.5.17",
"@vue/shared": "3.5.17",
"estree-walker": "^2.0.2",
"magic-string": "^0.30.17",
"postcss": "^8.5.6",
"source-map-js": "^1.2.1"
}
},
"node_modules/@vue/compiler-ssr": {
"version": "3.5.17",
"resolved": "https://registry.npmmirror.com/@vue/compiler-ssr/-/compiler-ssr-3.5.17.tgz",
"integrity": "sha512-hkDbA0Q20ZzGgpj5uZjb9rBzQtIHLS78mMilwrlpWk2Ep37DYntUz0PonQ6kr113vfOEdM+zTBuJDaceNIW0tQ==",
"license": "MIT",
"peer": true,
"dependencies": {
"@vue/compiler-dom": "3.5.17",
"@vue/shared": "3.5.17"
}
},
"node_modules/@vue/devtools-api": {
"version": "6.6.4",
"resolved": "https://registry.npmmirror.com/@vue/devtools-api/-/devtools-api-6.6.4.tgz",
"integrity": "sha512-sGhTPMuXqZ1rVOk32RylztWkfXTRhuS7vgAKv0zjqk8gbsHkJ7xfFf+jbySxt7tWObEJwyKaHMikV/WGDiQm8g==",
"license": "MIT"
},
"node_modules/@vue/reactivity": {
"version": "3.5.17",
"resolved": "https://registry.npmmirror.com/@vue/reactivity/-/reactivity-3.5.17.tgz",
"integrity": "sha512-l/rmw2STIscWi7SNJp708FK4Kofs97zc/5aEPQh4bOsReD/8ICuBcEmS7KGwDj5ODQLYWVN2lNibKJL1z5b+Lw==",
"license": "MIT",
"peer": true,
"dependencies": {
"@vue/shared": "3.5.17"
}
},
"node_modules/@vue/runtime-core": {
"version": "3.5.17",
"resolved": "https://registry.npmmirror.com/@vue/runtime-core/-/runtime-core-3.5.17.tgz",
"integrity": "sha512-QQLXa20dHg1R0ri4bjKeGFKEkJA7MMBxrKo2G+gJikmumRS7PTD4BOU9FKrDQWMKowz7frJJGqBffYMgQYS96Q==",
"license": "MIT",
"peer": true,
"dependencies": {
"@vue/reactivity": "3.5.17",
"@vue/shared": "3.5.17"
}
},
"node_modules/@vue/runtime-dom": {
"version": "3.5.17",
"resolved": "https://registry.npmmirror.com/@vue/runtime-dom/-/runtime-dom-3.5.17.tgz",
"integrity": "sha512-8El0M60TcwZ1QMz4/os2MdlQECgGoVHPuLnQBU3m9h3gdNRW9xRmI8iLS4t/22OQlOE6aJvNNlBiCzPHur4H9g==",
"license": "MIT",
"peer": true,
"dependencies": {
"@vue/reactivity": "3.5.17",
"@vue/runtime-core": "3.5.17",
"@vue/shared": "3.5.17",
"csstype": "^3.1.3"
}
},
"node_modules/@vue/server-renderer": {
"version": "3.5.17",
"resolved": "https://registry.npmmirror.com/@vue/server-renderer/-/server-renderer-3.5.17.tgz",
"integrity": "sha512-BOHhm8HalujY6lmC3DbqF6uXN/K00uWiEeF22LfEsm9Q93XeJ/plHTepGwf6tqFcF7GA5oGSSAAUock3VvzaCA==",
"license": "MIT",
"peer": true,
"dependencies": {
"@vue/compiler-ssr": "3.5.17",
"@vue/shared": "3.5.17"
},
"peerDependencies": {
"vue": "3.5.17"
}
},
"node_modules/@vue/shared": {
"version": "3.5.17",
"resolved": "https://registry.npmmirror.com/@vue/shared/-/shared-3.5.17.tgz",
"integrity": "sha512-CabR+UN630VnsJO/jHWYBC1YVXyMq94KKp6iF5MQgZJs5I8cmjw6oVMO1oDbtBkENSHSSn/UadWlW/OAgdmKrg==",
"license": "MIT",
"peer": true
},
"node_modules/@webassemblyjs/ast": { "node_modules/@webassemblyjs/ast": {
"version": "1.14.1", "version": "1.14.1",
"resolved": "https://registry.npmmirror.com/@webassemblyjs/ast/-/ast-1.14.1.tgz", "resolved": "https://registry.npmmirror.com/@webassemblyjs/ast/-/ast-1.14.1.tgz",
@ -613,6 +777,13 @@
"url": "https://opencollective.com/core-js" "url": "https://opencollective.com/core-js"
} }
}, },
"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",
"peer": true
},
"node_modules/detect-libc": { "node_modules/detect-libc": {
"version": "1.0.3", "version": "1.0.3",
"resolved": "https://registry.npmmirror.com/detect-libc/-/detect-libc-1.0.3.tgz", "resolved": "https://registry.npmmirror.com/detect-libc/-/detect-libc-1.0.3.tgz",
@ -660,6 +831,19 @@
"node": ">=10.13.0" "node": ">=10.13.0"
} }
}, },
"node_modules/entities": {
"version": "4.5.0",
"resolved": "https://registry.npmmirror.com/entities/-/entities-4.5.0.tgz",
"integrity": "sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw==",
"license": "BSD-2-Clause",
"peer": true,
"engines": {
"node": ">=0.12"
},
"funding": {
"url": "https://github.com/fb55/entities?sponsor=1"
}
},
"node_modules/es-module-lexer": { "node_modules/es-module-lexer": {
"version": "1.7.0", "version": "1.7.0",
"resolved": "https://registry.npmmirror.com/es-module-lexer/-/es-module-lexer-1.7.0.tgz", "resolved": "https://registry.npmmirror.com/es-module-lexer/-/es-module-lexer-1.7.0.tgz",
@ -730,6 +914,13 @@
"node": ">=4.0" "node": ">=4.0"
} }
}, },
"node_modules/estree-walker": {
"version": "2.0.2",
"resolved": "https://registry.npmmirror.com/estree-walker/-/estree-walker-2.0.2.tgz",
"integrity": "sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w==",
"license": "MIT",
"peer": true
},
"node_modules/events": { "node_modules/events": {
"version": "3.3.0", "version": "3.3.0",
"resolved": "https://registry.npmmirror.com/events/-/events-3.3.0.tgz", "resolved": "https://registry.npmmirror.com/events/-/events-3.3.0.tgz",
@ -943,6 +1134,16 @@
"node": ">=8.9.0" "node": ">=8.9.0"
} }
}, },
"node_modules/magic-string": {
"version": "0.30.17",
"resolved": "https://registry.npmmirror.com/magic-string/-/magic-string-0.30.17.tgz",
"integrity": "sha512-sNPKHvyjVf7gyjwS4xGTaW/mCnF8wnjtifKBEhxfZ7E/S8tQ0rssrwGNn6q8JH/ohItJfSQp9mBtQYuTlH5QnA==",
"license": "MIT",
"peer": true,
"dependencies": {
"@jridgewell/sourcemap-codec": "^1.5.0"
}
},
"node_modules/merge-stream": { "node_modules/merge-stream": {
"version": "2.0.0", "version": "2.0.0",
"resolved": "https://registry.npmmirror.com/merge-stream/-/merge-stream-2.0.0.tgz", "resolved": "https://registry.npmmirror.com/merge-stream/-/merge-stream-2.0.0.tgz",
@ -996,6 +1197,25 @@
"resolved": "https://registry.npmmirror.com/mutation-observer/-/mutation-observer-1.0.3.tgz", "resolved": "https://registry.npmmirror.com/mutation-observer/-/mutation-observer-1.0.3.tgz",
"integrity": "sha512-M/O/4rF2h776hV7qGMZUH3utZLO/jK7p8rnNgGkjKUw8zCGjRQPxB8z6+5l8+VjRUQ3dNYu4vjqXYLr+U8ZVNA==" "integrity": "sha512-M/O/4rF2h776hV7qGMZUH3utZLO/jK7p8rnNgGkjKUw8zCGjRQPxB8z6+5l8+VjRUQ3dNYu4vjqXYLr+U8ZVNA=="
}, },
"node_modules/nanoid": {
"version": "3.3.11",
"resolved": "https://registry.npmmirror.com/nanoid/-/nanoid-3.3.11.tgz",
"integrity": "sha512-N8SpfPUnUp1bK+PMYW8qSWdl9U+wwNWI4QKxOYDy9JAro3WMX7p2OeVRF9v+347pnakNevPmiHhNmZ2HbFA76w==",
"funding": [
{
"type": "github",
"url": "https://github.com/sponsors/ai"
}
],
"license": "MIT",
"peer": true,
"bin": {
"nanoid": "bin/nanoid.cjs"
},
"engines": {
"node": "^10 || ^12 || ^13.7 || ^14 || >=15.0.1"
}
},
"node_modules/neo-async": { "node_modules/neo-async": {
"version": "2.6.2", "version": "2.6.2",
"resolved": "https://registry.npmmirror.com/neo-async/-/neo-async-2.6.2.tgz", "resolved": "https://registry.npmmirror.com/neo-async/-/neo-async-2.6.2.tgz",
@ -1023,7 +1243,6 @@
"version": "1.1.1", "version": "1.1.1",
"resolved": "https://registry.npmmirror.com/picocolors/-/picocolors-1.1.1.tgz", "resolved": "https://registry.npmmirror.com/picocolors/-/picocolors-1.1.1.tgz",
"integrity": "sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==", "integrity": "sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==",
"dev": true,
"license": "ISC", "license": "ISC",
"peer": true "peer": true
}, },
@ -1041,6 +1260,35 @@
"url": "https://github.com/sponsors/jonschlinkert" "url": "https://github.com/sponsors/jonschlinkert"
} }
}, },
"node_modules/postcss": {
"version": "8.5.6",
"resolved": "https://registry.npmmirror.com/postcss/-/postcss-8.5.6.tgz",
"integrity": "sha512-3Ybi1tAuwAP9s0r1UQ2J4n5Y0G05bJkpUIO0/bI9MhwmD70S5aTWbXGBwxHrelT+XM1k6dM0pk+SwNkpTRN7Pg==",
"funding": [
{
"type": "opencollective",
"url": "https://opencollective.com/postcss/"
},
{
"type": "tidelift",
"url": "https://tidelift.com/funding/github/npm/postcss"
},
{
"type": "github",
"url": "https://github.com/sponsors/ai"
}
],
"license": "MIT",
"peer": true,
"dependencies": {
"nanoid": "^3.3.11",
"picocolors": "^1.1.1",
"source-map-js": "^1.2.1"
},
"engines": {
"node": "^10 || ^12 || >=14"
}
},
"node_modules/punycode": { "node_modules/punycode": {
"version": "2.3.1", "version": "2.3.1",
"resolved": "https://registry.npmmirror.com/punycode/-/punycode-2.3.1.tgz", "resolved": "https://registry.npmmirror.com/punycode/-/punycode-2.3.1.tgz",
@ -1226,7 +1474,6 @@
"version": "1.2.1", "version": "1.2.1",
"resolved": "https://registry.npmmirror.com/source-map-js/-/source-map-js-1.2.1.tgz", "resolved": "https://registry.npmmirror.com/source-map-js/-/source-map-js-1.2.1.tgz",
"integrity": "sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA==", "integrity": "sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA==",
"dev": true,
"license": "BSD-3-Clause", "license": "BSD-3-Clause",
"engines": { "engines": {
"node": ">=0.10.0" "node": ">=0.10.0"
@ -1473,6 +1720,40 @@
"mutation-observer": "^1.0.3" "mutation-observer": "^1.0.3"
} }
}, },
"node_modules/vue": {
"version": "3.5.17",
"resolved": "https://registry.npmmirror.com/vue/-/vue-3.5.17.tgz",
"integrity": "sha512-LbHV3xPN9BeljML+Xctq4lbz2lVHCR6DtbpTf5XIO6gugpXUN49j2QQPcMj086r9+AkJ0FfUT8xjulKKBkkr9g==",
"license": "MIT",
"peer": true,
"dependencies": {
"@vue/compiler-dom": "3.5.17",
"@vue/compiler-sfc": "3.5.17",
"@vue/runtime-dom": "3.5.17",
"@vue/server-renderer": "3.5.17",
"@vue/shared": "3.5.17"
},
"peerDependencies": {
"typescript": "*"
},
"peerDependenciesMeta": {
"typescript": {
"optional": true
}
}
},
"node_modules/vuex": {
"version": "4.1.0",
"resolved": "https://registry.npmmirror.com/vuex/-/vuex-4.1.0.tgz",
"integrity": "sha512-hmV6UerDrPcgbSy9ORAtNXDr9M4wlNP4pEFKye4ujJF8oqgFFuxDCdOLS3eNoRTtq5O3hoBDh9Doj1bQMYHRbQ==",
"license": "MIT",
"dependencies": {
"@vue/devtools-api": "^6.0.0-beta.11"
},
"peerDependencies": {
"vue": "^3.2.0"
}
},
"node_modules/watchpack": { "node_modules/watchpack": {
"version": "2.4.4", "version": "2.4.4",
"resolved": "https://registry.npmmirror.com/watchpack/-/watchpack-2.4.4.tgz", "resolved": "https://registry.npmmirror.com/watchpack/-/watchpack-2.4.4.tgz",

290
package-lock.json

@ -7,13 +7,50 @@
"dependencies": { "dependencies": {
"jsencrypt": "^3.3.2", "jsencrypt": "^3.3.2",
"uview-ui": "^2.0.38", "uview-ui": "^2.0.38",
"vconsole": "^3.15.1" "vconsole": "^3.15.1",
"vuex": "^4.1.0"
}, },
"devDependencies": { "devDependencies": {
"sass": "^1.89.2", "sass": "^1.89.2",
"sass-loader": "^10.5.2" "sass-loader": "^10.5.2"
} }
}, },
"node_modules/@babel/helper-string-parser": {
"version": "7.27.1",
"resolved": "https://registry.npmmirror.com/@babel/helper-string-parser/-/helper-string-parser-7.27.1.tgz",
"integrity": "sha512-qMlSxKbpRlAridDExk92nSobyDdpPijUq2DW6oDnUqd0iOGxmQjyqhMIihI9+zv4LPyZdRje2cavWPbCbWm3eA==",
"license": "MIT",
"peer": true,
"engines": {
"node": ">=6.9.0"
}
},
"node_modules/@babel/helper-validator-identifier": {
"version": "7.27.1",
"resolved": "https://registry.npmmirror.com/@babel/helper-validator-identifier/-/helper-validator-identifier-7.27.1.tgz",
"integrity": "sha512-D2hP9eA+Sqx1kBZgzxZh0y1trbuU+JoDkiEwqhQ36nodYqJwyEIhPSdMNd7lOm/4io72luTPWH20Yda0xOuUow==",
"license": "MIT",
"peer": true,
"engines": {
"node": ">=6.9.0"
}
},
"node_modules/@babel/parser": {
"version": "7.28.0",
"resolved": "https://registry.npmmirror.com/@babel/parser/-/parser-7.28.0.tgz",
"integrity": "sha512-jVZGvOxOuNSsuQuLRTh13nU0AogFlw32w/MT+LV6D3sP5WdbW61E77RnkbaO2dUvmPAYrBDJXGn5gGS6tH4j8g==",
"license": "MIT",
"peer": true,
"dependencies": {
"@babel/types": "^7.28.0"
},
"bin": {
"parser": "bin/babel-parser.js"
},
"engines": {
"node": ">=6.0.0"
}
},
"node_modules/@babel/runtime": { "node_modules/@babel/runtime": {
"version": "7.27.6", "version": "7.27.6",
"resolved": "https://registry.npmmirror.com/@babel/runtime/-/runtime-7.27.6.tgz", "resolved": "https://registry.npmmirror.com/@babel/runtime/-/runtime-7.27.6.tgz",
@ -23,6 +60,20 @@
"node": ">=6.9.0" "node": ">=6.9.0"
} }
}, },
"node_modules/@babel/types": {
"version": "7.28.1",
"resolved": "https://registry.npmmirror.com/@babel/types/-/types-7.28.1.tgz",
"integrity": "sha512-x0LvFTekgSX+83TI28Y9wYPUfzrnl2aT5+5QLnO6v7mSJYtEEevuDRN0F0uSHRk1G1IWZC43o00Y0xDDrpBGPQ==",
"license": "MIT",
"peer": true,
"dependencies": {
"@babel/helper-string-parser": "^7.27.1",
"@babel/helper-validator-identifier": "^7.27.1"
},
"engines": {
"node": ">=6.9.0"
}
},
"node_modules/@jridgewell/gen-mapping": { "node_modules/@jridgewell/gen-mapping": {
"version": "0.3.12", "version": "0.3.12",
"resolved": "https://registry.npmmirror.com/@jridgewell/gen-mapping/-/gen-mapping-0.3.12.tgz", "resolved": "https://registry.npmmirror.com/@jridgewell/gen-mapping/-/gen-mapping-0.3.12.tgz",
@ -62,7 +113,6 @@
"version": "1.5.4", "version": "1.5.4",
"resolved": "https://registry.npmmirror.com/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.5.4.tgz", "resolved": "https://registry.npmmirror.com/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.5.4.tgz",
"integrity": "sha512-VT2+G1VQs/9oz078bLrYbecdZKs912zQlkelYpuf+SXF+QvZDYJlbx/LSx+meSAwdDFnF8FVXW92AVjjkVmgFw==", "integrity": "sha512-VT2+G1VQs/9oz078bLrYbecdZKs912zQlkelYpuf+SXF+QvZDYJlbx/LSx+meSAwdDFnF8FVXW92AVjjkVmgFw==",
"dev": true,
"license": "MIT", "license": "MIT",
"peer": true "peer": true
}, },
@ -438,6 +488,121 @@
"undici-types": "~7.8.0" "undici-types": "~7.8.0"
} }
}, },
"node_modules/@vue/compiler-core": {
"version": "3.5.17",
"resolved": "https://registry.npmmirror.com/@vue/compiler-core/-/compiler-core-3.5.17.tgz",
"integrity": "sha512-Xe+AittLbAyV0pabcN7cP7/BenRBNcteM4aSDCtRvGw0d9OL+HG1u/XHLY/kt1q4fyMeZYXyIYrsHuPSiDPosA==",
"license": "MIT",
"peer": true,
"dependencies": {
"@babel/parser": "^7.27.5",
"@vue/shared": "3.5.17",
"entities": "^4.5.0",
"estree-walker": "^2.0.2",
"source-map-js": "^1.2.1"
}
},
"node_modules/@vue/compiler-dom": {
"version": "3.5.17",
"resolved": "https://registry.npmmirror.com/@vue/compiler-dom/-/compiler-dom-3.5.17.tgz",
"integrity": "sha512-+2UgfLKoaNLhgfhV5Ihnk6wB4ljyW1/7wUIog2puUqajiC29Lp5R/IKDdkebh9jTbTogTbsgB+OY9cEWzG95JQ==",
"license": "MIT",
"peer": true,
"dependencies": {
"@vue/compiler-core": "3.5.17",
"@vue/shared": "3.5.17"
}
},
"node_modules/@vue/compiler-sfc": {
"version": "3.5.17",
"resolved": "https://registry.npmmirror.com/@vue/compiler-sfc/-/compiler-sfc-3.5.17.tgz",
"integrity": "sha512-rQQxbRJMgTqwRugtjw0cnyQv9cP4/4BxWfTdRBkqsTfLOHWykLzbOc3C4GGzAmdMDxhzU/1Ija5bTjMVrddqww==",
"license": "MIT",
"peer": true,
"dependencies": {
"@babel/parser": "^7.27.5",
"@vue/compiler-core": "3.5.17",
"@vue/compiler-dom": "3.5.17",
"@vue/compiler-ssr": "3.5.17",
"@vue/shared": "3.5.17",
"estree-walker": "^2.0.2",
"magic-string": "^0.30.17",
"postcss": "^8.5.6",
"source-map-js": "^1.2.1"
}
},
"node_modules/@vue/compiler-ssr": {
"version": "3.5.17",
"resolved": "https://registry.npmmirror.com/@vue/compiler-ssr/-/compiler-ssr-3.5.17.tgz",
"integrity": "sha512-hkDbA0Q20ZzGgpj5uZjb9rBzQtIHLS78mMilwrlpWk2Ep37DYntUz0PonQ6kr113vfOEdM+zTBuJDaceNIW0tQ==",
"license": "MIT",
"peer": true,
"dependencies": {
"@vue/compiler-dom": "3.5.17",
"@vue/shared": "3.5.17"
}
},
"node_modules/@vue/devtools-api": {
"version": "6.6.4",
"resolved": "https://registry.npmmirror.com/@vue/devtools-api/-/devtools-api-6.6.4.tgz",
"integrity": "sha512-sGhTPMuXqZ1rVOk32RylztWkfXTRhuS7vgAKv0zjqk8gbsHkJ7xfFf+jbySxt7tWObEJwyKaHMikV/WGDiQm8g==",
"license": "MIT"
},
"node_modules/@vue/reactivity": {
"version": "3.5.17",
"resolved": "https://registry.npmmirror.com/@vue/reactivity/-/reactivity-3.5.17.tgz",
"integrity": "sha512-l/rmw2STIscWi7SNJp708FK4Kofs97zc/5aEPQh4bOsReD/8ICuBcEmS7KGwDj5ODQLYWVN2lNibKJL1z5b+Lw==",
"license": "MIT",
"peer": true,
"dependencies": {
"@vue/shared": "3.5.17"
}
},
"node_modules/@vue/runtime-core": {
"version": "3.5.17",
"resolved": "https://registry.npmmirror.com/@vue/runtime-core/-/runtime-core-3.5.17.tgz",
"integrity": "sha512-QQLXa20dHg1R0ri4bjKeGFKEkJA7MMBxrKo2G+gJikmumRS7PTD4BOU9FKrDQWMKowz7frJJGqBffYMgQYS96Q==",
"license": "MIT",
"peer": true,
"dependencies": {
"@vue/reactivity": "3.5.17",
"@vue/shared": "3.5.17"
}
},
"node_modules/@vue/runtime-dom": {
"version": "3.5.17",
"resolved": "https://registry.npmmirror.com/@vue/runtime-dom/-/runtime-dom-3.5.17.tgz",
"integrity": "sha512-8El0M60TcwZ1QMz4/os2MdlQECgGoVHPuLnQBU3m9h3gdNRW9xRmI8iLS4t/22OQlOE6aJvNNlBiCzPHur4H9g==",
"license": "MIT",
"peer": true,
"dependencies": {
"@vue/reactivity": "3.5.17",
"@vue/runtime-core": "3.5.17",
"@vue/shared": "3.5.17",
"csstype": "^3.1.3"
}
},
"node_modules/@vue/server-renderer": {
"version": "3.5.17",
"resolved": "https://registry.npmmirror.com/@vue/server-renderer/-/server-renderer-3.5.17.tgz",
"integrity": "sha512-BOHhm8HalujY6lmC3DbqF6uXN/K00uWiEeF22LfEsm9Q93XeJ/plHTepGwf6tqFcF7GA5oGSSAAUock3VvzaCA==",
"license": "MIT",
"peer": true,
"dependencies": {
"@vue/compiler-ssr": "3.5.17",
"@vue/shared": "3.5.17"
},
"peerDependencies": {
"vue": "3.5.17"
}
},
"node_modules/@vue/shared": {
"version": "3.5.17",
"resolved": "https://registry.npmmirror.com/@vue/shared/-/shared-3.5.17.tgz",
"integrity": "sha512-CabR+UN630VnsJO/jHWYBC1YVXyMq94KKp6iF5MQgZJs5I8cmjw6oVMO1oDbtBkENSHSSn/UadWlW/OAgdmKrg==",
"license": "MIT",
"peer": true
},
"node_modules/@webassemblyjs/ast": { "node_modules/@webassemblyjs/ast": {
"version": "1.14.1", "version": "1.14.1",
"resolved": "https://registry.npmmirror.com/@webassemblyjs/ast/-/ast-1.14.1.tgz", "resolved": "https://registry.npmmirror.com/@webassemblyjs/ast/-/ast-1.14.1.tgz",
@ -876,6 +1041,13 @@
"url": "https://opencollective.com/core-js" "url": "https://opencollective.com/core-js"
} }
}, },
"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",
"peer": true
},
"node_modules/detect-libc": { "node_modules/detect-libc": {
"version": "1.0.3", "version": "1.0.3",
"resolved": "https://registry.npmmirror.com/detect-libc/-/detect-libc-1.0.3.tgz", "resolved": "https://registry.npmmirror.com/detect-libc/-/detect-libc-1.0.3.tgz",
@ -923,6 +1095,19 @@
"node": ">=10.13.0" "node": ">=10.13.0"
} }
}, },
"node_modules/entities": {
"version": "4.5.0",
"resolved": "https://registry.npmmirror.com/entities/-/entities-4.5.0.tgz",
"integrity": "sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw==",
"license": "BSD-2-Clause",
"peer": true,
"engines": {
"node": ">=0.12"
},
"funding": {
"url": "https://github.com/fb55/entities?sponsor=1"
}
},
"node_modules/es-module-lexer": { "node_modules/es-module-lexer": {
"version": "1.7.0", "version": "1.7.0",
"resolved": "https://registry.npmmirror.com/es-module-lexer/-/es-module-lexer-1.7.0.tgz", "resolved": "https://registry.npmmirror.com/es-module-lexer/-/es-module-lexer-1.7.0.tgz",
@ -993,6 +1178,13 @@
"node": ">=4.0" "node": ">=4.0"
} }
}, },
"node_modules/estree-walker": {
"version": "2.0.2",
"resolved": "https://registry.npmmirror.com/estree-walker/-/estree-walker-2.0.2.tgz",
"integrity": "sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w==",
"license": "MIT",
"peer": true
},
"node_modules/events": { "node_modules/events": {
"version": "3.3.0", "version": "3.3.0",
"resolved": "https://registry.npmmirror.com/events/-/events-3.3.0.tgz", "resolved": "https://registry.npmmirror.com/events/-/events-3.3.0.tgz",
@ -1206,6 +1398,16 @@
"node": ">=8.9.0" "node": ">=8.9.0"
} }
}, },
"node_modules/magic-string": {
"version": "0.30.17",
"resolved": "https://registry.npmmirror.com/magic-string/-/magic-string-0.30.17.tgz",
"integrity": "sha512-sNPKHvyjVf7gyjwS4xGTaW/mCnF8wnjtifKBEhxfZ7E/S8tQ0rssrwGNn6q8JH/ohItJfSQp9mBtQYuTlH5QnA==",
"license": "MIT",
"peer": true,
"dependencies": {
"@jridgewell/sourcemap-codec": "^1.5.0"
}
},
"node_modules/merge-stream": { "node_modules/merge-stream": {
"version": "2.0.0", "version": "2.0.0",
"resolved": "https://registry.npmmirror.com/merge-stream/-/merge-stream-2.0.0.tgz", "resolved": "https://registry.npmmirror.com/merge-stream/-/merge-stream-2.0.0.tgz",
@ -1259,6 +1461,25 @@
"resolved": "https://registry.npmmirror.com/mutation-observer/-/mutation-observer-1.0.3.tgz", "resolved": "https://registry.npmmirror.com/mutation-observer/-/mutation-observer-1.0.3.tgz",
"integrity": "sha512-M/O/4rF2h776hV7qGMZUH3utZLO/jK7p8rnNgGkjKUw8zCGjRQPxB8z6+5l8+VjRUQ3dNYu4vjqXYLr+U8ZVNA==" "integrity": "sha512-M/O/4rF2h776hV7qGMZUH3utZLO/jK7p8rnNgGkjKUw8zCGjRQPxB8z6+5l8+VjRUQ3dNYu4vjqXYLr+U8ZVNA=="
}, },
"node_modules/nanoid": {
"version": "3.3.11",
"resolved": "https://registry.npmmirror.com/nanoid/-/nanoid-3.3.11.tgz",
"integrity": "sha512-N8SpfPUnUp1bK+PMYW8qSWdl9U+wwNWI4QKxOYDy9JAro3WMX7p2OeVRF9v+347pnakNevPmiHhNmZ2HbFA76w==",
"funding": [
{
"type": "github",
"url": "https://github.com/sponsors/ai"
}
],
"license": "MIT",
"peer": true,
"bin": {
"nanoid": "bin/nanoid.cjs"
},
"engines": {
"node": "^10 || ^12 || ^13.7 || ^14 || >=15.0.1"
}
},
"node_modules/neo-async": { "node_modules/neo-async": {
"version": "2.6.2", "version": "2.6.2",
"resolved": "https://registry.npmmirror.com/neo-async/-/neo-async-2.6.2.tgz", "resolved": "https://registry.npmmirror.com/neo-async/-/neo-async-2.6.2.tgz",
@ -1286,7 +1507,6 @@
"version": "1.1.1", "version": "1.1.1",
"resolved": "https://registry.npmmirror.com/picocolors/-/picocolors-1.1.1.tgz", "resolved": "https://registry.npmmirror.com/picocolors/-/picocolors-1.1.1.tgz",
"integrity": "sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==", "integrity": "sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==",
"dev": true,
"license": "ISC", "license": "ISC",
"peer": true "peer": true
}, },
@ -1304,6 +1524,35 @@
"url": "https://github.com/sponsors/jonschlinkert" "url": "https://github.com/sponsors/jonschlinkert"
} }
}, },
"node_modules/postcss": {
"version": "8.5.6",
"resolved": "https://registry.npmmirror.com/postcss/-/postcss-8.5.6.tgz",
"integrity": "sha512-3Ybi1tAuwAP9s0r1UQ2J4n5Y0G05bJkpUIO0/bI9MhwmD70S5aTWbXGBwxHrelT+XM1k6dM0pk+SwNkpTRN7Pg==",
"funding": [
{
"type": "opencollective",
"url": "https://opencollective.com/postcss/"
},
{
"type": "tidelift",
"url": "https://tidelift.com/funding/github/npm/postcss"
},
{
"type": "github",
"url": "https://github.com/sponsors/ai"
}
],
"license": "MIT",
"peer": true,
"dependencies": {
"nanoid": "^3.3.11",
"picocolors": "^1.1.1",
"source-map-js": "^1.2.1"
},
"engines": {
"node": "^10 || ^12 || >=14"
}
},
"node_modules/punycode": { "node_modules/punycode": {
"version": "2.3.1", "version": "2.3.1",
"resolved": "https://registry.npmmirror.com/punycode/-/punycode-2.3.1.tgz", "resolved": "https://registry.npmmirror.com/punycode/-/punycode-2.3.1.tgz",
@ -1489,7 +1738,6 @@
"version": "1.2.1", "version": "1.2.1",
"resolved": "https://registry.npmmirror.com/source-map-js/-/source-map-js-1.2.1.tgz", "resolved": "https://registry.npmmirror.com/source-map-js/-/source-map-js-1.2.1.tgz",
"integrity": "sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA==", "integrity": "sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA==",
"dev": true,
"license": "BSD-3-Clause", "license": "BSD-3-Clause",
"engines": { "engines": {
"node": ">=0.10.0" "node": ">=0.10.0"
@ -1736,6 +1984,40 @@
"mutation-observer": "^1.0.3" "mutation-observer": "^1.0.3"
} }
}, },
"node_modules/vue": {
"version": "3.5.17",
"resolved": "https://registry.npmmirror.com/vue/-/vue-3.5.17.tgz",
"integrity": "sha512-LbHV3xPN9BeljML+Xctq4lbz2lVHCR6DtbpTf5XIO6gugpXUN49j2QQPcMj086r9+AkJ0FfUT8xjulKKBkkr9g==",
"license": "MIT",
"peer": true,
"dependencies": {
"@vue/compiler-dom": "3.5.17",
"@vue/compiler-sfc": "3.5.17",
"@vue/runtime-dom": "3.5.17",
"@vue/server-renderer": "3.5.17",
"@vue/shared": "3.5.17"
},
"peerDependencies": {
"typescript": "*"
},
"peerDependenciesMeta": {
"typescript": {
"optional": true
}
}
},
"node_modules/vuex": {
"version": "4.1.0",
"resolved": "https://registry.npmmirror.com/vuex/-/vuex-4.1.0.tgz",
"integrity": "sha512-hmV6UerDrPcgbSy9ORAtNXDr9M4wlNP4pEFKye4ujJF8oqgFFuxDCdOLS3eNoRTtq5O3hoBDh9Doj1bQMYHRbQ==",
"license": "MIT",
"dependencies": {
"@vue/devtools-api": "^6.0.0-beta.11"
},
"peerDependencies": {
"vue": "^3.2.0"
}
},
"node_modules/watchpack": { "node_modules/watchpack": {
"version": "2.4.4", "version": "2.4.4",
"resolved": "https://registry.npmmirror.com/watchpack/-/watchpack-2.4.4.tgz", "resolved": "https://registry.npmmirror.com/watchpack/-/watchpack-2.4.4.tgz",

3
package.json

@ -2,7 +2,8 @@
"dependencies": { "dependencies": {
"jsencrypt": "^3.3.2", "jsencrypt": "^3.3.2",
"uview-ui": "^2.0.38", "uview-ui": "^2.0.38",
"vconsole": "^3.15.1" "vconsole": "^3.15.1",
"vuex": "^4.1.0"
}, },
"devDependencies": { "devDependencies": {
"sass": "^1.89.2", "sass": "^1.89.2",

14
pages/api.js

@ -1,4 +1,18 @@
import request, { uploadFile } from "../utils/request.js"; import request, { uploadFile } from "../utils/request.js";
// 路由
export function getRouters() {
return request({
url: "/getRouters",
method: "get",
});
}
// 个人中心
export function getUserInfo() {
return request({
url: "/system/user/profile",
method: "get",
});
}
// 获取验证码 // 获取验证码
export function getCodeImg() { export function getCodeImg() {

12
pages/login/login.vue

@ -67,8 +67,9 @@
</template> </template>
<script> <script>
import { login, getCodeImg, updateWxOpenId } from "../api"; import { login, getCodeImg, updateWxOpenId,getUserInfo } from "../api";
import { encrypt, decrypt } from "../../utils/jsencrypt"; import { encrypt, decrypt } from "../../utils/jsencrypt";
import store from "../../store"
export default { export default {
data() { data() {
return { return {
@ -177,6 +178,15 @@ export default {
if (res.code === 200) { if (res.code === 200) {
this.loginFailCounts[username] = 0; this.loginFailCounts[username] = 0;
uni.setStorageSync("token", res.token); uni.setStorageSync("token", res.token);
// 1.
const userRes = await getUserInfo();
console.log(userRes,'获取用户信息成功');
if (userRes.code === 200) {
uni.setStorageSync("userInfo", userRes.data);
// 2. vuex
store.dispatch('user/setUserInfo', userRes.data);
}
uni.switchTab({ uni.switchTab({
url: "/pages/tabBar/work/index", url: "/pages/tabBar/work/index",
}); });

153
pages/tabBar/mine/index.vue

@ -1,33 +1,158 @@
<template> <template>
<view class="content"> <view class="mine-content">
<view> <view class="user-info">
<u-button type="primary" text="退出登录" @click="handleLogout"></u-button> <image
:src="userInfo.avatar ? 'userInfo.avatar' : '/static/img/login-top.png'"
class="avatar"
></image>
<view class="nickname" >{{
userInfo.userName
}}</view>
</view>
<view class="menu-list">
<view
class="menu-item"
v-for="(item, idx) in menuList"
:key="idx"
@click="goPage(item.url)"
>
<image :src="item.icon" class="menu-icon"></image>
<text class="menu-text">{{ item.text }}</text>
<u-icon name="arrow-right" color="#bbb" size="22"></u-icon>
</view>
<u-button
:hairline="false"
shape="circle"
:custom-style="btnStyle"
@click="handleLogout"
color="#fff"
text="退出登录"
></u-button>
</view> </view>
</view> </view>
</template> </template>
<script> <script>
import { logout } from '@/pages/api' import { logout } from "@/pages/api";
export default { export default {
data() {
return {
userInfo:{},
menuList: [
// {
// icon: "/static/img/repair.png",
// text: "",
// url: "/pagesA/repair/record",
// },
// {
// icon: "/static/img/report.png",
// text: "",
// url: "/pagesA/bs/record",
// },
{
icon: "/static/img/巡检记录.png",
text: "我的巡检记录",
url: "/pagesA/xjPage/xjRecord",
},
// {
// icon: "/static/img/password.png",
// text: "",
// url: "/pagesA/mine/changePwd",
// },
],
btnStyle: {
position: "fixed",
left: "40rpx",
bottom: 0,
width: "60%",
height: "44px",
fontSize: "18px",
margin: "50px",
marginTop: "200rpx",
background: "linear-gradient(90deg, #0DC6C6 0%, #13C2C2 100%)",
},
};
},
onLoad() {
if (!uni.getStorageSync("token")) {
uni.redirectTo({
url: "/pages/login/login",
});
}
const userInfo = uni.getStorageSync("userInfo");
if (userInfo) {
this.$store.dispatch("user/setUserInfo", userInfo);
}
this.userInfo = userInfo;
console.log("userInfo", userInfo);
},
methods: { methods: {
async handleLogout() { async handleLogout() {
try { try {
await logout(); await logout();
} catch (e) {} } catch (e) {}
uni.removeStorageSync('token'); uni.removeStorageSync("token");
uni.reLaunch({ uni.reLaunch({
url: '/pages/login/login' url: "/pages/login/login",
}); });
} },
} goPage(url) {
} uni.navigateTo({
url,
});
},
},
};
</script> </script>
<style lang="scss" scoped> <style lang="scss" scoped>
.content { .mine-content {
display: flex; min-height: 100vh;
flex-direction: column; background: #f5f6fa;
align-items: center; .user-info {
justify-content: center; display: flex;
flex-direction: row;
align-items: flex-start;
padding: 40rpx 0 30rpx 0;
background: linear-gradient(90deg, #cbf3fb 0%, #e2e7fd 100%);
height: 228rpx;
padding-left: 40rpx;
.avatar {
width: 120rpx;
height: 120rpx;
border-radius: 50%;
margin-bottom: 16rpx;
object-fit: cover;
}
.nickname {
font-size: 36rpx;
color: #333;
margin-left: 30rpx;
margin-top: 30rpx;
}
}
.menu-list {
margin-top: 30rpx;
.menu-item {
display: flex;
align-items: center;
background: #fff;
border-radius: 18rpx;
margin: -110rpx 24rpx 28rpx 24rpx;
padding: 44rpx 24rpx;
box-shadow: 0 4rpx 16rpx rgba(0, 0, 0, 0.04);
.menu-icon {
width: 40rpx;
height: 40rpx;
margin-right: 24rpx;
}
.menu-text {
flex: 1;
font-size: 30rpx;
color: #222;
}
}
}
} }
</style> </style>

177
pages/tabBar/work/index.vue

@ -2,150 +2,198 @@
<scroll-view class="content" scroll-y="true"> <scroll-view class="content" scroll-y="true">
<image src="/static/img/workBac1.png" class="bacImg1"></image> <image src="/static/img/workBac1.png" class="bacImg1"></image>
<image src="/static/img/workBac2.png" class="bacImg2"></image> <image src="/static/img/workBac2.png" class="bacImg2"></image>
<view class="conItem" style="margin-top: 100rpx;"> <!-- 房源模块 -->
<view class="conItem" style="margin-top: 100rpx" v-if="showCheckOut">
<view class="conItem-title">房源</view> <view class="conItem-title">房源</view>
<view class="conItem-cont"> <view class="conItem-cont">
<view class="conItem-cont-item" v-for="(item, index) in fyList" :key="index" @click="handelFyClick(item)"> <view
class="conItem-cont-item"
v-for="(item, index) in fyList"
:key="index"
@click="handelFyClick(item)"
>
<image :src="item.image" class="itemImg"></image> <image :src="item.image" class="itemImg"></image>
<text class="itemText">{{ item.text }}</text> <text class="itemText">{{ item.text }}</text>
</view> </view>
</view> </view>
</view> </view>
<view class="conItem"> <!-- 巡检模块 -->
<view
class="conItem"
:style="!showCheckOut && showInspection ? 'margin-top:100rpx' : ''"
v-if="showInspection"
>
<view class="conItem-title">巡检</view> <view class="conItem-title">巡检</view>
<view class="conItem-cont"> <view class="conItem-cont">
<view class="conItem-cont-item" v-for="(item, index) in xjList" :key="index" @click="handelXjClick(item)"> <view
class="conItem-cont-item"
v-for="(item, index) in xjList"
:key="index"
@click="handelXjClick(item)"
>
<image :src="item.image" class="itemImg"></image> <image :src="item.image" class="itemImg"></image>
<text class="itemText">{{ item.text }}</text> <text class="itemText">{{ item.text }}</text>
</view> </view>
</view> </view>
</view> </view>
<view class="conItem" style="display: none;"> <view class="conItem" style="display: none">
<view class="conItem-title">水电</view> <view class="conItem-title">水电</view>
<view class="conItem-cont"> <view class="conItem-cont">
<view class="conItem-cont-item" v-for="(item, index) in sdList" :key="index" @click="handelSdClick(item)"> <view
class="conItem-cont-item"
v-for="(item, index) in sdList"
:key="index"
@click="handelSdClick(item)"
>
<image :src="item.image" class="itemImg"></image> <image :src="item.image" class="itemImg"></image>
<text class="itemText">{{ item.text }}</text> <text class="itemText">{{ item.text }}</text>
</view> </view>
</view> </view>
</view> </view>
<view class="conItem" style="display: none;"> <view class="conItem" style="display: none">
<view class="conItem-title">报修</view> <view class="conItem-title">报修</view>
<view class="conItem-cont"> <view class="conItem-cont">
<view class="conItem-cont-item" v-for="(item, index) in bxList" :key="index"> <view
class="conItem-cont-item"
v-for="(item, index) in bxList"
:key="index"
>
<image :src="item.image" class="itemImg"></image> <image :src="item.image" class="itemImg"></image>
<text class="itemText">{{ item.text }}</text> <text class="itemText">{{ item.text }}</text>
</view> </view>
</view> </view>
</view> </view>
<view class="conItem" style="display: none;"> <view class="conItem" style="display: none">
<view class="conItem-title">报事</view> <view class="conItem-title">报事</view>
<view class="conItem-cont"> <view class="conItem-cont">
<view class="conItem-cont-item" v-for="(item, index) in bsList" :key="index" @click="handleBsClick(item)"> <view
class="conItem-cont-item"
v-for="(item, index) in bsList"
:key="index"
@click="handleBsClick(item)"
>
<image :src="item.image" class="itemImg"></image> <image :src="item.image" class="itemImg"></image>
<text class="itemText">{{ item.text }}</text> <text class="itemText">{{ item.text }}</text>
</view> </view>
</view> </view>
</view> </view>
</scroll-view> </scroll-view>
</template> </template>
<script> <script>
import { getRouters } from "../../../pages/api";
export default { export default {
data () { data() {
return { return {
showCheckOut: false, //
showInspection: false, //
fyList: [ fyList: [
// { image: '/static/img/.png', text: '' }, // { image: '/static/img/.png', text: '' },
{ image: '/static/img/退房检查.png', text: '退房检查' }, { image: "/static/img/退房检查.png", text: "退房检查" },
{ image: '/static/img/释放.png', text: '释放房源检查' }, { image: "/static/img/释放.png", text: "释放房源检查" },
// { image: '/static/img/.png', text: '' }, // { image: '/static/img/.png', text: '' },
{ image: '/static/img/强制清退.png', text: '强制清退' }, { image: "/static/img/强制清退.png", text: "强制清退" },
], ],
xjList: [ xjList: [
{ image: '/static/img/巡查.png', text: '巡检上报' }, { image: "/static/img/巡查.png", text: "巡检上报" },
{ image: '/static/img/记录.png', text: '巡检记录' }, { image: "/static/img/记录.png", text: "巡检记录" },
], ],
// sdList: [ // sdList: [
// { image: '/static/img/.png', text: '' }, // { image: '/static/img/.png', text: '' },
// { image: '/static/img/.png', text: '' }, // { image: '/static/img/.png', text: '' },
// ], // ],
// bxList: [ // bxList: [
// { image: '/static/img/.png', text: '' }, // { image: '/static/img/.png', text: '' },
// { image: '/static/img/.png', text: '' }, // { image: '/static/img/.png', text: '' },
// ], // ],
// bsList: [ // bsList: [
// { image: '/static/img/.png', text: '' }, // { image: '/static/img/.png', text: '' },
// { image: '/static/img/.png', text: '' }, // { image: '/static/img/.png', text: '' },
// ], // ],
};
}
}, },
onLoad () { onLoad() {
if (!uni.getStorageSync('token')) { this.getRouter();
if (!uni.getStorageSync("token")) {
uni.redirectTo({ uni.redirectTo({
url: '/pages/login/login', url: "/pages/login/login",
}) });
} }
}, },
methods: { methods: {
handelFyClick (item) { //
async getRouter() {
const res = await getRouters();
//
function hasMenu(menu, name) {
if (!menu) return false;
if (Array.isArray(menu)) {
return menu.some(item => hasMenu(item, name));
}
if (menu.name === name) return true;
if (menu.children) return hasMenu(menu.children, name);
return false;
}
this.showCheckOut = hasMenu(res.data || res, "Check_out");
this.showInspection = hasMenu(res.data || res, "Inspection");
},
handelFyClick(item) {
if (item.text == "退房检查") { if (item.text == "退房检查") {
uni.navigateTo({ uni.navigateTo({
url: '/pagesA/checkout/list/list' url: "/pagesA/checkout/list/list",
}) });
} else if (item.text == "释放房源检查") { } else if (item.text == "释放房源检查") {
uni.navigateTo({ uni.navigateTo({
url: '/pagesA/release/list/list' url: "/pagesA/release/list/list",
}) });
}else if (item.text == "强制清退") { } else if (item.text == "强制清退") {
uni.navigateTo({ uni.navigateTo({
url: '/pagesA/force/index/index' url: "/pagesA/force/index/index",
}) });
} }
}, },
handleBsClick (item) { handleBsClick(item) {
if (item.text === '处理') { if (item.text === "处理") {
// //
uni.navigateTo({ uni.navigateTo({
url: '/pages/tabBar/bsPage/bsRecord' url: "/pages/tabBar/bsPage/bsRecord",
}) });
} else { } else {
// //
uni.navigateTo({ uni.navigateTo({
url: '/pages/tabBar/bsPage/bsReport' url: "/pages/tabBar/bsPage/bsReport",
}) });
} }
}, },
handelXjClick (item) { handelXjClick(item) {
if (item.text === '巡检上报') { if (item.text === "巡检上报") {
// //
uni.navigateTo({ uni.navigateTo({
url: '/pagesA/xjPage/xj' url: "/pagesA/xjPage/xj",
}) });
} else { } else {
uni.navigateTo({ uni.navigateTo({
url: '/pagesA/xjPage/xjRecord' url: "/pagesA/xjPage/xjRecord",
}) });
} }
}, },
handelSdClick (item) { handelSdClick(item) {
if(item.text === '水量上报'){ if (item.text === "水量上报") {
uni.navigateTo({ uni.navigateTo({
url: '/pagesA/sdPage/sfReport' url: "/pagesA/sdPage/sfReport",
}) });
} else if(item.text === '电量上报'){ } else if (item.text === "电量上报") {
uni.navigateTo({ uni.navigateTo({
url: '/pagesA/sdPage/dfReport' url: "/pagesA/sdPage/dfReport",
}) });
} }
} },
} },
} };
</script> </script>
<style lang="scss" scoped> <style lang="scss" scoped>
@ -189,14 +237,15 @@ export default {
margin-bottom: 20rpx; margin-bottom: 20rpx;
.itemImg { .itemImg {
width: 80rpx; width: 100rpx;
height: 80rpx; height: 100rpx;
} }
.itemText { .itemText {
color: rgb(64, 64, 64); color: rgb(64, 64, 64);
font-size: 20rpx; font-size: 28rpx;
margin-top: 5rpx; margin-top: 5rpx;
white-space: nowrap;
} }
} }
@ -206,7 +255,7 @@ export default {
.bacImg1 { .bacImg1 {
width: 100%; width: 100%;
height: 20%; height: 17%;
position: absolute; position: absolute;
top: 0; top: 0;
z-index: -1; z-index: -1;
@ -216,7 +265,7 @@ export default {
width: 100%; width: 100%;
height: 80%; height: 80%;
position: absolute; position: absolute;
top: 30%; top: 12%;
z-index: -1; z-index: -1;
} }
</style> </style>

36
pagesA/checkout/detail/detail.vue

@ -118,6 +118,19 @@
</u-upload> </u-upload>
</view> </view>
<!-- 提交按钮 --> <!-- 提交按钮 -->
<view style="margin: 30rpx 0 30rpx 30rpx">
<!-- <checkbox-group v-model="isChecked">
<checkbox value="1" style="margin-right: 10rpx" />
<text style="color: #888; font-size: 28rpx">
</text>
</checkbox-group> -->
<checkbox-group @change="checkboxChange">
<label>
<checkbox value="isChecked" :checked="isChecked" style="transform:scale(0.7)" />确认以上信息无误生成房屋交割单由毕业生在微信小程序端签字确认
</label>
</checkbox-group>
</view>
<view class="submit-btn-wrap"> <view class="submit-btn-wrap">
<u-button <u-button
type="primary" type="primary"
@ -166,6 +179,7 @@ export default {
img1: [], img1: [],
info: {}, info: {},
facilitiesCheckDesc: "", facilitiesCheckDesc: "",
isChecked: false, //
}; };
}, },
onLoad(options) { onLoad(options) {
@ -176,6 +190,9 @@ export default {
this.getFacilities(options.houseId); this.getFacilities(options.houseId);
}, },
methods: { methods: {
checkboxChange(event) {
this.isChecked = !this.isChecked
},
maskPhoneNumber(phoneNumber) { maskPhoneNumber(phoneNumber) {
if (!phoneNumber || phoneNumber.length !== 11) { if (!phoneNumber || phoneNumber.length !== 11) {
return phoneNumber; return phoneNumber;
@ -206,7 +223,11 @@ export default {
for (let i = 0; i < files.length; i++) { for (let i = 0; i < files.length; i++) {
const file = files[i]; const file = files[i];
const filePath = file.tempFilePath; const filePath = file.tempFilePath;
const type = file.fileType || (filePath.match(/\.(mp4|mov|avi|wmv|flv|mkv)$/i) ? "video" : "image"); const type =
file.fileType ||
(filePath.match(/\.(mp4|mov|avi|wmv|flv|mkv)$/i)
? "video"
: "image");
// //
const uploadRes = await uploadImage(filePath); const uploadRes = await uploadImage(filePath);
this.fileList.push({ this.fileList.push({
@ -264,6 +285,15 @@ export default {
}); });
}, },
onSubmit() { onSubmit() {
console.log(this.isChecked);
if (!this.isChecked) {
uni.showToast({
title: "请先确认信息无误并勾选",
icon: "none",
});
return;
}
// //
const uncheckedDevices = this.deviceList.filter((item, index) => { const uncheckedDevices = this.deviceList.filter((item, index) => {
return ( return (
@ -315,8 +345,8 @@ export default {
energyMeterValue: this.energyMeterValue || "", energyMeterValue: this.energyMeterValue || "",
}; };
this.handleTempSave(params); this.handleTempSave(params);
uni.navigateTo({ uni.switchTab({
url: "/pages/tabBar/work", url: "/pages/tabBar/work/index",
}); });
uni.showToast({ title: "提交成功", icon: "success" }); uni.showToast({ title: "提交成功", icon: "success" });
}, },

2
pagesA/release/list/list.vue

@ -48,7 +48,7 @@ export default {
}, },
onShow() { onShow() {
// //
// this.refreshData(); this.refreshData();
}, },
methods: { methods: {
// //

124
pagesA/xjPage/xj.vue

@ -24,7 +24,6 @@
></u--input> ></u--input>
<u-icon slot="right" name="arrow-right"></u-icon> <u-icon slot="right" name="arrow-right"></u-icon>
</u-form-item> </u-form-item>
<u-form-item <u-form-item
labelAlign="right" labelAlign="right"
labelWidth="100px" labelWidth="100px"
@ -42,7 +41,6 @@
></u--input> ></u--input>
<u-icon slot="right" name="arrow-right"></u-icon> <u-icon slot="right" name="arrow-right"></u-icon>
</u-form-item> </u-form-item>
<u-form-item <u-form-item
labelAlign="right" labelAlign="right"
labelWidth="100px" labelWidth="100px"
@ -57,7 +55,6 @@
maxlength="500" maxlength="500"
></u--textarea> ></u--textarea>
</u-form-item> </u-form-item>
<u-form-item <u-form-item
labelAlign="right" labelAlign="right"
labelWidth="100px" labelWidth="100px"
@ -106,8 +103,7 @@
</u-form-item> </u-form-item>
</u-form> </u-form>
</view> </view>
<!-- <view class="conItem" style="margin-top: 40rpx">
<view class="conItem" style="margin-top: 40rpx">
<u--form labelPosition="left"> <u--form labelPosition="left">
<u-form-item <u-form-item
labelAlign="right" labelAlign="right"
@ -128,10 +124,8 @@
<u--input v-model="form.inspectorPhone" border="none"></u--input> <u--input v-model="form.inspectorPhone" border="none"></u--input>
</u-form-item> </u-form-item>
</u--form> </u--form>
</view> </view> -->
<view class="btn" @click="handleBtn">提交</view> <view class="btn" @click="handleBtn">提交</view>
<u-action-sheet <u-action-sheet
:show="lysqShow" :show="lysqShow"
:actions="apartmentList" :actions="apartmentList"
@ -150,13 +144,12 @@
</u-action-sheet> </u-action-sheet>
</scroll-view> </scroll-view>
</template> </template>
<script> <script>
import { queryDeptDropdownList } from "@/common/rec"; import { queryDeptDropdownList } from "@/common/rec";
import { getdeptList, addInspection } from "@/common/api"; import { getdeptList, addInspection } from "@/common/api";
import { uploadImage } from "@/pages/api"; import { uploadImage } from "@/pages/api";
import { getDicts } from "@/common/system/dict/data"; import { getDicts } from "@/common/system/dict/data";
import { mapState } from "vuex";
export default { export default {
data() { data() {
return { return {
@ -188,6 +181,13 @@ export default {
onLoad() { onLoad() {
this.getTree(); this.getTree();
this.getDictType(); this.getDictType();
const userInfo = uni.getStorageSync("userInfo");
if (userInfo) {
this.$store.dispatch("user/setUserInfo", userInfo);
}
},
computed: {
...mapState("user", ["userInfo"]),
}, },
methods: { methods: {
chooseMedia() { chooseMedia() {
@ -204,7 +204,11 @@ export default {
for (let i = 0; i < files.length; i++) { for (let i = 0; i < files.length; i++) {
const file = files[i]; const file = files[i];
const filePath = file.tempFilePath; const filePath = file.tempFilePath;
const type = file.fileType || (filePath.match(/\.(mp4|mov|avi|wmv|flv|mkv)$/i) ? "video" : "image"); const type =
file.fileType ||
(filePath.match(/\.(mp4|mov|avi|wmv|flv|mkv)$/i)
? "video"
: "image");
// //
const uploadRes = await uploadImage(filePath); const uploadRes = await uploadImage(filePath);
this.fileList.push({ this.fileList.push({
@ -258,20 +262,24 @@ export default {
}, },
getTree() { getTree() {
getdeptList().then(async (res) => { getdeptList().then(async (res) => {
this.deptOptions = this.handleTree( if (res.code == 200) {
res.data, this.deptOptions = this.handleTree(
"deptId", res.data,
"parentId", "deptId",
"children", "parentId",
2 "children",
); 2
console.log(this.deptOptions, "this.deptOptions"); );
console.log(this.deptOptions, "this.deptOptions");
const deptInfo = this.deptOptions[0].children[0];
const newArr = this.deptOptions.map((item) => ({
name: item.deptName,
}));
this.apartmentList = newArr;
} else {
uni.showToast({ title: res.msg, icon: "none" });
}
const deptInfo = this.deptOptions[0].children[0];
const newArr = this.deptOptions.map((item) => ({
name: item.deptName,
}));
this.apartmentList = newArr;
// this.deptOptions = await this.getListByParentId("1", deptInfo.deptId); // this.deptOptions = await this.getListByParentId("1", deptInfo.deptId);
// console.log(this.deptOptions); // console.log(this.deptOptions);
}); });
@ -310,21 +318,24 @@ export default {
title: "请输入问题描述", title: "请输入问题描述",
}); });
return; return;
} else if (!this.form.inspector) {
uni.showToast({
icon: "none",
title: "请输入巡检人姓名",
});
return;
} else if (!this.form.inspectorPhone) {
uni.showToast({
icon: "none",
title: "请输入巡检人电话",
});
return;
} }
// console.log(this.form); // else if (!this.form.inspector) {
// uni.showToast({
// icon: "none",
// title: "",
// });
// return;
// } else if (!this.form.inspectorPhone) {
// uni.showToast({
// icon: "none",
// title: "",
// });
// return;
// }
this.form.inspector = this.userInfo.userName;
this.form.inspectorPhone = this.userInfo.phonenumber;
let parmas = JSON.parse(JSON.stringify(this.form)); let parmas = JSON.parse(JSON.stringify(this.form));
delete parmas.apartmentName; delete parmas.apartmentName;
delete parmas.questionName; delete parmas.questionName;
addInspection(parmas).then((res) => { addInspection(parmas).then((res) => {
@ -333,24 +344,26 @@ export default {
icon: "success", icon: "success",
title: "提交成功!", title: "提交成功!",
success: () => { success: () => {
this.fileList = [];
this.form = {
apartmentId: "",
apartmentName: "",
questionType: "",
questionName: "",
title: "",
content: "",
inspector: "",
inspectorPhone: "",
inspectionTime: "",
imageList: [],
};
setTimeout(() => { setTimeout(() => {
uni.switchTab({ uni.switchTab({
url: "/pages/tabBar/work/index", url: "/pages/tabBar/work/index",
success: () => {
this.fileList = [];
this.form = {
apartmentId: "",
apartmentName: "",
questionType: "",
questionName: "",
title: "",
content: "",
inspector: "",
inspectorPhone: "",
inspectionTime: "",
imageList: [],
};
},
}); });
}, 2000); }, 1500);
}, },
}); });
} else { } else {
@ -364,7 +377,6 @@ export default {
handleTreeSelect(e) { handleTreeSelect(e) {
console.log(e); console.log(e);
console.log(this.deptOptions); console.log(this.deptOptions);
this.form.apartmentName = e.name; this.form.apartmentName = e.name;
this.form.apartmentId = this.deptOptions.find( this.form.apartmentId = this.deptOptions.find(
(item) => item.deptName === e.name (item) => item.deptName === e.name
@ -377,7 +389,6 @@ export default {
}, },
}; };
</script> </script>
<style lang="scss" scoped> <style lang="scss" scoped>
.xj-page { .xj-page {
width: 100%; width: 100%;
@ -385,7 +396,6 @@ export default {
padding-bottom: 50rpx; padding-bottom: 50rpx;
box-sizing: border-box; box-sizing: border-box;
} }
.contentImg { .contentImg {
position: absolute; position: absolute;
left: 0rpx; left: 0rpx;
@ -394,7 +404,6 @@ export default {
height: 280rpx; height: 280rpx;
z-index: -1; z-index: -1;
} }
.xjTitle { .xjTitle {
width: 100%; width: 100%;
color: rgba(16, 16, 16, 1); color: rgba(16, 16, 16, 1);
@ -403,7 +412,6 @@ export default {
margin-left: 30rpx; margin-left: 30rpx;
margin-top: 40rpx; margin-top: 40rpx;
} }
.xjTips { .xjTips {
width: 100%; width: 100%;
color: rgba(102, 102, 102, 1); color: rgba(102, 102, 102, 1);
@ -411,7 +419,6 @@ export default {
margin-left: 30rpx; margin-left: 30rpx;
margin-top: 10rpx; margin-top: 10rpx;
} }
.conItem { .conItem {
width: calc(100% - 40rpx); width: calc(100% - 40rpx);
border-radius: 10rpx; border-radius: 10rpx;
@ -422,7 +429,6 @@ export default {
padding: 20rpx; padding: 20rpx;
box-sizing: border-box; box-sizing: border-box;
} }
.btn { .btn {
width: 414rpx; width: 414rpx;
height: 70rpx; height: 70rpx;
@ -440,7 +446,6 @@ export default {
margin: auto; margin: auto;
margin-top: 40rpx; margin-top: 40rpx;
} }
.custom-upload-btn { .custom-upload-btn {
width: 160rpx; width: 160rpx;
height: 160rpx; height: 160rpx;
@ -484,7 +489,6 @@ export default {
margin-bottom: 16rpx; margin-bottom: 16rpx;
} }
</style> </style>
<style lang="scss"> <style lang="scss">
.xj-page { .xj-page {
.u-form-item__body__left__content__required { .u-form-item__body__left__content__required {

11
store/index.js

@ -0,0 +1,11 @@
import Vue from "vue";
import Vuex from "vuex";
import user from "./user";
Vue.use(Vuex);
export default new Vuex.Store({
modules: {
user,
},
});

23
store/user.js

@ -0,0 +1,23 @@
// store/user.js
const state = {
userInfo: null,
};
const mutations = {
SET_USER_INFO(state, info) {
state.userInfo = info;
},
};
const actions = {
setUserInfo({ commit }, info) {
commit("SET_USER_INFO", info);
},
};
export default {
namespaced: true,
state,
mutations,
actions,
};
Loading…
Cancel
Save