提交 d72c2d94 authored 作者: 王鹏飞's avatar 王鹏飞

chore: update

上级 f6dcc485
...@@ -14,6 +14,7 @@ ...@@ -14,6 +14,7 @@
"countup.js": "^2.2.0", "countup.js": "^2.2.0",
"element-plus": "^2.2.5", "element-plus": "^2.2.5",
"pinia": "^2.0.14", "pinia": "^2.0.14",
"qs": "^6.10.5",
"vue": "^3.2.37", "vue": "^3.2.37",
"vue-router": "^4.0.16" "vue-router": "^4.0.16"
}, },
...@@ -21,6 +22,7 @@ ...@@ -21,6 +22,7 @@
"@rushstack/eslint-patch": "^1.1.3", "@rushstack/eslint-patch": "^1.1.3",
"@types/blueimp-md5": "^2.18.0", "@types/blueimp-md5": "^2.18.0",
"@types/node": "^17.0.43", "@types/node": "^17.0.43",
"@types/qs": "^6.9.7",
"@vitejs/plugin-vue": "^2.3.3", "@vitejs/plugin-vue": "^2.3.3",
"@vue/eslint-config-typescript": "^11.0.0", "@vue/eslint-config-typescript": "^11.0.0",
"@vue/tsconfig": "^0.1.3", "@vue/tsconfig": "^0.1.3",
...@@ -346,6 +348,12 @@ ...@@ -346,6 +348,12 @@
"integrity": "sha512-jnUpgw8fL9kP2iszfIDyBQtw5Mf4/XSqy0Loc1J9pI14ejL83XcCEvSf50Gs/4ET0I9VCCDoOfufQysj0S66xA==", "integrity": "sha512-jnUpgw8fL9kP2iszfIDyBQtw5Mf4/XSqy0Loc1J9pI14ejL83XcCEvSf50Gs/4ET0I9VCCDoOfufQysj0S66xA==",
"dev": true "dev": true
}, },
"node_modules/@types/qs": {
"version": "6.9.7",
"resolved": "https://registry.npmjs.org/@types/qs/-/qs-6.9.7.tgz",
"integrity": "sha512-FGa1F62FT09qcrueBA6qYTrJPVDzah9a+493+o2PCXsesWHIn27G98TsSMs3WPNbZIEj4+VJf6saSFpvD+3Zsw==",
"dev": true
},
"node_modules/@typescript-eslint/eslint-plugin": { "node_modules/@typescript-eslint/eslint-plugin": {
"version": "5.28.0", "version": "5.28.0",
"resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-5.28.0.tgz", "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-5.28.0.tgz",
...@@ -1134,7 +1142,6 @@ ...@@ -1134,7 +1142,6 @@
"version": "1.0.2", "version": "1.0.2",
"resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.2.tgz", "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.2.tgz",
"integrity": "sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA==", "integrity": "sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA==",
"dev": true,
"dependencies": { "dependencies": {
"function-bind": "^1.1.1", "function-bind": "^1.1.1",
"get-intrinsic": "^1.0.2" "get-intrinsic": "^1.0.2"
...@@ -2434,8 +2441,7 @@ ...@@ -2434,8 +2441,7 @@
"node_modules/function-bind": { "node_modules/function-bind": {
"version": "1.1.1", "version": "1.1.1",
"resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz",
"integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==", "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A=="
"dev": true
}, },
"node_modules/functional-red-black-tree": { "node_modules/functional-red-black-tree": {
"version": "1.0.1", "version": "1.0.1",
...@@ -2447,7 +2453,6 @@ ...@@ -2447,7 +2453,6 @@
"version": "1.1.1", "version": "1.1.1",
"resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.1.1.tgz", "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.1.1.tgz",
"integrity": "sha512-kWZrnVM42QCiEA2Ig1bG8zjoIMOgxWwYCEeNdwY6Tv/cOSeGpcoX4pXHfKUxNKVoArnrEr2e9srnAxxGIraS9Q==", "integrity": "sha512-kWZrnVM42QCiEA2Ig1bG8zjoIMOgxWwYCEeNdwY6Tv/cOSeGpcoX4pXHfKUxNKVoArnrEr2e9srnAxxGIraS9Q==",
"dev": true,
"dependencies": { "dependencies": {
"function-bind": "^1.1.1", "function-bind": "^1.1.1",
"has": "^1.0.3", "has": "^1.0.3",
...@@ -2557,7 +2562,6 @@ ...@@ -2557,7 +2562,6 @@
"version": "1.0.3", "version": "1.0.3",
"resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz",
"integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==", "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==",
"dev": true,
"dependencies": { "dependencies": {
"function-bind": "^1.1.1" "function-bind": "^1.1.1"
}, },
...@@ -2578,7 +2582,6 @@ ...@@ -2578,7 +2582,6 @@
"version": "1.0.3", "version": "1.0.3",
"resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.3.tgz", "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.3.tgz",
"integrity": "sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==", "integrity": "sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==",
"dev": true,
"engines": { "engines": {
"node": ">= 0.4" "node": ">= 0.4"
}, },
...@@ -3200,7 +3203,6 @@ ...@@ -3200,7 +3203,6 @@
"version": "1.12.0", "version": "1.12.0",
"resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.12.0.tgz", "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.12.0.tgz",
"integrity": "sha512-Ho2z80bVIvJloH+YzRmpZVQe87+qASmBUKZDWgx9cu+KDrX2ZDH/3tMy+gXbZETVGs2M8YdxObOh7XAtim9Y0g==", "integrity": "sha512-Ho2z80bVIvJloH+YzRmpZVQe87+qASmBUKZDWgx9cu+KDrX2ZDH/3tMy+gXbZETVGs2M8YdxObOh7XAtim9Y0g==",
"dev": true,
"funding": { "funding": {
"url": "https://github.com/sponsors/ljharb" "url": "https://github.com/sponsors/ljharb"
} }
...@@ -3563,10 +3565,9 @@ ...@@ -3563,10 +3565,9 @@
} }
}, },
"node_modules/qs": { "node_modules/qs": {
"version": "6.10.3", "version": "6.10.5",
"resolved": "https://registry.npmjs.org/qs/-/qs-6.10.3.tgz", "resolved": "https://registry.npmjs.org/qs/-/qs-6.10.5.tgz",
"integrity": "sha512-wr7M2E0OFRfIfJZjKGieI8lBKb7fRCH4Fv5KNPEs7gJ8jadvotdsS08PzOKR7opXhZ/Xkjtt3WF9g38drmyRqQ==", "integrity": "sha512-O5RlPh0VFtR78y79rgcgKK4wbAI0C5zGVLztOIdpWX6ep368q5Hv6XRxDvXuZ9q3C6v+e3n8UfZZJw7IIG27eQ==",
"dev": true,
"dependencies": { "dependencies": {
"side-channel": "^1.0.4" "side-channel": "^1.0.4"
}, },
...@@ -3836,7 +3837,6 @@ ...@@ -3836,7 +3837,6 @@
"version": "1.0.4", "version": "1.0.4",
"resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.0.4.tgz", "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.0.4.tgz",
"integrity": "sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw==", "integrity": "sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw==",
"dev": true,
"dependencies": { "dependencies": {
"call-bind": "^1.0.0", "call-bind": "^1.0.0",
"get-intrinsic": "^1.0.2", "get-intrinsic": "^1.0.2",
...@@ -5000,6 +5000,12 @@ ...@@ -5000,6 +5000,12 @@
"integrity": "sha512-jnUpgw8fL9kP2iszfIDyBQtw5Mf4/XSqy0Loc1J9pI14ejL83XcCEvSf50Gs/4ET0I9VCCDoOfufQysj0S66xA==", "integrity": "sha512-jnUpgw8fL9kP2iszfIDyBQtw5Mf4/XSqy0Loc1J9pI14ejL83XcCEvSf50Gs/4ET0I9VCCDoOfufQysj0S66xA==",
"dev": true "dev": true
}, },
"@types/qs": {
"version": "6.9.7",
"resolved": "https://registry.npmjs.org/@types/qs/-/qs-6.9.7.tgz",
"integrity": "sha512-FGa1F62FT09qcrueBA6qYTrJPVDzah9a+493+o2PCXsesWHIn27G98TsSMs3WPNbZIEj4+VJf6saSFpvD+3Zsw==",
"dev": true
},
"@typescript-eslint/eslint-plugin": { "@typescript-eslint/eslint-plugin": {
"version": "5.28.0", "version": "5.28.0",
"resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-5.28.0.tgz", "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-5.28.0.tgz",
...@@ -5560,7 +5566,6 @@ ...@@ -5560,7 +5566,6 @@
"version": "1.0.2", "version": "1.0.2",
"resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.2.tgz", "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.2.tgz",
"integrity": "sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA==", "integrity": "sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA==",
"dev": true,
"requires": { "requires": {
"function-bind": "^1.1.1", "function-bind": "^1.1.1",
"get-intrinsic": "^1.0.2" "get-intrinsic": "^1.0.2"
...@@ -6445,8 +6450,7 @@ ...@@ -6445,8 +6450,7 @@
"function-bind": { "function-bind": {
"version": "1.1.1", "version": "1.1.1",
"resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz",
"integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==", "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A=="
"dev": true
}, },
"functional-red-black-tree": { "functional-red-black-tree": {
"version": "1.0.1", "version": "1.0.1",
...@@ -6458,7 +6462,6 @@ ...@@ -6458,7 +6462,6 @@
"version": "1.1.1", "version": "1.1.1",
"resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.1.1.tgz", "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.1.1.tgz",
"integrity": "sha512-kWZrnVM42QCiEA2Ig1bG8zjoIMOgxWwYCEeNdwY6Tv/cOSeGpcoX4pXHfKUxNKVoArnrEr2e9srnAxxGIraS9Q==", "integrity": "sha512-kWZrnVM42QCiEA2Ig1bG8zjoIMOgxWwYCEeNdwY6Tv/cOSeGpcoX4pXHfKUxNKVoArnrEr2e9srnAxxGIraS9Q==",
"dev": true,
"requires": { "requires": {
"function-bind": "^1.1.1", "function-bind": "^1.1.1",
"has": "^1.0.3", "has": "^1.0.3",
...@@ -6541,7 +6544,6 @@ ...@@ -6541,7 +6544,6 @@
"version": "1.0.3", "version": "1.0.3",
"resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz",
"integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==", "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==",
"dev": true,
"requires": { "requires": {
"function-bind": "^1.1.1" "function-bind": "^1.1.1"
} }
...@@ -6555,8 +6557,7 @@ ...@@ -6555,8 +6557,7 @@
"has-symbols": { "has-symbols": {
"version": "1.0.3", "version": "1.0.3",
"resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.3.tgz", "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.3.tgz",
"integrity": "sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==", "integrity": "sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A=="
"dev": true
}, },
"http-errors": { "http-errors": {
"version": "2.0.0", "version": "2.0.0",
...@@ -7062,8 +7063,7 @@ ...@@ -7062,8 +7063,7 @@
"object-inspect": { "object-inspect": {
"version": "1.12.0", "version": "1.12.0",
"resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.12.0.tgz", "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.12.0.tgz",
"integrity": "sha512-Ho2z80bVIvJloH+YzRmpZVQe87+qASmBUKZDWgx9cu+KDrX2ZDH/3tMy+gXbZETVGs2M8YdxObOh7XAtim9Y0g==", "integrity": "sha512-Ho2z80bVIvJloH+YzRmpZVQe87+qASmBUKZDWgx9cu+KDrX2ZDH/3tMy+gXbZETVGs2M8YdxObOh7XAtim9Y0g=="
"dev": true
}, },
"once": { "once": {
"version": "1.4.0", "version": "1.4.0",
...@@ -7330,10 +7330,9 @@ ...@@ -7330,10 +7330,9 @@
"dev": true "dev": true
}, },
"qs": { "qs": {
"version": "6.10.3", "version": "6.10.5",
"resolved": "https://registry.npmjs.org/qs/-/qs-6.10.3.tgz", "resolved": "https://registry.npmjs.org/qs/-/qs-6.10.5.tgz",
"integrity": "sha512-wr7M2E0OFRfIfJZjKGieI8lBKb7fRCH4Fv5KNPEs7gJ8jadvotdsS08PzOKR7opXhZ/Xkjtt3WF9g38drmyRqQ==", "integrity": "sha512-O5RlPh0VFtR78y79rgcgKK4wbAI0C5zGVLztOIdpWX6ep368q5Hv6XRxDvXuZ9q3C6v+e3n8UfZZJw7IIG27eQ==",
"dev": true,
"requires": { "requires": {
"side-channel": "^1.0.4" "side-channel": "^1.0.4"
} }
...@@ -7514,7 +7513,6 @@ ...@@ -7514,7 +7513,6 @@
"version": "1.0.4", "version": "1.0.4",
"resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.0.4.tgz", "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.0.4.tgz",
"integrity": "sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw==", "integrity": "sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw==",
"dev": true,
"requires": { "requires": {
"call-bind": "^1.0.0", "call-bind": "^1.0.0",
"get-intrinsic": "^1.0.2", "get-intrinsic": "^1.0.2",
......
...@@ -19,6 +19,7 @@ ...@@ -19,6 +19,7 @@
"countup.js": "^2.2.0", "countup.js": "^2.2.0",
"element-plus": "^2.2.5", "element-plus": "^2.2.5",
"pinia": "^2.0.14", "pinia": "^2.0.14",
"qs": "^6.10.5",
"vue": "^3.2.37", "vue": "^3.2.37",
"vue-router": "^4.0.16" "vue-router": "^4.0.16"
}, },
...@@ -26,6 +27,7 @@ ...@@ -26,6 +27,7 @@
"@rushstack/eslint-patch": "^1.1.3", "@rushstack/eslint-patch": "^1.1.3",
"@types/blueimp-md5": "^2.18.0", "@types/blueimp-md5": "^2.18.0",
"@types/node": "^17.0.43", "@types/node": "^17.0.43",
"@types/qs": "^6.9.7",
"@vitejs/plugin-vue": "^2.3.3", "@vitejs/plugin-vue": "^2.3.3",
"@vue/eslint-config-typescript": "^11.0.0", "@vue/eslint-config-typescript": "^11.0.0",
"@vue/tsconfig": "^0.1.3", "@vue/tsconfig": "^0.1.3",
......
<script setup lang="ts">
import AppLayout from './layout/Index.vue'
// const menus = [
// { title: '发布职位', path: '/hr/posts/job' },
// { title: '校友人才', path: '/hr/alumni' }
// ]
</script>
<template>
<AppLayout>
<AppContainer background="white"></AppContainer>
</AppLayout>
</template>
...@@ -27,13 +27,16 @@ function genMenuClassName(item: MenuType) { ...@@ -27,13 +27,16 @@ function genMenuClassName(item: MenuType) {
</li> </li>
</ul> </ul>
</div> </div>
<div class="app-container-main"><slot></slot></div> <div class="app-container-main">
<slot>
<router-view></router-view>
</slot>
</div>
</div> </div>
</template> </template>
<style lang="scss"> <style lang="scss">
.app-container { .app-container {
padding: 40px 0 30px;
display: flex; display: flex;
align-items: flex-start; align-items: flex-start;
} }
......
...@@ -58,7 +58,7 @@ const fetchList = (isReset = false) => { ...@@ -58,7 +58,7 @@ const fetchList = (isReset = false) => {
// 翻页参数设置 // 翻页参数设置
if (props.hasPagination) { if (props.hasPagination) {
requestParams.page = page.currentPage requestParams.page = page.currentPage
requestParams['per-page'] = page.size requestParams.limit = page.size
} }
// 接口请求之前 // 接口请求之前
if (beforeRequest) { if (beforeRequest) {
...@@ -73,7 +73,7 @@ const fetchList = (isReset = false) => { ...@@ -73,7 +73,7 @@ const fetchList = (isReset = false) => {
return ( return (
httpRequest(requestParams) httpRequest(requestParams)
.then((res: any) => { .then((res: any) => {
const { list = [], total = 0 } = callback ? callback(res.data, requestParams) : res.data || {} const { data: list = [], total = 0 } = callback ? callback(res.data, requestParams) : res.data || {}
page.total = total page.total = total
dataList.value = list dataList.value = list
}) })
......
...@@ -3,7 +3,9 @@ ...@@ -3,7 +3,9 @@
<AppHeader></AppHeader> <AppHeader></AppHeader>
<section class="app-layout-container"> <section class="app-layout-container">
<div class="app-layout-inner"> <div class="app-layout-inner">
<router-view></router-view> <slot>
<router-view></router-view>
</slot>
</div> </div>
</section> </section>
<AppFooter></AppFooter> <AppFooter></AppFooter>
...@@ -24,5 +26,6 @@ import AppFooter from './Footer.vue' ...@@ -24,5 +26,6 @@ import AppFooter from './Footer.vue'
.app-layout-inner { .app-layout-inner {
width: 1200px; width: 1200px;
margin: 0 auto; margin: 0 auto;
padding: 40px 0 30px;
} }
</style> </style>
...@@ -60,16 +60,28 @@ const rows: Record<string, any>[] = [ ...@@ -60,16 +60,28 @@ const rows: Record<string, any>[] = [
}, },
{ {
attrs: { style: 'flex: 0 0 194px;' }, attrs: { style: 'flex: 0 0 194px;' },
title: '实习就业', title: '职业技能培训',
items: [ items: [
{ {
icon: 'https://webapp-pub.ezijing.com/project/saas/icon_5_1.png', icon: 'https://webapp-pub.ezijing.com/project/saas/icon_2_3_1.png',
hoverIcon: 'https://webapp-pub.ezijing.com/project/saas/icon_5_1_hover.png', hoverIcon: 'https://webapp-pub.ezijing.com/project/saas/icon_2_3_1_hover.png',
title: '实习就业平台', title: '数字职业技能培训中心',
href: 'https://www.ezijing.com/services/employment' href: 'https://vst-saas.ezijing.com'
} }
] ]
} }
// {
// attrs: { style: 'flex: 0 0 194px;' },
// title: '实习就业',
// items: [
// {
// icon: 'https://webapp-pub.ezijing.com/project/saas/icon_5_1.png',
// hoverIcon: 'https://webapp-pub.ezijing.com/project/saas/icon_5_1_hover.png',
// title: '实习就业平台',
// href: 'https://www.ezijing.com/services/employment'
// }
// ]
// }
], ],
[ [
{ {
...@@ -119,19 +131,19 @@ const rows: Record<string, any>[] = [ ...@@ -119,19 +131,19 @@ const rows: Record<string, any>[] = [
href: 'https://marywood-learning.ezijing.com' href: 'https://marywood-learning.ezijing.com'
} }
] ]
},
{
attrs: { style: 'flex: 0 0 194px;' },
title: '职业技能培训',
items: [
{
icon: 'https://webapp-pub.ezijing.com/project/saas/icon_2_3_1.png',
hoverIcon: 'https://webapp-pub.ezijing.com/project/saas/icon_2_3_1_hover.png',
title: '数字职业技能培训中心',
href: 'https://vst-saas.ezijing.com'
}
]
} }
// {
// attrs: { style: 'flex: 0 0 194px;' },
// title: '职业技能培训',
// items: [
// {
// icon: 'https://webapp-pub.ezijing.com/project/saas/icon_2_3_1.png',
// hoverIcon: 'https://webapp-pub.ezijing.com/project/saas/icon_2_3_1_hover.png',
// title: '数字职业技能培训中心',
// href: 'https://vst-saas.ezijing.com'
// }
// ]
// }
], ],
[ [
{ {
...@@ -141,13 +153,19 @@ const rows: Record<string, any>[] = [ ...@@ -141,13 +153,19 @@ const rows: Record<string, any>[] = [
icon: 'https://webapp-pub.ezijing.com/project/saas/icon_7_1.png', icon: 'https://webapp-pub.ezijing.com/project/saas/icon_7_1.png',
hoverIcon: 'https://webapp-pub.ezijing.com/project/saas/icon_7_1_hover.png', hoverIcon: 'https://webapp-pub.ezijing.com/project/saas/icon_7_1_hover.png',
title: '企业注册', title: '企业注册',
href: '/hr/company/create' // href: '/hr/company/create'
onClick() {
ElMessage({ message: '暂未开放' })
}
}, },
{ {
icon: 'https://webapp-pub.ezijing.com/project/saas/icon_7_2.png', icon: 'https://webapp-pub.ezijing.com/project/saas/icon_7_2.png',
hoverIcon: 'https://webapp-pub.ezijing.com/project/saas/icon_7_2_hover.png', hoverIcon: 'https://webapp-pub.ezijing.com/project/saas/icon_7_2_hover.png',
title: '招聘岗位', title: '招聘岗位',
href: '/hr/posts/job' // href: '/hr/posts/job'
onClick() {
ElMessage({ message: '暂未开放' })
}
}, },
{ {
className: 'is-blue', className: 'is-blue',
...@@ -161,7 +179,10 @@ const rows: Record<string, any>[] = [ ...@@ -161,7 +179,10 @@ const rows: Record<string, any>[] = [
icon: 'https://webapp-pub.ezijing.com/project/saas/icon_7_4.png', icon: 'https://webapp-pub.ezijing.com/project/saas/icon_7_4.png',
hoverIcon: 'https://webapp-pub.ezijing.com/project/saas/icon_7_4_hover.png', hoverIcon: 'https://webapp-pub.ezijing.com/project/saas/icon_7_4_hover.png',
title: '岗位求职', title: '岗位求职',
href: '/hr/job' // href: '/hr/job'
onClick() {
ElMessage({ message: '暂未开放' })
}
} }
] ]
}, },
...@@ -173,13 +194,19 @@ const rows: Record<string, any>[] = [ ...@@ -173,13 +194,19 @@ const rows: Record<string, any>[] = [
icon: 'https://webapp-pub.ezijing.com/project/saas/icon_7_5.png', icon: 'https://webapp-pub.ezijing.com/project/saas/icon_7_5.png',
hoverIcon: 'https://webapp-pub.ezijing.com/project/saas/icon_7_5_hover.png', hoverIcon: 'https://webapp-pub.ezijing.com/project/saas/icon_7_5_hover.png',
title: '发布项目', title: '发布项目',
href: '/project/create' // href: '/project/create'
onClick() {
ElMessage({ message: '暂未开放' })
}
}, },
{ {
icon: 'https://webapp-pub.ezijing.com/project/saas/icon_7_6.png', icon: 'https://webapp-pub.ezijing.com/project/saas/icon_7_6.png',
hoverIcon: 'https://webapp-pub.ezijing.com/project/saas/icon_7_6_hover.png', hoverIcon: 'https://webapp-pub.ezijing.com/project/saas/icon_7_6_hover.png',
title: '寻找项目', title: '寻找项目',
href: '/project' // href: '/project'
onClick() {
ElMessage({ message: '暂未开放' })
}
} }
] ]
} }
...@@ -262,13 +289,11 @@ const rows: Record<string, any>[] = [ ...@@ -262,13 +289,11 @@ const rows: Record<string, any>[] = [
</template> </template>
<style lang="scss"> <style lang="scss">
.home {
padding-top: 20px;
overflow: hidden;
}
.row { .row {
display: flex; display: flex;
margin: 20px 0; }
.row + .row {
margin-top: 20px;
} }
.row-cell { .row-cell {
flex: 1; flex: 1;
......
import httpRequest from '@/utils/axios'
// 获取校友列表
export function getAlumniList(params: {
project_prefix_arr: []
workplace: string
industry: string
province: string
city: string
}) {
return httpRequest.get('/api/hr/api/v1/alumni-talents', { params })
}
// 获取校友详情
export function getAlumniDetail(params: { id: string }) {
return httpRequest.get(`/api/hr/admin/v1/alumni-tenant/${params.id}`, { params })
}
import type { RouteRecordRaw } from 'vue-router' import type { RouteRecordRaw } from 'vue-router'
import AppLayout from '@/components/layout/Index.vue' import AppLayout from '@/components/layout/Index.vue'
import HRLayout from '@/components/HRLayout.vue'
export const routes: Array<RouteRecordRaw> = [ export const routes: Array<RouteRecordRaw> = [
{ {
path: '/hr/alumni', path: '/hr/alumni',
component: AppLayout, component: HRLayout,
children: [ children: [
{ {
path: '', path: '',
component: () => import('./views/List.vue') component: () => import('./views/List.vue')
}, }
]
},
{
path: '/hr/alumni',
component: AppLayout,
children: [
{ {
path: 'view/:id', path: 'view/:id',
component: () => import('./views/View.vue'), component: () => import('./views/View.vue'),
......
export interface AlumniType {
id: string
sso_id: string
username: string
sex: string
birthday: string
graduating_institution: string
specialty: string
highest_qualification: string
class_id: string
project_prefix: string
province: string
city: string
industry: string
workplace: string
department: string
position: string
created_at: string
updated_at: string
}
<script setup lang="ts"> <script setup lang="ts">
const menus = [ import { sex } from '@/utils/dictionary'
{ title: '发布职位', path: '/hr/posts/job' }, import { getAlumniList } from '../api'
{ title: '校友人才', path: '/hr/alumni' } import type { AlumniType } from '../types'
]
const listOptions = { const listOptions = {
remote: {
httpRequest: getAlumniList,
params: {
project_prefix_arr: ['sofia']
}
},
filters: [ filters: [
{ type: 'input', label: '公司名称', prop: 'name' }, { type: 'input', label: '工作单位', prop: 'workplace' },
{ type: 'select', label: '所在行业', prop: 'type' }, { type: 'select', label: '所在行业', prop: 'industry' },
{ type: 'select', label: '省份', prop: 'education' } { type: 'select', label: '省份', prop: 'province' },
{ type: 'select', label: '城市', prop: 'city' }
], ],
columns: [ columns: [
{ label: '姓名', prop: 'username' }, { label: '姓名', prop: 'username', align: 'center' },
{ label: '性别', prop: 'type' }, {
{ label: '班级', prop: 'class_id' }, label: '性别',
{ label: '项目', prop: 'project_prefix' }, prop: 'sex',
{ label: '省份', prop: 'education' }, align: 'center',
{ label: '城市', prop: 'education' }, computed({ row }: { row: AlumniType }) {
{ label: '所在行业', prop: 'education' }, console.log(row.sex)
{ label: '公司名称', prop: 'education' }, return sex[row.sex] || row.sex
{ label: '操作', prop: 'education' } }
},
{ label: '班级', prop: 'class.name', align: 'center' },
{ label: '项目', prop: 'project_prefix', align: 'center' },
{ label: '省份', prop: 'province', align: 'center' },
{ label: '城市', prop: 'city', align: 'center' },
{ label: '所在行业', prop: 'industry', align: 'center' },
{ label: '工作单位', prop: 'workplace', align: 'center' },
{ label: '操作', slots: 'table-actions', align: 'center' }
], ],
data: [{ username: '哈哈哈' }, { username: '哈哈哈' }] data: [{ username: '哈哈哈' }, { username: '哈哈哈' }]
} }
</script> </script>
<template> <template>
<AppContainer :menus="menus" background="white"> <AppList v-bind="listOptions">
<AppList v-bind="listOptions"> </AppList> <template #table-actions="{ row }">
</AppContainer> <router-link :to="`/hr/alumni/view/${row.id}`">查看</router-link>
</template>
</AppList>
</template> </template>
<style lang="scss" scoped> <style lang="scss" scoped>
......
<script setup lang="ts"> <script setup lang="ts">
const menus = [ import { getAlumniDetail } from '../api'
{ title: '发布职位', path: '/hr/posts/job' }, // import type { AlumniType } from '../types'
{ title: '校友人才', path: '/hr/alumni' }
]
const listOptions = { const props = defineProps<{ id: string }>()
remote: {},
filters: [ const data: any = reactive({
{ type: 'input', label: '岗位名称', prop: 'name' }, id: '',
{ type: 'select', label: '岗位类型', prop: 'type' }, sso_id: '',
{ type: 'select', label: '学历要求', prop: 'education' }, username: '',
{ type: 'select', label: '工作地点', prop: 'work_locations' } sex: '',
], birthday: '',
columns: [ graduating_institution: '',
{ label: '编号', prop: 'name' }, specialty: '',
{ label: '岗位名称', prop: 'name' }, highest_qualification: '',
{ label: '岗位类型', prop: 'type' }, class_id: '',
{ label: '地点', prop: 'work_locations' }, project_prefix: '',
{ label: '学历要求', prop: 'education' }, province: '',
{ label: '薪酬范围', prop: 'education' }, city: '',
{ label: '投递人数', prop: 'education' }, industry: '',
{ label: '状态', prop: 'status' }, workplace: '',
{ label: '操作', prop: 'education' } department: '',
] position: '',
} created_at: '',
updated_at: ''
})
onMounted(() => {
getAlumniDetail({ id: props.id }).then(res => {
Object.assign(data, res.data.detail)
})
})
</script> </script>
<template> <template>
<AppContainer :menus="menus" background="white"> <AppCard>
<AppList v-bind="listOptions"> <div class="alumni-info">
<router-link to="/hr/posts/job/create"> <dl>
<el-button type="primary">发布岗位</el-button> <dt>编号</dt>
</router-link> <dd></dd>
</AppList> </dl>
</AppContainer> <dl>
<dt>姓名</dt>
<dd>{{ data.username }}</dd>
</dl>
<dl>
<dt>所在项目</dt>
<dd>{{ data.project_prefix }}</dd>
</dl>
<dl>
<dt>所在班级</dt>
<dd>{{ data.class?.name }}</dd>
</dl>
<dl>
<dt>省份</dt>
<dd>{{ data.province }}</dd>
</dl>
<dl>
<dt>城市</dt>
<dd>{{ data.city }}</dd>
</dl>
<dl>
<dt>所在行业</dt>
<dd>{{ data.industry }}</dd>
</dl>
<dl>
<dt>工作单位</dt>
<dd>{{ data.workplace }}</dd>
</dl>
</div>
</AppCard>
<AppCard class="company-info">
<h1>企业简介<span>Company Profile</span></h1>
<p class="tips">暂未注册企业</p>
</AppCard>
</template> </template>
<style lang="scss">
.alumni-info {
padding: 24px;
display: grid;
grid-template-columns: repeat(5, 1fr);
dl {
margin: 10px;
text-align: center;
height: 38px;
border-left: 1px dashed #c9c9c9;
}
dl:nth-child(5n + 1) {
border-left: none;
}
dt {
font-size: 14px;
font-weight: 400;
color: #666666;
}
dd {
font-size: 18px;
font-weight: 400;
color: #333333;
}
}
.company-info {
padding: 44px;
margin-top: 20px;
h1 {
font-size: 32px;
font-weight: bold;
line-height: 1;
color: #141414;
padding-bottom: 25px;
border-bottom: 1px solid #ddd;
span {
margin-left: 6px;
font-size: 26px;
font-family: Lato;
font-weight: 400;
line-height: 32px;
color: #666666;
}
}
.tips {
padding: 100px 0;
font-size: 26px;
font-family: Lato;
font-weight: 400;
line-height: 32px;
color: #666666;
text-align: center;
}
}
</style>
import type { RouteRecordRaw } from 'vue-router' import type { RouteRecordRaw } from 'vue-router'
import AppLayout from '@/components/layout/Index.vue' import HRLayout from '@/components/HRLayout.vue'
export const routes: Array<RouteRecordRaw> = [ export const routes: Array<RouteRecordRaw> = [
{ {
path: '/hr/posts', path: '/hr/posts',
component: AppLayout, component: HRLayout,
children: [ children: [
{ path: 'job', component: () => import('./views/Job.vue') }, { path: 'job', component: () => import('./views/Job.vue') },
{ path: 'job/create', component: () => import('./views/JobUpdate.vue') }, { path: 'job/create', component: () => import('./views/JobUpdate.vue') },
......
<script setup lang="ts"> <script setup lang="ts">
import AppList from '@/components/base/AppList.vue' import AppList from '@/components/base/AppList.vue'
import { jobTypeList, educationList } from '@/utils/dictionary' import { jobTypeList, educationList } from '@/utils/dictionary'
const menus = [
{ title: '发布职位', path: '/hr/posts/job' },
{ title: '校友人才', path: '/hr/alumni' }
]
const appList = $ref<InstanceType<typeof AppList> | null>(null) const appList = $ref<InstanceType<typeof AppList> | null>(null)
const listOptions = { const listOptions = {
remote: {}, remote: {},
...@@ -33,25 +30,23 @@ const listOptions = { ...@@ -33,25 +30,23 @@ const listOptions = {
</script> </script>
<template> <template>
<AppContainer :menus="menus" background="white"> <AppList v-bind="listOptions" ref="appList">
<AppList v-bind="listOptions" ref="appList"> <div style="margin: 20px 0">
<div style="margin: 20px 0"> <router-link to="/hr/posts/job/create">
<router-link to="/hr/posts/job/create"> <el-button type="primary">发布岗位</el-button>
<el-button type="primary">发布岗位</el-button> </router-link>
</router-link> </div>
</div> <template #table-actions="{ row }">
<template #table-actions="{ row }"> <router-link :to="`/hr/posts/job/view/${row.id}`" target="_blank">
<router-link :to="`/hr/posts/job/view/${row.id}`" target="_blank"> <el-button link>查看</el-button>
<el-button link>查看</el-button> </router-link>
</router-link> <el-button link>启用</el-button>
<el-button link>启用</el-button> <el-button link>禁用</el-button>
<el-button link>禁用</el-button> <router-link :to="`/hr/posts/job/update/${row.id}`">
<router-link :to="`/hr/posts/job/update/${row.id}`"> <el-button link>编辑</el-button>
<el-button link>编辑</el-button> </router-link>
</router-link> </template>
</template> </AppList>
</AppList>
</AppContainer>
</template> </template>
<style lang="scss" scoped> <style lang="scss" scoped>
......
...@@ -5,11 +5,6 @@ import { createCompany, updateCompany, getCompany } from '../api' ...@@ -5,11 +5,6 @@ import { createCompany, updateCompany, getCompany } from '../api'
import type { JobType } from '../types' import type { JobType } from '../types'
import { jobTypeList, educationList } from '@/utils/dictionary' import { jobTypeList, educationList } from '@/utils/dictionary'
const menus = [
{ title: '发布职位', path: '/hr/posts/job' },
{ title: '校友人才', path: '/hr/alumni' }
]
const props = defineProps<{ id?: string }>() const props = defineProps<{ id?: string }>()
const router = useRouter() const router = useRouter()
...@@ -69,50 +64,48 @@ onMounted(() => { ...@@ -69,50 +64,48 @@ onMounted(() => {
</script> </script>
<template> <template>
<AppContainer :menus="menus" background="white"> <el-form
<el-form ref="formRef"
ref="formRef" :model="form"
:model="form" :rules="rules"
:rules="rules" label-width="90px"
label-width="90px" label-position="left"
label-position="left" size="large"
size="large" style="margin: 80px 290px 60px"
style="margin: 80px 290px 60px" >
> <el-form-item label="岗位名称" prop="name">
<el-form-item label="岗位名称" prop="name"> <el-input v-model="form.name" placeholder="请输入" maxlength="20" />
<el-input v-model="form.name" placeholder="请输入" maxlength="20" /> </el-form-item>
</el-form-item> <el-form-item label="学历要求" prop="education">
<el-form-item label="学历要求" prop="education"> <el-select v-model="form.education" placeholder="请选择" style="width: 100%">
<el-select v-model="form.education" placeholder="请选择" style="width: 100%"> <el-option v-for="item in educationList" :key="item.value" v-bind="item"></el-option>
<el-option v-for="item in educationList" :key="item.value" v-bind="item"></el-option> </el-select>
</el-select> </el-form-item>
</el-form-item> <el-form-item label="岗位类型" prop="type">
<el-form-item label="岗位类型" prop="type"> <el-select v-model="form.type" placeholder="请选择" style="width: 100%">
<el-select v-model="form.type" placeholder="请选择" style="width: 100%"> <el-option v-for="item in jobTypeList" :key="item.value" v-bind="item"></el-option>
<el-option v-for="item in jobTypeList" :key="item.value" v-bind="item"></el-option> </el-select>
</el-select> </el-form-item>
</el-form-item> <el-form-item label="工作地点" prop="work_locations">
<el-form-item label="工作地点" prop="work_locations"> <el-input v-model="form.work_locations" placeholder="请输入" />
<el-input v-model="form.work_locations" placeholder="请输入" /> </el-form-item>
</el-form-item> <el-form-item label="薪酬范围" prop="salary_min">
<el-form-item label="薪酬范围" prop="salary_min"> <el-row>
<el-row> <el-col :span="10">
<el-col :span="10"> <el-input-number :controls="false" step-strictly v-model="form.salary_min" style="width: 100%" />
<el-input-number :controls="false" step-strictly v-model="form.salary_min" style="width: 100%" /> </el-col>
</el-col> <el-col :span="4" style="text-align: center"></el-col>
<el-col :span="4" style="text-align: center"></el-col> <el-col :span="10">
<el-col :span="10"> <el-input-number :controls="false" step-strictly v-model="form.salary_max" style="width: 100%" />
<el-input-number :controls="false" step-strictly v-model="form.salary_max" style="width: 100%" /> </el-col>
</el-col>
</el-row>
</el-form-item>
<el-form-item label="岗位描述" prop="desc">
<el-input type="textarea" v-model="form.desc" :autosize="{ minRows: 6, maxRows: 10 }" maxlength="200" />
</el-form-item>
<el-row justify="center" style="margin: 40px 0 20px">
<el-button type="primary" auto-insert-space @click="onSubmit">发布</el-button>
<el-button auto-insert-space @click="onCancel">取消</el-button>
</el-row> </el-row>
</el-form> </el-form-item>
</AppContainer> <el-form-item label="岗位描述" prop="desc">
<el-input type="textarea" v-model="form.desc" :autosize="{ minRows: 6, maxRows: 10 }" maxlength="200" />
</el-form-item>
<el-row justify="center" style="margin: 40px 0 20px">
<el-button type="primary" auto-insert-space @click="onSubmit">发布</el-button>
<el-button auto-insert-space @click="onCancel">取消</el-button>
</el-row>
</el-form>
</template> </template>
<script setup lang="ts"> <script setup lang="ts">
const menus = [
{ title: '发布职位', path: '/hr/posts/job' },
{ title: '校友人才', path: '/hr/alumni' }
]
const listOptions = { const listOptions = {
remote: {}, remote: {},
columns: [ columns: [
...@@ -17,10 +12,8 @@ const listOptions = { ...@@ -17,10 +12,8 @@ const listOptions = {
</script> </script>
<template> <template>
<AppContainer :menus="menus" background="white"> <h2>岗位详情</h2>
<h2>岗位详情</h2> <AppList v-bind="listOptions">
<AppList v-bind="listOptions"> <template #table-actions> 查看 </template>
<template #table-actions> 查看 </template> </AppList>
</AppList>
</AppContainer>
</template> </template>
import axios from 'axios' import axios from 'axios'
import qs from 'qs'
import { ElMessage } from 'element-plus'
import router from '@/router'
const httpRequest = axios.create({ const httpRequest = axios.create({
baseURL: 'https://learn-api.ezijing.com', // baseURL: 'https://learn-api.ezijing.com',
timeout: 60000, timeout: 60000,
withCredentials: true withCredentials: true,
headers: {
'Content-Type': 'application/x-www-form-urlencoded'
}
}) })
// 请求拦截
httpRequest.interceptors.request.use(
function (config) {
// 权限接口单独签名
// https://gitlab.ezijing.com/root/api-documents/-/blob/master/ezijing_permissions/%E7%AD%BE%E5%90%8D%E9%AA%8C%E8%AF%81.md
if (config.url && /^\/api\/hr/.test(config.url)) {
// 默认参数
const defaultHeaders = {
timestamp: Date.now(),
nonce: Math.random().toString(36).slice(-8),
// 'secret-id': import.meta.env.VITE_SECRET_ID,
// 'secret-key': import.meta.env.VITE_SECRET_KEY,
signature: 'UG7wBenexQhiuD2wpCwuxkU0jqcj006d'
}
// config.headers = Object.assign(config.headers, defaultHeaders)
config.params = Object.assign(config.params, defaultHeaders)
}
if (config.headers?.['Content-Type'] === 'application/x-www-form-urlencoded') {
config.data = qs.stringify(config.data, { skipNulls: true })
}
if (config.headers?.['Content-Type'] === 'multipart/form-data') {
const formData = new window.FormData()
for (const key in config.data) {
formData.append(key, config.data[key])
}
config.data = formData
}
return config
},
function (error) {
return Promise.reject(error)
}
)
// 响应拦截 // 响应拦截
httpRequest.interceptors.response.use( httpRequest.interceptors.response.use(
function (response) { function (response) {
const { data } = response const { data } = response
// 正常返回
if (data.code === 0) {
return data
}
// 未登录 // 未登录
if (data.code === 4001) { if (data.code === 4001) {
location.href = `${import.meta.env.VITE_LOGIN_URL}?rd=${encodeURIComponent(location.href)}` location.href = `${import.meta.env.VITE_LOGIN_URL}?rd=${encodeURIComponent(location.href)}`
return Promise.reject(data)
}
if (data.code === 1 || data.code === 404) {
ElMessage.error(data.message || data.msg)
return Promise.reject(data)
} }
return Promise.reject(data) return data
}, },
function (error) { function (error) {
if (error.response) { if (error.response) {
...@@ -26,7 +68,11 @@ httpRequest.interceptors.response.use( ...@@ -26,7 +68,11 @@ httpRequest.interceptors.response.use(
// 未登录 // 未登录
if (status === 403) { if (status === 403) {
location.href = `${import.meta.env.VITE_LOGIN_URL}?rd=${encodeURIComponent(location.href)}` location.href = `${import.meta.env.VITE_LOGIN_URL}?rd=${encodeURIComponent(location.href)}`
} else if (status === 400) {
// 未授权
router.push('/401')
} else { } else {
ElMessage.error(message)
console.error(`${status}: ${message}`) console.error(`${status}: ${message}`)
} }
} else { } else {
......
...@@ -58,3 +58,12 @@ export const projectType = { ...@@ -58,3 +58,12 @@ export const projectType = {
} }
// 项目类型列表 // 项目类型列表
export const projectTypeList = json2Array(projectType) export const projectTypeList = json2Array(projectType)
// 性别
export const sex = {
'0': '女士',
'1': '先生',
'2': '未知'
}
// 性别
export const sexList = json2Array(sex)
...@@ -17,7 +17,7 @@ export default defineConfig(({ mode }) => { ...@@ -17,7 +17,7 @@ export default defineConfig(({ mode }) => {
dts: true, dts: true,
eslintrc: { enabled: true } eslintrc: { enabled: true }
}), }),
checker({ vueTsc: true, eslint: { lintCommand: 'eslint "./src/**/*.{vue,js,jsx,ts,tsx}"' } }) checker({ eslint: { lintCommand: 'eslint "./src/**/*.{vue,js,jsx,ts,tsx}"' } })
], ],
server: { server: {
open: true, open: true,
...@@ -25,6 +25,14 @@ export default defineConfig(({ mode }) => { ...@@ -25,6 +25,14 @@ export default defineConfig(({ mode }) => {
https: { https: {
key: fs.readFileSync(path.join(__dirname, './https/dev.ezijing.com.key')), key: fs.readFileSync(path.join(__dirname, './https/dev.ezijing.com.key')),
cert: fs.readFileSync(path.join(__dirname, './https/dev.ezijing.com.pem')) cert: fs.readFileSync(path.join(__dirname, './https/dev.ezijing.com.pem'))
},
proxy: {
'/api': 'https://e-saas.ezijing.com/'
// '/api/saas': {
// target: 'https://saas-company-api.ezijing.com/',
// changeOrigin: true,
// rewrite: path => path.replace('/api/saas', '')
// }
} }
}, },
resolve: { resolve: {
......
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论