Soleilw пре 1 година
родитељ
комит
be1d5651fb
38 измењених фајлова са 3637 додато и 653 уклоњено
  1. 0
    489
      dist/assets/index-K5riA1-W.js
  2. 0
    1
      dist/assets/index-RU36Lilx.css
  3. 493
    0
      dist/web/assets/index-W7c0eAO7.js
  4. 1
    0
      dist/web/assets/index-tRwQDn9K.css
  5. 2
    2
      dist/web/index.html
  6. 0
    0
      dist/web/vite.svg
  7. 315
    0
      package-lock.json
  8. 3
    1
      package.json
  9. 0
    38
      src/components/HelloWorld.vue
  10. 26
    0
      src/components/common/left-sider.vue
  11. 22
    0
      src/components/company/image/index.vue
  12. 22
    0
      src/components/company/licence/index.vue
  13. 113
    0
      src/components/form/upload.vue
  14. 157
    0
      src/components/invite/manage/index.vue
  15. 97
    0
      src/components/invite/position/contact.vue
  16. 122
    0
      src/components/invite/position/demand.vue
  17. 221
    0
      src/components/invite/position/index.vue
  18. 118
    0
      src/components/invite/position/info.vue
  19. 122
    0
      src/components/invite/recycle/index.vue
  20. 204
    0
      src/components/meet/subscribe/index.vue
  21. 250
    0
      src/components/message/feedback/index.vue
  22. 209
    0
      src/components/message/list/index.vue
  23. 281
    0
      src/components/resume/interview/index.vue
  24. 214
    0
      src/components/resume/read/index.vue
  25. 261
    0
      src/components/resume/search/index.vue
  26. 22
    0
      src/components/user/expense/index.vue
  27. 230
    0
      src/components/user/password/index.vue
  28. 2
    2
      src/main.ts
  29. 5
    5
      src/router/routes.ts
  30. 14
    14
      src/views/manage/basic/index.vue
  31. 15
    13
      src/views/manage/invite/index.vue
  32. 11
    11
      src/views/manage/meet/index.vue
  33. 12
    11
      src/views/manage/message/index.vue
  34. 13
    14
      src/views/manage/resume/index.vue
  35. 10
    10
      src/views/manage/search/index.vue
  36. 12
    11
      src/views/manage/user/index.vue
  37. 28
    24
      tsconfig.json
  38. 10
    7
      vite.config.ts

+ 0
- 489
dist/assets/index-K5riA1-W.js
Разлика између датотеке није приказан због своје велике величине
Прегледај датотеку


+ 0
- 1
dist/assets/index-RU36Lilx.css
Разлика између датотеке није приказан због своје велике величине
Прегледај датотеку


+ 493
- 0
dist/web/assets/index-W7c0eAO7.js
Разлика између датотеке није приказан због своје велике величине
Прегледај датотеку


+ 1
- 0
dist/web/assets/index-tRwQDn9K.css
Разлика између датотеке није приказан због своје велике величине
Прегледај датотеку


dist/index.html → dist/web/index.html Прегледај датотеку

@@ -5,8 +5,8 @@
<link rel="icon" type="image/svg+xml" href="/vite.svg" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<title>Vite + Vue + TS</title>
<script type="module" crossorigin src="/assets/index-K5riA1-W.js"></script>
<link rel="stylesheet" crossorigin href="/assets/index-RU36Lilx.css">
<script type="module" crossorigin src="/assets/index-W7c0eAO7.js"></script>
<link rel="stylesheet" crossorigin href="/assets/index-tRwQDn9K.css">
</head>
<body>
<div id="app"></div>

dist/vite.svg → dist/web/vite.svg Прегледај датотеку


+ 315
- 0
package-lock.json Прегледај датотеку

