yeg
2 天以前 d8eaa16682cf180e9563d6be05fb43057daf6c07
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
<script setup lang="ts">
import { onMounted, reactive, ref } from 'vue'
import { ElMessage } from 'element-plus'
import { getPlatformSettings, savePlatformSettings, uploadAdminVideo } from '../api/admin'
 
const form = reactive({
  bookstoreDiscount: '',
  hotelSubsidy: '',
  videoName: '',
  homeVideoUrl: '',
  miniProgramUrl: '',
  miniProgramAppId: '',
  miniProgramPath: '',
})
 
const saving = ref(false)
const videoInput = ref<HTMLInputElement>()
function uploadVideo() { videoInput.value?.click() }
async function selectVideo(event: Event) {
  const file = (event.target as HTMLInputElement).files?.[0]
  if (!file) return
  if (file.type !== 'video/mp4') { ElMessage.warning('仅支持 MP4 视频'); return }
  const result = await uploadAdminVideo(file)
  form.homeVideoUrl = result.url
  form.videoName = file.name
  ElMessage.success('视频已上传')
}
async function saveSettings() {
  saving.value = true
  try { await savePlatformSettings({ bookstoreDiscount: form.bookstoreDiscount, hotelSubsidy: form.hotelSubsidy, homeVideoUrl: form.homeVideoUrl, miniProgramUrl: form.miniProgramUrl, miniProgramAppId: form.miniProgramAppId, miniProgramPath: form.miniProgramPath }); ElMessage.success('平台设置已保存') } finally { saving.value = false }
}
onMounted(async () => { Object.assign(form, await getPlatformSettings()) })
</script>
 
<template>
  <div class="platform-settings-page">
    <el-form class="platform-settings-form" :model="form" label-width="116px" label-position="left">
      <el-form-item label="书店基本折扣设置">
        <el-input v-model="form.bookstoreDiscount" placeholder="请输入" />
        <span class="platform-setting-unit">折</span>
      </el-form-item>
 
      <el-form-item label="酒店免费入住补贴">
        <el-input v-model="form.hotelSubsidy" placeholder="请输入" />
        <span class="platform-setting-unit">人/晚</span>
      </el-form-item>
 
      <el-form-item label="首页视频配置">
        <el-button type="primary" @click="uploadVideo">上传</el-button>
        <input ref="videoInput" type="file" accept="video/mp4" hidden @change="selectVideo" />
        <span v-if="form.videoName || form.homeVideoUrl" class="platform-setting-file">{{ form.videoName || form.homeVideoUrl }}</span>
      </el-form-item>
 
      <el-form-item class="platform-mini-program-link" label="首页小程序跳转链接">
        <el-input v-model="form.miniProgramUrl" placeholder="请输入" />
      </el-form-item>
 
      <el-form-item class="platform-mini-program-link" label="目标小程序 AppID">
        <el-input v-model="form.miniProgramAppId" placeholder="如 wx1234567890abcdef,填写后首页入口直接跳转该小程序" />
      </el-form-item>
 
      <el-form-item class="platform-mini-program-link" label="目标小程序路径">
        <el-input v-model="form.miniProgramPath" placeholder="选填,如 pages/index/index" />
      </el-form-item>
 
 
      <el-form-item class="platform-settings-save">
        <el-button type="primary" :loading="saving" @click="saveSettings">保存</el-button>
      </el-form-item>
    </el-form>
  </div>
</template>