update: 基础配置组件替换

This commit is contained in:
easy 2023-03-07 15:52:29 +08:00
parent e2417ed44e
commit e2339e28b5
1 changed files with 269 additions and 262 deletions

View File

@ -1,288 +1,291 @@
<template> <template>
<page-container> <page-container>
<a-card class="basis-container"> <div class="basis-container">
<a-form <j-form
layout="vertical" layout="vertical"
ref="formBasicRef" ref="formBasicRef"
:rules="rulesFrom" :rules="rulesFrom"
:model="formValue" :model="formValue"
> >
<a-row :span="24" :gutter="24"> <j-row :span="24" :gutter="24">
<a-col :span="10"> <j-col :span="10">
<a-form-item label="系统名称" name="title"> <j-form-item label="系统名称" name="title">
<a-input <j-input
v-model:value="formValue.title" v-model:value="formValue.title"
:maxlength="64" :maxlength="64"
placeholder="请输入系统名称" placeholder="请输入系统名称"
/> />
</a-form-item> </j-form-item>
<a-form-item label="主题色" name="headerTheme"> <j-form-item label="主题色" name="headerTheme">
<a-select v-model:value="formValue.headerTheme"> <j-select v-model:value="formValue.headerTheme">
<a-select-option value="light" <j-select-option value="light">
>白色</a-select-option 白色
> </j-select-option>
<a-select-option value="dark">黑色</a-select-option> <j-select-option value="dark">
</a-select> 黑色
</a-form-item> </j-select-option>
<a-form-item> </j-select>
<template #label> </j-form-item>
<span>高德API Key</span> <j-form-item>
<a-tooltip title="配置后平台可调用高德地图GIS服务"> <template #label>
<img <span>高德API Key</span>
class="img-style" <j-tooltip
:src="getImage('/init-home/mark.png')" title="配置后平台可调用高德地图GIS服务"
/> >
</a-tooltip> <img
</template> class="img-style"
<a-input :src="getImage('/init-home/mark.png')"
v-model:value="formValue.apiKey" />
placeholder="请输入高德API Key" </j-tooltip>
/> </template>
</a-form-item> <j-input
<a-form-item name="'base-path'"> v-model:value="formValue.apiKey"
<template #label> placeholder="请输入高德API Key"
<span>base-path</span> />
<a-tooltip title="系统后台访问的url"> </j-form-item>
<img <j-form-item name="'base-path'">
class="img-style" <template #label>
:src="getImage('/init-home/mark.png')" <span>base-path</span>
/> <j-tooltip title="系统后台访问的url">
</a-tooltip> <img
</template> class="img-style"
<a-input :src="getImage('/init-home/mark.png')"
v-model:value="formValue['base-path']" />
placeholder="请输入高德API Key" </j-tooltip>
/> </template>
</a-form-item> <j-input
<a-row :gutter="24" :span="24"> v-model:value="formValue['base-path']"
<a-col> placeholder="请输入高德API Key"
<a-form-item label="系统logo"> />
<div class="upload-image-warp-logo"> </j-form-item>
<div class="upload-image-border-logo"> <j-row :gutter="24" :span="24">
<a-upload <j-col>
name="file" <j-form-item label="系统logo">
:action="action" <div class="upload-image-warp-logo">
:headers="headers" <div class="upload-image-border-logo">
:showUploadList="false" <a-upload
:beforeUpload=" name="file"
uploader.beforeLogoUpload :action="action"
" :headers="headers"
@change="uploader.handleChangeLogo" :showUploadList="false"
:accept=" :beforeUpload="
uploader.imageTypes.toString() uploader.beforeLogoUpload
" "
> @change="
<div uploader.handleChangeLogo
class="upload-image-content-logo" "
:accept="
uploader.imageTypes.toString()
"
> >
<div <div
class="loading-logo" class="upload-image-content-logo"
v-if="form.logoLoading"
> >
<LoadingOutlined
style="font-size: 28px"
/>
</div>
<div
class="upload-image"
style="height: 100%"
v-if="formValue.logo"
:style="
formValue.logo
? `background-image: url(${formValue.logo});`
: ''
"
></div>
<div
v-if="formValue.logo"
class="upload-image-mask"
>
点击修改
</div>
<div v-else>
<div <div
class="loading-logo"
v-if="form.logoLoading" v-if="form.logoLoading"
> >
<LoadingOutlined <AIcon
style=" type="LoadingOutlined"
font-size: 28px;
"
/> />
</div> </div>
<div
class="upload-image"
style="height: 100%"
v-if="formValue.logo"
:style="
formValue.logo
? `background-image: url(${formValue.logo});`
: ''
"
></div>
<div
v-if="formValue.logo"
class="upload-image-mask"
>
点击修改
</div>
<div v-else> <div v-else>
<PlusOutlined <AIcon
style=" :type="
font-size: 28px; form.logoLoading
? 'LoadingOutlined'
: 'PlusOutlined'
" "
/> />
</div> </div>
</div> </div>
</div> </a-upload>
</a-upload> <div v-if="form.logoLoading">
<div v-if="form.logoLoading">
<div class="upload-loading-mask">
<LoadingOutlined
style="font-size: 28px"
/>
</div>
</div>
</div>
</div>
<div class="upload-tips">推荐尺寸200*200</div>
<div class="upload-tips">支持jpg,png</div>
</a-form-item>
</a-col>
<a-col>
<a-form-item>
<template #label>
<span>浏览器页签</span>
<a-tooltip
title="浏览器tab页中显示的图片元素"
>
<img
class="img-style"
:src="
getImage('/init-home/mark.png')
"
/>
</a-tooltip>
</template>
<div class="upload-image-warp-logo">
<div class="upload-image-border-logo">
<a-upload
name="file"
:action="action"
:headers="headers"
:showUploadList="false"
:beforeUpload="
uploader.beforeIconUpload
"
@change="uploader.changeIconUpload"
:accept="
uploader.imageTypes.toString()
"
>
<div
class="upload-image-content-logo"
>
<div <div
v-if="form.iconLoading" class="upload-loading-mask"
class="loading-icon"
> >
<LoadingOutlined <AIcon
style="font-size: 28px" type="LoadingOutlined"
/> />
</div> </div>
</div>
</div>
</div>
<div class="upload-tips">
推荐尺寸200*200
</div>
<div class="upload-tips">支持jpg,png</div>
</j-form-item>
</j-col>
<j-col>
<j-form-item>
<template #label>
<span>浏览器页签</span>
<j-tooltip
title="浏览器tab页中显示的图片元素"
>
<img
class="img-style"
:src="
getImage(
'/init-home/mark.png',
)
"
/>
</j-tooltip>
</template>
<div class="upload-image-warp-logo">
<div class="upload-image-border-logo">
<a-upload
name="file"
:action="action"
:headers="headers"
:showUploadList="false"
:beforeUpload="
uploader.beforeIconUpload
"
@change="
uploader.changeIconUpload
"
:accept="
uploader.imageTypes.toString()
"
>
<div <div
class="upload-image-icon" class="upload-image-content-logo"
v-if="formValue.ico"
:style="
formValue.ico
? `background-image: url(${formValue.ico});`
: ''
"
></div>
<div
v-if="formValue.ico"
class="upload-image-mask"
> >
点击修改 <div
</div> v-if="form.iconLoading"
<div v-else> class="loading-icon"
<div> >
<PlusOutlined <AIcon
style=" type="LoadingOutlined"
font-size: 28px;
"
/> />
</div> </div>
<div
class="upload-image-icon"
v-if="formValue.ico"
:style="
formValue.ico
? `background-image: url(${formValue.ico});`
: ''
"
></div>
<div
v-if="formValue.ico"
class="upload-image-mask"
>
点击修改
</div>
<div v-else>
<div>
<AIcon
type="PlusOutlined"
/>
</div>
</div>
</div>
</a-upload>
</div>
</div>
<div class="upload-tips">推荐尺寸64*64</div>
<div class="upload-tips">支持icon格式</div>
</j-form-item>
</j-col>
</j-row>
</j-col>
<j-col :span="14">
<j-form-item label="登录背景图">
<div class="upload-image-warp-back">
<div class="upload-image-border-back">
<a-upload
name="file"
:action="action"
:headers="headers"
:beforeUpload="
uploader.beforeBackUpload
"
:showUploadList="false"
@change="uploader.changeBackUpload"
:accept="uploader.imageTypes.toString()"
>
<div class="upload-image-content-back">
<div
v-if="form.backLoading"
class="loading-back"
>
<AIcon type="LoadingOutlined" />
</div>
<div
class="upload-image"
v-if="formValue.backgroud"
:style="
formValue.backgroud
? `background-image: url(${formValue.backgroud});`
: ''
"
></div>
<div
v-if="formValue.backgroud"
class="upload-image-mask"
>
点击修改
</div>
<div v-else>
<div>
<AIcon
type="PlusOutlined"
/>
</div> </div>
</div> </div>
</a-upload> </div>
</div> </a-upload>
</div> </div>
<div class="upload-tips">推荐尺寸64*64</div>
<div class="upload-tips">支持icon格式</div>
</a-form-item>
</a-col>
</a-row>
</a-col>
<a-col :span="14">
<a-form-item label="登录背景图">
<div class="upload-image-warp-back">
<div class="upload-image-border-back">
<a-upload
name="file"
:action="action"
:headers="headers"
:beforeUpload="uploader.beforeBackUpload"
:showUploadList="false"
@change="uploader.changeBackUpload"
:accept="uploader.imageTypes.toString()"
>
<div class="upload-image-content-back">
<div
v-if="form.backLoading"
class="loading-back"
>
<LoadingOutlined
style="font-size: 28px"
/>
</div>
<div
class="upload-image"
v-if="formValue.backgroud"
:style="
formValue.backgroud
? `background-image: url(${formValue.backgroud});`
: ''
"
></div>
<div
v-if="formValue.backgroud"
class="upload-image-mask"
>
点击修改
</div>
<div v-else>
<div>
<PlusOutlined
style="font-size: 28px"
/>
</div>
</div>
</div>
</a-upload>
</div> </div>
</div> <div class="upload-tips">
<div class="upload-tips"> 支持4M以内的图片:支持jpgpng
支持4M以内的图片:支持jpgpng </div>
</div> <div class="upload-tips">建议尺寸1400x1080</div>
<div class="upload-tips">建议尺寸1400x1080</div> </j-form-item>
</a-form-item> </j-col>
</a-col> </j-row>
</a-row> </j-form>
</a-form>
<a-button <j-button
type="primary" type="primary"
@click="form.clickSave" @click="form.clickSave"
:disabled=" :disabled="
form.saveLoading || form.saveLoading ||
form.logoLoading || form.logoLoading ||
form.iconLoading || form.iconLoading ||
form.backLoading form.backLoading
" "
>保存</a-button >
> 保存
</a-card> </j-button>
</page-container> </div>
</page-container>
</template> </template>
<script setup lang="ts" name="Basis"> <script setup lang="ts" name="Basis">
import { PlusOutlined, LoadingOutlined } from '@ant-design/icons-vue';
import { formType, uploaderType } from './index'; import { formType, uploaderType } from './index';
import { getImage } from '@/utils/comm.ts'; import { getImage } from '@/utils/comm.ts';
import { message } from 'ant-design-vue'; import { message } from 'ant-design-vue';
@ -365,8 +368,8 @@ const form = reactive<formType>({
}, },
clickSave: () => { clickSave: () => {
const hasPermission = usePermissionStore().hasPermission; const hasPermission = usePermissionStore().hasPermission;
if(hasPermission(`system/Basis:update`) ){ if (hasPermission(`system/Basis:update`)) {
formBasicRef.value.validate().then(() => { formBasicRef.value.validate().then(() => {
form.saveLoading = true; form.saveLoading = true;
const params = [ const params = [
{ {
@ -400,11 +403,9 @@ const form = reactive<formType>({
}) })
.finally(() => (form.saveLoading = false)); .finally(() => (form.saveLoading = false));
}); });
}else { } else {
message.warning('暂无权限,请联系管理员'); message.warning('暂无权限,请联系管理员');
} }
}, },
}); });
const { formValue, rulesFrom } = toRefs(form); const { formValue, rulesFrom } = toRefs(form);
@ -502,6 +503,8 @@ form.getDetails();
<style lang="less" scoped> <style lang="less" scoped>
.basis-container { .basis-container {
padding: 24px;
background-color: #fff;
.img-style { .img-style {
width: 16px; width: 16px;
height: 16px; height: 16px;
@ -625,5 +628,9 @@ form.getDetails();
font-size: 14px; font-size: 14px;
line-height: 1.5715; line-height: 1.5715;
} }
.anticon {
font-size: 28px;
}
} }
</style> </style>