Files
weather-data-ui/src/views/oss/oss-config.vue
T
2026-03-11 10:53:53 +08:00

201 lines
9.2 KiB
Vue

<template>
<el-dialog v-model="visible" title="云存储配置" :close-on-click-modal="false" :close-on-press-escape="false">
<el-form :model="dataForm" :rules="rules" ref="dataFormRef" @keyup.enter="dataFormSubmitHandle()" label-width="140px">
<el-form-item label="类型">
<el-radio-group v-model="dataForm.type">
<el-radio :label="1">七牛</el-radio>
<el-radio :label="2">阿里云</el-radio>
<el-radio :label="3">腾讯云</el-radio>
<el-radio :label="4">自定义</el-radio>
</el-radio-group>
</el-form-item>
<template v-if="dataForm.type === 1">
<el-form-item prop="qiniuDomain" label="域名">
<el-input v-model="dataForm.qiniuDomain" placeholder="七牛绑定的域名"></el-input>
</el-form-item>
<el-form-item prop="qiniuPrefix" label="路径前缀">
<el-input v-model="dataForm.qiniuPrefix" placeholder="不设置默认为空"></el-input>
</el-form-item>
<el-form-item prop="qiniuAccessKey" label="AccessKey">
<el-input v-model="dataForm.qiniuAccessKey" placeholder="七牛AccessKey"></el-input>
</el-form-item>
<el-form-item prop="qiniuSecretKey" label="SecretKey">
<el-input v-model="dataForm.qiniuSecretKey" placeholder="七牛SecretKey"></el-input>
</el-form-item>
<el-form-item prop="qiniuBucketName" label="空间名">
<el-input v-model="dataForm.qiniuBucketName" placeholder="七牛存储空间名"></el-input>
</el-form-item>
</template>
<template v-else-if="dataForm.type === 2">
<el-form-item prop="aliyunDomain" label="域名">
<el-input v-model="dataForm.aliyunDomain" placeholder="阿里云绑定的域名,如:http://cdn.renren.io"></el-input>
</el-form-item>
<el-form-item prop="aliyunPrefix" label="路径前缀">
<el-input v-model="dataForm.aliyunPrefix" placeholder="不设置默认为空"></el-input>
</el-form-item>
<el-form-item prop="aliyunEndPoint" label="EndPoint">
<el-input v-model="dataForm.aliyunEndPoint" placeholder="阿里云EndPoint"></el-input>
</el-form-item>
<el-form-item prop="aliyunAccessKeyId" label="AccessKeyId">
<el-input v-model="dataForm.aliyunAccessKeyId" placeholder="阿里云AccessKeyId"></el-input>
</el-form-item>
<el-form-item prop="aliyunAccessKeySecret" label="AccessKeySecret">
<el-input v-model="dataForm.aliyunAccessKeySecret" placeholder="阿里云AccessKeySecret"></el-input>
</el-form-item>
<el-form-item prop="aliyunBucketName" label="BucketName">
<el-input v-model="dataForm.aliyunBucketName" placeholder="阿里云BucketName"></el-input>
</el-form-item>
</template>
<template v-else-if="dataForm.type === 3">
<el-form-item prop="qcloudDomain" label="域名">
<el-input v-model="dataForm.qcloudDomain" placeholder="腾讯云绑定的域名"></el-input>
</el-form-item>
<el-form-item prop="qcloudPrefix" label="路径前缀">
<el-input v-model="dataForm.qcloudPrefix" placeholder="不设置默认为空"></el-input>
</el-form-item>
<el-form-item prop="qcloudAppId" label="AppId">
<el-input v-model="dataForm.qcloudAppId" placeholder="腾讯云AppId"></el-input>
</el-form-item>
<el-form-item prop="qcloudSecretId" label="SecretId">
<el-input v-model="dataForm.qcloudSecretId" placeholder="腾讯云SecretId"></el-input>
</el-form-item>
<el-form-item prop="qcloudSecretKey" label="SecretKey">
<el-input v-model="dataForm.qcloudSecretKey" placeholder="腾讯云SecretKey"></el-input>
</el-form-item>
<el-form-item prop="qcloudBucketName" label="BucketName">
<el-input v-model="dataForm.qcloudBucketName" placeholder="腾讯云BucketName"></el-input>
</el-form-item>
<el-form-item prop="qcloudRegion" label="所属地区">
<el-select v-model="dataForm.qcloudRegion" clearable placeholder="请选择" class="w-percent-100">
<el-option value="ap-beijing-1" label="北京一区(华北)"></el-option>
<el-option value="ap-beijing" label="北京"></el-option>
<el-option value="ap-shanghai" label="上海(华东)"></el-option>
<el-option value="ap-guangzhou" label="广州(华南)"></el-option>
<el-option value="ap-chengdu" label="成都(西南)"></el-option>
<el-option value="ap-chongqing" label="重庆"></el-option>
<el-option value="ap-singapore" label="新加坡"></el-option>
<el-option value="ap-hongkong" label="香港"></el-option>
<el-option value="na-toronto" label="多伦多"></el-option>
<el-option value="eu-frankfurt" label="法兰克福"></el-option>
</el-select>
</el-form-item>
</template>
<template v-else-if="dataForm.type === 4">
<el-form-item prop="aliyunDomain" label="域名">
<el-input v-model="dataForm.aliyunDomain" placeholder="阿里云绑定的域名,如:http://cdn.renren.io"></el-input>
</el-form-item>
<el-form-item prop="aliyunPrefix" label="路径前缀">
<el-input v-model="dataForm.aliyunPrefix" placeholder="不设置默认为空"></el-input>
</el-form-item>
<el-form-item prop="aliyunEndPoint" label="EndPoint">
<el-input v-model="dataForm.aliyunEndPoint" placeholder="阿里云EndPoint"></el-input>
</el-form-item>
<el-form-item prop="aliyunAccessKeyId" label="AccessKeyId">
<el-input v-model="dataForm.aliyunAccessKeyId" placeholder="阿里云AccessKeyId"></el-input>
</el-form-item>
<el-form-item prop="aliyunAccessKeySecret" label="AccessKeySecret">
<el-input v-model="dataForm.aliyunAccessKeySecret" placeholder="阿里云AccessKeySecret"></el-input>
</el-form-item>
<el-form-item prop="aliyunBucketName" label="BucketName">
<el-input v-model="dataForm.aliyunBucketName" placeholder="阿里云BucketName"></el-input>
</el-form-item>
</template>
</el-form>
<template v-slot:footer>
<el-button @click="visible = false">取消</el-button>
<el-button type="primary" @click="dataFormSubmitHandle()">确定</el-button>
</template>
</el-dialog>
</template>
<script lang="ts" setup>
import { reactive, ref } from "vue";
import baseService from "@/service/baseService";
import { ElMessage } from "element-plus";
const emit = defineEmits(["refreshDataList"]);
const visible = ref(false);
const dataFormRef = ref();
const dataForm = reactive({
type: 0,
qiniuDomain: "",
qiniuPrefix: "",
qiniuAccessKey: "",
qiniuSecretKey: "",
qiniuBucketName: "",
aliyunDomain: "",
aliyunPrefix: "",
aliyunEndPoint: "",
aliyunAccessKeyId: "",
aliyunAccessKeySecret: "",
aliyunBucketName: "",
qcloudDomain: "",
qcloudPrefix: "",
qcloudAppId: 0,
qcloudSecretId: "",
qcloudSecretKey: "",
qcloudBucketName: "",
qcloudRegion: ""
});
const rules = ref({
qiniuDomain: [{ required: true, message: "必填项不能为空", trigger: "blur" }],
qiniuAccessKey: [{ required: true, message: "必填项不能为空", trigger: "blur" }],
qiniuSecretKey: [{ required: true, message: "必填项不能为空", trigger: "blur" }],
qiniuBucketName: [{ required: true, message: "必填项不能为空", trigger: "blur" }],
aliyunDomain: [{ required: true, message: "必填项不能为空", trigger: "blur" }],
aliyunEndPoint: [{ required: true, message: "必填项不能为空", trigger: "blur" }],
aliyunAccessKeyId: [{ required: true, message: "必填项不能为空", trigger: "blur" }],
aliyunAccessKeySecret: [{ required: true, message: "必填项不能为空", trigger: "blur" }],
aliyunBucketName: [{ required: true, message: "必填项不能为空", trigger: "blur" }],
qcloudDomain: [{ required: true, message: "必填项不能为空", trigger: "blur" }],
qcloudAppId: [{ required: true, message: "必填项不能为空", trigger: "blur" }],
qcloudSecretId: [{ required: true, message: "必填项不能为空", trigger: "blur" }],
qcloudSecretKey: [{ required: true, message: "必填项不能为空", trigger: "blur" }],
qcloudBucketName: [{ required: true, message: "必填项不能为空", trigger: "blur" }],
qcloudRegion: [{ required: true, message: "必填项不能为空", trigger: "blur" }]
});
const init = () => {
visible.value = true;
// 重置表单数据
if (dataFormRef.value) {
dataFormRef.value.resetFields();
}
getInfo();
};
// 获取信息
const getInfo = () => {
baseService.get("/sys/oss/info").then((res) => {
Object.assign(dataForm, res.data);
});
};
// 表单提交
const dataFormSubmitHandle = () => {
dataFormRef.value.validate((valid: boolean) => {
if (!valid) {
return false;
}
baseService.post("/sys/oss", dataForm).then((res) => {
ElMessage.success({
message: "成功",
duration: 500,
onClose: () => {
visible.value = false;
emit("refreshDataList");
}
});
});
});
};
defineExpose({
init
});
</script>