li.shaoyi před 4 měsíci
rodič
revize
b8ed38606a
66 změnil soubory, kde provedl 685 přidání a 236 odebrání
  1. 13 1
      src/constants/language.ts
  2. 2 1
      src/packages/pc/assets/themes/default/variable.less
  3. 5 5
      src/packages/pc/components/base/table-details/index.vue
  4. 4 12
      src/packages/pc/components/layouts/header/index.vue
  5. 1 1
      src/packages/pc/views/account/fundacct/components/bankinout/index.vue
  6. 1 1
      src/packages/pc/views/account/fundacct/components/edit/index.vue
  7. 1 1
      src/packages/pc/views/account/fundacct/components/password/index.vue
  8. 1 1
      src/packages/pc/views/account/fundacct/components/sign/edit/index.vue
  9. 1 1
      src/packages/pc/views/account/tradingacct/components/edit/index.vue
  10. 1 1
      src/packages/pc/views/admin/role/components/edit/index.vue
  11. 1 1
      src/packages/pc/views/admin/user/components/edit/index.vue
  12. 2 10
      src/packages/pc/views/auth/components/layout/index.vue
  13. 1 1
      src/packages/pc/views/auth/password/index.vue
  14. 1 1
      src/packages/pc/views/investor/custom/accountcfg/components/add/index.vue
  15. 1 1
      src/packages/pc/views/investor/custom/accountcfg/components/edit/index.vue
  16. 1 1
      src/packages/pc/views/investor/custom/group/components/edit/index.vue
  17. 1 1
      src/packages/pc/views/investor/custom/riskcfg/components/edit/index.vue
  18. 1 1
      src/packages/pc/views/investor/custom/tradecfg/components/add/index.vue
  19. 1 1
      src/packages/pc/views/investor/custom/tradecfg/components/edit/index.vue
  20. 1 1
      src/packages/pc/views/investor/manage/modification/components/audit/operate/index.vue
  21. 2 2
      src/packages/pc/views/investor/manage/transfer/components/edit/index.vue
  22. 1 1
      src/packages/pc/views/investor/manage/user/components/account/edit/index.vue
  23. 1 1
      src/packages/pc/views/investor/manage/user/components/edit/index.vue
  24. 1 1
      src/packages/pc/views/investor/user/open/components/details/aduit/index.vue
  25. 2 2
      src/packages/pc/views/investor/user/open/components/edit/index.vue
  26. 1 1
      src/packages/pc/views/member/institution/broker/components/edit/index.vue
  27. 1 1
      src/packages/pc/views/member/institution/broker/components/linecfg/index.vue
  28. 1 1
      src/packages/pc/views/member/institution/goodscfg/components/edit/index.vue
  29. 1 1
      src/packages/pc/views/member/institution/industry/components/edit/index.vue
  30. 1 1
      src/packages/pc/views/member/institution/marketer/components/edit/index.vue
  31. 1 1
      src/packages/pc/views/member/institution/marketing/components/edit/index.vue
  32. 1 1
      src/packages/pc/views/member/institution/open/components/details/agree.vue
  33. 1 1
      src/packages/pc/views/member/institution/open/components/details/refuse.vue
  34. 1 1
      src/packages/pc/views/member/institution/open/components/edit/index.vue
  35. 1 1
      src/packages/pc/views/member/institution/operation/components/edit/index.vue
  36. 1 1
      src/packages/pc/views/member/institution/operation/components/modify/index.vue
  37. 1 1
      src/packages/pc/views/member/institution/riskcfg/components/edit/index.vue
  38. 1 1
      src/packages/pc/views/member/institution/self/components/edit/index.vue
  39. 1 1
      src/packages/pc/views/member/institution/tradecfg/components/add/index.vue
  40. 1 1
      src/packages/pc/views/member/institution/tradecfg/components/edit/index.vue
  41. 1 1
      src/packages/pc/views/member/institution/user/components/account/edit/index.vue
  42. 1 1
      src/packages/pc/views/member/institution/user/components/edit/index.vue
  43. 1 1
      src/packages/pc/views/member/institution/warehouse/components/edit/index.vue
  44. 1 1
      src/packages/pc/views/member/subinstitution/manage/components/details/audit/index.vue
  45. 1 1
      src/packages/pc/views/member/subinstitution/manage/components/edit/index.vue
  46. 2 2
      src/packages/pc/views/member/subinstitution/transfer/components/edit/index.vue
  47. 1 1
      src/packages/pc/views/notice/manage/components/audit/index.vue
  48. 33 7
      src/packages/pc/views/notice/manage/components/details/index.vue
  49. 95 49
      src/packages/pc/views/notice/manage/components/edit/index.vue
  50. 16 0
      src/packages/pc/views/notice/manage/index.vue
  51. 29 5
      src/packages/pc/views/notice/news/components/details/index.vue
  52. 130 48
      src/packages/pc/views/notice/news/components/edit/index.vue
  53. 16 0
      src/packages/pc/views/notice/news/index.vue
  54. 28 3
      src/packages/pc/views/notice/newscolumn/components/details/index.vue
  55. 44 24
      src/packages/pc/views/notice/newscolumn/components/edit/index.vue
  56. 16 0
      src/packages/pc/views/notice/newscolumn/index.vue
  57. 28 3
      src/packages/pc/views/notice/newssource/components/details/index.vue
  58. 40 16
      src/packages/pc/views/notice/newssource/components/edit/index.vue
  59. 16 0
      src/packages/pc/views/notice/newssource/index.vue
  60. 1 1
      src/packages/pc/views/profitshare/institution/config/components/edit/index.vue
  61. 1 1
      src/packages/pc/views/profitshare/institution/group/components/edit/index.vue
  62. 1 1
      src/packages/pc/views/system/exrate/components/edit/index.vue
  63. 1 1
      src/packages/pc/views/system/ipblacklist/components/edit/index.vue
  64. 1 1
      src/packages/pc/views/system/menu/components/edit/index.vue
  65. 1 1
      src/packages/pc/views/system/userblacklist/components/edit/index.vue
  66. 117 1
      src/types/model/notice.d.ts

+ 13 - 1
src/constants/language.ts

@@ -1,3 +1,6 @@
+import { computed } from 'vue'
+import service from '@/services'
+
 /**
  * 系统语言
  */
@@ -48,4 +51,13 @@ export function getLanguageLabelByValue(languageValue: Language) {
     const languages = getLanguageList()
     const item = languages.find((e) => e.value === languageValue)
     return item?.label ?? languageValue
-}
+}
+
+/**
+ * 系统支持的语言
+ */
+export const supportedLanguages = computed(() => {
+    const languages = getLanguageList()
+    const values = service.getConfig('locales')
+    return values.length ? languages.filter((e) => values.includes(e.value)) : languages
+})

+ 2 - 1
src/packages/pc/assets/themes/default/variable.less

@@ -81,6 +81,7 @@
             }
         }
 
+        .el-input,
         .el-select {
             width: 100%;
         }
