优化资产编辑和分类管理功能,完善虚拟资产配置

This commit is contained in:
WUSIJIAN
2025-12-22 14:08:17 +08:00
parent 1a904388ef
commit ac0b790363
3 changed files with 334 additions and 109 deletions

View File

@@ -215,8 +215,42 @@
<el-divider content-position="left">虚拟资产配置</el-divider>
<el-row :gutter="24">
<el-col :span="12">
<el-form-item label="虚拟资产ID">
<el-input v-model="ruleForm.virtualAssetConfig.virtualAssetId" placeholder="请输入虚拟资产ID" />
<el-form-item label="HTTP方法">
<el-select v-model="ruleForm.virtualAssetConfig.method" placeholder="请选择HTTP方法" class="w100">
<el-option label="GET" value="GET" />
<el-option label="POST" value="POST" />
<el-option label="PUT" value="PUT" />
<el-option label="DELETE" value="DELETE" />
</el-select>
</el-form-item>
</el-col>
</el-row>
<el-row :gutter="24">
<el-col :span="12">
<el-form-item label="请求地址">
<el-input v-model="ruleForm.virtualAssetConfig.requestURL" placeholder="请输入请求地址" />
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="认证类型">
<el-select v-model="ruleForm.virtualAssetConfig.authType" placeholder="请选择认证类型" class="w100">
<el-option label="无认证" value="none" />
<el-option label="API Key" value="apikey" />
<el-option label="Bearer Token" value="bearer" />
<el-option label="OAuth" value="oauth" />
</el-select>
</el-form-item>
</el-col>
</el-row>
<el-row :gutter="24" v-if="ruleForm.virtualAssetConfig.authType && ruleForm.virtualAssetConfig.authType !== 'none'">
<el-col :span="24">
<el-form-item label="认证配置">
<el-input
v-model="ruleForm.virtualAssetConfig.authConfig"
type="textarea"
:rows="4"
placeholder='请输入认证配置JSON例如{"api_key": "your_api_key"}'
/>
</el-form-item>
</el-col>
</el-row>
@@ -275,8 +309,12 @@
<el-form-item label="例外日期">
<div class="config-list-container">
<div v-for="(exc, index) in ruleForm.serviceAssetConfig.schedule.exceptions" :key="index" class="config-list-item">
<el-date-picker v-model="exc.date" type="date" format="YYYY-MM-DD" value-format="YYYY-MM-DD" placeholder="日期" style="width: 130px" />
<el-select v-model="exc.dayOfWeek" placeholder="星期" style="width: 90px">
<el-select v-model="exc.exceptionType" placeholder="类型" style="width: 100px" @change="onExceptionTypeChange(exc)">
<el-option label="指定日期" value="date" />
<el-option label="指定星期" value="dayOfWeek" />
</el-select>
<el-date-picker v-if="exc.exceptionType === 'date'" v-model="exc.date" type="date" format="YYYY-MM-DD" value-format="YYYY-MM-DD" placeholder="日期" style="width: 130px" />
<el-select v-if="exc.exceptionType === 'dayOfWeek'" v-model="exc.dayOfWeek" placeholder="星期" style="width: 100px">
<el-option v-for="d in 7" :key="d" :label="'周' + ['一','二','三','四','五','六','日'][d-1]" :value="String(d)" />
</el-select>
<el-select v-model="exc.status" placeholder="状态" style="width: 90px">
@@ -330,6 +368,7 @@ interface TimeSlot {
}
interface Exception {
exceptionType: 'date' | 'dayOfWeek';
date: string;
status: number;
reason: string;
@@ -360,7 +399,10 @@ interface RuleForm {
};
};
virtualAssetConfig: {
virtualAssetId: string;
method: string;
requestURL: string;
authType: string;
authConfig: string;
};
serviceAssetConfig: {
schedule: {
@@ -424,7 +466,10 @@ const getInitialForm = (): RuleForm => ({
},
},
virtualAssetConfig: {
virtualAssetId: '',
method: 'GET',
requestURL: '',
authType: 'none',
authConfig: '',
},
serviceAssetConfig: {
schedule: {
@@ -490,6 +535,7 @@ const removeTimeSlot = (index: number) => {
// 例外日期操作
const addException = () => {
ruleForm.serviceAssetConfig.schedule.exceptions.push({
exceptionType: 'date',
date: '',
status: 1,
reason: '',
@@ -501,6 +547,15 @@ const removeException = (index: number) => {
ruleForm.serviceAssetConfig.schedule.exceptions.splice(index, 1);
};
// 例外类型切换时清空对应字段
const onExceptionTypeChange = (exc: Exception) => {
if (exc.exceptionType === 'date') {
exc.dayOfWeek = '';
} else {
exc.date = '';
}
};
// 重置表单
const resetForm = () => {
const initial = getInitialForm();