parent
0f49a0c10d
commit
6d4f53c925
5 changed files with 199 additions and 13 deletions
@ -0,0 +1,45 @@ |
||||
import request from '@/utils/request' |
||||
import { tool } from '../utils/alioss.js' |
||||
import { ElLoading, ElMessage } from 'element-plus' |
||||
|
||||
enum Api { |
||||
get系统配置 = '/api/systemSettings/save', |
||||
put系统配置 = '/api/systemSettings', |
||||
} |
||||
// 提示批量处理
|
||||
const initOptions = { text: '加载中', success: '成功', error: '失败' } |
||||
function proxRequest(request, options: any = initOptions) { |
||||
return async (...arg) => { |
||||
if (!options) return request(...arg) |
||||
|
||||
const loadingInstance = ElLoading.service({ text: options.text }) |
||||
|
||||
try { |
||||
await request(...arg) |
||||
ElMessage.success(options.success) |
||||
} catch (error) { |
||||
ElMessage.error(options.error) |
||||
} finally { |
||||
loadingInstance.close() |
||||
} |
||||
|
||||
return request |
||||
} |
||||
} |
||||
|
||||
|
||||
export function uploadApi(file: File) { |
||||
if (file instanceof Object) return tool.oss.upload(file).then(res => res.url) |
||||
else return Promise.resolve(file) |
||||
} |
||||
|
||||
|
||||
export function getSysSettingApi() { |
||||
return request.get(Api.get系统配置) |
||||
} |
||||
export const proxGetSysSettingApi = proxRequest(getSysSettingApi) |
||||
|
||||
export function putSysSettingApi(params: any) { |
||||
return request.put(Api.put系统配置, params) |
||||
} |
||||
export const proxPutSysSettingApi = proxRequest(putSysSettingApi, { success: '保存成功', error: '保存失败' }) |
@ -0,0 +1,38 @@ |
||||
<template> |
||||
<el-upload ref="upload" class="upload-demo" action="#" :on-change="change" v-model:file-list="fileList" :limit="1" |
||||
:auto-upload="false" list-type="picture-card"> |
||||
<el-icon> |
||||
<Plus /> |
||||
</el-icon> |
||||
<template #file="{ file }"> |
||||
<div> |
||||
<img class="el-upload-list__item-thumbnail" :src="file.url" alt="" /> |
||||
<span class="el-upload-list__item-actions"> |
||||
<span class="el-upload-list__item-delete" @click="handleRemove"> |
||||
<el-icon> |
||||
<Delete /> |
||||
</el-icon> |
||||
</span> |
||||
</span> |
||||
</div> |
||||
</template> |
||||
</el-upload> |
||||
</template> |
||||
|
||||
<script setup lang="ts"> |
||||
import { ref } from 'vue' |
||||
import type { UploadUserFile } from 'element-plus' |
||||
import { Delete, Plus } from '@element-plus/icons-vue' |
||||
const props = defineProps(['modelValue']) |
||||
const emit = defineEmits(['update:modelValue']) |
||||
|
||||
const fileList = ref<UploadUserFile[]>(props.modelValue ? [{ url: props.modelValue }] : []) |
||||
const handleRemove = () => { |
||||
fileList.value.length = 0 |
||||
change({ raw: false }) |
||||
} |
||||
|
||||
function change(file: any) { |
||||
emit('update:modelValue', file.raw) |
||||
} |
||||
</script> |
@ -0,0 +1,93 @@ |
||||
<template> |
||||
<div class="configuration-page"> |
||||
<el-form :model="form" label-width="auto" style="max-width: 600px"> |
||||
<el-form-item label="LOGO"> |
||||
<my-update v-if="ran" v-model="form.logo"></my-update> |
||||
</el-form-item> |
||||
<el-form-item label="项目名称"> |
||||
<el-input v-model="form.name" /> |
||||
</el-form-item> |
||||
<p>门户宣传图配置</p> |
||||
<el-form-item label="门户头部宣传大图"> |
||||
<my-update v-if="ran" v-model="form.promotionalImages"></my-update> |
||||
</el-form-item> |
||||
<!-- <el-form-item label="门户首页"> |
||||
等待一个字段 |
||||
<el-input v-model="form.qqNumber" /> |
||||
</el-form-item> --> |
||||
<el-form-item label="后台登陆首页地址"> |
||||
<el-input v-model="form.loginAddress" /> |
||||
</el-form-item> |
||||
<el-form-item label="系统标题"> |
||||
<el-input v-model="form.title" /> |
||||
</el-form-item> |
||||
<el-form-item label="版权信息"> |
||||
<el-input v-model="form.copyrightInformation" /> |
||||
</el-form-item> |
||||
<el-form-item label="备案号"> |
||||
<el-input v-model="form.recordNumber" /> |
||||
</el-form-item> |
||||
<el-form-item label="qq"> |
||||
<el-input v-model="form.qqNumber" /> |
||||
</el-form-item> |
||||
<el-form-item label="邮箱"> |
||||
<el-input v-model="form.mailbox" /> |
||||
</el-form-item> |
||||
<el-form-item label="电话"> |
||||
<el-input v-model="form.phone" /> |
||||
</el-form-item> |
||||
<el-form-item label="联系地址"> |
||||
<el-input v-model="form.address" /> |
||||
</el-form-item> |
||||
<el-form-item label="二维码"> |
||||
<my-update v-if="ran" v-model="form.qrCode"></my-update> |
||||
</el-form-item> |
||||
<el-form-item> |
||||
<el-button type="primary" @click="onSubmit">保存</el-button> |
||||
</el-form-item> |
||||
</el-form> |
||||
</div> |
||||
</template> |
||||
|
||||
<script lang="ts" setup> |
||||
import { getSysSettingApi, proxPutSysSettingApi, uploadApi } from '@/api/configuration'; |
||||
import { ref, reactive } from 'vue' |
||||
import MyUpdate from './MyUpdate.vue'; |
||||
import useUserStore from '@/store/modules/user'; |
||||
const userStore = useUserStore() |
||||
|
||||
// do not use same name with ref |
||||
const form = reactive({ |
||||
address: '', |
||||
copyrightInformation: '', |
||||
id: userStore.data.id, |
||||
loginAddress: '', |
||||
logo: '', |
||||
name: '', |
||||
phone: '', |
||||
promotionalImages: '', |
||||
qqNumber: '', |
||||
qrCode: '', |
||||
recordNumber: '', |
||||
title: '', |
||||
mailbox: '' |
||||
}) |
||||
|
||||
const ran = ref(false) |
||||
getSysSettingApi().then((res) => { |
||||
Object.assign(form, res.data) |
||||
ran.value = true |
||||
}) |
||||
const onSubmit = async () => { |
||||
form.logo = await uploadApi(form.logo) |
||||
form.promotionalImages = await uploadApi(form.promotionalImages) |
||||
form.qrCode = await uploadApi(form.qrCode) |
||||
await proxPutSysSettingApi(form) |
||||
} |
||||
</script> |
||||
<style lang="scss" scoped> |
||||
.configuration-page { |
||||
width: 600px; |
||||
margin: auto; |
||||
} |
||||
</style> |
Loading…
Reference in new issue