cxmo 6 місяців тому
батько
коміт
73ccbb0f8a
100 змінених файлів з 2362 додано та 600 видалено
  1. 13 2
      src/components/edbDetailPopover.vue
  2. 47 18
      src/components/lzTable.vue
  3. 58 12
      src/components/selectUnit.vue
  4. 9 0
      src/lang/modules/Aprroval/En.js
  5. 9 0
      src/lang/modules/Aprroval/Zh.js
  6. 5 1
      src/lang/modules/DataSources/En.js
  7. 5 1
      src/lang/modules/DataSources/Zh.js
  8. 1 0
      src/lang/modules/ETATables/En.js
  9. 1 0
      src/lang/modules/ETATables/Zh.js
  10. 69 4
      src/lang/modules/EtaBase/En.js
  11. 66 1
      src/lang/modules/EtaBase/Zh.js
  12. 67 7
      src/lang/modules/EtaBase/commonLang.js
  13. 21 1
      src/lang/modules/EtaChart/En.js
  14. 19 1
      src/lang/modules/EtaChart/Zh.js
  15. 16 0
      src/lang/modules/EtaChart/commonLang.js
  16. 2 1
      src/lang/modules/MainApp/En.js
  17. 1 0
      src/lang/modules/MainApp/Zh.js
  18. 2 1
      src/lang/modules/MyEta/En.js
  19. 2 1
      src/lang/modules/MyEta/Zh.js
  20. 1 1
      src/lang/modules/ReportManagement/AuthorManagement.js
  21. 56 1
      src/lang/modules/ReportManagement/CategoryList.js
  22. 12 2
      src/lang/modules/ReportManagement/CloudPage.js
  23. 47 1
      src/lang/modules/ReportManagement/CommodityConfiguration.js
  24. 11 7
      src/lang/modules/ReportManagement/ReportList.js
  25. 2 0
      src/lang/modules/ReportManagement/SmartReport.js
  26. 18 1
      src/lang/modules/SandboxManage/SandList.js
  27. 252 0
      src/lang/modules/SemanticsManage/ASRpage.js
  28. 2 0
      src/lang/modules/SemanticsManage/indexEn.js
  29. 2 0
      src/lang/modules/SemanticsManage/indexZh.js
  30. 3 0
      src/lang/modules/Slides/pptList.js
  31. 6 2
      src/lang/modules/Slides/pptMsg.js
  32. 3 0
      src/lang/modules/StatisticAnalysis/ChartRelevance.js
  33. 15 2
      src/lang/modules/StatisticAnalysis/CrossVarietyChart.js
  34. 25 0
      src/lang/modules/StatisticAnalysis/FittingEquationChart.js
  35. 2 0
      src/lang/modules/StatisticAnalysis/StatisticFeatureChart.js
  36. 6 0
      src/lang/modules/SupplyAnalysis/StockPlant.js
  37. 8 0
      src/lang/modules/ToolBox/AIQuestion.js
  38. 4 0
      src/lang/modules/ToolBox/PositionAnalysis.js
  39. 19 0
      src/lang/modules/systemManage/BaseConfig.js
  40. 6 0
      src/lang/modules/systemManage/ChartSet.js
  41. 112 0
      src/lang/modules/systemManage/DataRefresh.js
  42. 5 5
      src/lang/modules/systemManage/DataSourceAccount.js
  43. 4 0
      src/lang/modules/systemManage/OutLinkConfig.js
  44. 3 1
      src/lang/modules/systemManage/indexEn.js
  45. 3 1
      src/lang/modules/systemManage/indexZh.js
  46. 12 3
      src/main.js
  47. 36 1
      src/mixins/index.js
  48. 14 0
      src/mixins/reportApproveConfig.js
  49. 9 1
      src/routes/modules/approveRoutes.js
  50. 147 17
      src/routes/modules/chartRoutes.js
  51. 63 2
      src/routes/modules/dataRoutes.js
  52. 6 0
      src/routes/modules/dataSource.js
  53. 92 1
      src/routes/modules/oldRoutes.js
  54. 26 4
      src/routes/modules/pptRoutes.js
  55. 27 4
      src/routes/modules/semanticsRoutes.js
  56. 11 2
      src/routes/modules/supplyRoutes.js
  57. 52 0
      src/utils/defaultOptions.js
  58. 5 4
      src/views/Home.vue
  59. 1 1
      src/views/Login.vue
  60. 14 11
      src/views/approve_manage/approveEdit.vue
  61. 1 1
      src/views/chartFrame_manage/frameEditor.vue
  62. 44 19
      src/views/chartRelevance_manage/components/fittingEquationSaveDia.vue
  63. 12 8
      src/views/chartRelevance_manage/components/saveChartTobaseDia.vue
  64. 24 20
      src/views/chartRelevance_manage/components/saveEdbToBaseDia.vue
  65. 5 5
      src/views/chartRelevance_manage/crossVarietyAnalysis/chartEditor.vue
  66. 7 7
      src/views/chartRelevance_manage/crossVarietyAnalysis/components/chartFormSection.vue
  67. 4 2
      src/views/chartRelevance_manage/crossVarietyAnalysis/components/edbTableSection.vue
  68. 1 1
      src/views/chartRelevance_manage/crossVarietyAnalysis/components/tagRelationDialog.vue
  69. 1 1
      src/views/chartRelevance_manage/crossVarietyAnalysis/list.vue
  70. 1 1
      src/views/chartRelevance_manage/fittingEquation/fittingEquationChartEditor.vue
  71. 2 2
      src/views/chartRelevance_manage/fittingEquation/fittingEquationList.vue
  72. 4 4
      src/views/chartRelevance_manage/mixins/classifyMixin.js
  73. 4 2
      src/views/chartRelevance_manage/relevance/list.vue
  74. 2 2
      src/views/chartRelevance_manage/relevance/relevanceChartEditor.vue
  75. 3 3
      src/views/chartRelevance_manage/statistic/statisticFeatureChartEditor.vue
  76. 1 1
      src/views/chartRelevance_manage/statistic/statisticFeatureList.vue
  77. 36 19
      src/views/classify_manage/chapterSettingV2.vue
  78. 49 30
      src/views/classify_manage/classifyEnlistV2.vue
  79. 63 31
      src/views/classify_manage/classifylistV2.vue
  80. 22 13
      src/views/dataEntry_manage/addChart.vue
  81. 11 8
      src/views/dataEntry_manage/adjustdata/adjustData.vue
  82. 17 6
      src/views/dataEntry_manage/chartSetting.vue
  83. 13 2
      src/views/dataEntry_manage/coal/index.vue
  84. 9 7
      src/views/dataEntry_manage/codecount/index.vue
  85. 2 2
      src/views/dataEntry_manage/components/DateChooseDia.vue
  86. 2 2
      src/views/dataEntry_manage/components/LegendEditDia.vue
  87. 8 7
      src/views/dataEntry_manage/components/addMarkerDialog.vue
  88. 66 60
      src/views/dataEntry_manage/components/chartReleationEdbTable.vue
  89. 1 1
      src/views/dataEntry_manage/components/insertData.vue
  90. 14 7
      src/views/dataEntry_manage/dataEntry.vue
  91. 18 11
      src/views/dataEntry_manage/databaseComponents/addTargetDiaBase.vue
  92. 43 15
      src/views/dataEntry_manage/databaseComponents/batchComputedSave.vue
  93. 177 91
      src/views/dataEntry_manage/databaseComponents/batchComputedV2.vue
  94. 2 2
      src/views/dataEntry_manage/databaseComponents/chartTrendRender.vue
  95. 34 11
      src/views/dataEntry_manage/databaseComponents/computedDialog.vue
  96. 5 5
      src/views/dataEntry_manage/databaseComponents/createChart.vue
  97. 11 6
      src/views/dataEntry_manage/databaseComponents/diffusionIndexDia.vue
  98. 9 2
      src/views/dataEntry_manage/databaseComponents/edbDetailData.vue
  99. 45 29
      src/views/dataEntry_manage/databaseComponents/fittingResidueDia.vue
  100. 34 28
      src/views/dataEntry_manage/databaseComponents/jointTargetDia.vue

+ 13 - 2
src/components/edbDetailPopover.vue

@@ -9,7 +9,10 @@
     <ul class="edb-info-cont">
       <li v-for="key in keysArr" :key="key">
         <label class="li-label">{{keysLabel[key]}}</label> 
-        {{info[key]}}
+        <!-- {{info[key]}} -->
+        <span v-if="key==='Frequency'">{{ getFrequencyTrans(dataInfo[key]) }}</span>
+        <span v-else-if="key==='Unit'||key==='UnitEn'">{{ getUnitTrans(dataInfo[key]) }}</span>
+        <span v-else>{{ dataInfo[key] }}</span>
       </li>
     </ul>
     <div slot="reference">
