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

chore: update

上级 0b3132a2
...@@ -8,6 +8,7 @@ import { getSignature } from '@/api/base' ...@@ -8,6 +8,7 @@ import { getSignature } from '@/api/base'
interface Props { interface Props {
modelValue: string | { name: string; url: string }[] modelValue: string | { name: string; url: string }[]
prefix?: string prefix?: string
size?: number
} }
const props = withDefaults(defineProps<Props>(), { const props = withDefaults(defineProps<Props>(), {
...@@ -33,6 +34,10 @@ const showFileList = computed(() => { ...@@ -33,6 +34,10 @@ const showFileList = computed(() => {
// 上传之前 // 上传之前
const handleBeforeUpload = async (file: any) => { const handleBeforeUpload = async (file: any) => {
if (props.size && file.size > props.size) {
ElMessage.error(`文件大小不能超过${props.size / 1024 / 1024}M`)
return false
}
const fileName = file.name const fileName = file.name
const key = props.prefix + md5(fileName + new Date().getTime()) + fileName.substr(fileName.lastIndexOf('.')) const key = props.prefix + md5(fileName + new Date().getTime()) + fileName.substr(fileName.lastIndexOf('.'))
const response: Record<string, any> = await getSignature() const response: Record<string, any> = await getSignature()
...@@ -70,12 +75,16 @@ const handleExceed: UploadProps['onExceed'] = () => { ...@@ -70,12 +75,16 @@ const handleExceed: UploadProps['onExceed'] = () => {
// 删除 // 删除
const handleRemove: UploadProps['onRemove'] = (file, files) => { const handleRemove: UploadProps['onRemove'] = (file, files) => {
if (showFileList.value) {
emit( emit(
'update:modelValue', 'update:modelValue',
files.map((item: any) => { files.map((item: any) => {
return { name: item.name, url: item.url || item.raw.url } return { name: item.name, url: item.url || item.raw.url }
}) })
) )
} else {
emit('update:modelValue', '')
}
} }
// 预览 // 预览
......
...@@ -176,7 +176,15 @@ const rows: Record<string, any>[] = [ ...@@ -176,7 +176,15 @@ const rows: Record<string, any>[] = [
title: '招聘岗位', title: '招聘岗位',
// href: '/hr/posts/job' // href: '/hr/posts/job'
onClick() { onClick() {
ElMessage({ message: '暂未开放' }) if (!user.isLogin) {
location.href = `${import.meta.env.VITE_LOGIN_URL}?rd=${encodeURIComponent(location.href)}`
return
}
if (!user.hasCompany) {
ElMessage({ message: '请先注册您的企业' })
} else {
window.open('/hr/posts/job')
}
} }
}, },
{ {
...@@ -201,10 +209,7 @@ const rows: Record<string, any>[] = [ ...@@ -201,10 +209,7 @@ 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: '暂未开放' })
}
} }
] ]
}, },
......
...@@ -42,9 +42,10 @@ onMounted(() => { ...@@ -42,9 +42,10 @@ onMounted(() => {
/> />
</div> </div>
<div class="project-list" v-loading="loading"> <div class="project-list" v-loading="loading" v-if="dataset.list.length">
<ProjectListItem v-for="item in dataset.list" :key="item.id" :data="item"></ProjectListItem> <ProjectListItem v-for="item in dataset.list" :key="item.id" :data="item"></ProjectListItem>
</div> </div>
<el-empty description="暂无项目" v-else />
</template> </template>
<style lang="scss" scoped> <style lang="scss" scoped>
......
...@@ -14,7 +14,7 @@ const descHtml = computed(() => { ...@@ -14,7 +14,7 @@ const descHtml = computed(() => {
<template> <template>
<div class="project-item"> <div class="project-item">
<router-link :to="`/project/view/${data.id}`" target="_blank"> <router-link :to="`/project/view/${data.id}`" target="_blank">
<img :src="data.logo" class="project-item__pic" lazy /> <img :src="`${data.logo}?x-oss-process=image/resize,m_fill,h_142,w_275`" class="project-item__pic" lazy />
<div class="project-item-main"> <div class="project-item-main">
<div class="project-item__header"> <div class="project-item__header">
<h2>{{ data.name }}</h2> <h2>{{ data.name }}</h2>
...@@ -37,6 +37,7 @@ const descHtml = computed(() => { ...@@ -37,6 +37,7 @@ const descHtml = computed(() => {
<style lang="scss"> <style lang="scss">
.project-item { .project-item {
position: relative; position: relative;
height: 304px;
margin-bottom: 20px; margin-bottom: 20px;
background: #fafafa; background: #fafafa;
border-radius: 6px; border-radius: 6px;
......
...@@ -94,10 +94,10 @@ onMounted(() => { ...@@ -94,10 +94,10 @@ onMounted(() => {
style="margin: 0 290px" style="margin: 0 290px"
> >
<el-form-item label="项目图片" prop="logo"> <el-form-item label="项目图片" prop="logo">
<AppUpload v-model="form.logo" accept="image/*"></AppUpload> <AppUpload v-model="form.logo" :size="1024 * 1024 * 2" accept="image/*"></AppUpload>
</el-form-item> </el-form-item>
<el-form-item label="项目名称" prop="name"> <el-form-item label="项目名称" prop="name">
<el-input v-model="form.name" placeholder="请输入" /> <el-input v-model="form.name" placeholder="请输入" maxlength="50" />
</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%">
...@@ -115,7 +115,8 @@ onMounted(() => { ...@@ -115,7 +115,8 @@ onMounted(() => {
type="textarea" type="textarea"
v-model="form.desc" v-model="form.desc"
placeholder="请输入" placeholder="请输入"
:autosize="{ minRows: 10, maxRows: 20 }" :autosize="{ minRows: 6, maxRows: 10 }"
maxlength="200"
></el-input> ></el-input>
</el-form-item> </el-form-item>
<el-form-item label="联系人" prop="contact"> <el-form-item label="联系人" prop="contact">
...@@ -125,7 +126,7 @@ onMounted(() => { ...@@ -125,7 +126,7 @@ onMounted(() => {
<el-input v-model="form.contact_mobile" placeholder="请输入" /> <el-input v-model="form.contact_mobile" placeholder="请输入" />
</el-form-item> </el-form-item>
<el-form-item label="项目文件" prop="documents"> <el-form-item label="项目文件" prop="documents">
<AppUpload v-model="form.documents"></AppUpload> <AppUpload v-model="form.documents" :size="1024 * 1024 * 10" :limit="3"></AppUpload>
</el-form-item> </el-form-item>
<el-row justify="center" style="margin: 60px 0 20px"> <el-row justify="center" style="margin: 60px 0 20px">
<el-button type="primary" auto-insert-space @click="onSubmit" style="border-radius: 10px">发布项目</el-button> <el-button type="primary" auto-insert-space @click="onSubmit" style="border-radius: 10px">发布项目</el-button>
......
<script setup lang="ts"> <script setup lang="ts">
import dayjs from 'dayjs' import dayjs from 'dayjs'
import { Picture } from '@element-plus/icons-vue'
import { getProject } from '../api' import { getProject } from '../api'
import type { ProjectType } from '../types' import type { ProjectType } from '../types'
import { projectType } from '@/utils/dictionary' import { projectType } from '@/utils/dictionary'
...@@ -55,7 +56,9 @@ function formatDate(timeStr: string) { ...@@ -55,7 +56,9 @@ function formatDate(timeStr: string) {
<el-button size="default">编辑</el-button> <el-button size="default">编辑</el-button>
</router-link> </router-link>
</div> </div>
<a :href="data.logo" target="_blank"><img :src="data.logo" class="project-info__pic" lazy /></a> <a :href="data.logo" target="_blank"
><img :src="`${data.logo}?x-oss-process=image/resize,m_fill,h_155,w_242`" class="project-info__pic" lazy
/></a>
<div class="project-info__forms"> <div class="project-info__forms">
<dl> <dl>
<dt>项目名称</dt> <dt>项目名称</dt>
...@@ -92,6 +95,7 @@ function formatDate(timeStr: string) { ...@@ -92,6 +95,7 @@ function formatDate(timeStr: string) {
<ul> <ul>
<li v-for="(item, index) in files" :key="index"> <li v-for="(item, index) in files" :key="index">
<a :href="item.url" target="_blank"> <a :href="item.url" target="_blank">
<Picture />
<p>{{ item.name }}</p> <p>{{ item.name }}</p>
<span>预览</span> <span>预览</span>
</a> </a>
...@@ -156,13 +160,25 @@ function formatDate(timeStr: string) { ...@@ -156,13 +160,25 @@ function formatDate(timeStr: string) {
row-gap: 40px; row-gap: 40px;
} }
li { li {
display: flex; // display: flex;
align-items: center; // align-items: center;
justify-content: center; // justify-content: center;
text-align: center; // text-align: center;
height: 170px; height: 170px;
background: #f8f8f8; background: #f8f8f8;
border-radius: 20px; border-radius: 20px;
::v-deep(a) {
height: 100%;
display: flex;
flex-direction: column;
align-items: center;
justify-content: center;
}
svg {
color: #b80140;
width: 2em;
height: 2em;
}
p { p {
padding: 14px 0; padding: 14px 0;
font-size: 18px; font-size: 18px;
......
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论