@@ -8,8 +8,10 @@
"name": "job-pc",
"version": "0.0.0",
"dependencies": {
"@vueup/vue-quill": "^1.2.0",
"ant-design-vue": "^4.0.0-rc.6",
"axios": "^1.6.4",
"dayjs": "^1.11.10",
"less": "^4.2.0",
"less-loader": "^11.1.3",
"vue": "^3.3.11",
@@ -892,6 +894,18 @@
"resolved": "https://registry.npmjs.org/@vue/shared/-/shared-3.4.5.tgz",
"integrity": "sha512-6XptuzlMvN4l4cDnDw36pdGEV+9njYkQ1ZE0Q6iZLwrKefKaOJyiFmcP3/KBDHbt72cJZGtllAc1GaHe6XGAyg=="
},
"node_modules/@vueup/vue-quill": {
"version": "1.2.0",
"resolved": "https://registry.npmmirror.com/@vueup/vue-quill/-/vue-quill-1.2.0.tgz",
"integrity": "sha512-kd5QPSHMDpycklojPXno2Kw2JSiKMYduKYQckTm1RJoVDA557MnyUXgcuuDpry4HY/Rny9nGNcK+m3AHk94wag==",
"dependencies": {
"quill": "^1.3.7",
"quill-delta": "^4.2.2"
},
"peerDependencies": {
"vue": "^3.2.41"
}
},
"node_modules/@webassemblyjs/ast": {
"version": "1.11.6",
"resolved": "https://registry.npmjs.org/@webassemblyjs/ast/-/ast-1.11.6.tgz",
@@ -1213,6 +1227,16 @@
"integrity": "sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==",
"peer": true
},
"node_modules/call-bind": {
"version": "1.0.5",
"resolved": "https://registry.npmmirror.com/call-bind/-/call-bind-1.0.5.tgz",
"integrity": "sha512-C3nQxfFZxFRVoJoGKKI8y3MOEo129NQ+FgQ08iye+Mk4zNZZGdjfs06bVTr+DBSlA66Q2VEcMki/cUCP4SercQ==",
"dependencies": {
"function-bind": "^1.1.2",
"get-intrinsic": "^1.2.1",
"set-function-length": "^1.1.1"
}
},
"node_modules/caniuse-lite": {
"version": "1.0.30001574",
"resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001574.tgz",
@@ -1242,6 +1266,14 @@
"node": ">=6.0"
}
},
"node_modules/clone": {
"version": "2.1.2",
"resolved": "https://registry.npmmirror.com/clone/-/clone-2.1.2.tgz",
"integrity": "sha512-3Pe/CF1Nn94hyhIYpjtiLhdCoEoz0DqQ+988E9gmeEdQZlojxnOb74wctFyuwWQHzqyf9X7C7MG8juUpqBJT8w==",
"engines": {
"node": ">=0.8"
}
},
"node_modules/combined-stream": {
"version": "1.0.8",
"resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz",
@@ -1307,6 +1339,48 @@
"integrity": "sha512-e/1zu3xH5MQryN2zdVaF0OrdNLUbvWxzMbi+iNA6Bky7l1RoP8a2fIbRocyHclXt/arDrrR6lL3TqFD9pMQTsg==",
"dev": true
},
"node_modules/deep-equal": {
"version": "1.1.2",
"resolved": "https://registry.npmmirror.com/deep-equal/-/deep-equal-1.1.2.tgz",
"integrity": "sha512-5tdhKF6DbU7iIzrIOa1AOUt39ZRm13cmL1cGEh//aqR8x9+tNfbywRf0n5FD/18OKMdo7DNEtrX2t22ZAkI+eg==",
"dependencies": {
"is-arguments": "^1.1.1",
"is-date-object": "^1.0.5",
"is-regex": "^1.1.4",
"object-is": "^1.1.5",
"object-keys": "^1.1.1",
"regexp.prototype.flags": "^1.5.1"
},
"engines": {
"node": ">= 0.4"
}
},
"node_modules/define-data-property": {
"version": "1.1.1",
"resolved": "https://registry.npmmirror.com/define-data-property/-/define-data-property-1.1.1.tgz",
"integrity": "sha512-E7uGkTzkk1d0ByLeSc6ZsFS79Axg+m1P/VsgYsxHgiuc3tFSj+MjMIwe90FC4lOAZzNBdY7kkO2P2wKdsQ1vgQ==",
"dependencies": {
"get-intrinsic": "^1.2.1",
"gopd": "^1.0.1",
"has-property-descriptors": "^1.0.0"
},
"engines": {
"node": ">= 0.4"
}
},
"node_modules/define-properties": {
"version": "1.2.1",
"resolved": "https://registry.npmmirror.com/define-properties/-/define-properties-1.2.1.tgz",
"integrity": "sha512-8QmQKqEASLd5nx0U1B1okLElbUuuttJ/AnYmRXbbbGDWh6uS208EjD4Xqq/I9wK7u0v6O08XhTWnt5XtEbR6Dg==",
"dependencies": {
"define-data-property": "^1.0.1",
"has-property-descriptors": "^1.0.0",
"object-keys": "^1.1.1"
},
"engines": {
"node": ">= 0.4"
}
},
"node_modules/delayed-stream": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz",
@@ -1468,6 +1542,11 @@
"resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-2.0.2.tgz",
"integrity": "sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w=="
},
"node_modules/eventemitter3": {
"version": "2.0.3",
"resolved": "https://registry.npmmirror.com/eventemitter3/-/eventemitter3-2.0.3.tgz",
"integrity": "sha512-jLN68Dx5kyFHaePoXWPsCGW5qdyZQtLYHkxkg02/Mz6g0kYpDx4FyP6XfArhQdlOC4b8Mv+EMxPo/8La7Tzghg=="
},
"node_modules/events": {
"version": "3.3.0",
"resolved": "https://registry.npmjs.org/events/-/events-3.3.0.tgz",
@@ -1477,12 +1556,22 @@
"node": ">=0.8.x"
}
},
"node_modules/extend": {
"version": "3.0.2",
"resolved": "https://registry.npmmirror.com/extend/-/extend-3.0.2.tgz",
"integrity": "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g=="
},
"node_modules/fast-deep-equal": {
"version": "3.1.3",
"resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz",
"integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==",
"peer": true
},
"node_modules/fast-diff": {
"version": "1.2.0",
"resolved": "https://registry.npmmirror.com/fast-diff/-/fast-diff-1.2.0.tgz",
"integrity": "sha512-xJuoT5+L99XlZ8twedaRf6Ax2TgQVxvgZOYoPKqZufmJib0tL2tegPBOZb1pVNgIhlqDlA0eO0c3wBvQcmzx4w=="
},
"node_modules/fast-json-stable-stringify": {
"version": "2.1.0",
"resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz",
@@ -1535,12 +1624,41 @@
"node": "^8.16.0 || ^10.6.0 || >=11.0.0"
}
},
"node_modules/function-bind": {
"version": "1.1.2",
"resolved": "https://registry.npmmirror.com/function-bind/-/function-bind-1.1.2.tgz",
"integrity": "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA=="
},
"node_modules/functions-have-names": {
"version": "1.2.3",
"resolved": "https://registry.npmmirror.com/functions-have-names/-/functions-have-names-1.2.3.tgz",
"integrity": "sha512-xckBUXyTIqT97tq2x2AMb+g163b5JFysYk0x4qxNFwbfQkmNZoiRHb6sPzI9/QV33WeuvVYBUIiD4NzNIyqaRQ=="
},
"node_modules/get-intrinsic": {
"version": "1.2.2",
"resolved": "https://registry.npmmirror.com/get-intrinsic/-/get-intrinsic-1.2.2.tgz",
"integrity": "sha512-0gSo4ml/0j98Y3lngkFEot/zhiCeWsbYIlZ+uZOVgzLyLaUw7wxUL+nCTP0XJvJg1AXulJRI3UJi8GsbDuxdGA==",
"dependencies": {
"function-bind": "^1.1.2",
"has-proto": "^1.0.1",
"has-symbols": "^1.0.3",
"hasown": "^2.0.0"
}
},
"node_modules/glob-to-regexp": {
"version": "0.4.1",
"resolved": "https://registry.npmjs.org/glob-to-regexp/-/glob-to-regexp-0.4.1.tgz",
"integrity": "sha512-lkX1HJXwyMcprw/5YUZc2s7DrpAiHB21/V+E1rHUrVNokkvB6bqMzT0VfV6/86ZNabt1k14YOIaT7nDvOX3Iiw==",
"peer": true
},
"node_modules/gopd": {
"version": "1.0.1",
"resolved": "https://registry.npmmirror.com/gopd/-/gopd-1.0.1.tgz",
"integrity": "sha512-d65bNlIadxvpb/A2abVdlqKqV563juRnZ1Wtk6s1sIR8uNsXR70xqIzVqxVf1eTqDunwT2MkczEeaezCKTZhwA==",
"dependencies": {
"get-intrinsic": "^1.1.3"
}
},
"node_modules/graceful-fs": {
"version": "4.2.11",
"resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.11.tgz",
@@ -1555,6 +1673,52 @@
"node": ">=8"
}
},
"node_modules/has-property-descriptors": {
"version": "1.0.1",
"resolved": "https://registry.npmmirror.com/has-property-descriptors/-/has-property-descriptors-1.0.1.tgz",
"integrity": "sha512-VsX8eaIewvas0xnvinAe9bw4WfIeODpGYikiWYLH+dma0Jw6KHYqWiWfhQlgOVK8D6PvjubK5Uc4P0iIhIcNVg==",
"dependencies": {
"get-intrinsic": "^1.2.2"
}
},
"node_modules/has-proto": {
"version": "1.0.1",
"resolved": "https://registry.npmmirror.com/has-proto/-/has-proto-1.0.1.tgz",
"integrity": "sha512-7qE+iP+O+bgF9clE5+UoBFzE65mlBiVj3tKCrlNQ0Ogwm0BjpT/gK4SlLYDMybDh5I3TCTKnPPa0oMG7JDYrhg==",
"engines": {
"node": ">= 0.4"
}
},
"node_modules/has-symbols": {
"version": "1.0.3",
"resolved": "https://registry.npmmirror.com/has-symbols/-/has-symbols-1.0.3.tgz",
"integrity": "sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==",
"engines": {
"node": ">= 0.4"
}
},
"node_modules/has-tostringtag": {
"version": "1.0.0",
"resolved": "https://registry.npmmirror.com/has-tostringtag/-/has-tostringtag-1.0.0.tgz",
"integrity": "sha512-kFjcSNhnlGV1kyoGk7OXKSawH5JOb/LzUc5w9B02hOTO0dfFRjbHQKvg1d6cf3HbeUmtU9VbbV3qzZ2Teh97WQ==",
"dependencies": {
"has-symbols": "^1.0.2"
},
"engines": {
"node": ">= 0.4"
}
},
"node_modules/hasown": {
"version": "2.0.0",
"resolved": "https://registry.npmmirror.com/hasown/-/hasown-2.0.0.tgz",
"integrity": "sha512-vUptKVTpIJhcczKBbgnS+RtcuYMB8+oNzPK2/Hp3hanz8JmpATdmmgLgSaadVREkDm+e2giHwY3ZRkyjSIDDFA==",
"dependencies": {
"function-bind": "^1.1.2"
},
"engines": {
"node": ">= 0.4"
}
},
"node_modules/he": {
"version": "1.2.0",
"resolved": "https://registry.npmjs.org/he/-/he-1.2.0.tgz",
@@ -1588,6 +1752,29 @@
"node": ">=0.10.0"
}
},
"node_modules/is-arguments": {
"version": "1.1.1",
"resolved": "https://registry.npmmirror.com/is-arguments/-/is-arguments-1.1.1.tgz",
"integrity": "sha512-8Q7EARjzEnKpt/PCD7e1cgUS0a6X8u5tdSiMqXhojOdoV9TsMsiO+9VLC5vAmO8N7/GmXn7yjR8qnA6bVAEzfA==",
"dependencies": {
"call-bind": "^1.0.2",
"has-tostringtag": "^1.0.0"
},
"engines": {
"node": ">= 0.4"
}
},
"node_modules/is-date-object": {
"version": "1.0.5",
"resolved": "https://registry.npmmirror.com/is-date-object/-/is-date-object-1.0.5.tgz",
"integrity": "sha512-9YQaSxsAiSwcvS33MBk3wTCVnWK+HhF8VZR2jRxehM16QcVOdHqPn4VPHmRK4lSr38n9JriurInLcP90xsYNfQ==",
"dependencies": {
"has-tostringtag": "^1.0.0"
},
"engines": {
"node": ">= 0.4"
}
},
"node_modules/is-plain-object": {
"version": "3.0.1",
"resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-3.0.1.tgz",
@@ -1596,6 +1783,18 @@
"node": ">=0.10.0"
}
},
"node_modules/is-regex": {
"version": "1.1.4",
"resolved": "https://registry.npmmirror.com/is-regex/-/is-regex-1.1.4.tgz",
"integrity": "sha512-kvRdxDsxZjhzUX07ZnLydzS1TU/TJlTUHHY4YLL87e37oUA49DfkLqgy+VjFocowy29cKvcSiu+kIv728jTTVg==",
"dependencies": {
"call-bind": "^1.0.2",
"has-tostringtag": "^1.0.0"
},
"engines": {
"node": ">= 0.4"
}
},
"node_modules/is-what": {
"version": "3.14.1",
"resolved": "https://registry.npmjs.org/is-what/-/is-what-3.14.1.tgz",
@@ -1692,6 +1891,16 @@
"resolved": "https://registry.npmjs.org/lodash-es/-/lodash-es-4.17.21.tgz",
"integrity": "sha512-mKnC+QJ9pWVzv+C4/U3rRsHapFfHvQFoFB92e52xeyGMcX6/OlIl78je1u8vePzYZSkkogMPJ2yjxxsb89cxyw=="
},
"node_modules/lodash.clonedeep": {
"version": "4.5.0",
"resolved": "https://registry.npmmirror.com/lodash.clonedeep/-/lodash.clonedeep-4.5.0.tgz",
"integrity": "sha512-H5ZhCF25riFd9uB5UCkVKo61m3S/xZk1x4wA6yp/L3RFP6Z/eHH1ymQcGLo7J3GMPfm0V/7m1tryHuGVxpqEBQ=="
},
"node_modules/lodash.isequal": {
"version": "4.5.0",
"resolved": "https://registry.npmmirror.com/lodash.isequal/-/lodash.isequal-4.5.0.tgz",
"integrity": "sha512-pDo3lu8Jhfjqls6GkMgpahsF9kCyayhgykjyLMNFTKWrpVdAQtYyB4muAMWozBB4ig/dtWAmsMxLEI8wuz+DYQ=="
},
"node_modules/loose-envify": {
"version": "1.4.0",
"resolved": "https://registry.npmjs.org/loose-envify/-/loose-envify-1.4.0.tgz",
@@ -1856,6 +2065,31 @@
"integrity": "sha512-y10wOWt8yZpqXmOgRo77WaHEmhYQYGNA6y421PKsKYWEK8aW+cqAphborZDhqfyKrbZEN92CN1X2KbafY2s7Yw==",
"peer": true
},
"node_modules/object-is": {
"version": "1.1.5",
"resolved": "https://registry.npmmirror.com/object-is/-/object-is-1.1.5.tgz",
"integrity": "sha512-3cyDsyHgtmi7I7DfSSI2LDp6SK2lwvtbg0p0R1e0RvTqF5ceGx+K2dfSjm1bKDMVCFEDAQvy+o8c6a7VujOddw==",
"dependencies": {
"call-bind": "^1.0.2",
"define-properties": "^1.1.3"
},
"engines": {
"node": ">= 0.4"
}
},
"node_modules/object-keys": {
"version": "1.1.1",
"resolved": "https://registry.npmmirror.com/object-keys/-/object-keys-1.1.1.tgz",
"integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==",
"engines": {
"node": ">= 0.4"
}
},
"node_modules/parchment": {
"version": "1.1.4",
"resolved": "https://registry.npmmirror.com/parchment/-/parchment-1.1.4.tgz",
"integrity": "sha512-J5FBQt/pM2inLzg4hEWmzQx/8h8D0CiDxaG3vyp9rKrQRSDgBlhjdP5jQGgosEajXPSQouXGHOmVdgo7QmJuOg=="
},
"node_modules/parse-node-version": {
"version": "1.0.1",
"resolved": "https://registry.npmjs.org/parse-node-version/-/parse-node-version-1.0.1.tgz",
@@ -1931,6 +2165,47 @@
"node": ">=6"
}
},
"node_modules/quill": {
"version": "1.3.7",
"resolved": "https://registry.npmmirror.com/quill/-/quill-1.3.7.tgz",
"integrity": "sha512-hG/DVzh/TiknWtE6QmWAF/pxoZKYxfe3J/d/+ShUWkDvvkZQVTPeVmUJVu1uE6DDooC4fWTiCLh84ul89oNz5g==",
"dependencies": {
"clone": "^2.1.1",
"deep-equal": "^1.0.1",
"eventemitter3": "^2.0.3",
"extend": "^3.0.2",
"parchment": "^1.1.4",
"quill-delta": "^3.6.2"
}
},
"node_modules/quill-delta": {
"version": "4.2.2",
"resolved": "https://registry.npmmirror.com/quill-delta/-/quill-delta-4.2.2.tgz",
"integrity": "sha512-qjbn82b/yJzOjstBgkhtBjN2TNK+ZHP/BgUQO+j6bRhWQQdmj2lH6hXG7+nwwLF41Xgn//7/83lxs9n2BkTtTg==",
"dependencies": {
"fast-diff": "1.2.0",
"lodash.clonedeep": "^4.5.0",
"lodash.isequal": "^4.5.0"
}
},
"node_modules/quill/node_modules/fast-diff": {
"version": "1.1.2",
"resolved": "https://registry.npmmirror.com/fast-diff/-/fast-diff-1.1.2.tgz",
"integrity": "sha512-KaJUt+M9t1qaIteSvjc6P3RbMdXsNhK61GRftR6SNxqmhthcd9MGIi4T+o0jD8LUSpSnSKXE20nLtJ3fOHxQig=="
},
"node_modules/quill/node_modules/quill-delta": {
"version": "3.6.3",
"resolved": "https://registry.npmmirror.com/quill-delta/-/quill-delta-3.6.3.tgz",
"integrity": "sha512-wdIGBlcX13tCHOXGMVnnTVFtGRLoP0imqxM696fIPwIf5ODIYUHIvHbZcyvGlZFiFhK5XzDC2lpjbxRhnM05Tg==",
"dependencies": {
"deep-equal": "^1.0.1",
"extend": "^3.0.2",
"fast-diff": "1.1.2"
},
"engines": {
"node": ">=0.10"
}
},
"node_modules/randombytes": {
"version": "2.1.0",
"resolved": "https://registry.npmjs.org/randombytes/-/randombytes-2.1.0.tgz",
@@ -1945,6 +2220,19 @@
"resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.14.1.tgz",
"integrity": "sha512-dYnhHh0nJoMfnkZs6GmmhFknAGRrLznOu5nc9ML+EJxGvrx6H7teuevqVqCuPcPK//3eDrrjQhehXVx9cnkGdw=="
},
"node_modules/regexp.prototype.flags": {
"version": "1.5.1",
"resolved": "https://registry.npmmirror.com/regexp.prototype.flags/-/regexp.prototype.flags-1.5.1.tgz",
"integrity": "sha512-sy6TXMN+hnP/wMy+ISxg3krXx7BAtWVO4UouuCN/ziM9UEne0euamVNafDfvC83bRNr95y0V5iijeDQFUNpvrg==",
"dependencies": {
"call-bind": "^1.0.2",
"define-properties": "^1.2.0",
"set-function-name": "^2.0.0"
},
"engines": {
"node": ">= 0.4"
}
},
"node_modules/resize-observer-polyfill": {
"version": "1.5.1",
"resolved": "https://registry.npmjs.org/resize-observer-polyfill/-/resize-observer-polyfill-1.5.1.tgz",
@@ -2064,6 +2352,33 @@
"randombytes": "^2.1.0"
}
},
"node_modules/set-function-length": {
"version": "1.1.1",
"resolved": "https://registry.npmmirror.com/set-function-length/-/set-function-length-1.1.1.tgz",
"integrity": "sha512-VoaqjbBJKiWtg4yRcKBQ7g7wnGnLV3M8oLvVWwOk2PdYY6PEFegR1vezXR0tw6fZGF9csVakIRjrJiy2veSBFQ==",
"dependencies": {
"define-data-property": "^1.1.1",
"get-intrinsic": "^1.2.1",
"gopd": "^1.0.1",
"has-property-descriptors": "^1.0.0"
},
"engines": {
"node": ">= 0.4"
}
},
"node_modules/set-function-name": {
"version": "2.0.1",
"resolved": "https://registry.npmmirror.com/set-function-name/-/set-function-name-2.0.1.tgz",
"integrity": "sha512-tMNCiqYVkXIZgc2Hnoy2IvC/f8ezc5koaRFkCjrpWzGpCd3qbZXPzVy9MAZzK1ch/X0jvSkojys3oqJN0qCmdA==",
"dependencies": {
"define-data-property": "^1.0.1",
"functions-have-names": "^1.2.3",
"has-property-descriptors": "^1.0.0"
},
"engines": {
"node": ">= 0.4"
}
},
"node_modules/shallow-equal": {
"version": "1.2.1",
"resolved": "https://registry.npmjs.org/shallow-equal/-/shallow-equal-1.2.1.tgz",

+ 3
- 1
package.json Прегледај датотеку

@@ -15,7 +15,9 @@
"less-loader": "^11.1.3",
"vue": "^3.3.11",
"vue-router": "^4.2.5",
"vuex": "^4.0.2"
"vuex": "^4.0.2",
"@vueup/vue-quill": "^1.2.0",
"dayjs": "^1.11.10"
},
"devDependencies": {
"@vitejs/plugin-vue": "^4.5.2",

+ 0
- 38
src/components/HelloWorld.vue Прегледај датотеку

@@ -1,38 +0,0 @@
<script setup lang="ts">
import { ref } from 'vue'

defineProps<{ msg: string }>()

const count = ref(0)
</script>

<template>
<h1>{{ msg }}</h1>

<div class="card">
<button type="button" @click="count++">count is {{ count }}</button>
<p>
Edit
<code>components/HelloWorld.vue</code> to test HMR
</p>
</div>

<p>
Check out
<a href="https://vuejs.org/guide/quick-start.html#local" target="_blank"
>create-vue</a
>, the official Vue + Vite starter
</p>
<p>
Install
<a href="https://github.com/vuejs/language-tools" target="_blank">Volar</a>
in your IDE for a better DX
</p>
<p class="read-the-docs">Click on the Vite and Vue logos to learn more</p>
</template>

<style scoped>
.read-the-docs {
color: #888;
}
</style>

+ 26
- 0
src/components/common/left-sider.vue Прегледај датотеку

@@ -0,0 +1,26 @@
<template>
<a-menu v-model:selectedKeys="selectedKeys" @click="menuClick"
style="width: 100%;" mode="inline">
<a-menu-item v-for="(item, index) in menuList" :key="item.key">{{item.name}}</a-menu-item>
</a-menu>
</template>

<script setup lang="ts">
import { ref, computed, onMounted, watch,defineProps,defineEmits } from 'vue';
let props = defineProps(['menu_list', 'selected_key']);
let emit = defineEmits();
let menuList = ref<Object[]>(props.menu_list)
const selectedKeys = ref<string[]>(['1']);
watch(() => [props.menu_list, props.selected_key], (newVal) => {
menuList.value = newVal[0],
selectedKeys.value = newVal[1]
})

const menuClick = (val) => {
emit('changeKey', { key: val.key })
}
</script>

<style>
</style>

+ 22
- 0
src/components/company/image/index.vue Прегледај датотеку

@@ -0,0 +1,22 @@
<template>
<upload upload_txt="上传企业图片" @uploadSuccess="uploadPhotoSuccess"
:success_image="addOtherForm.photo_img" images_length="1"></upload>
</template>

<script setup lang="ts">
import { ref, onMounted, computed } from 'vue';
import Upload from '@/components/form/upload.vue';
let addOtherForm = ref({
photo_img: '',
})
// 营业执照
const uploadPhotoSuccess = (data : Object) => {
addOtherForm.value.photo_img = "http://114.132.85.7:8894" + data
createForm.value.photo = data
}
</script>

<style>
</style>

+ 22
- 0
src/components/company/licence/index.vue Прегледај датотеку

@@ -0,0 +1,22 @@
<template>
<upload upload_txt="上传营业执照" @uploadSuccess="uploadPhotoSuccess"
:success_image="addOtherForm.photo_img" images_length="1"></upload>
</template>

<script setup lang="ts">
import { ref, onMounted, computed } from 'vue';
import Upload from '@/components/form/upload.vue';
let addOtherForm = ref({
photo_img: '',
})
// 营业执照
const uploadPhotoSuccess = (data : Object) => {
addOtherForm.value.photo_img = "http://114.132.85.7:8894" + data
createForm.value.photo = data
}
</script>

<style>
</style>

+ 113
- 0
src/components/form/upload.vue Прегледај датотеку

@@ -0,0 +1,113 @@
<template>
<div style="display: flex;">
<img v-if="imagesLength == 1 && imageUrl" :src="imageUrl" alt="avatar" width="200px" height="400px"
style="margin-right: 10px;" />
<template v-else>
<template v-for="(item, index) in imagesList">
<img :src="item.url" alt="avatar" width="100px" height="100px" style="margin-right: 10px;" />
</template>
</template>
<div v-if="imagesList.length < imagesLength">
<a-upload a-upload v-model:file-list="fileList" list-type="picture-card" class="avatar-uploader"
:show-upload-list="false" :before-upload="beforeUpload" :data="uploadData"
:customRequest="uploadCustom">
<div class="ant-upload-text">{{uploadTxt}}</div>
</a-upload>
</div>
</div>
</template>

<script setup lang="ts">
import { ref, onMounted, computed, defineProps, watch, defineEmits } from 'vue';
import axios from 'axios';
import { message } from 'ant-design-vue';
const props = defineProps(['upload_txt', 'success_image', 'images_length']);
const emit = defineEmits();
const headers = ref<Object>({
Authorization: sessionStorage.getItem('token'),
'X-Requested-With': null
})
const uploadData = ref<Object>({
image: ''
})
let imagesList = ref<Object[]>([])
let fileList = ref<Object[]>([])
let imageUrl = ref<String>(props.success_image) // 图片路径
let uploadTxt = ref<String>(props.upload_txt)
let imagesLength = ref<Number>(props.images_length)
watch(() => props.success_image, (newVal : string, oldVal : string) => {
imageUrl.value = newVal;
})


const beforeUpload = (file) => {
uploadData.value.image = file
}

const uploadCustom = (e) => {
let formdata = new FormData()
formdata.append('image', e.file)
axios({
url: 'http://114.132.85.7:8889/common/image/upload?imgtype=1',
method: 'post',
data: formdata,
headers: headers.value
}).then((res) => {

if (imagesLength.value === 1) {
imagesList.value = [{
uid: '-1', // 文件唯一标识,建议设置为负数,防止和内部产生的 id 冲突
name: e.file.name, // 文件名
status: 'done', // 状态有:uploading done error removed
url: "http://114.132.85.7:8894" + res.data.data.filename
}]
} else {
if (imagesList.value.length < imagesLength.value) {
console.log(imagesList.value)
imagesList.value.push({
uid: '-' + (imagesList.value.length + 1), // 文件唯一标识,建议设置为负数,防止和内部产生的 id 冲突
name: e.file.name, // 文件名
status: 'done', // 状态有:uploading done error removed
url: "http://114.132.85.7:8894" + res.data.data.filename
})
} else {
message.danger('最多上传5张');
}
}
message.success(`${props.upload_txt}成功`);
emit('uploadSuccess', res.data.data.filename)
})
}


// const uploadChange = ({ file, fileList }) => {
// console.log(fileList)
// if (file.file.response) {
// message.success(`${props.upload_txt}成功`);
// emit('uploadSuccess', file.file.response)
// }
// }
</script>

<style scoped lang="less">
.avatar-uploader>.ant-upload {
width: 128px;
height: 128px;
}

.ant-upload-select-picture-card i {
font-size: 32px;
color: #999;
}

.ant-upload-select-picture-card .ant-upload-text {
margin-top: 8px;
color: #666;
}

.ant-upload-select-picture-card .ant-upload-list-item {
width: 128px;
height: 128px;
margin-right: 8px;
}
</style>

+ 157
- 0
src/components/invite/manage/index.vue Прегледај датотеку

@@ -0,0 +1,157 @@
<template>
<a-table :data-source="dataSource" :columns="columns">
<template #operation="{ record }">
<a-dropdown>
<template #overlay>
<a-menu @click="handleMenuClick">
<a-menu-item key="1">
修改
</a-menu-item>
<a-menu-item key="2">
发布
</a-menu-item>
<a-menu-item key="3">
暂停
</a-menu-item>
<a-menu-item key="3">
删除
</a-menu-item>
<a-menu-item key="3">
放入回收站
</a-menu-item>
<a-menu-item key="3">
查看
</a-menu-item>
</a-menu>
</template>
<a-button>
刷新
<DownOutlined />
</a-button>
</a-dropdown>
</template>
</a-table>
</template>

<script setup lang="ts">
import { ref, onMounted, computed } from 'vue';
import { UserOutlined, DownOutlined } from '@ant-design/icons-vue';
let dataSource = ref([
{
key: '第一部部门第一部部门第一部部门',
name: '第一部',
age: '已暂停',
address: '2020111111',
phone: '12',
email: '12.com',
}, {
key: '第一部部门第一部部门第一部部门',
name: '第一部',
age: '已暂停',
address: '2020111111',
phone: '12',
email: '12.com',
}
, {
key: '第一部部门第一部部门第一部部门',
name: '第一部',
age: '已暂停',
address: '2020111111',
phone: '12',
email: '12.com',
}, {
key: '第一部部门第一部部门第一部部门',
name: '第一部',
age: '已暂停',
address: '2020111111',
phone: '12',
email: '12.com',
}, {
key: '第一部部门第一部部门第一部部门',
name: '第一部',
age: '已暂停',
address: '2020111111',
phone: '12',
email: '12.com',
}, {
key: '第一部部门第一部部门第一部部门',
name: '第一部',
age: '已暂停',
address: '2020111111',
phone: '12',
email: '12.com',
}, {
key: '第一部部门第一部部门第一部部门',
name: '第一部',
age: '已暂停',
address: '2020111111',
phone: '12',
email: '12.com',
}, {
key: '第一部部门第一部部门第一部部门',
name: '第一部',
age: '已暂停',
address: '2020111111',
phone: '12',
email: '12.com',
}
])
let columns = ref([
{
title: '职位名称',
dataIndex: 'name',
key: 'name',
},
{
title: '所属部门',
dataIndex: 'age',
key: 'age',
},
{
title: '状态',
dataIndex: 'address',
key: 'address',
},
{
title: '招聘时间',
dataIndex: 'phone',
key: 'phone',
},
{
title: '浏览数',
dataIndex: 'email',
key: 'email',
},
{
title: '应聘简历(未看)',
dataIndex: 'email',
key: 'email',
},
{
title: '推荐简历(未看)',
dataIndex: 'email',
key: 'email',
},
{
title: '操作',
dataIndex: 'operation',
slots: { customRender: 'operation' },
},
])
</script>

<style scoped lang="less">
:deep(.ant-table-thead >tr>th) {
background-color: #fff !important;
border: none !important;
color: #bbb !important;
}

:deep(.ant-table-thead >tr>th::before) {
display: none !important;
}

:deep(.ant-table-tbody >tr >td) {
border: none !important;
}
</style>

+ 97
- 0
src/components/invite/position/contact.vue Прегледај датотеку

@@ -0,0 +1,97 @@
<template>
<a-form :model="createForm" :label-col="{span: 6}" labelAlign="right">
<a-row gutter="20">
<a-col span="12">
<a-row>
<a-col span="24">
<a-form-item required label="联系人" name="contact">
<a-input v-model:value="createForm.contact" placeholder="请输入联系人" />
</a-form-item>
</a-col>
<a-col span="24">
<a-form-item label="担任职位" name="possession">
<a-input v-model:value="createForm.possession" placeholder="请输入联系人职位" />
</a-form-item>
</a-col>
<a-col span="24">
<a-form-item required label="联系电话" name="phone">
<a-input v-model:value="createForm.phone" placeholder="请输入联系电话" />
</a-form-item>
</a-col>
<a-col span="24">
<a-form-item label="是否公开联系电话" name="phone_public" :label-col="{span: 0}">
<a-radio-group v-model:value="createForm.phone_public" button-style="solid">
<a-radio-button :value="1">是</a-radio-button>
<a-radio-button :value="2">否</a-radio-button>
</a-radio-group>
</a-form-item>
</a-col>
<a-col span="24">
<a-form-item label="手机" name="mobile">
<a-input v-model:value="createForm.mobile" placeholder="请输入手机" />
</a-form-item>
</a-col>
<a-col span="24">
<a-form-item label="是否公开手机" name="mobile_public" :label-col="{span: 0}">
<a-radio-group v-model:value="createForm.mobile_public" button-style="solid">
<a-radio-button :value="1">是</a-radio-button>
<a-radio-button :value="2">否</a-radio-button>
</a-radio-group>
</a-form-item>
</a-col>
<a-col span="24">
<a-form-item label="邮箱" name="email">
<a-input v-model:value="createForm.email" placeholder="请输入邮箱" />
</a-form-item>
</a-col>
<a-col span="24">
<a-form-item label="是否公开邮箱" name="email_public" :label-col="{span: 0}">
<a-radio-group v-model:value="createForm.email_public" button-style="solid">
<a-radio-button :value="1">是</a-radio-button>
<a-radio-button :value="2">否</a-radio-button>
</a-radio-group>
</a-form-item>
</a-col>
<a-col span="24">
<a-form-item label="传真" name="fax">
<a-input v-model:value="createForm.fax" placeholder="请输入传真" />
</a-form-item>
</a-col>
<a-col span="24">
<a-form-item label="是否公开传真" name="fax_public" :label-col="{span: 0}">
<a-radio-group v-model:value="createForm.fax_public" button-style="solid">
<a-radio-button :value="1">是</a-radio-button>
<a-radio-button :value="2">否</a-radio-button>
</a-radio-group>
</a-form-item>
</a-col>
<a-col span="24">
<a-form-item label="其他地址" name="other_address">
<a-input v-model:value="createForm.other_address" placeholder="请输入其他地址" />
</a-form-item>
</a-col>
<a-col span="24">
<a-form-item label="面试地址" name="interview_address">
<a-input v-model:value="createForm.interview_address" placeholder="请输入面试地址" />
</a-form-item>
</a-col>
</a-row>
</a-col>
</a-row>
</a-form>
</template>

<script setup lang="ts">
import { ref, onMounted, computed } from 'vue';
let createForm : companyListType.addrFormType = ref({
name: '',
company_id: 0,
contact: '',
phone: '',
mobile: '',
email: '',
})
</script>

<style>
</style>

+ 122
- 0
src/components/invite/position/demand.vue Прегледај датотеку

@@ -0,0 +1,122 @@
<template>
<a-form :model="createForm" :label-col="{span: 6}" labelAlign="right">
<a-row gutter="20">
<a-col span="12">
<a-row>
<a-col span="24">
<a-form-item required label="工作经验">
<!-- <a-c-select :dict="2021" placeholder="请选择工作经验" @saveSelect="saveExperience"></a-c-select> -->
</a-form-item>
</a-col>
<a-col span="24">
<a-form-item label="学历">
<!-- <a-c-select :dict="2006" placeholder="请选择学历" @saveSelect="saveSchoolDegree"></a-c-select> -->
</a-form-item>
</a-col>
<a-col span="24">
<a-form-item label="含最高学历" name="degree_better">
<a-radio-group v-model:value="createForm.degree_better" button-style="solid">
<a-radio-button :value="1">是</a-radio-button>
<a-radio-button :value="2">否</a-radio-button>
</a-radio-group>
</a-form-item>
</a-col>
<a-col span="24">
<a-form-item required label="职称要求">
<!-- <a-c-select :dict="2014" placeholder="请选择职称要求" @saveSelect="saveProfelevel"></a-c-select> -->
</a-form-item>
</a-col>
<a-col span="24">
<a-form-item required label="技能认证">
<!-- <a-c-select :dict="2015" placeholder="请选择技能认证" @saveSelect="saveCertification"></a-c-select> -->
</a-form-item>
</a-col>

<a-col span="24">
<a-form-item label="语言要求">
<!-- <a-c-select :dict="2007" placeholder="请选择语言要求" @saveSelect="saveLanguage"></a-c-select> -->
</a-form-item>
</a-col>
<a-col span="24">
<a-form-item label="掌握程度">
<!-- <a-c-select :dict="2008" placeholder="请选择掌握程度" @saveSelect="saveLanguageDegree"></a-c-select> -->
</a-form-item>
</a-col>
<a-col span="24">
<a-form-item label="性别要求" name="sex">
<a-radio-group v-model:value="createForm.sex" button-style="solid">
<a-radio-button :value="1">男</a-radio-button>
<a-radio-button :value="2">女</a-radio-button>
<a-radio-button :value="3">不限</a-radio-button>
</a-radio-group>
</a-form-item>
</a-col>
<a-col span="24">
<a-form-item label="最小年龄" name="age_min">
<a-input-number :min="0" type="number" v-model:value="createForm.age_min"
placeholder="请输入最小年龄" style="width: 100%;" />
</a-form-item>
</a-col>

<a-col span="24">
<a-form-item label="最大年龄" name="age_max">
<a-input-number :min="0" type="number" v-model:value="createForm.age_max"
placeholder="请输入最大年龄" style="width: 100%;" />
</a-form-item>
</a-col>
<a-col span="24">
<a-form-item required label="婚姻状况" name="marital_status">
<a-radio-group v-model:value="createForm.marital_status" button-style="solid">
<a-radio-button :value="1">已婚</a-radio-button>
<a-radio-button :value="2">未婚</a-radio-button>
<a-radio-button :value="3">不限</a-radio-button>
</a-radio-group>
<!-- <a-c-select :dict="2011" placeholder="请选择婚姻状况" @saveSelect="saveMandarinStatus"></a-c-select> -->
</a-form-item>
</a-col>
<a-col span="24">
<a-form-item required label="专业" name="major">
<a-input v-model:value="createForm.major" placeholder="请输入专业" />
</a-form-item>
</a-col>
<a-col span="24">
<a-form-item label="证书要求" :label-col="{span: 0}">
<a-checkbox-group v-model:value="createForm.license" @change="licenseChange">
<template v-for="(item, index) in licenseOption">
<a-checkbox :value="item.id">{{item.name}}</a-checkbox>
</template>
</a-checkbox-group>
</a-form-item>
</a-col>
<a-col span="24">
<a-form-item label="籍贯要求" name="mandarin">
<!-- <a-c-cascader :dict="2009" @saveCascader="compantJiguanSave" placeholder="请选择籍贯"
:cascader_content="addOtherForm.company_jiguan_cascader"></a-c-cascader> -->
</a-form-item>
</a-col>
<a-col span="24">
<a-form-item label="所在地要求" name="mandarin">
<!-- <a-c-cascader :dict="2009" @saveCascader="compantSuozaidiSave" placeholder="请选择所在地"
:cascader_content="addOtherForm.company_suozaidi_cascader"></a-c-cascader> -->
</a-form-item>
</a-col>
</a-row>
</a-col>
</a-row>
</a-form>
</template>

<script setup lang="ts">
import { ref, onMounted, computed } from 'vue';
let createForm : companyListType.addrFormType = ref({
name: '',
company_id: 0,
contact: '',
phone: '',
mobile: '',
email: '',
})
</script>

<style>
</style>

+ 221
- 0
src/components/invite/position/index.vue Прегледај датотеку

@@ -0,0 +1,221 @@
<template>
<a-tabs v-model:activeKey="activeKey">
<a-tab-pane key="1" tab="职位信息">
<position-info></position-info>
</a-tab-pane>
<a-tab-pane key="2" tab="职位要求" force-render>
<position-demand></position-demand>
</a-tab-pane>
<a-tab-pane key="3" tab="联系方式">
<position-contact></position-contact>
</a-tab-pane>
</a-tabs>
</template>

<script setup lang="ts">
import { ref, onMounted, computed } from 'vue';
import PositionInfo from '@/components/invite/position/info.vue'
import PositionDemand from '@/components/invite/position/demand.vue'
import PositionContact from '@/components/invite/position/contact.vue'
let createForm : companyListType.addrFormType = ref({
name: '',
company_id: 0,
contact: '',
phone: '',
mobile: '',
email: '',
})
let dataSource = ref([
{
key: '1',
name: '第一部部门第一部部门第一部部门',
age: '王二狗',
address: '082-12331231',
phone: '1223245645646',
email: '6146545@126.com',
},
{
key: '1',
name: '第一部部门第一部部门第一部部门',
age: '王二狗',
address: '082-12331231',
phone: '1223245645646',
email: '6146545@126.com',
}, {
key: '1',
name: '第一部部门第一部部门第一部部门',
age: '王二狗',
address: '082-12331231',
phone: '1223245645646',
email: '6146545@126.com',
}, {
key: '1',
name: '第一部部门第一部部门第一部部门',
age: '王二狗',
address: '082-12331231',
phone: '1223245645646',
email: '6146545@126.com',
}, {
key: '1',
name: '第一部部门第一部部门第一部部门',
age: '王二狗',
address: '082-12331231',
phone: '1223245645646',
email: '6146545@126.com',
}, {
key: '1',
name: '第一部部门第一部部门第一部部门',
age: '王二狗',
address: '082-12331231',
phone: '1223245645646',
email: '6146545@126.com',
}, {
key: '1',
name: '第一部部门第一部部门第一部部门',
age: '王二狗',
address: '082-12331231',
phone: '1223245645646',
email: '6146545@126.com',
}, {
key: '1',
name: '第一部部门第一部部门第一部部门',
age: '王二狗',
address: '082-12331231',
phone: '1223245645646',
email: '6146545@126.com',
}, {
key: '1',
name: '第一部部门第一部部门第一部部门',
age: '王二狗',
address: '082-12331231',
phone: '1223245645646',
email: '6146545@126.com',
}, {
key: '1',
name: '第一部部门第一部部门第一部部门',
age: '王二狗',
address: '082-12331231',
phone: '1223245645646',
email: '6146545@126.com',
}, {
key: '1',
name: '第一部部门第一部部门第一部部门',
age: '王二狗',
address: '082-12331231',
phone: '1223245645646',
email: '6146545@126.com',
}, {
key: '1',
name: '第一部部门第一部部门第一部部门',
age: '王二狗',
address: '082-12331231',
phone: '1223245645646',
email: '6146545@126.com',
}, {
key: '1',
name: '第一部部门第一部部门第一部部门',
age: '王二狗',
address: '082-12331231',
phone: '1223245645646',
email: '6146545@126.com',
}, {
key: '1',
name: '第一部部门第一部部门第一部部门',
age: '王二狗',
address: '082-12331231',
phone: '1223245645646',
email: '6146545@126.com',
}, {
key: '1',
name: '第一部部门第一部部门第一部部门',
age: '王二狗',
address: '082-12331231',
phone: '1223245645646',
email: '6146545@126.com',
}, {
key: '1',
name: '第一部部门第一部部门第一部部门',
age: '王二狗',
address: '082-12331231',
phone: '1223245645646',
email: '6146545@126.com',
}, {
key: '1',
name: '第一部部门第一部部门第一部部门',
age: '王二狗',
address: '082-12331231',
phone: '1223245645646',
email: '6146545@126.com',
}, {
key: '1',
name: '第一部部门第一部部门第一部部门',
age: '王二狗',
address: '082-12331231',
phone: '1223245645646',
email: '6146545@126.com',
}, {
key: '1',
name: '第一部部门第一部部门第一部部门',
age: '王二狗',
address: '082-12331231',
phone: '1223245645646',
email: '6146545@126.com',
}, {
key: '1',
name: '第一部部门第一部部门第一部部门',
age: '王二狗',
address: '082-12331231',
phone: '1223245645646',
email: '6146545@126.com',
},
])
let columns = ref([
{
title: '部门名称',
dataIndex: 'name',
key: 'name',
},
{
title: '联系人',
dataIndex: 'age',
key: 'age',
},
{
title: '联系电话',
dataIndex: 'address',
key: 'address',
},
{
title: '联系手机',
dataIndex: 'phone',
key: 'phone',
},
{
title: '电子邮件',
dataIndex: 'email',
key: 'email',
},
{
title: '操作',
dataIndex: 'operation',
slots: { customRender: 'operation' },
},
])
</script>

<style scoped lang="less">
:deep(.ant-table-thead >tr>th) {
background-color: #fff !important;
border: none !important;
color: #bbb !important;
}
:deep(.ant-table-thead >tr>th::before) {
display: none !important;
}
:deep(.ant-table-tbody >tr >td) {
border: none !important;
}
</style>

+ 118
- 0
src/components/invite/position/info.vue Прегледај датотеку

@@ -0,0 +1,118 @@
<template>
<a-form :model="createForm" :label-col="{span: 6}" labelAlign="right">
<a-row gutter="20">
<a-col span="12">
<a-row>
<a-col span="24">
<a-form-item label="是否紧急" name="urgent">
<a-radio-group v-model:value="createForm.urgent" button-style="solid">
<a-radio-button :value="1">是</a-radio-button>
<a-radio-button :value="2">否</a-radio-button>
</a-radio-group>
</a-form-item>
</a-col>
<a-col span="24">
<a-form-item required label="联系人" name="contact">
<a-input v-model:value="createForm.contact" placeholder="请输入联系人" />
</a-form-item>
</a-col>
<a-col span="24">
<a-form-item label="所属部门" name="department_id">
<!-- <a-c-select-common placeholder="请选择部门" :list="department_list" @searchKey="searchDepartment"
@saveSearch="saveDepartmentSearch"></a-c-select-common> -->
</a-form-item>
</a-col>
<a-col span="24">
<a-form-item required label="职位名称" name="name">
<a-input v-model:value="createForm.name" placeholder="请输入职位名称" />
</a-form-item>
</a-col>
<a-col span="24">
<a-form-item label="招聘人数" name="invite_count">
<a-input v-model:value="createForm.invite_count" placeholder="请输入招聘人数" />
</a-form-item>
</a-col>

<a-col span="24">
<a-form-item required label="联系电话" name="phone">
<a-input v-model:value="createForm.phone" placeholder="请输入联系电话" />
</a-form-item>
</a-col>
<a-col span="24">
<a-form-item required label="职位类别" :label-col="{span: 0}">
<!-- <a-c-cascader :dict="2004" @saveCascader="industry1Save" placeholder="请选择职位类别"
:cascader_content="addOtherForm.company_industry1_cascader"></a-c-cascader> -->
</a-form-item>
</a-col>
<a-col span="24">
<a-form-item required label="工作地区" name="name">
<!-- <a-c-cascader :dict="2009" @saveCascader="location1Save" placeholder="请选择工作区域"
:cascader_content="addOtherForm.company_location1_cascader"></a-c-cascader> -->
</a-form-item>
</a-col>
<a-col span="24">
<a-form-item required label="职位描述" name="describe_text" >
<!-- <QuillEditor theme="snow" :options="options" toolbar="full"
v-model:content="addOtherForm.describe_content"
@update:content="onEditorDescribeUpdate($event)" contentType="html" /> -->
</a-form-item>
</a-col>

<a-col span="24">
<a-form-item label="薪资范围" name="pay_range">
<!-- <a-c-select :dict="2005" placeholder="请选择月薪要求范围" @saveSelect="savePayRange"></a-c-select> -->
</a-form-item>
</a-col>
<a-col span="24">
<a-form-item required label="有效天数" name="useful_life">
<a-input-number :min="0" type="number" v-model:value="createForm.useful_life"
placeholder="请输入有效天数" style="width: 100%;" />
</a-form-item>
</a-col>
<a-col span="24">
<a-form-item required label="到期日期">
<!-- <a-date-picker v-model:value="addOtherForm.daoqi_date" @Change="disabledDateChange"
style="width: 100%;" /> -->
</a-form-item>
</a-col>
<a-col span="24">
<a-form-item label="关键词">
<a-input v-model:value="createForm.key_word" placeholder="请输入关键词" />
</a-form-item>
</a-col>
<a-col span="24">
<a-form-item required label="职位性质">
<!-- <a-date-picker v-model:value="addOtherForm.daoqi_date" @Change="disabledDateChange"
style="width: 100%;" /> -->
</a-form-item>
</a-col>
<a-col span="24">
<a-form-item required label="食宿要求">
<!-- <a-c-select :dict="2016" placeholder="请选择食宿要求" @saveSelect="saveShisu"></a-c-select> -->
</a-form-item>
</a-col>
<a-col span="24">
<a-form-item required label="节假日休息情况" >
<!-- <a-c-select :dict="2017" placeholder="请选择节假日休息情况" @saveSelect="saveHolidays"></a-c-select> -->
</a-form-item>
</a-col>
</a-row>
</a-col>
</a-row>
</a-form>
</template>

<script setup lang="ts">
import { ref, onMounted, computed } from 'vue';
let createForm : companyListType.addrFormType = ref({
name: '',
company_id: 0,
contact: '',
phone: '',
mobile: '',
email: '',
})
</script>

<style>
</style>

+ 122
- 0
src/components/invite/recycle/index.vue Прегледај датотеку

@@ -0,0 +1,122 @@
<template>
<a-table :data-source="dataSource" :columns="columns">
</a-table>
</template>

<script setup lang="ts">
import { ref, onMounted, computed } from 'vue';
import { UserOutlined, DownOutlined } from '@ant-design/icons-vue';
let dataSource = ref([
{
key: '第一部部门第一部部门第一部部门',
name: '第一部',
age: '已暂停',
address: '2020111111',
phone: '12',
email: '12.com',
}, {
key: '第一部部门第一部部门第一部部门',
name: '第一部',
age: '已暂停',
address: '2020111111',
phone: '12',
email: '12.com',
}
, {
key: '第一部部门第一部部门第一部部门',
name: '第一部',
age: '已暂停',
address: '2020111111',
phone: '12',
email: '12.com',
}, {
key: '第一部部门第一部部门第一部部门',
name: '第一部',
age: '已暂停',
address: '2020111111',
phone: '12',
email: '12.com',
}, {
key: '第一部部门第一部部门第一部部门',
name: '第一部',
age: '已暂停',
address: '2020111111',
phone: '12',
email: '12.com',
}, {
key: '第一部部门第一部部门第一部部门',
name: '第一部',
age: '已暂停',
address: '2020111111',
phone: '12',
email: '12.com',
}, {
key: '第一部部门第一部部门第一部部门',
name: '第一部',
age: '已暂停',
address: '2020111111',
phone: '12',
email: '12.com',
}, {
key: '第一部部门第一部部门第一部部门',
name: '第一部',
age: '已暂停',
address: '2020111111',
phone: '12',
email: '12.com',
}
])
let columns = ref([
{
title: '职位名称',
dataIndex: 'name',
key: 'name',
},
{
title: '所属部门',
dataIndex: 'age',
key: 'age',
},
{
title: '状态',
dataIndex: 'address',
key: 'address',
},
{
title: '招聘时间',
dataIndex: 'phone',
key: 'phone',
},
{
title: '浏览数',
dataIndex: 'email',
key: 'email',
},
{
title: '应聘简历(未看)',
dataIndex: 'email',
key: 'email',
},
{
title: '推荐简历(未看)',
dataIndex: 'email',
key: 'email',
}
])
</script>

<style scoped lang="less">
:deep(.ant-table-thead >tr>th) {
background-color: #fff !important;
border: none !important;
color: #bbb !important;
}

:deep(.ant-table-thead >tr>th::before) {
display: none !important;
}

:deep(.ant-table-tbody >tr >td) {
border: none !important;
}
</style>

+ 204
- 0
src/components/meet/subscribe/index.vue Прегледај датотеку

@@ -0,0 +1,204 @@
<template>
<a-table :data-source="dataSource" :columns="columns">
<template #operation="{ record }">
<a-popconfirm v-if="dataSource.length" title="Sure to delete?" @confirm="onDelete(record.key)">
<a>删除</a>
</a-popconfirm>
</template>
</a-table>
</template>

<script setup lang="ts">
import { ref, onMounted, computed } from 'vue';
let createForm : companyListType.addrFormType = ref({
name: '',
company_id: 0,
contact: '',
phone: '',
mobile: '',
email: '',
})
let dataSource = ref([
{
key: '1',
name: '第一部部门第一部部门第一部部门',
age: '王二狗',
address: '082-12331231',
phone: '1223245645646',
email: '6146545@126.com',
},
{
key: '1',
name: '第一部部门第一部部门第一部部门',
age: '王二狗',
address: '082-12331231',
phone: '1223245645646',
email: '6146545@126.com',
}, {
key: '1',
name: '第一部部门第一部部门第一部部门',
age: '王二狗',
address: '082-12331231',
phone: '1223245645646',
email: '6146545@126.com',
}, {
key: '1',
name: '第一部部门第一部部门第一部部门',
age: '王二狗',
address: '082-12331231',
phone: '1223245645646',
email: '6146545@126.com',
}, {
key: '1',
name: '第一部部门第一部部门第一部部门',
age: '王二狗',
address: '082-12331231',
phone: '1223245645646',
email: '6146545@126.com',
}, {
key: '1',
name: '第一部部门第一部部门第一部部门',
age: '王二狗',
address: '082-12331231',
phone: '1223245645646',
email: '6146545@126.com',
}, {
key: '1',
name: '第一部部门第一部部门第一部部门',
age: '王二狗',
address: '082-12331231',
phone: '1223245645646',
email: '6146545@126.com',
}, {
key: '1',
name: '第一部部门第一部部门第一部部门',
age: '王二狗',
address: '082-12331231',
phone: '1223245645646',
email: '6146545@126.com',
}, {
key: '1',
name: '第一部部门第一部部门第一部部门',
age: '王二狗',
address: '082-12331231',
phone: '1223245645646',
email: '6146545@126.com',
}, {
key: '1',
name: '第一部部门第一部部门第一部部门',
age: '王二狗',
address: '082-12331231',
phone: '1223245645646',
email: '6146545@126.com',
}, {
key: '1',
name: '第一部部门第一部部门第一部部门',
age: '王二狗',
address: '082-12331231',
phone: '1223245645646',
email: '6146545@126.com',
}, {
key: '1',
name: '第一部部门第一部部门第一部部门',
age: '王二狗',
address: '082-12331231',
phone: '1223245645646',
email: '6146545@126.com',
}, {
key: '1',
name: '第一部部门第一部部门第一部部门',
age: '王二狗',
address: '082-12331231',
phone: '1223245645646',
email: '6146545@126.com',
}, {
key: '1',
name: '第一部部门第一部部门第一部部门',
age: '王二狗',
address: '082-12331231',
phone: '1223245645646',
email: '6146545@126.com',
}, {
key: '1',
name: '第一部部门第一部部门第一部部门',
age: '王二狗',
address: '082-12331231',
phone: '1223245645646',
email: '6146545@126.com',
}, {
key: '1',
name: '第一部部门第一部部门第一部部门',
age: '王二狗',
address: '082-12331231',
phone: '1223245645646',
email: '6146545@126.com',
}, {
key: '1',
name: '第一部部门第一部部门第一部部门',
age: '王二狗',
address: '082-12331231',
phone: '1223245645646',
email: '6146545@126.com',
}, {
key: '1',
name: '第一部部门第一部部门第一部部门',
age: '王二狗',
address: '082-12331231',
phone: '1223245645646',
email: '6146545@126.com',
}, {
key: '1',
name: '第一部部门第一部部门第一部部门',
age: '王二狗',
address: '082-12331231',
phone: '1223245645646',
email: '6146545@126.com',
}, {
key: '1',
name: '第一部部门第一部部门第一部部门',
age: '王二狗',
address: '082-12331231',
phone: '1223245645646',
email: '6146545@126.com',
},
])
let columns = ref([
{
title: '时间',
dataIndex: 'name',
key: 'name',
},
{
title: '招聘会主题',
dataIndex: 'age',
key: 'age',
},
{
title: '地点',
dataIndex: 'address',
key: 'address',
},
{
title: '操作',
dataIndex: 'operation',
slots: { customRender: 'operation' },
},
])
</script>

<style scoped lang="less">
:deep(.ant-table-thead >tr>th) {
background-color: #fff !important;
border: none !important;
color: #bbb !important;
}
:deep(.ant-table-thead >tr>th::before) {
display: none !important;
}
:deep(.ant-table-tbody >tr >td) {
border: none !important;
}
</style>

+ 250
- 0
src/components/message/feedback/index.vue Прегледај датотеку

@@ -0,0 +1,250 @@
<template>
<a-form :model="createForm" :label-col="{span: 4}" labelAlign="right">
<a-row gutter="20">
<a-col span="12">
<a-row>
<a-col span="24">
<a-form-item required label="姓名" name="name">
<a-input v-model:value="createForm.name" placeholder="请输入姓名" />
</a-form-item>
</a-col>
<a-col span="24">
<a-form-item required label="电话" name="contact">
<a-input v-model:value="createForm.contact" placeholder="请输入联系人" />
</a-form-item>
</a-col>
<a-col span="24">
<a-form-item required label="地址" name="phone">
<a-input v-model:value="createForm.phone" placeholder="请输入联系电话" />
</a-form-item>
</a-col>
<a-col span="24">
<a-form-item required label="传真" name="mobile">
<a-input v-model:value="createForm.mobile" placeholder="请输入手机" />
</a-form-item>
</a-col>
<a-col span="24">
<a-form-item required label="邮编" name="email">
<a-input v-model:value="createForm.email" placeholder="请输入邮箱" />
</a-form-item>
</a-col>
<a-col span="24">
<a-form-item required label="电子邮箱" name="email">
<a-input v-model:value="createForm.email" placeholder="请输入邮箱" />
</a-form-item>
</a-col>
<a-col span="24">
<a-form-item required label="反馈内容" name="email">
<a-input v-model:value="createForm.email" placeholder="请输入邮箱" />
</a-form-item>
</a-col>
</a-row>
</a-col>
</a-row>
</a-form>
</template>

<script setup lang="ts">
import { ref, onMounted, computed } from 'vue';
let createForm : companyListType.addrFormType = ref({
name: '',
company_id: 0,
contact: '',
phone: '',
mobile: '',
email: '',
})
let dataSource = ref([
{
key: '1',
name: '第一部部门第一部部门第一部部门',
age: '王二狗',
address: '082-12331231',
phone: '1223245645646',
email: '6146545@126.com',
},
{
key: '1',
name: '第一部部门第一部部门第一部部门',
age: '王二狗',
address: '082-12331231',
phone: '1223245645646',
email: '6146545@126.com',
}, {
key: '1',
name: '第一部部门第一部部门第一部部门',
age: '王二狗',
address: '082-12331231',
phone: '1223245645646',
email: '6146545@126.com',
}, {
key: '1',
name: '第一部部门第一部部门第一部部门',
age: '王二狗',
address: '082-12331231',
phone: '1223245645646',
email: '6146545@126.com',
}, {
key: '1',
name: '第一部部门第一部部门第一部部门',
age: '王二狗',
address: '082-12331231',
phone: '1223245645646',
email: '6146545@126.com',
}, {
key: '1',
name: '第一部部门第一部部门第一部部门',
age: '王二狗',
address: '082-12331231',
phone: '1223245645646',
email: '6146545@126.com',
}, {
key: '1',
name: '第一部部门第一部部门第一部部门',
age: '王二狗',
address: '082-12331231',
phone: '1223245645646',
email: '6146545@126.com',
}, {
key: '1',
name: '第一部部门第一部部门第一部部门',
age: '王二狗',
address: '082-12331231',
phone: '1223245645646',
email: '6146545@126.com',
}, {
key: '1',
name: '第一部部门第一部部门第一部部门',
age: '王二狗',
address: '082-12331231',
phone: '1223245645646',
email: '6146545@126.com',
}, {
key: '1',
name: '第一部部门第一部部门第一部部门',
age: '王二狗',
address: '082-12331231',
phone: '1223245645646',
email: '6146545@126.com',
}, {
key: '1',
name: '第一部部门第一部部门第一部部门',
age: '王二狗',
address: '082-12331231',
phone: '1223245645646',
email: '6146545@126.com',
}, {
key: '1',
name: '第一部部门第一部部门第一部部门',
age: '王二狗',
address: '082-12331231',
phone: '1223245645646',
email: '6146545@126.com',
}, {
key: '1',
name: '第一部部门第一部部门第一部部门',
age: '王二狗',
address: '082-12331231',
phone: '1223245645646',
email: '6146545@126.com',
}, {
key: '1',
name: '第一部部门第一部部门第一部部门',
age: '王二狗',
address: '082-12331231',
phone: '1223245645646',
email: '6146545@126.com',
}, {
key: '1',
name: '第一部部门第一部部门第一部部门',
age: '王二狗',
address: '082-12331231',
phone: '1223245645646',
email: '6146545@126.com',
}, {
key: '1',
name: '第一部部门第一部部门第一部部门',
age: '王二狗',
address: '082-12331231',
phone: '1223245645646',
email: '6146545@126.com',
}, {
key: '1',
name: '第一部部门第一部部门第一部部门',
age: '王二狗',
address: '082-12331231',
phone: '1223245645646',
email: '6146545@126.com',
}, {
key: '1',
name: '第一部部门第一部部门第一部部门',
age: '王二狗',
address: '082-12331231',
phone: '1223245645646',
email: '6146545@126.com',
}, {
key: '1',
name: '第一部部门第一部部门第一部部门',
age: '王二狗',
address: '082-12331231',
phone: '1223245645646',
email: '6146545@126.com',
}, {
key: '1',
name: '第一部部门第一部部门第一部部门',
age: '王二狗',
address: '082-12331231',
phone: '1223245645646',
email: '6146545@126.com',
},
])
let columns = ref([
{
title: '部门名称',
dataIndex: 'name',
key: 'name',
},
{
title: '联系人',
dataIndex: 'age',
key: 'age',
},
{
title: '联系电话',
dataIndex: 'address',
key: 'address',
},
{
title: '联系手机',
dataIndex: 'phone',
key: 'phone',
},
{
title: '电子邮件',
dataIndex: 'email',
key: 'email',
},
{
title: '操作',
dataIndex: 'operation',
slots: { customRender: 'operation' },
},
])
</script>

<style scoped lang="less">
:deep(.ant-table-thead >tr>th) {
background-color: #fff !important;
border: none !important;
color: #bbb !important;
}
:deep(.ant-table-thead >tr>th::before) {
display: none !important;
}
:deep(.ant-table-tbody >tr >td) {
border: none !important;
}
</style>

+ 209
- 0
src/components/message/list/index.vue Прегледај датотеку

@@ -0,0 +1,209 @@
<template>
<a-table :data-source="dataSource" :columns="columns">
<template #operation="{ record }">
<a-popconfirm v-if="dataSource.length" title="Sure to delete?" @confirm="onDelete(record.key)">
<a>删除</a>
</a-popconfirm>
</template>
</a-table>
</template>

<script setup lang="ts">
import { ref, onMounted, computed } from 'vue';
let createForm : companyListType.addrFormType = ref({
name: '',
company_id: 0,
contact: '',
phone: '',
mobile: '',
email: '',
})
let dataSource = ref([
{
key: '1',
name: '第一部部门第一部部门第一部部门',
age: '王二狗',
address: '082-12331231',
phone: '1223245645646',
email: '6146545@126.com',
},
{
key: '1',
name: '第一部部门第一部部门第一部部门',
age: '王二狗',
address: '082-12331231',
phone: '1223245645646',
email: '6146545@126.com',
}, {
key: '1',
name: '第一部部门第一部部门第一部部门',
age: '王二狗',
address: '082-12331231',
phone: '1223245645646',
email: '6146545@126.com',
}, {
key: '1',
name: '第一部部门第一部部门第一部部门',
age: '王二狗',
address: '082-12331231',
phone: '1223245645646',
email: '6146545@126.com',
}, {
key: '1',
name: '第一部部门第一部部门第一部部门',
age: '王二狗',
address: '082-12331231',
phone: '1223245645646',
email: '6146545@126.com',
}, {
key: '1',
name: '第一部部门第一部部门第一部部门',
age: '王二狗',
address: '082-12331231',
phone: '1223245645646',
email: '6146545@126.com',
}, {
key: '1',
name: '第一部部门第一部部门第一部部门',
age: '王二狗',
address: '082-12331231',
phone: '1223245645646',
email: '6146545@126.com',
}, {
key: '1',
name: '第一部部门第一部部门第一部部门',
age: '王二狗',
address: '082-12331231',
phone: '1223245645646',
email: '6146545@126.com',
}, {
key: '1',
name: '第一部部门第一部部门第一部部门',
age: '王二狗',
address: '082-12331231',
phone: '1223245645646',
email: '6146545@126.com',
}, {
key: '1',
name: '第一部部门第一部部门第一部部门',
age: '王二狗',
address: '082-12331231',
phone: '1223245645646',
email: '6146545@126.com',
}, {
key: '1',
name: '第一部部门第一部部门第一部部门',
age: '王二狗',
address: '082-12331231',
phone: '1223245645646',
email: '6146545@126.com',
}, {
key: '1',
name: '第一部部门第一部部门第一部部门',
age: '王二狗',
address: '082-12331231',
phone: '1223245645646',
email: '6146545@126.com',
}, {
key: '1',
name: '第一部部门第一部部门第一部部门',
age: '王二狗',
address: '082-12331231',
phone: '1223245645646',
email: '6146545@126.com',
}, {
key: '1',
name: '第一部部门第一部部门第一部部门',
age: '王二狗',
address: '082-12331231',
phone: '1223245645646',
email: '6146545@126.com',
}, {
key: '1',
name: '第一部部门第一部部门第一部部门',
age: '王二狗',
address: '082-12331231',
phone: '1223245645646',
email: '6146545@126.com',
}, {
key: '1',
name: '第一部部门第一部部门第一部部门',
age: '王二狗',
address: '082-12331231',
phone: '1223245645646',
email: '6146545@126.com',
}, {
key: '1',
name: '第一部部门第一部部门第一部部门',
age: '王二狗',
address: '082-12331231',
phone: '1223245645646',
email: '6146545@126.com',
}, {
key: '1',
name: '第一部部门第一部部门第一部部门',
age: '王二狗',
address: '082-12331231',
phone: '1223245645646',
email: '6146545@126.com',
}, {
key: '1',
name: '第一部部门第一部部门第一部部门',
age: '王二狗',
address: '082-12331231',
phone: '1223245645646',
email: '6146545@126.com',
}, {
key: '1',
name: '第一部部门第一部部门第一部部门',
age: '王二狗',
address: '082-12331231',
phone: '1223245645646',
email: '6146545@126.com',
},
])
let columns = ref([
{
title: '姓名',
dataIndex: 'name',
key: 'name',
},
{
title: '电话',
dataIndex: 'age',
key: 'age',
},
{
title: '留言内容',
dataIndex: 'address',
key: 'address',
},
{
title: '留言时间',
dataIndex: 'address',
key: 'address',
},
{
title: '操作',
dataIndex: 'operation',
slots: { customRender: 'operation' },
},
])
</script>

<style scoped lang="less">
:deep(.ant-table-thead >tr>th) {
background-color: #fff !important;
border: none !important;
color: #bbb !important;
}
:deep(.ant-table-thead >tr>th::before) {
display: none !important;
}
:deep(.ant-table-tbody >tr >td) {
border: none !important;
}
</style>

+ 281
- 0
src/components/resume/interview/index.vue Прегледај датотеку

@@ -0,0 +1,281 @@
<template>
<a-row>
<a-col>
搜索应聘简历
</a-col>
<a-col span="2">
<a-dropdown>
<template #overlay>
</template>
<a-button>
部门
<DownOutlined />
</a-button>
</a-dropdown>
</a-col>
<a-col>
<a-dropdown>
<template #overlay>

</template>
<a-button>
职位
<DownOutlined />
</a-button>
</a-dropdown>
</a-col>
<a-col>
<a-dropdown>
<template #overlay>
</template>
<a-button>
状态
<DownOutlined />
</a-button>
</a-dropdown>
</a-col>
<a-col>
<a-input-search v-model:value="value" placeholder="input search text" style="width: 200px;"
@search="onSearch">
<template #enterButton>
<a-button>Custom</a-button>
</template>
</a-input-search>
</a-col>
</a-row>
<div style="margin: 10px 0;">
<a-row>
<a-col>
<a-button>放入回收站</a-button>
</a-col>
<a-col span="2">
<a-button>发布面试通知</a-button>
</a-col>
</a-row>
</div>
<a-table :data-source="dataSource" :columns="columns"
:row-selection="{ selectedRowKeys: selectedRowKeys, onChange: onSelectChange }">
<template #operation="{ record }">
<a-popconfirm v-if="dataSource.length" title="Sure to delete?" @confirm="onDelete(record.key)">
<a>删除</a>
</a-popconfirm>
</template>
</a-table>




</template>
<script setup lang="ts">
import { ref, computed, onMounted } from 'vue';
import { DownOutlined } from '@ant-design/icons-vue';

let dataSource = ref([
{
key: '1',
name: '第一部部门第一部部门第一部部门',
age: '王二狗',
address: '082-12331231',
phone: '1223245645646',
email: '6146545@126.com',
},
{
key: '1',
name: '第一部部门第一部部门第一部部门',
age: '王二狗',
address: '082-12331231',
phone: '1223245645646',
email: '6146545@126.com',
}, {
key: '1',
name: '第一部部门第一部部门第一部部门',
age: '王二狗',
address: '082-12331231',
phone: '1223245645646',
email: '6146545@126.com',
}, {
key: '1',
name: '第一部部门第一部部门第一部部门',
age: '王二狗',
address: '082-12331231',
phone: '1223245645646',
email: '6146545@126.com',
}, {
key: '1',
name: '第一部部门第一部部门第一部部门',
age: '王二狗',
address: '082-12331231',
phone: '1223245645646',
email: '6146545@126.com',
}, {
key: '1',
name: '第一部部门第一部部门第一部部门',
age: '王二狗',
address: '082-12331231',
phone: '1223245645646',
email: '6146545@126.com',
}, {
key: '1',
name: '第一部部门第一部部门第一部部门',
age: '王二狗',
address: '082-12331231',
phone: '1223245645646',
email: '6146545@126.com',
}, {
key: '1',
name: '第一部部门第一部部门第一部部门',
age: '王二狗',
address: '082-12331231',
phone: '1223245645646',
email: '6146545@126.com',
}, {
key: '1',
name: '第一部部门第一部部门第一部部门',
age: '王二狗',
address: '082-12331231',
phone: '1223245645646',
email: '6146545@126.com',
}, {
key: '1',
name: '第一部部门第一部部门第一部部门',
age: '王二狗',
address: '082-12331231',
phone: '1223245645646',
email: '6146545@126.com',
}, {
key: '1',
name: '第一部部门第一部部门第一部部门',
age: '王二狗',
address: '082-12331231',
phone: '1223245645646',
email: '6146545@126.com',
}, {
key: '1',
name: '第一部部门第一部部门第一部部门',
age: '王二狗',
address: '082-12331231',
phone: '1223245645646',
email: '6146545@126.com',
}, {
key: '1',
name: '第一部部门第一部部门第一部部门',
age: '王二狗',
address: '082-12331231',
phone: '1223245645646',
email: '6146545@126.com',
}, {
key: '1',
name: '第一部部门第一部部门第一部部门',
age: '王二狗',
address: '082-12331231',
phone: '1223245645646',
email: '6146545@126.com',
}, {
key: '1',
name: '第一部部门第一部部门第一部部门',
age: '王二狗',
address: '082-12331231',
phone: '1223245645646',
email: '6146545@126.com',
}, {
key: '1',
name: '第一部部门第一部部门第一部部门',
age: '王二狗',
address: '082-12331231',
phone: '1223245645646',
email: '6146545@126.com',
}, {
key: '1',
name: '第一部部门第一部部门第一部部门',
age: '王二狗',
address: '082-12331231',
phone: '1223245645646',
email: '6146545@126.com',
}, {
key: '1',
name: '第一部部门第一部部门第一部部门',
age: '王二狗',
address: '082-12331231',
phone: '1223245645646',
email: '6146545@126.com',
}, {
key: '1',
name: '第一部部门第一部部门第一部部门',
age: '王二狗',
address: '082-12331231',
phone: '1223245645646',
email: '6146545@126.com',
}, {
key: '1',
name: '第一部部门第一部部门第一部部门',
age: '王二狗',
address: '082-12331231',
phone: '1223245645646',
email: '6146545@126.com',
},
])
let columns = ref([
{
title: '姓名',
dataIndex: 'name',
key: 'name',
},
{
title: '性别',
dataIndex: 'age',
key: 'age',
},
{
title: '应聘职位',
dataIndex: 'address',
key: 'address',
},
{
title: '学历',
dataIndex: 'phone',
key: 'phone',
},
{
title: '所在地',
dataIndex: 'email',
key: 'email',
},
{
title: '工作经验',
dataIndex: 'email',
key: 'email',
},
{
title: '应聘时间',
dataIndex: 'email',
key: 'email',
},
{
title: '状态',
dataIndex: 'email',
key: 'email',
},

{
title: '操作',
dataIndex: 'operation',
slots: { customRender: 'operation' },
},
])
</script>

<style scoped lang="less">
:deep(.ant-table-thead >tr>th) {
background-color: #fff !important;
border: none !important;
color: #bbb !important;
}

:deep(.ant-table-thead >tr>th::before) {
display: none !important;
}

:deep(.ant-table-tbody >tr >td) {
border: none !important;
}
</style>

+ 214
- 0
src/components/resume/read/index.vue Прегледај датотеку

@@ -0,0 +1,214 @@
<template>
<a-input-search v-model:value="value" placeholder="input search text"
@search="onSearch">
<template #enterButton>
<a-button>搜索</a-button>
</template>
</a-input-search>
<a-table :data-source="dataSource" :columns="columns"
:row-selection="{ selectedRowKeys: selectedRowKeys, onChange: onSelectChange }">
<template #operation="{ record }">
<a-popconfirm v-if="dataSource.length" title="Sure to delete?" @confirm="onDelete(record.key)">
<a>删除</a>
</a-popconfirm>
</template>
</a-table>
</template>

<script setup lang="ts">
import { ref, computed, onMounted } from 'vue';
import { DownOutlined } from '@ant-design/icons-vue';

let dataSource = ref([
{
key: '1',
name: '第一部部门第一部部门第一部部门',
age: '王二狗',
address: '082-12331231',
phone: '1223245645646',
email: '6146545@126.com',
},
{
key: '1',
name: '第一部部门第一部部门第一部部门',
age: '王二狗',
address: '082-12331231',
phone: '1223245645646',
email: '6146545@126.com',
}, {
key: '1',
name: '第一部部门第一部部门第一部部门',
age: '王二狗',
address: '082-12331231',
phone: '1223245645646',
email: '6146545@126.com',
}, {
key: '1',
name: '第一部部门第一部部门第一部部门',
age: '王二狗',
address: '082-12331231',
phone: '1223245645646',
email: '6146545@126.com',
}, {
key: '1',
name: '第一部部门第一部部门第一部部门',
age: '王二狗',
address: '082-12331231',
phone: '1223245645646',
email: '6146545@126.com',
}, {
key: '1',
name: '第一部部门第一部部门第一部部门',
age: '王二狗',
address: '082-12331231',
phone: '1223245645646',
email: '6146545@126.com',
}, {
key: '1',
name: '第一部部门第一部部门第一部部门',
age: '王二狗',
address: '082-12331231',
phone: '1223245645646',
email: '6146545@126.com',
}, {
key: '1',
name: '第一部部门第一部部门第一部部门',
age: '王二狗',
address: '082-12331231',
phone: '1223245645646',
email: '6146545@126.com',
}, {
key: '1',
name: '第一部部门第一部部门第一部部门',
age: '王二狗',
address: '082-12331231',
phone: '1223245645646',
email: '6146545@126.com',
}, {
key: '1',
name: '第一部部门第一部部门第一部部门',
age: '王二狗',
address: '082-12331231',
phone: '1223245645646',
email: '6146545@126.com',
}, {
key: '1',
name: '第一部部门第一部部门第一部部门',
age: '王二狗',
address: '082-12331231',
phone: '1223245645646',
email: '6146545@126.com',
}, {
key: '1',
name: '第一部部门第一部部门第一部部门',
age: '王二狗',
address: '082-12331231',
phone: '1223245645646',
email: '6146545@126.com',
}, {
key: '1',
name: '第一部部门第一部部门第一部部门',
age: '王二狗',
address: '082-12331231',
phone: '1223245645646',
email: '6146545@126.com',
}, {
key: '1',
name: '第一部部门第一部部门第一部部门',
age: '王二狗',
address: '082-12331231',
phone: '1223245645646',
email: '6146545@126.com',
}, {
key: '1',
name: '第一部部门第一部部门第一部部门',
age: '王二狗',
address: '082-12331231',
phone: '1223245645646',
email: '6146545@126.com',
}, {
key: '1',
name: '第一部部门第一部部门第一部部门',
age: '王二狗',
address: '082-12331231',
phone: '1223245645646',
email: '6146545@126.com',
}, {
key: '1',
name: '第一部部门第一部部门第一部部门',
age: '王二狗',
address: '082-12331231',
phone: '1223245645646',
email: '6146545@126.com',
}, {
key: '1',
name: '第一部部门第一部部门第一部部门',
age: '王二狗',
address: '082-12331231',
phone: '1223245645646',
email: '6146545@126.com',
}, {
key: '1',
name: '第一部部门第一部部门第一部部门',
age: '王二狗',
address: '082-12331231',
phone: '1223245645646',
email: '6146545@126.com',
}, {
key: '1',
name: '第一部部门第一部部门第一部部门',
age: '王二狗',
address: '082-12331231',
phone: '1223245645646',
email: '6146545@126.com',
},
])
let columns = ref([
{
title: '姓名',
dataIndex: 'name',
key: 'name',
},
{
title: '性别',
dataIndex: 'age',
key: 'age',
},
{
title: '意向职位',
dataIndex: 'address',
key: 'address',
},
{
title: '学历',
dataIndex: 'phone',
key: 'phone',
},
{
title: '期望工作地',
dataIndex: 'email',
key: 'email',
},
{
title: '操作',
dataIndex: 'operation',
slots: { customRender: 'operation' },
},
])
</script>

<style scoped lang="less">
:deep(.ant-table-thead >tr>th) {
background-color: #fff !important;
border: none !important;
color: #bbb !important;
}

:deep(.ant-table-thead >tr>th::before) {
display: none !important;
}

:deep(.ant-table-tbody >tr >td) {
border: none !important;
}
</style>

+ 261
- 0
src/components/resume/search/index.vue Прегледај датотеку

@@ -0,0 +1,261 @@
<template>
<a-form :model="createForm" :label-col="{span: 4}" labelAlign="right">
<a-row gutter="20">
<a-col span="12">
<a-row>
<a-col span="24">
<a-form-item label="关键字" name="full_name">
<a-input v-model:value="value" placeholder="Basic usage" />
</a-form-item>
</a-col>
<a-col span="24">
<a-form-item label="关键词匹配" name="registration_number">
<a-checkbox-group>
<a-checkbox>求职意向</a-checkbox>
<a-checkbox>工作经历</a-checkbox>
<a-checkbox>教育经历</a-checkbox>
<a-checkbox>技能专长</a-checkbox>
</a-checkbox-group>
</a-form-item>
</a-col>
<a-col span="24">
<a-form-item label="应聘职位" name="mandarin">
<!-- <a-c-cascader :dict="2009" @saveCascader="compantJiguanSave" placeholder="请选择籍贯"
:cascader_content="addOtherForm.company_jiguan_cascader"></a-c-cascader> -->
</a-form-item>
</a-col>
<a-col span="24">
<a-form-item label="期望地区" name="mandarin">
<!-- <a-c-cascader :dict="2009" @saveCascader="compantJiguanSave" placeholder="请选择籍贯"
:cascader_content="addOtherForm.company_jiguan_cascader"></a-c-cascader> -->
</a-form-item>
</a-col>
<a-col span="24">
<a-form-item label="户口所在地" name="mandarin">
<!-- <a-c-cascader :dict="2009" @saveCascader="compantSuozaidiSave" placeholder="请选择所在地"
:cascader_content="addOtherForm.company_suozaidi_cascader"></a-c-cascader> -->
</a-form-item>
</a-col>
<a-col span="24">
<a-form-item label="学历">
<!-- <a-c-select :dict="2006" placeholder="请选择学历" @saveSelect="saveSchoolDegree"></a-c-select> -->
</a-form-item>
</a-col>
<a-col span="24">
<a-form-item label="含最高学历" name="degree_better">
<a-radio-group v-model:value="createForm.degree_better" button-style="solid">
<a-radio-button :value="1">是</a-radio-button>
<a-radio-button :value="2">否</a-radio-button>
</a-radio-group>
</a-form-item>
</a-col>
<a-col span="24">
<a-form-item required label="英语">
<!-- <a-c-select :dict="2014" placeholder="请选择职称要求" @saveSelect="saveProfelevel"></a-c-select> -->
</a-form-item>
</a-col>
<a-col span="24">
<a-form-item required label="国语">
<!-- <a-c-select :dict="2014" placeholder="请选择职称要求" @saveSelect="saveProfelevel"></a-c-select> -->
</a-form-item>
</a-col>
<a-col span="24">
<a-form-item required label="粤语">
<!-- <a-c-select :dict="2014" placeholder="请选择职称要求" @saveSelect="saveProfelevel"></a-c-select> -->
</a-form-item>
</a-col>
<a-col span="24">
<a-form-item required label="第二外语">
<!-- <a-c-select :dict="2014" placeholder="请选择职称要求" @saveSelect="saveProfelevel"></a-c-select> -->
</a-form-item>
</a-col>
<a-col span="24">
<a-form-item required label="计算机能力">
<!-- <a-c-select :dict="2014" placeholder="请选择职称要求" @saveSelect="saveProfelevel"></a-c-select> -->
</a-form-item>
</a-col>
<a-col span="24">
<a-form-item required label="工作经验">
<!-- <a-c-select :dict="2021" placeholder="请选择工作经验" @saveSelect="saveExperience"></a-c-select> -->
</a-form-item>
</a-col>
<a-col span="24">
<a-form-item label="性别" name="sex">
<a-radio-group v-model:value="createForm.sex" button-style="solid">
<a-radio-button :value="1">男</a-radio-button>
<a-radio-button :value="2">女</a-radio-button>
<a-radio-button :value="3">不限</a-radio-button>
</a-radio-group>
</a-form-item>
</a-col>
<a-col span="24">
<a-form-item label="最小年龄" name="age_min">
<a-input-number :min="0" type="number" v-model:value="createForm.age_min"
placeholder="请输入最小年龄" style="width: 100%;" />
</a-form-item>
</a-col>
<a-col span="24">
<a-form-item label="最大年龄" name="age_max">
<a-input-number :min="0" type="number" v-model:value="createForm.age_max"
placeholder="请输入最大年龄" style="width: 100%;" />
</a-form-item>
</a-col>
<a-col span="24">
<a-form-item required label="简历更新" name="marital_status">
</a-form-item>
</a-col>
<a-col span="24">
<a-form-item required label="简历编号" name="major">
<a-input v-model:value="createForm.major" placeholder="请输入专业" />
</a-form-item>
</a-col>
</a-row>
</a-col>
</a-row>
</a-form>
<a-button block>保存</a-button>
</template>

<script setup lang="ts">
import { ref, onMounted, computed, defineProps, watch, defineEmits } from 'vue';
// import dayjs from 'dayjs';
// import 'dayjs/locale/zh-cn';
// dayjs.locale('zh-cn');
// const dayjsRef = ref(dayjs);

let createForm : companyListType.addrFormType = ref({
full_name: '',
registration_number: '',
establishment_date: '',
contact: '',
phone: '',
mobile: '',
email: '',
fax: '',
website: '',
province: 0,
city: 0,
district: 0,
street: 0,
address: '',
industry: 0,
nature: 0,
scale: 0,
introduction: '',
photo: '',
photo_status: 1,
license_path: '',
license_status: 1,
login_name: '',
login_pwd: '',
company_photos: [],
})

let addOtherForm = ref<companyListType.addOtherFormType>({
chengli_date: '',
content: '',
photo_img: '',
license_img: '',
company_photo_img: '',
company_address_cascader: '',
company_industry_cascader: '',
company_nature_cascader: '',
company_scale_cascader: '',
})


onMounted(async () => {
// let res = await listSection({ page: 1, pagesize: 10, sort: 'id', sortby: "asc", keyword: "" });
// section_list.value = res.data.sections;
})

// 上传图片
// 企业照片
// const uploadPhotoSuccess = (data : Object) => {
// addOtherForm.value.photo_img = "http://114.132.245.7:242494" + data
// createForm.value.photo = data
// }

// // 营业执照
// const uploadLicenseSuccess = (data : Object) => {
// addOtherForm.value.license_img = "http://114.132.245.7:242494" + data
// createForm.value.license_path = data
// }
// // 企业相册
// const uploadSuccess = (data : Object) => {
// addOtherForm.value.company_photo_img = "http://114.132.245.7:242494" + data
// createForm.value.company_photos.push({ photo: data })
// }
// // 成立日期
// const establishmentDateChange = (val) => {
// createForm.value.establishment_date = dayjsRef.value(val).format('YYYY-MM-DD');
// }


// // 选择地址
// const compantAddressSave = (data) => {
// createForm.value.province = data.arr1[0] ? data.arr1[0] : 0;
// createForm.value.city = data.arr1[1] ? data.arr1[1] : 0;
// createForm.value.district = data.arr1[2] ? data.arr1[2] : 0;
// createForm.value.street = data.arr1[3] ? data.arr1[3] : 0;
// }

// // 所属行业 industrySave
// const industrySave = (data) => {
// createForm.value.industry = data.arr1[1] ? data.arr1[1] : 0;
// }

// // 企业性质
// const natureSave = (data) => {
// createForm.value.nature = data.arr1[1] ? data.arr1[1] : 0;
// }

// // 企业规模
// const scaleSave = (data) => {
// createForm.value.scale = data.val ? data.val : 0;
// }

// // 富文本
// const onEditorUpdate = (data) => {
// createForm.value.introduction = data
// }

// const sumbitForm = () => {
// console.log(createForm.value)
// if (createForm.value.full_name) {
// if (!createForm.value.id) {
// addCompany(createForm.value).then(res => {
// message.success('新增企业成功');
// hideModal();
// resetForm();
// emit('successAdd');
// }).catch(err => {
// })
// } else {
// PostCompanyEdit(createForm.value).then(res => {
// message.success('修改企业信息成功');
// hideModal();
// resetForm();
// emit('successAdd');
// }).catch(err => {
// })
// }

// } else {
// message.warning('请补充完整信息');
// }
// }
</script>

<style>
</style>

<style>
</style>

+ 22
- 0
src/components/user/expense/index.vue Прегледај датотеку

@@ -0,0 +1,22 @@
<template>
<a-row>
<a-col :span="6">
<a-statistic title="总点数" value="10000" style="margin-right: 50px" />
</a-col>
<a-col :span="6">
<a-statistic title="剩余点数" value="999" />
</a-col>
<a-col :span="6">
<a-statistic title="开通日期" value="2012-12-20" />
</a-col>
<a-col :span="6">
<a-statistic title="有效期限" value="2012-12-20" />
</a-col>
</a-row>
</template>

<script>
</script>

<style>
</style>

+ 230
- 0
src/components/user/password/index.vue Прегледај датотеку

@@ -0,0 +1,230 @@
<template>
<a-form :model="createForm" :label-col="{span: 4}" labelAlign="right">
<a-row gutter="20">
<a-col span="12">
<a-row>
<a-col span="24">
<a-form-item required label="登录密码" name="name">
<a-input v-model:value="createForm.name" placeholder="请输入登录密码" />
</a-form-item>
</a-col>
<a-col span="24">
<a-form-item required label="注册的手机号" name="name">
<a-input v-model:value="createForm.name" placeholder="请输入手机号" />
</a-form-item>
</a-col>
<a-col span="24">
<a-form-item required label="确认密码" name="contact">
<a-input v-model:value="createForm.contact" placeholder="请输入确认密码" />
</a-form-item>
</a-col>
</a-row>
</a-col>
</a-row>
</a-form>
</template>

<script setup lang="ts">
import { ref, onMounted, computed } from 'vue';
let createForm : companyListType.addrFormType = ref({
name: '',
company_id: 0,
contact: '',
phone: '',
mobile: '',
email: '',
})
let dataSource = ref([
{
key: '1',
name: '第一部部门第一部部门第一部部门',
age: '王二狗',
address: '082-12331231',
phone: '1223245645646',
email: '6146545@126.com',
},
{
key: '1',
name: '第一部部门第一部部门第一部部门',
age: '王二狗',
address: '082-12331231',
phone: '1223245645646',
email: '6146545@126.com',
}, {
key: '1',
name: '第一部部门第一部部门第一部部门',
age: '王二狗',
address: '082-12331231',
phone: '1223245645646',
email: '6146545@126.com',
}, {
key: '1',
name: '第一部部门第一部部门第一部部门',
age: '王二狗',
address: '082-12331231',
phone: '1223245645646',
email: '6146545@126.com',
}, {
key: '1',
name: '第一部部门第一部部门第一部部门',
age: '王二狗',
address: '082-12331231',
phone: '1223245645646',
email: '6146545@126.com',
}, {
key: '1',
name: '第一部部门第一部部门第一部部门',
age: '王二狗',
address: '082-12331231',
phone: '1223245645646',
email: '6146545@126.com',
}, {
key: '1',
name: '第一部部门第一部部门第一部部门',
age: '王二狗',
address: '082-12331231',
phone: '1223245645646',
email: '6146545@126.com',
}, {
key: '1',
name: '第一部部门第一部部门第一部部门',
age: '王二狗',
address: '082-12331231',
phone: '1223245645646',
email: '6146545@126.com',
}, {
key: '1',
name: '第一部部门第一部部门第一部部门',
age: '王二狗',
address: '082-12331231',
phone: '1223245645646',
email: '6146545@126.com',
}, {
key: '1',
name: '第一部部门第一部部门第一部部门',
age: '王二狗',
address: '082-12331231',
phone: '1223245645646',
email: '6146545@126.com',
}, {
key: '1',
name: '第一部部门第一部部门第一部部门',
age: '王二狗',
address: '082-12331231',
phone: '1223245645646',
email: '6146545@126.com',
}, {
key: '1',
name: '第一部部门第一部部门第一部部门',
age: '王二狗',
address: '082-12331231',
phone: '1223245645646',
email: '6146545@126.com',
}, {
key: '1',
name: '第一部部门第一部部门第一部部门',
age: '王二狗',
address: '082-12331231',
phone: '1223245645646',
email: '6146545@126.com',
}, {
key: '1',
name: '第一部部门第一部部门第一部部门',
age: '王二狗',
address: '082-12331231',
phone: '1223245645646',
email: '6146545@126.com',
}, {
key: '1',
name: '第一部部门第一部部门第一部部门',
age: '王二狗',
address: '082-12331231',
phone: '1223245645646',
email: '6146545@126.com',
}, {
key: '1',
name: '第一部部门第一部部门第一部部门',
age: '王二狗',
address: '082-12331231',
phone: '1223245645646',
email: '6146545@126.com',
}, {
key: '1',
name: '第一部部门第一部部门第一部部门',
age: '王二狗',
address: '082-12331231',
phone: '1223245645646',
email: '6146545@126.com',
}, {
key: '1',
name: '第一部部门第一部部门第一部部门',
age: '王二狗',
address: '082-12331231',
phone: '1223245645646',
email: '6146545@126.com',
}, {
key: '1',
name: '第一部部门第一部部门第一部部门',
age: '王二狗',
address: '082-12331231',
phone: '1223245645646',
email: '6146545@126.com',
}, {
key: '1',
name: '第一部部门第一部部门第一部部门',
age: '王二狗',
address: '082-12331231',
phone: '1223245645646',
email: '6146545@126.com',
},
])
let columns = ref([
{
title: '部门名称',
dataIndex: 'name',
key: 'name',
},
{
title: '联系人',
dataIndex: 'age',
key: 'age',
},
{
title: '联系电话',
dataIndex: 'address',
key: 'address',
},
{
title: '联系手机',
dataIndex: 'phone',
key: 'phone',
},
{
title: '电子邮件',
dataIndex: 'email',
key: 'email',
},
{
title: '操作',
dataIndex: 'operation',
slots: { customRender: 'operation' },
},
])
</script>

<style scoped lang="less">
:deep(.ant-table-thead >tr>th) {
background-color: #fff !important;
border: none !important;
color: #bbb !important;
}
:deep(.ant-table-thead >tr>th::before) {
display: none !important;
}
:deep(.ant-table-tbody >tr >td) {
border: none !important;
}
</style>

+ 2
- 2
src/main.ts Прегледај датотеку

@@ -5,7 +5,7 @@ import { router } from './router'
import { store } from './store';
import Antd from 'ant-design-vue';
import 'ant-design-vue/dist/reset.css';
import CommonLeftSider from '@/components/common/left-sider.vue';
// router.beforeEach((to, from, next) => {
// document.title = `${to.meta.title} - 菊城人才市场后台管理`;
// if (!sessionStorage.getItem('token')) {
@@ -34,7 +34,7 @@ import 'ant-design-vue/dist/reset.css';
// })

const app = createApp(App);
app.component('common-left-sider', CommonLeftSider);
app.use(router);
app.use(store);
app.use(Antd);

+ 5
- 5
src/router/routes.ts Прегледај датотеку

@@ -22,13 +22,13 @@ export const LayoutRoute: AppRouteRecordRaw = {
path: '',
name: 'layout',
component: Layout,
redirect: '/manage/home',
// children: [
// ...routesModuleList
// ]
redirect: '/job/home',
children: [
...routesManageModuleList
...routesModuleList
]
// children: [
// ...routesManageModuleList
// ]
}


+ 14
- 14
src/views/manage/basic/index.vue Прегледај датотеку

@@ -3,22 +3,17 @@
<a-row :gutter="[10,10]" type="flex" justify="center">
<a-col span="18">
<a-row>
<a-col span="4">
<a-menu v-model:openKeys="openKeys" v-model:selectedKeys="selectedKeys" style="width: 100%;" mode="inline">
<a-menu-item key="1">基本资料</a-menu-item>
<a-menu-item key="2">部门管理</a-menu-item>
<a-menu-item key="3">上传营业执照</a-menu-item>
<a-menu-item key="4">上传企业图片</a-menu-item>
<a-menu-item key="5">资料预览</a-menu-item>
<a-menu-item key="6">联系方式</a-menu-item>
</a-menu>
<a-col span="4">
<common-left-sider :menu_list="menu_list" :selected_key="[1]" @changeKey="changeKey"></common-left-sider>
</a-col>
<a-col span="20">
<div style="width: 100%;background-color: #fff;padding: 10px;">
<company-department></company-department>
<div style="width: 100%;background-color: #fff;padding: 10px;">
<company-basic v-if="curKey == 1"></company-basic>
<company-department v-if="curKey == 2"></company-department>
<company-licence v-if="curKey == 3"></company-licence>
<company-image v-if="curKey == 4"></company-image>
</div>
</a-col>
</a-row>
</a-col>
</a-row>
@@ -29,9 +24,14 @@
import { ref, computed, onMounted } from 'vue';
import CompanyBasic from '@/components/company/basic/index.vue'
import CompanyDepartment from '@/components/company/department/index.vue'
import CompanyLicence from '@/components/company/licence/index.vue'
import CompanyImage from '@/components/company/image/index.vue'
let companyList = ref<object[]>([{}, {}, {}, {}, {}, {}])
const openKeys = ref<string[]>(['1']);
const selectedKeys = ref<string[]>(['2']);
let menu_list = ref([{name: '基本资料',key: 1},{name: '部门管理',key: 2},{name: '上传营业执照',key: 3},{name: '上传企业图片',key: 4},{name: '资料预览',key:5},{name: '联系方式',key: 6}])
let curKey = ref<Number>(1)
const changeKey = (data) => {
curKey.value = data.key;
}
</script>

<style>

+ 15
- 13
src/views/manage/invite/index.vue Прегледај датотеку

@@ -3,19 +3,17 @@
<a-row :gutter="[10,10]" type="flex" justify="center">
<a-col span="18">
<a-row>
<a-col span="4">
<a-menu v-model:openKeys="openKeys" v-model:selectedKeys="selectedKeys" style="width: 100%;" mode="inline">
<a-menu-item key="1">发布招聘</a-menu-item>
<a-menu-item key="2">招聘职位管理</a-menu-item>
<a-menu-item key="3">招聘回收站</a-menu-item>
</a-menu>
<a-col span="4">
<common-left-sider :menu_list="menu_list" :selected_key="[1]"
@changeKey="changeKey"></common-left-sider>
</a-col>
<a-col span="20">
<div style="width: 100%;background-color: #fff;padding: 10px;">
<company-department></company-department>
<div style="width: 100%;background-color: #fff;padding: 10px;">
<invite-position v-if="curKey == 1"></invite-position>
<invite-manage v-if="curKey == 2"></invite-manage>
<invite-recycle v-if="curKey == 3"></invite-recycle>
</div>
</a-col>
</a-row>
</a-col>
</a-row>
@@ -24,11 +22,15 @@

<script setup lang="ts">
import { ref, computed, onMounted } from 'vue';
import CompanyBasic from '@/components/company/basic/index.vue'
import CompanyDepartment from '@/components/company/department/index.vue'
import InvitePosition from '@/components/invite/position/index.vue'
import InviteManage from '@/components/invite/manage/index.vue'
import InviteRecycle from '@/components/invite/recycle/index.vue'
let companyList = ref<object[]>([{}, {}, {}, {}, {}, {}])
const openKeys = ref<string[]>(['1']);
const selectedKeys = ref<string[]>(['2']);
let menu_list = ref([{ name: '发布招聘', key: 1 }, { name: '招聘职位管理', key: 2 }, { name: '招聘回收站', key: 3 }])
let curKey = ref<Number>(1)
const changeKey = (data) => {
curKey.value = data.key;
}
</script>

<style>

+ 11
- 11
src/views/manage/meet/index.vue Прегледај датотеку

@@ -3,18 +3,16 @@
<a-row :gutter="[10,10]" type="flex" justify="center">
<a-col span="18">
<a-row>
<a-col span="4">
<a-menu v-model:openKeys="openKeys" v-model:selectedKeys="selectedKeys" style="width: 100%;" mode="inline">
<a-menu-item key="1">招聘会预定</a-menu-item>
<a-menu-item key="2">预定审核结果</a-menu-item>
</a-menu>
<a-col span="4">
<common-left-sider :menu_list="menu_list" :selected_key="[1]"
@changeKey="changeKey"></common-left-sider>
</a-col>
<a-col span="20">
<div style="width: 100%;background-color: #fff;padding: 10px;">
<company-department></company-department>
<meet-subscribe v-if="curKey == 1"></meet-subscribe>
<meet-subscribe v-if="curKey == 2"></meet-subscribe>
</div>
</a-col>
</a-row>
</a-col>
</a-row>
@@ -23,11 +21,13 @@

<script setup lang="ts">
import { ref, computed, onMounted } from 'vue';
import CompanyBasic from '@/components/company/basic/index.vue'
import CompanyDepartment from '@/components/company/department/index.vue'
import MeetSubscribe from '@/components/meet/subscribe/index.vue'
let companyList = ref<object[]>([{}, {}, {}, {}, {}, {}])
const openKeys = ref<string[]>(['1']);
const selectedKeys = ref<string[]>(['2']);
let menu_list = ref([{ name: '招聘会预定', key: 1 },{ name: '预定审核结果', key: 2}])
let curKey = ref<Number>(1)
const changeKey = (data) => {
curKey.value = data.key;
}
</script>

<style>

+ 12
- 11
src/views/manage/message/index.vue Прегледај датотеку

@@ -3,18 +3,16 @@
<a-row :gutter="[10,10]" type="flex" justify="center">
<a-col span="18">
<a-row>
<a-col span="4">
<a-menu v-model:openKeys="openKeys" v-model:selectedKeys="selectedKeys" style="width: 100%;" mode="inline">
<a-menu-item key="1">意见反馈列表</a-menu-item>
<a-menu-item key="2">意见反馈</a-menu-item>
</a-menu>
<a-col span="4">
<common-left-sider :menu_list="menu_list" :selected_key="[1]"
@changeKey="changeKey"></common-left-sider>
</a-col>
<a-col span="20">
<div style="width: 100%;background-color: #fff;padding: 10px;">
<company-department></company-department>
<message-list v-if="curKey == 1"></message-list>
<message-feedback v-if="curKey == 2"></message-feedback>
</div>
</a-col>
</a-row>
</a-col>
</a-row>
@@ -23,11 +21,14 @@

<script setup lang="ts">
import { ref, computed, onMounted } from 'vue';
import CompanyBasic from '@/components/company/basic/index.vue'
import CompanyDepartment from '@/components/company/department/index.vue'
import MessageList from '@/components/message/list/index.vue'
import MessageFeedback from '@/components/message/feedback/index.vue'
let companyList = ref<object[]>([{}, {}, {}, {}, {}, {}])
const openKeys = ref<string[]>(['1']);
const selectedKeys = ref<string[]>(['2']);
let menu_list = ref([{ name: '意见反馈列表', key: 1 },{ name: '意见反馈', key: 2}])
let curKey = ref<Number>(1)
const changeKey = (data) => {
curKey.value = data.key;
}
</script>

<style>

+ 13
- 14
src/views/manage/resume/index.vue Прегледај датотеку

@@ -3,21 +3,17 @@
<a-row :gutter="[10,10]" type="flex" justify="center">
<a-col span="18">
<a-row>
<a-col span="4">
<a-menu v-model:openKeys="openKeys" v-model:selectedKeys="selectedKeys" style="width: 100%;" mode="inline">
<a-menu-item key="1">收到的应聘简历</a-menu-item>
<a-menu-item key="2">邀请面试简历</a-menu-item>
<a-menu-item key="3">已查看联系方式</a-menu-item>
<a-menu-item key="4">企业人才库</a-menu-item>
<a-menu-item key="5">简历回收站</a-menu-item>
</a-menu>
<a-col span="4">
<common-left-sider :menu_list="menu_list" :selected_key="[1]"
@changeKey="changeKey"></common-left-sider>
</a-col>
<a-col span="20">
<div style="width: 100%;background-color: #fff;padding: 10px;">
<company-department></company-department>
<resume-interview v-if="curKey == 2"></resume-interview>
<resume-read v-if="curKey == 3"></resume-read>
<resume-read v-if="curKey == 4"></resume-read>
</div>
</a-col>
</a-row>
</a-col>
</a-row>
@@ -26,11 +22,14 @@

<script setup lang="ts">
import { ref, computed, onMounted } from 'vue';
import CompanyBasic from '@/components/company/basic/index.vue'
import CompanyDepartment from '@/components/company/department/index.vue'
import ResumeInterview from '@/components/resume/interview/index.vue'
import ResumeRead from '@/components/resume/read/index.vue'
let companyList = ref<object[]>([{}, {}, {}, {}, {}, {}])
const openKeys = ref<string[]>(['1']);
const selectedKeys = ref<string[]>(['2']);
let menu_list = ref([{ name: '收到的应聘简历', key: 1 }, { name: '邀请面试简历', key: 2 }, { name: '已查看联系方式', key: 3 }, { name: '企业人才库', key: 4 }, { name: '简历回收站', key: 5 }])
let curKey = ref<Number>(1)
const changeKey = (data) => {
curKey.value = data.key;
}
</script>

<style>

+ 10
- 10
src/views/manage/search/index.vue Прегледај датотеку

@@ -3,17 +3,15 @@
<a-row :gutter="[10,10]" type="flex" justify="center">
<a-col span="18">
<a-row>
<a-col span="4">
<a-menu v-model:openKeys="openKeys" v-model:selectedKeys="selectedKeys" style="width: 100%;" mode="inline">
<a-menu-item key="1">简历搜索</a-menu-item>
</a-menu>
<a-col span="4">
<common-left-sider :menu_list="menu_list" :selected_key="[1]"
@changeKey="changeKey"></common-left-sider>
</a-col>
<a-col span="20">
<div style="width: 100%;background-color: #fff;padding: 10px;">
<company-department></company-department>
<resume-search v-if="curKey == 1"></resume-search>
</div>
</a-col>
</a-row>
</a-col>
</a-row>
@@ -22,11 +20,13 @@

<script setup lang="ts">
import { ref, computed, onMounted } from 'vue';
import CompanyBasic from '@/components/company/basic/index.vue'
import CompanyDepartment from '@/components/company/department/index.vue'
import ResumeSearch from '@/components/resume/search/index.vue'
let companyList = ref<object[]>([{}, {}, {}, {}, {}, {}])
const openKeys = ref<string[]>(['1']);
const selectedKeys = ref<string[]>(['2']);
let menu_list = ref([{ name: '简历搜索', key: 1 }])
let curKey = ref<Number>(1)
const changeKey = (data) => {
curKey.value = data.key;
}
</script>

<style>

+ 12
- 11
src/views/manage/user/index.vue Прегледај датотеку

@@ -3,18 +3,16 @@
<a-row :gutter="[10,10]" type="flex" justify="center">
<a-col span="18">
<a-row>
<a-col span="4">
<a-menu v-model:openKeys="openKeys" v-model:selectedKeys="selectedKeys" style="width: 100%;" mode="inline">
<a-menu-item key="1">费用管理</a-menu-item>
<a-menu-item key="2">修改登录密码</a-menu-item>
</a-menu>
<a-col span="4">
<common-left-sider :menu_list="menu_list" :selected_key="[1]"
@changeKey="changeKey"></common-left-sider>
</a-col>
<a-col span="20">
<div style="width: 100%;background-color: #fff;padding: 10px;">
<company-department></company-department>
<user-expense v-if="curKey == 1"></user-expense>
<user-password v-if="curKey == 2"></user-password>
</div>
</a-col>
</a-row>
</a-col>
</a-row>
@@ -23,11 +21,14 @@

<script setup lang="ts">
import { ref, computed, onMounted } from 'vue';
import CompanyBasic from '@/components/company/basic/index.vue'
import CompanyDepartment from '@/components/company/department/index.vue'
import UserExpense from '@/components/user/expense/index.vue'
import UserPassword from '@/components/user/password/index.vue'
let companyList = ref<object[]>([{}, {}, {}, {}, {}, {}])
const openKeys = ref<string[]>(['1']);
const selectedKeys = ref<string[]>(['2']);
let menu_list = ref([{ name: '费用管理', key: 1 },{ name: '修改登录密码', key: 2}])
let curKey = ref<Number>(1)
const changeKey = (data) => {
curKey.value = data.key;
}
</script>

<style>

+ 28
- 24
tsconfig.json Прегледај датотеку

@@ -1,26 +1,30 @@
{
"compilerOptions": {
"target": "ES2020",
"useDefineForClassFields": true,
"module": "ESNext",
"lib": ["ES2020", "DOM", "DOM.Iterable"],
"skipLibCheck": true,
"baseUrl": "./",
"paths": {"@/*": ["src/*"]},
/* Bundler mode */
"moduleResolution": "bundler",
"allowImportingTsExtensions": true,
"resolveJsonModule": true,
"isolatedModules": true,
"noEmit": true,
"jsx": "preserve",
"compilerOptions": {
"target": "ES2020",
"useDefineForClassFields": true,
"module": "ESNext",
"lib": ["ES2020", "DOM", "DOM.Iterable"],
"skipLibCheck": true,
"baseUrl": "./",
"paths": {
"@/*": ["src/*"]
},
/* Bundler mode */
"moduleResolution": "bundler",
"allowImportingTsExtensions": true,
"resolveJsonModule": true,
"isolatedModules": true,
"noEmit": true,
"jsx": "preserve",

/* Linting */
"strict": true,
"noUnusedLocals": true,
"noUnusedParameters": true,
"noFallthroughCasesInSwitch": true
},
"include": ["src/**/*.ts", "src/**/*.tsx", "src/**/*.vue", "src/**/*.d.ts"],
"references": [{ "path": "./tsconfig.node.json" }]
}
/* Linting */
"strict": true,
"noUnusedLocals": true,
"noUnusedParameters": true,
"noFallthroughCasesInSwitch": true
},
"include": ["src/**/*.ts", "src/**/*.tsx", "src/**/*.vue", "src/**/*.d.ts"],
"references": [{
"path": "./tsconfig.node.json"
}]
}

+ 10
- 7
vite.config.ts Прегледај датотеку

@@ -4,10 +4,13 @@ import path from 'path'

// https://vitejs.dev/config/
export default defineConfig({
plugins: [vue()],
resolve: {
alias: {
'@': path.resolve(__dirname, 'src')
}
}
})
plugins: [vue()],
build: {
outDir: 'dist/web'
},
resolve: {
alias: {
'@': path.resolve(__dirname, 'src')
}
}
})

Loading…
Откажи
Сачувај