Browse Source

修改:场景手办

main
Linzm 3 weeks ago
parent
commit
fbb14eafe4
  1. 5
      components.d.ts
  2. 141
      src/views/cartoon/index.vue

5
components.d.ts vendored

@ -13,6 +13,11 @@ declare module '@vue/runtime-core' { @@ -13,6 +13,11 @@ declare module '@vue/runtime-core' {
Backup: typeof import('./src/components/arFrame/backup.vue')['default']
Backup2: typeof import('./src/components/arFrame/backup2.vue')['default']
Brand: typeof import('./src/components/brand/index.vue')['default']
ElButton: typeof import('element-plus/es')['ElButton']
ElIcon: typeof import('element-plus/es')['ElIcon']
ElInput: typeof import('element-plus/es')['ElInput']
ElRadioButton: typeof import('element-plus/es')['ElRadioButton']
ElRadioGroup: typeof import('element-plus/es')['ElRadioGroup']
Gsplat: typeof import('./src/components/arFrame/gsplat.vue')['default']
Hint: typeof import('./src/components/hint/hint.vue')['default']
Loading: typeof import('./src/components/loading/index.vue')['default']

141
src/views/cartoon/index.vue

@ -159,30 +159,80 @@ @@ -159,30 +159,80 @@
upload-icon="plus" />
</div>
</div>
<div v-if="typeId == 8 && mountsList.length > 0">
<div :style="`font-size: 16px; color: ${config.styles.colors.textPrimary}; font-weight: bold; margin-top: ${config.styles.spacing.sectionMargin};padding: 0 ${config.styles.spacing.pagePadding};`">
{{ toValueWithout("坐骑类型") }}
<div v-if="typeId == 8 && mountsList.length > 0">
<div :style="`font-size: 16px; color: ${config.styles.colors.textPrimary}; font-weight: bold; margin-top: ${config.styles.spacing.sectionMargin};padding: 0 ${config.styles.spacing.pagePadding};`">
{{ toValueWithout("坐骑类型") }}
</div>
<div class="mounts-list-container" :style="`padding: 0 ${config.styles.spacing.pagePadding};`">
<div v-for="item in mountsList" :key="item.id" class="mounts-item" @click="rideChange(item)">
<div class="mounts-item-list">
<img
class="mounts-item-image"
:src="getImageUrl(item.cover_path)"
:alt="toValueWithout(item.name)"
/>
<van-icon
v-if="item.id == mountsId"
class="mounts-icon"
:color="config.styles.colors.success"
name="checked"
size="18px"
/>
</div>
<div class="mounts-item-text">{{ toValueWithout(item.name) }}</div>
</div>
<div class="mounts-list-container" :style="`padding: 0 ${config.styles.spacing.pagePadding};`">
<div v-for="item in mountsList" :key="item.id" class="mounts-item" @click="rideChange(item)">
<div class="mounts-item-list">
<img
class="mounts-item-image"
:src="getImageUrl(item.cover_path)"
:alt="toValueWithout(item.name)"
/>
<van-icon
v-if="item.id == mountsId"
class="mounts-icon"
:color="config.styles.colors.success"
name="checked"
size="18px"
/>
</div>
<div class="mounts-item-text">{{ toValueWithout(item.name) }}</div>
</div>
</div>
<div v-if="typeId == 9">
<div :style="`font-size: 16px; color: ${config.styles.colors.textPrimary}; font-weight: bold; margin-top: ${config.styles.spacing.sectionMargin};padding: 0 ${config.styles.spacing.pagePadding};`">
{{ toValueWithout("场景道具") }}
</div>
<div :style="`padding: 10px ${config.styles.spacing.pagePadding};`">
<el-radio-group
v-model="method"
text-color="#000"
fill="#43CF7C"
@change="handleScenePropsChange"
>
<el-radio-button v-for="item in scenePropsList" :key="item.id" :label="item.id">
{{ toValueWithout(item.name) }}
</el-radio-button>
</el-radio-group>
<div v-if="method == 2" :style="`margin-top: 16px;`">
<div
v-for="(_item, index) in scenePropsInputs"
:key="index"
:style="`display: flex; align-items: center; margin-bottom: 12px;`"
>
<el-input
v-model="scenePropsInputs[index]"
:placeholder="toValueWithout('请输入场景道具')"
:style="`flex: 1; margin-right: 8px;`"
@input="updateSceneProp"
clearable
/>
<el-button
v-if="index === scenePropsInputs.length - 1 && scenePropsInputs.length < 4"
type="primary"
circle
size="small"
@click="addScenePropsInput"
>
<span style="font-size: 16px; line-height: 1;">+</span>
</el-button>
<el-button
v-if="scenePropsInputs.length > 1"
type="danger"
circle
size="small"
@click="removeScenePropsInput(index)"
>
<span style="font-size: 16px; line-height: 1;"></span>
</el-button>
</div>
</div>
</div>
</div>
<div :style="`height: 120px;`"></div>
<div class="design-action-bar">
<div class="design-left">
@ -214,6 +264,7 @@ import example1 from '@/assets/badge/1.png' @@ -214,6 +264,7 @@ import example1 from '@/assets/badge/1.png'
import example2 from '@/assets/badge/2.png'
import example3 from '@/assets/badge/3.png'
import example4 from '@/assets/badge/4.png'
// Element Plus 使
//
const { t } = useTranslation();
@ -377,6 +428,53 @@ const rideChange = (item: any) => { @@ -377,6 +428,53 @@ const rideChange = (item: any) => {
mountsId.value = item.id
}
//
const method = ref(1) // 1: , 2:
const scenePropsList = ref([
{ id: 1, name: '智能生成' },
{ id: 2, name: '自定义' }
])
const scenePropsInputs = ref<string[]>(['']) //
const scene_prop = ref('') //
//
const handleScenePropsChange = (val: number) => {
method.value = val
if (val === 1) {
// 使
scenePropsInputs.value = ['']
scene_prop.value = ''
} else if (val === 2) {
//
if (scenePropsInputs.value.length === 0) {
scenePropsInputs.value = ['']
}
updateSceneProp()
}
}
//
const addScenePropsInput = () => {
if (scenePropsInputs.value.length < 4) {
scenePropsInputs.value.push('')
}
}
//
const removeScenePropsInput = (index: number) => {
if (scenePropsInputs.value.length > 1) {
scenePropsInputs.value.splice(index, 1)
updateSceneProp()
}
}
//
const updateSceneProp = () => {
//
const validInputs = scenePropsInputs.value.filter(input => input && input.trim() !== '')
scene_prop.value = validInputs.join(',')
}
const isLoading = ref(false)
//
@ -661,7 +759,8 @@ const createLog = () => { @@ -661,7 +759,8 @@ const createLog = () => {
type_id: typeId.value,
kind_id: kindId.value,
mounts_id: mountsId.value || undefined,
subject_id: subjectId.value
subject_id: subjectId.value,
scene_prop: typeId.value === 9 && method.value === 2 && scene_prop.value ? scene_prop.value : undefined
},
})
}, 1000);

Loading…
Cancel
Save