提交 760da05b authored 作者: 刘旭's avatar 刘旭

同步代码

上级 ba4f9dff
......@@ -22,6 +22,7 @@
"pinia-plugin-persistedstate": "^3.2.0",
"sass": "^1.64.1",
"vue": "^3.3.4",
"vue-dompurify-html": "^4.1.4",
"vue-router": "4"
},
"devDependencies": {
......@@ -43,7 +44,6 @@
"unplugin-vue-components": "^0.25.1",
"vite": "^4.4.5",
"vite-plugin-eslint": "^1.8.1",
"vite-plugin-mock": "2.9.6",
"vite-plugin-vue-setup-extend": "^0.4.0",
"vue-tsc": "^1.8.5"
}
......
差异被折叠。
......@@ -17,7 +17,11 @@
<img src="../assets/img/logo.jpg" width="150" height="60" />
<div class="menu-list">
<template v-for="item in menuList" :key="item.link">
<router-link :to="{ path: item.link }" @click="handleClick(item)">
<router-link
:to="{ path: item.link }"
style="text-decoration: none"
@click="handleClick(item)"
>
<el-link
class="item"
:underline="false"
......
......@@ -64,14 +64,6 @@ const editorConfig = {
console.log(`${file.name} 上传成功`, res, imgList.value)
}
}
},
// 单个文件上传失败
onFailed(file: File, res: any) {
console.log(`${file.name} 上传失败`, res)
},
// 上传错误,或者触发 timeout 超时
onError(file: File, err: any, res: any) {
console.log(`${file.name} 上传出错`, err, res)
}
},
uploadVideo: {
......
<template>
<div v-loading="loading" class="flx-center">
<div class="container">
<div class="breadcrumb">
<span class="current">当前位置:</span>
<el-breadcrumb :separator-icon="ArrowRight">
<el-breadcrumb-item :to="{ path: previousPage }">{{ previousName }}</el-breadcrumb-item>
<el-breadcrumb-item>{{ route.query?.FTITLE }}</el-breadcrumb-item>
</el-breadcrumb>
</div>
<el-divider />
<div style="min-height: 400px">
<div v-dompurify-html="html"></div>
<!-- <el-empty description="暂无数据" /> -->
</div>
</div>
</div>
</template>
<script setup lang="ts">
import { menuList } from '@/Layout/config'
import { ArrowRight } from '@element-plus/icons-vue'
import { getCommonDetail } from '@/services/api/common'
const router = useRouter()
const route = useRoute()
const previousPage = ref()
const previousName = ref()
const loading = ref(true)
const html = ref()
onMounted(async () => {
// 获取上个跳转的路由
previousPage.value = router.options.history.state.back as string
previousName.value = menuList.filter((item: any) => item.link === previousPage.value)[0]?.name
const { FormType, FID } = route.query
const res: any = await getCommonDetail({ FormType, FID })
if (res.code === 200) {
loading.value = false
html.value = res.data.FRICHTEXT_Tag
}
})
</script>
<style lang="scss" scoped>
.container {
width: 1316px;
background: #ffffff;
padding: 46px 36px 54px;
margin-top: 26px;
box-sizing: border-box;
.breadcrumb {
font-size: 12px;
font-weight: 400;
color: #666666;
display: flex;
align-items: center;
.current {
margin-right: 8px;
}
}
}
</style>
<template>
<div class="content-container">
<div v-for="(item, index) in list" :key="index" class="content-item">
<img :src="item.url" height="238" />
<div class="detail">{{ item.name }}</div>
<div v-for="(item, index) in list" :key="index" class="content-item" @click="change(item)">
<img :src="baseURL + '/' + item?.FPICTURE" height="238" />
<div class="detail nowrap-ellipsis" :title="item.FTITLE">{{ item.FTITLE }}</div>
</div>
</div>
</template>
<script setup lang="ts">
import { baseURL } from '@/services'
defineProps({
list: {
type: Array,
default: () => []
} as any
})
const emits = defineEmits(['change'])
const change = (row: any) => {
// console.log(row)
emits('change', row)
}
</script>
<style lang="scss" scoped>
......@@ -36,9 +45,9 @@ defineProps({
border-radius: 12px 12px 0px 0px;
display: block; /* 将图片设置为块级元素 */
max-width: 100%; /* 保证图片在其父元素内部自适应大小 */
height: auto; /* 保持图片的宽高比 */
}
.detail {
width: calc(1316px / 3 - 16px);
height: 42px;
line-height: 42px;
background: linear-gradient(90deg, #177cfa 0%, #177cfa 100%);
......@@ -46,7 +55,8 @@ defineProps({
color: #ffffff;
font-size: 20px;
font-weight: 400;
color: #ffffff;
padding: 0 20px;
box-sizing: border-box;
}
}
}
......
......@@ -29,6 +29,10 @@ defineProps({
isMore: {
type: Boolean,
default: false
},
minHeight: {
type: Number,
default: 200
}
})
</script>
......@@ -47,6 +51,7 @@ defineProps({
}
.policy-content {
width: 100%;
min-height: 200px;
display: flex;
flex-direction: column;
align-items: start;
......@@ -85,7 +90,7 @@ defineProps({
white-space: nowrap;
overflow: hidden;
text-overflow: ellipsis;
max-width: 554px;
max-width: 470px;
}
img {
margin-left: 4px;
......
......@@ -3,6 +3,8 @@ import App from './App.vue'
import router from './routers'
import store from './stores'
import VueDOMPurifyHTML from 'vue-dompurify-html'
import '@/styles/reset.scss'
import '@/styles/common.scss'
......@@ -10,5 +12,6 @@ const app = createApp(App)
app.use(router)
app.use(store)
app.use(VueDOMPurifyHTML)
app.mount('#app')
export default [
{
url: '/api2/getUsers',
method: 'get',
response: () => {
return {
code: 200,
message: 'ok',
data: {
'rows|10': [
{
id: '@guid',
name: '@cname',
'age|20-30': 23,
'job|1': ['前端工程师', '后端工程师', 'UI工程师', '需求工程师']
}
]
}
}
}
}
]
const randomJobList = () => {
let list = [
{
id: '@guid',
key: '地标',
list: [
{ name: '全深圳', show: true },
{ name: '南山区', show: false },
{ name: '罗湖区', show: false },
{ name: '福田区', show: false },
{ name: '坪山区', show: false },
{ name: '盐田区', show: false },
{ name: '宝安区', show: false },
{ name: '龙岗区', show: false },
{ name: '龙华区', show: false },
{ name: '光明区', show: false },
{ name: '大鹏新区', show: false },
{ name: '深汕合作区', show: false }
],
isShow: false,
show: false
}
] as any
for (let index = 0; index < 6; index++) {
if (!index) {
list.push({
id: '@guid',
key: '@ctitle(3,4)',
'list|55': [{ name: '@ctitle', show: false }],
isShow: true,
show: false
})
} else {
list.push({
id: '@guid',
key: '@ctitle(3,4)',
'list|3-8': [{ name: '@ctitle', show: false }],
isShow: false,
show: false
})
}
}
return list
}
export default [
{
url: '/api2/jobList',
methods: 'get',
response: () => {
return {
code: 200,
message: 'ok',
data: randomJobList()
}
}
}
]
......@@ -86,24 +86,16 @@ const routes = [
{
path: '/counterpartAssistance',
component: () => import('@/views/counterpartAssistance/index.vue')
},
{
path: '/commonDetail',
component: () => import('@/components/commonDetail.vue')
}
]
},
{
path: '/RichTextEditor',
component: () => import('@/views/editor/index.vue')
},
{
path: '/home1',
component: () => import('@/views/home/index1.vue')
},
{
path: '/job',
component: () => import('@/views/job/index.vue')
},
{
path: '/details',
component: () => import('@/views/home/details.vue')
}
//{
//配置404页面
......@@ -116,7 +108,11 @@ const routes = [
// 路由
const router = createRouter({
history: createWebHashHistory(),
routes
routes,
scrollBehavior(to, from, savedPosition) {
// 滚动到顶部
return { top: 0 }
}
})
// 导出
export default router
import request from '@/services'
// /LQKJ.K3.NSJYBSystem.WebApi.WebApiService.PictureTextHome,LQKJ.K3.NSJYBSystem.WebApi.common.kdsvc
export const getCommon = (data: any) => {
return request.post(
'/LQKJ.K3.NSJYBSystem.WebApi.WebApiService.PictureTextHome,LQKJ.K3.NSJYBSystem.WebApi.common.kdsvc',
data
)
}
export const getCommonList = (data: any) => {
return request.post(
'/LQKJ.K3.NSJYBSystem.WebApi.WebApiService.PictureTextHome,LQKJ.K3.NSJYBSystem.WebApi.common.kdsvc',
data
)
}
export const getCommonDetail = (data: any) => {
return request.post(
'/LQKJ.K3.NSJYBSystem.WebApi.WebApiService.SelectDetails,LQKJ.K3.NSJYBSystem.WebApi.common.kdsvc',
data
)
}
......@@ -8,7 +8,7 @@ import request from '@/services'
*/
export const getRichText = (data: any) => {
return request.post(
'/K3Cloud/LQKJ.K3.NSJYBSystem.WebApi.WebApiEditService.SelectRichText,LQKJ.K3.NSJYBSystem.WebApi.common.kdsvc',
'/LQKJ.K3.NSJYBSystem.WebApi.WebApiEditService.SelectRichText,LQKJ.K3.NSJYBSystem.WebApi.common.kdsvc',
data
)
}
......@@ -21,7 +21,7 @@ export const getRichText = (data: any) => {
*/
export const uploadRichText = (data: any) => {
return request.post(
'/K3Cloud/LQKJ.K3.NSJYBSystem.WebApi.WebApiEditService.UpRichText,LQKJ.K3.NSJYBSystem.WebApi.common.kdsvc',
'/LQKJ.K3.NSJYBSystem.WebApi.WebApiEditService.UpRichText,LQKJ.K3.NSJYBSystem.WebApi.common.kdsvc',
data,
{ IsError: true }
)
......
import request from '@/services'
export const getPositionList = (data: any) => {
return request.post('https://rms.junrunrenli.com/api/4Government/rpoPost/selectByParameter', data)
}
export const getFlexibleEmploym = (data: any) => {
return request.post(
'/LQKJ.K3.NSJYBSystem.WebApi.WebApiService.FlexibleEmploymentHome,LQKJ.K3.NSJYBSystem.WebApi.common.kdsvc',
data
)
}
export const getFlexibleEmploymList = (data: any) => {
return request.post(
'/LQKJ.K3.NSJYBSystem.WebApi.WebApiService.SeFlexibleEmployment,LQKJ.K3.NSJYBSystem.WebApi.common.kdsvc',
data
)
}
import request from '@/services'
export const getUsers = () => {
return request.get('/api2/getUsers')
}
export const getJobList = () => {
return request.get('/api2/jobList')
}
export const getPositionList = (data: any) => {
return request.post('/api/4Government/rpoPost/selectByParameter', data)
export const getHome = () => {
return request.post(
'/LQKJ.K3.NSJYBSystem.WebApi.WebApiService.SeHomePage,LQKJ.K3.NSJYBSystem.WebApi.common.kdsvc'
)
}
......@@ -3,7 +3,7 @@ import request from '@/services'
// 获取验证码
export const getCode = (Phone: string) => {
return request.post(
'/K3Cloud/LQKJ.K3.NSJYBSystem.WebApi.WebApiEditService.Verification,LQKJ.K3.NSJYBSystem.WebApi.common.kdsvc',
'/LQKJ.K3.NSJYBSystem.WebApi.WebApiEditService.Verification,LQKJ.K3.NSJYBSystem.WebApi.common.kdsvc',
{ Phone }
)
}
......@@ -11,7 +11,7 @@ export const getCode = (Phone: string) => {
// 登录注册
export const loginSign = (data: any) => {
return request.post(
'/K3Cloud/LQKJ.K3.NSJYBSystem.WebApi.WebApiEditService.LoginSign,LQKJ.K3.NSJYBSystem.WebApi.common.kdsvc',
'/LQKJ.K3.NSJYBSystem.WebApi.WebApiEditService.LoginSign,LQKJ.K3.NSJYBSystem.WebApi.common.kdsvc',
data
)
}
......@@ -3,14 +3,14 @@ import request from '@/services'
// 查询
export const getPolicy = (data: any) => {
return request.post(
'/K3Cloud/LQKJ.K3.NSJYBSystem.WebApi.WebApiService.SePolicyNoticeHome,LQKJ.K3.NSJYBSystem.WebApi.common.kdsvc',
'/LQKJ.K3.NSJYBSystem.WebApi.WebApiService.SePolicyNoticeHome,LQKJ.K3.NSJYBSystem.WebApi.common.kdsvc',
data
)
}
export const getPolicyList = (data: any) => {
return request.post(
'/K3Cloud/LQKJ.K3.NSJYBSystem.WebApi.WebApiService.SePolicyNotice,LQKJ.K3.NSJYBSystem.WebApi.common.kdsvc',
'/LQKJ.K3.NSJYBSystem.WebApi.WebApiService.SePolicyNotice,LQKJ.K3.NSJYBSystem.WebApi.common.kdsvc',
data
)
}
import request from '@/services'
// 查询
export const getSkillTraining = (data: any) => {
return request.post(
'/LQKJ.K3.NSJYBSystem.WebApi.WebApiService.SeSkillTraininHome,LQKJ.K3.NSJYBSystem.WebApi.common.kdsvc',
data
)
}
export const getPolicyList = (data: any) => {
return request.post(
'/LQKJ.K3.NSJYBSystem.WebApi.WebApiService.SePolicyNotice,LQKJ.K3.NSJYBSystem.WebApi.common.kdsvc',
data
)
}
......@@ -41,7 +41,7 @@ let IsError = false
const config = {
// 默认地址
baseURL: '',
baseURL,
// 设置超时时间
timeout: RequestEnums.TIMEOUT as number,
// 跨域时候允许携带凭证
......
.skill-container {
width: 100%;
.container {
width: 1316px;
text-align: center;
img {
width: 100%;
margin-top: 24px;
border-radius: 12px;
}
.train-list {
display: flex;
margin: 24px 0;
border: 1px solid #177cfa;
border-radius: 8px;
.train-item {
flex: 0 0 20%;
height: 58px;
line-height: 58px;
border-right: 1px solid #177cfa;
font-size: 24px;
font-weight: 500;
color: #177cfa;
&:nth-child(5) {
border-right: 0;
}
}
}
}
}
<template>
<div>为什么,我不理解</div>
<div v-loading="loading" class="skill-container flx-center">
<div class="container">
<img :src="baseURL + '/' + commonData?.HbData?.[0].FPOSTERPICTURE" height="560" />
<div style="margin: 24px 0 360px">
<contentBlock :list="commonData?.GaQnData" @change="handleChange" />
</div>
</div>
</div>
</template>
<script setup lang="ts"></script>
<script setup lang="ts">
import { baseURL } from '@/services'
import { getCommon } from '@/services/api/common'
import contentBlock from '@/components/contentBlock.vue'
<style scoped></style>
const router = useRouter()
const loading = ref(true)
const queryList = ref({ pageIndex: 1, pageSize: 10, FormType: 'K' })
const commonData: any = ref()
const handleChange = (row: any) => {
router.push({ path: '/commonDetail', query: { FID: row.FID, FormType: 'K', FTITLE: row.FTITLE } })
}
const init = async () => {
const res: any = await getCommon(queryList.value)
if (res.code === 200) {
commonData.value = res.data
loading.value = false
}
}
init()
</script>
<style lang="scss" scoped>
@import './index.scss';
</style>
<template>
<div class="skill-container flx-center">
<div v-loading="loading" class="skill-container flx-center">
<div class="container">
<img :src="imgUrl1" height="560" />
<img :src="baseURL + '/' + commonData?.HbData?.[0].FPOSTERPICTURE" height="560" />
<div style="margin: 24px 0 360px">
<contentBlock :list="trainDetailList" />
<contentBlock :list="commonData?.GaQnData" @change="handleChange" />
</div>
</div>
</div>
</template>
<script setup lang="ts">
import { imgUrl1 } from '@/assets/imgUrl'
import Frame690 from '@/assets/img/Frame690(2).png'
import { baseURL } from '@/services'
import { getCommon } from '@/services/api/common'
import contentBlock from '@/components/contentBlock.vue'
const trainDetailList = [
{ url: Frame690, name: '失业登记(含户籍、异地务工人员)' },
{ url: Frame690, name: '就业困难人员和零就业家庭人员认定' },
{ url: Frame690, name: '就业困难人员灵活就业社保补贴申领' },
{ url: Frame690, name: '用人单位招用就业困难人员申请补贴和奖励' },
{ url: Frame690, name: '吸纳脱贫人口就业补贴' },
{ url: Frame690, name: '吸纳脱贫人口社保和岗位补贴' },
{ url: Frame690, name: '吸纳退役军人一次性就业补贴' }
]
const router = useRouter()
const loading = ref(true)
const queryList = ref({ pageIndex: 1, pageSize: 10, FormType: 'F' })
const commonData: any = ref()
const handleChange = (row: any) => {
router.push({ path: '/commonDetail', query: { FID: row.FID, FormType: 'F', FTITLE: row.FTITLE } })
}
const init = async () => {
const res: any = await getCommon(queryList.value)
if (res.code === 200) {
commonData.value = res.data
loading.value = false
}
}
init()
</script>
<style lang="scss" scoped>
......
......@@ -6,7 +6,7 @@
<span class="poliy-item-order" :class="index > 2 ? 'poliy-item-postorder' : ''">{{
index + 1
}}</span>
<el-link>{{ item.detail }}</el-link>
<el-link>{{ item.FTITLE }}</el-link>
<img v-show="index < 3" src="@/assets/img/icon-new.png" width="28" height="15" alt="" />
</div>
<div v-show="isMore" class="flexible-footer">
......
<template>
<div class="flexible-container">
<div v-loading="loading" class="flexible-container">
<div class="container">
<img :src="imgUrl" height="560" />
<img :src="baseURL + '/' + flexibleData?.HbData?.[0].FPOSTERPICTURE" height="560" />
<div class="flexible-list">
<flexible
v-for="(item, index) in flexibleNameList"
:key="index"
:title="item.name"
:list="flexibleList"
:list="flexibleData?.[item.field]"
is-more
/>
</div>
......@@ -21,7 +21,7 @@
<el-tab-pane
v-for="(item, index) in tabsList"
:key="index"
v-loading="loading"
v-loading="flexibleLoading"
:label="item.label"
:name="item.name"
class="hot-position-tab-pane"
......@@ -76,8 +76,8 @@
</template>
<script setup lang="ts">
import { imgUrl } from '@/assets/imgUrl'
import { getPositionList } from '@/services/api/home'
import { baseURL } from '@/services'
import { getPositionList, getFlexibleEmploym } from '@/services/api/flexibleEmploym'
import flexible from '@/views/flexibleEmploym/components/flexible.vue'
const tabsList = [
......@@ -100,11 +100,18 @@ const listQuery = reactive({
})
const positionList = ref([] as any)
const loading = ref(false)
const activeName = ref(0)
const searchValue = ref('')
const loading = ref(true)
const flexibleLoading = ref(false)
const queryList = ref({ pageIndex: 1, pageSize: 10 })
const flexibleData: any = ref()
const flexibleNameList = [{ name: '公告' }, { name: '政策' }, { name: '新闻' }]
const flexibleNameList = [
{ name: '公告', field: 'GgData' },
{ name: '政策', field: 'ZcData' },
{ name: '新闻', field: 'XwData' }
]
const flexibleList = [
{ detail: '关于协助做好2022年农村电商“省级精英训练营”宣传发动有关工作的通知' },
......@@ -121,22 +128,32 @@ const flexibleList = [
const handleChange = (name: number) => {
listQuery.obj.postName = tabsList[name].label
init()
initPosition()
}
const search = () => {
init()
initPosition()
// console.log(searchValue.value)
}
const initPosition = async () => {
flexibleLoading.value = true
const res: any = await getPositionList(listQuery)
if (res.code === 200) {
flexibleLoading.value = false
positionList.value = res.data.obj
}
}
const init = async () => {
loading.value = true
const res: any = await getPositionList(listQuery)
const res: any = await getFlexibleEmploym(queryList.value)
if (res.code === 200) {
console.log(res)
flexibleData.value = res.data
loading.value = false
positionList.value = res.data.obj
initPosition()
}
}
init()
</script>
......
......@@ -49,7 +49,7 @@
border-radius: 12px 12px 0px 0px;
display: block; /* 将图片设置为块级元素 */
max-width: 100%; /* 保证图片在其父元素内部自适应大小 */
height: auto; /* 保持图片的宽高比 */
// height: auto; /* 保持图片的宽高比 */
}
.recruit-item-detail {
width: 318px;
......@@ -113,6 +113,7 @@
margin: -5px;
margin-top: 24px;
.scene-item {
cursor: pointer;
flex: 0 0 calc(16.666% - 10px); /* 让每个盒子占据六分之一的宽度,并且减去间距 */
margin: 5px; /* 设置为盒子之间的间隔 */
box-sizing: border-box; /* 让盒子的边框和填充算入盒子的总宽度 */
......
import Frame690 from '@/assets/img/Frame690.png'
import Frame691 from '@/assets/img/Frame690(1).png'
import Frame692 from '@/assets/img/Frame690(2).png'
import Frame693 from '@/assets/img/Frame690(3).png'
import Frame694 from '@/assets/img/Frame690(4).png'
import Frame695 from '@/assets/img/Frame690(5).png'
import Frame696 from '@/assets/img/Frame690(6).png'
import Frame697 from '@/assets/img/Frame690(7).png'
import gonggao from '@/assets/img/icon-gonggao.png'
import zhengnc from '@/assets/img/icon-zhengnc.png'
import xinwen from '@/assets/img/icon-xinwen.png'
import zhao from '@/assets/img/icon-zhao.png'
import chuang from '@/assets/img/icon-chuang.png'
import gao from '@/assets/img/icon-gao.png'
import gang from '@/assets/img/icon-gang.png'
import tui from '@/assets/img/icon-tui.png'
import jia from '@/assets/img/icon-jia.png'
import can from '@/assets/img/icon-can.png'
export const imgList = [
{ name: '粤海街道专题', url: Frame690 },
{ name: '南头街道专题', url: Frame691 },
{ name: '西丽街道专题', url: Frame692 },
{ name: '沙河街道专题', url: Frame693 },
{ name: '南山街道专题', url: Frame694 },
{ name: '蛇口街道专题', url: Frame695 },
{ name: '招商街道专题 ', url: Frame696 },
{ name: '桃源街道专题 ', url: Frame697 }
]
export const employmentList = [
{ name: '公告', url: gonggao },
{ name: '政策', url: zhengnc },
{ name: '新闻', url: xinwen },
{ name: '招聘', url: zhao }
]
export const sceneList = [
{ name: '创业人员', url: chuang, link: '/innovationEntrepreneurship' },
{ name: '高校学生', url: gao, link: '/collegeStudents' },
{ name: '港澳青年', url: gang, link: '/macaoYouthEmployment' },
{ name: '退役军人', url: tui, link: '/veterans' },
{ name: '家政', url: jia, link: '/housekeepingServices' },
{ name: '残疾人', url: can, link: '/disabilitiesEmployment' }
]
<template>
<div class="home-container">
<div v-loading="loading" class="home-container">
<div style="position: relative; width: 100%">
<img src="@/assets/img/Banner.png" height="480" style="width: 100%" />
<img
:src="baseURL + '/' + homeData?.HbData?.[0].FPOSTERPICTURE"
height="480"
style="width: 100%"
/>
<div class="img-ct banner">
<div>深圳市南山区公共就业服务平台</div>
<div>
......@@ -13,16 +17,16 @@
<div class="home-tp flx-direction-column">
<div class="n-title">公共就业服务政策</div>
<div class="flx-justify-between policy-bottom">
<policy title="南山就业政策公告" :list="policyList" />
<policy title="南山就业活动" :list="policyList" />
<policy title="南山就业政策公告" :list="homeData?.GgData" />
<policy title="南山就业活动" :list="homeData?.HdData" />
</div>
</div>
<div class="home-tp">
<div class="n-title">街道办招聘</div>
<div class="recruit">
<div v-for="(item, index) in imgList" :key="index" class="recruit-item">
<img :src="item.url" width="318" height="130" />
<div class="recruit-item-detail">{{ item.name }}</div>
<div v-for="(item, index) in homeData?.JdData" :key="index" class="recruit-item">
<img :src="baseURL + '/' + item.FSTREETPICTURE" width="318" height="130" />
<div class="recruit-item-detail">{{ item.FNAME }}</div>
</div>
</div>
</div>
......@@ -90,9 +94,11 @@
<div class="container" style="margin: 64px 60px">
<div class="n-title" style="text-align: center">重点就业情景</div>
<div class="scene">
<div v-for="(item, index) in sceneList" :key="index" class="scene-item">
<img :src="item.url" width="24" height="24" style="margin-left: 4px" />
<div>{{ item.name }}</div>
<div v-for="(item, index) in sceneList" :key="index">
<router-link :to="{ path: item.link }" style="text-decoration: none" class="scene-item">
<img :src="item.url" width="24" height="24" style="margin-left: 4px" />
<div>{{ item.name }}</div>
</router-link>
</div>
</div>
</div>
......@@ -100,60 +106,23 @@
</template>
<script setup lang="ts">
import { baseURL } from '@/services'
import { getHome } from '@/services/api/home'
import { employmentList, sceneList } from './index'
import policy from '../../components/policy.vue'
import Frame690 from '@/assets/img/Frame690.png'
import Frame691 from '@/assets/img/Frame690(1).png'
import Frame692 from '@/assets/img/Frame690(2).png'
import Frame693 from '@/assets/img/Frame690(3).png'
import Frame694 from '@/assets/img/Frame690(4).png'
import Frame695 from '@/assets/img/Frame690(5).png'
import Frame696 from '@/assets/img/Frame690(6).png'
import Frame697 from '@/assets/img/Frame690(7).png'
import gonggao from '@/assets/img/icon-gonggao.png'
import zhengnc from '@/assets/img/icon-zhengnc.png'
import xinwen from '@/assets/img/icon-xinwen.png'
import zhao from '@/assets/img/icon-zhao.png'
import chuang from '@/assets/img/icon-chuang.png'
import gao from '@/assets/img/icon-gao.png'
import gang from '@/assets/img/icon-gang.png'
import tui from '@/assets/img/icon-tui.png'
import jia from '@/assets/img/icon-jia.png'
import can from '@/assets/img/icon-can.png'
const policyList = [
{ detail: '关于协助做好2022年农村电商“省级精英训练营”宣传发动有关工作的通知' },
{ detail: '关于协助做好2022年农村电商“省级精英训练营”宣传发动有关工作的通知' },
{ detail: '关于协助做好2022年农村电商“省级精英训练营”宣传发动有关工作的通知' },
{ detail: '深圳市创业带动就业补贴办事指南' },
{ detail: '深圳市创业带动就业补贴办事指南' },
{ detail: '关于协助做好2022年农村电商“省级精英训练营”宣传发动有关工作的通知' }
]
const loading = ref(true)
const homeData = ref()
const imgList = [
{ name: '粤海街道专题', url: Frame690 },
{ name: '南头街道专题', url: Frame691 },
{ name: '西丽街道专题', url: Frame692 },
{ name: '沙河街道专题', url: Frame693 },
{ name: '南山街道专题', url: Frame694 },
{ name: '蛇口街道专题', url: Frame695 },
{ name: '招商街道专题 ', url: Frame696 },
{ name: '桃源街道专题 ', url: Frame697 }
]
const init = async () => {
loading.value = false
const res: any = await getHome()
if (res.code === 200) {
homeData.value = res.data
}
}
const employmentList = [
{ name: '公告', url: gonggao },
{ name: '政策', url: zhengnc },
{ name: '新闻', url: xinwen },
{ name: '招聘', url: zhao }
]
const sceneList = [
{ name: '创业人员', url: chuang },
{ name: '高校学生', url: gao },
{ name: '港澳青年', url: gang },
{ name: '退役军人', url: tui },
{ name: '家政', url: jia },
{ name: '残疾人', url: can }
]
init()
</script>
<style lang="scss" scoped>
......
<template>
<div class="skill-container flx-center">
<div v-loading="loading" class="skill-container flx-center">
<div class="container">
<img :src="imgUrl1" height="560" />
<img :src="baseURL + '/' + commonData?.HbData?.[0].FPOSTERPICTURE" height="560" />
<div style="margin: 24px 0 360px">
<contentBlock :list="trainDetailList" />
<contentBlock :list="commonData?.GaQnData" @change="handleChange" />
</div>
</div>
</div>
</template>
<script setup lang="ts">
import { imgUrl1 } from '@/assets/imgUrl'
import Frame690 from '@/assets/img/Frame690(2).png'
import { baseURL } from '@/services'
import { getCommon } from '@/services/api/common'
import contentBlock from '@/components/contentBlock.vue'
const trainDetailList = [
{ url: Frame690, name: '家政服务企业商业保险补贴' },
{ url: Frame690, name: '员工制家政服务企业备案' },
{ url: Frame690, name: '员工制家政服务企业社保补贴' },
{ url: Frame690, name: '员工制家政服务企业吸纳就业补贴' }
]
const router = useRouter()
const loading = ref(true)
const queryList = ref({ pageIndex: 1, pageSize: 10, FormType: 'J' })
const commonData: any = ref()
const handleChange = (row: any) => {
router.push({ path: '/commonDetail', query: { FID: row.FID, FormType: 'J', FTITLE: row.FTITLE } })
}
const init = async () => {
const res: any = await getCommon(queryList.value)
if (res.code === 200) {
commonData.value = res.data
loading.value = false
}
}
init()
</script>
<style lang="scss" scoped>
......
.skill-container {
width: 100%;
.container {
width: 1316px;
text-align: center;
img {
width: 100%;
margin-top: 24px;
border-radius: 12px;
}
.train-list {
display: flex;
margin: 24px 0;
border: 1px solid #177cfa;
border-radius: 8px;
.train-item {
flex: 0 0 20%;
height: 58px;
line-height: 58px;
border-right: 1px solid #177cfa;
font-size: 24px;
font-weight: 500;
color: #177cfa;
&:nth-child(5) {
border-right: 0;
}
}
}
}
}
<template>
<div>人力资源服务</div>
<div v-loading="loading" class="skill-container flx-center">
<div class="container">
<img :src="baseURL + '/' + commonData?.HbData?.[0].FPOSTERPICTURE" height="560" />
<div style="margin: 24px 0 360px">
<contentBlock :list="commonData?.GaQnData" @change="handleChange" />
</div>
</div>
</div>
</template>
<script setup lang="ts"></script>
<script setup lang="ts">
import { baseURL } from '@/services'
import { getCommon } from '@/services/api/common'
import contentBlock from '@/components/contentBlock.vue'
<style scoped></style>
const router = useRouter()
const loading = ref(true)
const queryList = ref({ pageIndex: 1, pageSize: 10, FormType: 'L' })
const commonData: any = ref()
const handleChange = (row: any) => {
router.push({ path: '/commonDetail', query: { FID: row.FID, FormType: 'L', FTITLE: row.FTITLE } })
}
const init = async () => {
const res: any = await getCommon(queryList.value)
if (res.code === 200) {
commonData.value = res.data
loading.value = false
}
}
init()
</script>
<style lang="scss" scoped>
@import './index.scss';
</style>
<template>
<div class="skill-container flx-center">
<div v-loading="loading" class="skill-container flx-center">
<div class="container">
<img :src="imgUrl1" height="560" />
<img :src="baseURL + '/' + commonData?.HbData?.[0].FPOSTERPICTURE" height="560" />
<div style="margin: 24px 0 360px">
<contentBlock :list="trainDetailList" />
<contentBlock :list="commonData?.GaQnData" @change="handleChange" />
</div>
</div>
</div>
</template>
<script setup lang="ts">
import { imgUrl1 } from '@/assets/imgUrl'
import Frame690 from '@/assets/img/Frame690(2).png'
import { baseURL } from '@/services'
import { getCommon } from '@/services/api/common'
import contentBlock from '@/components/contentBlock.vue'
const trainDetailList = [
{ url: Frame690, name: '自主创业人员身份核实' },
{ url: Frame690, name: '创业社保补贴' },
{ url: Frame690, name: '初创企业补贴 (一次性创业资助)' },
{ url: Frame690, name: '创业场租补贴 (创业租金补贴)' },
{ url: Frame690, name: '创业孵化补贴' }
]
const router = useRouter()
const loading = ref(true)
const queryList = ref({ pageIndex: 1, pageSize: 10, FormType: 'G' })
const commonData: any = ref()
const handleChange = (row: any) => {
router.push({ path: '/commonDetail', query: { FID: row.FID, FormType: 'G', FTITLE: row.FTITLE } })
}
const init = async () => {
const res: any = await getCommon(queryList.value)
if (res.code === 200) {
commonData.value = res.data
loading.value = false
}
}
init()
</script>
<style lang="scss" scoped>
......
<template>
<div class="job-container">
<search />
<el-card class="screen-group" shadow="never">
<div v-for="item in jobList" :key="item.id" class="screen-list">
<div class="screen-type">{{ item.key }}</div>
<div class="screen-item" :class="item.show ? 'isShow' : ''">
<el-button
v-for="(col, i) in item.list"
:key="i"
:type="col.show ? 'primary' : ''"
text
@click="change(item, i)"
>{{ col.name }}</el-button
>
</div>
<div v-show="item.isShow" class="stretch" @click="collapse(item)">
{{ item.show ? '收起' : '更多' }}
</div>
</div>
<div v-show="tagList.length">
<el-divider />
<div class="tag-list">
<div class="tag-left">
<div class="tag-type">已选条件:</div>
<div class="tag-item">
<el-tag
v-for="(item, index) in tagList"
:key="index"
closable
@close="close(index)"
>{{ item.key + ':' + item.name }}</el-tag
>
</div>
</div>
<el-button type="danger" round plain size="small" :icon="Delete" @click="clear"
>清空</el-button
>
</div>
</div>
</el-card>
<el-card shadow="never" style="width: 1316px; margin: 20px 0; border-radius: 8px">
<el-link type="primary" :underline="false">综合排序</el-link>
</el-card>
</div>
</template>
<script setup lang="ts">
import { Search, Delete } from '@element-plus/icons-vue'
import { getJobList } from '@/services/api/home'
import search from '@/components/search.vue'
const jobList = ref()
const tagList = ref([] as any)
const collapse = (item: any) => {
item.show = !item.show
}
const change = (row: any, i: number) => {
row.list.map((item: any, index: number) => {
if (index === i) {
const tag: any = tagList.value.filter((tag: any) => tag.id === row.id)
if (index) {
if (tag.length) {
tagList.value.map((tag: any) => {
if (tag.id == row.id) {
tag.name = item.name
}
})
} else {
tagList.value.push({ id: row.id, key: row.key, name: item.name, type: '' })
}
} else {
if (tag.length) {
let Index = 0
tagList.value.map((tag: any, tagIndex: number) => {
if (tag.id == row.id) {
Index = tagIndex
}
})
tagList.value.splice(Index, 1)
}
}
item.show = true
} else {
item.show = false
}
})
}
const clear = () => (tagList.value = [])
const close = (index: number) => {
tagList.value.splice(index, 1)
}
const init = async () => {
const res: any = await getJobList()
if (res.code === 200) {
res.data.map((item: any) => {
item.list[0].show = true
})
jobList.value = res.data
}
}
init()
</script>
<style lang="scss" scoped>
.job-container {
height: 100%;
display: flex;
flex-direction: row;
flex-direction: column;
align-items: center;
.screen-group {
width: 1316px;
border-radius: 8px;
.screen-list {
display: flex;
justify-content: flex-start;
align-items: flex-start;
margin-top: 18px;
.screen-type {
display: inline-block;
width: 80px;
font-size: 14px;
margin-top: 7px;
}
.screen-item {
flex: 1;
height: 28px;
overflow: hidden;
.el-button {
margin-left: 0px;
margin-right: 8px;
}
}
.isShow {
height: auto !important;
}
.stretch {
width: 60px;
height: 20px;
background-color: #ebe7e7;
text-align: center;
line-height: 20px;
cursor: pointer;
border-radius: 2px;
color: #888585;
margin-top: 7px;
font-size: 14px;
user-select: none; // 文字不可被选中
}
}
&:first-child {
margin-top: 0;
}
.tag-list {
display: flex;
align-items: center;
justify-content: space-between;
.tag-left {
display: flex;
align-items: center;
.tag-type {
display: inline-block;
font-size: 14px;
width: 80px;
}
.tag-item {
.el-tag {
margin-right: 8px;
}
}
}
}
}
}
</style>
<template>
<div class="skill-container flx-center">
<div v-loading="loading" class="skill-container flx-center">
<div class="container">
<img :src="imgUrl1" height="560" />
<img :src="baseURL + '/' + commonData?.HbData?.[0].FPOSTERPICTURE" height="560" />
<div style="margin: 24px 0 360px">
<contentBlock :list="trainDetailList" />
<contentBlock :list="commonData?.GaQnData" @change="handleChange" />
</div>
</div>
</div>
</template>
<script setup lang="ts">
import { imgUrl1 } from '@/assets/imgUrl'
import Frame690 from '@/assets/img/Frame690(2).png'
import { baseURL } from '@/services'
import { getCommon } from '@/services/api/common'
import contentBlock from '@/components/contentBlock.vue'
const trainDetailList = [
{ url: Frame690, name: '就业见习补贴' },
{ url: Frame690, name: '港澳台青年实习补助' },
{ url: Frame690, name: '大湾区青年就业计划生活补助' },
{ url: Frame690, name: '求职创业补贴' },
{ url: Frame690, name: '高校毕业生职业技能培训补贴' },
{ url: Frame690, name: '高校毕业生灵活就业社保补贴' },
{ url: Frame690, name: '小微企业社保补贴' },
{ url: Frame690, name: '职业技能鉴定 (评价)补贴' },
{ url: Frame690, name: '市外职业院校学生来深顶岗实习补贴' }
]
const router = useRouter()
const loading = ref(true)
const queryList = ref({ pageIndex: 1, pageSize: 10, FormType: 'E' })
const commonData: any = ref()
const handleChange = (row: any) => {
router.push({ path: '/commonDetail', query: { FID: row.FID, FormType: 'E', FTITLE: row.FTITLE } })
}
const init = async () => {
const res: any = await getCommon(queryList.value)
if (res.code === 200) {
commonData.value = res.data
loading.value = false
}
}
init()
</script>
<style lang="scss" scoped>
......
<template>
<div class="policy-container flx-center" v-loading="loading">
<div v-loading="loading" class="policy-container flx-center">
<div class="container">
<img
:src="baseURL + '/' + policyData?.HbData?.[0].FPOSTERPICTURE"
......@@ -24,18 +24,6 @@ import { baseURL } from '@/services'
import { getPolicy } from '@/services/api/policy'
import policy from '@/components/policy.vue'
const policyList = [
{ detail: '关于协助做好2022年农村电商“省级精英训练营”宣传发动有关工作的通知' },
{ detail: '关于协助做好2022年农村电商“省级精英训练营”宣传发动有关工作的通知' },
{ detail: '关于协助做好2022年农村电商“省级精英训练营”宣传发动有关工作的通知' },
{ detail: '深圳市创业带动就业补贴办事指南' },
{ detail: '深圳市创业带动就业补贴办事指南' },
{ detail: '关于协助做好2022年农村电商“省级精英训练营”宣传发动有关工作的通知' },
{ detail: '关于协助做好2022年农村电商“省级精英训练营”宣传发动有关工作的通知' },
{ detail: '关于协助做好2022年农村电商“省级精英训练营”宣传发动有关工作的通知' },
{ detail: '关于协助做好2022年农村电商“省级精英训练营”宣传发动有关工作的通知' },
{ detail: '关于协助做好2022年农村电商“省级精英训练营”宣传发动有关工作的通知' }
]
const searchValue = ref()
const loading = ref(true)
const queryList = ref({ pageIndex: 1, pageSize: 10 })
......
......@@ -34,9 +34,9 @@
display: none;
position: absolute;
top: 0;
left: 444px;
left: 443px;
z-index: 10;
width: 904px;
width: 873.5px;
height: 418px;
border-radius: 12px;
box-sizing: border-box;
......@@ -53,14 +53,14 @@
}
}
.street-list {
width: 872px;
width: 873px;
height: 418px;
// margin-left: 16px;
display: flex;
flex-wrap: wrap;
img {
max-width: 100%;
height: auto;
display: block; /* 将图片设置为块级元素 */
max-width: 100%; /* 保证图片在其父元素内部自适应大小 */
}
}
}
......
<template>
<div class="skill-container flx-center">
<div v-loading="loading" class="skill-container flx-center">
<div class="container">
<img :src="imgUrl1" height="560" />
<img :src="baseURL + '/' + skillTrainData?.HbData?.[0].FPOSTERPICTURE" height="560" />
<div class="train-list">
<div v-for="(item, index) in trainList" :key="index" class="train-item">
{{ item.name }}
</div>
</div>
<div style="margin-bottom: 360px">
<contentBlock :list="trainDetailList" />
<contentBlock :list="skillTrainData?.JcAqData" />
</div>
</div>
</div>
</template>
<script setup lang="ts">
import { imgUrl1 } from '@/assets/imgUrl'
import Frame690 from '@/assets/img/Frame690(2).png'
import { baseURL } from '@/services'
import { getSkillTraining } from '@/services/api/skillTraining'
import contentBlock from '@/components/contentBlock.vue'
const loading = ref(true)
const queryList = ref({ pageIndex: 1, pageSize: 10 })
const skillTrainData: any = ref()
const trainList = [
{ name: '基础安全培训' },
{ name: '专业技能培训' },
......@@ -27,13 +30,16 @@ const trainList = [
{ name: '团队管理培训' }
]
const trainDetailList = [
{ url: Frame690, name: '技能培训' },
{ url: Frame690, name: '技能培训' },
{ url: Frame690, name: '技能培训' },
{ url: Frame690, name: '技能培训' },
{ url: Frame690, name: '技能培训' }
]
const init = async () => {
const res: any = await getSkillTraining(queryList.value)
if (res.code === 200) {
console.log(res)
skillTrainData.value = res.data
loading.value = false
}
}
init()
</script>
<style lang="scss" scoped>
......
.skill-container {
width: 100%;
.container {
width: 1316px;
text-align: center;
img {
width: 100%;
margin-top: 24px;
border-radius: 12px;
}
.train-list {
display: flex;
margin: 24px 0;
border: 1px solid #177cfa;
border-radius: 8px;
.train-item {
flex: 0 0 20%;
height: 58px;
line-height: 58px;
border-right: 1px solid #177cfa;
font-size: 24px;
font-weight: 500;
color: #177cfa;
&:nth-child(5) {
border-right: 0;
}
}
}
}
}
<template>
<div>退役军人</div>
<div v-loading="loading" class="skill-container flx-center">
<div class="container">
<img :src="baseURL + '/' + commonData?.HbData?.[0].FPOSTERPICTURE" height="560" />
<div style="margin: 24px 0 360px">
<contentBlock :list="commonData?.GaQnData" @change="handleChange" />
</div>
</div>
</div>
</template>
<script setup lang="ts">
const route = useRoute()
console.log(route)
import { baseURL } from '@/services'
import { getCommon } from '@/services/api/common'
import contentBlock from '@/components/contentBlock.vue'
const router = useRouter()
const loading = ref(true)
const queryList = ref({ pageIndex: 1, pageSize: 10, FormType: 'I' })
const commonData: any = ref()
const handleChange = (row: any) => {
router.push({ path: '/commonDetail', query: { FID: row.FID, FormType: 'I', FTITLE: row.FTITLE } })
}
const init = async () => {
const res: any = await getCommon(queryList.value)
if (res.code === 200) {
commonData.value = res.data
loading.value = false
}
}
init()
</script>
<style scoped></style>
<style lang="scss" scoped>
@import './index.scss';
</style>
......@@ -15,8 +15,7 @@
"paths": {
"@/*": ["src/*"]
},
"lib": ["esnext", "dom", "dom.iterable", "scripthost"],
"types": ["pinia-plugin-persist"]
"lib": ["esnext", "dom", "dom.iterable", "scripthost"]
},
"include": [
"src/**/*.ts",
......
......@@ -7,15 +7,14 @@ export {}
declare module 'vue' {
export interface GlobalComponents {
CommonDetail: typeof import('./../src/components/commonDetail.vue')['default']
ContentBlock: typeof import('./../src/components/contentBlock.vue')['default']
CustomSelect: typeof import('./../src/components/customSelect.vue')['default']
ElAvatar: typeof import('element-plus/es')['ElAvatar']
ElBreadcrumb: typeof import('element-plus/es')['ElBreadcrumb']
ElBreadcrumbItem: typeof import('element-plus/es')['ElBreadcrumbItem']
ElButton: typeof import('element-plus/es')['ElButton']
ElCard: typeof import('element-plus/es')['ElCard']
ElCarousel: typeof import('element-plus/es')['ElCarousel']
ElCarouselItem: typeof import('element-plus/es')['ElCarouselItem']
ElCheckbox: typeof import('element-plus/es')['ElCheckbox']
ElCol: typeof import('element-plus/es')['ElCol']
ElConfigProvider: typeof import('element-plus/es')['ElConfigProvider']
ElContainer: typeof import('element-plus/es')['ElContainer']
ElDescriptions: typeof import('element-plus/es')['ElDescriptions']
......@@ -30,7 +29,6 @@ declare module 'vue' {
ElFormItem: typeof import('element-plus/es')['ElFormItem']
ElHeader: typeof import('element-plus/es')['ElHeader']
ElIcon: typeof import('element-plus/es')['ElIcon']
ElImage: typeof import('element-plus/es')['ElImage']
ElInput: typeof import('element-plus/es')['ElInput']
ElLink: typeof import('element-plus/es')['ElLink']
ElMain: typeof import('element-plus/es')['ElMain']
......@@ -39,12 +37,10 @@ declare module 'vue' {
ElOption: typeof import('element-plus/es')['ElOption']
ElPagination: typeof import('element-plus/es')['ElPagination']
ElRate: typeof import('element-plus/es')['ElRate']
ElRow: typeof import('element-plus/es')['ElRow']
ElScrollbar: typeof import('element-plus/es')['ElScrollbar']
ElSelect: typeof import('element-plus/es')['ElSelect']
ElTabPane: typeof import('element-plus/es')['ElTabPane']
ElTabs: typeof import('element-plus/es')['ElTabs']
ElTag: typeof import('element-plus/es')['ElTag']
IEpArrowRight: typeof import('~icons/ep/arrow-right')['default']
IEpCaretBottom: typeof import('~icons/ep/caret-bottom')['default']
IEpCaretTop: typeof import('~icons/ep/caret-top')['default']
......@@ -54,13 +50,11 @@ declare module 'vue' {
IEpOfficeBuilding: typeof import('~icons/ep/office-building')['default']
IEpSearch: typeof import('~icons/ep/search')['default']
IEpView: typeof import('~icons/ep/view')['default']
NSelect: typeof import('./../src/components/n-select.vue')['default']
Policy: typeof import('./../src/components/policy.vue')['default']
RichTextEditor: typeof import('./../src/components/RichTextEditor.vue')['default']
RouterLink: typeof import('vue-router')['RouterLink']
RouterView: typeof import('vue-router')['RouterView']
Search: typeof import('./../src/components/search.vue')['default']
Select: typeof import('./../src/components/select.vue')['default']
VerificationCode: typeof import('./../src/components/verificationCode.vue')['default']
}
export interface ComponentCustomProperties {
......
......@@ -14,7 +14,6 @@ import { ElementPlusResolver } from 'unplugin-vue-components/resolvers'
// Vue3 setup 语法糖下定义组件名称 <script lang="ts" setup name="home">
import VueSetupExtend from 'vite-plugin-vue-setup-extend'
// 引入viteMockServe 配置mock
import { viteMockServe } from 'vite-plugin-mock'
import eslintPlugin from 'vite-plugin-eslint'
export default defineConfig({
......@@ -24,9 +23,6 @@ export default defineConfig({
eslintPlugin({
include: ['src/**/*.ts', 'src/**/*.vue', 'src/*.ts', 'src/*.vue']
}),
viteMockServe({
mockPath: 'src/mock/'
}),
// 配置自动装载配置
AutoImport({
// 生成配置文件,如果是ts项目,通常我们会把声明文件放在根目录/types中,注意,这个文件夹需要先建好,否则可能导致等下无法往里生成auto-imports.d.ts文件
......@@ -78,15 +74,6 @@ export default defineConfig({
host: '0.0.0.0',
// 设置代理
proxy: {
'/api2': {
target: 'http://127.0.0.1:5173/',
changeOrigin: true,
rewrite: path => path.replace(/^\/api2/, '')
},
'/api': {
target: 'https://rms.junrunrenli.com',
changeOrigin: true
},
'/K3Cloud': {
target: 'http://192.168.1.168',
changeOrigin: true
......
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论