@@ -65,7 +68,15 @@ export default {
     },
     currentLang() {
       return this.$store.state.lang
-    }
+    },
+    dataInfo(){
+        const {EdbName,EdbNameEn,Unit,UnitEn} = this.info
+        return {
+            ...this.info,
+            EdbNameEn:EdbNameEn||EdbName,
+            UnitEn:UnitEn||Unit
+        }
+    },
   },
   data() {
     return {

+ 47 - 18
src/components/lzTable.vue

@@ -9,24 +9,30 @@
 			>
 				<th>{{ labelArr.get(item) }}</th>
 				<td v-for="(data, sub_index) in tableOption" :key="sub_index">
-          <template v-if="source!=='baiinfo'">
-            {{ (item === 'Frequency' && source === 'lz') ? frequencyType.get(data[item]) : data[item] }}
-          </template>
+					<template v-if="source!=='baiinfo'">
+						{{
+							(['FrequencyName','Frequency'].includes(item)) 
+							? (source === 'lz')
+								? frequencyType.get(data[item])
+								: frequencyMap.get(data[item])
+							: data[item] 
+						}}
+					</template>
 					<!-- 百川盈孚数据源 频度和单位需要可编辑 -->
 					<template v-else>
-            <span>
-              {{data[item]}}
-              <span v-if="data['IndexCode']&&(item==='Frequency'||item==='Unit')">
-                <img
-                  v-permission="permissionBtn.dataSourcePermission.bcyfData_edit"
-                  src="~@/assets/img/set_m/edit.png"
-                  alt="edit"
-                  style="width: 14px; height: 14px; margin-left: 5px;cursor:pointer;"
-                  @click.stop="editTarget(data)"
-                />
-              </span>
-            </span>
-          </template>
+						<span>
+							{{ item==='Frequency'?frequencyMap.get(data[item]):data[item] }}
+							<span v-if="data['IndexCode']&&(item==='Frequency'||item==='Unit')">
+								<img
+									v-permission="permissionBtn.dataSourcePermission.bcyfData_edit"
+									src="~@/assets/img/set_m/edit.png"
+									alt="edit"
+									style="width: 14px; height: 14px; margin-left: 5px;cursor:pointer;"
+									@click.stop="editTarget(data)"
+								/>
+							</span>
+						</span>
+					</template>
 				</td>
 			</tr>
 		</template>
@@ -118,6 +124,29 @@ export default {
 			}
 
 			return key
+		},
+		//隆众原始数据库,返回频度不是string是number,分开写
+		frequencyType(){
+			return new Map([
+				[1, /* 日度 */ this.$t('Edb.FreAll.day')],
+				[2, /*周度*/ this.$t('Edb.FreAll.week')],
+				[3, /*月度*/ this.$t('Edb.FreAll.month')],
+				[4, /*季度*/ this.$t('Edb.FreAll.quarter')],
+				[5, /*年度*/ this.$t('Edb.FreAll.year')],
+				[99, /*无固定频率*/ this.$t('Edb.FreAll.unfixed')],
+			])
+		},
+		//其他数据源
+		frequencyMap(){
+			return new Map([
+				['日度',this.$t('Edb.FreAll.day')],
+				['周度',this.$t('Edb.FreAll.week')],
+				['月度',this.$t('Edb.FreAll.month')],
+				['旬度',this.$t('Edb.FreAll.dekad')],
+				['季度',this.$t('Edb.FreAll.quarter')],
+				['半年度',this.$t('Edb.FreAll.half_year')],
+				['年度',this.$t('Edb.FreAll.year')]
+			])
 		}
 	},
 	data() {
@@ -133,14 +162,14 @@ export default {
     //   : this.source==='baiinfo'
     //   ? ['IndexName','IndexCode','Frequency','Unit','ModifyTime']
 	// 		:['QuotaName','LzCode','Frequency','UnitName','ModifyTime'],
-			frequencyType:new Map([
+			/* frequencyType:new Map([
 				[1,'日度'],
 				[2,'周度'],
 				[3,'月度'],
 				[4,'季度'],
 				[5,'年度'],
 				[99,'无固定频率'],
-			]),
+			]), */
 			// labelArr: this.source === 'gl' ? new Map([
 			// 	['IndexName', '指标名称'],
 			// 	['IndexCode', '指标ID'],

+ 58 - 12
src/components/selectUnit.vue

@@ -3,6 +3,7 @@
         <el-autocomplete
             style="width:100%"
             v-model="unit"
+            value-key="label"
             :fetch-suggestions="querySearch"
             :disabled="disabled"
             :placeholder="$t('Edb.InputHolderAll.input_unit')"
@@ -10,13 +11,16 @@
             @change="handleChange"
             @blur.stop="handleChange"
         >
+            <template slot-scope="{ item }">
+                <div>{{ item.label }}</div>
+            </template>
         </el-autocomplete>
     </div>
 </template>
 
 <script>
 // import { unitArr } from '@/utils/defaultOptions';
-const unitArr = [
+/* const unitArr = [
 	'无',
 	'万吨',
 	'亿元',
@@ -31,7 +35,8 @@ const unitArr = [
 	'美元/桶',
 	'美分/加仑',
 	'手'
-]
+] */
+//selectUnit在registryComponents就被初始化,用不了bus
 export default {
     name:"selectUnit",
     props:{
@@ -46,20 +51,23 @@ export default {
     },
     watch:{
         value(){
-            this.unit=this.value
+            if(this.value){
+                this.unit = this.getUnitTrans(this.value)
+            }
         }
     },
     data() {
         return {
-            unit:this.value,
-            unitArr: [],
+            unit:'',
+            /* unitArr: [], */
         }
     },
-    mounted(){
-        this.unitArr=unitArr.map(item=>{
-            return {value:item}
-        })
+    computed:{
+        unitArr(){
+            return this.getUnitArr()
+        }
     },
+    mounted(){},
     methods:{
         querySearch(queryString, cb) {
             const unitArr = this.unitArr;
@@ -69,12 +77,50 @@ export default {
         },
         createFilter(queryString) {
             return (unit) => {
-                return (unit.value.toLowerCase().indexOf(queryString.toLowerCase()) !== -1);
+                return (unit.label.toLowerCase().indexOf(queryString.toLowerCase()) !== -1);
             };
         },
-        handleChange(){
+        handleChange(item){
+            //this.unit = item.value
             console.log('单位',this.unit);
-            this.$emit('input',this.unit)
+            this.$emit('input',item.value||this.unit); //若为unitArr内的单位,则存对应的中文,若为自行输入的单位,则输什么存什么
+        },
+        getUnitArr(){
+            return [
+                {value:'无',label:this.$i18nt.t('Edb.UnitAll.u_null')},
+                {value:'万吨',label:this.$i18nt.t('Edb.UnitAll.wanton')},
+                {value:'亿元',label:this.$i18nt.t('Edb.UnitAll.u_bill')},
+                {value:'元',label:this.$i18nt.t('Edb.UnitAll.u_yuan')},
+                {value:'元/吨',label:this.$i18nt.t('Edb.UnitAll.yuan_ton')},
+                {value:'元/湿吨',label:this.$i18nt.t('Edb.UnitAll.yuan_wetton')},
+                {value:'千克',label:this.$i18nt.t('Edb.UnitAll.u_kg')},
+                {value:'吨',label:this.$i18nt.t('Edb.UnitAll.u_ton')},
+                {value:'短吨',label:this.$i18nt.t('Edb.UnitAll.short_ton')},
+                {value:'美元/吨',label:this.$i18nt.t('Edb.UnitAll.doll_ton')},
+                {value:'万平方千米',label:this.$i18nt.t('Edb.UnitAll.wan_skilo')},
+                {value:'美元/桶',label:this.$i18nt.t('Edb.UnitAll.doll_bar')},
+                {value:'美分/加仑',label:this.$i18nt.t('Edb.UnitAll.cent_gal')},
+                {value:'手',label:this.$i18nt.t('Edb.UnitAll.u_hand')},
+            ]
+        },
+        getUnitTrans(unit){
+            const map = {
+                '无':this.$i18nt.t('Edb.UnitAll.u_null'),
+                '万吨':this.$i18nt.t('Edb.UnitAll.wanton'),
+                '亿元':this.$i18nt.t('Edb.UnitAll.u_bill'),
+                '元':this.$i18nt.t('Edb.UnitAll.u_yuan'),
+                '元/吨':this.$i18nt.t('Edb.UnitAll.yuan_ton'),
+                '元/湿吨':this.$i18nt.t('Edb.UnitAll.yuan_wetton'),
+                '千克':this.$i18nt.t('Edb.UnitAll.u_kg'),
+                '吨':this.$i18nt.t('Edb.UnitAll.u_ton'),
+                '短吨':this.$i18nt.t('Edb.UnitAll.short_ton'),
+                '美元/吨':this.$i18nt.t('Edb.UnitAll.doll_ton'),
+                '万平方千米':this.$i18nt.t('Edb.UnitAll.wan_skilo'),
+                '美元/桶':this.$i18nt.t('Edb.UnitAll.doll_bar'),
+                '美分/加仑':this.$i18nt.t('Edb.UnitAll.cent_gal'),
+                '手':this.$i18nt.t('Edb.UnitAll.u_hand'),
+            }
+            return map[unit]||unit //若是自行输入的单位,直接返回
         }
     }
 }

+ 9 - 0
src/lang/modules/Aprroval/En.js

@@ -50,4 +50,13 @@ export default {
     rejection_title: "Examination and rejection",
     rejection_reason_ipt: "Please enter the reason for rejection",
   },
+  ApprovalEdit:{
+    name_placeholder:'Please enter an approval flow name',
+    name_max_hint:'The name is within 20 characters',
+    report_placeholder:'Please select the associated report',
+    add_node_hint:'Please add an approval node',
+    node_select_hint:'If no approver is selected for a node, check it',
+    edit_success_text:'Edit successfully',
+    add_success_text:'Add successfully'
+  }
 };

+ 9 - 0
src/lang/modules/Aprroval/Zh.js

@@ -50,4 +50,13 @@ export default {
     rejection_title: "审批驳回",
     rejection_reason_ipt: "请输入驳回理由",
   },
+  ApprovalEdit:{
+    name_placeholder:'请输入审批流名称',
+    name_max_hint:'长度在20个字符内',
+    report_placeholder:'请选择关联报告',
+    add_node_hint:'请添加审批节点',
+    node_select_hint:'有节点未选择审批人,请检查',
+    edit_success_text:'编辑成功',
+    add_success_text:'新增成功'
+  }
 };

+ 5 - 1
src/lang/modules/DataSources/En.js

@@ -30,7 +30,9 @@ export default {
     label_classify:'Indicator Category',
     label_update_remin:'Update Reminder',
     ph_update_remin:'Please select the update time',
-    add_tobase_btn:'Add to Indicator Library'
+    add_tobase_btn:'Add to Indicator Library',
+
+    edb_not_allow_delete:'This metric has been added to the ETA database and cannot be deleted',
   },
 
   /* 数据录入 */
@@ -82,6 +84,8 @@ export default {
     col_amt:'Turnover',
     col_oi:'Holdings',
     col_settle:'Settlement Price',
+    ph_inland:'Domestic exchange',
+    ph_foreign:'Overseas exchange',
   },
 
   /* 钢联化工数据库 */

+ 5 - 1
src/lang/modules/DataSources/Zh.js

@@ -30,7 +30,9 @@ export default {
     label_classify:'指标分类',
     label_update_remin:'更新提醒',
     ph_update_remin:'请选择更新时间',
-    add_tobase_btn:'加入指标库'
+    add_tobase_btn:'加入指标库',
+
+    edb_not_allow_delete:'该指标已加入指标库,不可删除',
   },
 
   /* 数据录入 */
@@ -83,6 +85,8 @@ export default {
     col_amt:'成交额',
     col_oi:'持仓量',
     col_settle:'结算价',
+    ph_inland:'国内交易所',
+    ph_foreign:'海外交易所',
   },
 
   /* 钢联化工数据库 */

+ 1 - 0
src/lang/modules/ETATables/En.js

@@ -83,6 +83,7 @@ export default {
     table_data_update_msg: "The table data has been updated",
     formula_lable: "Formula",
     parent_directory_lable: "Parent directory",
+    not_allow_edit:'Currently not editable'
   },
 
   /* 自定义分析  */

+ 1 - 0
src/lang/modules/ETATables/Zh.js

@@ -83,6 +83,7 @@ export default {
     table_data_update_msg: "表格数据已更新",
     formula_lable: "公式",
     parent_directory_lable: "上级目录",
+    not_allow_edit:'当前不可编辑'
   },
 
   /* 自定义分析  */

+ 69 - 4
src/lang/modules/EtaBase/En.js

@@ -54,6 +54,9 @@ export default {
     complate_info: 'Complete Information',
     no_companyid_msg: 'Please input Company ID',
     no_edbid_msg: 'Please input Indicator ID',
+    no_source_msg:'Please select a source',
+    no_database_msg:'Please select database',
+    search_hint:'Searching data...',
     
     /* 替换指标弹窗 */
     origin_edb: 'Original Indicator',
@@ -79,21 +82,40 @@ export default {
     add_more_param: 'Add more parameters',
     create_edb_time_index: 'Generate Indicator Time Series',
     null_val_deal: 'Null Value Handling',
+    null_val_deal_0:'View Nearest Value Within 35 Days Before and After',
+    null_val_deal_1:'Do Not Calculate',
+    null_val_deal_2:'Forward Fill',
+    null_val_deal_3:'Backward Fill',
+    null_val_deal_4:'Equal to Zero',
+    null_val_del_hint:`1. find the latest value of 35 days before and after: When there is no value on the date series participating in the calculation, the index to find the nearest value forward/back as the value of the day to calculate, traversal allows across the year, up to 35 days before, up to 35 days after <br>
+    2. do not calculate: as long as an indicator has no value on a certain date (that is, null value), the calculated indicator has no value on that date <br>
+    3. Fill the previous value: empty value is first filled with the most recent previous value. When there is no previous value, fill with the last value <br>
+    4. post-value filling: the null value is first filled with the most recent post-value, when there is no previous value, fill with the post-value <br>
+    5. equal to 0: the null value is 0 value to participate in the calculation <br>
+    Note: The processing of missing values here applies to all time periods of the data`,
     max_null_val: 'MAX、MIN Null Value Handling',
+    max_null_val_2:'Skip null',
+    max_null_val_hint:`If there is a null value in the MAX and MIN formulas, handle it according to the following rules: <br>
+    1. equal to 0, null value with 0 to participate in the calculation; <br>
+    2. Skip the null value, remove the null value indicator, and calculate the remaining indicators. If all indicators of the date are null values, the date has no value;`,
     calculate_formula: 'Calculation Formula',
     input_formula_msg: 'Please input formula',
     input_formula_valid: 'Calculation Formula can not be blank',
     input_date_msg: 'Select date',
     formula_examp: 'Formula Example',
+    formula_examp_hint:`1. support new segments, to achieve different segments use different formulas, if no new segments, all date sequences are calculated with a unified formula <br>
+    2. A new formula and time node need to be configured to add segments. The new formula is used before (excluding) the time node, and the configured formula is used after (including) the time node.
+    3. the segmented time node is not allowed to repeat, not allowed to exceed the date interval of the first indicator`,
     func_examp: 'Function Support',
     add_segm:'Add segment',
     num_overrun_msg: 'The number of indicators added has reached the limit.',
     label_move_way: 'Moving Mode',
     label_n_val: 'N equals to',
     label_calendar: 'Calendar',
-    label_val_type: '数据取值',
-    val_type_end: '期末值',
-    val_type_average: '平均值',
+    label_calendar_placeholder:'Please select a calendar',
+    label_val_type: 'Data Retrieval',
+    val_type_end: 'Period-End Value',
+    val_type_average: 'Average Value',
 
     /* 指标拼接弹窗 */
     concat_tab_1:'Direct Splicing',
@@ -122,7 +144,50 @@ export default {
     label_date_tab2: 'Union of Part of Dates',
 
     /* 最新值弹窗 */
-    latest_val: 'latest value'
+    latest_val: 'latest value',
+
+    /* 批量计算弹窗 */
+    title_batch_calc : 'Batch Calc - Select',
+    title_batch_save : 'Batch Save Results',
+    default_select_text : 'Default',
+    mean_imputation_select_text : 'Mean Imputation',
+    formula_example_text : 'Formula Example: A+100, or A*2',
+    formula_example_text_a_b : 'A+B, or A/B, A/(A+B)',
+    formula_lable: "Formula",
+    metric_label_b: "Metric B",
+    alpha_value_lable: "Alpha Value",
+    equal_zeto: "Equal to Zero",
+    sum_radio_label: "Sum",
+    average_radio_label: "Average",
+    pending_metrics: "Pending Metrics (<{num})",
+    label_classify:'Metric Category',
+    select_frequency: "Choose Frequency",
+    table_col_creator:'Creator',
+    label_all_check:'Select All List',
+    full_metric_name:'Full Metric Name',
+    add_to_selections:'Add to Selections',
+    serial_num:'Serial Number',
+    search_value_days_options:'Search Nearest Value Within 35 Days Before and After',
+    not_alculate_options:'Do Not Calculate',
+    forward_fill_options:'Forward Fill',
+    backward_fill_options:'Backward Fill',
+    edbTagA:'Metric A',
+    edbTagB:'Metric B',
+    specify_series_label:'Specify Metric Time Series',
+    union_series_label:'Union of All Metric Time Series',
+    numeric_greater_msg:'Please enter a numeric alpha value greater than 0 and less than 1',
+    select_indicator_msg:'Please select indicator B',
+    limit_indicators_msg:'The limit for batch adding indicators has been reached',
+    gen_metric_name_label:'Gen Metric Name',
+    metric_name_input:'Enter Metric Name',
+    catalogue_directory:'Catalogue / Directory',
+    subdirectory_radio:'Subdirectory',
+    directory_radio:'Same Directory',
+    calculating_batch:'Calculating Batch...',
+    complete_information_msg:'Please fill in the complete information',
+    please_which_take_msg:'Please wait for the calculation to complete, which may take 2-3 minutes',
+    time_duration_num:'Enter a valid number',
+    time_duration_type:'Select the correct time period'
   },
 
   /* 代码运算页面 */

+ 66 - 1
src/lang/modules/EtaBase/Zh.js

@@ -54,6 +54,9 @@ export default {
     complate_info: '完善信息',
     no_companyid_msg: '请输入公司ID',
     no_edbid_msg: '请输入指标ID',
+    no_source_msg:'请选择来源',
+    no_database_msg:'请选择数据库',
+    search_hint:'搜索数据中...',
 
     /* 替换指标弹窗 */
     origin_edb: '原指标',
@@ -79,18 +82,37 @@ export default {
     add_more_param: '添加更多参数',
     create_edb_time_index: '生成指标时间序列',
     null_val_deal: '空值处理',
+    null_val_deal_0:'查找前后35天最近值',
+    null_val_deal_1:'不计算',
+    null_val_deal_2:'前值填充',
+    null_val_deal_3:'后值填充',
+    null_val_deal_4:'等于0',
+    null_val_del_hint:`1、查找前后35天最近值:在参与计算的日期序列上某指标无值时,该指标往前/往后找距离最近的值作为当天的值进行计算,遍历允许跨年,往前最多35天,往后最多35天<br>
+    2、不计算:只要有一个指标在某个日期没有值(即空值),则计算指标在该日期没有值 <br>
+    3、前值填充:空值优先以最近的前值填充,没有前值时,用后值填充 <br>
+    4、后值填充:空值优先以最近的后值填充,没有前值时,用后值填充 <br>
+    5、等于0:空值以0值参与计算 <br>
+    注意:此处缺失值的处理,作用于数据全部时间段`,
     max_null_val: 'MAX、MIN空值处理',
+    max_null_val_2:'跳过空值',
+    max_null_val_hint:`MAX、MIN公式中指标存在空值时按如下规则处理:<br>
+    1、等于0,空值用0参与计算;<br>
+    2、跳过空值,去除空值指标,剩余指标进行计算,若该日期所有指标均为空值,则该日期无值;`,
     calculate_formula: '计算公式',
     input_formula_msg: '请输入公式',
     input_formula_valid: '计算公式不能为空',
     input_date_msg: '选择日期',
     formula_examp: '公式示例',
+    formula_examp_hint:`1、支持新增分段,实现不同分段使用不同的计算公式,若未新增分段,则所有日期序列用统一公式计算<br>
+    2、新增分段需配置新公式和时间节点,在时间节点之前(不含)使用新公式,在时间节点之后(含)使用已配置公式,每个分段公式支持修改<br>
+    3、分段时间节点不允许重复,不允许超出第一个指标的日期区间`,
     func_examp: '函数支持',
     add_segm:'新增分段',
     num_overrun_msg: '添加指标个数已达上限',
     label_move_way: '移动方式',
     label_n_val: 'N等于',
     label_calendar: '日历',
+    label_calendar_placeholder:'请选择日历',
     label_val_type: '数据取值',
     val_type_end: '期末值',
     val_type_average: '平均值',
@@ -122,8 +144,51 @@ export default {
     label_date_tab2: '部分日期并集',
 
     /* 最新值弹窗 */
-    latest_val: '最新值'
+    latest_val: '最新值',
 
+    /* 批量计算弹窗 */
+    title_batch_calc : '批量计算-选择指标和计算公式',
+    title_batch_save : '批量计算-结果保存',
+    default_select_text : '默认',
+    mean_imputation_select_text : '均值填充',
+    formula_example_text : '公式示例:A+100,或A*2',
+    formula_example_text_a_b : '公式示例:A+B,或A/B,A/(A+B)',
+    formula_lable: "公式",
+    metric_label_b: "指标B",
+    alpha_value_lable: "alpha值",
+    equal_zeto: "等于0",
+    sum_radio_label: "求和",
+    average_radio_label: "求平均",
+    pending_metrics: "待选指标(选择指标数量不超过{num})",
+    label_classify:'指标分类',
+    select_frequency: "请选择频率",
+    table_col_creator:'创建人',
+    label_all_check:'列表全选',
+    full_metric_name:'指标全称',
+    add_to_selections:'加入已选指标',
+    serial_num:'序号',
+    search_value_days_options:'查找前后35天最近值',
+    not_alculate_options:'不计算',
+    forward_fill_options:'前值填充',
+    backward_fill_options:'后值填充',
+    edbTagA:'指标A',
+    edbTagB:'指标B',
+    specify_series_label:'指定指标时间序列',
+    union_series_label:'所有指标时间序列并集',
+    numeric_greater_msg:'请输入>0,<1的数值的alpha值',
+    select_indicator_msg:'请选择指标B',
+    limit_indicators_msg:'已达批量添加指标数量上限',
+    gen_metric_name_label:'生成指标名称',
+    metric_name_input:'请填写指标名称',
+    catalogue_directory:'目录',
+    subdirectory_radio:'分目录',
+    directory_radio:'同目录',
+    calculating_batch:'批量计算中...',
+    complete_information_msg:'请填写完整信息',
+    please_which_take_msg:'请等待计算完成,该过程可能持续2-3分钟',
+    time_duration_num:'请输入正确的数字',
+    time_duration_type:'请选择正确的时间段'
+     
   },
 
   /* 代码运算页面 */

+ 67 - 7
src/lang/modules/EtaBase/commonLang.js

@@ -108,6 +108,10 @@ export default {
     zh:'计算中...',
     en:'Calculating...'
   },
+  save_ing: {
+    zh:'保存中,请稍后······',
+    en:'Saving, please wait...'
+  },
   time_len_set: {
     zh:'时间长度设置',
     en:'Time Duration Setting'
@@ -124,6 +128,10 @@ export default {
     zh:'年数',
     en:'Number of years'
   },
+  please_select: {
+    en: "Please select",
+    zh: "请选择",
+  },
   only_see_mine:{
     zh:'只看我的',
     en:'Just look at mine'
@@ -243,8 +251,7 @@ export default {
     select_catalogue:{
       zh:'所属目录',
       en:'catalogue'
-    }
-
+    },
   },
 
   /* 单位 */
@@ -357,6 +364,14 @@ export default {
       zh:'天',
       en:'day'
     },
+    unfixed: {
+      zh:'无固定频率',
+      en:'Unfixed frequency'
+    },
+    total:{
+      zh:'全部',
+      en:'All'
+    }
   },
 
   /* 计算方式 */
@@ -367,7 +382,7 @@ export default {
     },
     to_month_quarter: {
       zh: '累计值转月/季值',
-      en: 'Convert Cumulative Values to Monthly/Quarterly'
+      en: 'Cumul to M/Q'
     },
     to_month: {
       zh: '累计值转月值',
@@ -387,15 +402,15 @@ export default {
     },
     n_move_average: {
       zh: 'N数值移动平均计算',
-      en: 'Calculation of N-number Moving Average'
+      en: 'N-Mov Avg'
     },
     n_rate: {
       zh: 'N数值环比值',
-      en: 'Sequential Growth Rate'
+      en: 'N-Seq Comp'
     },
     n_differ: {
       zh: 'N数值环差值',
-      en: 'N Period-over-Period Difference Calculation'
+      en: 'N-Seq Diff'
     },
     up_conver: {
       zh: '升频',
@@ -439,7 +454,7 @@ export default {
     },
     ex_smooth: {
       zh: '指数修匀',
-      en: 'Exponential Smoothing'
+      en: 'Index Smooth'
     },
     day_mean: {
       zh: '日均值',
@@ -481,6 +496,34 @@ export default {
       zh: '降频',
       en: 'Downsample or Reduce Frequency'
     },
+    to_monthly_v2: {
+      zh: '转月值',
+      en: 'To Monthly Value'
+    },
+    to_quarterly_v2: {
+      zh: '转季值',
+      en: 'To Quarterly Value'
+    },
+    latest_processing: {
+      zh: '最新值处理',
+      en: 'Latest Value Processing'
+    },
+    compute_w_const: {
+      zh: '与常数计算',
+      en: 'Compute w/ Const'
+    },
+    single_metric_op: {
+      zh: '与单指标计算',
+      en: 'Single Metric Op'
+    },
+    multi_metric: {
+      zh: '多指标求和/平均',
+      en: 'Sum/Avg Multi-Metric'
+    },
+    super_seasonal: {
+      zh: '超级季节性',
+      en: 'Super Seasonal'
+    },
   },
 
   /* 指标添加form提示 */
@@ -637,6 +680,10 @@ export default {
       zh: '请输入单位',
       en: 'Please input unit'
     },
+    select_unit: {
+      zh: '请选择单位',
+      en: 'Please select a unit'
+    },
     input_fre: {
       zh: '请选择频度',
       en: 'Please input frequency'
@@ -676,7 +723,20 @@ export default {
     input_select_edb: {
       zh: '请选择指标',
       en: 'Please select Indicator'
+    },
+    input_n_value: {
+      zh: '请输入N数值',
+      en: 'Enter N Value'
+    },
+    input_keyword: {
+      zh: '请输入关键词',
+      en: 'Please enter a keyword'
+    },
+    input_value: {
+      zh: '请输入值',
+      en: 'Please input a value'
     }
+    
   },
   
   /* 公示说明 */

+ 21 - 1
src/lang/modules/EtaChart/En.js

@@ -42,6 +42,8 @@ export default {
 
     //图例设置弹窗
     legend_hint: 'By default, the data year of the latest date of the curve is used as the legend name. If you manually edit it to other formats, it will no longer be automatically updated.',
+    legend_placeholder:'Please enter a legend name',
+    legend_check_hint:'All legend names cannot be empty',
 
     //标示线区弹窗
     add_plotline_btn: 'Add Marker Line',
@@ -50,6 +52,7 @@ export default {
     edit_plotarea_btn: 'Edit Marker Area',
     add_intro_btn: 'Add Chart Description',
     label_select_serie:'Select axis',
+    label_select_seris_placeholder:'Please select the date axis',
     label_line_scale:'Marker line position',
     label_area_scale:'Marker area range',
     label_line_sty:'Line Type',
@@ -82,6 +85,23 @@ export default {
     label_replace_edb: 'Replace Indicator',
     label_replace_to:'Replace with',
     label_add_moreserie:'More series configurations',
-    label_date_unit:'Day'
+    label_date_unit:'Day',
+
+
+
+    //图表单位转换
+    data_transformation: "Data Transformation",
+    divide_by: "Divide by",
+    multiply_by: "Multiply by",
+    logarithm: "Logarithm",
+    /**
+     * 单位:Edb.Detail.e_unit
+     * 保存:Dialog.confirm_save_btn
+     */
+    chart_set_radio: "Set to chart unit",
+    data_transformation_hint: "Invalid data conversion, please check the value",
+    data_transformation_hint2: "The indicator data contains negative numbers or zeros and cannot be logarithmically calculated",
+    data_transformation_list_hint: "Invalid data conversion, please check the value",
+    data_transformation_list_hint2: "The indicator data contains negative numbers or zeros and cannot be logarithmically calculated"
   }
 }

+ 19 - 1
src/lang/modules/EtaChart/Zh.js

@@ -42,6 +42,8 @@ export default {
 
     //图例设置弹窗
     legend_hint: '默认取该曲线最新日期的数据年份作为图例名称,手动编辑为其他格式,则不再自动更新',
+    legend_placeholder:'请输入图例名称',
+    legend_check_hint:'所有图例名称都不能为空',
 
     //标示线区弹窗
     add_plotline_btn: '添加标识线',
@@ -50,6 +52,7 @@ export default {
     edit_plotarea_btn: '编辑标识区',
     add_intro_btn: '添加图表说明',
     label_select_serie:'选择坐标轴',
+    label_select_seris_placeholder:'请选择日期坐标轴',
     label_line_scale:'标识线所在刻度',
     label_area_scale:'标识区所在范围',
     label_line_sty:'线型',
@@ -82,6 +85,21 @@ export default {
     label_replace_edb: '指标替换',
     label_replace_to:'替换为',
     label_add_moreserie:'更多系列配置',
-    label_date_unit:'天'
+    label_date_unit:'天',
+
+    //图表单位转换
+    data_transformation: "数据转换",
+    divide_by: "除以",
+    multiply_by: "乘以",
+    logarithm: "对数",
+    /**
+     * 单位:Edb.Detail.e_unit,e_en_unit
+     * 保存:Dialog.confirm_save_btn
+     */
+    chart_set_radio: "设置为图表单位",
+    data_transformation_hint: "数据转换不合法,请检查数值",
+    data_transformation_hint2: "指标数据含有负数或0,无法进行对数运算",
+    data_transformation_list_hint: "第{num}个数据转换不合法,请检查数值",
+    data_transformation_list_hint2: "第{num}个指标数据含有负数或0,无法进行对数运算"
   }
 }

+ 16 - 0
src/lang/modules/EtaChart/commonLang.js

@@ -40,6 +40,14 @@ export default {
     zh:'请选择时间段',
     en:'Please select time period'
   },
+  date_tip_count:{
+    zh:'最近{year}年',
+    en:'Last {year} years'
+  },
+  data_tip_since:{
+    zh:'{date}~至今',
+    en:'Since {date}'
+  },
   calendar_gre: {
     zh: '公历',
     en: 'Gregorian Calendar'
@@ -179,6 +187,14 @@ export default {
       zh:'您选择的图表样式为季节性图表,只支持单指标画图',
       en:'The chart style you selected is a seasonal chart, which only supports single indicator drawing'
     },
+    season_add_hint:{
+        zh:'请添加系列指标',
+        en:'Please Add a series indicator'
+    },
+    season_area_hint:{
+        zh:'横坐标显示范围不能为空',
+        en:'The horizontal coordinate display range cannot be empty'
+    },
     scatter_onlytwo_msg: {
       zh:'您选择的图表样式为散点图,最多支持2个指标',
       en:'The chart style you have selected is a scatter plot, which supports a maximum of 2 indicators'

+ 2 - 1
src/lang/modules/MainApp/En.js

@@ -43,7 +43,7 @@ export default {
     ph_mobile: 'Please enter your mobile number',
     ph_email:'Please enter your email address',
     ph_img_code: 'Please enter the graphic verification code',
-    ph_msg_code: 'Please enter the verification code',
+    ph_msg_code: 'Enter verification code',
     ver_code_msg:'Get verification code',
     recode_ing_msg:'Retrieve Again({count})seconds',
     recode_msg:'Retrieve Again',
@@ -63,5 +63,6 @@ export default {
 
     tab_vaild_phone:'Mobile Phone Verification',
     tab_vaild_email:'Email Verification',
+    no_menu_hint:'This account does not have any menu permissions. Please contact the administrator',
   }
 }

+ 1 - 0
src/lang/modules/MainApp/Zh.js

@@ -63,5 +63,6 @@ export default {
 
     tab_vaild_phone:'手机号验证',
     tab_vaild_email:'邮箱验证',
+    no_menu_hint:"该账号没有任何菜单权限,请联系管理员"
   }
 }

+ 2 - 1
src/lang/modules/MyEta/En.js

@@ -78,6 +78,7 @@ export default {
     label_label_link:'Node Link',
     ph_link: 'Please select a node link',
 
-    no_graph_msg: 'Please draw canvas content'
+    no_graph_msg: 'Please draw canvas content',
+    upload_pic_fail:'Upload picture failed'
   }
 }

+ 2 - 1
src/lang/modules/MyEta/Zh.js

@@ -79,6 +79,7 @@ export default {
     label_label_link:'节点链接',
     ph_link: '请选择节点链接',
 
-    no_graph_msg: '请绘制画布内容'
+    no_graph_msg: '请绘制画布内容',
+    upload_pic_fail:'上传图片失败'
   }
 }

+ 1 - 1
src/lang/modules/ReportManagement/AuthorManagement.js

@@ -22,7 +22,7 @@ export const AuthorManagementEn = {
   delete_success_msg: "Delete successful",
   english_report_tab: "English research report",
   chinese_report_tab: "Chinese research report",
-  research_report_type: "Research report type",
+  research_report_type: "Report Type",
   research_report_type_select: "Please select the type of research report",
 
 

+ 56 - 1
src/lang/modules/ReportManagement/CategoryList.js

@@ -6,7 +6,7 @@
 export const CategoryListEn = {
   chinese_tabs: "Chinese Classification",
   english_tabs: "English research reports",
-  add_category_btn: "Add category",
+  add_category_btn: "Add Category",
   edit_category_btn: "Edit Category",
   category_name_ipt: "Category Name",
   one_category_table: "First-level category",
@@ -92,6 +92,31 @@ export const CategoryListEn = {
   check_permissions: "Please check the following permissions",
   Permission_success_msg: "Permission configuration successful",
   is_delete_chapter: "Are you sure to delete this chapter?",
+
+
+    /* 新版 */
+    add_category: "Add Category",
+    edit_category: "Edit Category",
+    //弹窗内容
+    category_name: "Category Name",
+    category_name_hint: "Enter Category Name",
+    category_name_check_hint: "Category Name: {name} Already Exists",
+    section_settings: "Section Settings",
+    add_section: "Add Section",
+    edit_section: "Edit Section",
+    section_name: "Section Name",
+    section_name_hint: "Enter Section Name",
+    parent_category: "Parent Category",
+    parent_none: "none",
+    related_variety: "Related Variety",
+    related_variety_inputhint: "Please Select",
+    related_variety_hint: "Control Report Reading Permission",
+    addition_successful: "Addition Successful",
+    modification_successful: "Modification Successful",
+    move_successful: "Move Successful",
+    add_section_successful: "Add Section Successful",
+    edit_section_successful: "Edit Section Successful",
+    setup_successful: "Setup Successful"
 };
 
 /* 中文 */
@@ -184,4 +209,34 @@ export const CategoryListZh = {
   check_permissions: "请勾选以下权限配置",
   Permission_success_msg: "权限配置成功",
   is_delete_chapter: "确认删除这个章节吗?",
+
+
+
+    /* 新版 */
+    add_category: "添加分类",
+    edit_category:"编辑分类",
+    /**
+     * 保存 取消:Dialog.confirm_save_btn,cancel_btn
+     * 启用 禁用: Common.enable,disable
+     */
+    category_name: "分类名称",
+    category_name_hint: "请输入分类名称",
+    category_name_check_hint: "分类名称: {name} 已存在",
+    section_settings: "章节设置",
+    add_section: "添加章节",
+    edit_section: "编辑章节",
+    section_name: "章节名称",
+    section_name_hint: "请输入章节名称",
+    parent_category: "上级分类",
+    parent_none:'无',
+    related_variety: "关联品种",
+    related_variety_inputhint: "请选择",
+    related_variety_hint: "控制报告阅读权限",
+    addition_successful: "新增成功",
+    modification_successful: "修改成功",
+    move_successful: "移动成功",
+    add_section_successful: "添加章节成功",
+    edit_section_successful: "编辑章节成功",
+    setup_successful: "设置成功" 
 };
+

+ 12 - 2
src/lang/modules/ReportManagement/CloudPage.js

@@ -11,6 +11,7 @@ export const CloudPageEn = {
   create_btn: "Create",
   folder_error_msg: "The folder exists",
   folder_success_msg: "New folder created successfully",
+  selected_msg:"Selected {num} files/folders",
   // 上传文件
   upload_btn: "Upload document",
   select_folder_title: "Select folder",
@@ -20,6 +21,7 @@ export const CloudPageEn = {
   upload_folder_error_msg: "Please select a folder director",
   upload_please_error_msg: "A file with the same name already exists. Do you still want to proceed with uploading the file?",
   upload_confirm_btn: "Keep both",
+  upload_msg:"Uploading, please hold on······",
   //   表格
   column_name: "Name",
   column_author: "Author",
@@ -33,9 +35,12 @@ export const CloudPageEn = {
   rename_dialog_success_msg: "Rename successful",
   download_info_msg: "is starting to download. Please do not download again",
   download_success_msg: "Download successful",
+  download_fail_msg:"Download failed",
   delete_success_msg: "Delete successful",
   table_no_file: "No file available",
-  everything:'Everything'
+  everything:'Everything',
+  download_msg:"The folder is empty and cannot be downloaded",
+  download_banch_msg:"Please select at least one file/folder",
 };
 
 /* 中文 */
@@ -47,6 +52,7 @@ export const CloudPageZh = {
   create_btn: "创建",
   folder_error_msg: "该文件夹已存在",
   folder_success_msg: "新建文件夹成功",
+  selected_msg:"已选中{num}个文件/文件夹",
   // 上传文件
   upload_btn: "上传文件",
   select_folder_title: "选择文件夹",
@@ -56,6 +62,7 @@ export const CloudPageZh = {
   upload_folder_error_msg: "请选择文件夹目录",
   upload_please_error_msg: "已有同名文件,是否继续上传文件?",
   upload_confirm_btn: "保留两者",
+  upload_msg:"上传中,请稍后······",
   //   表格
   column_name: "名称",
   column_author: "创建人",
@@ -69,7 +76,10 @@ export const CloudPageZh = {
   rename_dialog_success_msg: "重命名成功",
   download_info_msg: "开始下载,请勿重复下载",
   download_success_msg: "下载成功 ",
+  download_fail_msg:"下载失败",
   delete_success_msg: "删除成功",
   table_no_file: "暂无文件",
-  everything:'全部'
+  everything:'全部',
+  download_msg:"文件夹为空,暂不支持下载",
+  download_banch_msg:"请至少选择一个文件/文件夹",
 };

+ 47 - 1
src/lang/modules/ReportManagement/CommodityConfiguration.js

@@ -1,5 +1,5 @@
 /**
- * 研报管理--品种配置
+ * 研报管理--品种管理
  */
 
 /* 英文 */
@@ -19,6 +19,27 @@ export const CommodityConfigurationEn = {
   delete_info_msg: "Are you sure you want to delete this file?",
   delete_success_msg: "Delete sucessful",
   delete_error_msg: "Please delete associated product under this category first",
+
+
+  /* 新版 */
+  chinese_tabs: "CN Commodity",
+  english_tabs: "EN Commodity",
+  add_variety: "Add Variety",
+  edit_variety: "Variety Settings",
+  variety_name: "Variety Name",
+  parent_variety: "Parent Variety",
+  active_status: "Active Status",
+  set_root_hint:"The default value is private. Select and save the Settings to public",
+  set_root_text:"Public permission Settings",
+  variety_name_hint: "Enter Variety Name",
+  variety_name_check_hint: "Please Fill in Variety Name",
+  variety_name_check_hint2: "Variety Name Exists",
+  variety_add_succ_msg: "Addition Successful",
+  variety_edit_succ_msg: "Edit Successful",
+  variety_public:"Public",
+  variety_private:"Private",
+
+
 };
 
 /* 中文 */
@@ -38,6 +59,31 @@ export const CommodityConfigurationZh = {
   delete_info_msg: "确认删除吗?",
   delete_success_msg: "删除成功",
   delete_error_msg: "请先删除该品种下关联品种",
+
+
+
+  /* 新版 */
+  chinese_tabs: "中文品种",
+  english_tabs: "英文品种",
+  add_variety: "添加品种",
+  edit_variety: "品种设置",
+  variety_name: "品种名称",
+  parent_variety: "上级品种",
+  active_status: "启动状态",
+  set_root_hint:"默认为私有,勾选并保存设置为公有",
+  set_root_text:"公有权限设置",
+  variety_name_hint: "请输入品种名称",
+  variety_name_check_hint: "请填写品种名称",
+  variety_name_check_hint2: "品种名称已存在",
+  variety_add_succ_msg: "新增成功",
+  variety_edit_succ_msg: "编辑成功",
+  variety_public:"公有",
+  variety_private:"私有",
+  /**
+   * 全选 Common.all_select
+   * 确定,取消 Dialog.confirm_btn,cancel_btn
+   * 设置成功 ReportManage.CategoryList.setup_successful
+   */
 };
 
 /*

+ 11 - 7
src/lang/modules/ReportManagement/ReportList.js

@@ -34,10 +34,10 @@ export const ReportListEn = {
   no_reports_msg: "There are currently no reports for this category",
   chart_insertion_progress: "Batch chart insertion in progress",
   last_save_time: "Last save time",
-  click_refresh_btn: "Refresh",
+  click_refresh_btn: "Rfrsh",
   preview_btn: "Preview",
-  save_draft_btn: "Save Draft",
-  scheduled_publish_btn: "Scheduled Publish",
+  save_draft_btn: "Draft",
+  scheduled_publish_btn: "Schedule",
   publish_btn: "Publish",
   submission_btn: "Submission",
   new_method_btn: "New method",
@@ -50,9 +50,9 @@ export const ReportListEn = {
   chart_inventory_radio: "Gallery",
   price_curve_radio: "Commodity price curve",
   related_charts_radio: "Related Charts",
-  curve_fitting_radio: "Curve fitting",
-  statistical_feature_radio: "Statistical Feature",
-  intercommodity_analysis_radio: "Intercommodity Analysis",
+  curve_fitting_radio: "Fit Curve",
+  statistical_feature_radio: "Stats Traits",
+  intercommodity_analysis_radio: "Cross-Comm",
   just_mine_radio: "Just Mine",
   insert_sandbox_tabs: "Insert Sandbox",
   no_reports_msg: "Sandbox Name/Commodity",
@@ -77,6 +77,8 @@ export const ReportListEn = {
   semantic_top_type: "Semantic Analy",
   chart_top_type: "Chart Inventory",
   insert_charts_msg: "Please insert charts",
+  select_header_setting:"Select the Page header",
+  select_trailer_setting:"Select the Page trailer",
   header_setting_msg: "Page header setting successful",
   trailer_setting_msg: "Page trailer setting successful",
   chart_refreshed_msg: "The chart is currently being refreshed, please do not repeat the operation",
@@ -89,7 +91,7 @@ export const ReportListEn = {
   page_trailer_op: "Page Trailer",
   select_layout_msg: "Please select a layout",
   keyword_search: "Keyword Search",
-  correlation_analysis: "Correlation Analysis",
+  correlation_analysis: "Correlation",
   text_editing: "Text Editing",
   chart_category_name: "Chart Category Name",
   click_import: "One click import",
@@ -194,6 +196,8 @@ export const ReportListZh = {
   semantic_top_type: "语义分析",
   chart_top_type: "图库",
   insert_charts_msg: "请插入图表",
+  select_header_setting:"请选择版头",
+  select_trailer_setting:"请选择版尾",
   header_setting_msg: "版头设置成功",
   trailer_setting_msg: "版尾设置成功",
   chart_refreshed_msg: "图表正在刷新中,请勿重复操作",

+ 2 - 0
src/lang/modules/ReportManagement/SmartReport.js

@@ -41,6 +41,7 @@ export const SmartReportEn = {
   smart_release_approval_time: "Release/Approval Time",
   smart_report_push_time_btn: "Report push time",
   smart_issue_number_btn: "Issue number",
+  smart_issue_bumber_text:"Issue {num}",
   smart_frequency_btn: "Frequency",
   smart_withdraw_btn: "Withdraw",
   smart_push_notification_btn: "Push Notification",
@@ -168,6 +169,7 @@ export const SmartReportZh = {
   smart_release_approval_time: "发布/审批时间",
   smart_report_push_time_btn: "报告推送时间",
   smart_issue_number_btn: "期数",
+  smart_issue_bumber_text:"第{num}期",
   smart_frequency_btn: "频度",
   smart_withdraw_btn: "撤销",
   smart_push_notification_btn: "推送消息",

+ 18 - 1
src/lang/modules/SandboxManage/SandList.js

@@ -21,9 +21,18 @@ export const SandListEn = {
     logic_diagram_name:"Logic diagram's name",
     delete_attention_msg1:'Logic diagrams exist under this category and cannot be deleted',
     delete_attention_msg2:'Are you sure to delete current category?',
+    delete_attention_msg3:'Are you sure to delete the current category and the subcategories it contains?',
     add_diagram_msg01:"Please fill in the logic diagram's name",
     select_categories_msg:'Please select category',
     save_as_success:'Save As successful.',
+    delete_check:"Are you sure to delete the logic diagram?",
+    move_classify_success:"Move sort success",
+    move_classify_fail:"Failed to restore the directory location. Refresh the directory",
+    success_text:"successful",
+    no_content_copy:"There is no content to copy",
+    copy_pic:"Copy the picture...",
+    no_content_pic:"Canvas without content",
+    save_pic:"Saving",
   };
   
   /* 中文 */
@@ -45,10 +54,18 @@ export const SandListEn = {
     logic_diagram_name:"逻辑图名称",
     delete_attention_msg1:'该分类下存在沙盘图,不可删除',
     delete_attention_msg2:'确定删除当前分类吗?',
+    delete_attention_msg3:'确认删除当前分类及包含的子分类吗?',
     add_diagram_msg01:'请填写逻辑图名称',
     select_categories_msg:'请选择所属分类',
     save_as_success:'另存为成功',
-
+    delete_check:"确定删除该沙盘图吗?",
+    move_classify_success:"移动分类成功",
+    move_classify_fail:"目录位置还原失败,刷新目录",
+    success_text:"成功",
+    no_content_copy:"暂无内容可复制",
+    copy_pic:"复制图片中...",
+    no_content_pic:"画布无内容",
+    save_pic:"保存中...",
   };
   
   /**

+ 252 - 0
src/lang/modules/SemanticsManage/ASRpage.js

@@ -0,0 +1,252 @@
+/**
+ * 语义分析 -- 语音识别
+ * $t('SemanticsManage.ASRpage')
+ */
+
+export const ASRPageEn = {
+
+    //新建编辑弹窗
+    create_new:"Create New",
+    belonging_directory:"Belonging Directory",
+    belonging_directory_placeholder:"Please Select Belonging Directory",
+    belonging_directory_hint:"Belonging Directory Required",
+    file_count:"File Count",
+    file_name:"File Name",
+    file_size:"Size",
+    audio_video:"Audio/Video",
+    start_upload_hint:"Click/Drag and Drop",
+    start_upload_hint2:"Local Audio/Video Files",
+    uploading_hint:"Uploading, Please Do Not Close the Popup Window",
+    continue_adding:"Continue Adding",
+    file_check_hint:"The same file name already exists!",
+    faile_upload_hint:"Upload failed, please refresh and try again!",
+    success_upload_hint:"Upload complete, please check the transcription list.",
+    supported_audio_formats:"Supported Audio Formats",
+    supported_video_formats:"Supported Video Formats",
+    upload_description:"Single file up to 5 hours long, maximum 1GB, up to 50 files per upload.",
+    start_trans:"Start transliteration",
+    upload_title:"Upload Local Audio/Video Files",
+    same_file_hint:"The file with the same name is being uploaded, please try again later",
+    format_hint:"The format is not supported",
+    size_hint:"The size is out of limit",
+    limit_hint:"Description The number of uploaded files exceeds {num}. {name} failed to upload",
+    audio_text:'audio',
+    video_text:'video',
+    time_hint:"The time limit has expired",
+    time_fail:"Cannot get the duration, please try again",
+    trans_hint:"There are still audio/video upload is not completed, please wait for upload success before transferring!",
+    trans_success_hint:"The transfer was submitted successfully. ",
+    trans_status_1:"Translating",
+    trans_status_2:"Transliteration complete",
+    trans_status_3:"Transliteration failure",
+
+    //搜索,筛选
+    search_placeholder:"Please Enter File Name",
+    filter_text:"Filter",
+    filter_options:"Filter Options",
+    clear_btn:"Clear",
+    start_text:"Start",
+    end_text:"End",
+    creator_text:"Creator",
+    tag_text:"Tag",
+    directory_text:"Directory",
+
+    //添加,编辑目录
+    add_directory_category:"Add Directory Category",
+    add_directory_text:"Add Directory",
+    edit_directory_text:"Edit Directory",
+    add_tag_category:"Add Tag Category",
+    edit_tag_category:"Edit Tag Category",
+    edit_tag_text:"Edit Tag",
+    add_tag_text:"Add Tag",
+    directory_name:"Directory Name",
+    tag_name:"Tag Name",
+    tag_name_placeholder:"Please Enter the Tag Name",
+    belonging_directory:"Belonging Directory",
+    parent_directory:"Parent Directory",
+    first_directory:"First-Level Directory",
+    second_directory:"Second-Level Directory",
+    directory_name_required:"Directory Name Required",
+    required_field:"Required Field",
+    tag_name_required:"Tag Name Required",
+    belonging_directory_required:"Belonging Directory Required",
+    addition_directory_successful:"Directory Added Successfully",
+    edition_directory_successful:"Directory Edited Successfully",
+    addition_tag_successful:"New Tag Added Successfully",
+    editition_tag_successful:"Tag Edited Successfully",
+    //删除校验
+    prompt_text:"Prompt",
+    failed_text:"Deletion Failed",
+    failed_btn:"Understood",
+    check_text:"Are you sure you want to delete the current category?",
+    check_text2:"Are you sure you want to delete the current category and its subcategories?",
+    check_text3:"Are you sure you want to delete the current tag?",
+    failed_delete_text:"The category is associated with tags, deletion failed!",
+    failed_delete_text2:"The category is associated with transcription files, deletion failed!",
+    failed_delete_text3:"The tag is associated with transcription files, deletion failed!",
+    deletion_successful:"Deletion Successful",
+    //卡片列表
+    no_directory_available:"No Directory Available",
+    total_files:"A total of {num} files",
+    //列表操作
+    rename_text:"Rename",
+    //file_name,
+    //search_placeholder,
+    file_name_required:"File Name Required",
+    rename_successful:"Rename Successful",
+
+    tagging_text:"Tagging",
+    select_all_text:"Select All",
+    //tag_name_placeholder,
+    //add_tag_text,
+    tag_directory_placeholder:"Please Select a Tag Directory",
+    //tag_name_required,
+    tag_directory_required:"Tag Directory Required",
+    //addition_tag_successful
+    tagging_successful:"Tagging Successful",
+
+    export_text:"Export",
+    export_content:"Export Content",
+    file_format:"File Format",
+    file_format_required:"File Format Required",
+    file_format_placeholder:"Select File Format",
+    display_information:"Display Information",
+    display_information_placeholder:"Select Display Information",
+    timestamps_text:"Timestamp",
+
+    delete_text:"Delete",
+    delete_file_check:"Are you sure you want to delete the selected records?",
+
+    //详情
+    please_enter_keywords:"Please Enter Keywords",
+    save_successful:"Save Successful",
+    delete_audio_check:"Are you sure you want to delete this audio? (Deleting will not affect the display of the original text.)",
+    delete_video_check:"Are you sure you want to delete this video? (Deleting will not affect the display of the original text.)",
+    original_text:"Original Text",
+    hide_timestamps:"Hide Timestamps",
+    show_timestamps:"Show Timestamps",
+    copy_text:"Copy",
+    speed_text:"Speed",
+
+
+
+
+
+
+
+}
+export const ASRPageZh = {
+    create_new:"新建",
+    belonging_directory_placeholder:"请选择所属目录",
+    belonging_directory:"所属目录必填",
+    file_count:"文件数量",
+    file_name:"文件名",
+    file_size:"大小",
+    audio_video:"音/视频",
+    /**
+     * 操作,删除 Table.column_operations,delete_btn
+     * 取消,确认/确定 Dialog.confirm_btn,cancel_btn
+     * 保存confirm_save_btn
+     */
+    start_upload_hint:"点击/拖拽",
+    start_upload_hint2:"本地音视频文件",
+    uploading_hint:"上传中,请勿关闭弹窗",
+    continue_adding:"继续添加",
+    file_check_hint:"相同文件名称已存在!",
+    faile_upload_hint:"上传失败,请刷新重试",
+    success_upload_hint:"上传完成,请检查转写列表",
+    supported_audio_formats:"支持音频格式",
+    supported_video_formats:"支持视频格式",
+    upload_description:"单个文件最长5小时,最大1GB,单次上传支持上传50个",
+    start_trans:"开始转写",
+    upload_title:"上传本地音视频文件",
+    same_file_hint:"同名文件正在上传,请稍后重试",
+    format_hint:"格式不受支持",
+    size_hint:"大小已超限",
+    limit_hint:"上传文件已超过{num}个,{name}上传失败",
+    audio_text:'音频',
+    video_text:'视频',
+    time_hint:"时长已超限",
+    time_fail:"获取不到时长,请重试",
+    trans_hint:"还有音/视频未上传完成,请等待上传成功后再转写!",
+    trans_success_hint:"提交转写成功",
+    trans_status_1:"转写中",
+    trans_status_2:"转写完成",
+    trans_status_3:"转写失败",
+
+    search_placeholder:"请输入文件名称",
+    filter_text:"筛选",
+    filter_options:"筛选项",
+    clear_btn:"清空",
+    start_text:"开始",
+    end_text:"结束",
+    creator_text:"创建人",
+    tag_text:"标签",
+    directory_text:"目录",
+
+    add_directory_category:"添加目录分类",
+    add_directory_text:"添加目录",
+    edit_directory_text:"编辑目录",
+    add_tag_category:"添加标签分类",
+    edit_tag_category:"编辑标签分类",
+    edit_tag_text:"编辑标签",
+    add_tag_text:"添加标签",
+    directory_name:"目录名称",
+    tag_name:"标签名称",
+    tag_name_placeholder:"请输入标签名称",
+    belonging_directory:"所属目录",
+    //belonging_directory_placeholder
+    parent_directory:"上级目录",
+    first_directory:"一级目录",
+    second_directory:"二级目录",
+    directory_name_required:"目录名称必填",
+    required_field:"必填项",
+    tag_name_required:"标签名称必填",
+    belonging_directory_required:"所属目录必填",
+    addition_directory_successful:"添加目录成功",
+    edition_directory_successful:"编辑目录成功",
+    addition_tag_successful:"添加标签成功",
+    editition_tag_successful:"编辑标签成功",
+
+    prompt_text:"提示",
+    failed_text:"删除失败",
+    failed_btn:"知道了",
+    check_text:"确定删除当前分类吗?",
+    check_text2:"确定删除当前分类及包含的子分类吗?",
+    check_text3:"确定删除该标签吗?",
+    failed_delete_text:"该分类关联标签,删除失败!",
+    failed_delete_text2:"该分类关联转写文件,删除失败!",
+    failed_delete_text3:"标签关联转写文件,删除失败!",
+    deletion_successful:"删除成功",
+
+    no_directory_available:"暂无目录",
+    total_files:"共{num}个文件",
+    rename_text:"重命名",
+    file_name_required:"文件名称必填",
+    rename_successful:"重命名成功",
+    tagging_text:"打标签",
+    select_all_text:"全选",
+    tag_directory_placeholder:"请选择标签目录",
+    tag_directory_required:"标签目录必填",
+    tagging_successful:"打标签成功",
+    export_text:"导出",
+    export_content:"导出成功",
+    file_format:"文件格式",
+    file_format_required:"文件格式必填",
+    file_format_placeholder:"请选择文件格式",
+    display_information:"显示信息",
+    display_information_placeholder:"请选择显示信息",
+    timestamps_text:"时间戳",
+    delete_text:"删除",
+    delete_file_check:"确定删除选中记录吗?",
+
+    please_enter_keywords:"请输入关键词",
+    save_successful:"保存成功",
+    delete_audio_check:"确定删除该音频吗?(删除后不影响原文显示)",
+    delete_video_check:"确定删除该视频吗?(删除后不影响原文显示)",
+    original_text:"原文",
+    hide_timestamps:"隐藏时间戳",
+    show_timestamps:"显示时间戳",
+    copy_text:"复制",
+    speed_text:"倍速",
+}

+ 2 - 0
src/lang/modules/SemanticsManage/indexEn.js

@@ -3,11 +3,13 @@
 import { DocumentComparisonEn } from "./DocumentComparison";
 import { DocumentManagementEn } from "./DocumentManagement";
 import { TagManagementEn } from "./TagManagement";
+import { ASRPageEn } from "./ASRpage";
 
 export default {
   SemanticsManage: {
     DocumentComparison: DocumentComparisonEn,
     DocumentManagement: DocumentManagementEn,
     TagManagement: TagManagementEn,
+    ASRpage:ASRPageEn,
   },
 };

+ 2 - 0
src/lang/modules/SemanticsManage/indexZh.js

@@ -1,6 +1,7 @@
 import { DocumentComparisonZh } from "./DocumentComparison";
 import { DocumentManagementZh } from "./DocumentManagement";
 import { TagManagementZh } from "./TagManagement";
+import {ASRPageZh} from "./ASRpage";
 
 export default {
   // 语义分析----模块
@@ -8,5 +9,6 @@ export default {
     DocumentComparison: DocumentComparisonZh,
     DocumentManagement: DocumentManagementZh,
     TagManagement: TagManagementZh,
+    ASRpage:ASRPageZh,
   },
 };

+ 3 - 0
src/lang/modules/Slides/pptList.js

@@ -114,6 +114,8 @@ export const listEn = {
   is_delete_ppt: "Are you sure you want to delete this PowerPoint slide?",
   add_least_one: "Please add at least one PowerPoint slide.",
   preview_report_btn: "Preview report.",
+  last_save_time: "Last save time",
+
 
   //列表页操作栏
   list_ppt_item_publish:'Publish',
@@ -236,6 +238,7 @@ export const listZh = {
   is_delete_ppt: "确定删除该页ppt吗",
   add_least_one: "请至少添加一张",
   preview_report_btn: "预览报告",
+  last_save_time: "最近保存时间",
 
   //列表页操作栏
   list_ppt_item_publish:'预览发布',

+ 6 - 2
src/lang/modules/Slides/pptMsg.js

@@ -14,7 +14,9 @@ export const messageEn = {
     `<p>2. Choose the desired location to copy or cut the PPT slides, click on the more options for the selected PPT slide, and choose "Paste Before This Slide" or "Paste After This Slide."</p>`,
   msg_affirmative: "Affirmative",
   is_delete_ppt_msg:'Are you sure to delete the ppt on this page',
-  generating_powerPoint_msg:'Generating PowerPoint'
+  generating_powerPoint_msg:'Generating PowerPoint...',
+  msg_page_at_least_one:'Please add at least one page!',
+  download_ppt_msg:'Generating PPT completed. Now downloading PowerPoint...',
 
 };
 
@@ -30,6 +32,8 @@ export const messageZh = {
     `<p>2、选择所要复制或剪切的PPT页位置,点击PPT页的更多操作项,选择“粘贴到此页前”或“粘贴到此页后”。</p>`,
   msg_affirmative: "知道了",
   is_delete_ppt_msg:'确定删除该页ppt吗',
-  generating_powerPoint_msg:'生成ppt中...'
+  generating_powerPoint_msg:'生成ppt中...',
+  msg_page_at_least_one:'请至少添加一页!',
+  download_ppt_msg:'生成PPT完成,正在下载PPT...',
 };
 // Slides

+ 3 - 0
src/lang/modules/StatisticAnalysis/ChartRelevance.js

@@ -34,6 +34,7 @@ export const ChartRelevanceEn = {
     update_edb:'update',
     update_success:'Update success',
     chart_save_as:'Save Chart As',
+    check_value_hint:'Correlation calculation window must be ≥2* analysis period'
 };
   
 /* 中文 */
@@ -68,6 +69,8 @@ export const ChartRelevanceZh = {
     update_edb:'更新',
     update_success:'更新成功',
     chart_save_as:'图表另存为',
+
+    check_value_hint:'相关性计算窗口必须≥2*分析周期'
 };
   
 /**

+ 15 - 2
src/lang/modules/StatisticAnalysis/CrossVarietyChart.js

@@ -20,7 +20,13 @@ export const CrossVarietyChartEn = {
     add_date:'Add date',
     latest_date:'Latest date',
     n_day_before:'N days ago',
-    fixed_date:'fixed date'
+    fixed_date:'fixed date',
+    please_select:'Please Select',
+    chart_name_input:'Enter Chart Name',
+    fill_chart_name:'Please Fill in the Chart Name!',
+    msg_hint01:'Please enter the length of time',
+    msg_hint02:'Please select the X-axis coordinates',
+    msg_hint03:'Please select the Y-axis coordinates'
 };
   
 /* 中文 */
@@ -41,7 +47,14 @@ export const CrossVarietyChartZh = {
     add_date:'添加日期',
     latest_date:'最新日期',
     n_day_before:'N天前',
-    fixed_date:'固定日期'
+    fixed_date:'固定日期',
+    please_select:'请选择',
+    chart_name_input:'请输入图表名称',
+    fill_chart_name:'请填写图表名称!',
+    msg_hint01:'请输入时间长度',
+    msg_hint02:'请选择X轴坐标',
+    msg_hint03:'请选择Y轴坐标'
+
 };
   
 /**

+ 25 - 0
src/lang/modules/StatisticAnalysis/FittingEquationChart.js

@@ -9,6 +9,18 @@ export const FittingEquationChartEn = {
     msg01:'Please select an indicator',
     msg02:'The number of indicators shall not be less than 2 groups',
     msg03:'The number of indicators on the X-axis and Y-axis is inconsistent',
+
+    detail_dialog_title:'Save',
+    detail_dialog_cancel:'Cancel',
+    detail_dialog_chart_type01:'Elastic coefficient(a)',
+    detail_dialog_chart_type02:'Intercept(b)',
+    detail_dialog_chart_type03:'Correlation coefficient(r²)',
+    detail_dialog_placeholder01:'Please select a category',
+    detail_dialog_placeholder02:'Please fill in the chart name',
+    detail_dialog_form_rules01:'The chart name cannot be empty',
+    detail_dialog_form_rules02:'Chart categories cannot be empty',
+    detail_dialog_save_check:'Please select at least one chart',
+    detail_dialog_save_success:'save successfully'
 };
   
 /* 中文 */
@@ -19,6 +31,19 @@ export const FittingEquationChartZh = {
     msg02:'指标数量不得少于2组',
     msg03:'X轴与Y轴指标数量不一致',
 
+    detail_dialog_title:'保存',
+    detail_dialog_cancel:'取消',
+    detail_dialog_chart_type01:'弹性系数(a)',
+    detail_dialog_chart_type02:'截距(b)',
+    detail_dialog_chart_type03:'相关系数(r²)',
+    detail_dialog_placeholder01:'请选择所属分类',
+    detail_dialog_placeholder02:'请填写图表名称',
+    detail_dialog_form_rules01:'图表名称不能为空',
+    detail_dialog_form_rules02:'图表分类不能为空',
+    detail_dialog_save_check:'请至少选择一个图表',
+    detail_dialog_save_success:'保存成功'
+
+
 };
   
 /**

+ 2 - 0
src/lang/modules/StatisticAnalysis/StatisticFeatureChart.js

@@ -18,6 +18,7 @@ export const StatisticFeatureChartEn = {
   selecr_indicator_pld: "Please select the type of indicator",
   data_count:'Number of data',
   data_area:'Data interval',
+  add_hint:'The maximum number of dates has been reached'
 };
 
 /* 中文 */
@@ -36,6 +37,7 @@ export const StatisticFeatureChartZh = {
   selecr_indicator_pld: "请选择指标种类",
   data_count:'数据个数',
   data_area:'数据区间',
+  add_hint:'日期数量已达上限'
 };
 
 /**

+ 6 - 0
src/lang/modules/SupplyAnalysis/StockPlant.js

@@ -43,6 +43,9 @@ export const StockPlantEn = {
     placeholder05:'Please enter the factory',
     placeholder06:'Please input device/production line',
     placeholder07:'Please enter the annual production capacity',
+    select_hint:'Please Select Equipment/Production Line',
+    calculate_hint:'Please add Equipment/Production Line first',
+    calculate_success:'Calculate successfully',
 };
   
 /* 中文 */
@@ -86,6 +89,9 @@ export const StockPlantZh = {
     placeholder05:'请输入工厂',
     placeholder06:'请输入装置/产线',
     placeholder07:'请输入年产能',
+    select_hint:'请选择要添加的装置',
+    calculate_hint:'请先添加装置',
+    calculate_success:'计算成功',
 };
   
 /**

+ 8 - 0
src/lang/modules/ToolBox/AIQuestion.js

@@ -13,6 +13,10 @@ export const AIQuestionEn = {
     use_intro_title:'Instructions',
     use_intro01:'Maximum 500 Q&A per account per day.',
     use_intro02:'History Q&A default named with the first question in the dialogue window, can be modified.',
+    support_formats:'Supported Formats',
+    max_file_text:'maximum 50MB.',
+    inter_check:'Please enter a question',
+    add_new_window_hint:'Query Window Opened, Enter Query',
     operation_tips:'Operation Tip',
     operation_des:'Switching models will create a new dialogue window without context continuity. Confirm switch?',
 
@@ -29,6 +33,10 @@ export const AIQuestionZh = {
     use_intro_title:'使用说明',
     use_intro01:'每账号每天最高500次问答。',
     use_intro02:'历史问答默认用该对话窗口内第一个提问命名,可修改。',
+    support_formats:'支持格式',
+    max_file_text:'大小不超过50MB',
+    inter_check:'请输入提问',
+    add_new_window_hint:'您已建立对话窗口,请输入提问',
     operation_tips:'操作提示',
     operation_des:'切换后的模型无法联系上下文进行回答,会新建对话窗口,确认切换吗?',
 };

+ 4 - 0
src/lang/modules/ToolBox/PositionAnalysis.js

@@ -26,6 +26,8 @@ export const PositionAnalysisEn = {
     net_long_position_num:'Number of Net Long Position',
     net_short_position_num:'Number of Net Short Position',
     held:"Held",
+    top_held_long_position:"Top {num} Net Long Positions",
+    proportion:"Proportion",
 };
   
 /* 中文 */
@@ -52,6 +54,8 @@ export const PositionAnalysisZh = {
     net_long_position_num:'净多单量',
     net_short_position_num:'净空单量',
     held:"持",
+    top_held_long_position:"前{num}名持净多单",
+    proportion:"占比",
 };
   
 /**

+ 19 - 0
src/lang/modules/systemManage/BaseConfig.js

@@ -82,6 +82,15 @@ export const BaseConfigEn = {
     resource_del_msg:'Are you sure to delete the selected image?',
 
     tip_msg01:'Save successful, please check the corresponding page/project later',
+
+
+    login_info:'Filing Info',
+    login_info_pld:'Text Split ≥2 Spaces for New Lines on Small Screens',
+    login_title:'Login Page Title',
+    login_title_pld:'Enter Login Page Title',
+    login_name:'Website Name',
+    login_name_pld:'Enter Website Name',
+    login_diagram:'View Diagram',
     pc:"PC",
     mobile:"Mobile",
     website_name:"Website Name",
@@ -176,6 +185,16 @@ export const BaseConfigZh = {
     resource_del_msg:'是否确认删除选中图片?',
 
     tip_msg01:'保存成功,请稍后到对应页面/项目查看',
+
+    login_info:'备案信息',
+    login_info_pld:'文本中输入≥2个空格表示文本分段,小屏时换行显示',
+    login_title:'登录页标题',
+    login_title_pld:'请输入登录页标题',
+    login_name:'网站名称',
+    login_name_pld:'请输入网站名称',
+    login_diagram:'查看示意图',
+
+    
     pc:"PC端",
     mobile:"移动端",
     website_name:"网站名称",

+ 6 - 0
src/lang/modules/systemManage/ChartSet.js

@@ -37,6 +37,9 @@ export const ChartSetEn = {
     unit01:'st Line',
     unit02:'st Bar',
     unit03:'st Series',
+    config_opt05_yes:'Yes',
+    config_opt05_no:'No',
+    set_hint:'The default theme is set successfully',
 };
   
 /* 中文 */
@@ -74,6 +77,9 @@ export const ChartSetZh = {
     unit01:'条',
     unit02:'根',
     unit03:'系列',
+    config_opt05_yes:'是',
+    config_opt05_no:'否',
+    set_hint:'默认主题设置成功',
 };
   
 /**

+ 112 - 0
src/lang/modules/systemManage/DataRefresh.js

@@ -0,0 +1,112 @@
+/**
+ * 系统设置-基本配置
+ */
+
+/**
+ * $t('SystemManage.DataRefreshZh.XXX')
+ */
+
+/* 中文 */
+export const DataRefreshZh = {
+  select_source: "选择数据源",
+  select_source_pld: "请选择数据源",
+  database_label: "经济数据库",
+  date_label: "日期序列",
+  default_time: "默认刷新时间",
+  data_frequency: "数据频度",
+  time_label: "时间",
+  refresh_cell: "刷新单元格数",
+  refresh_all: "全部刷新",
+  refresh_cells_pld: "请输入刷新单元格数",
+  refresh_time_add: "添加刷新时间",
+  refresh_success_msg: "设置默认刷新时间成功",
+  status_success_msg: "设置刷新状态成功",
+  time_success_msg: "设置刷新时间成功",
+
+  terminal_code_select: "终端编码",
+  eta_class_select: "ETA指标库分类",
+  enable_op: "启用刷新",
+  pause_op: "暂停刷新",
+  all_list: "列表全选",
+  set_time: "设置刷新时间",
+  please_select: "请选择",
+  set_status: "设置刷新状态",
+  indicator_name: "指标ID/指标名称",
+  complete_data_source: "请选择完整数据源",
+
+  table_code: "指标编码",
+  table_name: "指标全称",
+  table_date: "最新日期",
+  table_value: "最新值",
+  table_frequency: "频度",
+  table_time: "刷新时间",
+  table_creator: "创建人",
+  table_status: "刷新状态",
+
+  refresh_rate: "刷新频率",
+  trading_day: "每交易日",
+  daily_date: "每自然日",
+  weekly_date: "每周",
+  decadal_date: "每旬",
+  monthly_date: "每月",
+  quarterly_date: "每季",
+  semiannually_date: "每半年",
+  annually_date: "每年",
+  day_n: "第N天",
+  last_day: "最后一天",
+  select_refresh_rate: "请选择刷新频率",
+  select_refresh_time: "请选择刷新时间",
+};
+
+/* 英文 */
+export const DataRefreshEn = {
+  select_source: "Select Data Source",
+  select_source_pld: "Please select a data source",
+  database_label: "Economic Database",
+  date_label: "Date Series",
+  default_time: "Default Refresh Time",
+  data_frequency: "Data Frequency",
+  time_label: "Time",
+  refresh_cell: "Refresh Cell Count",
+  refresh_all: "Refresh All",
+  refresh_cells_pld: "Please Enter the Number of Cells to Refresh",
+  refresh_time_add: "Add Refresh Time",
+  refresh_success_msg: "Default Refresh Time Set Successfully",
+  status_success_msg: " Refresh status set successfully",
+  time_success_msg: " Refresh time set successfully",
+
+  terminal_code_select: "Terminal Code",
+  eta_class_select: "ETA Indicator Library Classification",
+  enable_op: "Enable Refresh",
+  pause_op: "Pause Refresh",
+  all_list: "Select All in List",
+  set_time: "Set Refresh Time",
+  please_select: "Please Select",
+  set_status: "Set Refresh Status",
+  indicator_name: "Indicator ID/Indicator Name",
+  complete_data_source: "Please select a complete data source",
+
+  table_code: "Indicator Code",
+  table_name: "Full Indicator Name",
+  table_date: "Latest Date",
+  table_value: "Latest Value",
+  table_frequency: "Frequency",
+  table_time: "Refresh Time",
+  table_creator: "Creator",
+  table_status: "Refresh Status",
+
+
+  refresh_rate: "Refresh Rate",
+  trading_day: "Every Trading Day",
+  daily_date: "Daily",
+  weekly_date: "Weekly",
+  decadal_date: "Decadal",
+  monthly_date: "Monthly",
+  quarterly_date: "Quarterly",
+  semiannually_date: "Semiannually",
+  annually_date: "Annually",
+  day_n: "Day N",
+  last_day: "Last Day",
+  select_refresh_rate: "Please select a refresh rate",
+  select_refresh_time: "Please select a refresh time",
+};

+ 5 - 5
src/lang/modules/systemManage/DataSourceAccount.js

@@ -15,12 +15,12 @@ export const DataSourceAccountEn = {
     table_col07:'Status',
     table_col08:'Indicator Data Volume',
     table_col09:'Update Time',
-    placeholder01:'请输入终端名称',
-    placeholder02:'请输入文件夹路径',
-    placeholder03:'请输入终端地址',
-    placeholder04:'请输入终端token',
+    placeholder01:'Please enter the terminal name',
+    placeholder02:'Please enter the folder path',
+    placeholder03:'Please enter the terminal address',
+    placeholder04:'Please enter the terminal token',
     placeholder05:'Please select data source type',
-    placeholder06:'请输入指标数据量',
+    placeholder06:'Please enter the amount of indicator data',
 };
   
 /* 中文 */

+ 4 - 0
src/lang/modules/systemManage/OutLinkConfig.js

@@ -14,6 +14,8 @@ export const OutLinkConfigEn = {
     del_success_msg:'Delete menu successfully',
     tips_msg01:'Menu name cannot be empty',
     tips_msg02:'URL cannot be empty',
+    add_successful:'Menu Added Successfully',
+    edit_successful:'Menu Edited Successfully',
 };
   
 /* 中文 */
@@ -28,6 +30,8 @@ export const OutLinkConfigZh = {
     del_success_msg:'删除菜单成功',
     tips_msg01:'菜单名称不能为空',
     tips_msg02:'URL不能为空',
+    add_successful:'添加菜单成功',
+    edit_successful:'编辑菜单成功',
 };
   
 /**

+ 3 - 1
src/lang/modules/systemManage/indexEn.js

@@ -8,6 +8,7 @@ import {OutLinkConfigEn} from './OutLinkConfig'
 import {DataSourceAccountEn} from './DataSourceAccount'
 import {ChartSetEn} from './ChartSet'
 import {ReportApproveEn} from './ReportApprove'
+import {DataRefreshEn} from './DataRefresh'
 
 export default {
   // 系统设置
@@ -21,7 +22,8 @@ export default {
     OutLinkConfig:OutLinkConfigEn,
     DataSourceAccount:DataSourceAccountEn,
     ChartSet:ChartSetEn,
-    ReportApprove:ReportApproveEn
+    ReportApprove:ReportApproveEn,
+    DataRefresh:DataRefreshEn
   },
 };
 

+ 3 - 1
src/lang/modules/systemManage/indexZh.js

@@ -8,6 +8,7 @@ import { OutLinkConfigZh } from "./OutLinkConfig";
 import{DataSourceAccountZh} from './DataSourceAccount'
 import { ChartSetZh } from "./ChartSet";
 import { ReportApproveZh } from "./ReportApprove";
+import {DataRefreshZh} from './DataRefresh'
 
 export default {
   // 系统设置
@@ -21,6 +22,7 @@ export default {
     OutLinkConfig:OutLinkConfigZh,
     DataSourceAccount:DataSourceAccountZh,
     ChartSet:ChartSetZh,
-    ReportApprove:ReportApproveZh
+    ReportApprove:ReportApproveZh,
+    DataRefresh:DataRefreshZh,
   },
 };

+ 12 - 3
src/main.js

@@ -19,7 +19,6 @@ import langEN from 'element-ui/lib/locale/lang/en'
 import langZH from 'element-ui/lib/locale/lang/zh-CN'
 import locale from 'element-ui/lib/locale'
 
-Vue.mixin(mixins);
 Vue.use(VueI18n);
 const i18n = new VueI18n({
   locale: localStorage.getItem('i18n')||'zh', // 默认语言
@@ -41,6 +40,7 @@ Vue.use(VueRouter);
 Vue.use(Vuex);
 
 Vue.prototype.$i18nt = i18n;
+Vue.mixin(mixins);
 
 // 设置element语言
 // locale.use(localStorage.getItem('i18n')!='zh' ?  langEN:langZH )
@@ -208,10 +208,14 @@ router.beforeEach(async(to, from, next) => {
   /* 沙盘详情name添加 */
   if (to.path === "/sandflow") {
     to.matched[1].name = to.query.SandboxId? "编辑逻辑": "添加逻辑";
+    //支持英文
+    to.matched[1].meta.name_en = to.query.SandboxId? "Edit Logic": "Add Logic";
   }
 
   if (to.path === "/analyseVariety") {
     to.matched[1].name = to.query.type === "look" ? "查看品种" : "分析品种";
+    //支持英文
+    to.matched[1].meta.name_en = to.query.type === "look" ? "View Variety" : "Analyse Variety";
   }
 
   if (to.path) {
@@ -231,10 +235,15 @@ router.beforeEach(async(to, from, next) => {
 
 
 router.afterEach((to, from, next) => {
-  // 改变页面标题
+  /* // 改变页面标题
   document.title = to.matched[to.matched.length - 1].name
   ? `${to.matched[to.matched.length - 1].name}`
-  : setting.name;
+  : setting.name; */
+  //改变页面标题-中英文
+  const titleZh = to.matched[to.matched.length - 1].name||''
+  const titleEn = to.matched[to.matched.length - 1].meta.name_en||''
+  const title = i18n.locale==='zh'?titleZh:titleEn
+  document.title = title||setting.name
 
   window.scrollTo(0, 0);
   if(stores.state.hasTrialUserPermisson){

+ 36 - 1
src/mixins/index.js

@@ -175,8 +175,43 @@ const mixins = {
 				Message.warning('下载失败')
 				faileCb&&faileCb()
 			})
+		},
+
+		//频度,单位 统一翻译
+		//频度label显示,支持中英文
+		getFrequencyTrans(frequency){
+			const map = {
+				'':this.$i18nt.t('Edb.FreAll.total'),//全部
+				'日度':this.$i18nt.t('Edb.FreAll.day'),
+				'周度':this.$i18nt.t('Edb.FreAll.week'),
+				'旬度':this.$i18nt.t('Edb.FreAll.dekad'),
+				'月度':this.$i18nt.t('Edb.FreAll.month'),
+				'季度':this.$i18nt.t('Edb.FreAll.quarter'),
+				'半年度':this.$i18nt.t('Edb.FreAll.half_year'),
+				'年度':this.$i18nt.t('Edb.FreAll.year'),
+			}
+			return map[frequency]||''
+		},
+		//单位label显示,支持中英文
+		getUnitTrans(unit){
+			const map = {
+				'无':this.$i18nt.t('Edb.UnitAll.u_null'),
+				'万吨':this.$i18nt.t('Edb.UnitAll.wanton'),
+				'亿元':this.$i18nt.t('Edb.UnitAll.u_bill'),
+				'元':this.$i18nt.t('Edb.UnitAll.u_yuan'),
+				'元/吨':this.$i18nt.t('Edb.UnitAll.yuan_ton'),
+				'元/湿吨':this.$i18nt.t('Edb.UnitAll.yuan_wetton'),
+				'千克':this.$i18nt.t('Edb.UnitAll.u_kg'),
+				'吨':this.$i18nt.t('Edb.UnitAll.u_ton'),
+				'短吨':this.$i18nt.t('Edb.UnitAll.short_ton'),
+				'美元/吨':this.$i18nt.t('Edb.UnitAll.doll_ton'),
+				'万平方千米':this.$i18nt.t('Edb.UnitAll.wan_skilo'),
+				'美元/桶':this.$i18nt.t('Edb.UnitAll.doll_bar'),
+				'美分/加仑':this.$i18nt.t('Edb.UnitAll.cent_gal'),
+				'手':this.$i18nt.t('Edb.UnitAll.u_hand'),
+			}
+			return map[unit]||unit //若是自行输入的单位,直接返回
 		}
-		
 	}
 }
 

+ 14 - 0
src/mixins/reportApproveConfig.js

@@ -58,6 +58,20 @@ export default{
                 this.hasApproveFlow = res.Data||false
             })
         },
+        // 频度翻译
+        getFrequencyTrans(frequency){
+            const map = {
+                '年度':this.$t('ReportManage.smart_annually'),
+                '半年度':this.$t('ReportManage.smart_semi_annually'),
+                '季度':this.$t('ReportManage.smart_quarterly'),
+                '月度':this.$t('ReportManage.smart_monthly'),
+                '双周度':this.$t('ReportManage.smart_bi_weekly'),
+                '周度':this.$t('ReportManage.smart_weekly'),
+                '日度':this.$t('ReportManage.smart_daily'),
+                '不定时':this.$t('ReportManage.smart_irregularly'),
+            }
+            return map[frequency]||''
+        },
     },
     mounted(){
         this.getBaseConfig()

+ 9 - 1
src/routes/modules/approveRoutes.js

@@ -6,19 +6,27 @@ export default [
         name:'审批管理',
         hidden:false,
         icon_path: require('@/assets/img/home/data_ic.png'),
+        meta:{
+            name_en:'ApprMgmt',
+        },
         children:[{
             path:'approveList',
             name:'审批列表',
             component:()=>import('@/views/approve_manage/approveList.vue'),
-            hidden:false
+            hidden:false,
+            meta:{
+                name_en:'Approval List'
+            }
         },{
             path:'approveDetail',
             name:'审批详情',
             component:()=>import('@/views/approve_manage/approveDetail.vue'),
             hidden:false,
             meta: {
+                name_en:'Approval Detail',
                 pathFrom: "approveList",
                 pathName: "审批列表",
+                pathName_en:"Approval List",
                 keepAlive: false,
               },
         }

+ 147 - 17
src/routes/modules/chartRoutes.js

@@ -8,23 +8,35 @@ export default [
 		name: '图库',
 		hidden: false,
 		icon_path: require('@/assets/img/home/data_ic.png'),
+		meta:{
+			name_en:'Charts'
+		},
 		children: [{
 				path: 'chartsetting',
 				component: () => import('@/views/dataEntry_manage/chartSetting.vue'),
 				name: '图库',
 				hidden: false,
+				meta:{
+					name_en:'Charts'
+				},
 			},
 			{
 				path: 'addchart',
 				component: () => import('@/views/dataEntry_manage/addChart.vue'),
 				name: '添加图表',
 				hidden: true,
+				meta:{
+					name_en:'Add Chart'
+				},
 			},
 			{
 				path: 'editchart',
 				component: () => import('@/views/dataEntry_manage/editChart.vue'),
 				name: '编辑图表',
 				hidden: true,
+				meta:{
+					name_en:'Edit Chart'
+				},
 			},
 		]
 	},
@@ -36,24 +48,36 @@ export default [
 		name: '指标库',
 		hidden: false,
 		icon_path: require('@/assets/img/home/data_ic.png'),
+		meta:{
+			name_en:'Indics'
+		},
 		children: [
 			{
 				path: 'database',
 				component: () => import('@/views/dataEntry_manage/databaseList.vue'),
 				name: '指标库',
 				hidden: false,
+				meta:{
+					name_en:'Indics'
+				},
 			},
 			{
 				path: 'codecount',
 				component: () => import('@/views/dataEntry_manage/codecount/index.vue'),
 				name: '代码运算',
 				hidden: true,
+				meta:{
+					name_en:'Code Count'
+				},
 			},
 			{
 				path: 'adjustdata',
 				component: () => import('@/views/dataEntry_manage/adjustdata/adjustData.vue'),
 				name: '数据调整',
 				hidden: true,
+				meta:{
+					name_en:'Adjust Data'
+				},
 			},
 		]
 	},
@@ -65,30 +89,45 @@ export default [
 		name: '我的图库',
 		hidden: false,
 		icon_path: require('@/assets/img/home/data_ic.png'),
+		meta:{
+			name_en:'My Investment Research'
+		},
 		children: [
 			{
 				path: 'mychart',
 				name: '我的图库',
 				component: () => import('@/views/mychart_manage/index.vue'),
 				hidden: false,
+				meta:{
+					name_en:'My Gallery'
+				},
 			},
 			{
 				path: 'chartframe',
 				name: '图库框架',
 				component: () => import('@/views/chartFrame_manage/index.vue'),
 				hidden: false,
+				meta:{
+					name_en:'Gallery Frame'
+				},
 			},
 			{
 				path: 'addframe',
 				name: '添加框架',
 				component: () => import('@/views/chartFrame_manage/frameEditor.vue'),
 				hidden: false,
+				meta:{
+					name_en:'Add Gallery Frame'
+				},
 			},
 			{
 				path: 'editframe',
 				name: '编辑框架',
 				component: () => import('@/views/chartFrame_manage/frameEditor.vue'),
 				hidden: false,
+				meta:{
+					name_en:'Edit Gallery Frame'
+				},
 			},
 		]
 	},
@@ -99,29 +138,43 @@ export default [
 		component: home,
 		name: '表格',
 		hidden: false,
+		meta:{
+			name_en:'Tables'
+		},
 		children:[
 			{
 				path:"sheetList",
 				name:"共享表格",
-				component:()=>import('@/views/datasheet_manage/sheetList.vue')
+				component:()=>import('@/views/datasheet_manage/sheetList.vue'),
+				meta:{
+					name_en:'Shared Table'
+				},
 			},
 			{
 				path:"sheetTimeList",
 				name:"时间序列表格",
-				component:()=>import('@/views/datasheet_manage/sheetList.vue')
+				component:()=>import('@/views/datasheet_manage/sheetList.vue'),
+				meta:{
+					name_en:'Timeline table'
+				},
 			},
 			{
 				path:"sheetMixedList",
 				name:"混合表格",
-				component:()=>import('@/views/datasheet_manage/sheetList.vue')
+				component:()=>import('@/views/datasheet_manage/sheetList.vue'),
+				meta:{
+					name_en:'Mixed Table'
+				},
 			},
 			{
 				path:"addSheet",
 				name:"添加表格",
 				component:()=>import('@/views/datasheet_manage/addSheet.vue'),
 				meta: { 
+					name_en:'Add Shared Table',
 					pathFrom: "sheetList",
 					pathName: "共享表格",
+					pathName_en:"Shared Table"
 				}
 			},
 			{
@@ -129,8 +182,10 @@ export default [
 				name:"添加数据表格",
 				component:()=>import('@/views/datasheet_manage/customSheetEdit.vue'),
 				meta: { 
+					name_en:'Add Timeline Table',
 					pathFrom: "sheetTimeList",
 					pathName: "时间序列表格",
+					pathName_en:'Timeline table'
 				}
 			},
 			{
@@ -138,24 +193,35 @@ export default [
 				name:"添加混合表格",
 				component:()=>import('@/views/datasheet_manage/mixedSheetEdit.vue'),
 				meta: { 
+					name_en:"Add Mixed Table",
 					pathFrom: "sheetMixedList",
 					pathName: "混合表格",
+					pathName_en:"Mixed Table",
 				}
 			},
 			{
 				path:"sheetAnalysisList",
 				name:"自定义分析",
-				component:()=>import('@/views/datasheet_manage/customAnalysis/list.vue')
+				component:()=>import('@/views/datasheet_manage/customAnalysis/list.vue'),
+				meta:{
+					name_en:"Custom analysis"
+				}
 			},
 			{
 				path:"addAnalysisSheet",
 				name:"上传文件",
-				component:()=>import('@/views/datasheet_manage/customAnalysis/addAnalysisSheet.vue')
+				component:()=>import('@/views/datasheet_manage/customAnalysis/addAnalysisSheet.vue'),
+				meta:{
+					name_en:"Upload Sheet"
+				}
 			},
 			{
 				path:"createTaregtBySheet",
 				name:"生成指标",
-				component:()=>import('@/views/datasheet_manage/customAnalysis/addAnalysisSheet.vue')
+				component:()=>import('@/views/datasheet_manage/customAnalysis/addAnalysisSheet.vue'),
+				meta:{
+					name_en:"Generated pointer"
+				}
 			},
 		]
 	},
@@ -166,6 +232,9 @@ export default [
 		component: home,
 		name: '逻辑图',
 		hidden: false,
+		meta:{
+			name_en:"Logic Diagram"
+		},
 		children: [
 			// {
 			// 	path: "sandlist", // 旧版本
@@ -179,6 +248,9 @@ export default [
 				name: '逻辑图',
 				component: () => import('@/views/sandbox_manage/index_new_version.vue'),
 				hidden: false,
+				meta:{
+					name_en:"ETA Logic"
+				},
 			},
 			// {
 			// 	path: "sandflow", // 旧版本
@@ -190,6 +262,9 @@ export default [
 				name: '添加逻辑',
 				component: () => import('@/views/sandbox_manage/sandFlowNew/index.vue'),
 				hidden: true,
+				meta:{
+					name_en:"Add Logic"
+				},
 			}
 		]
 	},
@@ -200,21 +275,33 @@ export default [
 		component: home,
 		name: '预测指标',
 		hidden:  false,
+		meta:{
+			name_en:"Pred Inds"
+		},
 		children: [
 			{
 				path: 'predictEdb',
 				name: '预测指标',
-				component:()=>import('@/views/predictEdb_manage/predictEdb.vue')
+				component:()=>import('@/views/predictEdb_manage/predictEdb.vue'),
+				meta:{
+					name_en:"Pred Inds"
+				},
 			},
 			{
 				path: 'addpredictEdb',
 				name: '添加指标',
 				component:()=>import('@/views/predictEdb_manage/addPredicEdb.vue'),
+				meta:{
+					name_en:"Add Pred Ind"
+				},
 			},
 			{
 				path: 'editpredictEdb',
 				name: '编辑指标',
 				component:()=>import('@/views/predictEdb_manage/addPredicEdb.vue'),
+				meta:{
+					name_en:"Edit Pred Ind"
+				},
 			}
 		]
 	},
@@ -225,61 +312,84 @@ export default [
 		component: home,
 		name: '统计分析',
 		hidden:  false,
+		meta:{
+			name_en:"Stat Analysis"
+		},
 		children: [
 			{
 				path: 'chartrelevance',
 				name: '相关性分析',
-				component:()=>import('@/views/chartRelevance_manage/relevance/list.vue')
+				component:()=>import('@/views/chartRelevance_manage/relevance/list.vue'),
+				meta:{
+					name_en:"Correlation analysis"
+				},
 			},
 			{
 				path: 'fittingEquationList',
 				name: '拟合方程曲线',
-				component:()=>import('@/views/chartRelevance_manage/fittingEquation/fittingEquationList.vue')
+				component:()=>import('@/views/chartRelevance_manage/fittingEquation/fittingEquationList.vue'),
+				meta:{
+					name_en:"Fit Eq Curve"
+				},
 			},
 			{
 				path: 'fittingEquationChartEditor',
 				name: '添加图表',
 				component: () => import('@/views/chartRelevance_manage/fittingEquation/fittingEquationChartEditor.vue'),
 				meta: { 
+					name_en:"add Fit Eq Curve",
 					pathFrom: "fittingEquationList",
           			pathName: "拟合方程曲线",
+					pathName_en:"Fit Eq Curve"
 				}
 			},
 			{
 				path: 'relevancechartEditor',
 				name: '编辑图表',
 				component:()=>import('@/views/chartRelevance_manage/relevance/relevanceChartEditor.vue'),
-				meta: { 
+				meta: {
+					name_en:"edit Correlation analysis",
 					pathFrom: "chartrelevance",
           			pathName: "相关性图表",
+					pathName_en:"Correlation analysis"
 				}
 			},
 			{
 				path: 'statisticFeatureList',
 				name: '统计特征',
-				component: () => import('@/views/chartRelevance_manage/statistic/statisticFeatureList.vue')
+				component: () => import('@/views/chartRelevance_manage/statistic/statisticFeatureList.vue'),
+				meta:{
+					name_en:"Stat Charact'ristics"
+				},
 			},
 			{
 				path: 'statisticFeatureChartEditor',
 				name: '编辑图表',
 				component:()=>import('@/views/chartRelevance_manage/statistic/statisticFeatureChartEditor.vue'),
 				meta: { 
+					name_en:"Edit Stat Charact'ristics",
 					pathFrom: "statisticFeatureList",
           			pathName: "统计特征",
+					pathName_en:"Stat Charact'ristics"
 				}
 			},
 			{
 				path: 'crossVarietyChartList',
 				name: '跨品种分析',
-				component: () => import('@/views/chartRelevance_manage/crossVarietyAnalysis/list.vue')
+				component: () => import('@/views/chartRelevance_manage/crossVarietyAnalysis/list.vue'),
+				meta:{
+					name_en:"Cross-Variety Analy"
+				},
 			},
 			{
 				path: 'crossVarietyChartEditor',
 				name: '编辑图表',
 				component:()=>import('@/views/chartRelevance_manage/crossVarietyAnalysis/chartEditor.vue'),
 				meta: { 
+					name_en:"edit Cross-Variety Analy",
 					pathFrom: "crossVarietyChartList",
-          pathName: "跨品种分析",
+					pathName: "跨品种分析",
+					pathName_en:"Cross-Variety Analy"
 				}
 			},
 		]
@@ -311,6 +421,9 @@ export default [
 		component:home,
 		name:'工具箱',
 		hidden:false,
+		meta:{
+			name_en:'Toolbox'
+		},
 		children:[
 			/* {
 				path: 'positionAnalysisList',
@@ -320,35 +433,52 @@ export default [
 			{//不要列表页了,但是改path需要动ETA菜单很麻烦,先这样
 				path: 'positionAnalysisList',
 				name: '持仓详情',
-				component:()=>import('@/views/positionAnalysis_manage/detail.vue')
+				component:()=>import('@/views/positionAnalysis_manage/detail.vue'),
+				meta:{
+					name_en:'Position Analysis'
+				},
 			},
 			{
 				path: 'positionAnalysisDetail',
 				name: '持仓详情',
 				component:()=>import('@/views/positionAnalysis_manage/detail.vue'),
+				meta:{
+					name_en:'Position Analysis'
+				},
 			},
 			{
 				path:'federalReserveWatch',
 				name:'联储观察',
-				component:()=>import('@/views/toolBox_manage/FederalReserveWatch.vue')
+				component:()=>import('@/views/toolBox_manage/FederalReserveWatch.vue'),
+				meta:{
+					name_en:'FedWatch'
+				},
 			},{
 				path: "commordityChartBase",
 				name: "商品价格曲线",
-				component: () => import('@/views/futures_manage/commodityChartBase.vue')
+				component: () => import('@/views/futures_manage/commodityChartBase.vue'),
+				meta:{
+					name_en:'Comm Price Curve'
+				},
 			},
 			{
 				path: "addCommodityChart",
 				name: "编辑图表",
 				component: () => import('@/views/futures_manage/chartEditor.vue'),
 				meta: { 
+					name_en:'Edit Comm Price Curve',
 					pathFrom: "commordityChartBase",
 					pathName: "商品价格曲线",
+					pathName_en:'Comm Price Curve'
 				}
 			},
 			{
 				path:"forexCalendar",
 				name:"事件日历",
-				component:()=>import('@/views/toolBox_manage/ForexCalendar.vue')
+				component:()=>import('@/views/toolBox_manage/ForexCalendar.vue'),
+				meta:{
+					name_en:'ForexCalendar'
+				},
 			},
 		]
 	}

+ 63 - 2
src/routes/modules/dataRoutes.js

@@ -9,6 +9,9 @@ export default [
     name: "数据源",
     hidden: false,
     icon_path: require("@/assets/img/home/data_ic.png"),
+    meta:{
+        name_en:'Data Sources'
+    },
     children: [
       {
         path: "targetList",
@@ -16,6 +19,7 @@ export default [
         name: "手工指标列表",
         hidden: false,
         meta: {
+          name_en:'Manual Inds List',
           keepAlive: false,
         },
       },
@@ -26,6 +30,7 @@ export default [
         name: "隆众原始数据库",
         hidden: false,
         meta: {
+          name_en:'Oilchem Orig DB',
           keepAlive: false,
         },
       },
@@ -36,6 +41,7 @@ export default [
         name: "钢联原始数据库",
         hidden: false,
         meta: {
+          name_en:'Mysteel Orig DB',
           keepAlive: false,
         },
       },
@@ -45,6 +51,7 @@ export default [
         name: "手工数据录入",
         hidden: false,
         meta: {
+          name_en:'Manual data entry',
           keepAlive: false,
         },
       },
@@ -53,8 +60,10 @@ export default [
         component: () => import("@/views/dataEntry_manage/onlineExcelCopy.vue"),
         name: "复制excel数据",
         meta: {
+          name_en:'Online Excel Copy',
           pathFrom: "dataList",
           pathName: "手工数据录入",
+          pathName_en:'Manual data entry',
         },
         hidden: true,
       },
@@ -66,6 +75,7 @@ export default [
         hidden: false,
         meta: {
           keepAlive: false,
+          name_en:'SMM Orig Database',
         },
       },
       {
@@ -73,18 +83,27 @@ export default [
         component: () => import("@/views/dataEntry_manage/gasbase/index.vue"),
         name: "天然气",
         hidden: false,
+        meta:{
+            name_en:'Natural Gas',
+        }
       },
       {
         path: "gasHistory",
         component: () => import("@/views/dataEntry_manage/gasbase/history.vue"),
         name: "天然气历史数据",
         hidden: true,
+        meta:{
+            name_en:'Natural Gas History',
+        }
       },
       {
         path: "ICPIconsumption",
         component: () => import("@/views/dataEntry_manage/thirdBase/icpiConsumption.vue"),
         name: "ICPI消费价格指数",
         hidden: false,
+        meta:{
+            name_en:'ICPI Price Index',
+        }
       },
       {
         path: "zhengzhoushop",
@@ -94,6 +113,7 @@ export default [
         hidden: false,
         meta: {
           keepAlive: false,
+          name_en:"Zhengzhou ComEx",
         },
       },
       {
@@ -104,6 +124,7 @@ export default [
         hidden: false,
         meta: {
           keepAlive: false,
+          name_en:"Dalian ComEx",
         },
       },
       {
@@ -114,6 +135,7 @@ export default [
         hidden: false,
         meta: {
           keepAlive: false,
+          name_en:"SH Intl Energy Ex",
         },
       },
       {
@@ -126,6 +148,7 @@ export default [
         hidden: false,
         meta: {
           keepAlive: false,
+          name_en:"China Fin Futures Ex",
         },
       },
       {
@@ -136,6 +159,7 @@ export default [
         hidden: false,
         meta: {
           keepAlive: false,
+          name_en:"SH Energy Ex",
         },
       },
       {
@@ -143,13 +167,19 @@ export default [
         component: () =>
           import("@/views/dataEntry_manage/thirdBase/gqExchangeData.vue"),
         name: "广期所",
-        hidden: false
+        hidden: false,
+        meta:{
+            name_en:"GZ Futures Ex"
+        }
       },
       {
         path: "chineseCoal",
         component: () => import("@/views/dataEntry_manage/coal/index.vue"),
         name: "中国煤炭市场网",
         hidden: false,
+        meta:{
+            name_en:"China Coal Market"
+        }
       },
       {
         path: "googleTravel",
@@ -157,6 +187,9 @@ export default [
           import("@/views/dataEntry_manage/googleTravel/index.vue"),
         name: "谷歌出行指数",
         hidden: false,
+        meta:{
+            name_en:"Google Travel Index"
+        }
       },
       {
         path: "steelChemical",
@@ -164,6 +197,9 @@ export default [
           import("@/views/dataEntry_manage/thirdBase/steelChemicalbase.vue"),
         name: "钢联化工数据库",
         hidden: false,
+        meta:{
+            name_en:"Mysteel Data"
+        }
       },
       {
         path: "steobase",
@@ -171,6 +207,9 @@ export default [
           import("@/views/dataEntry_manage/thirdBase/elaSteoBase.vue"),
         name: "EIA  STEO报告",
         hidden: false,
+        meta:{
+            name_en:"EIA STEO Report"
+        }
       },
       {
         path: "UNdata",
@@ -178,6 +217,9 @@ export default [
           import("@/views/dataEntry_manage/thirdBase/UNdata.vue"),
         name: "UN",
         hidden: false,
+        meta:{
+            name_en:"UN"
+        }
       },
       {
         path: "SCIdata",
@@ -185,6 +227,9 @@ export default [
           import("@/views/dataEntry_manage/thirdBase/SCITargetbase.vue"),
         name: "卓创数据(红桃3)",
         hidden: false,
+        meta:{
+            name_en:"SCI"
+        }
       },
       {
         path: "BAIINFOdata",
@@ -192,6 +237,9 @@ export default [
           import("@/views/dataEntry_manage/thirdBase/BAIINFOTargetbase.vue"),
         name: "百川盈孚",
         hidden: false,
+        meta:{
+            name_en:"BAIINFO"
+        }
       },
       {
         path: "NationalData",
@@ -199,11 +247,17 @@ export default [
           import("@/views/dataEntry_manage/thirdBase/NationalDataBase.vue"),
         name: "国家统计局",
         hidden: false,
+        meta:{
+            name_en:"Nat Bureau of Stats"
+        }
       },
       {
         path: "futuresbase",
         name: "期货数据库",
         component: () => import("@/views/futures_manage/futuresBase.vue"),
+        meta:{
+            name_en:"Futures Database"
+        }
       },
       {
         path: "databankBase",
@@ -212,6 +266,7 @@ export default [
         hidden: false,
         meta: {
           keepAlive: false,
+          name_en:"Chinadatapay"
         },
       },
       {
@@ -221,6 +276,7 @@ export default [
         hidden: false,
         meta: {
           keepAlive: false,
+          name_en:"Yongyizixun"
         },
       },
       {
@@ -229,6 +285,9 @@ export default [
           import("@/views/dataEntry_manage/thirdBase/ysTargetBase.vue"),
         name: "有色原始数据库",
         hidden: false,
+        meta: {
+            name_en:"API Orig Database"
+          },
       },
       {
         path: "fwmtData",
@@ -237,13 +296,15 @@ export default [
         hidden: false,
         meta: {
           keepAlive: false,
+          name_en:"SXcoal"
         },
       },
       {
         path: "coalWord",
         component: () => import("@/views/dataEntry_manage/thirdBase/coalWord.vue"),
         name: "煤炭江湖",
-        hidden: false
+        hidden: false,
+        name_en:"Meitanjianghu"
       },
       {
         path: 'selfData',

+ 6 - 0
src/routes/modules/dataSource.js

@@ -8,11 +8,17 @@ export default [
         name: "数据报表管理",
         hidden: false,
         icon_path: require("@/assets/img/home/data_ic.png"),
+        meta:{
+            name_en:"DataRptMg"
+        },
         children: [
             {
                 path: "dataSourceGL",
                 name: "数据源管理",
                 component: () => import("@/views/dataSource_manage/dataSourceListGL.vue"),
+                meta:{
+                    name_en:"Mysteel Chem Stats"
+                },
             },
         ]
     }

+ 92 - 1
src/routes/modules/oldRoutes.js

@@ -79,6 +79,7 @@ export default [
         hidden: true,
         meta: {
           keepAlive: false,
+          name_en:"Reset PassWord"
         },
       },
       {
@@ -88,6 +89,7 @@ export default [
         hidden: true,
         meta: {
           keepAlive: false,
+          name_en:"Indicator Traceability"
         },
       },
     ],
@@ -100,6 +102,9 @@ export default [
     name: "研报管理",
     icon_path: require("@/assets/img/home/report_ic.png"),
     hidden: false,
+    meta:{
+        name_en:"RepMgmt"
+    },
     children: [
       {
         path: "reportlist",
@@ -108,6 +113,7 @@ export default [
         hidden: false,
         meta: {
           keepAlive: false,
+          name_en:"Report list"
         },
       },
       {
@@ -117,6 +123,7 @@ export default [
         hidden: false,
         meta: {
           keepAlive: false,
+          name_en:"Category list"
         },
       },
       {
@@ -125,8 +132,10 @@ export default [
         name: "章节设置",
         hidden: true,
         meta: {
+          name_en:"Chapter Setting",
           pathFrom: "classifylist",
           pathName: "分类列表",
+          pathName_en:"Category list"
         },
       },
       {
@@ -136,6 +145,7 @@ export default [
         hidden: false,
         meta: {
           keepAlive: false,
+          name_en:"EveryDay",
         },
       },
       {
@@ -147,6 +157,8 @@ export default [
           pathFrom: "reportlist",
           pathName: "研报列表",
           keepAlive: false,
+          name_en:"Add Report",
+          pathName_en:"Report list"
         },
       },
       {
@@ -158,6 +170,8 @@ export default [
           pathFrom: "reportlist",
           pathName: "研报列表",
           keepAlive: false,
+          name_en:"Edit Report",
+          pathName_en:"Report list"
         },
       },
       {
@@ -169,6 +183,8 @@ export default [
           pathFrom: "reportlist",
           pathName: "研报列表",
           keepAlive: false,
+          name_en:"Add/Edit Day or Week Report",
+          pathName_en:"Report list"
         },
       },
       {
@@ -180,6 +196,8 @@ export default [
           keepAlive: false,
           pathFrom: "dayorweek",
           pathName: "晨报/周报",
+          name_en:"Day or Week Report",
+          pathName_en:"Add/Edit Day or Week Report"
         },
       },
       // {
@@ -203,6 +221,9 @@ export default [
           import("@/views/report_manage/reportEn/reportlist.vue"),
         name: "英文研报",
         hidden: false,
+        meta:{
+            name_en:"English Report"
+        }
       },
       {
         path: "reportEnEditor",
@@ -210,12 +231,18 @@ export default [
           import("@/views/report_manage/reportEn/reportEditor.vue"),
         name: "添加英文研报",
         hidden: false,
+        meta:{
+            name_en:"Add English Report"
+        }
       },
       {
         path: "emaiList",
         component: () => import("@/views/report_manage/emailList.vue"),
         name: "邮箱管理",
         hidden: false,
+        meta:{
+            name_en:"Email List"
+        }
       },
       // {
       // 	path: 'classifyEnlist',
@@ -228,6 +255,9 @@ export default [
         component: () => import("@/views/report_manage/reportAuthor.vue"),
         name: "研报作者管理",
         hidden: false,
+        meta:{
+            name_en:"Author Mgmt"
+        }
       },
       {
         path: "sendlog",
@@ -235,16 +265,25 @@ export default [
           import("@/views/report_manage/reportEn/sendMsgLog.vue"),
         name: "群发日志",
         hidden: true,
+        meta:{
+            name_en:"Send Log"
+        }
       },
       {
         path: "strategyReport",
         name: "策略报告",
         component: () => import("@/views/report_manage/strategyReport.vue"),
+        meta:{
+            name_en:"Strategy Report"
+        }
       },
       {
         path: "cloudDisk",
         name: "云盘",
         component: () => import("@/views/report_manage/cloudDisk.vue"),
+        meta:{
+            name_en:"Cloud"
+        }
       },
       // {
       //   path: "pdfList",
@@ -255,11 +294,17 @@ export default [
         path: "reportvariety",
         name: "品种管理",
         component: () => import("@/views/report_manage/reportVarietyV2.vue"),
+        meta:{
+            name_en:"Variety Mgmt"
+        }
       },
       {
         path: "smartReportList",
         name: "智能研报",
         component: () => import("@/views/smartReport/reportList.vue"),
+        meta:{
+            name_en:"Smart Report"
+        }
       },
     ],
   },
@@ -271,6 +316,9 @@ export default [
     name: "系统设置",
     hidden: false,
     icon_path: require("@/assets/img/home/set_ico.png"),
+    meta:{
+        name_en:"Sys Settings"
+    },
     children: [
       {
         path: "Sysdepart",
@@ -279,6 +327,7 @@ export default [
         hidden: false,
         meta: {
           keepAlive: false,
+          name_en:"Dept Management"
         },
       },
       {
@@ -288,6 +337,7 @@ export default [
         hidden: false,
         meta: {
           keepAlive: false,
+          name_en:"Role Management"
         },
       },
       {
@@ -300,6 +350,8 @@ export default [
           pathFrom: "Sysrole",
           pathName: "角色管理",
           keepAlive: false,
+          name_en:"Set Role Auth",
+          pathName_en:"Role Management"
         },
       },
       {
@@ -307,48 +359,72 @@ export default [
         component: () => import("@/views/system_manage/dataAuthManage.vue"),
         name: "手工数据权限",
         hidden: false,
+        meta:{
+            name_en:"Manual Data Perms"
+        },
       },
       {
         path: "operateAuth",
         component: () => import("@/views/system_manage/dataOperaAuth.vue"),
         name: "数据操作权限",
         hidden: false,
+        meta:{
+            name_en:"Data Op Perms"
+        },
       },
       {
         path: "enAuthManage",
         component: () => import("@/views/system_manage/enAuthManage.vue"),
         name: "英文权限配置",
         hidden: false,
+        meta:{
+            name_en:"Eng Perm Setting"
+        },
       },
       {
         path: "etaBaseConfig",
         component: () => import("@/views/system_manage/etaBaseConfig.vue"),
         name: "基本配置",
         hidden: true,
+        meta:{
+            name_en:"Basic Setting"
+        },
       },
       {
         path: "outlinkListConfig",
         component: () => import("@/views/system_manage/outlinkListConfig.vue"),
         name: "外部链接配置",
         hidden: true,
+        meta:{
+            name_en:"Ext Link Config"
+        },
       },
       {
         path: "approveSetting",
         component: () => import("@/views/approve_manage/approveSetting.vue"),
         name: "审批流配置",
         hidden: true,
+        meta:{
+            name_en:"Approv WF Config"
+        },
       },
       {
         path: "approveEdit",
         component: () => import("@/views/approve_manage/approveEdit.vue"),
         name: "编辑审批流",
         hidden:true,
+        meta:{
+            name_en:"Edit Approv WF"
+        },
       },
       {
         path: "chartThemeIndex",
         component: () => import("@/views/system_manage/chartTheme/index.vue"),
         name: "图表配置",
         hidden:false,
+        meta:{
+            name_en:"Chart Configuration"
+        },
       },
       {
         path: "chartThemeSet",
@@ -357,7 +433,10 @@ export default [
         hidden:true,
         meta: {
           pathFrom: "chartThemeIndex",
-          pathName: "图表配置"
+          pathName: "图表配置",
+          pathName_en:'Chart Configuration',
+          name_en:"Chart Theme Configuration",
+
         },
       },  
       {
@@ -365,12 +444,18 @@ export default [
         component: () => import("@/views/dataSource_manage/accountList.vue"),
         name: "数据源终端管理",
         hidden: true,
+        meta:{
+            name_en:"Data Src Term Mgmt"
+        },
       },
       {
         path: "dataRefreshSetting",
         component: () => import("@/views/system_manage/dataRefreshSetting.vue"),
         name: "数据刷新设置",
         hidden: true,
+        meta:{
+            name_en:"Data Refresh Settg"
+        },
       },
     ],
   },
@@ -381,12 +466,18 @@ export default [
     name: "外部链接",
     hidden: false,
     icon_path: require("@/assets/img/home/set_ico.png"),
+    meta:{
+        name_en:"External Links"
+    },
     children: [
       {
         path: "outlinkList",
         component: () => import("@/views/system_manage/outlinkList.vue"),
         name: "外部链接",
         hidden: true,
+        meta:{
+            name_en:"External Links"
+        },
       },
     ]
   }

+ 26 - 4
src/routes/modules/pptRoutes.js

@@ -13,11 +13,17 @@ export default [
 		path: '/pptpresent',
 		component: () => import('@/views/ppt_manage/newVersion/pptPresent.vue'),
 		name: 'ppt演示',
+		meta:{
+			name_en:'ppt demo'
+		},
 		hidden: true,
 	},{
 		path: '/pptpublish',
 		component: () => import('@/views/ppt_manage/newVersion/pptPublish.vue'),
 		name: 'ppt发布',
+		meta:{
+			name_en:'ppt publish'
+		},
 		hidden: true,
 	},
    //英文ppt 演示 发布
@@ -26,12 +32,18 @@ export default [
 		component: () => import('@/views/ppt_manage/newVersion/pptEnPresent.vue'),
 		name: 'ppt演示',
 		hidden: true,
+		meta:{
+			name_en:'ppt demo'
+		},
   },
 	{
     path: '/pptenpublish',
 		component: () => import('@/views/ppt_manage/newVersion/pptEnPublish.vue'),
 		name: 'ppt发布',
 		hidden: true,
+		meta:{
+			name_en:'ppt publish'
+		},
   },
 
   // ppt自动生成
@@ -41,6 +53,9 @@ export default [
 		name: '智能PPT',
 		icon_path: require('@/assets/img/home/ppt_ic.png'),
 		hidden: false,
+		meta:{
+			name_en:"PPT Slides"
+		},
 		children: [
       //旧版ppt
       {
@@ -67,7 +82,8 @@ export default [
 				name: 'ppt编辑',
 				hidden: true,
 				meta: {
-					keepAlive: false
+					keepAlive: false,
+					name_en:"PPT Editor"
 				}
 			},{
 				path: 'pptlist',
@@ -75,7 +91,8 @@ export default [
 				name: 'PPT列表',
 				hidden: true,
 				meta: {
-					keepAlive: false
+					keepAlive: false,
+					name_en:"PPT Slides"
 				}
 			}
 		]
@@ -88,6 +105,9 @@ export default [
     name:'英文PPT',
     icon_path: require('@/assets/img/home/ppt_ic.png'),
     hidden:false,
+    meta:{
+        name_en:"English PPT Slides"
+    },
     children:[
       {
         path: 'ppteneditor',
@@ -95,7 +115,8 @@ export default [
         name: 'ppt编辑',
         hidden: true,
         meta: {
-          keepAlive: false
+          keepAlive: false,
+          name_en:"English PPT Editor"
         }
       },{
         path: 'pptenlist',
@@ -103,7 +124,8 @@ export default [
         name: 'PPT列表',
         hidden: true,
         meta: {
-          keepAlive: false
+          keepAlive: false,
+          name_en:"English PPT Slides"
         }
       },
     ]

+ 27 - 4
src/routes/modules/semanticsRoutes.js

@@ -5,23 +5,34 @@ export default [{
   component: () => import('@/views/Home.vue'),
   name: '语义分析',
   hidden: false,
+  meta:{
+    name_en:"Text Analysis"
+  },
   children: [{
       path: "tagPage",
       name: "标签管理",
-      component: () => import('@/views/semantics_manage/tagPage.vue')
+      component: () => import('@/views/semantics_manage/tagPage.vue'),
+      meta:{
+        name_en:"Tag Management"
+      },
     },
     {
       path: "documentPage",
       name: "文档管理",
-      component: () => import('@/views/semantics_manage/documentPage.vue')
+      component: () => import('@/views/semantics_manage/documentPage.vue'),
+      meta:{
+        name_en:"Doc Management"
+      },
     },
     {
       path: "addDocument",
       name: "添加文档",
       component: () => import('@/views/semantics_manage/document/documentEditPage.vue'),
       meta: {
+            name_en:'Add Document',
             pathFrom:'documentPage',
             pathName:'文档管理',
+            pathName_en:'Doc Management',
             keepAlive: false
         }
     },
@@ -30,23 +41,30 @@ export default [{
       name: "编辑文档",
       component: () => import('@/views/semantics_manage/document/documentEditPage.vue'),
       meta: {
+            name_en:'Edit Document',
             pathFrom:'documentPage',
             pathName:'文档管理',
+            pathName_en:'Doc Management',
             keepAlive: false
         }
     },
     {
       path: "semanticsPage",
       name: "文档对比",
-      component: () => import('@/views/semantics_manage/semanticsPage.vue')
+      component: () => import('@/views/semantics_manage/semanticsPage.vue'),
+      meta:{
+        name_en:"Doc Comparison"
+      },
     },
     {
       path: "addSemantics",
       name: "添加文档对比",
       component: () => import('@/views/semantics_manage/semantics/semanticsEditPage.vue'),
       meta: {
+            name_en:"Add Doc Comparison",
             pathFrom:'semanticsPage',
             pathName:'文档对比',
+            pathName_en:"Doc Comparison",
             keepAlive: false
         }
     },
@@ -55,15 +73,20 @@ export default [{
       name: "编辑文档对比",
       component: () => import('@/views/semantics_manage/semantics/semanticsEditPage.vue'),
       meta: {
+            name_en:"Edit Doc Comparison",
             pathFrom:'semanticsPage',
             pathName:'文档对比',
+            pathName_en:"Doc Comparison",
             keepAlive: false
         }
     },
     {
       path: "ASR",
       name: "语音识别",
-      component: () => import('@/views/semantics_manage/asr/ASR.vue')
+      component: () => import('@/views/semantics_manage/asr/ASR.vue'),
+      meta:{
+        name_en:"ASR"
+      },
     }
   ]
 }]

+ 11 - 2
src/routes/modules/supplyRoutes.js

@@ -6,16 +6,25 @@ export default [
 		component: () => import('@/views/Home.vue'),
 		name: '供应分析',
 		hidden: false,
+		meta:{
+			name_en:"Supply Analy"
+		},
 		children: [
       {
 				path: "stockplant",
 				name: "装置检修",
-				component: () => import('@/views/supply_manage/stockPlant.vue')
+				component: () => import('@/views/supply_manage/stockPlant.vue'),
+				meta:{
+					name_en:"Equip Maintenance"
+				},
 			},
       {
 				path: "analyseVariety",
 				name: "分析品种",
-				component: () => import('@/views/supply_manage/analyseVariety.vue')
+				component: () => import('@/views/supply_manage/analyseVariety.vue'),
+				meta:{
+					name_en:"Analyse Variety"
+				},
 			},
     ]
   },

+ 52 - 0
src/utils/defaultOptions.js

@@ -164,6 +164,58 @@ export const unitArr = [
 	'美分/加仑',
 	'手'
 ]
+//频度筛选框,支持中英文,支持过滤筛选项
+export const frequencySelectList = (filterArr=[])=>{
+    return [
+        {
+            value:'日度',
+            label:bus.$i18nt.t('Edb.FreAll.day')
+        },
+        {
+            value:'周度',
+            label:bus.$i18nt.t('Edb.FreAll.week')
+        },
+        {
+            value:'旬度',
+            label:bus.$i18nt.t('Edb.FreAll.dekad')
+        },
+        {
+            value:'月度',
+            label:bus.$i18nt.t('Edb.FreAll.month')
+        },
+        {
+            value:'季度',
+            label:bus.$i18nt.t('Edb.FreAll.quarter')
+        },
+        {
+            value:'半年度',
+            label:bus.$i18nt.t('Edb.FreAll.half_year')
+        },
+        {
+            value:'年度',
+            label:bus.$i18nt.t('Edb.FreAll.year')
+        }
+    ].filter((i)=>{return !filterArr.includes(i.value)})
+}
+//单位筛选框,支持中英文,支持过滤筛选项
+export const unitSelectList = (filterArr=[])=>{
+    return [
+        {value:'无',label:bus.$i18nt.t('Edb.UnitAll.u_null')},
+        {value:'万吨',label:bus.$i18nt.t('Edb.UnitAll.wanton')},
+        {value:'亿元',label:bus.$i18nt.t('Edb.UnitAll.u_bill')},
+        {value:'元',label:bus.$i18nt.t('Edb.UnitAll.u_yuan')},
+        {value:'元/吨',label:bus.$i18nt.t('Edb.UnitAll.yuan_ton')},
+        {value:'元/湿吨',label:bus.$i18nt.t('Edb.UnitAll.yuan_wetton')},
+        {value:'千克',label:bus.$i18nt.t('Edb.UnitAll.u_kg')},
+        {value:'吨',label:bus.$i18nt.t('Edb.UnitAll.u_ton')},
+        {value:'短吨',label:bus.$i18nt.t('Edb.UnitAll.short_ton')},
+        {value:'美元/吨',label:bus.$i18nt.t('Edb.UnitAll.doll_ton')},
+        {value:'万平方千米',label:bus.$i18nt.t('Edb.UnitAll.wan_skilo')},
+        {value:'美元/桶',label:bus.$i18nt.t('Edb.UnitAll.doll_bar')},
+        {value:'美分/加仑',label:bus.$i18nt.t('Edb.UnitAll.cent_gal')},
+        {value:'手',label:bus.$i18nt.t('Edb.UnitAll.u_hand')},
+    ].filter((i)=>{return !filterArr.includes(i.value)})
+}
 
 /* 季节性图配置 */
 export const seasonOptions = {

+ 5 - 4
src/views/Home.vue

@@ -141,7 +141,7 @@
                       @click.stop="handleClickBread(item)"
                       :style="`cursor: pointer; color: ${$setting.theme_color}`"
                     >
-                      {{ item.meta.pathName }}
+                    {{ $i18nt.locale==='zh'?item.meta.pathName:item.meta.pathName_en }}
                     </span>
                     <span
                       v-if="item.meta.pathFrom"
@@ -158,13 +158,14 @@
                       @click.stop="routeClick(item)"
                     >
                       <template v-if="$route.path==='/positionAnalysisDetail'">
-                        {{breadSelfName||'持仓详情'}}
+                        <!-- {{breadSelfName||'持仓详情'}} -->
+                        {{$i18nt.locale==='zh'?'持仓详情':'Position Analysis'}}
                       </template>
                       <template v-else>
-                        {{ item.name }}
+                        {{ $i18nt.locale==='zh'?item.name:item.meta.name_en }}
                       </template>
                     </span>
-                    <span v-else>{{ item.name }}</span>
+                    <span v-else>{{ $i18nt.locale==='zh'?item.name:item.meta.name_en }}</span>
                   </el-breadcrumb-item>
                 </template>
                 <template v-else>

+ 1 - 1
src/views/Login.vue

@@ -397,7 +397,7 @@ export default {
                 if (res.Ret === 200) {
                     let menuList = res.Data.List || [];
                     if (!menuList.length) {
-                        this.$message.error('该账号没有任何菜单权限,请联系管理员');
+                        this.$message.error(/* '该账号没有任何菜单权限,请联系管理员' */this.$t('LoginPage.no_menu_hint'));
                         return;
                     }
                     // 是否已经拿到菜单信息

+ 14 - 11
src/views/approve_manage/approveEdit.vue

@@ -5,11 +5,11 @@
             <el-form :inline="true" :model="approveForm" ref="approve-form" :rules="formRules"
                 label-width="180px" label-position="left">
                 <el-form-item :label="$t('SystemManage.ReportApprove.table_col01')" prop="name">
-                    <el-input v-model="approveForm.name" :disabled="this.$route.query.flowId" placeholder="请输入审批流名称"></el-input>
+                    <el-input v-model="approveForm.name" :disabled="this.$route.query.flowId" :placeholder="$t('ApprovalEdit.name_placeholder')"></el-input>
                 </el-form-item>
                 <el-form-item :label="$t('SystemManage.ReportApprove.table_col02')" prop="classify">
                     <el-cascader v-model="approveForm.classify"
-                        placeholder="请选择关联报告" clearable
+                        :placeholder="$t('ApprovalEdit.report_placeholder')" clearable
                         :disabled="this.$route.query.flowId"
                         :options="classifyTree"
                         :props="{value:'ClassifyId',label:'ClassifyName',children:'Children'}"
@@ -66,14 +66,17 @@ export default {
                 classify:'',
                 /* flowNodes:null */
             },
-            formRules:{
-                name:[{ required: true, message: '请输入审批流名称名称', trigger: 'blur' },
-                      { max: 20, message: '长度在20个字符内', trigger: 'change' }],
-                classify:[{ required: true, message: '请选择关联报告', trigger: 'blur' },]
-            },
-
         };
     },
+    computed:{
+        formRules(){
+            return {
+                name:[{ required: true, message: /* '请输入审批流名称' */this.$t('ApprovalEdit.name_placeholder'), trigger: 'blur' },
+                      { max: 20, message: /* '长度在20个字符内' */this.$t('ApprovalEdit.name_max_hint'), trigger: 'change' }],
+                classify:[{ required: true, message: /* '请选择关联报告' */this.$t('ApprovalEdit.report_placeholder'), trigger: 'blur' },]
+            }
+        }
+    },
     methods: {
         async checkFlow(){
             //检查name,region是否为空
@@ -81,12 +84,12 @@ export default {
             //检查审批流内容:每个审批节点是否都选择了审批人
             const data = this.$refs.floweditor.flowData
             if(data.length<3){
-                this.$message.warning("请添加审批节点")
+                this.$message.warning(/* "请添加审批节点" */this.$t('ApprovalEdit.add_node_hint'))
                 return
             }
             for(let item of data){
                 if(item.nodeType===2&&!item.approvers.length){
-                    this.$message.warning("有节点未选择审批人,请检查")
+                    this.$message.warning(/* "有节点未选择审批人,请检查" */this.$t('ApprovalEdit.node_select_hint'))
                     return
                 }
             }
@@ -128,7 +131,7 @@ export default {
                 res = await approveInterence.addNewApproveFlow(params)
             }
             if(res.Ret!==200) return
-            this.$message.success(`${id?'编辑':'新增'}成功`)
+            this.$message.success(/* `${id?'编辑':'新增'}成功` */ id?this.$t('ApprovalEdit.edit_success_text'):this.$t('ApprovalEdit.add_success_text'))
             this.$router.push('/approveSetting')
         },
         getFlowDetail(){

+ 1 - 1
src/views/chartFrame_manage/frameEditor.vue

@@ -136,7 +136,7 @@ export default {
                 const { Data,Ret } = await dataBaseInterface.uploadImgSvg(params);
                 if(Ret !== 200) return;
                 if(!Data){
-                    return this.$message.warning("上传图片失败")
+                    return this.$message.warning(/* "上传图片失败" */this.$t('ChartFrameEditorPage.upload_pic_fail'))
                 }
                 this.frameDetail.FrameworkImg = Data.ResourceUrl||''
             }

+ 44 - 19
src/views/chartRelevance_manage/components/fittingEquationSaveDia.vue

@@ -3,7 +3,7 @@
       :visible.sync="isShow"
       :close-on-click-modal="false"
       :modal-append-to-body="false"
-      title="保存"
+      :title="$t('StatisticAnalysis.FittingEquationChart.detail_dialog_title')"
       @close="cancelHandle"
       custom-class="savechart-dialog"
       center
@@ -26,7 +26,7 @@
               emitPath: false
             }"
             style="width: 100%"
-            placeholder="请选择所属分类"
+            :placeholder="$t('StatisticAnalysis.FittingEquationChart.detail_dialog_placeholder01')"
             clearable
             @change="setClassifyAll"
           />
@@ -38,11 +38,11 @@
           :model="form"
           :rules="formRules"
         >
-          <el-form-item label="弹性系数(a)" prop="aName" v-if="checkCharts.includes(5)">
+          <el-form-item :label="this.$t('StatisticAnalysis.FittingEquationChart.detail_dialog_chart_type01')" prop="aName" v-if="checkCharts.includes(5)">
             <el-input
               v-model="form.aName"
               style="width: 40%"
-              placeholder="请填写图表名称"
+              :placeholder="$t('StatisticAnalysis.FittingEquationChart.detail_dialog_placeholder02')"
               clearable
             />
             <el-cascader
@@ -55,15 +55,15 @@
                 emitPath: false
               }"
               style="width: 40%"
-              placeholder="请选择所属分类"
+              :placeholder="$t('StatisticAnalysis.FittingEquationChart.detail_dialog_placeholder01')"
               clearable
             />
           </el-form-item>
-          <el-form-item label="截距(b)" prop="bName" v-if="checkCharts.includes(6)">
+          <el-form-item :label="this.$t('StatisticAnalysis.FittingEquationChart.detail_dialog_chart_type02')" prop="bName" v-if="checkCharts.includes(6)">
             <el-input
               v-model="form.bName"
               style="width: 40%"
-              placeholder="请填写图表名称"
+              :placeholder="$t('StatisticAnalysis.FittingEquationChart.detail_dialog_placeholder02')"
               clearable
             />
             <el-cascader
@@ -76,15 +76,15 @@
                 emitPath: false
               }"
               style="width: 40%"
-              placeholder="请选择所属分类"
+              :placeholder="$t('StatisticAnalysis.FittingEquationChart.detail_dialog_placeholder01')"
               clearable
             />
           </el-form-item>
-          <el-form-item label="相关系数(r²)" prop="relevanceName" v-if="checkCharts.includes(7)">
+          <el-form-item :label="this.$t('StatisticAnalysis.FittingEquationChart.detail_dialog_chart_type03')" prop="relevanceName" v-if="checkCharts.includes(7)">
             <el-input
               v-model="form.relevanceName"
               style="width: 40%"
-              placeholder="请填写图表名称"
+              :placeholder="$t('StatisticAnalysis.FittingEquationChart.detail_dialog_placeholder02')"
               clearable
             />
              <el-cascader
@@ -97,7 +97,7 @@
                 emitPath: false
               }"
               style="width: 40%"
-              placeholder="请选择所属分类"
+              :placeholder="$t('StatisticAnalysis.FittingEquationChart.detail_dialog_placeholder01')"
               clearable
             />
           </el-form-item>
@@ -105,9 +105,9 @@
       </div>
       <div class="dia-bot">
         <el-button type="primary" style="margin-right: 20px" @click="saveHandle"
-          >保存</el-button
+          >{{ $t('StatisticAnalysis.FittingEquationChart.detail_dialog_title') }}</el-button
         >
-        <el-button type="primary" plain @click="cancelHandle">取消</el-button>
+        <el-button type="primary" plain @click="cancelHandle">{{ $t('StatisticAnalysis.FittingEquationChart.detail_dialog_cancel') }}</el-button>
       </div>
     </el-dialog>
 </template>
@@ -143,16 +143,41 @@ export default {
 			}
 		},
 	},
+    computed:{
+        chartsType(){
+            return [
+                { name: /* '弹性系数a' */this.$t('StatisticAnalysis.FittingEquationChart.detail_dialog_chart_type01'),key: 5 },
+                { name: /* '截距b' */this.$t('StatisticAnalysis.FittingEquationChart.detail_dialog_chart_type02'),key: 6 },
+                { name: /* '相关系数r²' */this.$t('StatisticAnalysis.FittingEquationChart.detail_dialog_chart_type03'),key: 7 },
+            ]
+        },
+        formRules(){
+            return {
+                aName:[
+                    { required: true, message: /* '图表名称不能为空' */this.$t('StatisticAnalysis.FittingEquationChart.detail_dialog_form_rules01'), trigger: 'blur' },
+                ],
+                bName:[
+                    { required: true, message: /* '图表名称不能为空' */this.$t('StatisticAnalysis.FittingEquationChart.detail_dialog_form_rules01'), trigger: 'blur' },
+                ],
+                relevanceName:[
+                    { required: true, message: /* '图表名称不能为空' */this.$t('StatisticAnalysis.FittingEquationChart.detail_dialog_form_rules01'), trigger: 'blur' },
+                ],
+                classify:[
+                    { required: true, message: /* '图表分类不能为空' */this.$t('StatisticAnalysis.FittingEquationChart.detail_dialog_form_rules02'), trigger: 'blur' },
+                ],
+            }
+        } 
+    },
 	data () {
 		return {
 			classifyOptions:[],//分类列表
 
       checkCharts: [5,6,7],
-      chartsType: [
+      /* chartsType: [
         { name: '弹性系数a',key: 5 },
         { name: '截距b',key: 6 },
         { name: '相关系数r²',key: 7 },
-      ],
+      ], */
 
       form: {
         aName: '',
@@ -163,7 +188,7 @@ export default {
         bClassify: '',
         relevanceClassify: ''
       },
-      formRules: {
+/*       formRules: {
 				aName:[
 					{ required: true, message: '图表名称不能为空', trigger: 'blur' },
 				],
@@ -176,7 +201,7 @@ export default {
 				classify:[
 					{ required: true, message: '图表分类不能为空', trigger: 'blur' },
 				],
-			},
+			}, */
 		};
 	},
 	methods: {
@@ -199,7 +224,7 @@ export default {
 
     /* 加入图库 */
     async saveHandle() {
-      if(!this.checkCharts.length) return this.$message.warning('请至少选择一个图表')
+      if(!this.checkCharts.length) return this.$message.warning(/* '请至少选择一个图表' */this.$t('StatisticAnalysis.FittingEquationChart.detail_dialog_save_check'))
       await this.$refs.diaForm.validate();
 
       const { MultipleGraphConfigId,DateType,date,xEdbs,yEdbs } = this.$parent.leftOption;
@@ -247,7 +272,7 @@ export default {
       let res = await fittingEquationInterface.chartEdit(params)
       if(res.Ret !== 200) return
 
-      this.$message.success('保存成功')
+      this.$message.success(/* '保存成功' */this.$t('StatisticAnalysis.FittingEquationChart.detail_dialog_save_success'))
 
       this.cancelHandle();
       this.$emit('saveBack',{code: res.Data.UniqueCode,id: res.Data.ChartInfoId})

+ 12 - 8
src/views/chartRelevance_manage/components/saveChartTobaseDia.vue

@@ -82,6 +82,18 @@ export default {
 			}
 		},
 	},
+	computed:{
+		formRules(){
+			return {
+				name:[
+					{ required: true, message: /* '图表名称不能为空' */this.$t('Chart.Vailds.name_msg'), trigger: 'blur' },
+				],
+				classify:[
+					{ required: true, message: /* '图表分类不能为空' */this.$t('Chart.Vailds.classify_msg'), trigger: 'blur' },
+				],
+			}
+		}
+	},
 	data () {
 		return {
 			classifyOptions:[],//分类列表
@@ -90,14 +102,6 @@ export default {
         name: '',
         classify: ''
       },
-      formRules: {
-				name:[
-					{ required: true, message: '图表名称不能为空', trigger: 'blur' },
-				],
-				classify:[
-					{ required: true, message: '图表分类不能为空', trigger: 'blur' },
-				],
-			},
 		};
 	},
 	methods: {

+ 24 - 20
src/views/chartRelevance_manage/components/saveEdbToBaseDia.vue

@@ -42,9 +42,9 @@
 						clearable>
 							<el-option
 								v-for="item in frequencyArr"
-								:key="item"
-								:label="item"
-								:value="item">
+								:key="item.value"
+								:label="item.label"
+								:value="item.value">
 							</el-option>
 						</el-select>
 					</el-form-item>
@@ -69,7 +69,7 @@
 import { dataBaseInterface } from '@/api/api.js';
 import * as preDictEdbInterface from '@/api/modules/predictEdbApi.js';
 import chartRelevanceApi,{ statisticFeatureInterface } from '@/api/modules/chartRelevanceApi.js';
-import { unitArr } from '@/utils/defaultOptions';
+import { unitArr,frequencySelectList } from '@/utils/defaultOptions';
 import selectUnit from '@/components/selectUnit.vue';
 export default {
 	components: { selectUnit },
@@ -97,6 +97,24 @@ export default {
 			}
 		}
 	},
+    computed:{
+        formRules(){
+            return {
+                edb_name:[
+                    { required: true, message: /* '指标名称不能为空' */this.$t('Edb.Valids.name_msg'), trigger: 'blur' },
+                ],
+                menu:[
+                    { required: true, message: /* '所属目录不能为空' */this.$t('Edb.Valids.menu_msg'), trigger: 'blur' },
+                ],
+                frequency:[
+                    { required: true, message: /* '频率不能为空' */this.$t('Edb.Valids.fre_msg'), trigger: 'blur' },
+                ],
+                unit:[
+                    { required: true, message: /* '单位不能为空' */this.$t('Edb.Valids.unit_msg'), trigger: 'blur' },
+                ],
+            }
+        }
+    },
 	data () {
 		return {
 			formData: {
@@ -105,20 +123,6 @@ export default {
 				frequency: '',
 				unit:''
 			},
-			formRules: {
-				edb_name:[
-					{ required: true, message: '指标名称不能为空', trigger: 'blur' },
-				],
-				menu:[
-					{ required: true, message: '所属目录不能为空', trigger: 'blur' },
-				],
-				frequency:[
-					{ required: true, message: '频率不能为空', trigger: 'blur' },
-				],
-				unit:[
-					{ required: true, message: '单位不能为空', trigger: 'blur' },
-				],
-			},
 			options:  [],
 			unitArr,
 			levelProps: {
@@ -128,7 +132,7 @@ export default {
 				emitPath: false,
 				checkStrictly: true
 			},
-			frequencyArr:['日度','周度','旬度','月度','季度','年度'],
+			frequencyArr:frequencySelectList(),
 		};
 	},
 	methods: {
@@ -193,7 +197,7 @@ export default {
       }
 			
 			if(res.Ret !== 200) return
-			this.$message.success('保存成功');
+			this.$message.success(/* '保存成功' */this.$t('MsgPrompt.saved_msg'));
 			this.cancelHandle();
 			this.$emit('saveBack',{source:this.source})
       

+ 5 - 5
src/views/chartRelevance_manage/crossVarietyAnalysis/chartEditor.vue

@@ -323,10 +323,10 @@ export default {
       const {CalculateValue,TagX,TagY } = this.$refs.chartFormRef.form;
       let message = '';
       
-      if(!this.checkedVarietys.length) message = '请选择品种'
-      else if(!CalculateValue) message = '请输入时间长度'
-      else if(!TagX) message = '请选择X轴坐标'
-      else if(!TagY) message = '请选择Y轴坐标'
+      if(!this.checkedVarietys.length) message = /* '请选择品种' */this.$t('SupplyAnalysis.StockPlant.placeholder04')
+      else if(!CalculateValue) message = /* '请输入时间长度' */this.$t('StatisticAnalysis.CrossVarietyChart.msg_hint01')
+      else if(!TagX) message = /* '请选择X轴坐标' */this.$t('StatisticAnalysis.CrossVarietyChart.msg_hint02')
+      else if(!TagY) message = /* '请选择Y轴坐标' */this.$t('StatisticAnalysis.CrossVarietyChart.msg_hint03')
 
       this.$message.warning(message)
     },
@@ -435,7 +435,7 @@ export default {
         ImageUrl: Data.ResourceUrl,
       });
 
-			this.$message.success('保存成功');
+			this.$message.success(/* '保存成功' */this.$t('StatisticAnalysis.FittingEquationChart.detail_dialog_save_success'));
 			this.$router.replace({
 				path: '/crossVarietyChartList',
 				query: {

+ 7 - 7
src/views/chartRelevance_manage/crossVarietyAnalysis/components/chartFormSection.vue

@@ -17,7 +17,7 @@
         />
         <el-select
           v-model="form.CalculateUnit"
-          placeholder="请选择"
+          :placeholder="$t('StatisticAnalysis.CrossVarietyChart.please_select')"
           style="width: 100px"
           @change="changeParams"
         >
@@ -33,7 +33,7 @@
         <el-select
           v-model="form.PercentType"
           style="width: 240px"
-          placeholder="请选择"
+          :placeholder="$t('StatisticAnalysis.CrossVarietyChart.please_select')"
           @change="changeParams"
         >
           <el-option
@@ -56,7 +56,7 @@
         <el-select
           v-model="form.TagX"
           style="width: 240px"
-          placeholder="请选择"
+          :placeholder="$t('StatisticAnalysis.CrossVarietyChart.please_select')"
           @change="changeSeries"
         >
           <el-option
@@ -71,7 +71,7 @@
       <el-form-item :label="$t('StatisticAnalysis.CrossVarietyChart.y_axis')" prop="TagY">
         <el-select
           v-model="form.TagY"
-          placeholder="请选择"
+          :placeholder="$t('StatisticAnalysis.CrossVarietyChart.please_select')"
           style="width: 240px"
           @change="changeSeries"
         >
@@ -88,7 +88,7 @@
         <el-input
           v-model="form.ChartName"
           style="width: 240px"
-          placeholder="请输入图表名称"
+          :placeholder="$t('StatisticAnalysis.CrossVarietyChart.chart_name_input')"
           @change="changeParams"
         />
       </el-form-item>
@@ -101,7 +101,7 @@
           <el-select
             v-model="item.DateType"
             style="width: 140px"
-            placeholder="请选择"
+            :placeholder="$t('StatisticAnalysis.CrossVarietyChart.please_select')"
             @change="changeParams"
           >
             <el-option
@@ -241,7 +241,7 @@ export default {
   },
   methods: {
     addDateHandle() {
-      if(this.form.DateConfigList.length === 5) return this.$message.warning('日期数量已达上限')
+      if(this.form.DateConfigList.length === 5) return this.$message.warning(/* '日期数量已达上限' */this.$t('StatisticAnalysis.StatisticFeatureChart.add_hint'))
 
       this.form.DateConfigList.push({
         DateType: 1,Num: 1,FixDate:'',ShowTips: 1

+ 4 - 2
src/views/chartRelevance_manage/crossVarietyAnalysis/components/edbTableSection.vue

@@ -23,6 +23,8 @@
                     v-if="scope.row.EdbType===2"
                 />
             </span>
+            <span v-else-if="item.key==='Frequency'">{{ getFrequencyTrans(scope.row.Frequency||'null') }}</span>
+            <span v-else-if="item.key==='Unit'">{{ getUnitTrans(scope.row.Unit) }}</span>
           <span v-else>{{ scope.row[item.key] }}</span>
         </template>
       </el-table-column>
@@ -178,10 +180,10 @@ export default {
       arr.forEach((item) => (str += `${item.DataTime}\t${item.Value}\n`));
       this.$copyText(str).then(
         (res) => {
-          this.$message.success('已成功复制!');
+          this.$message.success(/* '已成功复制!' */this.$t('MsgPrompt.copy_success_msg'));
         },
         (err) => {
-          this.$message.error('复制失败!');
+          this.$message.error(/* '复制失败!' */this.$t('MsgPrompt.copy_fail_msg'));
         }
       );
     },

+ 1 - 1
src/views/chartRelevance_manage/crossVarietyAnalysis/components/tagRelationDialog.vue

@@ -134,7 +134,7 @@ export default {
       let res = await crossVarietyInterface.setTagRelationVariety(params)
 
       if(res.Ret!==200) return
-      this.$message.success('配置保存成功')
+      this.$message.success(/* '配置保存成功' */this.$t('MsgPrompt.saved_msg'))
       this.$emit('refresh')
       this.cancelHandle()
     },300),

+ 1 - 1
src/views/chartRelevance_manage/crossVarietyAnalysis/list.vue

@@ -561,7 +561,7 @@ export default {
 			this.refreshLoading = this.$loading({
         lock: true,
         target: '.main-right',
-        text: '刷新图表中...',
+        text: /* '刷新图表中...' */this.$t('Chart.OptMsg.refresh_ing_msg'),
         spinner: 'el-icon-loading',
         background: 'rgba(255, 255, 255, 0.8)',
       });

+ 1 - 1
src/views/chartRelevance_manage/fittingEquation/fittingEquationChartEditor.vue

@@ -55,7 +55,7 @@
 						type="date"
 						range
 						value-type="format"
-						placeholder="请选择时间段"
+						:placeholder="$t('Chart.choose_time')"
 					/>
 				</div>
         

+ 2 - 2
src/views/chartRelevance_manage/fittingEquation/fittingEquationList.vue

@@ -495,7 +495,7 @@ export default {
 			})
 
 			if(Ret!==200) return
-			this.$message.success('保存成功');
+			this.$message.success(/* '保存成功' */this.$t('StatisticAnalysis.FittingEquationChart.detail_dialog_save_success'));
 			this.getTreeData();
 			//关联图表和图片
 			this.setChartImage();
@@ -564,7 +564,7 @@ export default {
 			this.refreshLoading = this.$loading({
         lock: true,
         target: '.main-right',
-        text: '刷新图表中...',
+        text: /* '刷新图表中...' */this.$t('Chart.OptMsg.refresh_ing_msg'),
         spinner: 'el-icon-loading',
         background: 'rgba(255, 255, 255, 0.8)',
       });

+ 4 - 4
src/views/chartRelevance_manage/mixins/classifyMixin.js

@@ -226,7 +226,7 @@ export default {
       }
 
       if (res.Ret !== 200) return;
-      this.$message.success("移动成功!");
+      this.$message.success(this.$t('MsgPrompt.move_success_msg'));
       this.getTreeData();
     },
 
@@ -278,7 +278,7 @@ export default {
       }
       
       if (res.Ret !== 200) return;
-      this.$message.success("移动成功!");
+      this.$message.success(this.$t('MsgPrompt.move_success_msg'));
       this.getTreeData();
 
     },
@@ -448,13 +448,13 @@ export default {
       var clipboard = new this.Clipboard(".shareLink");
       clipboard.on("success", (e) => {
         console.log(e);
-        this.$message.success("复制链接成功");
+        this.$message.success(/* "复制链接成功" */this.$t('Chart.OptMsg.copy_link_success'));
         e.clearSelection(); // 释放内存
         clipboard.destroy();
       });
       // // 浏览器不支持
       clipboard.on("error", (e) => {
-        this.$message.warning("浏览器暂不支持");
+        this.$message.warning(/* "浏览器暂不支持" */this.$t('MsgPrompt.browser_not_support'));
         // 释放内存
         clipboard.destroy();
       });

+ 4 - 2
src/views/chartRelevance_manage/relevance/list.vue

@@ -225,7 +225,7 @@
                   <!-- 奇怪柱状图用别名 -->
                   <el-input
                     v-model="scope.row.EdbAliasName"
-                    placeholder="指标别名"
+                    :placeholder="$t('OnlineExcelPage.indicator_alias_lbl')"
                     class="target-other-name"
                     clearable
                   />
@@ -239,6 +239,8 @@
                       v-if="scope.row.EdbType===2"
                     />
                   </span>
+                <span v-else-if="item.key==='Frequency'">{{ getFrequencyTrans(scope.row.Frequency||'null') }}</span>
+                <span v-else-if="item.key==='Unit'">{{ getUnitTrans(scope.row.Unit) }}</span>
                 <span v-else>{{ scope.row[item.key] }}</span>
               </template>
             </el-table-column>
@@ -574,7 +576,7 @@ export default {
       });
 
       if (Ret !== 200) return;
-      this.$message.success("保存成功");
+      this.$message.success(/* "保存成功" */this.$t('StatisticAnalysis.FittingEquationChart.detail_dialog_save_success'));
       this.getTreeData();
       //关联图表和图片
       this.setChartImage();

+ 2 - 2
src/views/chartRelevance_manage/relevance/relevanceChartEditor.vue

@@ -65,7 +65,7 @@
               type="month"
               range
               value-type="format"
-              placeholder="请选择时间段"
+              :placeholder="$t('Chart.choose_time')"
               @change="dateChange"
             />
           </div>
@@ -588,7 +588,7 @@ export default {
       const { Correlation,RollingCorrelation } = this.chartInfo;
       if(Correlation.CalculateValue*valueMap[Correlation.CalculateUnit] < Correlation.LeadValue*valueMap[Correlation.LeadUnit]*2) {
         this.chartInfo.Correlation.CalculateValue = 0;
-        this.$message.warning('相关性计算窗口必须≥2*分析周期')
+        this.$message.warning(/* '相关性计算窗口必须≥2*分析周期' */this.$t('StatisticAnalysis.ChartRelevance.check_value_hint'))
         checkBool = false
       }
       // else if(RollingCorrelation[0].CalculateValue*valueMap[RollingCorrelation[0].CalculateUnit] >= Correlation.CalculateValue*valueMap[Correlation.CalculateUnit]) {

+ 3 - 3
src/views/chartRelevance_manage/statistic/statisticFeatureChartEditor.vue

@@ -50,7 +50,7 @@
               type="month"
               range
               value-type="format"
-              placeholder="请选择时间段"
+              :placeholder="$t('Chart.choose_time')"
               @change="dateChange"
             />
           </div>
@@ -187,7 +187,7 @@
               type="month"
               range
               value-type="format"
-              placeholder="请选择时间段"
+              :placeholder="$t('Chart.choose_time')"
               @change="dateChange($event,'frequecny')"
             />
           </div>
@@ -639,7 +639,7 @@ export default {
 
     /* 保存完图表 */
     saveChartBack({source,id}) {
-      this.$message.success('保存成功');
+      this.$message.success(/* '保存成功' */this.$t('StatisticAnalysis.FittingEquationChart.detail_dialog_save_success'));
       this.setButtonAuth(source);
       //封面图
       this.$refs[`chartCard`+source].setChartImage(source,id)

+ 1 - 1
src/views/chartRelevance_manage/statistic/statisticFeatureList.vue

@@ -532,7 +532,7 @@ export default {
 			this.refreshLoading = this.$loading({
         lock: true,
         target: '.main-right',
-        text: '刷新图表中...',
+        text: /* '刷新图表中...' */this.$t('Chart.OptMsg.refresh_ing_msg'),
         spinner: 'el-icon-loading',
         background: 'rgba(255, 255, 255, 0.8)',
       });

+ 36 - 19
src/views/classify_manage/chapterSettingV2.vue

@@ -4,7 +4,7 @@
             <el-button 
                 type="primary"
                 @click="addChapter"
-            >添加章节</el-button>
+            >{{ $t('ReportManage.CategoryList.add_section') }}</el-button>
         </div>
         <div class="content-box">
             <el-tree
@@ -15,7 +15,7 @@
                     children: 'Child'
                 }"
 				check-strictly
-				empty-text="暂无数据"
+				:empty-text="$t('Common.no_classify_msg')"
                 draggable
                 :allow-drop="canDropHandle"
                 @node-drop="dropOverHandle"
@@ -25,7 +25,11 @@
 					slot-scope="{ data }"
 				>
                     <div>
-                        <span :class="['tag', data.Enabled==1?'open':'close']" @click.stop="handleEnableSet(data)">{{data.Enabled==1?'启用':'禁用'}}</span>
+                        <span 
+                            :class="['tag', data.Enabled==1?'open':'close']" 
+                            @click.stop="handleEnableSet(data)">
+                            {{data.Enabled==1?$t('Common.enable'):$t('Common.disable')}}
+                        </span>
                         <span>{{data.ReportChapterTypeName}}</span>
                     </div>
 					
@@ -39,6 +43,7 @@
 
         <!-- 添加/编辑 章节 -->
     <el-dialog 
+        v-if="addDialogShow"
         :title="dialogTitle" 
         :modal-append-to-body='false' 
         :visible.sync="addDialogShow" 
@@ -49,18 +54,26 @@
         @close="addDialogClose"
     >
         <div style="display: flex;align-items: center;justify-content: center;">
-            <el-form :model="addForm" label-width="95px" :rules="addFormRules" ref="addForm">
-                <el-form-item label="章节名称" prop="ReportChapterTypeName">
-                    <el-input v-model="addForm.ReportChapterTypeName" style="width: 317px;" placeholder="请输入章节名称"></el-input>
+            <el-form :model="addForm" label-width="auto" :rules="addFormRules" ref="addForm">
+                <!-- 章节名称 -->
+                <el-form-item :label="$t('ReportManage.CategoryList.section_name')" prop="ReportChapterTypeName">
+                    <el-input 
+                        v-model="addForm.ReportChapterTypeName" 
+                        style="width: 317px;" 
+                        :placeholder="$t('ReportManage.CategoryList.section_name_hint')">
+                    </el-input>
                 </el-form-item>
-                <el-form-item label="上级分类">
-                    <el-input  disabled :value="researchType=='day'?'晨报':'周报'" style="width: 317px;" placeholder="请输入章节名称"></el-input>
+                <!-- 上级分类 -->
+                <el-form-item :label="$t('ReportManage.CategoryList.parent_category')">
+                    <el-input  disabled :value="researchType=='day'?'晨报':'周报'" style="width: 317px;" 
+                    :placeholder="$t('ReportManage.CategoryList.related_variety_inputhint')"></el-input>
                 </el-form-item>
-                <el-form-item prop="variety" label="关联品种">
+                <!-- 关联品种 -->
+                <el-form-item prop="variety" :label="$t('ReportManage.CategoryList.related_variety')">
                     <template slot="label">
-                        <el-tooltip class="item" effect="dark" content="控制报告阅读权限">
+                        <el-tooltip class="item" effect="dark" :content="$t('ReportManage.CategoryList.related_variety_hint')">
                             <div>
-                                <span>关联品种</span>
+                                <span>{{ $t('ReportManage.CategoryList.related_variety') }}</span>
                                 <i class="el-icon-info"></i>
                             </div>
                         </el-tooltip>
@@ -68,7 +81,7 @@
                     <el-cascader
                         :options="reportVarietyList" 
                         v-model="addForm.ChartPermissionIdList" 
-                        placeholder="请选择"
+                        :placeholder="$t('ReportManage.CategoryList.related_variety_inputhint')"
                         collapse-tags
                         :props="{value:'PermissionId',label:'PermissionName',children:'Child',multiple: true,emitPath:false}" 
                         style="width:317px;"
@@ -77,8 +90,8 @@
             </el-form>
         </div>
         <div solt="footer" style="padding: 20px 0;text-align: center;">
-            <el-button size="medium" style="width:130px;" @click="addDialogShow=false">取消</el-button>
-            <el-button type="primary" size="medium" style="margin-left: 16px;width:130px ;" @click="addChapterSave">保存</el-button>
+            <el-button size="medium" style="width:130px;" @click="addDialogShow=false">{{ $t('Dialog.cancel_btn') }}</el-button>
+            <el-button type="primary" size="medium" style="margin-left: 16px;width:130px ;" @click="addChapterSave">{{ $t('Dialog.confirm_save_btn') }}</el-button>
       </div>
     </el-dialog>
         
@@ -134,7 +147,7 @@ export default {
         },
 
         addChapter(){
-            this.dialogTitle="添加章节"
+            this.dialogTitle=this.$t('ReportManage.CategoryList.add_section')
             this.addDialogShow=true
             this.addForm.ReportChapterTypeName=''
             this.addForm.ChartPermissionIdList=''
@@ -149,7 +162,7 @@ export default {
                 ReportChapterTypeId:row.ReportChapterTypeId,
                 ChartPermissionIdList:row.ChartPermissionIdList||''
             }
-            this.dialogTitle="编辑章节"
+            this.dialogTitle=this.$t('ReportManage.CategoryList.edit_section')
             this.addDialogShow=true
         },
 
@@ -171,7 +184,11 @@ export default {
             }
             requestMethod(params).then(res=>{
               if(res.Ret == 200){
-                this.$message.success(`${this.dialogTitle}成功`)
+                this.$message.success(
+                    params.ReportChapterTypeId
+                    ?this.$t('ReportManage.CategoryList.edit_section_successful')
+                    :this.$t('ReportManage.CategoryList.add_section_successful')
+                )
                 this.addDialogShow=false
                 this.getList()
               }
@@ -196,7 +213,7 @@ export default {
                 Enabled:item.Enabled==1?0:1
             }).then(res=>{
                 if(res.Ret===200){
-                    this.$message.success('设置成功')
+                    this.$message.success(this.$t('ReportManage.CategoryList.setup_successful'))
                     this.getList()
                 }
             })
@@ -225,7 +242,7 @@ export default {
             console.log(params);
             setChapterSort(params).then(res=>{
                 if(res.Ret===200){
-                    this.$message.success('移动成功')
+                    this.$message.success(this.$t('ReportManage.CategoryList.move_successful'))
                 }else{
                     this.getList()
                 }

+ 49 - 30
src/views/classify_manage/classifyEnlistV2.vue

@@ -2,18 +2,25 @@
     <div class="classify-page">
         <div class="top-wrap">
             <div class="type-box">
-                <div class="item" @click="$emit('typeChange','1')">中文分类</div>
-                <div class="item active">英文分类</div>
+                <!-- 中文分类 -->
+                <div class="item" @click="$emit('typeChange','1')">
+                    {{ $t('ReportManage.CategoryList.chinese_tabs') }}
+                </div>
+                <!-- 英文分类 -->
+                <div class="item active" style="margin-left: 20px;">{{ $t('ReportManage.CategoryList.english_tabs') }}</div>
             </div>
             <div style="display:flex;padding:10px;gap:10px">
-            <el-button 
-                type="primary"
-                @click="addClassify"
-                v-permission="permissionBtn.enClassifyBtn.classifyList_enClassify_add"
-            >添加分类</el-button>
-            <el-input placeholder="分类名称" v-model="searchVal" style="max-width: 262px;" @change="getList" clearable>
-                <i slot="prefix" class="el-input__icon el-icon-search"></i>
-            </el-input>
+                <!-- 添加分类 -->
+                <el-button 
+                    type="primary"
+                    @click="addClassify"
+                    v-permission="permissionBtn.enClassifyBtn.classifyList_enClassify_add"
+                >
+                    {{$t('ReportManage.CategoryList.add_category')}}
+                </el-button>
+                <el-input :placeholder="$t('ReportManage.CategoryList.category_name')" v-model="searchVal" style="max-width: 262px;" @change="getList" clearable>
+                    <i slot="prefix" class="el-input__icon el-icon-search"></i>
+                </el-input>
             </div>
         </div>
         <div class="content-box">
@@ -25,7 +32,7 @@
                     children: 'Child'
                 }"
 				check-strictly
-				empty-text="暂无数据"
+				:empty-text="$t('Common.no_classify_msg')"
                 draggable
                 indent='76'
                 :allow-drop="canDropHandle"
@@ -36,7 +43,10 @@
 					slot-scope="{ node, data }"
 				>
                     <div>
-                        <span :class="['tag', data.Enabled==1?'open':'close']" @click.stop="handleEnableSet(data)">{{data.Enabled==1?'启用':'禁用'}}</span>
+                        <span 
+                            :class="['tag', data.Enabled==1?'open':'close']" 
+                            @click.stop="handleEnableSet(data)">
+                            {{data.Enabled==1?$t('Common.enable'):$t('Common.disable')}}</span>
                         <span>{{data.ClassifyName}}</span>
                     </div>
 					
@@ -50,8 +60,9 @@
 
         <!-- 分类弹窗 -->
         <m-dialog 
-            :title="classifyForm.classify_id?'编辑分类':'新增分类'" 
+        :title="classifyForm.classify_id?$t('ReportManage.CategoryList.edit_category'):$t('ReportManage.CategoryList.add_category')" 
             :show.sync="classifyForm.show" 
+            v-if="classifyForm.show"
             width="650px"
         >
             <div style="padding-left: 50px">
@@ -59,26 +70,29 @@
                     :model="classifyForm" 
                     :rules="formRules" 
                     ref="formRef" 
-                    label-position="left"
                     hide-required-asterisk
-                    label-width="90px">
-                    <el-form-item prop="classify_name" label="分类名称">
+                    label-width="auto">
+                    <!-- 分类名称 -->
+                    <el-form-item prop="classify_name" :label="$t('ReportManage.CategoryList.category_name')">
                         <el-input 
                             type="text" 
                             v-model="classifyForm.classify_name" 
-                            placeholder="请输入分类名称"
+                            :placeholder="$t('ReportManage.CategoryList.category_name_hint')"
                             style="width:400px;"
                         />
                     </el-form-item>
-                    <el-form-item prop="parent_id" label="上级分类">
-                        <el-cascader :options="classifyparentArr" v-model="classifyForm.parent_id" placeholder="请选择"
+                    <!-- 上级分类 -->
+                    <el-form-item prop="parent_id" :label="$t('ReportManage.CategoryList.parent_category')">
+                        <el-cascader :options="classifyparentArr" v-model="classifyForm.parent_id"
+                        :placeholder="$t('ReportManage.CategoryList.related_variety_inputhint')"
                         :props="{value:'Id',label:'ClassifyName',children:'Child',checkStrictly:true,emitPath:false}" style="min-width:400px;"></el-cascader>
                     </el-form-item>
-                    <el-form-item prop="variety" label="关联品种" v-if="classifyForm.level==3&&permissionBtn.enClassifyBtn.classifyList_enClassify_connect_variety">
+                    <!-- 关联品种 -->
+                    <el-form-item prop="variety" :label="$t('ReportManage.CategoryList.related_variety')" v-if="classifyForm.level==3&&permissionBtn.enClassifyBtn.classifyList_enClassify_connect_variety">
                         <template slot="label">
-                            <el-tooltip class="item" effect="dark" content="控制报告阅读权限">
+                            <el-tooltip class="item" effect="dark" :content="$t('ReportManage.CategoryList.related_variety_hint')">
                                 <div>
-                                    <span>关联品种</span>
+                                    <span>{{ $t('ReportManage.CategoryList.related_variety') }}</span>
                                     <i class="el-icon-info"></i>
                                 </div>
                             </el-tooltip>
@@ -86,7 +100,7 @@
                         <el-cascader
                             :options="reportVarietyList" 
                             v-model="classifyForm.variety" 
-                            placeholder="请选择"
+                            :placeholder="$t('ReportManage.CategoryList.related_variety_inputhint')"
                             collapse-tags
                             :props="{value:'PermissionId',label:'PermissionName',children:'Child',multiple: true,emitPath:false}" 
                             style="min-width:400px;"
@@ -98,12 +112,12 @@
                 <el-button
                 @click="cancelClassify"
                 style="width: 132px; height: 40px"
-                >取消</el-button>
+                >{{ $t('Dialog.cancel_btn') }}</el-button>
                 <el-button
                 @click="setClassifyHandle"
                 type="primary"
                 style="width: 132px; height: 40px"
-                >保存</el-button>
+                >{{ $t('Dialog.confirm_save_btn') }}</el-button>
             </div>
         </m-dialog>
     </div>
@@ -131,7 +145,7 @@ export default {
                 level:1
             },
             formRules: {
-                classify_name: [{ required:true,message:'请输入分类名称',trigger:'blur'}]
+                classify_name: [{ required:true,message:this.$t('ReportManage.CategoryList.category_name_hint'),trigger:'blur'}]
             },
             classifyparentArr:[],
 
@@ -159,7 +173,7 @@ export default {
                             ...item
                         }
                     })
-                    this.classifyparentArr.unshift({Id:'0',ClassifyName:'无',Child:null})
+                    this.classifyparentArr.unshift({Id:'0',ClassifyName:this.$t('ReportManage.CategoryList.parent_none'),Child:null})
                 }
             }
         },
@@ -176,7 +190,7 @@ export default {
                 Enabled:item.Enabled==1?0:1
             }).then(res=>{
                 if(res.Ret===200){
-                    this.$message.success('设置成功')
+                    this.$message.success(this.$t('ReportManage.CategoryList.setup_successful'))
                     this.getList('init')
                 }
             })
@@ -216,7 +230,12 @@ export default {
                 : await classifyEnInterface.classifyAdd(params)
 
             if(Ret !== 200) return
-            this.$message.success(Msg)
+            //this.$message.success(Msg)
+            this.$message.success(
+                classify_id
+                ?this.$t('ReportManage.CategoryList.modification_successful')
+                :this.$t('ReportManage.CategoryList.addition_successful')
+            )
             this.cancelClassify();
             this.getList('init');
         },
@@ -269,7 +288,7 @@ export default {
             console.log(params);
             classifyEnInterface.moveSort(params).then(res=>{
                 if(res.Ret===200){
-                    this.$message.success('移动成功')
+                    this.$message.success(this.$t('ReportManage.CategoryList.move_successful'))
                 }else{
                     this.getList()
                 }

+ 63 - 31
src/views/classify_manage/classifylistV2.vue

@@ -2,18 +2,29 @@
     <div class="classify-page">
         <div class="top-wrap">
             <div class="type-box">
-                <div class="item active" v-permission="permissionBtn.classifyBtn.classifyList_cnClassify">中文分类</div>
-                <div class="item" @click="$emit('typeChange','2')" v-permission="permissionBtn.enClassifyBtn.classifyList_enClassify">英文分类</div>
+                <!-- 中文分类 -->
+                <div class="item active" 
+                    v-permission="permissionBtn.classifyBtn.classifyList_cnClassify">
+                    {{ $t('ReportManage.CategoryList.chinese_tabs') }}
+                </div>
+                <!-- 英文分类 -->
+                <div class="item" @click="$emit('typeChange','2')" style="margin-left: 20px;"
+                    v-permission="permissionBtn.enClassifyBtn.classifyList_enClassify">
+                    {{ $t('ReportManage.CategoryList.english_tabs') }}
+                </div>
             </div>
             <div style="display:flex;padding:10px;gap:10px">
-            <el-button 
-                type="primary"
-                @click="addClassify"
-                v-permission="permissionBtn.classifyBtn.classifyList_cnClassify_classifyAdd"
-            >添加分类</el-button>
-            <el-input placeholder="分类名称" v-model="searchVal" style="max-width: 262px;" @change="getList" clearable>
-                <i slot="prefix" class="el-input__icon el-icon-search"></i>
-            </el-input>
+                <!-- 添加分类 -->
+                <el-button 
+                    type="primary"
+                    @click="addClassify"
+                    v-permission="permissionBtn.classifyBtn.classifyList_cnClassify_classifyAdd"
+                >
+                    {{$t('ReportManage.CategoryList.add_category')}}
+                </el-button>
+                <el-input :placeholder="$t('ReportManage.CategoryList.category_name')" v-model="searchVal" style="max-width: 262px;" @change="getList" clearable>
+                    <i slot="prefix" class="el-input__icon el-icon-search"></i>
+                </el-input>
             </div>
         </div>
         <div class="content-box">
@@ -25,7 +36,7 @@
                     children: 'Child'
                 }"
 				check-strictly
-				empty-text="暂无数据"
+				:empty-text="$t('Common.no_classify_msg')"
                 draggable
                 indent='76'
                 :allow-drop="canDropHandle"
@@ -36,12 +47,22 @@
 					slot-scope="{ data }"
 				>
                     <div>
-                        <span :class="['tag', data.Enabled==1?'open':'close']" @click.stop="handleEnableSet(data)">{{data.Enabled==1?'启用':'禁用'}}</span>
+                        <span 
+                            :class="['tag', data.Enabled==1?'open':'close']" 
+                            @click.stop="handleEnableSet(data)">
+                            {{data.Enabled==1?$t('Common.enable'):$t('Common.disable')}}
+                        </span>
                         <span>{{data.ClassifyName}}</span>
                     </div>
 					
                     <div class="opt-box">
-                        <span class="editsty" v-if="['晨报','周报'].includes(data.ClassifyName)" @click="chapterSetting(data)" v-permission="permissionBtn.classifyBtn.classifyList_cnClassify_chapterSetting">章节设置</span>
+                        <!-- 章节设置 -->
+                        <span class="editsty" 
+                            v-if="['晨报','周报'].includes(data.ClassifyName)" 
+                            @click="chapterSetting(data)" 
+                            v-permission="permissionBtn.classifyBtn.classifyList_cnClassify_chapterSetting">
+                            {{ $t('ReportManage.CategoryList.section_settings') }}
+                        </span>
                         <img class="icon-drag" src="~@/assets/img/data_m/move_ico2.png" alt="">
                         <img class="icon-set" src="~@/assets/img/icons/variety_set.png" alt="" @click.stop="handleEdit(data)" v-permission="permissionBtn.classifyBtn.classifyList_cnClassify_classifyEdit">
                     </div>
@@ -51,8 +72,9 @@
 
         <!-- 分类弹窗 -->
         <m-dialog 
-            :title="classifyForm.classify_id?'编辑分类':'新增分类'" 
+            :title="classifyForm.classify_id?$t('ReportManage.CategoryList.edit_category'):$t('ReportManage.CategoryList.add_category')" 
             :show.sync="classifyForm.show" 
+            v-if="classifyForm.show"
             width="650px"
         >
             <div style="padding-left: 50px">
@@ -60,28 +82,31 @@
                     :model="classifyForm" 
                     :rules="formRules" 
                     ref="formRef" 
-                    label-position="left"
                     hide-required-asterisk
-                    label-width="100px">
-                    <el-form-item prop="classify_name" label="分类名称">
+                    label-width="auto">
+                    <!-- 分类名称 -->
+                    <el-form-item prop="classify_name" :label="$t('ReportManage.CategoryList.category_name')">
                         <el-input 
                             type="text" 
                             v-model="classifyForm.classify_name" 
-                            placeholder="请输入分类名称"
+                            :placeholder="$t('ReportManage.CategoryList.category_name_hint')"
                             style="width:400px;"
                         />
                     </el-form-item>
-                    <el-form-item prop="parent_id" label="上级分类">
-                        <el-select v-model="classifyForm.parent_id" placeholder="请选择" style="width:400px;">
-                            <el-option label="无" :value="0"></el-option>
+                    <!-- 上级分类 -->
+                    <el-form-item prop="parent_id" :label="$t('ReportManage.CategoryList.parent_category')">
+                        <el-select v-model="classifyForm.parent_id" 
+                            :placeholder="$t('ReportManage.CategoryList.related_variety_inputhint')" style="width:400px;">
+                            <el-option :label="$t('ReportManage.CategoryList.parent_none')" :value="0"></el-option>
                             <el-option v-for="(item,index) in classifyparentArr" :key="index" :label="item.ClassifyName" :value="item.Id"></el-option>
                         </el-select>
                     </el-form-item>
-                    <el-form-item prop="variety" label="关联品种" v-if="classifyForm.parent_id&&permissionBtn.classifyBtn.classifyList_cnClassify_connect_variety">
+                    <!-- 关联品种 -->
+                    <el-form-item prop="variety" :label="$t('ReportManage.CategoryList.related_variety')" v-if="classifyForm.parent_id&&permissionBtn.classifyBtn.classifyList_cnClassify_connect_variety">
                         <template slot="label">
-                            <el-tooltip class="item" effect="dark" content="控制报告阅读权限">
+                            <el-tooltip class="item" effect="dark" :content="$t('ReportManage.CategoryList.related_variety_hint')">
                                 <div>
-                                    <span>关联品种</span>
+                                    <span>{{ $t('ReportManage.CategoryList.related_variety') }}</span>
                                     <i class="el-icon-info"></i>
                                 </div>
                             </el-tooltip>
@@ -89,7 +114,7 @@
                         <el-cascader
                             :options="reportVarietyList" 
                             v-model="classifyForm.variety" 
-                            placeholder="请选择"
+                            :placeholder="$t('ReportManage.CategoryList.related_variety_inputhint')"
                             collapse-tags
                             :props="{value:'PermissionId',label:'PermissionName',children:'Child',multiple: true,emitPath:false}" 
                             style="min-width:400px;"
@@ -101,12 +126,12 @@
                 <el-button
                 @click="cancelClassify"
                 style="width: 132px; height: 40px"
-                >取消</el-button>
+                >{{ $t('Dialog.cancel_btn') }}</el-button>
                 <el-button
                 @click="setClassifyHandle"
                 type="primary"
                 style="width: 132px; height: 40px"
-                >保存</el-button>
+                >{{ $t('Dialog.confirm_save_btn') }}</el-button>
             </div>
         </m-dialog>
     </div>
@@ -133,7 +158,7 @@ export default {
                 variety:'',//关联的品种
             },
             formRules: {
-                classify_name: [{ required:true,message:'请输入分类名称',trigger:'blur'}]
+                classify_name: [{ required:true,message:this.$t('ReportManage.CategoryList.category_name_hint'),trigger:'blur'}]
             },
             classifyparentArr:[],
 
@@ -211,7 +236,12 @@ export default {
                 : await classifyadd(params)
 
             if(Ret !== 200) return
-            this.$message.success(Msg)
+            //this.$message.success(Msg)
+            this.$message.success(
+                classify_id
+                ?this.$t('ReportManage.CategoryList.modification_successful')
+                :this.$t('ReportManage.CategoryList.addition_successful')
+            )
             this.cancelClassify();
             this.getList();
         },
@@ -240,7 +270,8 @@ export default {
                 Enabled:item.Enabled==1?0:1
             }).then(res=>{
                 if(res.Ret===200){
-                    this.$message.success('设置成功')
+                    //设置成功
+                    this.$message.success(this.$t('ReportManage.CategoryList.setup_successful'))
                     this.getList()
                 }
             })
@@ -282,7 +313,7 @@ export default {
             console.log(params);
             classifyPermissionInterface.moveSort(params).then(res=>{
                 if(res.Ret===200){
-                    this.$message.success('移动成功')
+                    this.$message.success(this.$t('ReportManage.CategoryList.move_successful'))
                 }else{
                     this.getList()
                 }
@@ -323,6 +354,7 @@ export default {
             min-width: 88px;
             line-height: 60px;
             text-align: center;
+           
         }
         .active{
             color: #0052D9;

+ 22 - 13
src/views/dataEntry_manage/addChart.vue

@@ -133,9 +133,9 @@
 							:placeholder="$t('Chart.InputHolderAll.input_common',{label:$t('Chart.Detail.chart_unit')})">
 							<el-option
 								v-for="item in UnitOptions"
-								:key="item"
-								:label="item"
-								:value="item">
+								:key="item.label"
+								:label="item.label"
+								:value="item.value">
 							</el-option>
 						</el-select>
 					</el-form-item>
@@ -669,7 +669,7 @@
 <script>
 import { dataBaseInterface } from '@/api/api.js';
 import { chartSetMixin } from './mixins/chartPublic';
-import {unitArr} from '@/utils/defaultOptions.js';
+import {unitSelectList} from '@/utils/defaultOptions.js';
 import addOrEditMixn from './mixins/addOreditMixin';
 import Chart from './components/chart';
 import DateChooseDia from './components/DateChooseDia';
@@ -746,7 +746,10 @@ export default {
 	computed: {
 		roleName() {
 			return localStorage.getItem('userName');
-		}
+		},
+        UnitOptions(){
+            return unitSelectList()
+        }
 	},
 	mixins: [chartSetMixin,addOrEditMixn],
   data() {
@@ -761,7 +764,7 @@ export default {
 			needWatch: true,
 			IsNameDefault:true,
 
-			UnitOptions:unitArr,
+			/* UnitOptions:unitArr, */
 
 			useUnit:''
 
@@ -770,20 +773,24 @@ export default {
   methods: {
 		/* 保存 */
 		saveHandle() {
-			if(!this.tableData.length) return this.$message.warning('暂未选择指标');
+			if(!this.tableData.length) 
+				return this.$message.warning(/* '暂未选择指标' */this.$t('ToolBox.CommodityPriceChart.tips_msg05'));
 			console.log(this.chartInfo)
 			this.$refs.diaForm.validate((valid) => {
 				if(valid) {
 					// 季节图只允许添加一个指标
-					if(this.chartInfo.ChartType === 2 && this.tableData.length > 1) return this.$message.warning('您选择的图表样式为季节性图表,只支持单指标画图');
+					if(this.chartInfo.ChartType === 2 && this.tableData.length > 1) 
+						return this.$message.warning(/* '您选择的图表样式为季节性图表,只支持单指标画图' */this.$t('Chart.OptMsg.season_one_msg'));
 
-					else if([7,11].includes(this.chartInfo.ChartType)  && !this.$refs.BarOptRef.dateList.length)  return this.$message.warning('请添加日期');
+					else if([7,11].includes(this.chartInfo.ChartType)  && !this.$refs.BarOptRef.dateList.length)  
+						return this.$message.warning(/*'请添加日期'*/this.$t('ToolBox.CommodityPriceChart.tips_msg06'));
 
-					else if(this.chartInfo.ChartType === 10 && !this.$refs.SectionScatterOptRef.seriesArr[0].edbs)  return this.$message.warning('请添加系列指标');
+					else if(this.chartInfo.ChartType === 10 && !this.$refs.SectionScatterOptRef.seriesArr[0].edbs)  
+						return this.$message.warning(/* '请添加系列指标' */this.$t('Chart.OptMsg.season_add_hint'));
 
 					if(this.chartInfo.ChartType === 2){
 						if(!(this.SeasonExtraConfig.XStartDate && this.SeasonExtraConfig.XEndDate)){
-							return this.$message.warning('横坐标显示范围不能为空');
+							return this.$message.warning(/* '横坐标显示范围不能为空' */this.$t('Chart.OptMsg.season_area_hint'));
 						}
 					}
 
@@ -816,12 +823,14 @@ export default {
 							const {IsConvert,ConvertType,ConvertValue} = this.updateData[i]
 							//计算方式是否合法
 							if(IsConvert&&!this.checkConver(ConvertType,ConvertValue)){
-								return this.$message.warning(`第${i+1}个指标数据转换不合法,请检查数值`)
+								//提示语:第${i+1}个指标数据转换不合法,请检查数值
+								return this.$message.warning(this.$t('EtaChartAddPage.data_transformation_list_hint',{num:i+1}))
 							}
 							//如果类型为对数,检测数据是否包含负数
 							if(IsConvert&&ConvertType===3){
 								if(!this.checkEdbData(this.tableData[i].DataList)){
-									return this.$message.warning(`第${i+1}个指标数据含有负数或0,无法进行对数运算,请检查`)
+									//提示语:第${i+1}个指标数据含有负数或0,无法进行对数运算,请检查
+									return this.$message.warning(this.$t('EtaChartAddPage.data_transformation_list_hint2',{num:i+1}))
 								}
 							}
 						}

+ 11 - 8
src/views/dataEntry_manage/adjustdata/adjustData.vue

@@ -109,9 +109,9 @@
             >
               <el-option
                 v-for="item in frequencyArr"
-                :key="item"
-                :label="item"
-                :value="item"
+                :key="item.label"
+                :label="item.label"
+                :value="item.value"
               >
               </el-option>
             </el-select>
@@ -157,8 +157,8 @@
 
 <script>
 import {dataBaseInterface} from '@/api/modules/chartApi'
-import { formRules,frequencyArr } from '../databaseComponents/util';
-import { unitArr } from '@/utils/defaultOptions';
+import { formRules } from '../databaseComponents/util';
+import { unitArr,frequencySelectList } from '@/utils/defaultOptions';
 import { mapState } from 'vuex';
 export default {
   data() {
@@ -173,7 +173,7 @@ export default {
       },
       formRules,
       unitArr,
-      frequencyArr,
+      /* frequencyArr, */
       classifyOptions: [],
 
       searchOptions: [],
@@ -310,8 +310,11 @@ export default {
     },
 
      ...mapState({
-			currentLang: state => state.lang,	
-		})
+			currentLang: state => state.lang,
+		}),
+    frequencyArr(){
+        return frequencySelectList(['半年度'])
+    }
   },
 
   mounted() {

+ 17 - 6
src/views/dataEntry_manage/chartSetting.vue

@@ -683,6 +683,17 @@
                         v-if="scope.row.EdbType===2"
                       />
                     </span>
+                    <span v-else-if="item.key==='Frequency'">
+                        {{ currentLang==='en' 
+                            ? (scope.row[item.enKey]||getFrequencyTrans(scope.row[item.key])) 
+                            : getFrequencyTrans(scope.row[item.key]) 
+                        }}
+                    </span>
+                    <span v-else-if="item.key==='Unit'">
+                        {{ 
+                            currentLang==='en' 
+                                ? (scope.row[item.enKey]||getUnitTrans(scope.row[item.key])) 
+                                : getUnitTrans(scope.row[item.key]) }}</span>
                     <span v-else>{{ currentLang==='en' ? (scope.row[item.enKey]||scope.row[item.key]) : scope.row[item.key] }}</span>
                   </template>
                 </el-table-column>
@@ -1444,7 +1455,7 @@ export default {
         NextClassifyId:NextClassifyId
       }).then((res) => {
         if (res.Ret === 200) {
-          this.$message.success('移动成功!');
+          this.$message.success(this.$t('MsgPrompt.move_success_msg'));
         }
         this.getTreeData();
       });
@@ -1483,7 +1494,7 @@ export default {
         NextChartInfoId:NextChartInfoId
       }).then((res) => {
         if (res.Ret === 200) {
-          this.$message.success('移动成功!');
+          this.$message.success(this.$t('MsgPrompt.move_success_msg'));
         }
         this.getTreeData();
       });
@@ -1704,9 +1715,9 @@ export default {
         this.chartInfo.DateType === 5
           ? `${this.chartInfo.StartDate}~${this.chartInfo.EndDate}`
           : this.chartInfo.DateType === 6
-          ? `${this.chartInfo.StartDate}~至今`
+          ? /* `${this.chartInfo.StartDate}~至今` */ this.$t('Chart.data_tip_since',{date:this.chartInfo.StartDate})
           : this.chartInfo.DateType === 20
-          ?`最近${this.chartInfo.StartYear}年`
+          ?/* `最近${this.chartInfo.StartYear}年` */ this.$t('Chart.date_tip_count',{year:this.chartInfo.StartYear})
           :/* '请选择时间段' */this.$t('Chart.choose_time');
 
     },
@@ -2132,11 +2143,11 @@ export default {
 				this.select_date = [dateStart, dateEnd];
 
         if(data.dateType==20){
-          this.dateTip = `最近${data.count_year}年`
+          this.dateTip = /* `最近${data.count_year}年` */ this.$t('Chart.date_tip_count',{year:data.count_year})
         }else if (data.dateType === 5) {
           this.dateTip = `${data.start_date}~${data.end_date}`;
         } else {
-          this.dateTip = `${data.start_date}~至今`;
+          this.dateTip = /* `${data.start_date}~至今`; */ this.$t('Chart.data_tip_since',{date:data.start_date})
         }
       }
       this.getPreviewChartInfo();

+ 13 - 2
src/views/dataEntry_manage/coal/index.vue

@@ -155,7 +155,7 @@ export default {
       },
       classifyList: [],
       select_frequency: "",
-      frequencyType: new Map([
+      frequencyZhType: new Map([
         [1, "日度"],
         [2, "周度"],
         [3, "旬度"],
@@ -240,7 +240,7 @@ export default {
           CurrentIndex: this.page_no,
           ClassifyId: Number(this.select_classify),
           GroupName: this.select_classify_name,
-          Frequency: this.frequencyType.get(this.select_frequency),
+          Frequency: this.frequencyZhType.get(this.select_frequency),
         })
         .then((res) => {
           this.rightShow = true;
@@ -540,6 +540,17 @@ export default {
       urlStr += `&ModifyTime=${this.select_UpdateTime}`;
       return this.escapeStr(urlStr);
     },
+    frequencyType(){
+        return new Map([
+            [1, /* 日度 */ this.$t('Edb.FreAll.day')],
+            [2, /*周度*/ this.$t('Edb.FreAll.week')],
+            [3, /*旬度*/ this.$t('Edb.FreAll.dekad')],
+            [4, /*月度*/ this.$t('Edb.FreAll.month')],
+            [5, /*季度*/ this.$t('Edb.FreAll.quarter')],
+            [6, /*年度*/ this.$t('Edb.FreAll.year')],
+            [99, /*无固定频率*/ this.$t('Edb.FreAll.unfixed')],
+        ])
+    },
   },
   created() {},
   mounted() {

+ 9 - 7
src/views/dataEntry_manage/codecount/index.vue

@@ -53,9 +53,9 @@
 								style="width:220px">
 									<el-option
 										v-for="item in frequencyArr"
-										:key="item"
-										:label="item"
-										:value="item">
+										:key="item.label"
+										:label="item.label"
+										:value="item.value">
 									</el-option>
 								</el-select>
 							</el-form-item>
@@ -175,9 +175,8 @@
 
 <script>
 import { dataBaseInterface } from '@/api/api.js';
-import { unitArr } from '@/utils/defaultOptions';
+import { unitArr,frequencySelectList } from '@/utils/defaultOptions';
 import storage from '@/utils/storage.js';
-import { frequencyArr } from '../databaseComponents/util';
 import codeMirror from './compoments/codeMirror';
 import dataTable from './compoments/dataTable';
 import { mapState } from 'vuex';
@@ -187,7 +186,10 @@ export default {
 	computed: {
 		...mapState({
 			currentLang: state => state.lang,	
-		})
+		}),
+		frequencyArr(){
+			return frequencySelectList(['半年度'])
+		},
 	},
 	data () {
 		return {
@@ -196,7 +198,7 @@ export default {
 			fromType:"",
 			unitArr,
 			allFromArr:[],//所有指标来源
-			frequencyArr,
+			/* frequencyArr, */
 			menuOptions:[],//目录数组
 
 			search_txt: '',

+ 2 - 2
src/views/dataEntry_manage/components/DateChooseDia.vue

@@ -115,13 +115,13 @@ export default {
 		/* 确认时间 返回回调 */
 		saveHandle() {
 			if(this.radioType == 1 && (!parseInt(this.count_year))) {
-				this.$message.warning('请输入正确的数字')
+				this.$message.warning(/* '请输入正确的数字' */this.$t('EtaBasePage.time_duration_num'))
 				return 
 			}
 			// console.log(this.radioType,this.dateType,this.start_date,this.end_date,this.dates,this.count_year);
 
 			if(this.radioType == 2 && (!this.start_date || (!this.end_date && this.dateType === 2))) {
-				this.$message.warning('请选择正确的时间段')
+				this.$message.warning(/* '请选择正确的时间段' */this.$t('EtaBasePage.time_duration_type'))
 			}else {
 				this.$emit('dateBack',{
 					dateType: this.radioType==1?20:this.dateType === 1 ? 6 : 5,

+ 2 - 2
src/views/dataEntry_manage/components/LegendEditDia.vue

@@ -11,7 +11,7 @@
     <div class="dialog-legend">
       <div v-for="(item,index) in legendListCopy" :key="item.Name" class="legend-item">
         <div class="legend-item-color" :style="{backgroundColor:seasonColor[index]}"></div>
-        <el-input v-model.trim="item.Value" placeholder="请输入图例名称" style="width: 295px;"></el-input>
+        <el-input v-model.trim="item.Value" :placeholder="$t('EtaChartAddPage.legend_placeholder')" style="width: 295px;"></el-input>
       </div>
       <div class="legend-box-hint" v-html="$t('EtaChartAddPage.legend_hint')"></div>
     </div>
@@ -63,7 +63,7 @@ watch: {
 methods: {
   saveHandle() {
     if(this.legendListCopy.some(item=> !item.Value)){
-      this.$message.error("所有图例名称都不能为空")
+      this.$message.error(/* "所有图例名称都不能为空" */this.$t('EtaChartAddPage.legend_check_hint'))
       return
     }
     this.$emit('saveLegend',this.legendListCopy)

+ 8 - 7
src/views/dataEntry_manage/components/addMarkerDialog.vue

@@ -22,7 +22,7 @@
           <el-form-item :label="$t('EtaChartAddPage.label_select_serie')" prop="axis">
             <el-select 
               v-model="markerForm.axis"
-              placeholder="请选择日期坐标轴"
+              :placeholder="$t('EtaChartAddPage.label_select_seris_placeholder')"
               style="width:200px;"
               @change="markerForm.axisName=axisLabelMap[markerForm.axis]"
             >
@@ -300,6 +300,13 @@ export default {
     canSelectRightTwoYaxis() {
       return [1,6].includes(this.chartInfo.ChartType) && this.axisInfo.rightTwoIndex!=-1
     },
+    dashOptions(){
+        return [
+        { label: /* '实线' */ this.$t('EtaChartAddPage.section_line'),value: 'Solid',svg:`<g clip-path="url(#clip0_2634_4692)"><rect x="-14" y="4" width="116" height="2" fill="#333333"/></g><defs><clipPath id="clip0_2634_4692"><rect width="88" height="10" fill="white"/></clipPath></defs>` },
+        { label: /* '长虚线点' */this.$t('EtaChartAddPage.section_dash_long'),value: 'LongDashDot',svg:`<g clip-path="url(#clip0_2634_4933)"><circle cy="5" r="1" fill="#333333"/><rect x="2" y="4" width="13" height="2" rx="1" fill="#333333"/><circle cx="17" cy="5" r="1" fill="#333333"/><rect x="19" y="4" width="13" height="2" rx="1" fill="#333333"/><circle cx="34" cy="5" r="1" fill="#333333"/><rect x="36" y="4" width="13" height="2" rx="1" fill="#333333"/><circle cx="51" cy="5" r="1" fill="#333333"/><rect x="53" y="4" width="13" height="2" rx="1" fill="#333333"/><circle cx="68" cy="5" r="1" fill="#333333"/><rect x="70" y="4" width="13" height="2" rx="1" fill="#333333"/><circle cx="85" cy="5" r="1" fill="#333333"/><rect x="87" y="4" width="13" height="2" rx="1" fill="#333333"/></g><defs><clipPath id="clip0_2634_4933"><rect width="88" height="10" fill="white"/></clipPath></defs>` },
+        { label: /* '短虚线点' */this.$t('EtaChartAddPage.section_dash_short'),value: 'ShortDashDot',svg:`<g clip-path="url(#clip0_2634_4756)"><rect x="1" y="4" width="2" height="2" fill="#333333"/><rect x="4" y="4" width="5" height="2" fill="#333333"/><rect x="10" y="4" width="2" height="2" fill="#333333"/><rect x="13" y="4" width="5" height="2" fill="#333333"/><rect x="19" y="4" width="2" height="2" fill="#333333"/><rect x="22" y="4" width="5" height="2" fill="#333333"/><rect x="28" y="4" width="2" height="2" fill="#333333"/><rect x="31" y="4" width="5" height="2" fill="#333333"/><rect x="37" y="4" width="2" height="2" fill="#333333"/><rect x="40" y="4" width="5" height="2" fill="#333333"/><rect x="46" y="4" width="2" height="2" fill="#333333"/><rect x="49" y="4" width="5" height="2" fill="#333333"/><rect x="55" y="4" width="2" height="2" fill="#333333"/><rect x="58" y="4" width="5" height="2" fill="#333333"/><rect x="64" y="4" width="2" height="2" fill="#333333"/><rect x="67" y="4" width="5" height="2" fill="#333333"/><rect x="73" y="4" width="2" height="2" fill="#333333"/><rect x="76" y="4" width="5" height="2" fill="#333333"/><rect x="82" y="4" width="2" height="2" fill="#333333"/><rect x="85" y="4" width="5" height="2" fill="#333333"/></g><defs><clipPath id="clip0_2634_4756"><rect width="88" height="10" fill="white"/></clipPath></defs>` },
+      ]
+    }
   },
   data() {
     return {
@@ -328,12 +335,6 @@ export default {
         2: '右二轴',
         3: '横轴',
       },
-
-      dashOptions: [
-        { label: /* '实线' */ this.$t('EtaChartAddPage.section_line'),value: 'Solid',svg:`<g clip-path="url(#clip0_2634_4692)"><rect x="-14" y="4" width="116" height="2" fill="#333333"/></g><defs><clipPath id="clip0_2634_4692"><rect width="88" height="10" fill="white"/></clipPath></defs>` },
-        { label: /* '长虚线点' */this.$t('EtaChartAddPage.section_dash_long'),value: 'LongDashDot',svg:`<g clip-path="url(#clip0_2634_4933)"><circle cy="5" r="1" fill="#333333"/><rect x="2" y="4" width="13" height="2" rx="1" fill="#333333"/><circle cx="17" cy="5" r="1" fill="#333333"/><rect x="19" y="4" width="13" height="2" rx="1" fill="#333333"/><circle cx="34" cy="5" r="1" fill="#333333"/><rect x="36" y="4" width="13" height="2" rx="1" fill="#333333"/><circle cx="51" cy="5" r="1" fill="#333333"/><rect x="53" y="4" width="13" height="2" rx="1" fill="#333333"/><circle cx="68" cy="5" r="1" fill="#333333"/><rect x="70" y="4" width="13" height="2" rx="1" fill="#333333"/><circle cx="85" cy="5" r="1" fill="#333333"/><rect x="87" y="4" width="13" height="2" rx="1" fill="#333333"/></g><defs><clipPath id="clip0_2634_4933"><rect width="88" height="10" fill="white"/></clipPath></defs>` },
-        { label: /* '短虚线点' */this.$t('EtaChartAddPage.section_dash_short'),value: 'ShortDashDot',svg:`<g clip-path="url(#clip0_2634_4756)"><rect x="1" y="4" width="2" height="2" fill="#333333"/><rect x="4" y="4" width="5" height="2" fill="#333333"/><rect x="10" y="4" width="2" height="2" fill="#333333"/><rect x="13" y="4" width="5" height="2" fill="#333333"/><rect x="19" y="4" width="2" height="2" fill="#333333"/><rect x="22" y="4" width="5" height="2" fill="#333333"/><rect x="28" y="4" width="2" height="2" fill="#333333"/><rect x="31" y="4" width="5" height="2" fill="#333333"/><rect x="37" y="4" width="2" height="2" fill="#333333"/><rect x="40" y="4" width="5" height="2" fill="#333333"/><rect x="46" y="4" width="2" height="2" fill="#333333"/><rect x="49" y="4" width="5" height="2" fill="#333333"/><rect x="55" y="4" width="2" height="2" fill="#333333"/><rect x="58" y="4" width="5" height="2" fill="#333333"/><rect x="64" y="4" width="2" height="2" fill="#333333"/><rect x="67" y="4" width="5" height="2" fill="#333333"/><rect x="73" y="4" width="2" height="2" fill="#333333"/><rect x="76" y="4" width="5" height="2" fill="#333333"/><rect x="82" y="4" width="2" height="2" fill="#333333"/><rect x="85" y="4" width="5" height="2" fill="#333333"/></g><defs><clipPath id="clip0_2634_4756"><rect width="88" height="10" fill="white"/></clipPath></defs>` },
-      ],
     }
   },
   mounted(){

+ 66 - 60
src/views/dataEntry_manage/components/chartReleationEdbTable.vue

@@ -7,75 +7,81 @@
   >
     <el-table-column type="expand" v-if="![10,11].includes(chartInfo.ChartType)">
       <template slot-scope="{row,$index}">
-        <div class="expand-wrap">
-          <div class="data-change">
-            <el-checkbox v-model="updateData[$index].IsConvert">数据转换</el-checkbox>
-            <el-select v-model="updateData[$index].ConvertType">
-              <el-option label="乘以" :value="1"></el-option>
-              <el-option label="除以" :value="2"></el-option>
-              <el-option label="对数" :value="3"></el-option>
-            </el-select>
-          <el-input type="number" v-model="updateData[$index].ConvertValue"></el-input>
-          </div>
-          <div class="unit-change">
-            <label>单位</label>
-            <el-input v-model="updateData[$index].ConvertUnit"></el-input>
-            <label>英文单位</label>
-            <el-input v-model="updateData[$index].ConvertEnUnit"></el-input>
-          </div>
-          <!--柱形图-->
-          <div class="use-change" v-if="chartInfo.ChartType===7">
-            <el-radio v-model="useUnit" :label="$index">设置为图表单位</el-radio>
-          </div>
-          <div class="confirm-btn">
-            <el-button type="text" @click="changeTableData($index)">保存</el-button>
-          </div>
-        </div>
-      </template>
+            <div class="expand-wrap">
+                <div class="data-change">
+                    <!-- 数据转换 -->
+                    <el-checkbox v-model="updateData[$index].IsConvert">
+                        {{ $t('EtaChartAddPage.data_transformation') }}
+                    </el-checkbox>
+                    <!-- 乘以/除以/对数 -->
+                    <el-select v-model="updateData[$index].ConvertType">
+                        <el-option :label="$t('EtaChartAddPage.multiply_by')" :value="1"></el-option>
+                        <el-option :label="$t('EtaChartAddPage.divide_by')" :value="2"></el-option>
+                        <el-option :label="$t('EtaChartAddPage.logarithm')" :value="3"></el-option>
+                    </el-select>
+                <el-input type="number" v-model="updateData[$index].ConvertValue"></el-input>
+                </div>
+                <div class="unit-change">
+                    <label>{{ $t('Edb.Detail.e_unit') }}</label>
+                    <el-input v-model="updateData[$index].ConvertUnit"></el-input>
+                    <label>{{ $t('Edb.Detail.e_en_unit') }}</label>
+                    <el-input v-model="updateData[$index].ConvertEnUnit"></el-input>
+                </div>
+                <!--柱形图:设置为图表单位-->
+                <div class="use-change" v-if="chartInfo.ChartType===7">
+                    <el-radio v-model="useUnit" :label="$index">{{ $t('EtaChartAddPage.chart_set_radio') }}</el-radio>
+                </div>
+                <div class="confirm-btn">
+                    <el-button type="text" @click="changeTableData($index)">{{ $t('Dialog.confirm_save_btn') }}</el-button>
+                </div>
+            </div>
+        </template>
     </el-table-column>
     <el-table-column
-      v-for="item in tableColums"
-      :key="item.label"
-      :label="item.label"
-      :width="item.widthsty"
-      :min-width="item.minwidthsty"
-      align="center"
+        v-for="item in tableColums"
+        :key="item.label"
+        :label="item.label"
+        :width="item.widthsty"
+        :min-width="item.minwidthsty"
+        align="center"
     >
-      <template slot-scope="scope">
-        <div v-if="item.key === 'EdbName' && [1,4,6,7,11].includes(chartInfo.ChartType)">
-          <!-- 柱状图用别名 -->
-          <el-input 
-            v-model="scope.row.EdbAliasName"
-            placeholder="指标别名"
-            class="target-other-name"
-            clearable
-          />
-        </div>
-        <span v-else>{{ scope.row[item.key] }}</span>
-      </template>
+        <template slot-scope="scope">
+            <div v-if="item.key === 'EdbName' && [1,4,6,7,11].includes(chartInfo.ChartType)">
+                <!-- 柱状图用别名 -->
+                <el-input 
+                    v-model="scope.row.EdbAliasName"
+                    :placeholder="$t('OnlineExcelPage.indicator_alias_lbl')"
+                    class="target-other-name"
+                    clearable
+                />
+            </div>
+            <span v-else-if="item.key==='Frequency'">{{ getFrequencyTrans(scope.row.Frequency||'null') }}</span>
+            <span v-else-if="item.key==='Unit'">{{ getUnitTrans(scope.row.Unit) }}</span>
+            <span v-else>{{ scope.row[item.key] }}</span>
+        </template>
     </el-table-column>
     <el-table-column
-      :label="$t('Table.column_operations')"
-      key="Copy"
-      align="center"
-      width="140"
+        :label="$t('Table.column_operations')"
+        key="Copy"
+        align="center"
+        width="140"
     >
-      <template slot-scope="scope" v-if="scope.row.HaveOperaAuth">
-        <span @click="delTarget(scope.row)" class="deletesty"><!-- 删除 -->{{$t('Table.delete_btn')}}&nbsp;</span>
-        <span v-permission="permissionBtn.chartLibPermission.chartLib_copyData"
-          class="editsty" @click="copyCode(scope.row)">
-          <i class="el-icon-document-copy" />&nbsp;<!-- 复制数据 -->{{$t('Edb.detail_copydata_btn')}}</span
-        ><br>
-        <span v-permission="permissionBtn.chartLibPermission.chartLib_viewData"
-          class="editsty"
-          @click="viewTarget(scope.row)"
-        ><!-- 查看数据 -->{{$t('Edb.detail_lookdata_btn')}}</span>
-      </template>
+        <template slot-scope="scope" v-if="scope.row.HaveOperaAuth">
+            <span @click="delTarget(scope.row)" class="deletesty"><!-- 删除 -->{{$t('Table.delete_btn')}}&nbsp;</span>
+            <span v-permission="permissionBtn.chartLibPermission.chartLib_copyData"
+                class="editsty" @click="copyCode(scope.row)">
+                <i class="el-icon-document-copy" />&nbsp;<!-- 复制数据 -->{{$t('Edb.detail_copydata_btn')}}</span
+            ><br>
+            <span v-permission="permissionBtn.chartLibPermission.chartLib_viewData"
+                class="editsty"
+                @click="viewTarget(scope.row)"
+            ><!-- 查看数据 -->{{$t('Edb.detail_lookdata_btn')}}</span>
+        </template>
     </el-table-column>
     <div slot="empty">
-        <tableNoData :text="$t('Table.no_edb_msg')" size="mini"/>
+            <tableNoData :text="$t('Table.no_edb_msg')" size="mini"/>
     </div>
-  </el-table>
+</el-table>
 </template>
 <script>
 export default {

+ 1 - 1
src/views/dataEntry_manage/components/insertData.vue

@@ -21,7 +21,7 @@
       <dataLoading :loading="isLoading"/>
       
       <div class="download-ico">
-        <a :href="downloadTemplate" download="模板">
+        <a :href="`${downloadTemplate}${$i18nt.locale==='zh'?'':'/en'}`" download="模板">
           <i class="icon down_ico"></i>
           <span style="color: #5882ef; cursor: pointer">{{$t('ManualEntryPage.down_tem')}}</span>
         </a>

+ 14 - 7
src/views/dataEntry_manage/dataEntry.vue

@@ -116,6 +116,9 @@
                       >
                       <span v-else>{{ data[item] }}</span>
                     </template>
+                    <template v-else-if="item === 'Frequency'">
+                        {{ frequencyList.find(i=>i.value===data[item])?frequencyList.find(i=>i.value===data[item]).label:'' }}
+                    </template>
                     <template v-else>{{ data[item] }}</template>
                   </div>
                   <div v-else>
@@ -125,7 +128,7 @@
                         v-model="data[item]"
                         filterable
                         remote
-                        placeholder="请输入关键词"
+                        :placeholder="$t('Edb.InputHolderAll.input_keyword')"
                         :remote-method="handleTableHeadSearch"
                         @change="handleTableSelect(sub_index, $event)"
                         @visible-change="handleTableSelectshow"
@@ -166,7 +169,7 @@
                     type="date"
                     :data-rindex="rindex"
                     :data-cindex="-1"
-                    placeholder="选择日期"
+                    :placeholder="$t('Edb.InputHolderAll.input_date')"
                     :clearable="false"
                     :editable="false"
                     value-format="yyyy-MM-dd"
@@ -208,11 +211,11 @@
         </div>
         <div class="frequency-wrap" v-if="showFrequency">
           <span
-            :class="['item', { active: frequency === item }]"
+            :class="['item', { active: frequency === item.value }]"
             v-for="item in frequencyList"
-            :key="item"
-            @click="handleFrequencyChange(item)"
-            >{{ item }}</span>
+            :key="item.value"
+            @click="handleFrequencyChange(item.value)"
+            >{{ item.label }}</span>
         </div>
       </div>
     </div>
@@ -248,6 +251,7 @@ import { dataAuthInterface, dataInterence } from "@/api/api.js";
 import insertData from "./components/insertData";
 import http from "@/api/http";
 import { router } from "../../main";
+import {frequencySelectList} from '@/utils/defaultOptions';
 export default {
   name: "dataEntry",
   components: { insertData },
@@ -278,7 +282,7 @@ export default {
 
       classifyList: [],
       selectClassifyId: null,
-      frequencyList: ["日度", "周度", "旬度", "月度", "季度", "半年度", "年度"],
+      //frequencyList: ["日度", "周度", "旬度", "月度", "季度", "半年度", "年度"],
       frequency: "日度",
       showFrequency: true,
 
@@ -327,6 +331,9 @@ export default {
     role() {
       return localStorage.getItem("Role") || "";
     },
+    frequencyList(){
+        return frequencySelectList()
+    },
   },
 
   watch: {

+ 18 - 11
src/views/dataEntry_manage/databaseComponents/addTargetDiaBase.vue

@@ -10,12 +10,12 @@
 				<div class="dialog-top" >
 					<div>
 						<span>{{$t('Edb.Detail.source')}}</span>
-						<el-select v-model="fromType" placeholder="请选择来源" style="width:240px;margin-left:10px" @change="changeTrade"
+						<el-select v-model="fromType" :placeholder="$t('EtaBasePage.no_source_msg')" style="width:240px;margin-left:10px" @change="changeTrade"
 							:disabled="haveResult">
-							<el-option v-for="item in fromArr" :key="item" :label="item" :value="item">
+							<el-option v-for="item in fromArr" :key="item.value" :label="item.label" :value="item.value">
 							</el-option>
 						</el-select>
-						<el-select v-model="fromDatabase" placeholder="请选择数据库" style="width:240px;margin-left:10px"
+						<el-select v-model="fromDatabase" :placeholder="$t('EtaBasePage.no_database_msg')" style="width:240px;margin-left:10px"
 							:disabled="haveResult" v-if="hasDateSequence">
 							<el-option v-for="item in databaseType" :key="item.value" :label="item.label" :value="item.value">
 							</el-option>
@@ -24,8 +24,8 @@
 
 					<!-- 路透增加频度选择 -->
 					<el-select v-model="rtrFromFrequency" placeholder="请选择频度" v-if="fromType==='路透'">
-						<el-option :label="item" :value="item"
-						v-for="item in frequencyArr" :key="item"></el-option>
+						<el-option :label="item.label" :value="item.value"
+						v-for="item in frequencySelectList" :key="item.value"></el-option>
 					</el-select>
 
 					<el-input v-show="isCompanyCode" :placeholder="$t('EtaBasePage.complany_pholder')" v-model="search_company_txt" style="maxWidth:340px;"
@@ -146,8 +146,8 @@
 									</template>
 									<template v-else-if="item === 'Frequency'">
 										<el-select v-model="data[item]" :placeholder="$t('Edb.InputHolderAll.input_fre')" size="mini" :disabled="!data.Source">
-											<el-option :label="item" :value="item"
-											v-for="item in frequencyArr" :key="item"></el-option>
+											<el-option :label="item.label" :value="item.value"
+											v-for="item in frequencySelectList" :key="item.label"></el-option>
 										</el-select>
 									</template>
 									<template v-else-if="item === 'EdbName'">
@@ -200,6 +200,7 @@
 <script>
 import { dataBaseInterface,dataInterence } from '@/api/api.js'
 import { frequencyArr,windCommonIndexCodeArr,THSCommonIndexStockCodeArr,THSCommonIndexFuturesCodeArr} from './util';
+import { frequencySelectList } from '@/utils/defaultOptions';
 export default {
 	name: '',
 	props: {
@@ -234,6 +235,9 @@ export default {
 			}else if(this.fromType=='同花顺'){
 				return this.$t('EtaBasePage.edb_ifind_tip')
 			}
+		},
+		frequencySelectList(){
+			return frequencySelectList(['半年度'])
 		}
 	},
 	data() {
@@ -377,7 +381,7 @@ export default {
 				this.loading = this.$loading({
 					lock: true,
 					target: '.dialog-main',
-					text: '搜索数据中...',
+					text: /* '搜索数据中...' */this.$t('EtaBasePage.search_hint'),
 					spinner: 'el-icon-loading',
 					background: 'rgba(255, 255, 255, 0.8)'
 				});
@@ -475,7 +479,10 @@ export default {
 				if(res.Ret!==200) return
 				if(res.Data){
 					this.fromArr = res.Data.map(i=>{
-						return i.SourceName
+						return {
+							label:this.$i18nt.locale==='zh'?i.SourceName:i.SourceNameEn||i.SourceName,
+							value:i.SourceName
+						}
 					})
 					this.fromCode = new Map(res.Data.map(i=>{
 						return [i.SourceName,i.EdbSourceId]
@@ -627,7 +634,7 @@ export default {
 				return (it.StockCode && it.EdbCode) && ((!it.ClassifyId) || (!it.Unit) || (!it.Frequency) || (!it.EdbName))
 			})
 			if(flag){
-				this.$message.warning("指标信息未填写完整")
+				this.$message.warning(/* "指标信息未填写完整" */this.$t('BloombergPage.add_edb_check_hint1'))
 				return 
 			}
 			this.BatchList.map((it,ind) => {
@@ -640,7 +647,7 @@ export default {
 			})
 			dataBaseInterface.edbAddBatch({BatchList:this.BatchList}).then(res=>{
 				if(res.Ret == 200){
-					this.$message.success("添加指标成功")
+					this.$message.success(/* "添加指标成功" */this.$t('MsgPrompt.add_msg2'))
 					this.$emit('addSuccessHandle',{ code:res.Data.UniqueCode,id:res.Data.EdbInfoId,classifyId:res.Data.ClassifyId })	
 					this.cancelHandle()	
 				}else if(res.Ret == 403){

+ 43 - 15
src/views/dataEntry_manage/databaseComponents/batchComputedSave.vue

@@ -5,10 +5,10 @@
             border 
             height="500px"
         >
-            <el-table-column label="指标全称" align="center" :prop="$parent.currentLang==='en'?'EdbNameEn':'EdbName'"/>
-            <el-table-column label="生成指标名称" align="center">
+            <el-table-column :label="$t('EtaBasePage.full_metric_name')" align="center" :prop="$parent.currentLang==='en'?'EdbNameEn':'EdbName'"/>
+            <el-table-column :label="$t('EtaBasePage.gen_metric_name_label')" align="center">
                 <template slot-scope="scope">
-                    <el-input :disabled="operationForm.view" v-model="scope.row.name" placeholder="请填写指标名称" style="width:100%"/>
+                    <el-input :disabled="operationForm.view" v-model="scope.row.name" :placeholder="$t('EtaBasePage.metric_name_input')" style="width:100%"/>
                 </template>
             </el-table-column>
             <el-table-column label="单位" align="center" width="200px">
@@ -16,11 +16,11 @@
                     <selectUnit :disabled="operationForm.view||[6].includes(sourceTypeVal)" v-model="scope.row.unit"/>
                 </template>
             </el-table-column>
-            <el-table-column label="频度" align="center" width="200px">
+            <el-table-column :label="$t('Edb.Detail.e_fre')" align="center" width="200px">
                 <template slot-scope="scope">
                     <el-select
 						v-model="scope.row.frequency"
-						placeholder="请选择频率"
+						:placeholder="$t('EtaBasePage.select_frequency')"
                         @change="handleFrequencyChange(scope)"
                         :disabled="operationForm.view||[5,6,14,61,63].includes(sourceTypeVal)"
 					>
@@ -32,14 +32,14 @@
 						>
 						</el-option>
 					</el-select>
-                </template>
+                </template>              
             </el-table-column>
             <el-table-column align="center" width="300px">
                 <template slot="header" slot-scope="scope">
-                    <span style="margin-right:40px;display:inline-block">目录</span>
+                    <span style="margin-right:40px;display:inline-block"> <!-- 目录 -->{{$t('EtaBasePage.catalogue_directory')}}</span>
                     <el-radio-group :disabled="operationForm.view" v-model="classifyType" @change="handleClassifyTypeChange">
-                        <el-radio :label="0">分目录</el-radio>
-                        <el-radio :label="1">同目录</el-radio>
+                        <el-radio :label="0"><!-- 分目录 -->{{$t('EtaBasePage.subdirectory_radio')}}</el-radio>
+                        <el-radio :label="1"><!-- 同目录 -->{{$t('EtaBasePage.directory_radio')}}</el-radio>
                     </el-radio-group>
                 </template>
                 <template slot-scope="{row,$index}">
@@ -47,7 +47,7 @@
 						v-model="row.classify"
 						:options="classifyOpt"
 						:props="levelProps"
-						placeholder="请选择指标目录"
+						:placeholder="$t('Edb.InputHolderAll.input_menu')"
                         :disabled="(classifyType===1&&$index>0)||operationForm.view"
                         @change="handleClassifyChange(row,$index)"
 					/>
@@ -55,8 +55,8 @@
             </el-table-column>
         </el-table>
         <div style="text-align:center;margin:60px 0 40px 0" v-if="!operationForm.view">
-            <el-button type="primary" plain @click="handleClose">取消</el-button>
-            <el-button type="primary" @click="handleSubmit" :loading="loading">{{loading ? '批量计算中...' : '批量计算'}}</el-button>
+            <el-button type="primary" plain @click="handleClose">{{$t('Dialog.cancel_btn')}}</el-button>
+            <el-button type="primary" @click="handleSubmit" :loading="loading">{{loading ? $t('EtaBasePage.calculating_batch') : $t('EtaBasePage.batch_calculate_tab')}}</el-button>
         </div>
     </div>
 </template>
@@ -81,13 +81,41 @@ export default {
             if(this.subComputedType) return this.subComputedType
             return ['withNum','withEDB'].includes(this.computedType)?4:this.computedType
         },
+      frequencyArr (){
+            return [
+                {
+					value: '日度',
+					label: /* '日度'  */this.$t('Edb.FreAll.day'),
+				},
+				{
+					value: '周度',
+					label: /* '周度' */this.$t('Edb.FreAll.week'),
+				},
+				{
+					value: '旬度',
+					label: /* '旬度' */this.$t('Edb.FreAll.dekad'),
+				},
+				{
+					value: '月度',
+					label: /* '月度' */this.$t('Edb.FreAll.month'),
+				},
+				{
+					value: '季度',
+					label: /* '季度' */ this.$t('Edb.FreAll.quarter'),
+				},
+				
+				{
+					value: '年度',
+					label: /* '年度' */ this.$t('Edb.FreAll.year'),
+				}
+            ]
+        },
         currentLang() {
 			return this.$store.state.lang
 		}
     },
     data() {
         return {
-            frequencyArr: ['日度', '周度','旬度','月度', '季度', '年度'],
 
             list:[],
 
@@ -281,11 +309,11 @@ export default {
             console.log(params);
 
             let isEnough = params.EdbList.every(item => item.EdbName&&item.Unit&&item.ClassifyId&&item.Frequency)
-            if(!isEnough) return this.$message.warning('请填写完整信息');
+            if(!isEnough) return this.$message.warning(/*'请填写完整信息'*/ this.$t('EtaBasePage.complete_information_msg'));
 
             this.loading=true
             const tipMsg=setTimeout(() => {
-                this.$message.success('请等待计算完成,该过程可能持续2-3分钟')
+                this.$message.success(/*''请等待计算完成,该过程可能持续2-3分钟''*/ this.$t('EtaBasePage.please_which_take_msg'))
             }, 500);
             const res=this.isEdit?await dataBaseInterface.batchCalculateTargetEdit(params) : await dataBaseInterface.batchCalculateTargetAdd(params)
             this.loading=false

+ 177 - 91
src/views/dataEntry_manage/databaseComponents/batchComputedV2.vue

@@ -8,14 +8,14 @@
 		center
 		top="5vh"
 		v-dialogDrag
-        :title="showSave?'批量计算-结果保存':'批量计算-选择指标和计算公式'"
+        :title="showSave ? $t('EtaBasePage.title_batch_save') : $t('EtaBasePage.title_batch_calc')"
 	>
         <div class="batch-computed-wrap" v-if="!showSave">
             <el-form inline :disabled="operationForm.view">
             <div class="type-wrap">
                 <div style="margin-right:50px">
-                    <span>计算公式</span>
-                    <el-select :disabled="isEdit" v-model="computedType" @change="handleComputedTypeChange" placeholder="请选择">
+                    <span><!-- 计算公式 -->{{$t('EtaBasePage.calculate_formula')}}</span>
+                    <el-select :disabled="isEdit" v-model="computedType" @change="handleComputedTypeChange" :placeholder="$t('Edb.please_select')">
                         <el-option 
                             v-for="opt in computedBatchTypes" 
                             :key="opt.type" 
@@ -28,40 +28,46 @@
                     <!-- 累计值转月/季值 -->
                     <el-form-item v-if="computedType=='toMonthSeason'">
                         <el-radio-group v-model="subComputedType" @change="handleComputedSubTypeChange">
-                            <el-radio :label="5">转月值</el-radio>
-                            <el-radio :label="61">转季值</el-radio>
+                            <el-radio :label="5">
+                                <!-- 转月值 -->
+                                {{$t('Edb.CalculatesAll.to_monthly_v2')}}
+                            </el-radio>
+                            <el-radio :label="61">
+                                <!-- 转季值 -->
+                                {{$t('Edb.CalculatesAll.to_quarterly_v2')}}
+                            </el-radio>
                         </el-radio-group>
                     </el-form-item>
 
                     <!-- N期移动均值、N期环比值、N期环差值 -->
-                    <el-form-item required v-if="[8,12,13].includes(computedType)" label="N等于" style="width:280px">
-                        <el-input v-model="formData.nNum" placeholder="请输入N数值" type="number" style="width:200px"></el-input>
+                    <el-form-item required v-if="[8,12,13].includes(computedType)" :label="$t('EtaBasePage.label_n_val')" style="width:280px">
+                        <el-input v-model="formData.nNum" :placeholder="$t('Edb.InputHolderAll.input_n_value')" type="number" style="width:200px"></el-input>
                     </el-form-item>
 
                     <!-- 超级季节性 -->
                     <template v-if="computedType==35">
-                    <el-form-item required label="N等于" style="width:280px">
-                        <el-input v-model="formData.nNum" placeholder="请输入N数值" type="number" style="width:200px"></el-input>
+                    <el-form-item required :label="$t('EtaBasePage.label_n_val')" style="width:280px">
+                        <el-input v-model="formData.nNum" :placeholder="$t('Edb.InputHolderAll.input_n_value')" type="number" style="width:200px"></el-input>
                     </el-form-item>
-                    <el-form-item label="日历"  style="width:180px">
+                    <el-form-item :label="$t('EtaBasePage.label_calendar')"  style="width:180px">
                         <el-select v-model="formData.calendarType" style="width:120px">
-                            <el-option label="公历" value="公历"></el-option>
-                            <el-option label="农历" value="农历"></el-option>
+                            <el-option :label="$t('Chart.calendar_gre')" value="公历"></el-option>
+                            <el-option :label="$t('Chart.calendar_lunar')" value="农历"></el-option>
                         </el-select>
                     </el-form-item>
                     </template>
 
                     <!-- 降频 -->
                     <template v-if="computedType==51">
-                    <el-form-item required label="频度" style="width:180px">
+                    <el-form-item required :label="$t('Edb.Detail.e_fre')" style="width:180px">
                         <el-select v-model="formData.frequency" style="width:120px">
-                            <el-option v-for="opt in frequencyArr" :key="opt" :label="opt" :value="opt"></el-option>
+                            <el-option v-for="opt in frequencyArr" :key="opt.value" :label="opt.label" :value="opt.value"></el-option>
                         </el-select>
                     </el-form-item>
-                    <el-form-item label="数据取值"  style="width:200px">
+                    <el-form-item :label="$t('EtaBasePage.label_val_type')"  style="width:200px">
                         <el-select v-model="formData.valueType" style="width:120px">
-                            <el-option key="期末值" label="期末值" value="期末值"/>
-							<el-option key="平均值" label="平均值" value="平均值"/>
+                            <el-option key="期末值" :label="$t('EtaBasePage.val_type_end')" value="期末值"/>
+							<el-option key="平均值" :label="$t('EtaBasePage.val_type_average')" value="平均值"/>
                         </el-select>
                     </el-form-item>
                     </template>
@@ -69,48 +75,57 @@
                     <!-- 累计值 -->
                     <template v-if="computedType=='accumulate'">
                     <el-form-item>
-                        <el-radio v-model="subComputedType" :label="62">累计值</el-radio>
+                        <el-radio v-model="subComputedType" :label="62">
+                            <!-- 累计值 -->
+                            {{$t('Edb.CalculatesAll.cumulate')}}
+                        </el-radio>
                     </el-form-item>
-                    <el-form-item required label="频度" style="width:180px" v-if="subComputedType==62">
+                    <el-form-item required :label="$t('Edb.Detail.e_fre')" style="width:180px" v-if="subComputedType==62">
                         <el-select v-model="formData.frequency" style="width:120px">
-                            <el-option v-for="opt in frequencyArr" :key="opt" :label="opt" :value="opt"></el-option>
+                            <el-option v-for="opt in frequencyArr" :key="opt.value" :label="opt.label" :value="opt.value"></el-option>
                         </el-select>
                     </el-form-item>
-                    <el-form-item label="最新值处理"  style="width:210px" v-if="subComputedType==62">
+                    <el-form-item :label="$t('Edb.CalculatesAll.latest_processing')"  style="width:210px" v-if="subComputedType==62">
                         <el-select v-model="formData.newValue" style="width:120px">
-                            <el-option label="默认" :value="0"/>
-							<el-option label="均值填充" :value="1"/>
+                            <el-option :label="$t('EtaBasePage.default_select_text')" :value="0"/>
+							<el-option :label="$t('EtaBasePage.mean_imputation_select_text')" :value="1"/>
                         </el-select>
                     </el-form-item>
                     <el-form-item>
-                        <el-radio v-model="subComputedType" :label="63">年初至今累计值</el-radio>
+                        <el-radio v-model="subComputedType" :label="63">
+                            <!-- /* '年初至今累计值' */ -->
+                            {{$t('Edb.CalculatesAll.cumulate_oneyear')}}
+                        </el-radio>
                     </el-form-item>
                     </template>
 
                     <!-- 指数修匀 -->
                     <template v-if="computedType==72">
-                    <el-form-item required label="alpha值" style="width:220px">
-                        <el-input v-model.trim="formData.alphaValue" style="width:140px" placeholder="请输入alpha值"></el-input>
+                    <el-form-item required :label="$t('EtaBasePage.alpha_value_lable')" style="width:220px">
+                        <el-input v-model.trim="formData.alphaValue" style="width:140px" :placeholder="$t('Edb.InputHolderAll.input_alpha_val')"></el-input>
                     </el-form-item>
                     </template>
 
                     <!-- 与常数计算 -->
                     <template v-if="computedType=='withNum'">
-                    <el-form-item required label="公式">
-                        <el-input v-model="formData.formula" placeholder="请输入公式" clearable style="width: 200px"/>
-                        <span>公式示例:A+100,或A*2</span>
+                    <el-form-item required :label="$t('EtaBasePage.formula_lable')">
+                        <el-input v-model="formData.formula" :placeholder="$t('EtaBasePage.input_formula_msg')" clearable style="width: 200px"/>
+                        <span>
+                            <!-- 公式示例:A+100,或A*2 -->
+                            {{$t('EtaBasePage.formula_example_text')}}
+                        </span>
                     </el-form-item>
                     </template>
 
                     <!-- 与单指标计算 -->
                     <template v-if="computedType=='withEDB'">
-                    <el-form-item required label="指标B">
+                    <el-form-item required :label="$t('EtaBasePage.metric_label_b')">
                         <el-select
                             v-model="select_target"
                             v-loadMore="searchLoad"
                             :filterable="!select_target"
                             clearable
-                            placeholder="请输入指标名称"
+                            :placeholder="$t('Edb.InputHolderAll.input_name')"
                             style="width: 250px"
                             remote
                             :remote-method="getTarget"
@@ -139,24 +154,27 @@
                             </el-option>
                         </el-select>
                     </el-form-item>
-                    <el-form-item required label="公式">
-                        <el-input v-model="formData.formula" placeholder="请输入公式" clearable style="width: 200px"/>
-                        <span>公式示例:A+B,或A/B,A/(A+B)</span>
+                    <el-form-item required :label="$t('EtaBasePage.formula_lable')">
+                        <el-input v-model="formData.formula" :placeholder="$t('EtaBasePage.input_formula_msg')" clearable style="width: 200px"/>
+                        <span>
+                            <!-- 公式示例:A+B,或A/B,A/(A+B) -->
+                         {{$t('EtaBasePage.formula_example_text_a_b')}}
+                        </span>
                     </el-form-item>
-                    <el-form-item label="生成指标时间序列">
+                    <el-form-item :label="$t('EtaBasePage.create_edb_time_index')">
                         <el-cascader
 							v-model="formData.timeSeriesVal"
 							style="width:180px"
 							:options="timeSeriesOpt"
 							:props="{emitPath:false}"
 							:show-all-levels="false"
-							placeholder="请选择"
+							:placeholder="$t('Edb.please_select')"
 						></el-cascader>
                     </el-form-item>
-                    <el-form-item label="空值处理">
+                    <el-form-item :label="$t('EtaBasePage.null_val_deal')">
                         <el-select
 							v-model="formData.nullValueWay"
-							placeholder="请选择"
+							:placeholder="$t('Edb.please_select')"
                             style="width:180px"
 						>
 							<el-option
@@ -168,12 +186,12 @@
 							</el-option>
 						</el-select>
                     </el-form-item>
-                    <el-form-item label="MAX、MIN空值处理" v-if="showMaxNullDeal">
+                    <el-form-item :label="$t('EtaBasePage.max_null_val')" v-if="showMaxNullDeal">
                         <el-select
 							v-model="formData.maxNullWay"
-							placeholder="请选择"
+							:placeholder="$t('Edb.please_select')"
 						>
-							<el-option label="等于0" :value="1" />
+							<el-option :label="$t('EtaBasePage.equal_zeto')" :value="1" />
 							<el-option label="跳过空值" :value="2" />
 						</el-select>
                     </el-form-item>
@@ -183,24 +201,24 @@
                     <template v-if="computedType=='multipleEDB'">
                     <el-form-item style="margin-right:30px">
                     <el-radio-group :disabled="isEdit" v-model="subComputedType">
-                        <el-radio :label="81">求和</el-radio>
-                        <el-radio :label="82">求平均</el-radio>
+                        <el-radio :label="81"><!--  -->{{$t('EtaBasePage.sum_radio_label')}}</el-radio>
+                        <el-radio :label="82"><!-- 求平均 -->{{$t('EtaBasePage.average_radio_label')}}</el-radio>
                     </el-radio-group>
                     </el-form-item>
-                    <el-form-item label="生成指标时间序列">
+                    <el-form-item :label="$t('EtaBasePage.create_edb_time_index')">
                         <el-cascader
 							v-model="formData.timeSeriesVal"
 							style="width:180px"
 							:options="timeSeriesOpt"
 							:props="{emitPath:false}"
 							:show-all-levels="false"
-							placeholder="请选择"
+							:placeholder="$t('Edb.please_select')"
 						></el-cascader>
                     </el-form-item>
-                    <el-form-item label="空值处理">
+                    <el-form-item :label="$t('EtaBasePage.null_val_deal')">
                         <el-select
 							v-model="formData.nullValueWay"
-							placeholder="请选择"
+							:placeholder="$t('Edb.please_select')"
                             style="width:180px"
 						>
 							<el-option
@@ -219,7 +237,10 @@
             </div>
             </el-form>
             <div class="filter-wrap" style="margin-top:20px">
-                <p style="margin-bottom:10px">待选指标(选择指标数量不超过{{MAXAddNUM}})</p>
+                <p style="margin-bottom:10px">
+                    <!-- 待选指标(选择指标数量不超过{{MAXAddNUM}}) -->
+                    {{$t('EtaBasePage.pending_metrics',{num:MAXAddNUM})}}
+                </p>
                 <div>
                     <el-cascader
 						v-model="filter.classify"
@@ -227,13 +248,13 @@
 						:props="classifyProps"
 						clearable
                         collapse-tags
-						placeholder="指标分类"
+						:placeholder="$t('EtaBasePage.label_classify')"
                         style="width: 240px"
                         @change="handleFilter"
 					/>
                     <el-select
 						v-model="filter.frequency"
-						placeholder="请选择频率"
+						:placeholder="$t('EtaBasePage.select_frequency')"
 						style="width: 140px"
 						clearable
                         multiple
@@ -243,15 +264,15 @@
 					>
 						<el-option
 							v-for="item in frequencyArr"
-							:key="item"
-							:label="item"
-							:value="item"
+							:key="item.value"
+							:label="item.label"
+							:value="item.value"
 						>
 						</el-option>
 					</el-select>
                     <el-cascader
                         v-model="filter.user"
-                        placeholder="创建人"
+                        :placeholder="$t('EtaBasePage.table_col_creator')"
                         :options="sysUserOpts"
                         :props="sysUserProps"
                         collapse-tags
@@ -262,7 +283,7 @@
                         @change="handleFilter"
                     />
                     <el-input 
-                        placeholder="指标ID/指标名称" 
+                        :placeholder="$t('Edb.InputHolderAll.input_name_orid')" 
                         v-model="filter.keyword"
                         style="width: 200px"
                         @keydown.enter.native="handleFilter"
@@ -270,7 +291,7 @@
                         <i slot="prefix" class="el-input__icon el-icon-search"></i>
                     </el-input>
                     <el-checkbox 
-                        label="列表全选" 
+                        :label="$t('EtaBasePage.label_all_check')" 
                         v-model="isCheckAll" 
                         :indeterminate="isCheckIndeterminate" 
                         style="margin-left:10px"
@@ -293,12 +314,20 @@
                         v-loading="listLoading"
                     >
                         <el-table-column type="selection" min-width="50" align="center" :selectable="filterEdbAuth"/>
-                        <el-table-column label="指标全称" show-overflow-tooltip align="center" :prop="$parent.currentLang==='en'?'EdbNameEn':'EdbName'"/>
-                        <el-table-column label="最新日期" align="center" prop="EndDate" width="120px" />
-                        <el-table-column label="最新值" align="center" show-overflow-tooltip prop="EndValue" width="80px"/>
-                        <el-table-column label="创建人" align="center" show-overflow-tooltip prop="SysUserRealName" width="80px"/>
-                        <el-table-column label="频度" align="center" prop="Frequency" width="50px"/>
-                        <el-table-column label="单位" show-overflow-tooltip align="center" :prop="$parent.currentLang==='en'?'UnitEn':'Unit'" width="50px"/>
+                        <el-table-column :label="$t('EtaBasePage.full_metric_name')" show-overflow-tooltip align="center" :prop="$parent.currentLang==='en'?'EdbNameEn':'EdbName'"/>
+                        <el-table-column :label="$t('Edb.Detail.e_latest_date')" align="center" prop="EndDate" width="120px" />
+                        <el-table-column :label="$t('Edb.Detail.e_latest_value')" align="center" show-overflow-tooltip prop="EndValue" width="80px"/>
+                        <el-table-column :label="$t('EtaBasePage.table_col_creator')" align="center" show-overflow-tooltip prop="SysUserRealName" width="80px"/>
+                        <el-table-column :label="$t('Edb.Detail.e_fre')" align="center" prop="Frequency" width="50px">
+                            <template slot-scope="scope">
+                                <span>{{ getFrequencyTrans(scope.row.Frequency) }}</span>
+                            </template>
+                        </el-table-column>
+                        <el-table-column :label="$t('Edb.Detail.e_unit')" show-overflow-tooltip align="center" :prop="$parent.currentLang==='en'?'UnitEn':'Unit'" width="50px">
+                            <template slot-scope="scope">
+                                <span>{{ getUnitTrans(scope.row.Unit) }}</span>
+                            </template>
+                        </el-table-column>
                     </el-table>
                     <m-page 
                         style="margin-top:10px"
@@ -312,7 +341,10 @@
                     />
                 </div>
                 <div style="padding-top:200px;margin:0 30px">
-                    <el-button type="primary" :disabled="operationForm.view" :loading="addLoading" @click="getAddEdbListData">加入已选指标</el-button>
+                    <el-button type="primary" :disabled="operationForm.view" :loading="addLoading" @click="getAddEdbListData">
+                        <!-- 加入已选指标 -->
+                        {{$t('EtaBasePage.add_to_selections')}}
+                    </el-button>
                 </div>
                 <div class="right-box">
                     <el-table 
@@ -320,12 +352,12 @@
                         border 
                         height="500px"
                     >
-                        <el-table-column label="序号" width="50px" align="center" prop="No" v-if="computedType=='multipleEDB'">
+                        <el-table-column :label="$t('EtaBasePage.serial_num')" width="50px" align="center" prop="No" v-if="computedType=='multipleEDB'">
                             <template slot-scope="scope">
                                 {{scope.$index|getNoText}}
                             </template>
                         </el-table-column>
-                        <el-table-column label="指标全称" show-overflow-tooltip align="center" :prop="$parent.currentLang==='en'?'EdbNameEn':'EdbName'"/>
+                        <el-table-column :label="$t('EtaBasePage.full_metric_name')" show-overflow-tooltip align="center" :prop="$parent.currentLang==='en'?'EdbNameEn':'EdbName'"/>
                         <el-table-column width="50px" align="center" v-if="!operationForm.view">
                             <template slot="header" slot-scope="scope">
                                 <img @click="handleDelSelect('all')" style="width:15px;height:15px;cursor: pointer;" src="~@/assets/img/ai_m/delete.png" alt="">
@@ -338,8 +370,8 @@
                 </div>
             </div>
             <div style="text-align:center;margin:60px 0 40px 0">
-                <el-button type="primary" plain @click="handleCloseSelf">取消</el-button>
-                <el-button type="primary" @click="handleNextStep">下一步</el-button>
+                <el-button type="primary" plain @click="handleCloseSelf">{{$t('Dialog.cancel_btn')}}</el-button>
+                <el-button type="primary" @click="handleNextStep">{{$t('Dialog.next_step')}}</el-button>
             </div>
         </div>
         <!-- 结果保存 -->
@@ -360,7 +392,7 @@
 
 <script>
 import mPage from '@/components/mPage.vue'
-import {computedBatchTypesV2} from './util'
+import {computedBatchTypesV2,getBatchComputedTypesV2} from './util'
 import { dataBaseInterface,departInterence } from '@/api/api.js';
 import batchComputedSave from './batchComputedSave.vue';
 import {generateSeriesArray} from './util'
@@ -401,11 +433,13 @@ export default {
         timeSeriesOpt(){
             let arr=[
                 {
-                    label:`指标A`,
+                    // label:`指标A`,
+                    label:this.$t('EtaBasePage.edbTagA'),
                     value:'A'
                 },
                 {
-                    label:`指标B`,
+                    // label:`指标B`,
+                    label:this.$t('EtaBasePage.edbTagB'),
                     value:'B'
                 }
             ]
@@ -419,12 +453,14 @@ export default {
             }
             return [
                 {
-                    label:'指定指标时间序列',
+                    // label:'指定指标时间序列',
+                    lable:this.$t('EtaBasePage.specify_series_label'),
 					value:'0',
                     children:arr
                 },
                 {
-					label:'所有指标时间序列并集',
+					// label:'所有指标时间序列并集',
+                    lable:this.$t('EtaBasePage.union_series_label'),
 					value:'all',
 				}
             ]
@@ -432,9 +468,59 @@ export default {
 
         frequencyArr(){
             if(this.computedType==75){
-                return ['周度','旬度','月度', '季度', '年度']
+                
+                return [
+                {
+					value: '周度',
+					label: /* '周度' */this.$t('Edb.FreAll.week'),
+				},
+				{
+					value: '旬度',
+					label: /* '旬度' */this.$t('Edb.FreAll.dekad'),
+				},
+				{
+					value: '月度',
+					label: /* '月度' */this.$t('Edb.FreAll.month'),
+				},
+				{
+					value: '季度',
+					label: /* '季度' */ this.$t('Edb.FreAll.quarter'),
+				},
+				
+				{
+					value: '年度',
+					label: /* '年度' */ this.$t('Edb.FreAll.year'),
+				}]
             }
-            return ['日度', '周度','旬度','月度', '季度', '年度']
+            return [
+                {
+					value: '日度',
+					label: /* '日度'  */this.$t('Edb.FreAll.day'),
+				},
+				{
+					value: '周度',
+					label: /* '周度' */this.$t('Edb.FreAll.week'),
+				},
+				{
+					value: '旬度',
+					label: /* '旬度' */this.$t('Edb.FreAll.dekad'),
+				},
+				{
+					value: '月度',
+					label: /* '月度' */this.$t('Edb.FreAll.month'),
+				},
+				{
+					value: '季度',
+					label: /* '季度' */ this.$t('Edb.FreAll.quarter'),
+				},
+				
+				{
+					value: '年度',
+					label: /* '年度' */ this.$t('Edb.FreAll.year'),
+				}]
+        },
+        computedBatchTypes(){
+            return getBatchComputedTypesV2()
         }
     },
     watch: {
@@ -482,7 +568,7 @@ export default {
     data() {
         return {
             showSave:false,//显示结果保存模块
-            computedBatchTypes:computedBatchTypesV2,//计算类型筛选项
+            /* computedBatchTypes:computedBatchTypesV2,//计算类型筛选项 */
             computedType:computedBatchTypesV2[0].type,//当前选中的计算类型
             subComputedType:'',//二级计算类型
             formData:{
@@ -511,7 +597,6 @@ export default {
                 keyword:''
             },
 
-            // frequencyArr: ['日度', '周度','旬度','月度', '季度', '年度'],
             classifyOpt: [],
 			classifyProps: {
 				label: 'ClassifyName',
@@ -530,11 +615,12 @@ export default {
             },
 
             nullWayOptions: [
-				{ label: '查找前后35天最近值',value: 0 },
-				{ label: '不计算',value: 1 },
-				{ label: '前值填充',value: 2 },
-				{ label: '后值填充',value: 3 },
-				{ label: '等于0',value: 4 },
+               
+				{ label: /* '查找前后35天最近值' */  this.$t('EtaBasePage.null_val_deal_0'),value: 0 },
+				{ label: /* '不计算' */ this.$t('EtaBasePage.not_alculate_options'),value: 1 },
+				{ label: /* '前值填充' */this.$t('EtaBasePage.forward_fill_options'),value: 2 },
+				{ label: /* '后值填充' */this.$t('EtaBasePage.backward_fill_options') ,value: 3 },
+				{ label: /* '等于0' */this.$t('EtaBasePage.equal_zeto') ,value: 4 },
 			],
 
             isCheckAll:false,//是否全选
@@ -591,35 +677,35 @@ export default {
         // 跳转下一步
         handleNextStep(){
             if(this.selectList.length===0){
-                this.$message.warning('请选择指标')
+                this.$message.warning(/* "请选择指标"  */this.$t('Edb.InputHolderAll.input_select_edb'))
                 return
             }
             if([8,12,13,35].includes(this.computedType) && !this.formData.nNum){
-                this.$message.warning('请输入N数值')
+                this.$message.warning(/* "请输入N数值"  */ this.$t('Edb.InputHolderAll.input_n_value'))
                 return
             }
             if([51].includes(this.computedType)&& !this.formData.frequency){
-                this.$message.warning('请选择频度')
+                this.$message.warning(/*'请选择频度'*/this.$t('Edb.InputHolderAll.input_fre'))
                 return
             }
             if(['accumulate'].includes(this.computedType)&&this.subComputedType==62&& !this.formData.frequency){
-                this.$message.warning('请选择频度')
+                this.$message.warning(/*'请选择频度'*/this.$t('Edb.InputHolderAll.input_fre'))
                 return
             }
             if(this.computedType==72&&!this.formData.alphaValue){
-                this.$message.warning('请输入alpha值')
+                this.$message.warning(/*'请输入alpha值'*/this.$t('Edb.InputHolderAll.input_alpha_val'))
                 return
             }
             if(this.computedType==72&&(Number(this.formData.alphaValue)<=0||Number(this.formData.alphaValue)>=1)){
-                this.$message.warning('请输入>0,<1的数值的alpha值')
+                this.$message.warning(/*''请输入>0,<1的数值的alpha值''*/ this.$t('EtaBasePage.numeric_greater_msg'))
                 return
             }
             if(this.computedType=='withEDB'&&!this.select_target){
-                this.$message.warning('请选择指标B')
+                this.$message.warning(/*'请选择指标B'*/this.$t('EtaBasePage.select_indicator_msg'))
                 return
             }
             if(['withNum','withEDB'].includes(this.computedType)&&!this.formData.formula){
-                this.$message.warning('请输入公式')
+                this.$message.warning(/*'请输入公式'8*/this.$t('EtaBasePage.input_formula_msg'))
                 return
             }
 
@@ -635,11 +721,11 @@ export default {
         // 点击加入已选指标库
         async getAddEdbListData(){
             if(!(this.isCheckAll || this.isCheckIndeterminate ) || (!(this.list && this.list.length>0))){
-                this.$message.warning('请选择指标')
+                this.$message.warning(/* "请选择指标"  */this.$t('Edb.InputHolderAll.input_select_edb'))
                 return
             }
             if(this.selectList.length>=this.MAXAddNUM){
-                this.$message.warning('已达批量添加指标数量上限')
+                this.$message.warning(/* "已达批量添加指标数量上限"  */this.$t('EtaBasePage.limit_indicators_msg'))
                 return
             }
             const params={

+ 2 - 2
src/views/dataEntry_manage/databaseComponents/chartTrendRender.vue

@@ -379,8 +379,8 @@ export default {
         data.dateType === 5
           ? `${data.start_date}~${data.end_date}`
           : data.dateType === 6
-					?`${data.start_date}~至今`
-					:`最近${this.count_year}年`
+					?/* `${data.start_date}~至今` */ this.$t('Chart.data_tip_since',{date:data.start_date})
+					:/* `最近${this.count_year}年` */ this.$t('Chart.date_tip_count',{year:this.count_year})
 			if(this.chart_type === 2){
 				let latestYear = parseInt(this.chartInfo.LatestDate.substring(0,4))
 				let dateStart = data.start_date

+ 34 - 11
src/views/dataEntry_manage/databaseComponents/computedDialog.vue

@@ -90,7 +90,7 @@
 								:options="timeSeriesOpt"
 								:props="{emitPath:false}"
 								:show-all-levels="false"
-								placeholder="请选择"
+								:placeholder="$t('Edb.please_select')"
 								:disabled="calulateForm.view"
 							></el-cascader>
 						</div>
@@ -108,7 +108,7 @@
 						</label>
 						<el-select
 							v-model="nullValueForm.nullValueWay"
-							placeholder="请选择"
+							:placeholder="$t('Edb.please_select')"
 							:disabled="calulateForm.view"
 						>
 							<el-option
@@ -130,11 +130,11 @@
 						</label>
 						<el-select
 							v-model="nullValueForm.maxNullWay"
-							placeholder="请选择"
+							:placeholder="$t('Edb.please_select')"
 							:disabled="calulateForm.view"
 						>
-							<el-option label="等于0" :value="1" />
-							<el-option label="跳过空值" :value="2" />
+							<el-option :label="$t('EtaBasePage.null_val_deal_4')" :value="1" />
+							<el-option :label="$t('EtaBasePage.max_null_val_2')" :value="2" />
 						</el-select>
 					</div>
 				</div>	
@@ -333,6 +333,29 @@ export default {
 			})
 
 			return arr
+		},
+		titleMap(){
+			return new Map([
+				['计算指标',this.$t('EtaBasePage.calculate_title')],
+				['编辑计算指标',this.$t('EtaBasePage.calculate_edit_title')],
+				['查看计算指标',this.$t('EtaBasePage.calculate_view_title')],
+			])
+		},
+		nullWayOptions(){
+			return [
+				{ label: this.$t('EtaBasePage.null_val_deal_0'),value: 0 },
+				{ label: this.$t('EtaBasePage.null_val_deal_1'),value: 1 },
+				{ label: this.$t('EtaBasePage.null_val_deal_2'),value: 2 },
+				{ label: this.$t('EtaBasePage.null_val_deal_3'),value: 3 },
+				{ label: this.$t('EtaBasePage.null_val_deal_4'),value: 4 },
+			]
+		},
+		formTips(){
+			return {
+				'null-val':this.$t('EtaBasePage.null_val_del_hint'),
+				'max-null-val':this.$t('EtaBasePage.max_null_val_hint'),
+				'formula':this.$t('EtaBasePage.formula_examp_hint')
+			}
 		}
 	},
 	watch: {
@@ -461,17 +484,17 @@ export default {
 				nullValueWay: 0,
 				maxNullWay: 1
 			},//空值处理
-			nullWayOptions: [
+			/* nullWayOptions: [
 				{ label: '查找前后35天最近值',value: 0 },
 				{ label: '不计算',value: 1 },
 				{ label: '前值填充',value: 2 },
 				{ label: '后值填充',value: 3 },
 				{ label: '等于0',value: 4 },
-			],
+			], */
 
 			selectTimeSeriesVal:'',
 
-			formTips: {
+			/* formTips: {
 				'null-val': `1、查找前后35天最近值:在参与计算的日期序列上某指标无值时,该指标往前/往后找距离最近的值作为当天的值进行计算,遍历允许跨年,往前最多35天,往后最多35天<br>
 				2、不计算:只要有一个指标在某个日期没有值(即空值),则计算指标在该日期没有值 <br>
 				3、前值填充:空值优先以最近的前值填充,没有前值时,用后值填充 <br>
@@ -484,13 +507,13 @@ export default {
 				'formula':`1、支持新增分段,实现不同分段使用不同的计算公式,若未新增分段,则所有日期序列用统一公式计算<br>
 				2、新增分段需配置新公式和时间节点,在时间节点之前(不含)使用新公式,在时间节点之后(含)使用已配置公式,每个分段公式支持修改<br>
 				3、分段时间节点不允许重复,不允许超出第一个指标的日期区间`
-			},
+			}, */
 
-			titleMap: new Map([
+			/* titleMap: new Map([
 				['计算指标',this.$t('EtaBasePage.calculate_title')],
 				['编辑计算指标',this.$t('EtaBasePage.calculate_edit_title')],
 				['查看计算指标',this.$t('EtaBasePage.calculate_view_title')],
-			])
+			]) */
 
 		};
 	},

+ 5 - 5
src/views/dataEntry_manage/databaseComponents/createChart.vue

@@ -177,7 +177,7 @@ export default {
 			/* 日期弹窗 */
       isDateDia: false, // 时间段弹窗
       dateForm: {},
-      dateTip: '请选择时间段',
+      dateTip: /* '请选择时间段' */this.$t('Chart.choose_time'),
 			limitData: {
 				letMin: 0,
 				leftMax: 0,
@@ -285,7 +285,7 @@ export default {
     changeYear(item) {
       this.year_select = item.value;
       this.select_date = [];
-      this.dateTip = '请选择时间段';
+      this.dateTip = /* '请选择时间段' */this.$t('Chart.choose_time');
 
 			const { MinValue,MaxValue } = this.chartInfo;
 			this.oldOptions = {
@@ -324,8 +324,8 @@ export default {
         data.dateType === 5
           ? `${data.start_date}~${data.end_date}`
           : data.dateType === 6
-					?`${data.start_date}~至今`
-					:`最近${this.count_year}年`
+					?/* `${data.start_date}~至今` */ this.$t('Chart.data_tip_since',{date:data.start_date})
+					:/* `最近${this.count_year}年` */ this.$t('Chart.date_tip_count',{year:this.count_year})
 			if(this.chart_type === 2){
 				let latestYear = parseInt(this.chartInfo.LatestDate.substring(0,4))
 				let dateStart = data.start_date
@@ -699,7 +699,7 @@ export default {
 			this.count_year=5
 			this.select_date = [];
 			this.options = {};
-			this.dateTip = '请选择时间段';
+			this.dateTip = /* '请选择时间段' */this.$t('Chart.choose_time');
 			this.oldOptions = {};
 			this.calendar_type = '公历';
 			this.season_year = [];

+ 11 - 6
src/views/dataEntry_manage/databaseComponents/diffusionIndexDia.vue

@@ -129,9 +129,9 @@
             >
               <el-option
                 v-for="item in frequencyArr"
-                :key="item"
-                :label="item"
-                :value="item"
+                :key="item.label"
+                :label="item.label"
+                :value="item.value"
               >
               </el-option>
             </el-select>
@@ -161,9 +161,9 @@
 
 <script>
 import { dataBaseInterface } from '@/api/api.js';
-import { formRules,generateSeriesArray,frequencyArr } from './util';
+import { formRules,generateSeriesArray } from './util';
 import * as preDictEdbInterface from '@/api/modules/predictEdbApi.js';
-import { unitArr } from '@/utils/defaultOptions';
+import { unitArr,frequencySelectList } from '@/utils/defaultOptions';
 const MAXEDBNUM=50//最大可添加的指标数量
 const tag_arr = generateSeriesArray();
 // for(let i=0;i<26;i++) tag_arr.push(String.fromCharCode(65+i));
@@ -242,7 +242,7 @@ export default {
 				children: 'Children',
 				checkStrictly: true
 			},
-			frequencyArr,
+			/* frequencyArr, */
 			fre_options: ['天','周','月','季','年'],
 			loading:false,
 			
@@ -271,6 +271,11 @@ export default {
 			}
 		};
 	},
+	computed:{
+		frequencyArr(){
+			return frequencySelectList(['半年度'])
+		}
+	},
 	methods: {
 		/* 指标列表 */
 		searchTarget(query) {

+ 9 - 2
src/views/dataEntry_manage/databaseComponents/edbDetailData.vue

@@ -14,8 +14,15 @@
 					<span>{{item.label}}</span>
 				</template>	
 				<template slot-scope="scope">
-					<span v-show="currentLang=='zh'">{{ scope.row[item.key] }}</span> 
-					<span v-show="currentLang=='en'">{{scope.row[item.enKey||item.key] || scope.row[item.key]}}</span>
+					<template v-if="$i18nt.locale==='zh'">
+						<span>{{ currentLang==='en'?scope.row[item.enKey||item.key] || scope.row[item.key]:scope.row[item.key] }}</span> 
+					</template>
+					<template v-else>
+						<span v-if="item.key==='Frequency'">{{ getFrequencyTrans(scope.row.Frequency||'null') }}</span>
+						<span v-else-if="item.key==='Unit'">{{ getUnitTrans(scope.row.Unit) }}</span>
+						<span v-else>{{ scope.row[item.key] }}</span>
+					</template>
+					
 				</template>
 			</el-table-column>
 		</el-table>

+ 45 - 29
src/views/dataEntry_manage/databaseComponents/fittingResidueDia.vue

@@ -165,9 +165,9 @@
           clearable>
             <el-option
               v-for="item in frequencyArr"
-              :key="item"
-              :label="item"
-              :value="item">
+              :key="item.label"
+              :label="item.label"
+              :value="item.value">
             </el-option>
           </el-select>
         </el-form-item>
@@ -200,8 +200,8 @@
 <script>
 import { dataBaseInterface } from '@/api/api.js';
 import * as preDictEdbInterface from '@/api/modules/predictEdbApi.js';
-import { unitArr } from '@/utils/defaultOptions';
-import { frequencyArr } from './util'
+import { unitArr,frequencySelectList } from '@/utils/defaultOptions';
+/* import { frequencyArr } from './util' */
 export default {
 	name:'',
 	props: {
@@ -272,29 +272,6 @@ export default {
 				menu:'',
 				frequency:'',
 			},
-			formRules: {
-        self_variate:[
-					{ required: true, message: this.$t('Edb.Valids.common_msg',{label: this.$t('EtaBasePage.label_self_var')}), trigger: 'change' },
-				],
-        depend_variate:[
-					{ required: true, message: this.$t('Edb.Valids.common_msg',{label: this.$t('EtaBasePage.label_depend_var')}), trigger: 'change' },
-				],
-        date:[
-					{ required: true, message: this.$t('Edb.Valids.common_msg',{label: this.$t('EtaBasePage.label_fit_date')}), trigger: 'change' },
-				],
-        edb_name:[
-					{ required: true, message: this.$t('Edb.Valids.name_msg'), trigger: 'change' },
-				],
-				menu:[
-					{ required: true, message: this.$t('Edb.Valids.menu_msg'), trigger: 'change' },
-				],
-				frequency:[
-					{ required: true, message: this.$t('Edb.Valids.fre_msg'), trigger: 'change' },
-				],
-				unit:[
-					{ required: true, message: this.$t('Edb.Valids.unit_msg'), trigger: ['blur','change'] },
-				]
-      },
 			unitArr,
 			options: [],
 			levelProps: {
@@ -303,7 +280,7 @@ export default {
 				children: 'Children',
 				checkStrictly: true
 			},
-			frequencyArr,
+			/* frequencyArr, */
 			fre_options: ['天','周','月','季','年'],
 			loading:false,
 			
@@ -328,6 +305,45 @@ export default {
 
 		};
 	},
+    computed:{
+        frequencyArr(){
+            return frequencySelectList(['半年度'])
+        },
+        formRules(){
+            return{
+                self_variate:[
+                    { 
+                        required: true, message: this.$t('Edb.Valids.common_msg',{label: this.$t('EtaBasePage.label_self_var')}),
+                        trigger: 'change' 
+                    },
+                ],
+                depend_variate:[
+                    { 
+                        required: true, message: this.$t('Edb.Valids.common_msg',{label: this.$t('EtaBasePage.label_depend_var')}),
+                        trigger: 'change' 
+                    },
+                ],
+                date:[
+                    { 
+                        required: true, message: this.$t('Edb.Valids.common_msg',{label: this.$t('EtaBasePage.label_fit_date')}),
+                        trigger: 'change' 
+                    },
+                ],
+                edb_name:[
+                    { required: true, message: this.$t('Edb.Valids.name_msg'), trigger: 'change' },
+                ],
+                menu:[
+                    { required: true, message: this.$t('Edb.Valids.menu_msg'), trigger: 'change' },
+                ],
+                frequency:[
+                    { required: true, message: this.$t('Edb.Valids.fre_msg'), trigger: 'change' },
+                ],
+                unit:[
+                    { required: true, message: this.$t('Edb.Valids.unit_msg'), trigger: ['blur','change'] },
+                ]
+            }
+        }
+    },
 	methods: {
 		/* 指标列表 */
 		getTarget(query) {

+ 34 - 28
src/views/dataEntry_manage/databaseComponents/jointTargetDia.vue

@@ -218,9 +218,9 @@
 				clearable >
 					<el-option
 						v-for="item in frequencyArr"
-						:key="item"
-						:label="item"
-						:value="item">
+						:key="item.label"
+						:label="item.label"
+						:value="item.value">
 					</el-option>
 				</el-select>
 			</el-form-item>
@@ -251,8 +251,7 @@
 <script>
 import { dataBaseInterface } from '@/api/api.js'
 import * as preDictEdbInterface from '@/api/modules/predictEdbApi.js';
-import { unitArr } from '@/utils/defaultOptions';
-import { frequencyArr } from './util'
+import { unitArr,frequencySelectList } from '@/utils/defaultOptions';
 export default {
 	props: {
 		isShow: {
@@ -364,12 +363,9 @@ export default {
 						7、The new indicator updates alongside indicator B.
 					`],
 				])
-		}
-	},
-	data () {
-		return {
-			default_type: 1,
-			tagList: [
+		},
+		tagList(){
+			return [
 				{
 					label:/*  "直接拼接" */this.$t('EtaBasePage.concat_tab_1'),
 					key: 1
@@ -378,22 +374,13 @@ export default {
 					label: /* "累计值同比拼接" */this.$t('EtaBasePage.concat_tab_2'),
 					key: 2
 				}
-			],
-			formData: {
-				date: '',
-				pre_edb: '',
-				pre_date: '',
-				after_edb: '',
-				after_date: '',
-				old_stay_edb: '',
-				old_stay_date: '',
-				concat_edb: '',
-				edb_name: '',
-				menu: '',
-				frequency: '',
-				unit: '',
-			},
-			formRules: {
+			]
+		},
+		frequencyArr(){
+			return frequencySelectList(['半年度'])
+		},
+		formRules(){
+			return {
 				date:[
 					{ required: true, message: this.$t('Edb.Valids.common_msg',{label: this.$t('EtaBasePage.label_concat_date')}), trigger: 'blur' },
 				],
@@ -421,6 +408,25 @@ export default {
 				unit:[
 					{ required: true, message: this.$t('Edb.Valids.unit_msg'), trigger: ['blur','change'] },
 				],
+			}
+		}
+	},
+	data () {
+		return {
+			default_type: 1,
+			formData: {
+				date: '',
+				pre_edb: '',
+				pre_date: '',
+				after_edb: '',
+				after_date: '',
+				old_stay_edb: '',
+				old_stay_date: '',
+				concat_edb: '',
+				edb_name: '',
+				menu: '',
+				frequency: '',
+				unit: '',
 			},
 			// tips: new Map([
 			// 	[1,`
@@ -447,7 +453,7 @@ export default {
 			searchMonthConcatOptions:[],
 			unitArr,
 			menuOptions: [],
-			frequencyArr,
+			/* frequencyArr, */
 
 			search_page: 1,
 			search_have_more: false,

Деякі файли не було показано, через те що забагато файлів було змінено