2025-06-26 18:48:36 +08:00

165 lines
6.0 KiB
Vue

<template>
<x-search-bar class="mb-8-2">
<template #default="{ gutter, colSpan }">
<a-form-item :label="'零容忍'" name="reportContent">
<a-textarea :placeholder="'请输入零容忍内容'" v-model:value="reportContent"></a-textarea>
</a-form-item>
<a-form-item :label="'零容忍图片'" name="reportImage">
<x-upload-image v-model="reportImage" @imgChange="imgChange" />
</a-form-item>
<a-form-item :label="'举报邮箱'" name="email">
<a-input :placeholder="'请输入举报邮箱'" v-model:value="email"></a-input>
</a-form-item>
<a-form-item :label="'经度'" name="lat">
<a-input-number :placeholder="'请输入经度'" v-model:value="lat"></a-input-number>
</a-form-item>
<a-form-item :label="'纬度'" name="lon">
<a-input-number :placeholder="'请输入经度'" v-model:value="lon"></a-input-number>
</a-form-item>
<a-form-item :label="'地址'" name="address">
<a-input :placeholder="'请输入地址'" v-model:value="address"></a-input>
</a-form-item>
<a-form-item :label="'电话'" name="phone">
<a-input :placeholder="'请输入电话'" v-model:value="phone"></a-input>
</a-form-item>
<a-form-item :label="'编码'" name="reportNum">
<a-input :placeholder="'请输入编码'" v-model:value="reportNum"></a-input>
</a-form-item>
<template v-if="Array.isArray(socialMedia)">
<a-form-item
v-for="(itemImg, index) in socialMedia"
:key="index"
:label="itemImg.name || `社交媒体${index + 1}`">
<a-input
class="inputPhone"
v-model:value="itemImg.name"
placeholder="请输入图片名称"
/>
<x-upload-image
v-model="itemImg.image"
@imgChange="(value) => imgChange(index, value)"
/>
<a-input
class="inputPhone"
v-model:value="itemImg.link"
placeholder="请输入跳转链接"
/>
<a-button
danger
@click="removeSocialMedia(index)"
size="small"
style="margin-bottom: 20px">删除
</a-button>
</a-form-item>
<a-form-item>
<a-button
type="dashed"
block
@click="addSocialMedia">新增社交媒体
</a-button>
</a-form-item>
</template>
<x-editor :modelValue="affirm" @update:modelValue="affirm = $event" placeholder="请输入声明内容"></x-editor>
<a-button ghost type="primary" @click="handleSearch" style="margin-top: 20px">保存</a-button>
</template>
</x-search-bar>
</template>
<script setup>
import { message } from 'ant-design-vue'
import { ref } from 'vue'
import apis from '@/apis' // 假设这里包含 saveAffirm 接口
import { usePagination } from '@/hooks'
import { useI18n } from 'vue-i18n'
import { getWebData,updateWebData} from '@/apis/modules/webSite'
import XSearchBar from '@/components/SearchBar/SearchBar.vue' // 获取声明接口
defineOptions({
name: 'contactUs',
})
const { t } = useI18n()
const { showLoading, hideLoading } = usePagination()
const affirm = ref(null)
const id = ref(null)
const reportContent = ref(null)
const reportImage = ref(null)
const email = ref(null)
const lat = ref(null)
const lon = ref(null)
const address = ref(null)
const phone = ref(null)
const reportNum = ref(null)
const socialMedia = ref([{ name: '', image: '', link: '' }])
const imgChange = (index, value) => {
socialMedia.value[index].image = value
}
// 页面加载时获取声明内容
getPageList()
/**
* 获取声明内容
*/
async function getPageList() {
try {
showLoading()
const res = await getWebData() // 假设返回格式为 { data: { affirm: '内容' } }
if (res?.data) {
id.value = res.data.id
affirm.value = res.data.affirm
reportContent.value = res.data.reportContent
reportImage.value = res.data.reportImage
email.value = res.data.email
lat.value = res.data.lat
lon.value = res.data.lon
address.value = res.data.address
phone.value = res.data.phone
reportNum.value = res.data.reportNum
socialMedia.value = Array.isArray(res.data.socialMedia) ? res.data.socialMedia : []
//console.log(affirm.value)
console.log("web-Id:",id.value)
console.log('webData',res.data)
}
} catch (e) {
message.error('获取声明内容失败')
} finally {
hideLoading()
}
}
/**
* 提交声明内容
*/
async function handleSearch() {
try {
showLoading()
console.log("id.value:", id.value)
await apis.webSite.updateWebData(id.value, {
affirm: affirm.value,
reportContent: reportContent.value,
reportImage: reportImage.value,
email: email.value,
lat: lat.value,
lon: lon.value,
address: address.value,
phone: phone.value,
reportNum: reportNum.value,
socialMedia: socialMedia.value,
})
message.success('保存成功')
} catch (e) {
message.error('保存失败,请重试')
} finally {
hideLoading()
}
}
function addSocialMedia() {
socialMedia.value.push({ name: '', image: '', link: '' })
}
function removeSocialMedia(index) {
socialMedia.value.splice(index, 1)
}
</script>
<style lang="less" scoped>
</style>