|
|
@@ -1,52 +1,92 @@
|
|
|
<!-- 通知公告-资讯管理-编辑 -->
|
|
|
<template>
|
|
|
- <app-drawer :title="t('investor.user.open.edit.title')" width="900" v-model:show="show" :refresh="refresh"
|
|
|
+ <app-drawer :title="t('investor.user.open.edit.title')" width="960" v-model:show="show" :refresh="refresh"
|
|
|
:loading="loading">
|
|
|
- <el-form ref="formRef" class="el-form--horizontal" label-width="100px" :model="formData" :rules="formRules"
|
|
|
- :show-message="false">
|
|
|
- <el-form-item :label="t('notice.news.edit.title1')" prop="title">
|
|
|
- <el-input v-model="formData.title" :placeholder="t('common.pleaseenter')" />
|
|
|
- </el-form-item>
|
|
|
- <el-form-item :label="t('notice.news.edit.columnid')" prop="columnid">
|
|
|
- <el-select v-model="formData.columnid">
|
|
|
- <el-option v-for="item in data?.siteColumnconfig" :key="item.id" :label="item.columnname"
|
|
|
- :value="item.id" />
|
|
|
- </el-select>
|
|
|
- </el-form-item>
|
|
|
- <el-form-item :label="t('notice.news.edit.author')" prop="author">
|
|
|
- <el-input v-model="formData.author" :placeholder="t('common.pleaseenter')" />
|
|
|
- </el-form-item>
|
|
|
- <el-form-item :label="t('notice.news.edit.srcid')" prop="srcid">
|
|
|
- <el-select v-model="formData.srcid">
|
|
|
- <el-option v-for="item in data?.gzMemberinfo" :key="item.memberid" :label="item.membername"
|
|
|
- :value="item.memberid" />
|
|
|
- </el-select>
|
|
|
- </el-form-item>
|
|
|
- <el-form-item :label="t('notice.news.edit.hits')" prop="hits">
|
|
|
- <el-input-number v-model="formData.hits" :placeholder="t('common.pleaseenter')" :min="0" />
|
|
|
- </el-form-item>
|
|
|
- <el-form-item :label="t('notice.news.edit.publishdate')" prop="publishdate">
|
|
|
- <el-date-picker v-model="formData.publishdate" value-format="YYYY-MM-DD"
|
|
|
- :disabled-date="(date: Date) => date.getTime() < Date.now() - 8.64e7"
|
|
|
- :placeholder="t('common.pleasechoice')" />
|
|
|
- </el-form-item>
|
|
|
- <el-form-item :label="t('notice.news.edit.istop')" prop="istop">
|
|
|
- <el-switch v-model="formData.istop" :active-value="1" :inactive-value="0" />
|
|
|
- </el-form-item>
|
|
|
- <el-form-item :label="t('notice.news.edit.isshow')" prop="isshow">
|
|
|
- <el-switch v-model="formData.isshow" :active-value="1" :inactive-value="0" />
|
|
|
- </el-form-item>
|
|
|
- <el-form-item :label="t('notice.news.edit.coverimage')" prop="coverimage">
|
|
|
- <app-upload v-model="uploadFiles" :file-types="['image']" :max-size="uploadConfig.maxFileSize" />
|
|
|
- </el-form-item>
|
|
|
- <el-form-item class="el-form-item--row" :label="t('notice.news.edit.brief')" prop="brief">
|
|
|
- <el-input type="textarea" v-model="formData.brief" maxlength="200" :rows="3"
|
|
|
- :placeholder="t('common.pleaseenter')" />
|
|
|
- </el-form-item>
|
|
|
- <el-form-item class="el-form-item--row" :label="t('notice.news.edit.context')" prop="context">
|
|
|
- <app-editor v-model="formData.context" />
|
|
|
- </el-form-item>
|
|
|
- </el-form>
|
|
|
+ <el-tabs v-model="selectedTab" type="border-card">
|
|
|
+ <template v-for="(item, index) in supportedLanguages" :key="index">
|
|
|
+ <el-tab-pane :label="item.label" :name="item.value" />
|
|
|
+ </template>
|
|
|
+ <el-form ref="formRef" class="el-form--horizontal" label-width="auto" :model="formData" :rules="formRules"
|
|
|
+ :show-message="false">
|
|
|
+ <el-form-item class="el-form-item--row" :label="t('notice.news.edit.title1')" prop="title">
|
|
|
+ <el-input v-model="formData.title" :placeholder="t('common.pleaseenter')"
|
|
|
+ v-if="selectedTab === Language.Simplified" />
|
|
|
+ <el-input v-model="formData.titleen" :placeholder="t('common.pleaseenter')"
|
|
|
+ v-if="selectedTab === Language.English" />
|
|
|
+ <el-input v-model="formData.titletw" :placeholder="t('common.pleaseenter')"
|
|
|
+ v-if="selectedTab === Language.Traditional" />
|
|
|
+ <el-input v-model="formData.titleth" :placeholder="t('common.pleaseenter')"
|
|
|
+ v-if="selectedTab === Language.Thai" />
|
|
|
+ <el-input v-model="formData.titlevi" :placeholder="t('common.pleaseenter')"
|
|
|
+ v-if="selectedTab === Language.Vietnamese" />
|
|
|
+ </el-form-item>
|
|
|
+ <el-form-item :label="t('notice.news.edit.columnid')" prop="columnid">
|
|
|
+ <el-select v-model="formData.columnid">
|
|
|
+ <el-option v-for="item in options.siteColumnconfig" :key="item.id" :label="item.columnname"
|
|
|
+ :value="item.id" />
|
|
|
+ </el-select>
|
|
|
+ </el-form-item>
|
|
|
+ <el-form-item :label="t('notice.news.edit.author')" prop="author">
|
|
|
+ <el-input v-model="formData.author" :placeholder="t('common.pleaseenter')"
|
|
|
+ v-if="selectedTab === Language.Simplified" />
|
|
|
+ <el-input v-model="formData.authoren" :placeholder="t('common.pleaseenter')"
|
|
|
+ v-if="selectedTab === Language.English" />
|
|
|
+ <el-input v-model="formData.authorth" :placeholder="t('common.pleaseenter')"
|
|
|
+ v-if="selectedTab === Language.Thai" />
|
|
|
+ <el-input v-model="formData.authortw" :placeholder="t('common.pleaseenter')"
|
|
|
+ v-if="selectedTab === Language.Traditional" />
|
|
|
+ <el-input v-model="formData.authorvi" :placeholder="t('common.pleaseenter')"
|
|
|
+ v-if="selectedTab === Language.Vietnamese" />
|
|
|
+ </el-form-item>
|
|
|
+ <el-form-item :label="t('notice.news.edit.srcid')" prop="srcid">
|
|
|
+ <el-select v-model="formData.srcid">
|
|
|
+ <el-option v-for="item in options.gzMemberinfo" :key="item.memberid" :label="item.membername"
|
|
|
+ :value="item.memberid" />
|
|
|
+ </el-select>
|
|
|
+ </el-form-item>
|
|
|
+ <el-form-item :label="t('notice.news.edit.hits')" prop="hits">
|
|
|
+ <el-input-number v-model="formData.hits" :placeholder="t('common.pleaseenter')" :min="0" />
|
|
|
+ </el-form-item>
|
|
|
+ <el-form-item :label="t('notice.news.edit.publishdate')" prop="publishdate">
|
|
|
+ <el-date-picker v-model="formData.publishdate" value-format="YYYY-MM-DD"
|
|
|
+ :disabled-date="(date: Date) => date.getTime() < Date.now() - 8.64e7"
|
|
|
+ :placeholder="t('common.pleasechoice')" />
|
|
|
+ </el-form-item>
|
|
|
+ <el-form-item :label="t('notice.news.edit.istop')" prop="istop">
|
|
|
+ <el-switch v-model="formData.istop" :active-value="1" :inactive-value="0" />
|
|
|
+ </el-form-item>
|
|
|
+ <el-form-item :label="t('notice.news.edit.isshow')" prop="isshow">
|
|
|
+ <el-switch v-model="formData.isshow" :active-value="1" :inactive-value="0" />
|
|
|
+ </el-form-item>
|
|
|
+ <el-form-item :label="t('notice.news.edit.coverimage')" prop="coverimage">
|
|
|
+ <app-upload v-model="uploadFiles" :file-types="['image']" :max-size="uploadConfig.maxFileSize" />
|
|
|
+ </el-form-item>
|
|
|
+ <el-form-item class="el-form-item--row" :label="t('notice.news.edit.brief')" prop="brief">
|
|
|
+ <el-input type="textarea" v-model="formData.brief" maxlength="200" :rows="3"
|
|
|
+ :placeholder="t('common.pleaseenter')" />
|
|
|
+ </el-form-item>
|
|
|
+ <el-form-item class="el-form-item--row" :label="t('notice.news.edit.context')" prop="context"
|
|
|
+ v-if="selectedTab === Language.Simplified">
|
|
|
+ <app-editor v-model="formData.context" />
|
|
|
+ </el-form-item>
|
|
|
+ <el-form-item class="el-form-item--row" :label="t('notice.news.edit.context')" prop="context"
|
|
|
+ v-if="selectedTab === Language.English">
|
|
|
+ <app-editor v-model="formData.contexten" />
|
|
|
+ </el-form-item>
|
|
|
+ <el-form-item class="el-form-item--row" :label="t('notice.news.edit.context')" prop="context"
|
|
|
+ v-if="selectedTab === Language.Thai">
|
|
|
+ <app-editor v-model="formData.contextth" />
|
|
|
+ </el-form-item>
|
|
|
+ <el-form-item class="el-form-item--row" :label="t('notice.news.edit.context')" prop="context"
|
|
|
+ v-if="selectedTab === Language.Traditional">
|
|
|
+ <app-editor v-model="formData.contexttw" />
|
|
|
+ </el-form-item>
|
|
|
+ <el-form-item class="el-form-item--row" :label="t('notice.news.edit.context')" prop="context"
|
|
|
+ v-if="selectedTab === Language.Vietnamese">
|
|
|
+ <app-editor v-model="formData.contextvi" />
|
|
|
+ </el-form-item>
|
|
|
+ </el-form>
|
|
|
+ </el-tabs>
|
|
|
<template #footer>
|
|
|
<el-button @click="onCancel(false)">{{ t('operation.close') }}</el-button>
|
|
|
<el-button type="primary" @click="onSubmit(10)">{{ t('operation.submit') }}</el-button>
|
|
|
@@ -56,9 +96,10 @@
|
|
|
</template>
|
|
|
|
|
|
<script lang="ts" setup>
|
|
|
-import { ref, PropType, onMounted } from 'vue'
|
|
|
+import { ref, PropType, onMounted, computed } from 'vue'
|
|
|
import { ElMessage, FormInstance, FormRules, UploadUserFile } from 'element-plus'
|
|
|
import { formatDate, parseFilePaths, extractFilePaths } from '@/filters'
|
|
|
+import { supportedLanguages, Language } from '@/constants/language'
|
|
|
import { uploadConfig } from '@/constants/common'
|
|
|
import { useRequest } from '@/hooks/request'
|
|
|
import { dealinform, informManinit, informDetail } from '@/services/api/notice'
|
|
|
@@ -73,10 +114,11 @@ const props = defineProps({
|
|
|
}
|
|
|
})
|
|
|
|
|
|
-const { global: { t } } = i18n
|
|
|
+const { t, locale } = i18n.global
|
|
|
const formRef = ref<FormInstance>()
|
|
|
const show = ref(true)
|
|
|
const refresh = ref(false)
|
|
|
+const selectedTab = ref(locale)
|
|
|
const uploadFiles = ref<UploadUserFile[]>([])
|
|
|
|
|
|
const formData = ref<Partial<Notice.DealInformReq>>({
|
|
|
@@ -100,6 +142,46 @@ const { loading, run } = useRequest(informDetail, {
|
|
|
}
|
|
|
})
|
|
|
|
|
|
+// 本地化语言
|
|
|
+const options = computed(() => {
|
|
|
+ const record = data.value
|
|
|
+ if (record) {
|
|
|
+ return {
|
|
|
+ siteColumnconfig: record.siteColumnconfig.map((e) => {
|
|
|
+ const localizedTitle = {
|
|
|
+ [Language.Simplified]: e.columnname,
|
|
|
+ [Language.English]: e.columnnameen,
|
|
|
+ [Language.Thai]: e.columnnameth,
|
|
|
+ [Language.Traditional]: e.columnnametw,
|
|
|
+ [Language.Vietnamese]: e.columnnamevi,
|
|
|
+ }
|
|
|
+ return {
|
|
|
+ ...e,
|
|
|
+ columnname: localizedTitle[selectedTab.value]
|
|
|
+ }
|
|
|
+ }),
|
|
|
+ gzMemberinfo: record.gzMemberinfo.map((e) => {
|
|
|
+ const localizedTitle = {
|
|
|
+ [Language.Simplified]: e.membername,
|
|
|
+ [Language.English]: e.membernameen,
|
|
|
+ [Language.Thai]: e.membernameth,
|
|
|
+ [Language.Traditional]: e.membernametw,
|
|
|
+ [Language.Vietnamese]: e.membernamevi,
|
|
|
+ }
|
|
|
+ return {
|
|
|
+ ...e,
|
|
|
+ membername: localizedTitle[selectedTab.value]
|
|
|
+ }
|
|
|
+ })
|
|
|
+ }
|
|
|
+ } else {
|
|
|
+ return {
|
|
|
+ siteColumnconfig: [],
|
|
|
+ gzMemberinfo: []
|
|
|
+ }
|
|
|
+ }
|
|
|
+})
|
|
|
+
|
|
|
// 表单验证规则
|
|
|
const formRules: FormRules = {
|
|
|
title: [{ required: true }],
|