2022-06-22 09:57:02 +00:00
|
|
|
|
<template>
|
2022-08-12 10:44:09 +00:00
|
|
|
|
<div class="edit-popup">
|
|
|
|
|
|
<popup
|
|
|
|
|
|
ref="popupRef"
|
|
|
|
|
|
title="设置存储"
|
|
|
|
|
|
:async="true"
|
|
|
|
|
|
width="550px"
|
|
|
|
|
|
:clickModalClose="true"
|
|
|
|
|
|
@confirm="handleSubmit"
|
|
|
|
|
|
@close="handleClose"
|
|
|
|
|
|
>
|
|
|
|
|
|
<el-form ref="formRef" :model="formData" label-width="120px" :rules="formRules">
|
|
|
|
|
|
<el-form-item label="存储方式" prop="alias">
|
|
|
|
|
|
<div>
|
|
|
|
|
|
<el-radio model-value>{{ getStorageInfo?.name }} </el-radio>
|
|
|
|
|
|
<div class="form-tips">{{ getStorageInfo?.tips }}</div>
|
|
|
|
|
|
</div>
|
|
|
|
|
|
</el-form-item>
|
|
|
|
|
|
<div v-if="formData.alias !== 'local'">
|
|
|
|
|
|
<el-form-item label=" 存储空间名称" prop="bucket">
|
|
|
|
|
|
<div class="flex-1">
|
|
|
|
|
|
<el-input
|
|
|
|
|
|
v-model="formData.bucket"
|
|
|
|
|
|
placeholder="请输入存储空间名称(Bucket)"
|
|
|
|
|
|
/>
|
2022-06-23 11:03:08 +00:00
|
|
|
|
</div>
|
|
|
|
|
|
</el-form-item>
|
2022-08-12 10:44:09 +00:00
|
|
|
|
<el-form-item label="ACCESS_KEY" prop="accessKey">
|
|
|
|
|
|
<el-input v-model="formData.accessKey" placeholder="请输入ACCESS_KEY(AK)" />
|
2022-06-23 11:03:08 +00:00
|
|
|
|
</el-form-item>
|
2022-08-12 10:44:09 +00:00
|
|
|
|
<el-form-item label="SECRET_KEY" prop="secretKey">
|
|
|
|
|
|
<el-input v-model="formData.secretKey" placeholder="请输入SECRET_KEY(SK)" />
|
2022-06-23 11:03:08 +00:00
|
|
|
|
</el-form-item>
|
2022-08-12 10:44:09 +00:00
|
|
|
|
<el-form-item label="空间域名" prop="domain">
|
|
|
|
|
|
<div class="flex-1">
|
|
|
|
|
|
<div>
|
|
|
|
|
|
<el-input
|
|
|
|
|
|
v-model="formData.domain"
|
|
|
|
|
|
placeholder="请输入空间域名(Domain)"
|
|
|
|
|
|
/>
|
|
|
|
|
|
</div>
|
|
|
|
|
|
<div class="form-tips">
|
|
|
|
|
|
请补全http://或https://,例如https://static.cloud.com
|
|
|
|
|
|
</div>
|
2022-06-23 11:03:08 +00:00
|
|
|
|
</div>
|
|
|
|
|
|
</el-form-item>
|
2022-08-12 10:44:09 +00:00
|
|
|
|
<el-form-item
|
|
|
|
|
|
v-if="formData.alias == StorageEnum.QCLOUD"
|
|
|
|
|
|
label="REGION"
|
|
|
|
|
|
prop="region"
|
|
|
|
|
|
>
|
|
|
|
|
|
<el-input v-model="formData.region" placeholder="请输入region" />
|
2022-06-23 11:03:08 +00:00
|
|
|
|
</el-form-item>
|
|
|
|
|
|
</div>
|
|
|
|
|
|
<el-form-item label="状态" prop="status">
|
2022-08-12 10:44:09 +00:00
|
|
|
|
<el-radio-group v-model="formData.status">
|
|
|
|
|
|
<el-radio :label="0">关闭</el-radio>
|
|
|
|
|
|
<el-radio :label="1">开启</el-radio>
|
2022-06-23 11:03:08 +00:00
|
|
|
|
</el-radio-group>
|
|
|
|
|
|
</el-form-item>
|
|
|
|
|
|
</el-form>
|
2022-08-12 10:44:09 +00:00
|
|
|
|
</popup>
|
2022-06-23 11:03:08 +00:00
|
|
|
|
</div>
|
2022-06-22 09:57:02 +00:00
|
|
|
|
</template>
|
2022-08-12 10:44:09 +00:00
|
|
|
|
<script lang="ts" setup>
|
|
|
|
|
|
import { storageSetup } from '@/api/setting/storage'
|
|
|
|
|
|
import type { FormInstance } from 'element-plus'
|
|
|
|
|
|
import Popup from '@/components/popup/index.vue'
|
|
|
|
|
|
import { storageDetail } from '@/api/setting/storage'
|
2022-08-30 11:08:17 +00:00
|
|
|
|
import feedback from '@/utils/feedback'
|
2022-08-12 10:44:09 +00:00
|
|
|
|
enum StorageEnum {
|
|
|
|
|
|
LOCAL = 'local', // 本地
|
|
|
|
|
|
QINIU = 'qiniu', // 七牛云
|
|
|
|
|
|
ALIYUN = 'aliyun', // 阿里云OSS
|
|
|
|
|
|
QCLOUD = 'qcloud' // 腾讯云OSS
|
|
|
|
|
|
}
|
2022-06-22 09:57:02 +00:00
|
|
|
|
|
2022-08-12 10:44:09 +00:00
|
|
|
|
const emit = defineEmits(['success'])
|
|
|
|
|
|
const formRef = shallowRef<FormInstance>()
|
|
|
|
|
|
const popupRef = shallowRef<InstanceType<typeof Popup>>()
|
|
|
|
|
|
const formData = reactive({
|
|
|
|
|
|
alias: '',
|
|
|
|
|
|
bucket: '',
|
|
|
|
|
|
accessKey: '',
|
|
|
|
|
|
secretKey: '',
|
|
|
|
|
|
domain: '',
|
|
|
|
|
|
region: '', // 腾讯云需要
|
|
|
|
|
|
status: 0
|
|
|
|
|
|
})
|
2022-06-23 11:03:08 +00:00
|
|
|
|
|
2022-08-12 10:44:09 +00:00
|
|
|
|
const storageArr = [
|
|
|
|
|
|
{
|
|
|
|
|
|
name: '本地存储',
|
|
|
|
|
|
type: StorageEnum.LOCAL,
|
|
|
|
|
|
tips: '本地存储方式不需要配置其他参数'
|
|
|
|
|
|
},
|
|
|
|
|
|
{
|
|
|
|
|
|
name: '七牛云存储',
|
|
|
|
|
|
type: StorageEnum.QINIU,
|
|
|
|
|
|
tips: '切换七牛云存储后,素材库需要重新上传至七牛云'
|
|
|
|
|
|
},
|
|
|
|
|
|
{
|
|
|
|
|
|
name: '阿里云OSS',
|
|
|
|
|
|
type: StorageEnum.ALIYUN,
|
|
|
|
|
|
tips: '切换阿里云OSS后,素材库需要重新上传至阿里云OSS'
|
|
|
|
|
|
},
|
|
|
|
|
|
{
|
|
|
|
|
|
name: '腾讯云OSS',
|
|
|
|
|
|
type: StorageEnum.QCLOUD,
|
|
|
|
|
|
tips: '切换腾讯云OSS后,素材库需要重新上传至腾讯云OSS'
|
|
|
|
|
|
}
|
|
|
|
|
|
]
|
2022-06-23 11:03:08 +00:00
|
|
|
|
|
2022-08-12 10:44:09 +00:00
|
|
|
|
const formRules = {
|
|
|
|
|
|
bucket: [
|
|
|
|
|
|
{
|
|
|
|
|
|
required: true,
|
|
|
|
|
|
message: '请输入存储空间名称',
|
|
|
|
|
|
trigger: 'blur'
|
|
|
|
|
|
}
|
|
|
|
|
|
],
|
|
|
|
|
|
accessKey: [
|
|
|
|
|
|
{
|
|
|
|
|
|
required: true,
|
|
|
|
|
|
message: '请输入ACCESS_KEY',
|
|
|
|
|
|
trigger: 'blur'
|
|
|
|
|
|
}
|
|
|
|
|
|
],
|
|
|
|
|
|
secretKey: [
|
|
|
|
|
|
{
|
|
|
|
|
|
required: true,
|
|
|
|
|
|
message: '请输入SECRET_KEY',
|
|
|
|
|
|
trigger: 'blur'
|
|
|
|
|
|
}
|
|
|
|
|
|
],
|
|
|
|
|
|
domain: [
|
|
|
|
|
|
{
|
|
|
|
|
|
required: true,
|
|
|
|
|
|
message: '请输入空间域名',
|
|
|
|
|
|
trigger: 'blur'
|
|
|
|
|
|
}
|
|
|
|
|
|
],
|
|
|
|
|
|
region: [
|
|
|
|
|
|
{
|
|
|
|
|
|
required: true,
|
|
|
|
|
|
message: '请输入REGION',
|
|
|
|
|
|
trigger: 'blur'
|
|
|
|
|
|
}
|
|
|
|
|
|
]
|
|
|
|
|
|
}
|
2022-06-23 11:03:08 +00:00
|
|
|
|
|
2022-08-12 10:44:09 +00:00
|
|
|
|
const getStorageInfo = computed(() => {
|
|
|
|
|
|
return storageArr.find((item) => item.type == formData.alias)
|
|
|
|
|
|
})
|
2022-06-23 11:03:08 +00:00
|
|
|
|
|
2022-08-12 10:44:09 +00:00
|
|
|
|
const handleSubmit = async () => {
|
|
|
|
|
|
await formRef.value?.validate()
|
|
|
|
|
|
await storageSetup(formData)
|
2022-08-30 11:08:17 +00:00
|
|
|
|
feedback.msgSuccess('操作成功')
|
2022-08-12 10:44:09 +00:00
|
|
|
|
popupRef.value?.close()
|
|
|
|
|
|
emit('success')
|
|
|
|
|
|
}
|
2022-06-23 11:03:08 +00:00
|
|
|
|
|
2022-08-12 10:44:09 +00:00
|
|
|
|
const getDetail = async () => {
|
|
|
|
|
|
const data = await storageDetail({
|
|
|
|
|
|
alias: formData.alias
|
|
|
|
|
|
})
|
|
|
|
|
|
for (const key in data) {
|
|
|
|
|
|
//@ts-ignore
|
|
|
|
|
|
formData[key] = data[key]
|
2022-06-23 11:03:08 +00:00
|
|
|
|
}
|
2022-08-12 10:44:09 +00:00
|
|
|
|
}
|
2022-06-23 11:03:08 +00:00
|
|
|
|
|
2022-08-12 10:44:09 +00:00
|
|
|
|
const open = (type: string) => {
|
|
|
|
|
|
formData.alias = type
|
|
|
|
|
|
popupRef.value?.open()
|
|
|
|
|
|
getDetail()
|
|
|
|
|
|
}
|
2022-06-23 11:03:08 +00:00
|
|
|
|
|
2022-08-12 10:44:09 +00:00
|
|
|
|
const handleClose = () => {
|
|
|
|
|
|
formRef.value?.resetFields()
|
|
|
|
|
|
}
|
2022-06-23 11:03:08 +00:00
|
|
|
|
|
2022-08-12 10:44:09 +00:00
|
|
|
|
defineExpose({
|
|
|
|
|
|
open
|
|
|
|
|
|
})
|
2022-06-23 11:03:08 +00:00
|
|
|
|
</script>
|