u
This commit is contained in:
1 parent
f310336188
commit
5221d1cc91
12 files changed
+280
-166
No files matched your search
@@ -8,9 +8,9 @@ import Header from './components/header.vue'
|
|||||||
<div class="content">
|
<div class="content">
|
||||||
<RouterView />
|
<RouterView />
|
||||||
</div>
|
</div>
|
||||||
<!-- <footer class="footer">
|
<footer class="footer">
|
||||||
footer
|
TODO
|
||||||
</footer> -->
|
</footer>
|
||||||
</div>
|
</div>
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
@@ -23,7 +23,8 @@ import Header from './components/header.vue'
|
|||||||
}
|
}
|
||||||
|
|
||||||
.footer {
|
.footer {
|
||||||
margin-top: 32px;
|
background-color: #1f1f1f;
|
||||||
|
border-top: 1px solid rgb(232.9, 232.9, 232.9);
|
||||||
height: 100px;
|
height: 100px;
|
||||||
display: flex;
|
display: flex;
|
||||||
align-items: center;
|
align-items: center;
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
import type { DashboardData } from '@/types/post'
|
import type { DashboardData, PostCategory, PostTag } from '@/types/post'
|
||||||
import type { AddPostParams, DeletePostParams, Post, PostEditorForm, QueryPostParams, UpdatePostParams, UpdatePostStatusParams } from '@/types/post/editor'
|
import type { AddPostParams, DeletePostParams, Post, PostEditorForm, QueryPostParams, UpdatePostParams, UpdatePostStatusParams } from '@/types/post/editor'
|
||||||
import { httpGet, httpPostJson } from '@/request/utils'
|
import { httpGet, httpPostJson } from '@/request/utils'
|
||||||
|
|
||||||
@@ -29,3 +29,10 @@ export function deletePostApi(params: DeletePostParams) {
|
|||||||
export function getDashboardDataApi() {
|
export function getDashboardDataApi() {
|
||||||
return httpGet<DashboardData>(`/post/dashboard`)
|
return httpGet<DashboardData>(`/post/dashboard`)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
export function getPostTagApi() {
|
||||||
|
return httpGet<PostTag[]>('/post/tag')
|
||||||
|
}
|
||||||
|
export function getPostCategoryApi() {
|
||||||
|
return httpGet<PostCategory[]>('/post/category')
|
||||||
|
}
|
||||||
@@ -1,6 +0,0 @@
|
|||||||
import type { PostTag } from '@/types/post/tag'
|
|
||||||
import { httpGet, httpPostJson } from '@/request/utils'
|
|
||||||
|
|
||||||
export function getPostTagApi() {
|
|
||||||
return httpGet<PostTag[]>('/post/tag')
|
|
||||||
}
|
|
||||||
@@ -16,3 +16,11 @@ export interface DashboardData {
|
|||||||
viewChart: DashboradChart[]
|
viewChart: DashboradChart[]
|
||||||
typeChart: DashboradChart[]
|
typeChart: DashboradChart[]
|
||||||
}
|
}
|
||||||
|
export interface PostTag {
|
||||||
|
id: number
|
||||||
|
name: string
|
||||||
|
}
|
||||||
|
export interface PostCategory {
|
||||||
|
id: number
|
||||||
|
name: string
|
||||||
|
}
|
||||||
@@ -1,4 +0,0 @@
|
|||||||
export interface PostTag {
|
|
||||||
id: number
|
|
||||||
name: string
|
|
||||||
}
|
|
||||||
@@ -15,7 +15,7 @@ const dataResult = ref<BasePageResult<any>>({
|
|||||||
<div v-if="loading">
|
<div v-if="loading">
|
||||||
<CustomLoading />
|
<CustomLoading />
|
||||||
</div>
|
</div>
|
||||||
<CustomEmpty v-else-if="dataResult.total === 0" title="🍵 帖子空空如也" sub-title="快来创建第一个贴子吧">
|
<CustomEmpty v-else-if="dataResult.total === 0" title="🍵 帖子空空如也" sub-title="快来创建第一个贴子吧" :in-container="true">
|
||||||
<template #extra>
|
<template #extra>
|
||||||
<el-button type="primary">
|
<el-button type="primary">
|
||||||
创建帖子
|
创建帖子
|
||||||
|
|||||||
@@ -1,26 +1,77 @@
|
|||||||
<script lang="ts" setup>
|
<script lang="ts" setup>
|
||||||
import Nav from './components/nav.vue' // 导航栏组件
|
import type { CollapseModelValue } from 'element-plus'
|
||||||
import PostList from './components/post-list.vue' // 帖子列表组件
|
import { ref } from 'vue'
|
||||||
import Sidebar from './components/sidebar.vue' // 推荐组件
|
|
||||||
|
import SvgIcon from '@/components/SvgIcon.vue'
|
||||||
|
|
||||||
|
const activeNames = ref(['1'])
|
||||||
|
|
||||||
|
function handleChange(val: CollapseModelValue) {
|
||||||
|
console.log(val)
|
||||||
|
}
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
<template>
|
<template>
|
||||||
<div class="post">
|
<div class="post-wrapper">
|
||||||
<Nav class="nav" />
|
<div class="sidebar">
|
||||||
<PostList class="post-list" />
|
<el-collapse v-model="activeNames" expand-icon-position="left">
|
||||||
<Sidebar class="sidebar" />
|
<el-collapse-item title="标签" name="1">
|
||||||
|
<ul class="sidebar-tags">
|
||||||
|
<li class="sidebar-tag">
|
||||||
|
<SvgIcon icon="streamline-color:earth-airplane" :size="18" />
|
||||||
|
<span class="sidebar-tag-text">空运</span>
|
||||||
|
</li>
|
||||||
|
</ul>
|
||||||
|
</el-collapse-item>
|
||||||
|
</el-collapse>
|
||||||
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
<style lang="scss" scoped>
|
<style lang="scss" scoped>
|
||||||
.post {
|
.post-wrapper {
|
||||||
display: flex;
|
display: flex;
|
||||||
padding: 0px 60px;
|
padding: 0px 240px;
|
||||||
width: 100%;
|
background-color: #fff;
|
||||||
}
|
.sidebar {
|
||||||
.nav {
|
background-color: #fff;
|
||||||
width: 200px;
|
height: calc(100vh - var(--header-height));
|
||||||
|
font-size: 16px;
|
||||||
|
flex-shrink: 0;
|
||||||
|
border-right: 1px solid rgb(232.9, 232.9, 232.9);
|
||||||
|
position: sticky;
|
||||||
|
top: var(--header-height);
|
||||||
|
align-self: flex-start;
|
||||||
|
width: 240px;
|
||||||
|
padding: 0px 16px;
|
||||||
|
|
||||||
|
.sidebar-tags {
|
||||||
|
display: flex;
|
||||||
|
flex-direction: column;
|
||||||
|
gap: 4px;
|
||||||
|
|
||||||
|
.sidebar-tag {
|
||||||
|
height: 32px;
|
||||||
|
display: inline-flex;
|
||||||
|
width: 100%;
|
||||||
|
align-items: center;
|
||||||
|
border-radius: 4px;
|
||||||
|
cursor: pointer;
|
||||||
|
padding: 0px 16px;
|
||||||
|
font-size: 16px;
|
||||||
|
|
||||||
|
&:hover {
|
||||||
|
background-color: #f2f2f2;
|
||||||
|
}
|
||||||
|
|
||||||
|
.sidebar-tag-text {
|
||||||
|
margin-left: 12px;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
.sidebar {
|
.sidebar {
|
||||||
width: 250px;
|
width: 250px;
|
||||||
margin-left: 20px;
|
margin-left: 20px;
|
||||||
|
|||||||
@@ -1,18 +1,15 @@
|
|||||||
<script lang="ts" setup>
|
<script lang="ts" setup>
|
||||||
import type { FormInstance } from 'element-plus'
|
import type { FormInstance } from 'element-plus'
|
||||||
import type { PostEditorForm } from '@/types/post/editor'
|
import type { PostEditorForm } from '@/types/post/editor'
|
||||||
import type { PostTag } from '@/types/post/tag'
|
import type { PostCategory, PostTag } from '@/types/post/index'
|
||||||
import type { UploadImageResponse } from '@/utils/file'
|
import type { UploadImageResponse } from '@/utils/file'
|
||||||
import { ElMessage } from 'element-plus'
|
import { ElMessage } from 'element-plus'
|
||||||
import { computed, nextTick, onMounted, reactive, ref } from 'vue'
|
import { computed, nextTick, onMounted, reactive, ref } from 'vue'
|
||||||
import { useRoute } from 'vue-router'
|
import { useRoute } from 'vue-router'
|
||||||
import CustomLoading from '@/components/CustomLoading.vue'
|
import CustomLoading from '@/components/CustomLoading.vue'
|
||||||
import ImageUploadCard from '@/components/ImageUploadCard.vue'
|
|
||||||
import WangEditor from '@/components/wang-editor/index.vue'
|
import WangEditor from '@/components/wang-editor/index.vue'
|
||||||
import { addPostApi, getPostApi, updatePostApi } from '@/request/api/post'
|
import { addPostApi, getPostApi, getPostCategoryApi, getPostTagApi, updatePostApi } from '@/request/api/post'
|
||||||
import { getPostTagApi } from '@/request/api/post/tag'
|
|
||||||
import { PostStatusEnum } from '@/types/post/editor'
|
import { PostStatusEnum } from '@/types/post/editor'
|
||||||
import { uploadToAliyun } from '@/utils/file'
|
|
||||||
|
|
||||||
const route = useRoute()
|
const route = useRoute()
|
||||||
|
|
||||||
@@ -29,6 +26,8 @@ const showPushDrawer = ref<boolean>(false)
|
|||||||
const imageUpload = ref<UploadImageResponse | null>(null)
|
const imageUpload = ref<UploadImageResponse | null>(null)
|
||||||
|
|
||||||
const tagOptions = ref<PostTag[]>([])
|
const tagOptions = ref<PostTag[]>([])
|
||||||
|
const categoryOptions = ref<PostCategory[]>([])
|
||||||
|
|
||||||
const statusOptions = [
|
const statusOptions = [
|
||||||
{
|
{
|
||||||
label: '草稿',
|
label: '草稿',
|
||||||
@@ -64,8 +63,8 @@ const formRules = {
|
|||||||
title: [
|
title: [
|
||||||
{ required: true, message: '文章标题不能为空', trigger: 'blur' },
|
{ required: true, message: '文章标题不能为空', trigger: 'blur' },
|
||||||
],
|
],
|
||||||
summary: [
|
tags: [
|
||||||
{ required: true, message: '摘要不能为空', trigger: 'blur' },
|
{ required: true, message: '文章标签不能为空', trigger: 'blur' },
|
||||||
],
|
],
|
||||||
status: [
|
status: [
|
||||||
{ required: true, message: '状态不能为空', trigger: 'blur' },
|
{ required: true, message: '状态不能为空', trigger: 'blur' },
|
||||||
@@ -175,7 +174,11 @@ async function handleSave(formEl?: FormInstance) {
|
|||||||
<template>
|
<template>
|
||||||
<div class="editor-container">
|
<div class="editor-container">
|
||||||
<div class="toolbar">
|
<div class="toolbar">
|
||||||
<input ref="titleInputRef" v-model="form.title" placeholder="输入标题" class="editor-title-input" maxlength="100">
|
<div class="toolbar-main">
|
||||||
|
<span>文章标题:</span>
|
||||||
|
<input ref="titleInputRef" v-model="form.title" placeholder="输入标题" class="editor-title-input" maxlength="100">
|
||||||
|
</div>
|
||||||
|
|
||||||
<div class="toolbar-extra">
|
<div class="toolbar-extra">
|
||||||
<div v-if="form.updateTime" class="time">
|
<div v-if="form.updateTime" class="time">
|
||||||
更新于:{{ form.updateTime }}
|
更新于:{{ form.updateTime }}
|
||||||
@@ -267,20 +270,30 @@ async function handleSave(formEl?: FormInstance) {
|
|||||||
|
|
||||||
<style lang="scss" scoped>
|
<style lang="scss" scoped>
|
||||||
.editor-container {
|
.editor-container {
|
||||||
|
padding: 20px 24px;
|
||||||
.toolbar {
|
.toolbar {
|
||||||
display: flex;
|
display: flex;
|
||||||
justify-content: space-between;
|
justify-content: space-between;
|
||||||
align-items: center;
|
align-items: center;
|
||||||
margin-bottom: 16px;
|
margin-bottom: 16px;
|
||||||
|
height: 44px;
|
||||||
|
|
||||||
|
.toolbar-main {
|
||||||
|
display: flex;
|
||||||
|
align-items: center;
|
||||||
|
flex: 1;
|
||||||
|
font-size: 18px;
|
||||||
|
}
|
||||||
|
|
||||||
.editor-title-input {
|
.editor-title-input {
|
||||||
flex: 1;
|
flex: 1;
|
||||||
border: none;
|
border: none;
|
||||||
font-size: 24px;
|
font-size: 24px;
|
||||||
padding: 8px 0px;
|
|
||||||
box-sizing: border-box;
|
box-sizing: border-box;
|
||||||
outline: none;
|
outline: none;
|
||||||
resize: none;
|
resize: none;
|
||||||
line-height: 1.5;
|
line-height: 1.5;
|
||||||
|
border-bottom: 1px solid #dcdfe6;
|
||||||
}
|
}
|
||||||
.toolbar-extra {
|
.toolbar-extra {
|
||||||
display: flex;
|
display: flex;
|
||||||
|
|||||||
@@ -20,6 +20,7 @@ const dashboradData = ref<DashboardData>({
|
|||||||
viewChart: [],
|
viewChart: [],
|
||||||
typeChart: [],
|
typeChart: [],
|
||||||
})
|
})
|
||||||
|
const activeCollapseNames = ref(['1', '2'])
|
||||||
|
|
||||||
onMounted(() => {
|
onMounted(() => {
|
||||||
loading.value = true
|
loading.value = true
|
||||||
@@ -47,13 +48,8 @@ onMounted(() => {
|
|||||||
<CustomLoading v-if="loading" :in-container="true" />
|
<CustomLoading v-if="loading" :in-container="true" />
|
||||||
|
|
||||||
<div v-else class="creator-dashboard">
|
<div v-else class="creator-dashboard">
|
||||||
<div class="card">
|
<el-collapse v-model="activeCollapseNames" expand-icon-position="right">
|
||||||
<div class="card-header">
|
<el-collapse-item title="数据概览" name="1">
|
||||||
<div class="card-title">
|
|
||||||
数据概览
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<div class="card-content">
|
|
||||||
<el-row :gutter="16">
|
<el-row :gutter="16">
|
||||||
<el-col :span="6">
|
<el-col :span="6">
|
||||||
<div class="stat-card">
|
<div class="stat-card">
|
||||||
@@ -96,20 +92,14 @@ onMounted(() => {
|
|||||||
</div>
|
</div>
|
||||||
</el-col>
|
</el-col>
|
||||||
</el-row>
|
</el-row>
|
||||||
</div>
|
</el-collapse-item>
|
||||||
</div>
|
|
||||||
<div class="card">
|
<el-collapse-item title="数据报表" name="2">
|
||||||
<div class="card-header">
|
|
||||||
<div class="card-title">
|
|
||||||
数据报表
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<div class="card-content">
|
|
||||||
<PostViewChart :data="dashboradData.viewChart" />
|
<PostViewChart :data="dashboradData.viewChart" />
|
||||||
<PostNumberChart :data="dashboradData.numberChart" />
|
<PostNumberChart :data="dashboradData.numberChart" />
|
||||||
<PostTypeChart :data="dashboradData.typeChart" />
|
<PostTypeChart :data="dashboradData.typeChart" />
|
||||||
</div>
|
</el-collapse-item>
|
||||||
</div>
|
</el-collapse>
|
||||||
</div>
|
</div>
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
@@ -117,6 +107,24 @@ onMounted(() => {
|
|||||||
.creator-dashboard {
|
.creator-dashboard {
|
||||||
display: flex;
|
display: flex;
|
||||||
flex-direction: column;
|
flex-direction: column;
|
||||||
|
:deep(.el-collapse) {
|
||||||
|
border: none;
|
||||||
|
}
|
||||||
|
:deep(.el-collapse-item__wrap) {
|
||||||
|
border-bottom: none;
|
||||||
|
}
|
||||||
|
|
||||||
|
:deep(.el-collapse-item__header) {
|
||||||
|
font-size: 18px;
|
||||||
|
font-weight: 600;
|
||||||
|
padding: 20px 24px;
|
||||||
|
border-bottom: 1px solid #ddd;
|
||||||
|
line-height: 0;
|
||||||
|
}
|
||||||
|
:deep(.el-collapse-item__content) {
|
||||||
|
padding: 24px 24px 0;
|
||||||
|
padding-bottom: 0px;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
.card {
|
.card {
|
||||||
|
|||||||
@@ -112,7 +112,7 @@ watch(searchKey, async (val) => {
|
|||||||
<template>
|
<template>
|
||||||
<div class="settings-wrapper">
|
<div class="settings-wrapper">
|
||||||
<div class="left-menu">
|
<div class="left-menu">
|
||||||
<div class="menu-search">
|
<!-- <div class="menu-search">
|
||||||
<el-input
|
<el-input
|
||||||
v-model="searchKey"
|
v-model="searchKey"
|
||||||
placeholder="搜索菜单"
|
placeholder="搜索菜单"
|
||||||
@@ -120,7 +120,7 @@ watch(searchKey, async (val) => {
|
|||||||
:prefix-icon="Search"
|
:prefix-icon="Search"
|
||||||
clearable
|
clearable
|
||||||
/>
|
/>
|
||||||
</div>
|
</div> -->
|
||||||
|
|
||||||
<el-menu
|
<el-menu
|
||||||
ref="menuRef"
|
ref="menuRef"
|
||||||
@@ -139,10 +139,9 @@ watch(searchKey, async (val) => {
|
|||||||
<style lang="scss" scoped>
|
<style lang="scss" scoped>
|
||||||
.settings-wrapper {
|
.settings-wrapper {
|
||||||
display: flex;
|
display: flex;
|
||||||
background-color: #fff;
|
|
||||||
padding: 0px 240px;
|
|
||||||
|
|
||||||
.left-menu {
|
.left-menu {
|
||||||
|
background-color: #fff;
|
||||||
height: calc(100vh - var(--header-height));
|
height: calc(100vh - var(--header-height));
|
||||||
font-size: 16px;
|
font-size: 16px;
|
||||||
flex-shrink: 0;
|
flex-shrink: 0;
|
||||||
@@ -150,32 +149,43 @@ watch(searchKey, async (val) => {
|
|||||||
position: sticky;
|
position: sticky;
|
||||||
top: var(--header-height);
|
top: var(--header-height);
|
||||||
align-self: flex-start;
|
align-self: flex-start;
|
||||||
padding: 12px 16px;
|
width: 240px;
|
||||||
|
padding: 0px 16px;
|
||||||
.menu-search {
|
|
||||||
margin-bottom: 8px;
|
|
||||||
}
|
|
||||||
|
|
||||||
:deep(.el-menu) {
|
:deep(.el-menu) {
|
||||||
border-right: none;
|
border-right: none;
|
||||||
}
|
|
||||||
|
|
||||||
:deep(.el-menu-item) {
|
.el-menu-item {
|
||||||
border-radius: 8px;
|
border-radius: 8px;
|
||||||
margin: 4px 0px;
|
margin: 4px 0px;
|
||||||
}
|
font-size: 16px;
|
||||||
|
&:hover {
|
||||||
|
background-color: #f1f5f9;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
:deep(.el-menu-item.is-active) {
|
.el-sub-menu {
|
||||||
background-color: #d1f0ff;
|
margin: 4px 0px;
|
||||||
color: #303133;
|
&.is-active {
|
||||||
font-weight: 600;
|
.el-sub-menu__title {
|
||||||
}
|
font-weight: bold;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
:deep(.el-sub-menu) {
|
.el-sub-menu__title {
|
||||||
margin: 4px 0px;
|
border-radius: 8px;
|
||||||
}
|
font-size: 16px;
|
||||||
:deep(.el-sub-menu__title) {
|
|
||||||
border-radius: 8px;
|
&:hover {
|
||||||
|
background-color: #f1f5f9;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
.el-menu-item.is-active {
|
||||||
|
background-color: #f1f5f9;
|
||||||
|
color: #000;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -184,6 +194,8 @@ watch(searchKey, async (val) => {
|
|||||||
flex-shrink: 0;
|
flex-shrink: 0;
|
||||||
border-radius: 0px;
|
border-radius: 0px;
|
||||||
width: 100%;
|
width: 100%;
|
||||||
|
background-color: #fff;
|
||||||
|
// border-right: 1px solid rgb(232.9, 232.9, 232.9);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
</style>
|
</style>
|
||||||
@@ -146,86 +146,92 @@ const activeCollapseNames = ref(['1', '2', '3'])
|
|||||||
|
|
||||||
<template>
|
<template>
|
||||||
<div class="company-wrapper">
|
<div class="company-wrapper">
|
||||||
<el-collapse v-model="activeCollapseNames" expand-icon-position="right">
|
<div class="form-main">
|
||||||
<el-collapse-item title="基础信息" name="1">
|
<el-collapse v-model="activeCollapseNames" expand-icon-position="right">
|
||||||
<el-form
|
<el-collapse-item title="基础信息" name="1">
|
||||||
ref="formRef"
|
<el-form
|
||||||
:model="companyDetail"
|
ref="formRef"
|
||||||
:rules="formRules"
|
:model="companyDetail"
|
||||||
label-width="auto"
|
:rules="formRules"
|
||||||
label-position="top"
|
label-width="auto"
|
||||||
>
|
label-position="top"
|
||||||
<el-row :gutter="16">
|
>
|
||||||
<el-col :span="24">
|
<el-row :gutter="16">
|
||||||
<el-form-item>
|
<el-col :span="24">
|
||||||
<el-avatar :size="86" :src="companyDetail.logo || '/no-avatar.png'" shape="square" />
|
<el-form-item>
|
||||||
<div class="logo-upload">
|
<el-avatar :size="86" :src="companyDetail.logo || '/no-avatar.png'" shape="square" />
|
||||||
<el-button type="primary" @click="handleUploadLogo()">
|
<div class="logo-upload">
|
||||||
<SvgIcon icon="majesticons:cloud-upload-line" :size="18" style="margin-right: 4px;" />
|
<el-button type="primary" @click="handleUploadLogo()">
|
||||||
上传LOGO
|
<SvgIcon icon="majesticons:cloud-upload-line" :size="18" style="margin-right: 4px;" />
|
||||||
</el-button>
|
上传LOGO
|
||||||
<span>支持 JPG、PNG 格式,文件大小不超过 2MB</span>
|
</el-button>
|
||||||
</div>
|
<span>支持 JPG、PNG 格式,文件大小不超过 2MB</span>
|
||||||
</el-form-item>
|
</div>
|
||||||
</el-col>
|
</el-form-item>
|
||||||
<el-col :span="12">
|
</el-col>
|
||||||
<el-form-item label="公司名称" prop="name">
|
<el-col :span="12">
|
||||||
<el-input v-model="companyDetail.name" />
|
<el-form-item label="公司名称" prop="name">
|
||||||
</el-form-item>
|
<el-input v-model="companyDetail.name" />
|
||||||
</el-col>
|
</el-form-item>
|
||||||
<el-col :span="12">
|
</el-col>
|
||||||
<el-form-item label="所属行业" prop="industries">
|
<el-col :span="12">
|
||||||
<IndustrySelect v-model="companyDetail.industries" />
|
<el-form-item label="所属行业" prop="industries">
|
||||||
</el-form-item>
|
<IndustrySelect v-model="companyDetail.industries" />
|
||||||
</el-col>
|
</el-form-item>
|
||||||
<el-col :span="12">
|
</el-col>
|
||||||
<el-form-item label="成立时间" prop="establishmentDate">
|
<el-col :span="12">
|
||||||
<el-date-picker
|
<el-form-item label="成立时间" prop="establishmentDate">
|
||||||
v-model="companyDetail.establishmentDate"
|
<el-date-picker
|
||||||
type="date"
|
v-model="companyDetail.establishmentDate"
|
||||||
placeholder="请选择公司成立时间"
|
type="date"
|
||||||
style="width: 100%"
|
placeholder="请选择公司成立时间"
|
||||||
/>
|
style="width: 100%"
|
||||||
</el-form-item>
|
/>
|
||||||
</el-col>
|
</el-form-item>
|
||||||
<el-col :span="12">
|
</el-col>
|
||||||
<el-form-item label="公司地址" prop="areas">
|
<el-col :span="12">
|
||||||
<AreaSelect v-model="companyDetail.areas" />
|
<el-form-item label="公司地址" prop="areas">
|
||||||
</el-form-item>
|
<AreaSelect v-model="companyDetail.areas" />
|
||||||
</el-col>
|
</el-form-item>
|
||||||
|
</el-col>
|
||||||
|
|
||||||
<el-col :span="12">
|
<el-col :span="12">
|
||||||
<el-form-item label="联系电话" prop="phone">
|
<el-form-item label="联系电话" prop="phone">
|
||||||
<el-input v-model="companyDetail.phone" />
|
<el-input v-model="companyDetail.phone" />
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
</el-col>
|
</el-col>
|
||||||
<el-col :span="12">
|
<el-col :span="12">
|
||||||
<el-form-item label="联系邮箱" prop="email">
|
<el-form-item label="联系邮箱" prop="email">
|
||||||
<el-input v-model="companyDetail.email" />
|
<el-input v-model="companyDetail.email" />
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
</el-col>
|
</el-col>
|
||||||
</el-row>
|
</el-row>
|
||||||
</el-form>
|
</el-form>
|
||||||
</el-collapse-item>
|
</el-collapse-item>
|
||||||
<el-collapse-item title="公司简介" name="2">
|
<el-collapse-item title="公司简介" name="2">
|
||||||
<el-form
|
<el-form
|
||||||
ref="formRef"
|
ref="formRef"
|
||||||
:model="companyDetail"
|
:model="companyDetail"
|
||||||
:rules="formRules"
|
:rules="formRules"
|
||||||
label-width="auto"
|
label-width="auto"
|
||||||
>
|
>
|
||||||
<el-form-item prop="profile">
|
<el-form-item prop="profile">
|
||||||
<el-input v-model="companyDetail.profile" type="textarea" />
|
<el-input v-model="companyDetail.profile" type="textarea" />
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
</el-form>
|
</el-form>
|
||||||
</el-collapse-item>
|
</el-collapse-item>
|
||||||
<el-collapse-item title="公司介绍" name="3">
|
<el-collapse-item title="公司介绍" name="3">
|
||||||
<WangEditor v-model="companyDetail.description" show-direcotry />
|
<WangEditor v-model="companyDetail.description" show-direcotry />
|
||||||
</el-collapse-item>
|
</el-collapse-item>
|
||||||
</el-collapse>
|
</el-collapse>
|
||||||
|
</div>
|
||||||
|
|
||||||
<div class="form-footer">
|
<div class="form-footer">
|
||||||
<el-button @click="getCompanyDetail()">
|
<el-button
|
||||||
|
text
|
||||||
|
bg
|
||||||
|
@click="getCompanyDetail()"
|
||||||
|
>
|
||||||
<SvgIcon icon="ic:baseline-refresh" :size="18" style="margin-right: 4px;" />
|
<SvgIcon icon="ic:baseline-refresh" :size="18" style="margin-right: 4px;" />
|
||||||
重置
|
重置
|
||||||
</el-button>
|
</el-button>
|
||||||
@@ -239,7 +245,15 @@ const activeCollapseNames = ref(['1', '2', '3'])
|
|||||||
|
|
||||||
<style lang="scss" scoped>
|
<style lang="scss" scoped>
|
||||||
.company-wrapper {
|
.company-wrapper {
|
||||||
padding-bottom: 16px;
|
height: 100%;
|
||||||
|
display: flex;
|
||||||
|
flex-direction: column;
|
||||||
|
|
||||||
|
.form-main {
|
||||||
|
flex: 1;
|
||||||
|
padding-bottom: 140px;
|
||||||
|
}
|
||||||
|
|
||||||
:deep(.el-collapse) {
|
:deep(.el-collapse) {
|
||||||
border: none;
|
border: none;
|
||||||
}
|
}
|
||||||
@@ -250,12 +264,12 @@ const activeCollapseNames = ref(['1', '2', '3'])
|
|||||||
:deep(.el-collapse-item__header) {
|
:deep(.el-collapse-item__header) {
|
||||||
font-size: 18px;
|
font-size: 18px;
|
||||||
font-weight: 600;
|
font-weight: 600;
|
||||||
padding: 16px;
|
padding: 20px 24px;
|
||||||
border-bottom: 1px solid #ddd;
|
border-bottom: 1px solid #ddd;
|
||||||
line-height: 0;
|
line-height: 0;
|
||||||
}
|
}
|
||||||
:deep(.el-collapse-item__content) {
|
:deep(.el-collapse-item__content) {
|
||||||
padding: 20px 20px 0px 20px;
|
padding: 24px 24px 0;
|
||||||
padding-bottom: 0px;
|
padding-bottom: 0px;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -269,13 +283,23 @@ const activeCollapseNames = ref(['1', '2', '3'])
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
.form-footer {
|
.form-footer {
|
||||||
margin-top: 16px;
|
|
||||||
width: 100%;
|
width: 100%;
|
||||||
|
box-shadow: 0 -2px 6px rgba(0, 0, 0, 0.08);
|
||||||
|
position: sticky;
|
||||||
|
bottom: 0;
|
||||||
|
align-self: flex-end;
|
||||||
|
height: 56px;
|
||||||
display: flex;
|
display: flex;
|
||||||
justify-content: flex-end;
|
align-items: center;
|
||||||
|
justify-content: center;
|
||||||
|
background-color: #fff;
|
||||||
|
|
||||||
:deep(.el-button) {
|
:deep(.el-button) {
|
||||||
width: 120px;
|
width: 100%;
|
||||||
|
height: 100%;
|
||||||
|
border: none;
|
||||||
|
border-radius: 0;
|
||||||
|
margin-left: 0;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -166,7 +166,7 @@ function handleDelteRows(val?: CompanyUser) {
|
|||||||
|
|
||||||
<template>
|
<template>
|
||||||
<div class="users-wrapper">
|
<div class="users-wrapper">
|
||||||
<el-collapse v-model="activeCollapseNames">
|
<el-collapse v-model="activeCollapseNames" expand-icon-position="right">
|
||||||
<el-collapse-item title="搜索条件" name="1">
|
<el-collapse-item title="搜索条件" name="1">
|
||||||
<el-form :model="queryForm">
|
<el-form :model="queryForm">
|
||||||
<el-row :gutter="16">
|
<el-row :gutter="16">
|
||||||
@@ -330,13 +330,13 @@ function handleDelteRows(val?: CompanyUser) {
|
|||||||
:deep(.el-collapse-item__header) {
|
:deep(.el-collapse-item__header) {
|
||||||
font-size: 18px;
|
font-size: 18px;
|
||||||
font-weight: 600;
|
font-weight: 600;
|
||||||
padding: 16px;
|
padding: 20px 24px;
|
||||||
border-bottom: 1px solid #ddd;
|
border-bottom: 1px solid #ddd;
|
||||||
line-height: 0;
|
line-height: 0;
|
||||||
}
|
}
|
||||||
:deep(.el-collapse-item__content) {
|
:deep(.el-collapse-item__content) {
|
||||||
padding-bottom: 0px;
|
padding-bottom: 0px;
|
||||||
padding: 20px 20px 0px 20px;
|
padding: 24px 24px 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
.table-container {
|
.table-container {
|
||||||
|
|||||||
Reference in new issue
Block a user