@@ -100,6 +101,7 @@
 
         .el-form-item {
             width: 50%;
+            padding: 0 20px;
 
             &__label {
                 padding: 0 12px;
@@ -107,7 +109,6 @@
 
             &__content {
                 align-items: flex-start;
-                padding-right: 48px;
             }
 
             &--row {

+ 5 - 5
src/packages/pc/components/base/table-details/index.vue

@@ -31,7 +31,7 @@
 </template>
 
 <script lang="ts" setup>
-import { PropType, computed } from 'vue'
+import { PropType, computed,CSSProperties } from 'vue'
 import { handleNoneValue } from '@/filters'
 import { CellProp } from './types'
 import { i18n } from '@/stores'
@@ -104,21 +104,21 @@ const cellGroup = computed(() => {
     }, [])
 })
 
-const fieldsetStyle = computed(() => props.title ? {} : {
+const fieldsetStyle = computed<CSSProperties>(() => props.title ? {} : {
     borderWidth: 0,
     padding: 0
 })
 
-const tableStyle = computed(() => ({
+const tableStyle = computed<CSSProperties>(() => ({
     width: typeof props.width === 'number' ? props.width + 'px' : props.width
 }))
 
-const valueStyle = computed(() => ({
+const valueStyle = computed<CSSProperties>(() => ({
     borderWidth: props.borderWidth + 'px',
     borderColor: props.borderColor
 }))
 
-const labelStyle = computed(() => ({
+const labelStyle = computed<CSSProperties>(() => ({
     width: props.labelWidth ? props.labelWidth + 'px' : 'fit-content',
     textAlign: props.labelAlign,
     ...valueStyle.value

+ 4 - 12
src/packages/pc/components/layouts/header/index.vue

@@ -24,7 +24,7 @@
                 <span class="g-icon--language"></span>
                 <template #dropdown>
                     <el-dropdown-menu>
-                        <template v-for="item in languages" :key="item.value">
+                        <template v-for="item in supportedLanguages" :key="item.value">
                             <el-dropdown-item @click="switchLanguage(item.value)">{{ item.label }}</el-dropdown-item>
                         </template>
                     </el-dropdown-menu>
@@ -41,7 +41,7 @@
                 <template #dropdown>
                     <el-dropdown-menu>
                         <el-dropdown-item :icon="Key" @click="openComponent('Password')">{{ t('operation.modifypwd')
-                        }}</el-dropdown-item>
+                            }}</el-dropdown-item>
                         <el-dropdown-item :icon="SwitchButton" @click="eventBus.$emit('Logout')">{{
                             t('operation.loginout') }}</el-dropdown-item>
                     </el-dropdown-menu>
@@ -53,13 +53,12 @@
 </template>
 
 <script lang="ts" setup>
-import { ref, onMounted, computed, defineAsyncComponent } from 'vue'
+import { ref, onMounted, defineAsyncComponent } from 'vue'
 import { ArrowRight, Key, SwitchButton, ArrowDown } from '@element-plus/icons-vue'
 import { useComponent } from '@/hooks/component'
-import { getLanguageList, Language } from '@/constants/language'
+import { supportedLanguages, Language } from '@/constants/language'
 import { useGlobalStore, useUserStore, i18n } from '@/stores'
 import { localData } from '@/stores/storage'
-import service from '@/services'
 import eventBus from '@/services/bus'
 
 const componentMap = new Map<string, unknown>([
@@ -84,13 +83,6 @@ const exitFullSreen = () => {
     document.exitFullscreen();
 }
 
-// 语言列表
-const languages = computed(() => {
-    const languageList = getLanguageList()
-    const values = service.getConfig('locales')
-    return values.length ? languageList.filter((e) => values.includes(e.value)) : languageList
-})
-
 // 切换语言
 const switchLanguage = (lange: Language) => {
     if (i18n.global.locale !== lange) {

+ 1 - 1
src/packages/pc/views/account/fundacct/components/bankinout/index.vue

@@ -2,7 +2,7 @@
 <template>
     <app-drawer :title="t('account.fundacct.bankinout.title')" width="900" v-model:show="show" :refresh="refresh"
         :loading="loading">
-        <el-form ref="formRef" class="el-form--horizontal" label-width="140px" :model="formData" :rules="formRules"
+        <el-form ref="formRef" class="el-form--horizontal" label-width="auto" :model="formData" :rules="formRules"
             :show-message="false">
             <fieldset class="g-fieldset el-form--horizontal">
                 <legend class="g-fieldset__legend">{{ t('common.baseinfo') }}</legend>

+ 1 - 1
src/packages/pc/views/account/fundacct/components/edit/index.vue

@@ -1,7 +1,7 @@
 <!-- 账号管理-资金账户管理-编辑 -->
 <template>
     <app-drawer :title="t('account.fundacct.edit.title')" width="900" v-model:show="show" :refresh="refresh" :loading="loading">
-        <el-form ref="formRef" class="el-form--horizontal" label-width="180px" :model="formData" :show-message="false">
+        <el-form ref="formRef" class="el-form--horizontal" label-width="auto" :model="formData" :show-message="false">
             <el-form-item :label="t('account.fundacct.edit.accountId')">
                 <span>{{ record.accountId }}</span>
             </el-form-item>

+ 1 - 1
src/packages/pc/views/account/fundacct/components/password/index.vue

@@ -2,7 +2,7 @@
 <template>
     <app-drawer :title="t('account.fundacct.password.title')" width="480" v-model:show="show" :refresh="refresh"
         :loading="loading">
-        <el-form ref="formRef" class="el-form--vertical" label-width="100px" :model="formData" :rules="formRules">
+        <el-form ref="formRef" class="el-form--vertical" label-width="auto" :model="formData" :rules="formRules">
             <el-form-item :label="t('account.fundacct.password.accountId')">
                 {{ record.accountId }}
             </el-form-item>

+ 1 - 1
src/packages/pc/views/account/fundacct/components/sign/edit/index.vue

@@ -2,7 +2,7 @@
 <template>
     <app-drawer :title="t('account.fundacct.sign.edit.title')" width="900" v-model:show="show" :refresh="refresh"
         :loading="loading">
-        <el-form ref="formRef" class="el-form--horizontal" label-width="140px" :model="formData" :rules="formRules"
+        <el-form ref="formRef" class="el-form--horizontal" label-width="auto" :model="formData" :rules="formRules"
             :show-message="false">
             <fieldset class="g-fieldset el-form--horizontal">
                 <legend class="g-fieldset__legend">{{ t('common.baseinfo') }}</legend>

+ 1 - 1
src/packages/pc/views/account/tradingacct/components/edit/index.vue

@@ -1,7 +1,7 @@
 <!-- 账号管理-交易账号管理-新增/修改 -->
 <template>
     <app-drawer :title="record ? t('account.tradingacct.edit.title') : t('account.tradingacct.edit.title1')" width="480" v-model:show="show" :refresh="refresh" :loading="loading">
-        <el-form ref="formRef" class="el-form--vertical" label-width="120px" :model="formData" :rules="formRules">
+        <el-form ref="formRef" class="el-form--vertical" label-width="auto" :model="formData" :rules="formRules">
             <el-form-item :label="t('account.tradingacct.edit.loginid')">
                 {{ formData.loginid }}
             </el-form-item>

+ 1 - 1
src/packages/pc/views/admin/role/components/edit/index.vue

@@ -2,7 +2,7 @@
 <template>
     <app-drawer :title="t('admin.role.edit.title')" width="680" v-model:show="show" :refresh="refresh"
         :loading="loading">
-        <el-form ref="formRef" class="el-form--vertical" label-width="90px" :model="formData" :rules="formRules">
+        <el-form ref="formRef" class="el-form--vertical" label-width="auto" :model="formData" :rules="formRules">
             <el-form-item :label="t('admin.role.edit.rolename')" prop="rolename">
                 <el-input v-model="formData.rolename" :placeholder="t('common.pleaseenter')"
                     :disabled="!!record?.autoid" />

+ 1 - 1
src/packages/pc/views/admin/user/components/edit/index.vue

@@ -2,7 +2,7 @@
 <template>
     <app-drawer :title="t('admin.user.edit.title')" width="480" v-model:show="show" :refresh="refresh"
         :loading="loading">
-        <el-form ref="formRef" class="el-form--vertical" label-width="80px" :model="formData" :rules="formRules"
+        <el-form ref="formRef" class="el-form--vertical" label-width="auto" :model="formData" :rules="formRules"
             :show-message="false">
             <el-form-item :label="t('admin.user.edit.logincode')" prop="logincode">
                 <el-input v-model="formData.logincode" maxlength="50" :placeholder="t('common.pleaseenter')"

+ 2 - 10
src/packages/pc/views/auth/components/layout/index.vue

@@ -10,7 +10,7 @@
         </el-button>
         <template #dropdown>
           <el-dropdown-menu>
-            <template v-for="item in languages" :key="item.value">
+            <template v-for="item in supportedLanguages" :key="item.value">
               <el-dropdown-item @click="switchLanguage(item.value)">{{ item.label }}</el-dropdown-item>
             </template>
           </el-dropdown-menu>
@@ -35,10 +35,9 @@
 <script lang="ts" setup>
 import { computed } from 'vue'
 import { ArrowDown } from '@element-plus/icons-vue'
-import { getLanguageList, getLanguageLabelByValue, Language } from '@/constants/language'
+import { supportedLanguages, getLanguageLabelByValue, Language } from '@/constants/language'
 import { i18n } from '@/stores'
 import { localData } from '@/stores/storage'
-import service from '@/services'
 
 defineProps({
   title: {
@@ -52,13 +51,6 @@ const t = i18n.global.t
 const meta = document.getElementsByTagName('meta')
 const version = meta.namedItem('revised')?.content ?? '0'
 
-// 语言列表
-const languages = computed(() => {
-  const languageList = getLanguageList()
-  const values = service.getConfig('locales')
-  return values.length ? languageList.filter((e) => values.includes(e.value)) : languageList
-})
-
 // 当前语言
 const languageLabel = computed(() => getLanguageLabelByValue(i18n.global.locale))
 

+ 1 - 1
src/packages/pc/views/auth/password/index.vue

@@ -1,7 +1,7 @@
 <!-- 修改密码 -->
 <template>
     <app-drawer :title="t('auth.password.title')" width="480" v-model:show="show" :loading="loading">
-        <el-form ref="formRef" class="el-form--vertical" label-width="100px" :model="formData" :rules="formRules">
+        <el-form ref="formRef" class="el-form--vertical" label-width="auto" :model="formData" :rules="formRules">
             <el-form-item :label="t('auth.password.membername')" prop="membername">
                 <span>{{ userStore.userInfo.username }}</span>
             </el-form-item>

+ 1 - 1
src/packages/pc/views/investor/custom/accountcfg/components/add/index.vue

@@ -2,7 +2,7 @@
 <template>
     <app-drawer :title="t('investor.custom.accountcfg.add.title')" width="1100" v-model:show="show" :refresh="refresh"
         :loading="loading">
-        <el-form ref="formRef" label-width="140px" :model="formData" :rules="formRules" :show-message="false">
+        <el-form ref="formRef" label-width="auto" :model="formData" :rules="formRules" :show-message="false">
             <fieldset class="g-fieldset el-form--horizontal">
                 <legend class="g-fieldset__legend">{{ t('investor.custom.accountcfg.add.subtitle1') }}</legend>
                 <el-form-item :label="t('investor.custom.accountcfg.add.userid')" prop="userid">

+ 1 - 1
src/packages/pc/views/investor/custom/accountcfg/components/edit/index.vue

@@ -2,7 +2,7 @@
 <template>
     <app-drawer :title="t('investor.custom.accountcfg.edit.title')" width="1100" v-model:show="show" :refresh="refresh"
         :loading="loading">
-        <el-form ref="formRef" label-width="140px" :model="formData" :show-message="false">
+        <el-form ref="formRef" label-width="auto" :model="formData" :show-message="false">
             <fieldset class="g-fieldset el-form--horizontal">
                 <legend class="g-fieldset__legend">{{ t('investor.custom.accountcfg.edit.subtitle1') }}</legend>
                 <el-form-item :label="t('investor.custom.accountcfg.edit.userid')" >

+ 1 - 1
src/packages/pc/views/investor/custom/group/components/edit/index.vue

@@ -2,7 +2,7 @@
 <template>
     <app-drawer :title="t('investor.custom.group.edit.title')" width="900" v-model:show="show" :refresh="refresh"
         :loading="loading">
-        <el-form ref="formRef" label-width="140px" :model="formData" :rules="formRules" :show-message="false">
+        <el-form ref="formRef" label-width="auto" :model="formData" :rules="formRules" :show-message="false">
             <fieldset class="g-fieldset el-form--horizontal">
                 <legend class="g-fieldset__legend">{{ t('investor.custom.group.edit.subtitle1') }}</legend>
                 <el-form-item :label="t('investor.custom.group.edit.areauserid')" prop="areauserid"

+ 1 - 1
src/packages/pc/views/investor/custom/riskcfg/components/edit/index.vue

@@ -2,7 +2,7 @@
 <template>
     <app-drawer :title="t('investor.custom.riskcfg.edit.title')" width="900" v-model:show="show" :refresh="refresh"
         :loading="loading">
-        <el-form ref="formRef" label-width="140px" :model="formData" :rules="formRules" :show-message="false">
+        <el-form ref="formRef" label-width="auto" :model="formData" :rules="formRules" :show-message="false">
             <fieldset class="g-fieldset el-form--horizontal">
                 <legend class="g-fieldset__legend">{{ t('investor.custom.riskcfg.edit.subtitle1') }}</legend>
                 <el-form-item :label="t('investor.custom.riskcfg.edit.userid')" prop="userid">

+ 1 - 1
src/packages/pc/views/investor/custom/tradecfg/components/add/index.vue

@@ -2,7 +2,7 @@
 <template>
     <app-drawer :title="t('investor.custom.tradecfg.edit.title')" width="1100" v-model:show="show" :refresh="refresh"
         :loading="loading">
-        <el-form ref="formRef" label-width="140px" :model="formData" :rules="formRules" :show-message="false">
+        <el-form ref="formRef" label-width="auto" :model="formData" :rules="formRules" :show-message="false">
             <fieldset class="g-fieldset el-form--horizontal">
                 <legend class="g-fieldset__legend">{{ t('investor.custom.tradecfg.edit.subtitle1') }}</legend>
                 <el-form-item :label="t('investor.custom.tradecfg.edit.usergroupid')" prop="usergroupid">

+ 1 - 1
src/packages/pc/views/investor/custom/tradecfg/components/edit/index.vue

@@ -2,7 +2,7 @@
 <template>
     <app-drawer :title="t('investor.custom.tradecfg.edit.title')" width="1100" v-model:show="show" :refresh="refresh"
         :loading="loading">
-        <el-form ref="formRef" label-width="140px" :model="formData" :show-message="false">
+        <el-form ref="formRef" label-width="auto" :model="formData" :show-message="false">
             <fieldset class="g-fieldset el-form--horizontal">
                 <legend class="g-fieldset__legend">{{ t('investor.custom.tradecfg.edit.subtitle1') }}</legend>
                 <el-form-item :label="t('investor.custom.tradecfg.edit.usergroupid')">

+ 1 - 1
src/packages/pc/views/investor/manage/modification/components/audit/operate/index.vue

@@ -2,7 +2,7 @@
 <template>
     <app-drawer :title="t('investor.manage.modification.aduit.operate.title')" width="480" v-model:show="show"
         :refresh="refresh" :loading="loading">
-        <el-form ref="formRef" class="el-form--vertical" label-width="100px" :model="formData" :rules="formRules">
+        <el-form ref="formRef" class="el-form--vertical" label-width="auto" :model="formData" :rules="formRules">
             <el-form-item :label="t('investor.manage.modification.aduit.operate.auditflag')" prop="auditflag">
                 <el-radio-group v-model="formData.auditflag">
                     <el-radio :value="1">{{ t('investor.manage.modification.aduit.operate.auditflag1') }}</el-radio>

+ 2 - 2
src/packages/pc/views/investor/manage/transfer/components/edit/index.vue

@@ -2,7 +2,7 @@
 <template>
     <app-drawer :title="t('investor.manage.transfer.edit.title')" width="960" v-model:show="show" :refresh="refresh"
         :loading="loading">
-        <el-form ref="formRef" class="el-form--horizontal" label-width="140px" :model="formData" :rules="formRules"
+        <el-form ref="formRef" class="el-form--horizontal" label-width="auto" :model="formData" :rules="formRules"
             :show-message="false">
             <fieldset class="g-fieldset el-form--horizontal">
                 <legend class="g-fieldset__legend">{{ t('investor.manage.transfer.edit.legend') }}</legend>
@@ -61,7 +61,7 @@
                 <el-form-item :label="t('investor.manage.transfer.edit.cardnum1')">
                     {{ inUserInfo ? decryptAES(inUserInfo.cardnum) : handleNoneValue() }}
                 </el-form-item>
-                <el-form-item class="el-form-item--row">
+                <el-form-item label=" " class="el-form-item--row">
                     <span class="g-red">{{ t('investor.manage.transfer.edit.tips') }}</span>
                 </el-form-item>
             </fieldset>

+ 1 - 1
src/packages/pc/views/investor/manage/user/components/account/edit/index.vue

@@ -2,7 +2,7 @@
 <template>
     <app-drawer :title="t('investor.manage.user.account.edit.title')" width="480" v-model:show="show" :refresh="refresh"
         :loading="loading">
-        <el-form ref="formRef" class="el-form--vertical" label-width="100px" :model="formData" :rules="formRules">
+        <el-form ref="formRef" class="el-form--vertical" label-width="auto" :model="formData" :rules="formRules">
             <el-form-item :label="t('investor.manage.user.account.edit.accountid')">
                 {{ selectedItem.accountid }}
             </el-form-item>

+ 1 - 1
src/packages/pc/views/investor/manage/user/components/edit/index.vue

@@ -2,7 +2,7 @@
 <template>
     <app-drawer :title="t('investor.manage.user.edit.title')" width="900" v-model:show="show" :refresh="refresh"
         :loading="loading">
-        <el-form ref="formRef" class="el-form--horizontal" label-width="140px" :model="formData.userinfoDetailVo"
+        <el-form ref="formRef" class="el-form--horizontal" label-width="auto" :model="formData.userinfoDetailVo"
             :rules="formRules" :show-message="false">
             <fieldset class="g-fieldset el-form--horizontal">
                 <legend class="g-fieldset__legend">{{ t('common.baseinfo') }}</legend>

+ 1 - 1
src/packages/pc/views/investor/user/open/components/details/aduit/index.vue

@@ -2,7 +2,7 @@
 <template>
     <app-drawer :title="t('common.alert')" width="480" v-model:show="show" :loading="loading" :refresh="refresh">
         <div class="g-text-message" v-if="auditflag === 1">{{ t('investor.user.open.details.tips1') }}</div>
-        <el-form ref="formRef" label-width="100px" :model="formData" :rules="formRules" :show-message="false" v-else>
+        <el-form ref="formRef" label-width="auto" :model="formData" :rules="formRules" :show-message="false" v-else>
             <el-form-item label="不通过原因" prop="msg">
                 <el-input type="textarea" v-model="formData.msg" maxlength="200" :rows="5" placeholder="请输入" />
             </el-form-item>

+ 2 - 2
src/packages/pc/views/investor/user/open/components/edit/index.vue

@@ -2,7 +2,7 @@
 <template>
     <app-drawer :title="t('investor.user.open.edit.title')" width="900" v-model:show="show" :refresh="refresh"
         :loading="loading">
-        <el-form ref="formRef" class="el-form--horizontal" label-width="140px" :model="formData" :rules="formRules"
+        <el-form ref="formRef" class="el-form--horizontal" label-width="auto" :model="formData" :rules="formRules"
             :show-message="false">
             <el-form-item :label="t('investor.user.open.edit.memberareaid')" prop="memberareaid"
                 v-if="userStore.userInfo.releType === 1">
@@ -75,7 +75,7 @@
                         :type-message="t('common.tips21')" :max-size="uploadConfig.maxFileSize" />
                 </el-form-item>
             </template>
-            <el-form-item class="el-form-item--row">
+            <el-form-item label=" " class="el-form-item--row">
                 <p>{{ t('investor.user.open.edit.tips2') }}</p>
                 <p>{{ t('investor.user.open.edit.tips3') }}</p>
             </el-form-item>

+ 1 - 1
src/packages/pc/views/member/institution/broker/components/edit/index.vue

@@ -1,7 +1,7 @@
 <!-- 会员机构管理-机构管理-经纪会员管理-新增/修改 -->
 <template>
     <app-drawer :title="t('member.institution.broker.edit.title') " width="900" v-model:show="show" :loading="loading" :refresh="refresh">
-        <el-form ref="formRef" label-width="140px" :model="formData" :rules="formRules" :show-message="false">
+        <el-form ref="formRef" label-width="auto" :model="formData" :rules="formRules" :show-message="false">
             <fieldset class="g-fieldset el-form--horizontal">
                 <legend class="g-fieldset__legend">{{ t('member.institution.broker.edit.userid') }}</legend>
                 <el-form-item :label="t('member.institution.broker.edit.userid') " prop="userid">

+ 1 - 1
src/packages/pc/views/member/institution/broker/components/linecfg/index.vue

@@ -1,7 +1,7 @@
 <!-- 会员机构管理-机构管理-经纪会员管理-line账号配置 -->
 <template>
     <app-drawer :title="t('member.institution.broker.linecfg.title')" width="480" v-model:show="show" :loading="loading" :refresh="refresh">
-        <el-form ref="formRef" class="el-form--vertical" label-width="120px" :model="formData" :rules="formRules" :show-message="false">
+        <el-form ref="formRef" class="el-form--vertical" label-width="auto" :model="formData" :rules="formRules" :show-message="false">
             <el-form-item :label="t('member.institution.broker.linecfg.username')" prop="username">
                 <span>{{ record.userName }}/{{ record.userid }}</span>
             </el-form-item>

+ 1 - 1
src/packages/pc/views/member/institution/goodscfg/components/edit/index.vue

@@ -1,7 +1,7 @@
 <!-- 会员机构管理-机构管理-商品限制设置-编辑 -->
 <template>
     <app-drawer :title="t('member.institution.goodscfg.edit.title')" width="900" v-model:show="show" :loading="loading" :refresh="refresh">
-        <el-form ref="formRef" class="el-form--horizontal" label-width="140px" :model="formData" :rules="formRules"
+        <el-form ref="formRef" class="el-form--horizontal" label-width="auto" :model="formData" :rules="formRules"
             :show-message="false">
             <el-form-item :label="t('member.institution.goodscfg.edit.userid')" prop="userid">
                 <app-select-member ref="useridRef" v-model="formData.userid" :params="{ usertype: '2', roles: '7' }" />

+ 1 - 1
src/packages/pc/views/member/institution/industry/components/edit/index.vue

@@ -1,7 +1,7 @@
 <!-- 会员机构管理-机构管理-产业会员管理-新增 -->
 <template>
     <app-drawer :title="t('member.institution.industry.edit.title')" width="900" v-model:show="show" :loading="loading" :refresh="refresh">
-        <el-form ref="formRef" label-width="140px" :model="formData" :rules="formRules" :show-message="false">
+        <el-form ref="formRef" label-width="auto" :model="formData" :rules="formRules" :show-message="false">
             <fieldset class="g-fieldset el-form--horizontal">
                 <legend class="g-fieldset__legend">{{ t('member.institution.industry.edit.userid1') }}</legend>
                 <el-form-item :label="t('member.institution.industry.edit.userid')" prop="userid">

+ 1 - 1
src/packages/pc/views/member/institution/marketer/components/edit/index.vue

@@ -1,7 +1,7 @@
 <!-- 会员机构管理-机构管理-做市会员管理-新增/修改 -->
 <template>
     <app-drawer :title="t('member.institution.marketer.edit.title')" width="900" v-model:show="show" :loading="loading" :refresh="refresh">
-        <el-form ref="formRef" label-width="140px" :model="formData" :rules="formRules" :show-message="false">
+        <el-form ref="formRef" label-width="auto" :model="formData" :rules="formRules" :show-message="false">
             <fieldset class="g-fieldset el-form--horizontal">
                 <legend class="g-fieldset__legend">{{ t('member.institution.marketer.edit.legend') }}</legend>
                 <el-form-item :label="t('member.institution.marketer.edit.userid')" prop="userid">

+ 1 - 1
src/packages/pc/views/member/institution/marketing/components/edit/index.vue

@@ -1,7 +1,7 @@
 <!-- 会员机构管理-机构管理-营销中心管理-新增/修改 -->
 <template>
     <app-drawer :title="t('member.institution.marketing.edit.title')" width="900" v-model:show="show" :loading="loading" :refresh="refresh">
-        <el-form ref="formRef" label-width="140px" :model="formData" :rules="formRules" :show-message="false">
+        <el-form ref="formRef" label-width="auto" :model="formData" :rules="formRules" :show-message="false">
             <fieldset class="g-fieldset el-form--horizontal">
                 <legend class="g-fieldset__legend">{{ t('member.institution.marketing.edit.userid') }}</legend>
                 <el-form-item :label="t('member.institution.marketing.edit.userid')" prop="userid">

+ 1 - 1
src/packages/pc/views/member/institution/open/components/details/agree.vue

@@ -2,7 +2,7 @@
 <template>
     <app-drawer :title="t('member.institution.open.details.title2')" width="480" v-model:show="show" :loading="loading"
         :refresh="refresh">
-        <el-form ref="formRef" label-width="130px" :model="formData" :rules="formRules" :show-message="false">
+        <el-form ref="formRef" label-width="auto" :model="formData" :rules="formRules" :show-message="false">
             <el-form-item :label="t('member.institution.open.details.areacode')" prop="areacode">
                 <el-input type="number" v-model="formData.areacode"
                     :placeholder="t('member.institution.open.details.tips1')" />

+ 1 - 1
src/packages/pc/views/member/institution/open/components/details/refuse.vue

@@ -1,7 +1,7 @@
 <!-- 会员机构管理-机构管理-机构开户申请-审核拒绝 -->
 <template>
     <app-drawer :title="t('member.institution.open.details.title1')" width="480" v-model:show="show" :loading="loading" :refresh="refresh">
-        <el-form ref="formRef" label-width="100px" :model="formData" :rules="formRules" :show-message="false">
+        <el-form ref="formRef" label-width="auto" :model="formData" :rules="formRules" :show-message="false">
             <el-form-item :label="t('member.institution.open.details.reason')" prop="remark">
                 <el-input type="textarea" v-model="formData.remark" maxlength="200" :rows="5" :placeholder="t('common.pleaseenter')" />
             </el-form-item>

+ 1 - 1
src/packages/pc/views/member/institution/open/components/edit/index.vue

@@ -2,7 +2,7 @@
 <template>
     <app-drawer :title="t('member.institution.open.edit.title')" width="900" v-model:show="show" :refresh="refresh"
         :loading="loading">
-        <el-form ref="formRef" label-width="140px" :model="formData" :rules="formRules" :show-message="false">
+        <el-form ref="formRef" label-width="auto" :model="formData" :rules="formRules" :show-message="false">
             <fieldset class="g-fieldset el-form--horizontal">
                 <legend class="g-fieldset__legend">{{ t('common.baseinfo') }}</legend>
                 <el-form-item :label="t('member.institution.open.edit.username')" prop="username">

+ 1 - 1
src/packages/pc/views/member/institution/operation/components/edit/index.vue

@@ -1,7 +1,7 @@
 <!-- 会员机构管理-机构管理-运营机构管理-新增 -->
 <template>
     <app-drawer :title="t('member.institution.operation.edit.title')" width="900" v-model:show="show" :loading="loading" :refresh="refresh">
-        <el-form ref="formRef" label-width="140px" :model="formData" :rules="formRules" :show-message="false">
+        <el-form ref="formRef" label-width="auto" :model="formData" :rules="formRules" :show-message="false">
             <fieldset class="g-fieldset el-form--horizontal">
                 <legend class="g-fieldset__legend">{{ t('member.institution.operation.edit.userid') }}</legend>
                 <el-form-item :label="t('member.institution.operation.edit.userid')" prop="userid">

+ 1 - 1
src/packages/pc/views/member/institution/operation/components/modify/index.vue

@@ -1,7 +1,7 @@
 <!-- 会员机构管理-机构管理-运营机构管理-修改 -->
 <template>
     <app-drawer title="编辑" width="900" v-model:show="show" :loading="loading" :refresh="refresh">
-        <el-form ref="formRef" label-width="140px" :model="formData" :rules="formRules" :show-message="false">
+        <el-form ref="formRef" label-width="auto" :model="formData" :rules="formRules" :show-message="false">
             <fieldset class="g-fieldset el-form--horizontal">
                 <legend class="g-fieldset__legend">机构</legend>
                 <el-form-item label="机构" prop="userid">

+ 1 - 1
src/packages/pc/views/member/institution/riskcfg/components/edit/index.vue

@@ -1,7 +1,7 @@
 <!-- 会员机构管理-机构管理-风控个性化设置-新增/修改 -->
 <template>
     <app-drawer :title="t('member.institution.riskcfg.edit.title')" width="900" v-model:show="show" :refresh="refresh" :loading="loading">
-        <el-form ref="formRef" label-width="140px" :model="formData" :rules="formRules" :show-message="false">
+        <el-form ref="formRef" label-width="auto" :model="formData" :rules="formRules" :show-message="false">
             <fieldset class="g-fieldset el-form--horizontal">
                 <legend class="g-fieldset__legend">{{ t('investor.custom.riskcfg.edit.subtitle1') }}</legend>
                 <el-form-item :label="t('member.institution.riskcfg.edit.userid')" prop="userid">

+ 1 - 1
src/packages/pc/views/member/institution/self/components/edit/index.vue

@@ -1,7 +1,7 @@
 <!-- 会员机构管理-机构管理-自营会员管理-修改/新增 -->
 <template>
     <app-drawer :title="t('member.institution.self.edit.title')" width="900" v-model:show="show" :loading="loading" :refresh="refresh">
-        <el-form ref="formRef" label-width="140px" :model="formData" :rules="formRules" :show-message="false">
+        <el-form ref="formRef" label-width="auto" :model="formData" :rules="formRules" :show-message="false">
             <fieldset class="g-fieldset el-form--horizontal">
                 <legend class="g-fieldset__legend">{{ t('member.institution.self.edit.userid') }}</legend>
                 <el-form-item :label="t('member.institution.self.edit.userid')" prop="userid">

+ 1 - 1
src/packages/pc/views/member/institution/tradecfg/components/add/index.vue

@@ -2,7 +2,7 @@
 <template>
     <app-drawer :title="t('investor.custom.tradecfg.edit.title')" width="1100" v-model:show="show" :refresh="refresh"
         :loading="loading">
-        <el-form ref="formRef" label-width="140px" :model="formData" :rules="formRules" :show-message="false">
+        <el-form ref="formRef" label-width="auto" :model="formData" :rules="formRules" :show-message="false">
             <fieldset class="g-fieldset el-form--horizontal">
                 <legend class="g-fieldset__legend">{{ t('investor.custom.tradecfg.edit.subtitle1') }}</legend>
                 <el-form-item :label="t('member.institution.tradecfg.add.subtitle')" @change="onTradeTypeChange">

+ 1 - 1
src/packages/pc/views/member/institution/tradecfg/components/edit/index.vue

@@ -2,7 +2,7 @@
 <template>
     <app-drawer :title="t('member.institution.tradecfg.edit.title')" width="1100" v-model:show="show" :refresh="refresh"
         :loading="loading">
-        <el-form ref="formRef" label-width="140px" :model="formData" :show-message="false">
+        <el-form ref="formRef" label-width="auto" :model="formData" :show-message="false">
             <fieldset class="g-fieldset el-form--horizontal">
                 <legend class="g-fieldset__legend">{{ t('investor.custom.tradecfg.edit.subtitle1') }}</legend>
                 <el-form-item :label="memberItem?.tradetype === 1 ? t('member.institution.tradecfg.edit.tradetype1') : t('member.institution.tradecfg.edit.tradetype2')">

+ 1 - 1
src/packages/pc/views/member/institution/user/components/account/edit/index.vue

@@ -1,7 +1,7 @@
 <!-- 会员机构管理-机构管理-机构资料管理-资金账户-修改 -->
 <template>
     <app-drawer :title="t('member.institution.user.account.edit.title')" width="480" v-model:show="show" :refresh="refresh" :loading="loading">
-        <el-form ref="formRef" class="el-form--vertical" label-width="100px" :model="formData" :rules="formRules"
+        <el-form ref="formRef" class="el-form--vertical" label-width="auto" :model="formData" :rules="formRules"
             :show-message="false">
             <el-form-item :label="t('member.institution.user.account.edit.accountId')">
                 {{ record.accountId }}

+ 1 - 1
src/packages/pc/views/member/institution/user/components/edit/index.vue

@@ -2,7 +2,7 @@
 <template>
     <app-drawer :title="t('member.institution.open.edit.title')" width="900" v-model:show="show" :refresh="refresh"
         :loading="loading">
-        <el-form ref="formRef" label-width="140px" :model="formData" :rules="formRules" :show-message="false">
+        <el-form ref="formRef" label-width="auto" :model="formData" :rules="formRules" :show-message="false">
             <fieldset class="g-fieldset el-form--horizontal">
                 <legend class="g-fieldset__legend">{{ t('member.institution.user.edit.subtitle') }}</legend>
                 <el-form-item :label="t('member.institution.user.edit.userid')">

+ 1 - 1
src/packages/pc/views/member/institution/warehouse/components/edit/index.vue

@@ -1,7 +1,7 @@
 <!-- 会员机构管理-机构管理-仓库机构管理-修改/新增 -->
 <template>
     <app-drawer :title="t('member.institution.warehouse.edit.title')" width="900" v-model:show="show" :loading="loading" :refresh="refresh">
-        <el-form ref="formRef" label-width="140px" :model="formData" :rules="formRules" :show-message="false">
+        <el-form ref="formRef" label-width="auto" :model="formData" :rules="formRules" :show-message="false">
             <fieldset class="g-fieldset el-form--horizontal">
                 <legend class="g-fieldset__legend">{{ t('member.institution.warehouse.edit.userid') }}</legend>
                 <el-form-item :label="t('member.institution.warehouse.edit.userid')" prop="userid">

+ 1 - 1
src/packages/pc/views/member/subinstitution/manage/components/details/audit/index.vue

@@ -1,7 +1,7 @@
 <!-- 会员机构管理-子机构管理-子机构变更审核-审核 -->
 <template>
     <app-drawer title="修改" width="480" v-model:show="show" :refresh="refresh" :loading="loading">
-        <el-form ref="formRef" class="el-form--vertical" label-width="100px" :model="formData" :rules="formRules"
+        <el-form ref="formRef" class="el-form--vertical" label-width="auto" :model="formData" :rules="formRules"
             :show-message="false">
             <el-form-item label="审核状态" prop="auditflag">
                 <el-radio-group v-model="formData.auditflag">

+ 1 - 1
src/packages/pc/views/member/subinstitution/manage/components/edit/index.vue

@@ -2,7 +2,7 @@
 <template>
     <app-drawer :title="t('member.subinstitution.manage.edit.title')" width="900" v-model:show="show" :refresh="refresh"
         :loading="loading">
-        <el-form ref="formRef" label-width="140px" :model="formData" :rules="formRules" :show-message="false">
+        <el-form ref="formRef" label-width="auto" :model="formData" :rules="formRules" :show-message="false">
             <fieldset class="g-fieldset el-form--horizontal">
                 <legend class="g-fieldset__legend">{{ t('common.baseinfo') }}</legend>
                 <el-form-item :label="t('member.subinstitution.manage.edit.referral')" prop="parentuserid"

+ 2 - 2
src/packages/pc/views/member/subinstitution/transfer/components/edit/index.vue

@@ -2,7 +2,7 @@
 <template>
     <app-drawer :title="t('account.tradeacct.sign.edit.title')" width="960" v-model:show="show" :refresh="refresh"
         :loading="loading">
-        <el-form ref="formRef" class="el-form--horizontal" label-width="140px" :model="formData" :rules="formRules"
+        <el-form ref="formRef" class="el-form--horizontal" label-width="auto" :model="formData" :rules="formRules"
             :show-message="false">
             <fieldset class="g-fieldset el-form--horizontal">
                 <legend class="g-fieldset__legend">{{ t('member.subinstitution.transfer.edit.legend') }}</legend>
@@ -57,7 +57,7 @@
                 <el-form-item :label="t('member.subinstitution.transfer.edit.cardnum')">
                     {{ inUserInfo ? decryptAES(inUserInfo.cardnum) : handleNoneValue() }}
                 </el-form-item>
-                <el-form-item class="el-form-item--row">
+                <el-form-item label=" " class="el-form-item--row">
                     <span class="g-red">{{ t('member.subinstitution.transfer.edit.tips1') }}</span>
                 </el-form-item>
             </fieldset>

+ 1 - 1
src/packages/pc/views/notice/manage/components/audit/index.vue

@@ -6,7 +6,7 @@
         <el-dialog v-model="dialogVisible" :title="formData.auditflag === 1 ? t('notice.manage.aduit.alert') : ''" :width="480" append-to-body
             align-center>
             <span v-if="formData.auditflag === 1">{{ t('notice.manage.aduit.tips1') }}</span>
-            <el-form ref="formRef" class="el-form--vertical" label-width="100px" :model="formData" :rules="formRules"
+            <el-form ref="formRef" class="el-form--vertical" label-width="auto" :model="formData" :rules="formRules"
                 :show-message="false" v-else>
                 <el-form-item :label="t('notice.manage.aduit.reason')" prop="msg">
                     <el-input type="textarea" v-model="formData.msg" maxlength="200" :rows="5" :placeholder="t('common.pleaseenter')" />

+ 33 - 7
src/packages/pc/views/notice/manage/components/details/index.vue

@@ -1,13 +1,19 @@
 <!-- 通知公告-公告通知管理-详情 -->
 <template>
-    <app-drawer :title="t('notice.manage.details.title')" width="900" v-model:show="show"
-        :refresh="refresh">
-        <app-table-details :title="t('notice.manage.details.title1')" :data="data" :label-width="120" :cell-props="detailProps1" :column="2">
+    <app-drawer :title="t('notice.manage.details.title')" width="900" v-model:show="show" :refresh="refresh">
+        <el-tabs v-model="selectedTab">
+            <template v-for="(item, index) in supportedLanguages" :key="index">
+                <el-tab-pane :label="item.label" :name="item.value" />
+            </template>
+        </el-tabs>
+        <app-table-details :title="t('notice.manage.details.title1')" :data="details" :label-width="120"
+            :cell-props="detailProps1" :column="2">
             <template #content2="{ value }">
-                <div v-html="value"></div>
+                <div v-html="handleNoneValue(value)"></div>
             </template>
         </app-table-details>
-        <app-table-details :title="t('notice.manage.details.title2')" :data="data" :label-width="120" :cell-props="detailProps2" :column="2" />
+        <app-table-details :title="t('notice.manage.details.title2')" :data="details" :label-width="120"
+            :cell-props="detailProps2" :column="2" />
         <template #footer>
             <el-button @click="close(false)">{{ t('operation.close') }}</el-button>
             <slot></slot>
@@ -18,7 +24,8 @@
 <script lang="ts" setup>
 import { shallowRef, PropType, computed } from 'vue'
 import { ElMessage } from 'element-plus'
-import { formatDate } from '@/filters'
+import { handleNoneValue, formatDate } from '@/filters'
+import { supportedLanguages, Language } from '@/constants/language'
 import { useEnum } from '@/hooks/enum'
 import { useRequest } from '@/hooks/request'
 import { noticeMsgDetail } from '@/services/api/notice'
@@ -34,9 +41,10 @@ const props = defineProps({
     }
 })
 
-const { global: { t } } = i18n
+const { t, locale } = i18n.global
 const show = shallowRef(true)
 const refresh = shallowRef(false)
+const selectedTab = shallowRef(locale)
 
 const msgtypeEnum = useEnum('msgtype') // 消息类型
 const sendtypeEnum = useEnum('sendtype') // 发布类型
@@ -50,6 +58,24 @@ const { data } = useRequest(noticeMsgDetail, {
     }
 })
 
+const details = computed(() => {
+    const e = data.value
+    if (e) {
+        const localizedProperties = {
+            [Language.Simplified]: { title: e.title, content2: e.content2 },
+            [Language.English]: { title: e.titleen, content2: e.content2en },
+            [Language.Thai]: { title: e.titleth, content2: e.content2th },
+            [Language.Traditional]: { title: e.titletw, content2: e.content2tw },
+            [Language.Vietnamese]: { title: e.titlevi, content2: e.content2vi }
+        }
+        return {
+            ...e,
+            ...localizedProperties[selectedTab.value] // 本地化语言
+        }
+    }
+    return {}
+})
+
 const detailProps1 = computed<CellProp[]>(() => [
     { prop: 'msgtype', label: 'notice.manage.details.msgtype', formatValue: (val) => msgtypeEnum.getEnumTypeName(val) },
     { prop: 'sendtype', label: 'notice.manage.details.sendtype', formatValue: (val) => sendtypeEnum.getEnumTypeName(val) },

+ 95 - 49
src/packages/pc/views/notice/manage/components/edit/index.vue

@@ -1,56 +1,92 @@
 <!-- 通知公告-公告通知管理-编辑 -->
 <template>
-    <app-drawer :title="t('investor.user.open.edit.title')" width="1200" v-model:show="show" :refresh="refresh"
+    <app-drawer :title="t('investor.user.open.edit.title')" width="900" v-model:show="show" :refresh="refresh"
         :loading="loading">
-        <el-form ref="formRef" class="el-form--vertical" label-width="140px" :model="formData" :rules="formRules"
-            :show-message="false">
-            <el-form-item :label="t('notice.manage.edit.title')" prop="title">
-                <el-input v-model="formData.title" :placeholder="t('common.pleaseenter')" />
-            </el-form-item>
-            <el-form-item :label="t('notice.manage.edit.msgtype')" prop="msgtype">
-                <el-select v-model="formData.msgtype" :disabled="!!formData.autoid">
-                    <el-option v-for="item in msgtypeEnum.getEnumOptions()" :key="item.value" :label="item.label"
-                        :value="item.value" />
-                </el-select>
-            </el-form-item>
-            <el-form-item :label="t('notice.manage.edit.sendtype')" prop="sendtype">
-                <!-- 任务 #6986 -->
-                <el-select v-model="formData.sendtype" :disabled="!!formData.autoid">
-                    <el-option
-                        v-for="item in sendtypeEnum.getEnumOptions(userStore.userInfo.releType === 2 ? [3, 5] : [])"
-                        :key="item.value" :label="item.label" :value="item.value" />
-                </el-select>
-            </el-form-item>
-            <template v-if="formData.autoid">
-                <el-form-item :label="t('notice.manage.edit.membername')" v-if="formData.sendtype === 2 || formData.sendtype === 4">
-                    <el-input :value="data?.membername" disabled />
+        <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--vertical" label-width="auto" :model="formData" :rules="formRules"
+                :show-message="false">
+                <el-form-item :label="t('notice.manage.edit.title')" 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.manage.edit.membername1')" v-if="formData.sendtype === 3">
-                    <el-input :value="data?.membername" disabled />
+                <el-form-item :label="t('notice.manage.edit.msgtype')" prop="msgtype">
+                    <el-select v-model="formData.msgtype" :disabled="!!formData.autoid">
+                        <el-option v-for="item in msgtypeEnum.getEnumOptions()" :key="item.value" :label="item.label"
+                            :value="item.value" />
+                    </el-select>
                 </el-form-item>
-            </template>
-            <template v-else>
-                <el-form-item :label="t('notice.manage.edit.memberidlist')" prop="memberidlist"
-                    v-if="formData.sendtype === 2 || formData.sendtype === 4">
-                    <el-input :value="selectedValues.map((e) => e.accountname)" :placeholder="t('common.pleasechoice')" readonly>
-                        <template #append>
-                            <el-button @click="showSelectMember = true">{{ t('notice.manage.edit.choice') }}</el-button>
-                        </template>
-                    </el-input>
+                <el-form-item :label="t('notice.manage.edit.sendtype')" prop="sendtype">
+                    <!-- 任务 #6986 -->
+                    <el-select v-model="formData.sendtype" :disabled="!!formData.autoid">
+                        <el-option
+                            v-for="item in sendtypeEnum.getEnumOptions(userStore.userInfo.releType === 2 ? [3, 5] : [])"
+                            :key="item.value" :label="item.label" :value="item.value" />
+                    </el-select>
                 </el-form-item>
-                <el-form-item :label="t('notice.manage.edit.invertorID')" prop="invertorID" v-if="formData.sendtype === 3">
-                    <app-select-investor v-model="formData.invertorID" />
+                <template v-if="formData.autoid">
+                    <el-form-item :label="t('notice.manage.edit.membername')"
+                        v-if="formData.sendtype === 2 || formData.sendtype === 4">
+                        <el-input :value="data?.membername" disabled />
+                    </el-form-item>
+                    <el-form-item :label="t('notice.manage.edit.membername1')" v-if="formData.sendtype === 3">
+                        <el-input :value="data?.membername" disabled />
+                    </el-form-item>
+                </template>
+                <template v-else>
+                    <el-form-item :label="t('notice.manage.edit.memberidlist')" prop="memberidlist"
+                        v-if="formData.sendtype === 2 || formData.sendtype === 4">
+                        <el-input :value="selectedValues.map((e) => e.accountname)"
+                            :placeholder="t('common.pleasechoice')" readonly>
+                            <template #append>
+                                <el-button @click="showSelectMember = true">{{ t('notice.manage.edit.choice')
+                                    }}</el-button>
+                            </template>
+                        </el-input>
+                    </el-form-item>
+                    <el-form-item :label="t('notice.manage.edit.invertorID')" prop="invertorID"
+                        v-if="formData.sendtype === 3">
+                        <app-select-investor v-model="formData.invertorID" />
+                    </el-form-item>
+                </template>
+                <el-form-item :label="t('notice.manage.edit.startdate')" prop="date">
+                    <el-date-picker v-model="dateValue" type="datetimerange"
+                        :disabled-date="(date: Date) => date.getTime() < Date.now() - 8.64e7"
+                        :start-placeholder="t('notice.manage.edit.invailddate')"
+                        :end-placeholder="t('notice.manage.edit.结束时间')" value-format="YYYY-MM-DD HH:mm:ss" />
                 </el-form-item>
-            </template>
-            <el-form-item :label="t('notice.manage.edit.startdate')" prop="date">
-                <el-date-picker v-model="dateValue" type="datetimerange"
-                    :disabled-date="(date: Date) => date.getTime() < Date.now() - 8.64e7" :start-placeholder="t('notice.manage.edit.invailddate')"
-                    :end-placeholder="t('notice.manage.edit.结束时间')" value-format="YYYY-MM-DD HH:mm:ss" />
-            </el-form-item>
-            <el-form-item :label="t('notice.manage.edit.content2')" prop="content2">
-                <app-editor v-model="formData.content2" />
-            </el-form-item>
-        </el-form>
+                <el-form-item :label="t('notice.manage.edit.content2')" prop="content2"
+                    v-if="selectedTab === Language.Simplified">
+                    <app-editor v-model="formData.content2" />
+                </el-form-item>
+                <el-form-item :label="t('notice.manage.edit.content2')" prop="content2"
+                    v-if="selectedTab === Language.English">
+                    <app-editor v-model="formData.content2en" />
+                </el-form-item>
+                <el-form-item :label="t('notice.manage.edit.content2')" prop="content2"
+                    v-if="selectedTab === Language.Traditional">
+                    <app-editor v-model="formData.content2tw" />
+                </el-form-item>
+                <el-form-item :label="t('notice.manage.edit.content2')" prop="content2"
+                    v-if="selectedTab === Language.Thai">
+                    <app-editor v-model="formData.content2th" />
+                </el-form-item>
+                <el-form-item :label="t('notice.manage.edit.content2')" prop="content2"
+                    v-if="selectedTab === Language.Vietnamese">
+                    <app-editor v-model="formData.content2vi" />
+                </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">{{ t('operation.save') }}</el-button>
@@ -63,6 +99,7 @@
 import { ref, PropType, onMounted } from 'vue'
 import { ElMessage, FormInstance, FormRules } from 'element-plus'
 import { formatDate } from '@/filters'
+import { supportedLanguages, Language } from '@/constants/language'
 import { useRequest } from '@/hooks/request'
 import { useEnum } from '@/hooks/enum'
 import { noticemsgadd, noticemsgedit, noticeMsgDetail } from '@/services/api/notice'
@@ -81,13 +118,14 @@ const props = defineProps({
 const msgtypeEnum = useEnum('msgtype') // 消息类型
 const sendtypeEnum = useEnum('sendtype') // 发布类型
 
-const { t } = i18n.global
+const { t, locale } = i18n.global
 const userStore = useUserStore()
 const formRef = ref<FormInstance>()
 const show = ref(true)
 const refresh = ref(false)
 const showSelectMember = ref(false) // 是否弹出选择接收会员
 const selectedValues = ref<Model.OrganSelectRsp[]>([]) // 选中的会员
+const selectedTab = ref(locale)
 const dateValue = ref<string[]>([])
 
 const formData = ref<Partial<Notice.NoticeMsgAddReq>>({})
@@ -95,13 +133,21 @@ const formData = ref<Partial<Notice.NoticeMsgAddReq>>({})
 const { data, loading, run } = useRequest(noticeMsgDetail, {
     manual: true,
     onSuccess: ((res) => {
-        const { autoid, title, content2, endtime, msgtype, scheduletime, sendtype } = res.data
+        const { autoid, title, titleen, titleth, titletw, titlevi, content2, content2en, content2th, content2vi, content2tw, endtime, msgtype, scheduletime, sendtype } = res.data
         formData.value = {
             autoid,
             content2,
+            content2en,
+            content2th,
+            content2vi,
+            content2tw,
             msgtype,
             sendtype,
-            title
+            title,
+            titleen,
+            titleth,
+            titletw,
+            titlevi
         }
         dateValue.value = [formatDate(scheduletime), formatDate(endtime)]
     }),

+ 16 - 0
src/packages/pc/views/notice/manage/index.vue

@@ -35,6 +35,7 @@ import { shallowRef } from 'vue'
 import { ElMessage } from 'element-plus'
 import { formatDate } from '@/filters'
 import { useDataFilter } from '@/hooks/datatable-v2'
+import { Language } from '@/constants/language'
 import { useRequest } from '@/hooks/request'
 import { useOperation } from '@/hooks/operation'
 import { useEnum } from '@/hooks/enum'
@@ -62,6 +63,21 @@ const { dataList, total, pageSize, pageIndex, loading, run } = useRequest(query,
         pageNum: 1,
         pageSize: 20
     },
+    onSuccess: (res) => {
+        dataList.value = res.data.map((e) => {
+            const localizedTitle = {
+                [Language.Simplified]: e.title,
+                [Language.English]: e.titleen,
+                [Language.Thai]: e.titleth,
+                [Language.Traditional]: e.titletw,
+                [Language.Vietnamese]: e.titlevi
+            }
+            return {
+                ...e,
+                title: localizedTitle[i18n.global.locale]
+            }
+        })
+    },
     onError: (err) => {
         ElMessage.error(err)
     }

+ 29 - 5
src/packages/pc/views/notice/news/components/details/index.vue

@@ -1,14 +1,19 @@
 <!-- 通知公告-资讯管理-详情 -->
 <template>
     <app-drawer :title="t('notice.news.details.title1')" width="900" v-model:show="show" :refresh="refresh">
-        <app-table-details :data="data" :label-width="120" :cell-props="detailProps" :column="2">
+        <el-tabs v-model="selectedTab">
+            <template v-for="(item, index) in supportedLanguages" :key="index">
+                <el-tab-pane :label="item.label" :name="item.value" />
+            </template>
+        </el-tabs>
+        <app-table-details title=" " :data="details" :label-width="120" :cell-props="detailProps" :column="2">
             <!-- 缩略图 -->
             <template #coverimage="{ value }">
                 <el-image :src="getFirstPathFullUrl(value)" fit="cover" lazy style="width: 128px; height: 72px" />
             </template>
             <!-- 内容 -->
             <template #context="{ value }">
-                <div v-html="value"></div>
+                <div v-html="handleNoneValue(value)"></div>
             </template>
         </app-table-details>
         <template #footer>
@@ -21,7 +26,8 @@
 <script lang="ts" setup>
 import { shallowRef, PropType, computed } from 'vue'
 import { ElMessage } from 'element-plus'
-import { formatDate, getFirstPathFullUrl } from '@/filters'
+import { formatDate, getFirstPathFullUrl, handleNoneValue } from '@/filters'
+import { supportedLanguages, Language } from '@/constants/language'
 import { useEnum } from '@/hooks/enum'
 import { useRequest } from '@/hooks/request'
 import { informDetail } from '@/services/api/notice'
@@ -37,10 +43,10 @@ const props = defineProps({
     }
 })
 
-const { global: { t } } = i18n
+const { t, locale } = i18n.global
 const show = shallowRef(true)
 const refresh = shallowRef(false)
-
+const selectedTab = shallowRef(locale)
 const flagEnum = useEnum('flag')
 
 const { data } = useRequest(informDetail, {
@@ -52,6 +58,24 @@ const { data } = useRequest(informDetail, {
     }
 })
 
+const details = computed(() => {
+    const e = data.value
+    if (e) {
+        const localizedProperties = {
+            [Language.Simplified]: { title: e.title, author: e.author, columnname: e.columnname, srcname: e.srcname, context: e.context },
+            [Language.English]: { title: e.titleen, author: e.authoren, columnname: e.columnnameen, srcname: e.srcnameen, context: e.contexten },
+            [Language.Thai]: { title: e.titleth, author: e.authorth, columnname: e.columnnameth, srcname: e.srcnameth, context: e.contextth },
+            [Language.Traditional]: { title: e.titletw, author: e.authortw, columnname: e.columnnametw, srcname: e.srcnametw, context: e.contexttw },
+            [Language.Vietnamese]: { title: e.titlevi, author: e.authorvi, columnname: e.columnnamevi, srcname: e.srcnamevi, context: e.contextvi },
+        }
+        return {
+            ...e,
+            ...localizedProperties[selectedTab.value] // 本地化语言
+        }
+    }
+    return {}
+})
+
 const detailProps = computed<CellProp[]>(() => [
     { prop: 'columnname', label: 'notice.news.details.columnname' },
     { prop: 'author', label: 'notice.news.details.author' },

+ 130 - 48
src/packages/pc/views/notice/news/components/edit/index.vue

@@ -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 }],

+ 16 - 0
src/packages/pc/views/notice/news/index.vue

@@ -34,6 +34,7 @@
 import { shallowRef } from 'vue'
 import { ElMessage } from 'element-plus'
 import { formatDate } from '@/filters'
+import { Language } from '@/constants/language'
 import { useDataFilter } from '@/hooks/datatable-v2'
 import { useRequest } from '@/hooks/request'
 import { useOperation } from '@/hooks/operation'
@@ -61,6 +62,21 @@ const { dataList, total, pageSize, pageIndex, loading, run } = useRequest(inform
         pageNum: 1,
         pageSize: 20
     },
+    onSuccess: (res) => {
+        dataList.value = res.data.map((e) => {
+            const localizedProperties = {
+                [Language.Simplified]: { title: e.title, author: e.author, columnname: e.columnname, srcname: e.srcname },
+                [Language.English]: { title: e.titleen, author: e.authoren, columnname: e.columnnameen, srcname: e.srcnameen },
+                [Language.Thai]: { title: e.titleth, author: e.authorth, columnname: e.columnnameth, srcname: e.srcnameth },
+                [Language.Traditional]: { title: e.titletw, author: e.authortw, columnname: e.columnnametw, srcname: e.srcnametw },
+                [Language.Vietnamese]: { title: e.titlevi, author: e.authorvi, columnname: e.columnnamevi, srcname: e.srcnamevi },
+            }
+            return {
+                ...e,
+                ...localizedProperties[i18n.global.locale] // 本地化语言
+            }
+        })
+    },
     onError: (err) => {
         ElMessage.error(err)
     }

+ 28 - 3
src/packages/pc/views/notice/newscolumn/components/details/index.vue

@@ -1,7 +1,12 @@
 <!-- 通知公告-资讯栏目-详情 -->
 <template>
-    <app-drawer :title="t('investor.manage.cancelapply.details.title')" width="480" v-model:show="show">
-        <app-table-details :data="data" :label-width="120" :cell-props="detailProps" :column="1" />
+    <app-drawer :title="t('investor.manage.cancelapply.details.title')" width="640" v-model:show="show">
+        <el-tabs v-model="selectedTab">
+            <template v-for="(item, index) in supportedLanguages" :key="index">
+                <el-tab-pane :label="item.label" :name="item.value" />
+            </template>
+        </el-tabs>
+        <app-table-details title=" " :data="details" :label-width="120" :cell-props="detailProps" :column="1" />
         <template #footer>
             <el-button @click="close">{{ t('operation.close') }}</el-button>
         </template>
@@ -12,6 +17,7 @@
 import { shallowRef, PropType, computed } from 'vue'
 import { ElMessage } from 'element-plus'
 import { formatDate } from '@/filters'
+import { supportedLanguages, Language } from '@/constants/language'
 import { useEnum } from '@/hooks/enum'
 import { useRequest } from '@/hooks/request'
 import { columnDetail } from '@/services/api/notice'
@@ -27,8 +33,9 @@ const props = defineProps({
     }
 })
 
-const { global: { t } } = i18n
+const { t, locale } = i18n.global
 const show = shallowRef(true)
+const selectedTab = shallowRef(locale)
 
 const flagEnum = useEnum('flag')
 const columntypeEnum = useEnum('columntype') // 栏目类型
@@ -42,6 +49,24 @@ const { data } = useRequest(columnDetail, {
     }
 })
 
+const details = computed(() => {
+    const e = data.value
+    if (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]
+        }
+    }
+    return {}
+})
+
 const detailProps = computed<CellProp[]>(() => [
     { prop: 'columntype', label: 'notice.newscolumn.details.columntype', formatValue: (val) => columntypeEnum.getEnumTypeName(val) },
     { prop: 'columnname', label: 'notice.newscolumn.details.columnname' },

+ 44 - 24
src/packages/pc/views/notice/newscolumn/components/edit/index.vue

@@ -1,28 +1,42 @@
 <!-- 通知公告-资讯栏目-编辑 -->
 <template>
-    <app-drawer :title="t('investor.user.open.edit.title')" width="480" v-model:show="show" :refresh="refresh"
+    <app-drawer :title="t('investor.user.open.edit.title')" width="640" v-model:show="show" :refresh="refresh"
         :loading="loading">
-        <el-form ref="formRef" class="el-form--vertical" label-width="100px" :model="formData" :rules="formRules"
-            :show-message="false">
-            <el-form-item :label="t('notice.newscolumn.edit.columntype')" prop="columntype">
-                <el-select v-model="formData.columntype">
-                    <el-option v-for="item in columntypeEnum.getEnumOptions()" :key="item.value" :label="item.label"
-                        :value="item.value" />
-                </el-select>
-            </el-form-item>
-            <el-form-item :label="t('notice.newscolumn.edit.columnname')" prop="columnname">
-                <el-input v-model="formData.columnname" :placeholder="t('common.pleaseenter')" />
-            </el-form-item>
-            <el-form-item :label="t('notice.newscolumn.edit.sort')" prop="sort">
-                <el-input-number v-model="formData.sort" :placeholder="t('common.pleaseenter')" />
-            </el-form-item>
-            <el-form-item :label="t('notice.newscolumn.edit.isshow')" prop="isshow">
-                <el-radio-group v-model="formData.isshow">
-                    <el-radio v-for="item in flagEnum.getEnumOptions()" :key="item.value" :value="item.value"
-                        :label="item.label" />
-                </el-radio-group>
-            </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--vertical" label-width="auto" :model="formData" :rules="formRules"
+                :show-message="false">
+                <el-form-item :label="t('notice.newscolumn.edit.columntype')" prop="columntype">
+                    <el-select v-model="formData.columntype">
+                        <el-option v-for="item in columntypeEnum.getEnumOptions()" :key="item.value" :label="item.label"
+                            :value="item.value" />
+                    </el-select>
+                </el-form-item>
+                <el-form-item :label="t('notice.newscolumn.edit.columnname')" prop="columnname">
+                    <el-input v-model="formData.columnname" :placeholder="t('common.pleaseenter')"
+                        v-if="selectedTab === Language.Simplified" />
+                    <el-input v-model="formData.columnnameen" :placeholder="t('common.pleaseenter')"
+                        v-if="selectedTab === Language.English" />
+                    <el-input v-model="formData.columnnameth" :placeholder="t('common.pleaseenter')"
+                        v-if="selectedTab === Language.Thai" />
+                    <el-input v-model="formData.columnnametw" :placeholder="t('common.pleaseenter')"
+                        v-if="selectedTab === Language.Traditional" />
+                    <el-input v-model="formData.columnnamevi" :placeholder="t('common.pleaseenter')"
+                        v-if="selectedTab === Language.Vietnamese" />
+                </el-form-item>
+                <el-form-item :label="t('notice.newscolumn.edit.sort')" prop="sort">
+                    <el-input-number v-model="formData.sort" :placeholder="t('common.pleaseenter')" />
+                </el-form-item>
+                <el-form-item :label="t('notice.newscolumn.edit.isshow')" prop="isshow">
+                    <el-radio-group v-model="formData.isshow">
+                        <el-radio v-for="item in flagEnum.getEnumOptions()" :key="item.value" :value="item.value"
+                            :label="item.label" />
+                    </el-radio-group>
+                </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">{{ t('operation.submit') }}</el-button>
@@ -33,6 +47,7 @@
 <script lang="ts" setup>
 import { ref, PropType, onMounted } from 'vue'
 import { ElMessage, FormInstance, FormRules } from 'element-plus'
+import { supportedLanguages, Language } from '@/constants/language'
 import { useRequest } from '@/hooks/request'
 import { useEnum } from '@/hooks/enum'
 import { dealcolumn, columnDetail } from '@/services/api/notice'
@@ -48,10 +63,11 @@ const props = defineProps({
 const flagEnum = useEnum('flag')
 const columntypeEnum = useEnum('columntype') // 栏目类型
 
-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 formData = ref<Partial<Notice.DealColumnReq>>({
     isshow: 1,
@@ -61,10 +77,14 @@ const formData = ref<Partial<Notice.DealColumnReq>>({
 const { loading, run } = useRequest(columnDetail, {
     manual: true,
     onSuccess: ((res) => {
-        const { id, columnname, columntype, isshow, sort } = res.data
+        const { id, columnname, columnnameen, columnnameth, columnnametw, columnnamevi, columntype, isshow, sort } = res.data
         formData.value = {
             id,
             columnname,
+            columnnameen,
+            columnnameth,
+            columnnametw,
+            columnnamevi,
             columntype,
             isshow,
             sort

+ 16 - 0
src/packages/pc/views/notice/newscolumn/index.vue

@@ -30,6 +30,7 @@ import { shallowRef } from 'vue'
 import { ElMessage } from 'element-plus'
 import { formatDate } from '@/filters'
 import { useDataFilter } from '@/hooks/datatable-v2'
+import { Language } from '@/constants/language'
 import { useRequest } from '@/hooks/request'
 import { useOperation } from '@/hooks/operation'
 import { useEnum } from '@/hooks/enum'
@@ -53,6 +54,21 @@ const { dataList, total, pageSize, pageIndex, loading, run } = useRequest(column
         pageNum: 1,
         pageSize: 20
     },
+    onSuccess: (res) => {
+        dataList.value = res.data.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[i18n.global.locale]
+            }
+        })
+    },
     onError: (err) => {
         ElMessage.error(err)
     }

+ 28 - 3
src/packages/pc/views/notice/newssource/components/details/index.vue

@@ -1,7 +1,12 @@
 <!-- 通知公告-资讯来源-详情 -->
 <template>
-    <app-drawer :title="t('investor.manage.cancelapply.details.title')" width="480" v-model:show="show">
-        <app-table-details :data="data" :label-width="120" :cell-props="detailProps" :column="1">
+    <app-drawer :title="t('investor.manage.cancelapply.details.title')" width="640" v-model:show="show">
+        <el-tabs v-model="selectedTab">
+            <template v-for="(item, index) in supportedLanguages" :key="index">
+                <el-tab-pane :label="item.label" :name="item.value" />
+            </template>
+        </el-tabs>
+        <app-table-details title=" " :data="details" :label-width="120" :cell-props="detailProps" :column="1">
             <!-- 来源LOGO -->
             <template #imageurl="{ value }">
                 <el-image style="width: 200px; height: 100px" :src="getFirstPathFullUrl(value)" fit="contain" />
@@ -17,6 +22,7 @@
 import { shallowRef, PropType, computed } from 'vue'
 import { ElMessage } from 'element-plus'
 import { formatDate, getFirstPathFullUrl } from '@/filters'
+import { supportedLanguages, Language } from '@/constants/language'
 import { useRequest } from '@/hooks/request'
 import { columnsourceDetail } from '@/services/api/notice'
 import { CellProp } from '@pc/components/base/table-details/types'
@@ -31,8 +37,9 @@ const props = defineProps({
     }
 })
 
-const { global: { t } } = i18n
+const { t, locale } = i18n.global
 const show = shallowRef(true)
+const selectedTab = shallowRef(locale)
 
 const { data } = useRequest(columnsourceDetail, {
     defaultParams: {
@@ -43,6 +50,24 @@ const { data } = useRequest(columnsourceDetail, {
     }
 })
 
+const details = computed(() => {
+    const e = data.value
+    if (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]
+        }
+    }
+    return {}
+})
+
 const detailProps = computed<CellProp[]>(() => [
     { prop: 'membername', label: 'notice.newssource.details.membername' },
     { prop: 'membertags', label: 'notice.newssource.details.membertags' },

+ 40 - 16
src/packages/pc/views/notice/newssource/components/edit/index.vue

@@ -1,19 +1,33 @@
 <!-- 通知公告-资讯来源-编辑 -->
 <template>
-    <app-drawer :title="t('investor.user.open.edit.title')" width="480" v-model:show="show" :refresh="refresh"
+    <app-drawer :title="t('investor.user.open.edit.title')" width="640" v-model:show="show" :refresh="refresh"
         :loading="loading">
-        <el-form ref="formRef" class="el-form--vertical" label-width="100px" :model="formData" :rules="formRules"
-            :show-message="false">
-            <el-form-item :label="t('notice.newssource.edit.membername')" prop="membername">
-                <el-input v-model="formData.membername" :placeholder="t('common.pleaseenter')" />
-            </el-form-item>
-            <el-form-item :label="t('notice.newssource.edit.membertags')" prop="membertags">
-                <el-input v-model="formData.membertags" :placeholder="t('common.pleaseenter')" />
-            </el-form-item>
-            <el-form-item :label="t('notice.newssource.edit.imageurl')" prop="imageurl">
-                <app-upload v-model="uploadFiles" :file-types="['image']" :max-size="uploadConfig.maxFileSize" />
-            </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--vertical" label-width="auto" :model="formData" :rules="formRules"
+                :show-message="false">
+                <el-form-item :label="t('notice.newssource.edit.membername')" prop="membername">
+                    <el-input v-model="formData.membername" :placeholder="t('common.pleaseenter')"
+                        v-if="selectedTab === Language.Simplified" />
+                    <el-input v-model="formData.membernameen" :placeholder="t('common.pleaseenter')"
+                        v-if="selectedTab === Language.English" />
+                    <el-input v-model="formData.membernameth" :placeholder="t('common.pleaseenter')"
+                        v-if="selectedTab === Language.Thai" />
+                    <el-input v-model="formData.membernametw" :placeholder="t('common.pleaseenter')"
+                        v-if="selectedTab === Language.Traditional" />
+                    <el-input v-model="formData.membernamevi" :placeholder="t('common.pleaseenter')"
+                        v-if="selectedTab === Language.Vietnamese" />
+                </el-form-item>
+                <el-form-item :label="t('notice.newssource.edit.membertags')" prop="membertags">
+                    <el-input v-model="formData.membertags" :placeholder="t('common.pleaseenter')" />
+                </el-form-item>
+                <el-form-item :label="t('notice.newssource.edit.imageurl')" prop="imageurl">
+                    <app-upload v-model="uploadFiles" :file-types="['image']" :max-size="uploadConfig.maxFileSize" />
+                </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">{{ t('operation.submit') }}</el-button>
@@ -25,6 +39,7 @@
 import { ref, PropType, onMounted } from 'vue'
 import { ElMessage, FormInstance, FormRules, UploadUserFile } from 'element-plus'
 import { parseFilePaths, extractFilePaths } from '@/filters'
+import { supportedLanguages, Language } from '@/constants/language'
 import { uploadConfig } from '@/constants/common'
 import { useRequest } from '@/hooks/request'
 import { dealcolumnsource, columnsourceDetail } from '@/services/api/notice'
@@ -38,24 +53,33 @@ 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<Notice.DealColumnSourceReq>({
-    membername: ''
+    membername: '',
+    membernameen: '',
+    membernameth: '',
+    membernametw: '',
+    membernamevi: ''
 })
 
 const { loading, run } = useRequest(columnsourceDetail, {
     manual: true,
     onSuccess: ((res) => {
-        const { memberid, imageurl, membername, membertags } = res.data
+        const { memberid, imageurl, membername, membernameen, membernameth, membernametw, membernamevi, membertags } = res.data
         formData.value = {
             memberid,
             imageurl,
             membername,
+            membernameen,
+            membernameth,
+            membernametw,
+            membernamevi,
             membertags
         }
         uploadFiles.value = parseFilePaths(imageurl)

+ 16 - 0
src/packages/pc/views/notice/newssource/index.vue

@@ -33,6 +33,7 @@
 import { shallowRef } from 'vue'
 import { ElMessage } from 'element-plus'
 import { getFirstPathFullUrl } from '@/filters'
+import { Language } from '@/constants/language'
 import { useDataFilter } from '@/hooks/datatable-v2'
 import { useRequest } from '@/hooks/request'
 import { useOperation } from '@/hooks/operation'
@@ -54,6 +55,21 @@ const { dataList, total, pageSize, pageIndex, loading, run } = useRequest(column
         pageNum: 1,
         pageSize: 20
     },
+    onSuccess: (res) => {
+        dataList.value = res.data.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[i18n.global.locale]
+            }
+        })
+    },
     onError: (err) => {
         ElMessage.error(err)
     }

+ 1 - 1
src/packages/pc/views/profitshare/institution/config/components/edit/index.vue

@@ -2,7 +2,7 @@
 <template>
     <app-drawer :title="t('profitshare.institution.config.edit.title')" width="480" v-model:show="show"
         :refresh="refresh" :loading="loading">
-        <el-form ref="formRef" class="el-form--vertical" label-width="100px" :model="formData" :rules="formRules">
+        <el-form ref="formRef" class="el-form--vertical" label-width="auto" :model="formData" :rules="formRules">
             <el-form-item :label="t('profitshare.institution.config.edit.feeName')">
                 {{ config.feeName }}
             </el-form-item>

+ 1 - 1
src/packages/pc/views/profitshare/institution/group/components/edit/index.vue

@@ -2,7 +2,7 @@
 <template>
     <app-drawer :title="t('profitshare.institution.group.edit.title')" width="480" v-model:show="show"
         :refresh="refresh" :loading="loading">
-        <el-form ref="formRef" class="el-form--vertical" label-width="80px" :model="formData" :rules="formRules">
+        <el-form ref="formRef" class="el-form--vertical" label-width="auto" :model="formData" :rules="formRules">
             <el-form-item :label="t('profitshare.institution.group.edit.subareagrouptype')" prop="subareagrouptype">
                 <el-select v-model="formData.subareagrouptype">
                     <el-option :label="getProfitShareGroupName(ProfitShareGroup.SubInstitution)"

+ 1 - 1
src/packages/pc/views/system/exrate/components/edit/index.vue

@@ -1,7 +1,7 @@
 <!-- 系统运行管理-开户黑名单管理-新增/修改 -->
 <template>
     <app-drawer :title="t('system.exrate.edit.title')" width="500" v-model:show="show" :loading="loading" :refresh="refresh">
-        <el-form ref="formRef" label-width="80px" :model="formData" :rules="formRules" :show-message="false">
+        <el-form ref="formRef" label-width="auto" :model="formData" :rules="formRules" :show-message="false">
             <el-form-item :label="t('system.exrate.edit.oricurrencyid')" prop="oricurrencyid">
                 <app-enum code="currency" v-model="formData.oricurrencyid" />
             </el-form-item>

+ 1 - 1
src/packages/pc/views/system/ipblacklist/components/edit/index.vue

@@ -1,7 +1,7 @@
 <!-- 系统运行管理-IP黑名单管理-新增 -->
 <template>
     <app-drawer :title="t('system.ip_blacklist.edit.title')" width="500" v-model:show="show" :loading="loading" :refresh="refresh">
-        <el-form ref="formRef" label-width="80px" :model="formData" :rules="formRules" :show-message="false">
+        <el-form ref="formRef" label-width="auto" :model="formData" :rules="formRules" :show-message="false">
             <el-form-item :label="t('system.ip_blacklist.edit.ip')" prop="ip">
                 <el-input v-model="formData.ip" maxlength="50" :placeholder="t('common.pleaseenter')" />
             </el-form-item>

+ 1 - 1
src/packages/pc/views/system/menu/components/edit/index.vue

@@ -1,6 +1,6 @@
 <template>
     <app-drawer title="编辑" width="600" v-model:show="show" :refresh="refresh">
-        <el-form ref="formRef" class="el-form--vertical" label-width="90px" :model="formData" :rules="formRules"
+        <el-form ref="formRef" class="el-form--vertical" label-width="auto" :model="formData" :rules="formRules"
             :show-message="false">
             <el-form-item label="权限类型" prop="authType">
                 <el-radio-group v-model="formData.authType">

+ 1 - 1
src/packages/pc/views/system/userblacklist/components/edit/index.vue

@@ -1,7 +1,7 @@
 <!-- 系统运行管理-开户黑名单管理-新增/修改 -->
 <template>
     <app-drawer :title="t('system.user_blacklist.edit.title')" width="500" v-model:show="show" :loading="loading" :refresh="refresh">
-        <el-form ref="formRef" label-width="80px" :model="formData" :rules="formRules" :show-message="false">
+        <el-form ref="formRef" label-width="auto" :model="formData" :rules="formRules" :show-message="false">
             <el-form-item :label="t('system.user_blacklist.edit.cardtype')" prop="cardtype">
                 <app-enum code="userinfotype" v-model="formData.cardtype" />
             </el-form-item>

+ 117 - 1
src/types/model/notice.d.ts

@@ -23,6 +23,10 @@ declare namespace Notice {
         sendtype: number; // 发布类型
         sentstatus: number; // 推送状态
         title: string; // 标题
+        titleen: string; // 标题(EN)
+        titleth: string; // 标题(TH)
+        titletw: string; // 标题(TW)
+        titlevi: string; // 标题(VI)
     }
 
     /** 通知公告-->公告通知管理-->详情 请求 */
@@ -39,6 +43,10 @@ declare namespace Notice {
         autoid: number; // 自增ID
         content: string; // 内容
         content2: string; // 内容2
+        content2en: string; // 内容2(EN)
+        content2th: string; // 内容2(TH)
+        content2tw: string; // 内容2(TW)
+        content2vi: string; // 内容2(VI)
         createtime: string; // 创建时间
         creatorName: string;
         creatorid: number; // 建仓人
@@ -53,6 +61,10 @@ declare namespace Notice {
         sendtype: number; // 推送方式 - 1:全体广播 2:按会员广播 3:个人推送 4:按会员广播(仅会员)
         sentstatus: number; // 推送状态 - 0:未推送 1:已推送 2:审核拒绝 3:提前失效
         title: string; // 标题
+        titleen: string; // 标题(EN)
+        titleth: string; // 标题(TH)
+        titletw: string; // 标题(TW)
+        titlevi: string; // 标题(VI)
         userid: number; // 会员/投资者ID 推送方式 为 个人时,填写投资者ID
     }
 
@@ -60,6 +72,10 @@ declare namespace Notice {
     interface NoticeMsgAddReq {
         autoid?: number;
         content2: string; // 内容
+        content2en: string; // 内容2(EN)
+        content2th: string; // 内容2(TH)
+        content2tw: string; // 内容2(TW)
+        content2vi: string; // 内容2(VI)
         endtime: string; // 结束时间
         invertorID: string; // 接收交易商
         memberidlist: string; // 会员集合
@@ -67,6 +83,10 @@ declare namespace Notice {
         scheduletime: string; // 生效时间
         sendtype: number; // 消息类型
         title: string; // 标题
+        titleen: string; // 标题(EN)
+        titleth: string; // 标题(TH)
+        titletw: string; // 标题(TW)
+        titlevi: string; // 标题(VI)
     }
 
     /** 通知公告-->公告通知管理-->审核 请求 */
@@ -104,6 +124,10 @@ declare namespace Notice {
     /** 通知公告-->资讯栏目-->获取列表 响应 */
     interface ColumnQueryRsp {
         columnname: string; // 栏目名称
+        columnnameen: string;
+        columnnameth: string;
+        columnnametw: string;
+        columnnamevi: string;
         creaedate: string; // 创建时间
         creatorid: number;
         creatoruser: string; // 创建人
@@ -120,6 +144,10 @@ declare namespace Notice {
     /** 通知公告-->资讯栏目-->详情 响应 */
     interface ColumnDetailRsp {
         columnname: string; // 栏目名称
+        columnnameen: string;
+        columnnameth: string;
+        columnnametw: string;
+        columnnamevi: string;
         columntype: number; // 栏目类型 - 1:行情资讯 10:会员服务 30:关于我们 100:核心企业栏目-百色
         creaedate: string; // 创建时间
         creatorid: number; // 创建人
@@ -135,6 +163,10 @@ declare namespace Notice {
     /** 通知公告-->资讯栏目-->新增/修改 请求 */
     interface DealColumnReq {
         columnname: string; // 栏目名称
+        columnnameen: string;
+        columnnameth: string;
+        columnnametw: string;
+        columnnamevi: string;
         columntype: number; // 栏目类型
         id?: number;
         isshow: number; // 是否展示
@@ -151,6 +183,10 @@ declare namespace Notice {
         imageurl?: string; // 来源LOGO
         memberid?: number;
         membername: string; // 来源名称
+        membernameen: string;
+        membernameth: string;
+        membernametw: string;
+        membernamevi: string;
         membertags?: string; // 来源网址
     }
 
@@ -166,6 +202,10 @@ declare namespace Notice {
         imageurl: string; // 来源LOGO
         memberid: number;
         membername: string; // 来源名称
+        membernameen: string;
+        membernameth: string;
+        membernametw: string;
+        membernamevi: string;
         membertags: string; // 来源网址
     }
 
@@ -182,6 +222,10 @@ declare namespace Notice {
         imageurl: string; // 图片地址来源LOGO
         memberid: number; // 会员ID(SEQ_GZ_MEMBERINFO)
         membername: string; // 会员名称来源名称
+        membernameen: string;
+        membernameth: string;
+        membernametw: string;
+        membernamevi: string;
         membertags: string; // 标签(逗号分隔)来源网址
         orderindex: number; // 显示顺序
         updatetime: string; // 更新时间
@@ -206,7 +250,15 @@ declare namespace Notice {
     /** 通知公告-->资讯管理-->获取列表 响应 */
     interface InformManqueryRsp {
         author: string; // 作者
+        authoren: string; // 作者多语言
+        authorth: string;
+        authortw: string;
+        authorvi: string;
         columnname: string; // 资讯类型
+        columnnameen: string; // 资讯类型多语言
+        columnnameth: string;
+        columnnametw: string;
+        columnnamevi: string;
         creaedate: string; // 创建时间
         creatoruser: string; // 创建人
         id: number;
@@ -214,8 +266,16 @@ declare namespace Notice {
         istop: number; // 是否置顶
         publishdate: string; // 发布日期
         srcname: string; // 来源
+        srcnameen: string; // 来源多语言
+        srcnameth: string;
+        srcnametw: string;
+        srcnamevi: string;
         status: number; // 状态
         title: string; // 标题
+        titleen: string; // 标题多语言
+        titleth: string;
+        titletw: string;
+        titlevi: string;
     }
 
     /** 通知公告-->资讯管理-->初始化类型列表 响应 */
@@ -227,12 +287,20 @@ declare namespace Notice {
             imageurl: string; // 图片地址来源LOGO
             memberid: number; // 会员ID(SEQ_GZ_MEMBERINFO)
             membername: string; // 会员名称来源名称
+            membernameen: string;
+            membernameth: string;
+            membernametw: string;
+            membernamevi: string;
             membertags: string; // 标签(逗号分隔)来源网址
             orderindex: number; // 显示顺序
             updatetime: string; // 更新时间
         }[];
         siteColumnconfig: {
             columnname: string; // 栏目名称
+            columnnameen: string;
+            columnnameth: string;
+            columnnametw: string;
+            columnnamevi: string;
             columntype: number; // 栏目类型 - 1:行情资讯 10:会员服务 30:关于我们 100:核心企业栏目-百色
             creaedate: string; // 创建时间
             creatorid: number; // 创建人
@@ -249,17 +317,33 @@ declare namespace Notice {
     /** 通知公告-->资讯管理-->新增/修改 请求 */
     interface DealInformReq {
         author: string; // 作者
+        authoren: string;
+        authorth: string;
+        authortw: string;
+        authorvi: string;
         brief: string; // 简介
+        briefen: string;
+        briefth: string;
+        brieftw: string;
+        briefvi: string;
         columnid: number; // 所属栏目
         columnname: string;
+        columnnameen: string;
+        columnnameth: string;
+        columnnametw: string;
+        columnnamevi: string;
         columntype: number;
         context: string; // 内容
+        contexten: string;
+        contextth: string;
+        contexttw: string;
+        contextvi: string;
         coverimage: string; // 封面图片
         creaedate: string; // 创建时间
         creatorid: number; // 创建人
         creatoruser: string;
         hits: number; // 点击数
-        id: number; // ID(SEQ_SITE_COLUMNDETAIL)
+        id?: number; // ID(SEQ_SITE_COLUMNDETAIL)
         isshow: number; // 是否展示 - 0:不展示 1:展示
         istop: number; // 是否置顶 - 0:不置 1:置顶
         modifierid: number; // 操作人
@@ -268,8 +352,16 @@ declare namespace Notice {
         publishdate2: string;
         srcid: number; // 来源ID
         srcname: string;
+        srcnameen: string;
+        srcnameth: string;
+        srcnametw: string;
+        srcnamevi: string;
         status: number; // 状态 - 1:暂存 10:待审核 20:审核通过 30:审核拒绝
         title: string; // 标题
+        titleen: string;
+        titleth: string;
+        titletw: string;
+        titlevi: string;
         updatedate: string; // 修改时间
         userid: number; // 用户ID(默认为0, 核心为为机构用户ID)
     }
@@ -282,11 +374,27 @@ declare namespace Notice {
     /** 通知公告-->资讯管理-->详情 响应 */
     interface InformDetailRsp {
         author: string; // 作者
+        authoren: string;
+        authorth: string;
+        authortw: string;
+        authorvi: string;
         brief: string; // 简介
+        briefen: string;
+        briefth: string;
+        brieftw: string;
+        briefvi: string;
         columnid: number; // 所属栏目
         columnname: string;
+        columnnameen: string;
+        columnnameth: string;
+        columnnametw: string;
+        columnnamevi: string;
         columntype: number;
         context: string; // 内容
+        contexten: string;
+        contextth: string;
+        contexttw: string;
+        contextvi: string;
         coverimage: string; // 封面图片
         creaedate: string; // 创建时间
         creatorid: number; // 创建人
@@ -301,8 +409,16 @@ declare namespace Notice {
         publishdate2: string;
         srcid: number; // 来源ID
         srcname: string;
+        srcnameen: string;
+        srcnameth: string;
+        srcnametw: string;
+        srcnamevi: string;
         status: number; // 状态 - 1:暂存 10:待审核 20:审核通过 30:审核拒绝
         title: string; // 标题
+        titleen: string;
+        titleth: string;
+        titletw: string;
+        titlevi: string;
         updatedate: string; // 修改时间
         userid: number; // 用户ID(默认为0, 核心为为机构用户ID)
     }