Files
yusheng-admin/src/views/Level/cpLevel/form.vue
2025-11-19 16:48:49 +08:00

112 lines
4.2 KiB
Vue
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<script setup lang="ts">
import { ref, onBeforeMount } from "vue";
import uploadImage from '@/components/UploadImage/index.vue';
import { queryAdornmentList } from '@/api/modules/activities';
const ruleFormRef = ref();
const formRules = ref({
// level: [{ required: true, message: "请输入等级", trigger: "blur" }],
// change_value: [{ required: true, message: "请输入升级所需经验值", trigger: "blur" }],
// image: [{ required: true, message: "请上传等级图标", trigger: "change" }],
// rights_icon: [{ required: true, message: "请上传特权图标", trigger: "change" }],
// name: [{ required: true, message: "请输入等级名称", trigger: "blur" }, { min: 1, max: 10, message: '长度在 1 到 10 个字符', trigger: 'blur' }]
});
// 挂件上的头像位置0-上1-右上2-右3-右下4-下5-左下6-左7-左上
const directionList = ref([
{ name: '上', id: 0 },
{ name: '右上', id: 1 },
{ name: '右', id: 2 },
{ name: '右下', id: 3 },
{ name: '下', id: 4 },
{ name: '左下', id: 5 },
{ name: '左', id: 6 },
{ name: '左上', id: 7 }
])
const props = defineProps(["formInline"]);
const newFormInline = ref(
props.formInline
? props.formInline
: {
level: "",
name: "",
image: "",
change_value: "",
rights_icon: "",
bg_image: "",
color: ""
}
);
function getRef() {
return ruleFormRef.value;
}
function handleFileSuccess(list) {
newFormInline.value.image = list.join(',')
}
function handleIconSuccess(list) {
newFormInline.value.rights_icon = list.join(',')
}
function handleBgSuccess(list) {
newFormInline.value.pendant = list.join(',')
}
const AdornmentList = ref([])
const getAdornmentList = async () => {
// 坐骑是2 头像框是3
const { data, code } = await queryAdornmentList({ type: 2 })
AdornmentList.value = code ? data : []
}
const AvatarList = ref([])
const getAvatarList = async () => {
// 坐骑是2 头像框是3
const { data, code } = await queryAdornmentList({ type: 1 })
AvatarList.value = code ? data : []
}
onBeforeMount(() => {
getAdornmentList()
getAvatarList()
})
defineExpose({ getRef });
</script>
<template>
<!-- pendant cp装扮 rights_icon CP特效地址-->
<el-form ref="ruleFormRef" :model="newFormInline" :rules="formRules" label-width="120px">
<el-form-item label="等级/段位" prop="level">
<el-input v-model="newFormInline.level" clearable placeholder="请输入等级" />
</el-form-item>
<el-form-item label="等级名称" prop="name">
<el-input v-model="newFormInline.name" clearable placeholder="请输入等级名称" />
</el-form-item>
<el-form-item label="等级图标" prop="image">
<uploadImage @handleSuccess="handleFileSuccess" :limit="1" :echoUrl="newFormInline.image" />
</el-form-item>
<el-form-item label="升级所需经验值" prop="change_value">
<el-input-number v-model="newFormInline.change_value"></el-input-number>
</el-form-item>
<el-form-item label="CP特效" prop="rights_icon">
<uploadImage @handleSuccess="handleIconSuccess" :acceptType="'.mp4'" :limit="1"
:echoUrl="newFormInline.rights_icon" />
</el-form-item>
<el-form-item label="CP装扮" prop="pendant">
<uploadImage @handleSuccess="handleBgSuccess" :acceptType="'.mp4'" :limit="1" :echoUrl="newFormInline.pendant" />
</el-form-item>
<el-form-item label="头像框" prop="dress_id">
<el-select v-model="newFormInline.dress_id" placeholder="请选择头像框">
<el-option v-for="item in AvatarList" :key="item.id" :label="item.name" :value="item.id">
</el-option>
</el-select>
</el-form-item>
<el-form-item label="坐骑" prop="jiajia_id">
<el-select v-model="newFormInline.jiajia_id" placeholder="请选择坐骑">
<el-option v-for="item in AdornmentList" :key="item.id
" :label="item.name" :value="item.id">
</el-option>
</el-select>
</el-form-item>
<el-form-item label=" 挂件位置" prop="direction">
<el-select v-model="newFormInline.direction" placeholder="请选择位置">
<el-option v-for="item in directionList" :key="item.id" :label="item.name" :value="item.id">
</el-option>
</el-select>
</el-form-item>
</el-form>
</template>