Browse Source

Merge branch 'master' into eta1.8.4

Karsa 11 months ago
parent
commit
9687a8e7a7
51 changed files with 1034 additions and 153 deletions
  1. 4 2
      src/api/api.js
  2. 58 1
      src/api/modules/thirdBaseApi.js
  3. BIN
      src/assets/img/eta_base_config/ETA_mobile_logo.png
  4. BIN
      src/assets/img/eta_base_config/ETA_mobile_title.png
  5. BIN
      src/assets/img/eta_base_config/Logo_ch.png
  6. BIN
      src/assets/img/eta_base_config/Logo_en.png
  7. BIN
      src/assets/img/logo_mobile.png
  8. 2 2
      src/lang/modules/DataReport/GlStatisticTable.js
  9. 10 0
      src/lang/modules/DataSources/En.js
  10. 11 0
      src/lang/modules/DataSources/Zh.js
  11. 1 1
      src/lang/modules/ETATables/En.js
  12. 1 1
      src/lang/modules/ETATables/Zh.js
  13. 4 4
      src/lang/modules/EtaBase/commonLang.js
  14. 2 2
      src/lang/modules/EtaChart/commonLang.js
  15. 3 1
      src/lang/modules/PredictEdb/En.js
  16. 5 3
      src/lang/modules/PredictEdb/Zh.js
  17. 6 6
      src/lang/modules/ReportManagement/ReportList.js
  18. 6 6
      src/lang/modules/SandboxManage/SandFlow.js
  19. 1 1
      src/lang/modules/SandboxManage/SandList.js
  20. 4 4
      src/lang/modules/Slides/pptPresent.js
  21. 6 2
      src/lang/modules/ToolBox/AIQuestion.js
  22. 23 3
      src/lang/modules/systemManage/BaseConfig.js
  23. 2 2
      src/lang/modules/systemManage/ChartSet.js
  24. 8 8
      src/lang/modules/systemManage/OperateAuth.js
  25. 11 11
      src/routes/modules/chartRoutes.js
  26. 7 1
      src/routes/modules/dataRoutes.js
  27. 7 0
      src/utils/buttonConfig.js
  28. 24 13
      src/views/Home.vue
  29. 3 3
      src/views/Login.vue
  30. 5 2
      src/views/dataEntry_manage/addChart.vue
  31. 26 8
      src/views/dataEntry_manage/databaseComponents/jointTargetDia.vue
  32. 5 2
      src/views/dataEntry_manage/editChart.vue
  33. 21 4
      src/views/dataEntry_manage/mixins/addOreditMixin.js
  34. 1 1
      src/views/dataEntry_manage/targetList.vue
  35. 569 0
      src/views/dataEntry_manage/thirdBase/bloombergSource.vue
  36. 1 1
      src/views/dataSource_manage/components/EDBInfoChangeTable.vue
  37. 38 24
      src/views/operation_manage/AIQA/AIQA.vue
  38. 4 3
      src/views/ppt_manage/newVersion/pptEditor.vue
  39. 3 3
      src/views/ppt_manage/newVersion/pptEnCatalog.vue
  40. 4 3
      src/views/ppt_manage/newVersion/pptEnEditor.vue
  41. 4 4
      src/views/ppt_manage/newVersion/pptEnPublish.vue
  42. 10 2
      src/views/ppt_manage/newVersion/utils/untils.js
  43. 2 2
      src/views/predictEdb_manage/addPredicEdb.vue
  44. 1 1
      src/views/predictEdb_manage/components/rulesDetailDia.vue
  45. 1 1
      src/views/smartReport/components/ETAChart.vue
  46. 7 3
      src/views/smartReport/editReport.vue
  47. 5 1
      src/views/system_manage/components/imgUpload.vue
  48. 1 1
      src/views/system_manage/dataRefreshSetting.vue
  49. 111 9
      src/views/system_manage/etaBaseConfig.vue
  50. 1 0
      src/vuex/index.js
  51. 5 1
      src/vuex/mutations.js

+ 4 - 2
src/api/api.js

@@ -15,7 +15,8 @@ import {
   fwmtInterface,
   fwmtInterface,
   guangqiInterface,
   guangqiInterface,
   icpiInterface,
   icpiInterface,
-  coalWordInterface
+  coalWordInterface,
+  bloombergInterface
 } from './modules/thirdBaseApi';
 } from './modules/thirdBaseApi';
 
 
 //手工指标 手工数据 手工数据权限
 //手工指标 手工数据 手工数据权限
@@ -122,7 +123,8 @@ export {
   fwmtInterface,
   fwmtInterface,
   guangqiInterface,
   guangqiInterface,
   icpiInterface,
   icpiInterface,
-  coalWordInterface
+  coalWordInterface,
+  bloombergInterface
 };
 };
 
 
 //老接口 研报 ppt等
 //老接口 研报 ppt等

+ 58 - 1
src/api/modules/thirdBaseApi.js

@@ -910,6 +910,62 @@ const coalWordInterface={
 		return http.get('/entry/data/mtjh/frequency',params)
 		return http.get('/entry/data/mtjh/frequency',params)
 	},
 	},
 }
 }
+/* 彭博数据源 */
+const bloombergInterface={
+    /**
+     * 数据列表
+     * @param {Object} params 
+     * @param {Number} params.PageSize
+     * @param {Number} params.CurrentIndex
+     * @param {String} params.Frequency
+     * @param {String} params.Keywords
+     * @param {Boolean} params.ListAll
+     * @param {Number} params.SortField
+     * @param {Number} params.SortRule
+     * @returns 
+     */
+    getTableList:params=>{
+        return http.get('/datamanage/bloomberg_source/list',params)
+    },
+    /**
+     * 指标重名校验
+     * @param {Object[]} params
+     * @param {String} params[].EdbCode //指标编码
+     * @param {String} params[].EdbName //指标名称
+     * @returns 
+     */
+    edbNameCheck:params=>{
+        return http.post('/datamanage/bloomberg_source/name_check',params)
+    },
+    /**
+     * 添加指标校验
+     * @param {Object} params 
+     * @param {Object} params.Frequency
+     * @param {Object} params.Keywords
+     * @param {Object} params.SortField
+     * @param {Object} params.SortRule
+     * @param {Boolean} params.ListAll
+     * @param {String[]} params.IndexCodes
+     * @returns 
+     */
+    edbAddCheck:params=>{
+        return http.post('/datamanage/bloomberg_source/add_check',params)
+    },
+    /**
+     * 批量新增指标
+     * @param {Object[]} params 
+     * @param {String} params[].EdbCode
+     * @param {String} params[].EdbName
+     * @param {String} params[].Frequency
+     * @param {String} params[].Unit
+     * @param {Number} params[].ClassifyId
+     * @returns 
+     */
+    edbBatchAdd:params=>{
+        return http.post('/datamanage/bloomberg_source/batch_add',params)
+    },
+
+}
 
 
 export { 
 export { 
 	lzDataInterface,
 	lzDataInterface,
@@ -926,5 +982,6 @@ export {
   fwmtInterface,
   fwmtInterface,
 	guangqiInterface,
 	guangqiInterface,
 	icpiInterface,
 	icpiInterface,
-	coalWordInterface
+	coalWordInterface,
+    bloombergInterface
 }
 }

BIN
src/assets/img/eta_base_config/ETA_mobile_logo.png


BIN
src/assets/img/eta_base_config/ETA_mobile_title.png


BIN
src/assets/img/eta_base_config/Logo_ch.png


BIN
src/assets/img/eta_base_config/Logo_en.png


BIN
src/assets/img/logo_mobile.png


+ 2 - 2
src/lang/modules/DataReport/GlStatisticTable.js

@@ -25,7 +25,7 @@ export const GlStatisticTableEn = {
     table_tips10:'Number of indicators failed updated on this terminal today',
     table_tips10:'Number of indicators failed updated on this terminal today',
     table_tips11:'Number of indicators for which the terminal successfully initiated update tasks but indicator data did not change today',
     table_tips11:'Number of indicators for which the terminal successfully initiated update tasks but indicator data did not change today',
     table_tips12:'Number of indicators for which  terminal data changed today',
     table_tips12:'Number of indicators for which  terminal data changed today',
-    table_tips13:'Name saved in ETA indicators',
+    table_tips13:'Name saved in indicators',
 
 
     change_placeholder:'Please select change type',
     change_placeholder:'Please select change type',
     change_type01:'Change of Basic Information',
     change_type01:'Change of Basic Information',
@@ -71,7 +71,7 @@ export const GlStatisticTableZh = {
     table_tips10:'今日该终端刷新失败的指标数量',
     table_tips10:'今日该终端刷新失败的指标数量',
     table_tips11:'今日该终端成功发起刷新任务,但指标数据未变化的指标数量',
     table_tips11:'今日该终端成功发起刷新任务,但指标数据未变化的指标数量',
     table_tips12:'今日该终端数据发生变化的指标数量',
     table_tips12:'今日该终端数据发生变化的指标数量',
-    table_tips13:'指标在ETA指标库保存的指标名称',
+    table_tips13:'指标在指标库保存的指标名称',
 
 
     change_placeholder:'请选择变更类型',
     change_placeholder:'请选择变更类型',
     change_type01:'基础信息变更',
     change_type01:'基础信息变更',

+ 10 - 0
src/lang/modules/DataSources/En.js

@@ -203,6 +203,16 @@ export default {
     col_start_time:'Indicator Start Time',
     col_start_time:'Indicator Start Time',
     col_newest_time:'Indicator Latest Time',
     col_newest_time:'Indicator Latest Time',
     col_create:'Data Entry Time',
     col_create:'Data Entry Time',
+  },
+
+
+  
+  /* 彭博数据源 */
+  BloombergPage:{
+    operation_prompt:'Operation Prompt',
+    add_edb_hint:'Max 30 indicators for bulk add!',
+    add_edb_check_hint1:'Incomplete Indicator Info',
+    add_edb_check_hint2:'Indicator name exists, please re-enter'
   }
   }
   
   
 }
 }

+ 11 - 0
src/lang/modules/DataSources/Zh.js

@@ -201,5 +201,16 @@ export default {
     col_start_time:'指标开始时间',
     col_start_time:'指标开始时间',
     col_newest_time:'指标最新时间',
     col_newest_time:'指标最新时间',
     col_create:'入库时间',
     col_create:'入库时间',
+
+  },
+
+
+  
+  /* 彭博数据源 */
+  BloombergPage:{
+    operation_prompt:'操作提示',
+    add_edb_hint:'批量添加指标数量不得超过30个!',
+    add_edb_check_hint1:'指标信息未填写完整',
+    add_edb_check_hint2:'指标名称已存在,请重新填写'
   }
   }
 }
 }

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

@@ -36,7 +36,7 @@ export default {
     keep_one_row_msg: "Please keep at least one row",
     keep_one_row_msg: "Please keep at least one row",
     no_here_val_msg: "Unable to insert value here",
     no_here_val_msg: "Unable to insert value here",
     TableInstructionsText: `Table Instructions:<br />
     TableInstructionsText: `Table Instructions:<br />
-    1. Manual Input: Click on each cell to directly enter text, numbers, or dates (format example: 2023-05-23). The entered content can match the names of metrics. Metrics from both the ETA Metric Library and the ETA Forecast Metric Library are searchable. If a metric is selected from the dropdown list, then that cell becomes a designated row/column for the selected metric.<br />
+    1. Manual Input: Click on each cell to directly enter text, numbers, or dates (format example: 2023-05-23). The entered content can match the names of metrics. Metrics from both the Metric Library and the Forecast Metric Library are searchable. If a metric is selected from the dropdown list, then that cell becomes a designated row/column for the selected metric.<br />
     2. Insert Metric Value: Right-click on a cell and click "Insert Metric Value". The system will query for the closest date and metric name based on the cell's row and column, and then populate the cell with the value of the metric corresponding to that date. The metric value is always positioned in the lower right corner of the cell.<br />
     2. Insert Metric Value: Right-click on a cell and click "Insert Metric Value". The system will query for the closest date and metric name based on the cell's row and column, and then populate the cell with the value of the metric corresponding to that date. The metric value is always positioned in the lower right corner of the cell.<br />
     3. Update and Calculation Rules: The dates associated with metric values in the table do not update automatically, and values do not support calculations within cells.`,
     3. Update and Calculation Rules: The dates associated with metric values in the table do not update automatically, and values do not support calculations within cells.`,
     select_table_category: "Please select table category",
     select_table_category: "Please select table category",

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

@@ -50,7 +50,7 @@ export default {
     table_name_empty_msg: "表格名称不能为空",
     table_name_empty_msg: "表格名称不能为空",
     name_empty_msg: "名称不能为空",
     name_empty_msg: "名称不能为空",
     TableInstructionsText: `表格说明:<br>
     TableInstructionsText: `表格说明:<br>
-    1、手动输入:单击每个单元格可直接输入文本、数字、日期(格式示例:2023-05-23),输入内容可匹配指标名称,ETA指标库和ETA预测指标库指标均可搜索,在下拉框中选择指标,则该单元格为已选指标行/列。<br>
+    1、手动输入:单击每个单元格可直接输入文本、数字、日期(格式示例:2023-05-23),输入内容可匹配指标名称,指标库和预测指标库指标均可搜索,在下拉框中选择指标,则该单元格为已选指标行/列。<br>
     2、插入指标值:右键单元格,点击“插入指标值”,则查询该单元格行、列最近的日期和指标名称,将查找到的指标对应日期的值填入该单元格,指标值总是在右下角。<br>
     2、插入指标值:右键单元格,点击“插入指标值”,则查询该单元格行、列最近的日期和指标名称,将查找到的指标对应日期的值填入该单元格,指标值总是在右下角。<br>
     3、更新与计算规则:表格中指标值的日期不自动更新,数值不支持单元格计算`,
     3、更新与计算规则:表格中指标值的日期不自动更新,数值不支持单元格计算`,
     date_type_label: "日期类型",
     date_type_label: "日期类型",

+ 4 - 4
src/lang/modules/EtaBase/commonLang.js

@@ -85,12 +85,12 @@ export default {
     en:'Switch to curve chart'
     en:'Switch to curve chart'
   },
   },
   eta_name:{
   eta_name:{
-    zh:'ETA指标',
-    en:'ETA index'
+    zh:'指标',
+    en:'index'
   },
   },
   eta_predictor_name:{
   eta_predictor_name:{
-    zh:'ETA预测指标',
-    en:'ETA predictor index'
+    zh:'预测指标',
+    en:'predictor index'
   },
   },
   formula_instru: {
   formula_instru: {
     zh:'公式说明',
     zh:'公式说明',

+ 2 - 2
src/lang/modules/EtaChart/commonLang.js

@@ -526,8 +526,8 @@ export default {
   /* 所有source */
   /* 所有source */
   AllChartSource: {
   AllChartSource: {
     eta_chart: {
     eta_chart: {
-      en: "ETA Gallery",
-      zh: "ETA图库",
+      en: "Gallery",
+      zh: "图库",
     },
     },
     commodity_chart: {
     commodity_chart: {
       en: "Commodity Price Curve",
       en: "Commodity Price Curve",

+ 3 - 1
src/lang/modules/PredictEdb/En.js

@@ -32,6 +32,7 @@ export default {
     season_select_cont: 'N Years Consecutive',
     season_select_cont: 'N Years Consecutive',
     season_select_formula: 'Fixed N Years',
     season_select_formula: 'Fixed N Years',
     label_periods: 'Number of Periods',
     label_periods: 'Number of Periods',
+    label_years: 'Number of Years',
     option_season_calendar1: 'Calendar',
     option_season_calendar1: 'Calendar',
     option_season_calendar2: 'Lunar Calendar',
     option_season_calendar2: 'Lunar Calendar',
     label_yoy_year: 'YoY Year',
     label_yoy_year: 'YoY Year',
@@ -55,7 +56,8 @@ export default {
     label_value_yoy_end: 'End Value of YoY',
     label_value_yoy_end: 'End Value of YoY',
     label_value_year: 'Annual Value',
     label_value_year: 'Annual Value',
 
 
-    label_rule: 'Rule',
+    // label_rule: 'Rule',
+    label_time_period: 'Time Period',
     rule_newset: 'Latest Value',
     rule_newset: 'Latest Value',
     rule_fix: "Fixed Value" ,
     rule_fix: "Fixed Value" ,
     rule_onyear: "YoY" ,
     rule_onyear: "YoY" ,

+ 5 - 3
src/lang/modules/PredictEdb/Zh.js

@@ -6,7 +6,7 @@ export default {
   PredictEdbPage: {
   PredictEdbPage: {
     only_see_mine: '只看我的',
     only_see_mine: '只看我的',
     total_list_view: '共{limit}个预测指标',
     total_list_view: '共{limit}个预测指标',
-    del_edb_msg: 'ETA预测指标删除后不可恢复,确认删除吗',
+    del_edb_msg: '预测指标删除后不可恢复,确认删除吗',
     
     
     /* 查看基础指标弹窗 */
     /* 查看基础指标弹窗 */
     view_rules: '查看预测规则',
     view_rules: '查看预测规则',
@@ -32,6 +32,7 @@ export default {
     season_select_cont: '连续N年',
     season_select_cont: '连续N年',
     season_select_formula: '指定N年',
     season_select_formula: '指定N年',
     label_periods: '期数',
     label_periods: '期数',
+    label_years: '年数',
     option_season_calendar1: '公历',
     option_season_calendar1: '公历',
     option_season_calendar2: '农历',
     option_season_calendar2: '农历',
     label_yoy_year: '同比年份',
     label_yoy_year: '同比年份',
@@ -55,7 +56,8 @@ export default {
     label_value_yoy_end: '同比增速终值',
     label_value_yoy_end: '同比增速终值',
     label_value_year: '年度值',
     label_value_year: '年度值',
 
 
-    label_rule: '规则',
+    // label_rule: '规则',
+    label_time_period: '时间段',
     rule_newset: '最新',
     rule_newset: '最新',
     rule_fix: "固定值" ,
     rule_fix: "固定值" ,
     rule_onyear: "同比" ,
     rule_onyear: "同比" ,
@@ -71,7 +73,7 @@ export default {
     rule_yoy_growth: "同比增速差值" ,
     rule_yoy_growth: "同比增速差值" ,
     rule_linear_reg: "一元线性拟合" ,
     rule_linear_reg: "一元线性拟合" ,
     rule_n_year: 'N年均值',
     rule_n_year: 'N年均值',
-    rule_value_back: '年度倒退值',
+    rule_value_back: '年度值倒推',
     rule_tip: `
     rule_tip: `
       预测规则说明:<br> 
       预测规则说明:<br> 
       1、最新:预测值全部等于最新值;<br>
       1、最新:预测值全部等于最新值;<br>

+ 6 - 6
src/lang/modules/ReportManagement/ReportList.js

@@ -47,7 +47,7 @@ export const ReportListEn = {
   frequency_select: "Frequency",
   frequency_select: "Frequency",
   creation_time_select: "Creation time",
   creation_time_select: "Creation time",
   insert_chart_tabs: "Insert chart",
   insert_chart_tabs: "Insert chart",
-  chart_inventory_radio: "ETA Gallery",
+  chart_inventory_radio: "Gallery",
   price_curve_radio: "Commodity price curve",
   price_curve_radio: "Commodity price curve",
   related_charts_radio: "Related Charts",
   related_charts_radio: "Related Charts",
   curve_fitting_radio: "Curve fitting",
   curve_fitting_radio: "Curve fitting",
@@ -58,7 +58,7 @@ export const ReportListEn = {
   no_reports_msg: "Sandbox Name/Commodity",
   no_reports_msg: "Sandbox Name/Commodity",
   insert_table_tabs: "Insert Table",
   insert_table_tabs: "Insert Table",
   table_name_tabs: "Table Name",
   table_name_tabs: "Table Name",
-  bulk_insertion_tabs: "Bulk Insertion of MyETA",
+  bulk_insertion_tabs: "My gallery batch insert",
   semantic_analysis_tabs: "Semantic Analysis Insertion",
   semantic_analysis_tabs: "Semantic Analysis Insertion",
   publish_time: "Publish Time",
   publish_time: "Publish Time",
   select_date_and_time: "Select Date and Time",
   select_date_and_time: "Select Date and Time",
@@ -71,7 +71,7 @@ export const ReportListEn = {
   select_date: "Select date",
   select_date: "Select date",
   charts_update_btn: "Charts update",
   charts_update_btn: "Charts update",
   library_top_type: "Territory Lib",
   library_top_type: "Territory Lib",
-  eta_top_type: "ETA table",
+  eta_top_type: "table",
   statistical_top_type: "Stats Analysis",
   statistical_top_type: "Stats Analysis",
   sandbox_top_type: "Sandbox",
   sandbox_top_type: "Sandbox",
   semantic_top_type: "Semantic Analy",
   semantic_top_type: "Semantic Analy",
@@ -164,7 +164,7 @@ export const ReportListZh = {
   frequency_select: "频度",
   frequency_select: "频度",
   creation_time_select: "创建时间",
   creation_time_select: "创建时间",
   insert_chart_tabs: "图表插入",
   insert_chart_tabs: "图表插入",
-  chart_inventory_radio: "ETA图库",
+  chart_inventory_radio: "图库",
   price_curve_radio: "商品价格曲线",
   price_curve_radio: "商品价格曲线",
   related_charts_radio: "相关性图表",
   related_charts_radio: "相关性图表",
   curve_fitting_radio: "拟合方程曲线",
   curve_fitting_radio: "拟合方程曲线",
@@ -175,7 +175,7 @@ export const ReportListZh = {
   no_reports_msg: "沙盘名称/品种",
   no_reports_msg: "沙盘名称/品种",
   insert_table_tabs: "表格插入",
   insert_table_tabs: "表格插入",
   table_name_tabs: "表格名称",
   table_name_tabs: "表格名称",
-  bulk_insertion_tabs: "MyETA批量插入",
+  bulk_insertion_tabs: "我的图库批量插入",
   semantic_analysis_tabs: "语义分析插入",
   semantic_analysis_tabs: "语义分析插入",
   publish_time: "发送时间",
   publish_time: "发送时间",
   select_date_and_time: "选择日期时间",
   select_date_and_time: "选择日期时间",
@@ -188,7 +188,7 @@ export const ReportListZh = {
   select_date: "选择日期",
   select_date: "选择日期",
   charts_update_btn: "图表刷新",
   charts_update_btn: "图表刷新",
   library_top_type: "版图资源库",
   library_top_type: "版图资源库",
-  eta_top_type: "ETA表格",
+  eta_top_type: "表格",
   statistical_top_type: "统计分析",
   statistical_top_type: "统计分析",
   sandbox_top_type: "沙盘图",
   sandbox_top_type: "沙盘图",
   semantic_top_type: "语义分析",
   semantic_top_type: "语义分析",

+ 6 - 6
src/lang/modules/SandboxManage/SandFlow.js

@@ -46,9 +46,9 @@ export const SandFlowEn = {
     copy_tag:'Copy',
     copy_tag:'Copy',
     delete_tag:'Delete',
     delete_tag:'Delete',
     add_link_search_placeholder:'Indicator ID/ indicator name',
     add_link_search_placeholder:'Indicator ID/ indicator name',
-    link_type_opt1:'ETA Indicator/ ETA forecast indicator',
-    link_type_opt2:'ETA Image library',
-    link_type_opt3:'ETA reports',
+    link_type_opt1:'Indicator/ forecast indicator',
+    link_type_opt2:'Image library',
+    link_type_opt3:'reports',
     msg_leave_page_save:'Before leaving this page, do you want to save current contents?',
     msg_leave_page_save:'Before leaving this page, do you want to save current contents?',
   };
   };
   
   
@@ -96,9 +96,9 @@ export const SandFlowEn = {
     copy_tag:'复制',
     copy_tag:'复制',
     delete_tag:'删除',
     delete_tag:'删除',
     add_link_search_placeholder:'指标ID/指标名称',
     add_link_search_placeholder:'指标ID/指标名称',
-    link_type_opt1:'ETA指标/ETA预测指标',
-    link_type_opt2:'ETA图库',
-    link_type_opt3:'ETA研报',
+    link_type_opt1:'指标/预测指标',
+    link_type_opt2:'图库',
+    link_type_opt3:'研报',
     msg_leave_page_save:'在离开页面之前,是否保存当前内容?',
     msg_leave_page_save:'在离开页面之前,是否保存当前内容?',
 
 
   };
   };

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

@@ -5,7 +5,7 @@
 /* 英文 */
 /* 英文 */
 export const SandListEn = {
 export const SandListEn = {
     logic_add_btn:'Add logic diagram', 
     logic_add_btn:'Add logic diagram', 
-    only_see:'Only see my ETA logic diagram',
+    only_see:'Only see my logic diagram',
     search_placeholder:"Please enter the logic diagram's name",
     search_placeholder:"Please enter the logic diagram's name",
     categories_add_btn:'Add categories',
     categories_add_btn:'Add categories',
     categories_edit_btn:'Edit categories',
     categories_edit_btn:'Edit categories',

+ 4 - 4
src/lang/modules/Slides/pptPresent.js

@@ -17,7 +17,7 @@ export const presentEn = {
   paste_element_btn: "Paste element",
   paste_element_btn: "Paste element",
   layer_editing: "Layer editing",
   layer_editing: "Layer editing",
   keyword_search: "Keyword search",
   keyword_search: "Keyword search",
-  eta_chart_gallery: "ETA Chart Gallery",
+  eta_chart_gallery: "Chart Gallery",
   commodity_price_curve: "Commodity Price Curve",
   commodity_price_curve: "Commodity Price Curve",
   correlation_charts: "Correlation Charts",
   correlation_charts: "Correlation Charts",
   fitted_equation_curves: "Fitted Equation Curves",
   fitted_equation_curves: "Fitted Equation Curves",
@@ -28,7 +28,7 @@ export const presentEn = {
   sandbox_name: "Sandbox",
   sandbox_name: "Sandbox",
   table_name: "Table",
   table_name: "Table",
   table_name_input: "Table Name",
   table_name_input: "Table Name",
-  my_eta_batch: "MyETA Batch",
+  my_eta_batch: "My gallery batch operations",
   layer_element: "Layer element",
   layer_element: "Layer element",
   line_settings: "Line settings",
   line_settings: "Line settings",
   outline_element: "Outline settings",
   outline_element: "Outline settings",
@@ -106,7 +106,7 @@ export const presentZh = {
   paste_element_btn: "粘贴元素",
   paste_element_btn: "粘贴元素",
   layer_editing: "图层编辑",
   layer_editing: "图层编辑",
   keyword_search: "关键字查找",
   keyword_search: "关键字查找",
-  eta_chart_gallery: "ETA图库",
+  eta_chart_gallery: "图库",
   commodity_price_curve: "商品价格曲线",
   commodity_price_curve: "商品价格曲线",
   correlation_charts: "相关性图表",
   correlation_charts: "相关性图表",
   fitted_equation_curves: "拟合方程曲线",
   fitted_equation_curves: "拟合方程曲线",
@@ -118,7 +118,7 @@ export const presentZh = {
   table_name: "表格",
   table_name: "表格",
   table_analysis_semantic: "语义分析插入",
   table_analysis_semantic: "语义分析插入",
   table_name_input: "表格名称",
   table_name_input: "表格名称",
-  my_eta_batch: "MyETA批量",
+  my_eta_batch: "我的图库批量",
   table_chart: "图表",
   table_chart: "图表",
   layer_element: "图层元素",
   layer_element: "图层元素",
   line_settings: "线条设置",
   line_settings: "线条设置",

+ 6 - 2
src/lang/modules/ToolBox/AIQuestion.js

@@ -12,7 +12,9 @@ export const AIQuestionEn = {
     send_btn:'Send',
     send_btn:'Send',
     use_intro_title:'Instructions',
     use_intro_title:'Instructions',
     use_intro01:'Maximum 500 Q&A per account per day.',
     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.'
+    use_intro02:'History Q&A default named with the first question in the dialogue window, can be modified.',
+    operation_tips:'Operation Tip',
+    operation_des:'Switching models will create a new dialogue window without context continuity. Confirm switch?',
 
 
 };
 };
   
   
@@ -26,7 +28,9 @@ export const AIQuestionZh = {
     send_btn:'发送',
     send_btn:'发送',
     use_intro_title:'使用说明',
     use_intro_title:'使用说明',
     use_intro01:'每账号每天最高500次问答。',
     use_intro01:'每账号每天最高500次问答。',
-    use_intro02:'历史问答默认用该对话窗口内第一个提问命名,可修改。'
+    use_intro02:'历史问答默认用该对话窗口内第一个提问命名,可修改。',
+    operation_tips:'操作提示',
+    operation_des:'切换后的模型无法联系上下文进行回答,会新建对话窗口,确认切换吗?',
 };
 };
   
   
 /**
 /**

+ 23 - 3
src/lang/modules/systemManage/BaseConfig.js

@@ -25,7 +25,7 @@ export const BaseConfigEn = {
     iFLYTEK_service:'iFLYTEK Service',
     iFLYTEK_service:'iFLYTEK Service',
     please_enter:'Please enter',
     please_enter:'Please enter',
     report_approval:'Report Approval',
     report_approval:'Report Approval',
-    internal_approval:'ETA Internal Approval',
+    internal_approval:'Internal Approval',
     third_approval:'Third-party Approval',
     third_approval:'Third-party Approval',
     third_approval_tips:"Chinese Research Report(Intelligent Research Report/Research Report List) connected to third-party approval systems via API interface",
     third_approval_tips:"Chinese Research Report(Intelligent Research Report/Research Report List) connected to third-party approval systems via API interface",
     report_share_title_zh:'Title of Chinese research report sharing',
     report_share_title_zh:'Title of Chinese research report sharing',
@@ -67,7 +67,17 @@ export const BaseConfigEn = {
     resource_del_msg:'Are you sure to delete the selected image?',
     resource_del_msg:'Are you sure to delete the selected image?',
 
 
     tip_msg01:'Save successful, please check the corresponding page/project later',
     tip_msg01:'Save successful, please check the corresponding page/project later',
-
+    pc:"PC",
+    mobile:"Mobile",
+    website_name:"Website Name",
+    english_version:"English Version",
+    chinese_version:"Chinese Version",
+    recommended_ratio:"Recommended Ratio 4:1",
+    pc_website_title_Tip:"Please enter the PC website name",
+    mobile_website_title_Tip:"Please enter the mobile website name",
+    system_logo:"System Logo",
+    upload_image_tip:"Click to Upload Image",
+    
 };
 };
   
   
 /* 中文 */
 /* 中文 */
@@ -93,7 +103,7 @@ export const BaseConfigZh = {
     iFLYTEK_service:'科大讯飞服务',
     iFLYTEK_service:'科大讯飞服务',
     please_enter:'请输入',
     please_enter:'请输入',
     report_approval:'研报审批',
     report_approval:'研报审批',
-    internal_approval:'ETA内部审批',
+    internal_approval:'内部审批',
     third_approval:'第三方审批',
     third_approval:'第三方审批',
     third_approval_tips:'中文研报(智能研报/研报列表)通过API接口对接第三方审批系统',
     third_approval_tips:'中文研报(智能研报/研报列表)通过API接口对接第三方审批系统',
     report_share_title_zh:'中文研报分享抬头',
     report_share_title_zh:'中文研报分享抬头',
@@ -135,6 +145,16 @@ export const BaseConfigZh = {
     resource_del_msg:'是否确认删除选中图片?',
     resource_del_msg:'是否确认删除选中图片?',
 
 
     tip_msg01:'保存成功,请稍后到对应页面/项目查看',
     tip_msg01:'保存成功,请稍后到对应页面/项目查看',
+    pc:"PC端",
+    mobile:"移动端",
+    website_name:"网站名称",
+    english_version:"英文版",
+    chinese_version:"中文版",
+    recommended_ratio:"推荐比例4:1",
+    pc_website_title_Tip:"请输入PC端网站名称",
+    mobile_website_title_Tip:"请输入移动端网站名称",
+    system_logo:"系统logo",
+    upload_image_tip:"点击上传图片",
 };
 };
   
   
 /**
 /**

+ 2 - 2
src/lang/modules/systemManage/ChartSet.js

@@ -5,7 +5,7 @@
 /* 英文 */
 /* 英文 */
 export const ChartSetEn = {
 export const ChartSetEn = {
     label01:'Chart Types',
     label01:'Chart Types',
-    label02:'ETA Chart Library Default Theme',
+    label02:'Chart Library Default Theme',
     add_btn:'Add Custom Theme',
     add_btn:'Add Custom Theme',
     edit_btn:'Edit Custom Theme',
     edit_btn:'Edit Custom Theme',
     theme_name:'Theme Name',
     theme_name:'Theme Name',
@@ -42,7 +42,7 @@ export const ChartSetEn = {
 /* 中文 */
 /* 中文 */
 export const ChartSetZh = {
 export const ChartSetZh = {
     label01:'图表类型',
     label01:'图表类型',
-    label02:'ETA图库默认主题',
+    label02:'图库默认主题',
     add_btn:'添加自定义主题',
     add_btn:'添加自定义主题',
     edit_btn:'编辑自定义主题',
     edit_btn:'编辑自定义主题',
     theme_name:'主题名称',
     theme_name:'主题名称',

+ 8 - 8
src/lang/modules/systemManage/OperateAuth.js

@@ -6,10 +6,10 @@
 export const OperateAuthEn = {
 export const OperateAuthEn = {
     tab01:'Manual Data Indicators',
     tab01:'Manual Data Indicators',
     tab02:'My Steel Chemical Database',
     tab02:'My Steel Chemical Database',
-    tab03:'ETA Indicator Library',
-    tab04:'ETA Predictive Indicators',
-    tab05:'ETA Gallery',
-    tab06:'ETA Tables',
+    tab03:'Indicator Library',
+    tab04:'Predictive Indicators',
+    tab05:'Gallery',
+    tab06:'Tables',
 
 
     placeholder01:'Please Enter Chart Name',
     placeholder01:'Please Enter Chart Name',
     placeholder02:'Please Enter Indicator ID/Indicator Name',
     placeholder02:'Please Enter Indicator ID/Indicator Name',
@@ -76,10 +76,10 @@ export const OperateAuthEn = {
 export const OperateAuthZh = {
 export const OperateAuthZh = {
     tab01:'手工数据指标',
     tab01:'手工数据指标',
     tab02:'钢联化工数据库',
     tab02:'钢联化工数据库',
-    tab03:'ETA指标库',
-    tab04:'ETA预测指标',
-    tab05:'ETA图库',
-    tab06:'ETA表格',
+    tab03:'指标库',
+    tab04:'预测指标',
+    tab05:'图库',
+    tab06:'表格',
 
 
     placeholder01:'请输入图表名称',
     placeholder01:'请输入图表名称',
     placeholder02:'请输入指标Id/指标名称',
     placeholder02:'请输入指标Id/指标名称',

+ 11 - 11
src/routes/modules/chartRoutes.js

@@ -5,13 +5,13 @@ export default [
 	{
 	{
 		path: '/',
 		path: '/',
 		component: home,
 		component: home,
-		name: 'ETA图库',
+		name: '图库',
 		hidden: false,
 		hidden: false,
 		icon_path: require('@/assets/img/home/data_ic.png'),
 		icon_path: require('@/assets/img/home/data_ic.png'),
 		children: [{
 		children: [{
 				path: 'chartsetting',
 				path: 'chartsetting',
 				component: () => import('@/views/dataEntry_manage/chartSetting.vue'),
 				component: () => import('@/views/dataEntry_manage/chartSetting.vue'),
-				name: 'ETA图库',
+				name: '图库',
 				hidden: false,
 				hidden: false,
 			},
 			},
 			{
 			{
@@ -33,14 +33,14 @@ export default [
 	{
 	{
 		path: '/',
 		path: '/',
 		component: home,
 		component: home,
-		name: 'ETA指标库',
+		name: '指标库',
 		hidden: false,
 		hidden: false,
 		icon_path: require('@/assets/img/home/data_ic.png'),
 		icon_path: require('@/assets/img/home/data_ic.png'),
 		children: [
 		children: [
 			{
 			{
 				path: 'database',
 				path: 'database',
 				component: () => import('@/views/dataEntry_manage/databaseList.vue'),
 				component: () => import('@/views/dataEntry_manage/databaseList.vue'),
-				name: 'ETA指标库',
+				name: '指标库',
 				hidden: false,
 				hidden: false,
 			},
 			},
 			{
 			{
@@ -62,13 +62,13 @@ export default [
 	{
 	{
 		path: '/',
 		path: '/',
 		component: home,
 		component: home,
-		name: 'My ETA',
+		name: '我的图库',
 		hidden: false,
 		hidden: false,
 		icon_path: require('@/assets/img/home/data_ic.png'),
 		icon_path: require('@/assets/img/home/data_ic.png'),
 		children: [
 		children: [
 			{
 			{
 				path: 'mychart',
 				path: 'mychart',
-				name: 'My ETA',
+				name: '我的图库',
 				component: () => import('@/views/mychart_manage/index.vue'),
 				component: () => import('@/views/mychart_manage/index.vue'),
 				hidden: false,
 				hidden: false,
 			},
 			},
@@ -97,7 +97,7 @@ export default [
 	{
 	{
 		path: '/',
 		path: '/',
 		component: home,
 		component: home,
-		name: 'ETA表格',
+		name: '表格',
 		hidden: false,
 		hidden: false,
 		children:[
 		children:[
 			{
 			{
@@ -164,7 +164,7 @@ export default [
 	{
 	{
 		path: '/',
 		path: '/',
 		component: home,
 		component: home,
-		name: 'ETA逻辑',
+		name: '逻辑',
 		hidden: false,
 		hidden: false,
 		children: [
 		children: [
 			// {
 			// {
@@ -176,7 +176,7 @@ export default [
 			// 改版后的ETA逻辑图
 			// 改版后的ETA逻辑图
 			{
 			{
 				path: "sandlist",
 				path: "sandlist",
-				name: 'ETA逻辑',
+				name: '逻辑',
 				component: () => import('@/views/sandbox_manage/index_new_version.vue'),
 				component: () => import('@/views/sandbox_manage/index_new_version.vue'),
 				hidden: false,
 				hidden: false,
 			},
 			},
@@ -198,12 +198,12 @@ export default [
 	{
 	{
 		path:'/',
 		path:'/',
 		component: home,
 		component: home,
-		name: 'ETA预测指标',
+		name: '预测指标',
 		hidden:  false,
 		hidden:  false,
 		children: [
 		children: [
 			{
 			{
 				path: 'predictEdb',
 				path: 'predictEdb',
-				name: 'ETA预测指标',
+				name: '预测指标',
 				component:()=>import('@/views/predictEdb_manage/predictEdb.vue')
 				component:()=>import('@/views/predictEdb_manage/predictEdb.vue')
 			},
 			},
 			{
 			{

+ 7 - 1
src/routes/modules/dataRoutes.js

@@ -250,7 +250,13 @@ export default [
         component: () => import("@/views/dataEntry_manage/thirdBase/selfDataBase.vue"),
         component: () => import("@/views/dataEntry_manage/thirdBase/selfDataBase.vue"),
         name: "自有数据",
         name: "自有数据",
         hidden: false
         hidden: false
-      }
+      },  
+      {
+        path: "bloomberg",
+        component: () => import("@/views/dataEntry_manage/thirdBase/bloombergSource.vue"),
+        name: "Bloomberg",
+        hidden: false
+      },
     ],
     ],
   },
   },
 ];
 ];

+ 7 - 0
src/utils/buttonConfig.js

@@ -262,6 +262,8 @@ export const dataSourcePermission = {
     /*--------煤炭江湖---- */
     /*--------煤炭江湖---- */
     coalWordData_view:'coalWord:view', // 查看
     coalWordData_view:'coalWord:view', // 查看
     coalWordData_export:'coalWord:export', // 导出
     coalWordData_export:'coalWord:export', // 导出
+    /*--------彭博数据源--- */
+    Bloomberg_add2edb:'Bloomberg:add2edb',//添加指标库
 }
 }
 
 
 /*
 /*
@@ -708,6 +710,11 @@ export const baseConfigPermission = {
     etaBaseConfig_watermark_ybShare:'etaBaseConfig:watermark:ybShare',//如果没权限,表单不显示也不校验
     etaBaseConfig_watermark_ybShare:'etaBaseConfig:watermark:ybShare',//如果没权限,表单不显示也不校验
     etaBaseConfig_source_see:'baseSetting:sourceSetting:see',//资源库查看
     etaBaseConfig_source_see:'baseSetting:sourceSetting:see',//资源库查看
     etaBaseConfig_source_upload:'baseSetting:sourceSetting:upload',//资源库上传
     etaBaseConfig_source_upload:'baseSetting:sourceSetting:upload',//资源库上传
+    // 登录设置
+    etaBaseConfig_login_systemLogo_mobile:'baseSetting:loginSetting:systemLogo:mobile',//系统logo移动端
+    etaBaseConfig_login_systemLogo_pc:'baseSetting:loginSetting:systemLogo:pc',//系统logoPC端
+    etaBaseConfig_login_websiteName_mobile:'baseSetting:loginSetting:websiteName:mobile',//网站名称移动端
+    etaBaseConfig_login_websiteName_pc:'baseSetting:loginSetting:websiteName:pc',//网站名称移动端
 }
 }
 
 
 /*-----------外部链接配置-------- */
 /*-----------外部链接配置-------- */

+ 24 - 13
src/views/Home.vue

@@ -226,7 +226,7 @@
                   <img src="~@/assets/img/questionnaire.png" v-if="isQuestionShow" @click="showQuestionDia=true"
                   <img src="~@/assets/img/questionnaire.png" v-if="isQuestionShow" @click="showQuestionDia=true"
                 style="width: 84px;height: 24; cursor: pointer;" />
                 style="width: 84px;height: 24; cursor: pointer;" />
                 </div>
                 </div>
-                <div class="lang-content" @click="langChangeHandler">{{$i18n.locale == 'zh'?'切换英文版':'切换中文版'}}</div>
+                <div class="lang-content" @click="langChangeHandler">{{$i18n.locale == 'zh'?'English':'中文'}}</div>
               </div>
               </div>
                <!-- 消息通知 -->
                <!-- 消息通知 -->
               <notification-msg ref="notification"/>
               <notification-msg ref="notification"/>
@@ -367,7 +367,8 @@ export default {
 		},
 		},
 
 
     logoLarge() {
     logoLarge() {
-      return this.$i18n.locale == 'en' ? require('@/assets/img/en/logo.png') : this.$setting.g_logo
+      return this.$i18n.locale == 'en' ? this.$store.state.baseInfo.logoEn || require('@/assets/img/en/logo.png'): 
+                                          this.$store.state.baseInfo.logoCh || this.$setting.g_logo
     }
     }
   },
   },
   data() {
   data() {
@@ -433,11 +434,11 @@ export default {
         出差管理: "Trip",
         出差管理: "Trip",
         研报管理: "Rpt",
         研报管理: "Rpt",
         语义分析: "Nlp",
         语义分析: "Nlp",
-        ETA表格: "Tbl",
-        ETA指标库: "Inx",
+        表格: "Tbl",
+        指标库: "Inx",
         相关性: "Co-R",
         相关性: "Co-R",
-        ETA预测指标: "FInx",
-        ETA图库: "Gra",
+        预测指标: "FInx",
+        图库: "Gra",
         /* 151:'FData', */
         /* 151:'FData', */
         供应分析: "Sup",
         供应分析: "Sup",
         商品价格曲线: "Crv",
         商品价格曲线: "Crv",
@@ -446,7 +447,6 @@ export default {
       //链接系统
       //链接系统
       linkSystems: this.$setting.linkSystems,
       linkSystems: this.$setting.linkSystems,
       bus_code:"",
       bus_code:"",
-
     };
     };
   },
   },
   created() {
   created() {
@@ -463,6 +463,7 @@ export default {
     this.getBusinessCodeFun()
     this.getBusinessCodeFun()
     
     
     this.getQuestionStaus()
     this.getQuestionStaus()
+    this.getSystemInfo();//获取配置信息
   },
   },
   mounted() {
   mounted() {
     if (sessionStorage.getItem("hasGetMenu")) {
     if (sessionStorage.getItem("hasGetMenu")) {
@@ -483,12 +484,12 @@ export default {
         ['英文ppt',require('@/assets/icons/menu/english_ppt.png')],
         ['英文ppt',require('@/assets/icons/menu/english_ppt.png')],
         ['审批管理',require('@/assets/icons/menu/OKobqhVdWm0TkAFiimA8pxvPl1fk.png')],
         ['审批管理',require('@/assets/icons/menu/OKobqhVdWm0TkAFiimA8pxvPl1fk.png')],
         ['数据源',require('@/assets/icons/menu/data_source.png')],
         ['数据源',require('@/assets/icons/menu/data_source.png')],
-        ['ETA指标库',require('@/assets/icons/menu/eta_data.png')],
-        ['ETA预测指标',require('@/assets/icons/menu/eta_predict_data.png')],
-        ['ETA图库',require('@/assets/icons/menu/eta_chart.png')],
-        ['My ETA',require('@/assets/icons/menu/my_eta.png')],
-        ['ETA表格',require('@/assets/icons/menu/eta_table.png')],
-        ['ETA逻辑',require('@/assets/icons/menu/eta_logic.png')],
+        ['指标库',require('@/assets/icons/menu/eta_data.png')],
+        ['预测指标',require('@/assets/icons/menu/eta_predict_data.png')],
+        ['图库',require('@/assets/icons/menu/eta_chart.png')],
+        ['我的投研',require('@/assets/icons/menu/my_eta.png')],
+        ['表格',require('@/assets/icons/menu/eta_table.png')],
+        ['逻辑',require('@/assets/icons/menu/eta_logic.png')],
         ['语义分析',require('@/assets/icons/menu/semantic_analysis.png')],
         ['语义分析',require('@/assets/icons/menu/semantic_analysis.png')],
         ['统计分析',require('@/assets/icons/menu/statistic_analysis.png')],
         ['统计分析',require('@/assets/icons/menu/statistic_analysis.png')],
         ['供应分析',require('@/assets/icons/menu/supply_analysis.png')],
         ['供应分析',require('@/assets/icons/menu/supply_analysis.png')],
@@ -908,6 +909,16 @@ export default {
        this.$i18n.locale =  this.$i18n.locale == 'zh' ? 'en' : 'zh'
        this.$i18n.locale =  this.$i18n.locale == 'zh' ? 'en' : 'zh'
        localStorage.setItem('i18n',this.$i18n.locale)
        localStorage.setItem('i18n',this.$i18n.locale)
     },
     },
+    getSystemInfo(){
+      departInterence.getBaseInfo().then(res=>{
+        if(res.Ret == 200){
+
+          this.$store.commit('SET_BASE_INFO',
+            {logoCh:res.Data.LogoCn?res.Data.LogoCn.ConfVal:'',logoEn:res.Data.LogoEn?res.Data.LogoEn.ConfVal:''}
+          )
+        }
+      })
+    }
   },
   },
 };
 };
 </script>
 </script>

+ 3 - 3
src/views/Login.vue

@@ -66,14 +66,14 @@
 			</el-form>  -->
 			</el-form>  -->
 
 
             <el-radio-group v-model="lang" @input="changeLang" class="lang-wrapper">
             <el-radio-group v-model="lang" @input="changeLang" class="lang-wrapper">
-                <el-radio-button label="zh">中文</el-radio-button>
-                <el-radio-button label="en">英文版</el-radio-button>
+                <el-radio-button label="zh">中文</el-radio-button>
+                <el-radio-button label="en">English</el-radio-button>
             </el-radio-group>
             </el-radio-group>
 
 
 			<div class="login-box" id="login-container" v-if="activeModel!=='forgetPassModel'">
 			<div class="login-box" id="login-container" v-if="activeModel!=='forgetPassModel'">
                 <div class="fixed-login-cont">
                 <div class="fixed-login-cont">
                     <span class="login-title">{{ loginTitle }}</span>
                     <span class="login-title">{{ loginTitle }}</span>
-                    <span class="login-sub-title">ETA — {{ $t('LoginPage.login_sub_tit') }}<!-- 让投研领先市场半步 --></span>
+                    <span class="login-sub-title">{{ $t('LoginPage.login_sub_tit') }}<!-- 让投研领先市场半步 --></span>
                     <el-tabs v-model="activeModel" >
                     <el-tabs v-model="activeModel" >
 
 
                         <OrdinaryModel ref="ordinaryModel"
                         <OrdinaryModel ref="ordinaryModel"

+ 5 - 2
src/views/dataEntry_manage/addChart.vue

@@ -215,7 +215,7 @@
 										<el-checkbox v-model="item.IsOrder"><!-- 逆序 -->{{$t('Chart.Detail.re_order')}}</el-checkbox>
 										<el-checkbox v-model="item.IsOrder"><!-- 逆序 -->{{$t('Chart.Detail.re_order')}}</el-checkbox>
 									</li>
 									</li>
 									<li>
 									<li>
-										<el-radio-group v-model="item.IsAxis" size="mini">
+										<el-radio-group v-model="item.IsAxis" size="mini" @input="isChangeEdbAxis=true">
 											<el-radio-button :label="1"><!-- 左轴 -->{{$t('Chart.Detail.l_axis')}}</el-radio-button>
 											<el-radio-button :label="1"><!-- 左轴 -->{{$t('Chart.Detail.l_axis')}}</el-radio-button>
 											<el-radio-button :label="0"><!-- 右轴 -->{{$t('Chart.Detail.r_axis')}}</el-radio-button>
 											<el-radio-button :label="0"><!-- 右轴 -->{{$t('Chart.Detail.r_axis')}}</el-radio-button>
 
 
@@ -786,7 +786,10 @@ export default {
 					}else {
 					}else {
 						//拼接标题
 						//拼接标题
 						this.chartInfo.ChartName =  this.sameOptionType.includes(this.chartInfo.ChartType) ? newval.map((item,index) => index === newval.length-1 ? item.EdbName : `${item.EdbName}和`).join('') : `${newval[0].EdbName}季节性`;
 						this.chartInfo.ChartName =  this.sameOptionType.includes(this.chartInfo.ChartType) ? newval.map((item,index) => index === newval.length-1 ? item.EdbName : `${item.EdbName}和`).join('') : `${newval[0].EdbName}季节性`;
-						this.EdbAxisChange()
+						//只有当新增指标or切换左右轴时,才更新上下限
+						if(this.updateLimit){
+							this.EdbAxisChange()
+						}
 						this.setAddChartDefault();
 						this.setAddChartDefault();
 						this.setChartOptionHandle(newval);
 						this.setChartOptionHandle(newval);
 					}
 					}

+ 26 - 8
src/views/dataEntry_manage/databaseComponents/jointTargetDia.vue

@@ -54,6 +54,7 @@
 						:remote-method="query=>{searchHandle(query)}"
 						:remote-method="query=>{searchHandle(query)}"
 						@click.native="inputFocusHandle"
 						@click.native="inputFocusHandle"
 						@blur="search_have_more = false"
 						@blur="search_have_more = false"
+						@change="chooseTarget(formData.pre_edb,'pre_edb')"
 					>
 					>
 						<i slot="prefix" class="el-input__icon el-icon-search"></i>
 						<i slot="prefix" class="el-input__icon el-icon-search"></i>
 						<el-option
 						<el-option
@@ -75,7 +76,7 @@
 							</div>
 							</div>
 						</el-option>
 						</el-option>
 					</el-select>
 					</el-select>
-					<span v-if="formData.pre_edb">({{$t('Edb.Detail.e_start_time')}}:{{ searchOptions.find(item => item.EdbInfoId === formData.pre_edb) ? searchOptions.find(item => item.EdbInfoId === formData.pre_edb).StartDate : ''}})</span>
+					<span v-if="formData.pre_date">({{$t('Edb.Detail.e_start_time')}}:{{ formData.pre_date}})</span>
 				</el-form-item>
 				</el-form-item>
 				<el-form-item :label="$t('EtaBasePage.label_concat_date_after')" prop="after_edb">
 				<el-form-item :label="$t('EtaBasePage.label_concat_date_after')" prop="after_edb">
 					<el-select
 					<el-select
@@ -90,7 +91,7 @@
 							:remote-method="query=>{searchHandle(query)}"
 							:remote-method="query=>{searchHandle(query)}"
 							@click.native="inputFocusHandle"
 							@click.native="inputFocusHandle"
 							@blur="search_have_more = false"
 							@blur="search_have_more = false"
-							@change="chooseTarget(formData.after_edb,'searchOptions')"
+							@change="chooseTarget(formData.after_edb,'after_edb')"
 						>
 						>
 							<i slot="prefix" class="el-input__icon el-icon-search"></i>
 							<i slot="prefix" class="el-input__icon el-icon-search"></i>
 							<el-option
 							<el-option
@@ -112,7 +113,7 @@
 								</div>
 								</div>
 							</el-option>
 							</el-option>
 						</el-select>
 						</el-select>
-						<span v-if="formData.after_edb">({{$t('Edb.Detail.e_latest_date')}}:{{ searchOptions.find(item => item.EdbInfoId === formData.after_edb) ? searchOptions.find(item => item.EdbInfoId === formData.after_edb).EndDate : ''}})</span>
+						<span v-if="formData.after_date">({{$t('Edb.Detail.e_latest_date')}}:{{ formData.after_date }})</span>
 				</el-form-item>
 				</el-form-item>
 			</template>
 			</template>
 			<template v-else>
 			<template v-else>
@@ -129,7 +130,7 @@
 						:remote-method="query=>{searchHandle(query,'month')}"
 						:remote-method="query=>{searchHandle(query,'month')}"
 						@click.native="e => {inputFocusHandle(e,'month')} "
 						@click.native="e => {inputFocusHandle(e,'month')} "
 						@blur="search_have_more = false"
 						@blur="search_have_more = false"
-						@change="chooseTarget(formData.old_stay_edb,'searchMonthOptions')"
+						@change="chooseTarget(formData.old_stay_edb,'old_stay_edb')"
 						>
 						>
 							<i slot="prefix" class="el-input__icon el-icon-search"></i>
 							<i slot="prefix" class="el-input__icon el-icon-search"></i>
 							<el-option
 							<el-option
@@ -151,7 +152,7 @@
 								</div>
 								</div>
 							</el-option>
 							</el-option>
 						</el-select>
 						</el-select>
-					<span v-if="formData.old_stay_edb">({{$t('EtaBasePage.label_end_date')}}:{{searchMonthOptions.find(item => item.EdbInfoId === formData.old_stay_edb) ? searchMonthOptions.find(item => item.EdbInfoId === formData.old_stay_edb).EndDate : ''}})</span>
+					<span v-if="formData.old_stay_date">({{$t('EtaBasePage.label_end_date')}}:{{ formData.old_stay_date }})</span>
 				</el-form-item>
 				</el-form-item>
 				<el-form-item :label="$t('EtaBasePage.label_onyear_date')" prop="concat_edb">
 				<el-form-item :label="$t('EtaBasePage.label_onyear_date')" prop="concat_edb">
 					<el-select
 					<el-select
@@ -272,7 +273,7 @@ export default {
 
 
 				// this.searchHandle();
 				// this.searchHandle();
 				const backData = _.cloneDeep(this.params);
 				const backData = _.cloneDeep(this.params);
-				this.default_type = backData.source === 23||backData.source === 47 ? 1 : 2;
+				this.default_type = [23,47].includes(backData.source) ? 1 : 2;
 
 
 				this.formData = {
 				this.formData = {
 					date: backData.date,
 					date: backData.date,
@@ -287,13 +288,16 @@ export default {
 				}
 				}
 
 
 				//options 回显
 				//options 回显
-				if(backData.source === 23||backData.source === 47) {
+				if([23,47].includes(backData.source)) {
 					this.searchOptions = backData.from_arr.map(item => ({
 					this.searchOptions = backData.from_arr.map(item => ({
 						EdbInfoId: item.FromEdbInfoId,
 						EdbInfoId: item.FromEdbInfoId,
 						EdbName: item.FromEdbName,
 						EdbName: item.FromEdbName,
 						StartDate: item.StartDate,
 						StartDate: item.StartDate,
 						EndDate: item.EndDate,
 						EndDate: item.EndDate,
 					}))
 					}))
+
+					this.formData.pre_date = backData.from_arr[0].StartDate
+					this.formData.after_date = backData.from_arr[0].EndDate
 				}else {
 				}else {
 					this.searchMonthOptions = backData.from_arr.filter(obj => obj.FromTag === 'A').map(item => ({
 					this.searchMonthOptions = backData.from_arr.filter(obj => obj.FromTag === 'A').map(item => ({
 						EdbInfoId: item.FromEdbInfoId,
 						EdbInfoId: item.FromEdbInfoId,
@@ -301,6 +305,8 @@ export default {
 						StartDate: item.StartDate,
 						StartDate: item.StartDate,
 						EndDate: item.EndDate,
 						EndDate: item.EndDate,
 					}));
 					}));
+					
+					this.formData.old_stay_date = backData.from_arr.find(obj => obj.FromTag === 'A').EndDate
 
 
 					this.searchMonthConcatOptions = backData.from_arr.filter(obj => obj.FromTag === 'B').map(item => ({
 					this.searchMonthConcatOptions = backData.from_arr.filter(obj => obj.FromTag === 'B').map(item => ({
 						EdbInfoId: item.FromEdbInfoId,
 						EdbInfoId: item.FromEdbInfoId,
@@ -376,8 +382,11 @@ export default {
 			formData: {
 			formData: {
 				date: '',
 				date: '',
 				pre_edb: '',
 				pre_edb: '',
+				pre_date: '',
 				after_edb: '',
 				after_edb: '',
+				after_date: '',
 				old_stay_edb: '',
 				old_stay_edb: '',
+				old_stay_date: '',
 				concat_edb: '',
 				concat_edb: '',
 				edb_name: '',
 				edb_name: '',
 				menu: '',
 				menu: '',
@@ -449,13 +458,22 @@ export default {
 		// 选中指标更新默认值
 		// 选中指标更新默认值
 		chooseTarget(val,key){
 		chooseTarget(val,key){
 			if(!val) return
 			if(!val) return
-			const arr=key==='searchMonthOptions'?this.searchMonthOptions:this.searchOptions
+			const arr=key==='old_stay_edb'?this.searchMonthOptions:this.searchOptions
+			
 			let obj = arr.find(item => item.EdbInfoId === val);
 			let obj = arr.find(item => item.EdbInfoId === val);
 			console.log(obj);
 			console.log(obj);
 			this.formData.edb_name=`${obj.EdbName}/拼接`
 			this.formData.edb_name=`${obj.EdbName}/拼接`
 			this.formData.menu=obj.ClassifyId||''
 			this.formData.menu=obj.ClassifyId||''
 			this.formData.frequency=obj.Frequency
 			this.formData.frequency=obj.Frequency
 			this.formData.unit=obj.Unit
 			this.formData.unit=obj.Unit
+
+			//日期也要常驻显示 加字段存了
+			const showDateMap = {
+				'old_stay_edb': { key:'old_stay_date',valKey:'EndDate' },
+				'after_edb': { key:'after_date',valKey:'EndDate' },
+				'pre_edb': { key:'pre_date',valKey:'StartDate' }
+			}
+			this.formData[showDateMap[key].key] = obj[showDateMap[key].valKey]
 		},
 		},
 
 
 		/* 搜索 */
 		/* 搜索 */

+ 5 - 2
src/views/dataEntry_manage/editChart.vue

@@ -221,7 +221,7 @@
 										<el-checkbox v-model="item.IsOrder"><!-- 逆序 -->{{$t('Chart.Detail.re_order')}}</el-checkbox>
 										<el-checkbox v-model="item.IsOrder"><!-- 逆序 -->{{$t('Chart.Detail.re_order')}}</el-checkbox>
 									</li>
 									</li>
 									<li>
 									<li>
-										<el-radio-group v-model="item.IsAxis" size="mini">
+										<el-radio-group v-model="item.IsAxis" size="mini" @input="isChangeEdbAxis=true">
 											<el-radio-button :label="1"><!-- 左轴 -->{{$t('Chart.Detail.l_axis')}}</el-radio-button>
 											<el-radio-button :label="1"><!-- 左轴 -->{{$t('Chart.Detail.l_axis')}}</el-radio-button>
 											<el-radio-button :label="0"><!-- 右轴 -->{{$t('Chart.Detail.r_axis')}}</el-radio-button>
 											<el-radio-button :label="0"><!-- 右轴 -->{{$t('Chart.Detail.r_axis')}}</el-radio-button>
 											<!-- 指标有右轴时才可以选右2轴 不然没有右2这个概念的意义 -->
 											<!-- 指标有右轴时才可以选右2轴 不然没有右2这个概念的意义 -->
@@ -794,7 +794,10 @@ export default {
 						//雷达图
 						//雷达图
 						this.chartInfo.ChartType === 11 && this.$refs.BarOptRef && this.$refs.BarOptRef.getBarData();
 						this.chartInfo.ChartType === 11 && this.$refs.BarOptRef && this.$refs.BarOptRef.getBarData();
 					}else {
 					}else {
-						this.EdbAxisChange()
+						//只有当新增指标or切换左右轴时,才更新上下限
+						if(this.updateLimit){
+							this.EdbAxisChange()
+						}
 						this.setAddChartDefault();
 						this.setAddChartDefault();
 						newval.length && !this.chartInfo.WarnMsg && this.setChartOptionHandle(newval);
 						newval.length && !this.chartInfo.WarnMsg && this.setChartOptionHandle(newval);
 					}
 					}

+ 21 - 4
src/views/dataEntry_manage/mixins/addOreditMixin.js

@@ -84,13 +84,20 @@ export default {
 			},
 			},
 
 
 			updateData:[],
 			updateData:[],
-			useUnit:''
+			useUnit:'',
+
+			isModifyEdb:false,//添加,删除指标后,该值为true,触发设置上下限后,该值为false
+			isChangeEdbAxis:false,//指标左右轴,数据转换改变时,该值为true,触发设置上下限后,该值为false
 		}
 		}
 	},
 	},
 	computed: {
 	computed: {
 		...mapState({
 		...mapState({
 			chart_lang: state => state.edb.chart_lang,	
 			chart_lang: state => state.edb.chart_lang,	
-		})
+		}),
+		//是否需要更新上下限
+		updateLimit(){
+			return this.isModifyEdb||this.isChangeEdbAxis
+		}
 	},
 	},
 	watch: {
 	watch: {
 		edbFromType() {
 		edbFromType() {
@@ -191,6 +198,7 @@ export default {
 					return this.$message.warning("指标数据含有负数或0,无法进行对数运算")
 					return this.$message.warning("指标数据含有负数或0,无法进行对数运算")
 				}
 				}
 			}
 			}
+			this.isChangeEdbAxis = true
 			//柱形图单独设置
 			//柱形图单独设置
 			if(this.chartInfo.ChartType===7){
 			if(this.chartInfo.ChartType===7){
 				return this.setChangeBarData(index)
 				return this.setChangeBarData(index)
@@ -331,7 +339,11 @@ export default {
 								});
 								});
 							}
 							}
 							//新增指标后,检测上下限变化,修改上下限
 							//新增指标后,检测上下限变化,修改上下限
-							this.EdbAxisChange()
+							this.isModifyEdb = true
+							if(this.updateLimit){
+								this.EdbAxisChange()
+							}
+							
 
 
 							this.$nextTick(()=>{
 							this.$nextTick(()=>{
 								// 等待 tableData的 监听里面的获取到 起始时间和最近日期
 								// 等待 tableData的 监听里面的获取到 起始时间和最近日期
@@ -689,7 +701,10 @@ export default {
 			this.updateData.splice(index, 1)
 			this.updateData.splice(index, 1)
 			this.$message.success(this.$t('MsgPrompt.delete_msg'))
 			this.$message.success(this.$t('MsgPrompt.delete_msg'))
 			//删除指标时,检测上下限,修改上下限
 			//删除指标时,检测上下限,修改上下限
-			this.EdbAxisChange()
+			this.isModifyEdb = true
+			if(this.updateLimit){
+				this.EdbAxisChange()
+			}
 			//添加图表时重置默认样式
 			//添加图表时重置默认样式
 			this.$route.path==='/addchart' && this.resetChartEdbDefault();
 			this.$route.path==='/addchart' && this.resetChartEdbDefault();
 			
 			
@@ -1073,6 +1088,8 @@ export default {
 				//若用户修改过,则检测轴的上下限是否为空,若为空,则需要计算对应轴的上下限
 				//若用户修改过,则检测轴的上下限是否为空,若为空,则需要计算对应轴的上下限
 				this.checkChartLimit(this.tableData)
 				this.checkChartLimit(this.tableData)
 			}
 			}
+			this.isModifyEdb = false
+			this.isChangeEdbAxis = false
 		},
 		},
 		//新增/编辑保存图表时-判断用户有没有手动更改过上下限
 		//新增/编辑保存图表时-判断用户有没有手动更改过上下限
 		getLimitInfo(){
 		getLimitInfo(){

+ 1 - 1
src/views/dataEntry_manage/targetList.vue

@@ -563,7 +563,7 @@ export default {
 				TradeCode:item.TradeCode
 				TradeCode:item.TradeCode
 			}).then(res => {
 			}).then(res => {
 				if(res.Data.Status===1){
 				if(res.Data.Status===1){
-					this.$message.error("该指标已加入ETA指标库,不可删除")
+					this.$message.error("该指标已加入指标库,不可删除")
 					return
 					return
 				}else{
 				}else{
 					this.$confirm(
 					this.$confirm(

+ 569 - 0
src/views/dataEntry_manage/thirdBase/bloombergSource.vue

@@ -0,0 +1,569 @@
+<template>
+    <div class="bloomberg-source-wrap">
+        <div class="page-header">
+            <div class="header-select-box">
+                <!-- 频度 -->
+                <el-select v-model="selectOption.frequenceSelect" 
+                    :placeholder="$t('Edb.InputHolderAll.input_fre')" 
+                    @change="selectOptionChange('frequenceSelect')"
+                    clearable 
+                    style="width:240px">
+                    <el-option v-for="i in frequencyList" :key="i"
+                            :label="i" :value="i"
+                        />
+                </el-select>
+                <!-- 指标ID/名称 -->
+                <el-input 
+                    v-model="selectOption.keywordSelect" 
+                    prefix-icon="el-icon-search"
+                    :placeholder="$t('Edb.InputHolderAll.input_name_orid')" 
+                    @input="selectOptionChange('keywordSelect')"
+                    clearable 
+                    style="width:360px"></el-input>
+                <!-- 列表全选 -->
+                <el-checkbox 
+                    :indeterminate="isIndeterminate" 
+                    v-model="isCheckAll" 
+                    @change="listCheckAllChange">{{ $t('YsDataPage.label_all_check') }}</el-checkbox>
+            </div>
+            <!-- 添加到指标库 -->
+            <el-button v-permission="permissionBtn.dataSourcePermission.Bloomberg_add2edb" :disabled="total===0"
+                type="primary" @click="handleCheckDialogShow(false,{})">{{ $t('YsDataPage.add_base_btn') }}</el-button>
+        </div>
+        <div class="page-table">
+            <el-table :data="tableData" border
+                ref="edbDataRef"
+                @selection-change="selectionChange"
+                @select="selectHandle" 
+                @select-all="selectAllHandle"
+                @sort-change="handleSortChange"
+            >
+                <!-- 多选 -->
+                <el-table-column
+                    align="center"
+                    type="selection"
+                    width="55">
+                </el-table-column>
+                <el-table-column
+                    v-for="column in tableColumns" :key="column.key"
+                    :prop="column.key"
+                    :label="column.label"
+                    :sortable="column.sortable?column.sortable:false"
+                    align="center">
+                </el-table-column>
+                <el-table-column :label="$t('Table.column_operations')" align="center">
+                    <template slot-scope="{row}">
+                        <el-button type="text" @click="handleCheckDialogShow(true,row)"
+                        v-if="!row.EdbExist&&permissionBtn.isShowBtn('dataSourcePermission','Bloomberg_add2edb')">{{ $t('YsDataPage.add_base_btn') }}</el-button>
+                    </template>
+                </el-table-column>
+            </el-table>
+            <el-pagination 
+                :current-page="currentPage"
+                :page-size="pageSize"
+                :total="total"
+                @current-change="handleCurrentChange"
+            />
+        </div>
+        <!-- 操作提示弹窗 -->
+        <el-dialog 
+            :title="$t('BloombergPage.operation_prompt')"
+            :visible.sync="isHintDialogShow"
+            :close-on-click-modal="false"
+            :modal-append-to-body="false"
+            @close="isHintDialogShow=false"
+            width="578px"
+            v-dialogDrag
+            center>
+            <div class="hint-dialog-wrap">
+                <p style="margin-bottom: 20px;">{{ hintText }}</p>
+                <ul>
+                    <li v-for="(item,index) in afterAddList" :key="index" class="hint-item" @click="gotoEdbDetail(item)">
+                        {{ index+1 }}、{{ item.IndexName }}({{ item.IndexCode }})
+                    </li>
+                </ul>
+            </div>
+            <div style="text-align: center;margin-bottom: 30px;">
+                    <el-button type="primary" @click="handleCloseDialog">{{$t('Dialog.known')}}</el-button>
+                </div>
+        </el-dialog>
+        <!-- 添加到指标库弹窗 -->
+        <el-dialog 
+            :title="$t('YsDataPage.add_base_btn')"
+            :visible.sync="isAddDialogShow"
+            :close-on-click-modal="false"
+            :modal-append-to-body="false"
+            @close="isAddDialogShow=false"
+            width="900px"
+            top="5vh"
+            v-dialogDrag
+            center>
+            <div class="add-dialog-wrap">
+                <el-form :model="addForm" ref="addFormRef">
+                    <div class="group" v-for="(item,index) in addForm.list" :key="index">
+                        <div class="item-header">
+                            <span @click="item.expand=!item.expand">
+                                {{ item.IndexCode }}
+                                <i :class="item.expand?'el-icon-arrow-up':'el-icon-arrow-down'"></i>
+                            </span>
+                        </div>
+                        <div class="form-wrap" v-show="item.expand">
+                            <el-form-item 
+                                :prop="`list[${index}].IndexName`" 
+                                :rules="[
+                                    {required:true,message:$t('Edb.InputHolderAll.input_name'),trigger: 'blur'},
+                                    {validator:edbNameCheck}
+                                ]">
+                                <el-input v-model="item.IndexName"></el-input>
+                            </el-form-item>
+                            <el-form-item :prop="`list[${index}].Unit`" :rules="{required:true,message:$t('Edb.InputHolderAll.input_unit'),trigger: 'blur'}">
+                                <el-input v-model="item.Unit"
+                                    :placeholder="$t('Edb.InputHolderAll.input_fre')">
+                                </el-input>
+                            </el-form-item>
+                            <el-form-item :prop="`list[${index}].Frequency`" :rules="{required:true,message:$t('Edb.InputHolderAll.input_fre'),trigger: 'blur'}">
+                                <el-select v-model="item.Frequency" :placeholder="$t('Edb.InputHolderAll.input_fre')" >
+                                    <el-option v-for="i in frequencyList" :key="i"
+                                            :label="i" :value="i"
+                                        />
+                                </el-select>
+                            </el-form-item>
+                            <el-form-item :prop="`list[${index}].ClassifyId`" :rules="{required:true,message:$t('Edb.InputHolderAll.input_menu'),trigger: 'blur'}">
+                                <el-cascader v-model="item.ClassifyId"
+                                :placeholder="$t('Edb.InputHolderAll.input_menu')"
+                                :options="edbCatalogList" 
+                                :props="{
+                                    label: 'ClassifyName',
+                                    value: 'ClassifyId',
+                                    children: 'Children',
+                                    checkStrictly: true,
+                                    emitPath:false
+                                }"
+                                ></el-cascader>
+                            </el-form-item>
+                        </div>
+                        
+                    </div>
+                </el-form>
+            </div>
+            <div style="text-align: center;margin-bottom: 30px;">
+                    <el-button @click="isAddDialogShow=false">{{$t('Dialog.cancel_btn')}}</el-button>
+                    <el-button type="primary" @click="handleSaveCheck" :loading="btnLoading">{{$t('Dialog.confirm_save_btn')}}</el-button>
+                </div>
+        </el-dialog>
+    </div>
+</template>
+
+<script>
+import {bloombergInterface,dataBaseInterface} from '@/api/api.js'
+export default {
+    data() {
+        return {
+            selectOption:{
+                frequenceSelect:'',
+                keywordSelect:'',
+                sortParam:'',
+                sortType:''
+            },
+            frequencyList:['日度','周度','旬度','月度','季度','半年度','年度'],
+            tableData:[],
+            tableDataIds:[],
+            currentPage:1,
+            pageSize:10,
+            total:2,
+
+            isIndeterminate:false,
+            isCheckAll:false,//与isIndeterminate一起表示列表全选的状态
+            isSelectAll:false,//是否勾选了列表全选:为true时,selectList是剔除的指标,为false时selectList是已选择的指标
+            selectList:[],//已选择/已剔除的指标id
+            selectionReactCancel:false,//select-事件触发时,为true;该事件触发完成后,为false;
+            
+            isHintDialogShow:false,
+            afterAddList:[],//已添加进指标库的指标
+            beforeAddList:[],//需要添加进指标库的指标
+            edbCatalogList:[],//指标库目录数据
+            isAddDialogShow:false,
+            addForm:{
+                list:[
+                    /* {
+                        IndexName:'',
+                        Unit:'',
+                        Frequency:'',
+                        ClassifyId:''
+                    } */
+                ]
+            },
+            checkedList:[],//重名的指标code
+            btnLoading:false,
+
+        };
+    },
+    computed:{
+        tableColumns(){
+            return [
+                    {key:'IndexCode',label:this.$t('Edb.Detail.e_id')}, //指标ID
+                    {key:'IndexName',label:this.$t('Edb.Detail.e_name')},//指标名称
+                    {key:'Frequency',label:this.$t('Edb.Detail.e_fre')},//频度
+                    {key:'StartDate',label:this.$t('DataBankPage.table_col_start_time'),sortable:true},//指标开始时间
+                    {key:'EndDate',label:this.$t('DataBankPage.table_col_newest_time'),sortable:true},//指标最新时间
+                    {key:'ModifyTime',label:this.$t('Edb.Detail.e_update_time'),sortable:true} //更新时间
+                ]
+        },
+        hintText(){
+            let key = 0
+            if(this.afterAddList.length) key++
+            if(!this.beforeAddList.length) key++
+            return {
+                0:'',
+                1:this.$t('YsDataPage.haved_all_msg'),//本次添加的指标均已在指标库中,请勿重复添加!
+                2:this.$t('YsDataPage.haved_some_msg'),//指标库中已存在以下指标,会自动过滤!
+            }[key]
+        }
+    },
+    methods: {
+        getEdbCatalog() {
+            dataBaseInterface.menuListV3().then(res => {
+            if(res.Ret === 200) {
+                this.edbCatalogList = res.Data.AllNodes || [];
+                this.filterNodes(this.edbCatalogList);
+            }
+            })
+        },
+        // 递归改变目录结构
+        filterNodes(arr) {
+            arr.length && arr.forEach(item => {
+            item.Children.length && this.filterNodes(item.Children)
+            if(!item.Children.length) {
+                item.Children=null
+            }
+            })
+        },
+        getTableData(type){
+            const {frequenceSelect,keywordSelect,sortParam,sortType} = this.selectOption
+            bloombergInterface.getTableList({
+                PageSize:this.pageSize,
+                CurrentIndex:this.currentPage,
+                Frequency:frequenceSelect,
+                Keywords:keywordSelect,
+                SortField:sortParam,
+                SortRule:sortType
+            }).then(res=>{
+                if(res.Ret!==200) return 
+                this.tableData = res.Data.List||[]
+                this.total = res.Data.Paging.Totals
+                if(this.tableData.length>0){
+                    this.tableDataIds = this.tableData.map(it => it.IndexCode)
+                }else{
+                    this.tableDataIds = []
+                }
+                if(type==='optionChange'){
+                    //如果是表格筛选项改变导致重新请求数据
+                    //数据获取完成后,列表全选,表格全选
+                    this.selectList = []
+                    this.listCheckAllChange(true)
+                }else{
+                    //若不是,数据获取完成后,查询列表全选的值
+                    //若当页有数据在selectList内,则勾选/剔除
+                    this.adjustSelection()
+                }
+            })
+            
+        },
+        handleCurrentChange(page){
+            this.currentPage = page
+            this.getTableData()
+        },
+        handleSortChange({prop,order}){
+            console.log('prop',prop,'order',order)
+            const propMap={
+                'StartDate':1,
+                'EndDate':2,
+                'ModifyTime':3
+            }
+            this.selectOption.sortParam = order?propMap[prop]||'':''
+            this.selectOption.sortType = order?order==='ascending'?1:2:''
+            this.selectOptionChange()
+        },
+        //表格筛选项改变时触发
+        selectOptionChange(type){
+            //若是取消筛选,则不进行全选
+            const optionValue = this.selectOption[type]
+            if(!optionValue){
+                this.isSelectAll = false
+                this.selectList = []
+                this.isIndeterminate = false
+                this.isCheckAll = false
+            }
+            this.currentPage = 1
+            this.getTableData(optionValue?'optionChange':'')
+        },
+        //列表全选改变
+        listCheckAllChange(value){
+            this.selectList = []
+            this.isSelectAll = value
+            this.$refs.edbDataRef && this.$refs.edbDataRef.clearSelection()
+            if(value){
+                this.$refs.edbDataRef && this.$refs.edbDataRef.toggleAllSelection()
+            }
+        },
+        selectionChange(){
+            if(this.selectionReactCancel) return 
+            // selectAllHandle的触发在selectionChange后面,将selectionChange的逻辑延迟一下
+            setTimeout(()=>{
+                // 去重
+                let duplicateArr = Array.from(new Set(this.selectList))
+                //isSelectAll为true时,selectList表示需要剔除的项
+                //isSelectAll为false时,selectList表示需要勾选的项
+                //全选
+                if((duplicateArr.length == this.total && (!this.isSelectAll))|| (duplicateArr.length == 0 && this.isSelectAll)){
+                    this.isCheckAll = true
+                    this.isIndeterminate=false
+                //全不选
+                }else if((duplicateArr.length == 0 && (!this.isSelectAll))|| (duplicateArr.length == this.total && this.isSelectAll)){
+                    this.isCheckAll = false
+                    this.isIndeterminate=false
+                //半选
+                }else{
+                    this.isCheckAll = false
+                    this.isIndeterminate=true
+                }
+            },1)
+        },
+        selectHandle(selection,row){
+            if(this.selectionReactCancel) return 
+            let check = false; 
+            if(selection.some(it => it.IndexCode == row.IndexCode)){
+                // 勾选
+                if(this.isSelectAll){
+                    check=false
+                }else{
+                    check=true
+                }
+            }else{
+                // 取消勾选
+                if(this.isSelectAll){
+                    check=true
+                }else{
+                    check=false
+                }
+            }
+            if(check){
+                this.selectList.push(row.IndexCode)
+                }else{
+                this.selectList=this.selectList.filter(it => it!=row.IndexCode)
+            }
+        },
+        selectAllHandle(selection){
+            if(this.selectionReactCancel) return 
+            let check = false; 
+            if(selection && selection.length>0){
+                // 全选
+                if(this.isSelectAll){
+                    check=false
+                }else{
+                    check=true
+                }
+            }else{
+                // 全不选
+                if(this.isSelectAll){
+                    check=true
+                }else{
+                    check=false
+                }
+            }
+            if(check){
+                this.selectList =  [...this.selectList,...this.tableDataIds]
+            }else{
+                this.selectList = this.selectList.filter(it => !this.tableDataIds.includes(it))
+            }
+        },
+        adjustSelection(){
+            this.selectionReactCancel=true
+            if(!this.isSelectAll){
+                this.selectList.map(it =>{
+                    let row = this.tableData.find(da => da.IndexCode==it)
+                    if(row){
+                        setTimeout(()=>{
+                            this.$refs.edbDataRef.toggleRowSelection(row,true)
+                        },10)
+                    }
+                })
+            }else{
+                this.$refs.edbDataRef && this.$refs.edbDataRef.clearSelection()
+                this.$refs.edbDataRef &&this.$refs.edbDataRef.toggleAllSelection()
+                this.selectList.map(it =>{
+                    let row = this.tableData.find(da => da.IndexCode==it)
+                    if(row){
+                        setTimeout(()=>{
+                            this.$refs.edbDataRef.toggleRowSelection(row,false)
+                        },50)
+                    }
+                })
+            }
+            setTimeout(()=>{
+                this.selectionReactCancel=false
+            },50)
+        },
+        handleCheckDialogShow(isSingle=false,data={}){
+            //check
+            const {frequenceSelect,keywordSelect,sortParam,sortType} = this.selectOption
+            bloombergInterface.edbAddCheck({
+                Frequency:frequenceSelect,
+                Keywords:keywordSelect,
+                SortField:sortParam||0,
+                SortRule:sortType||0,
+                ListAll:isSingle?false:this.isSelectAll,
+                IndexCodes:isSingle?[data.IndexCode]:this.selectList
+            }).then(res=>{
+                if(res.Ret!==200) return 
+                const edbList = res.Data||[]
+                this.afterAddList = edbList.filter(i=>i.EdbExist===1)
+                this.beforeAddList = edbList.filter(i=>i.EdbExist===0).map(i=>{return{...i,expand:true}})
+                this.afterAddList.length&&(this.isHintDialogShow=true)
+                !this.afterAddList.length&&this.handleCloseDialog()
+            })
+        },
+        //操作提示弹窗关闭
+        handleCloseDialog(){
+            this.isHintDialogShow = false
+            //判断是否要展示下一个弹窗
+            if(this.beforeAddList.length){
+                this.addForm.list = this.beforeAddList
+                this.isAddDialogShow = true
+            }
+        },
+        //重名校验
+        edbNameCheck(rule,value,callback){
+            if(this.checkedList.includes(value)){
+                callback(this.$t('BloombergPage.add_edb_check_hint2'))
+            }else{
+                callback()
+            }
+        },
+        //保存前校验
+        async handleSaveCheck(){
+            //表单校验
+            try{
+                await this.$refs.addFormRef.validate()
+            }catch(e){
+                return
+            }
+            //重名校验
+            this.checkedList = []
+            bloombergInterface.edbNameCheck(
+                this.addForm.list.map(i=>{return{EdbCode:i.IndexCode,EdbName:i.IndexName}})
+            ).then(res=>{
+                if(res.Ret!==200) return 
+                this.checkedList = res.Data.filter(i=>i.Exist).map(i=>i.EdbName)
+                if(this.checkedList.length){
+                    this.$refs.addFormRef.validate()
+                }else{
+                    this.saveEdb()
+                }
+            })
+        },
+        //批量新增
+        saveEdb(){
+            this.btnLoading = true
+            bloombergInterface.edbBatchAdd(
+                this.addForm.list.map(i=>{
+                    return {
+                        EdbCode:i.IndexCode,
+                        EdbName:i.IndexName,
+                        Frequency:i.Frequency,
+                        Unit:i.Unit,
+                        ClassifyId:i.ClassifyId
+                    }
+                })
+            ).then(res=>{
+                this.btnLoading = false
+                if(res.Ret!==200) return 
+                this.$message.success(this.$t('MsgPrompt.add_msg2'))
+                this.isAddDialogShow = false
+                this.handleCurrentChange(1)
+            })
+        },
+        //跳转至指标详情
+        gotoEdbDetail(data){
+            const {EdbClassifyId,EdbInfoId,EdbUniqueCode} = data||{}
+            const href = this.$router.resolve({
+                path:'/database',
+                query:{
+                    code:EdbUniqueCode,
+                    id:EdbInfoId,
+                    classifyId:EdbClassifyId,
+                }
+            }).href
+            window.open(href,"_blank")
+        }
+    },
+    mounted(){
+        this.getTableData()
+        this.getEdbCatalog()
+    },
+};
+</script>
+
+<style lang="scss">
+.bloomberg-source-wrap{
+    .add-dialog-wrap{
+        .el-form{
+            .group{
+                .item-header{
+                    margin-bottom: 20px;
+                }
+                .form-wrap{
+                    display: flex;
+                    gap:10px;
+                    .el-input{
+                        width: 100%;
+                    }
+                }
+            }
+        }
+    }
+}
+</style>
+<style scoped lang="scss">
+.bloomberg-source-wrap{
+    min-height: calc(100vh - 120px);
+    display: flex;
+    flex-direction: column;
+    background-color: #fff;
+    border:1px solid #C8CDD9;
+    border-radius: 4px;
+    padding:20px;
+    box-sizing: border-box;
+    .page-header{
+        display: flex;
+        justify-content: space-between;
+        .header-select-box{
+            display: flex;
+            gap:20px;
+            align-items: center;
+        }
+    }
+    .page-table{
+        .el-table{
+            margin:20px 0;
+            .el-button--text{
+                padding:0;
+            }
+        }
+        .el-pagination{
+            text-align: right;
+        }
+    }
+    .hint-dialog-wrap{
+        padding-bottom:30px;
+        .hint-item{
+            cursor: pointer;
+            margin-bottom: 10px;
+            &:hover{
+                color:#409EFF;
+                text-decoration: underline;
+            }
+        }
+    }
+}
+</style>

+ 1 - 1
src/views/dataSource_manage/components/EDBInfoChangeTable.vue

@@ -208,7 +208,7 @@ export default {
         getTableHeadTips(key){
         getTableHeadTips(key){
             const tipsMap={
             const tipsMap={
                 EdbNameSource:this.$t('DataReportManage.GlStatisticTable.table_tips01')||'指标在数据源的全称',
                 EdbNameSource:this.$t('DataReportManage.GlStatisticTable.table_tips01')||'指标在数据源的全称',
-                EdbName:this.$t('DataReportManage.GlStatisticTable.table_tips13')||'指标在ETA指标库保存的指标名称',
+                EdbName:this.$t('DataReportManage.GlStatisticTable.table_tips13')||'指标在指标库保存的指标名称',
                 ErDataUpdateDate:this.$t('DataReportManage.GlStatisticTable.table_tips03')||'指标数据发生变化的最早日期',
                 ErDataUpdateDate:this.$t('DataReportManage.GlStatisticTable.table_tips03')||'指标数据发生变化的最早日期',
             }
             }
             return tipsMap[key]
             return tipsMap[key]

+ 38 - 24
src/views/operation_manage/AIQA/AIQA.vue

@@ -31,16 +31,16 @@
                     <span>{{activeWindowId<=0?$t('ToolBox.AIQuestion.AI_use_intro'):`${historyList.length||0} messages`}}</span>
                     <span>{{activeWindowId<=0?$t('ToolBox.AIQuestion.AI_use_intro'):`${historyList.length||0} messages`}}</span>
                 </div>
                 </div>
                 <div class="select-box">
                 <div class="select-box">
-                    <!-- <el-select v-model="model" :class="{'hint':showHint}" :disabled="isTyping||(windowContentLoading&&windowContentLoading.visible)" ref="modelSelect" 
+                    <el-select v-model="model" :class="{'hint':showHint}" :disabled="isTyping||(windowContentLoading&&windowContentLoading.visible)" ref="modelSelect" 
                         @click.native="selectClick"
                         @click.native="selectClick"
                         @change="changeModel">
                         @change="changeModel">
                         <el-option v-for="item in modelList" :key="item.label"
                         <el-option v-for="item in modelList" :key="item.label"
                             :label="item.label"
                             :label="item.label"
-                            :value="item.label">
+                            :value="item.key">
                             <span style="float:left">{{item.label}}</span>
                             <span style="float:left">{{item.label}}</span>
-                            <span style="float:right"><img :src="item.icon" style="margin-top:5px;width:24px;height:24px;"/></span>
+                            <!-- <span style="float:right"><img :src="item.icon" style="margin-top:5px;width:24px;height:24px;"/></span> -->
                         </el-option>
                         </el-option>
-                    </el-select> -->
+                    </el-select>
                 </div>
                 </div>
             </div>
             </div>
             <!-- 仅这一部分滚动 -->
             <!-- 仅这一部分滚动 -->
@@ -100,29 +100,35 @@ export default {
             /* window-content*/
             /* window-content*/
             historyList:[],//当前窗口历史记录
             historyList:[],//当前窗口历史记录
             inputText:'',
             inputText:'',
-            model:'GPT-4 Turbo',//当前选择的模型
+            model:'Kimi',//当前选择的模型
             modelOldValue:'',
             modelOldValue:'',
             modelList:[
             modelList:[
                 {
                 {
-                    label:'GPT-4 Turbo',
+                    label:'GPT',
+                    key:'GPT-4 Turbo',
                     icon:require('@/assets/img/icons/gpt-4-turbo.png'),
                     icon:require('@/assets/img/icons/gpt-4-turbo.png'),
                 },
                 },
                 {
                 {
-                    label:'GPT4',
-                    icon:require('@/assets/img/icons/gpt-4.png'),
-                },
-                {
-                    label:'gpt-3.5-turbo-16k',
-                    icon:require('@/assets/img/icons/chat-gpt-16k.png'),
-                },
-                {
-                    label:'gpt-3.5-turbo',
-                    icon:require('@/assets/img/icons/chat-gpt.png'),
-                },
-                {
-                    label:'eta',
-                    icon:require('@/assets/img/icons/horizon.png'),
+                    label:'Kimi',
+                    key:'Kimi',
+                    icon:require('@/assets/img/icons/gpt-4-turbo.png'),
                 },
                 },
+                // {
+                //     label:'GPT4',
+                //     icon:require('@/assets/img/icons/gpt-4.png'),
+                // },
+                // {
+                //     label:'gpt-3.5-turbo-16k',
+                //     icon:require('@/assets/img/icons/chat-gpt-16k.png'),
+                // },
+                // {
+                //     label:'gpt-3.5-turbo',
+                //     icon:require('@/assets/img/icons/chat-gpt.png'),
+                // },
+                // {
+                //     label:'eta',
+                //     icon:require('@/assets/img/icons/horizon.png'),
+                // },
             ],//模型列表
             ],//模型列表
             showHint:false,//选择模型提示
             showHint:false,//选择模型提示
             isTyping:false,//是否处于打字动画中
             isTyping:false,//是否处于打字动画中
@@ -184,7 +190,7 @@ export default {
 
 
                 this.windowContentLoading&&this.windowContentLoading.close()
                 this.windowContentLoading&&this.windowContentLoading.close()
                 //使用模型
                 //使用模型
-                this.model = this.historyList.length?this.historyList[this.historyList.length-1].Model:'GPT-4 Turbo'
+                this.model = this.historyList.length?this.historyList[this.historyList.length-1].Model:'Kimi'
                 //如果有历史记录,则滚动到底部
                 //如果有历史记录,则滚动到底部
                 this.windowContentToBottom()
                 this.windowContentToBottom()
             })
             })
@@ -236,7 +242,7 @@ export default {
             this.activeWindowId=0
             this.activeWindowId=0
             this.activeWindow=null
             this.activeWindow=null
             this.historyList=[]
             this.historyList=[]
-            this.model='GPT-4 Turbo'
+            this.model='Kimi'
             this.aiFileIds=[]
             this.aiFileIds=[]
             //this.inputText=''
             //this.inputText=''
             this.isTyping = false
             this.isTyping = false
@@ -294,9 +300,16 @@ export default {
             //非新建窗口时,模型之间切换需弹窗提示
             //非新建窗口时,模型之间切换需弹窗提示
             if(this.activeWindowId!==0&&value!==''){
             if(this.activeWindowId!==0&&value!==''){
                 //弹窗提示:切换模型
                 //弹窗提示:切换模型
-                this.$confirm("切换回答模型,则切换后的模型无法联系上下文进行回答,确认切换吗?", "提示", {
+                this.$confirm(this.$t('ToolBox.AIQuestion.operation_des'), this.$t('ToolBox.AIQuestion.operation_tips'), {
                     type: "warning"
                     type: "warning"
                 }).then(()=>{
                 }).then(()=>{
+                    //将相关值置空
+                    this.activeWindowId=0
+                    this.activeWindow=null
+                    this.historyList=[]
+                    this.aiFileIds=[]
+                    //this.inputText=''
+                    this.isTyping = false
                     this.$message.success('切换模型成功')
                     this.$message.success('切换模型成功')
                 }).catch(()=>{
                 }).catch(()=>{
                     //this.$message.success('已取消切换模型')
                     //this.$message.success('已取消切换模型')
@@ -364,7 +377,7 @@ export default {
             let params={
             let params={
                 AiChatTopicId:this.activeWindowId<=0?0:this.activeWindowId,
                 AiChatTopicId:this.activeWindowId<=0?0:this.activeWindowId,
                 Ask:inputText,
                 Ask:inputText,
-                // Model:this.model
+                Model:this.model
             }
             }
             if(this.aiFileIds && this.aiFileIds.length>0){
             if(this.aiFileIds && this.aiFileIds.length>0){
                 // 文件检索功能
                 // 文件检索功能
@@ -496,6 +509,7 @@ export default {
             let formData = new FormData()
             let formData = new FormData()
             formData.append('File',file)
             formData.append('File',file)
             formData.append('AiChatTopicId',this.activeWindowId)
             formData.append('AiChatTopicId',this.activeWindowId)
+            formData.append('Model',this.model)
             this.windowSet.add(this.activeWindowId)
             this.windowSet.add(this.activeWindowId)
             aiQAInterence.fileUpload(formData).then(res=>{
             aiQAInterence.fileUpload(formData).then(res=>{
                 downloadHint.close()
                 downloadHint.close()

+ 4 - 3
src/views/ppt_manage/newVersion/pptEditor.vue

@@ -1024,7 +1024,7 @@ export default {
       }
       }
       if(!checkResult.result){
       if(!checkResult.result){
         this.$message.warning(checkResult.hintText)
         this.$message.warning(checkResult.hintText)
-        return
+        return checkResult
       }
       }
       let Content = JSON.stringify(this.pageList)
       let Content = JSON.stringify(this.pageList)
       //console.log(Content)
       //console.log(Content)
@@ -1154,7 +1154,8 @@ export default {
     },
     },
     async handlePublish(){
     async handlePublish(){
       //ETA1.7.5更改发布逻辑,点击发布时,自动执行保存操作,若可保存,则跳转发布页
       //ETA1.7.5更改发布逻辑,点击发布时,自动执行保存操作,若可保存,则跳转发布页
-      await this.handleSave('pub')
+      const res = await this.handleSave('pub')
+      if(res&&!res.result) return
       //ppt4.0后,合并后的PPT可能会超出页数or图表限制,在这里做个校验
       //ppt4.0后,合并后的PPT可能会超出页数or图表限制,在这里做个校验
       if(this.pageList.length>this.maxPageNum){
       if(this.pageList.length>this.maxPageNum){
         this.$message.warning(this.$t('Slides.most_add_ppt_msg',{count:this.maxPageNum}))
         this.$message.warning(this.$t('Slides.most_add_ppt_msg',{count:this.maxPageNum}))
@@ -1164,7 +1165,7 @@ export default {
         this.$message.warning(this.$t('Slides.most_add_chart_msg',{count:this.maxPageChart}));
         this.$message.warning(this.$t('Slides.most_add_chart_msg',{count:this.maxPageChart}));
         return;
         return;
       }
       }
-      this.$router.push({path:'/pptpublish',query:{id:this.pptId}})
+      this.pptId&&this.$router.push({path:'/pptpublish',query:{id:this.pptId}})
     },
     },
     //拖动相关
     //拖动相关
     dragstart(e,value) {
     dragstart(e,value) {

+ 3 - 3
src/views/ppt_manage/newVersion/pptEnCatalog.vue

@@ -780,9 +780,9 @@ export default {
     //点击列表操作栏事件处理
     //点击列表操作栏事件处理
     handleListToolClick(item,{PptId,PptxUrl,Title}){
     handleListToolClick(item,{PptId,PptxUrl,Title}){
         const urlMap = {
         const urlMap = {
-        edit:`/ppteditor?id=${PptId}`,
-        publish:`/pptpublish?id=${PptId}`,
-        present:`/pptpresent?id=${PptId}`
+        edit:`/ppteneditor?id=${PptId}`,
+        publish:`/pptenpublish?id=${PptId}`,
+        present:`/pptenpresent?id=${PptId}`
       }
       }
       if(urlMap[item.key]){
       if(urlMap[item.key]){
         window.open(urlMap[item.key],'_blank')
         window.open(urlMap[item.key],'_blank')

+ 4 - 3
src/views/ppt_manage/newVersion/pptEnEditor.vue

@@ -1022,7 +1022,7 @@ export default {
       }
       }
       if(!checkResult.result){
       if(!checkResult.result){
         this.$message.warning(checkResult.hintText)
         this.$message.warning(checkResult.hintText)
-        return
+        return checkResult
       }
       }
       let Content = JSON.stringify(this.pageList)
       let Content = JSON.stringify(this.pageList)
       const {Title,ReportType,PptDate,BackgroundImg,BackIndex} = this.firstPage
       const {Title,ReportType,PptDate,BackgroundImg,BackIndex} = this.firstPage
@@ -1141,7 +1141,8 @@ export default {
     },
     },
     async handlePublish(){
     async handlePublish(){
       //ETA1.7.5更改发布逻辑,点击发布时,自动执行保存操作,若可保存,则跳转发布页
       //ETA1.7.5更改发布逻辑,点击发布时,自动执行保存操作,若可保存,则跳转发布页
-      await this.handleSave('pub')
+      const res = await this.handleSave('pub')
+      if(res&&!res.result) return
       //ppt4.0后,合并后的PPT可能会超出页数or图表限制,在这里做个校验
       //ppt4.0后,合并后的PPT可能会超出页数or图表限制,在这里做个校验
       if(this.pageList.length>this.maxPageNum){
       if(this.pageList.length>this.maxPageNum){
         this.$message.warning(this.$t('Slides.most_add_ppt_msg',{count:this.maxPageNum}))
         this.$message.warning(this.$t('Slides.most_add_ppt_msg',{count:this.maxPageNum}))
@@ -1151,7 +1152,7 @@ export default {
         this.$message.warning(this.$t('Slides.most_add_chart_msg',{count:this.maxPageNum}));
         this.$message.warning(this.$t('Slides.most_add_chart_msg',{count:this.maxPageNum}));
         return;
         return;
       }
       }
-      this.$router.push({path:'/pptenpublish',query:{id:this.pptId}})
+      this.pptId&&this.$router.push({path:'/pptenpublish',query:{id:this.pptId}})
     },
     },
     //拖动相关
     //拖动相关
     dragstart(e,value) {
     dragstart(e,value) {

+ 4 - 4
src/views/ppt_manage/newVersion/pptEnPublish.vue

@@ -417,14 +417,14 @@ export default {
       //结束计时
       //结束计时
       const end = Date.now()
       const end = Date.now()
       console.log("转换ppt用时:",Math.floor((end-start)/1000),' s')
       console.log("转换ppt用时:",Math.floor((end-start)/1000),' s')
-      //pptx2.writeFile({ fileName: "test.pptx" });//本地测试用
+      //pptx.writeFile({ fileName: "test.pptx" });//本地测试用
       //直接下载
       //直接下载
       if(type==='dowload'){
       if(type==='dowload'){
         this.downloadLoading = this.$loading({
         this.downloadLoading = this.$loading({
             fullscreen:true,
             fullscreen:true,
             text:'生成PPT完成,正在下载PPT...'
             text:'生成PPT完成,正在下载PPT...'
         })
         })
-        pptx2.writeFile({ 
+        pptx.writeFile({ 
             fileName: `${this.coverInfo.page.Title||'unname'}.pptx`,
             fileName: `${this.coverInfo.page.Title||'unname'}.pptx`,
             compression:this.setCompression
             compression:this.setCompression
         }).then(()=>{
         }).then(()=>{
@@ -437,7 +437,7 @@ export default {
         text:this.$t('Slides.publishing_loading')
         text:this.$t('Slides.publishing_loading')
       })
       })
       //console.log('pptx',pptx)
       //console.log('pptx',pptx)
-      // pptx2.write('blob').then((data)=>{
+      // pptx.write('blob').then((data)=>{
       //   // 上传到阿里云oss
       //   // 上传到阿里云oss
       //   // this.handleUploadToOSS(data)
       //   // this.handleUploadToOSS(data)
       // })
       // })
@@ -461,7 +461,7 @@ export default {
         }
         }
       };
       };
       //outputType为blob时不会启用压缩,为STREAM时会按nodebuffer压缩
       //outputType为blob时不会启用压缩,为STREAM时会按nodebuffer压缩
-      pptx2.write({compression:this.setCompression,outputType:'STREAM'}).then((data)=>{
+      pptx.write({compression:this.setCompression,outputType:'STREAM'}).then((data)=>{
         //将nodebuffer转为blob
         //将nodebuffer转为blob
         const blob = new Blob([data])
         const blob = new Blob([data])
         // 1走后端接口上传
         // 1走后端接口上传

+ 10 - 2
src/views/ppt_manage/newVersion/utils/untils.js

@@ -627,8 +627,16 @@ export const getTableData = (data)=>{
       let cellOptions = {
       let cellOptions = {
         colspan:cell.mc.cs===0?1:cell.mc.cs,
         colspan:cell.mc.cs===0?1:cell.mc.cs,
         rowspan:cell.mc.rs===0?1:cell.mc.rs,
         rowspan:cell.mc.rs===0?1:cell.mc.rs,
-        color: cell.fc?cell.fc.substring(1):'333333',
-        fill: cell.bg ? cell.bg.substring(1):'',
+        color: cell.fc
+          ? cell.fc.includes('rgb') 
+              ? rgbaToHex(cell.fc).color.substring(1) 
+              : (cell.fc.indexOf('#')===0?cell.fc.substring(1):'333333')
+          :'333333',
+        fill: cell.bg 
+          ?  cell.bg.includes('rgb') 
+            ? rgbaToHex(cell.bg).color.substring(1)
+            : (cell.bg.indexOf('#')===0?cell.bg.substring(1):'')
+          : '',
         bold: cell.bl ? true : false,
         bold: cell.bl ? true : false,
         italic: cell.it ? true : false,
         italic: cell.it ? true : false,
       }
       }

+ 2 - 2
src/views/predictEdb_manage/addPredicEdb.vue

@@ -123,7 +123,7 @@
             :name="index"
             :name="index"
           >
           >
             <template slot="title">
             <template slot="title">
-              <span class="text_oneLine"><!-- 规则 -->{{$t('PredictEditPage.label_rule')}}{{ index + 1 }}</span>
+              <span class="text_oneLine"><!-- 时间段 -->{{$t('PredictEditPage.label_time_period')}}{{ index + 1 }}</span>
               <i
               <i
                 class="el-icon-delete del-icon"
                 class="el-icon-delete del-icon"
                 @click.stop="removeRuleHandle(item, index)"
                 @click.stop="removeRuleHandle(item, index)"
@@ -196,7 +196,7 @@
                   </el-select>
                   </el-select>
                 </div>
                 </div>
                 <div class="item" v-if="item.season_way===1">
                 <div class="item" v-if="item.season_way===1">
-                  <span class="label"><!-- 期数 -->{{$t('PredictEditPage.label_periods')}}</span>
+                  <span class="label"><!-- 年数 -->{{$t('PredictEditPage.label_years')}}</span>
                   <el-input
                   <el-input
                     v-model="item.n_value"
                     v-model="item.n_value"
                     style="width: 100%"
                     style="width: 100%"

+ 1 - 1
src/views/predictEdb_manage/components/rulesDetailDia.vue

@@ -20,7 +20,7 @@
             :name="index"
             :name="index"
           >
           >
             <template slot="title">
             <template slot="title">
-              <span class="text_oneLine" style="font-size: 16px;">{{$t('PredictEditPage.label_rule')}}{{ index + 1 }}({{predictTypeMap[item.predict_type]}})</span>
+              <span class="text_oneLine" style="font-size: 16px;">{{$t('PredictEditPage.label_time_period')}}{{ index + 1 }}({{predictTypeMap[item.predict_type]}})</span>
             </template>
             </template>
             <div class="wrap">
             <div class="wrap">
               <div class="item">
               <div class="item">

+ 1 - 1
src/views/smartReport/components/ETAChart.vue

@@ -3,7 +3,7 @@
         <div class="top-box">
         <div class="top-box">
             <div class="left-card">
             <div class="left-card">
                 <span :class="['item',activeType==='ETA图库'?'active':'']" @click="activeTypeChange('ETA图库')">{{$t('ReportManage.ReportList.chart_inventory_radio')}}</span>
                 <span :class="['item',activeType==='ETA图库'?'active':'']" @click="activeTypeChange('ETA图库')">{{$t('ReportManage.ReportList.chart_inventory_radio')}}</span>
-                <span :class="['item',activeType==='MyETA'?'active':'']" @click="activeTypeChange('MyETA')">MyETA</span>
+                <span :class="['item',activeType==='MyETA'?'active':'']" @click="activeTypeChange('MyETA')">{{$t('MyEtaPage.tab_my')}}</span>
             </div>
             </div>
             <div class="right">
             <div class="right">
                 <el-input
                 <el-input

+ 7 - 3
src/views/smartReport/editReport.vue

@@ -122,7 +122,7 @@
                                 @add="handleChildAdd($event,item,index)"
                                 @add="handleChildAdd($event,item,index)"
                                 @remove="handleChildRemove($event,item.child)"
                                 @remove="handleChildRemove($event,item.child)"
                                 handle=".drag-btn_c"
                                 handle=".drag-btn_c"
-                                style="display: flex;gap: 20px;align-items: flex-start;"
+                                style="display: flex;gap: 3px;align-items: flex-start;"
                             >
                             >
                                 <div 
                                 <div 
                                     :class="['report-drag-item-wrap_child_content',activeId===child.id?'blue-bg':'']" 
                                     :class="['report-drag-item-wrap_child_content',activeId===child.id?'blue-bg':'']" 
@@ -142,6 +142,8 @@
                                     <div class="resize-drag-box_lb" @mousedown.stop="handleResizeC($event,index,cindex,'lb')"></div>
                                     <div class="resize-drag-box_lb" @mousedown.stop="handleResizeC($event,index,cindex,'lb')"></div>
                                     <div class="resize-drag-box_rb" @mousedown.stop="handleResizeC($event,index,cindex,'rb')"></div>
                                     <div class="resize-drag-box_rb" @mousedown.stop="handleResizeC($event,index,cindex,'rb')"></div>
                                     <component :is="getComponentName(child)" :compData="child"/>
                                     <component :is="getComponentName(child)" :compData="child"/>
+                                    <!--  -->
+                                    <div class="mark-box" v-if="isDragResize" style="position: absolute;left:0;right:0;top:0;bottom: 0;z-index: 10;"></div>
                                 </div>
                                 </div>
                             </draggable>
                             </draggable>
                         </div>
                         </div>
@@ -621,10 +623,10 @@ export default {
                             compType:compData.compType,
                             compType:compData.compType,
                             content:compData.content||'',
                             content:compData.content||'',
                             id:this.getCompId(compData.compType),
                             id:this.getCompId(compData.compType),
+                            style:compData.compType==='chart'?'height:350px':'',
                             child:[]
                             child:[]
                         })
                         })
                     }
                     }
-                    
                 }
                 }
                 console.log(obj);
                 console.log(obj);
 
 
@@ -681,8 +683,9 @@ export default {
             }else{//删除子盒子
             }else{//删除子盒子
                 this.conList[pindex].child.splice(cindex,1)
                 this.conList[pindex].child.splice(cindex,1)
                 if(this.conList[pindex].child.length===1){//只剩一个子盒子了则变成一个大盒子
                 if(this.conList[pindex].child.length===1){//只剩一个子盒子了则变成一个大盒子
+                    const styleArr=this.conList[pindex].child[0].style.split(';').filter(s=>s&&(s.indexOf('width')===-1&&s.indexOf('flex')===-1)).join(';')
                     this.conList[pindex]=this.conList[pindex].child[0]
                     this.conList[pindex]=this.conList[pindex].child[0]
-                    this.conList[pindex].style='flex:1'
+                    this.conList[pindex].style=styleArr
                 }
                 }
             }
             }
         },
         },
@@ -1426,6 +1429,7 @@ div{
                 position: absolute;
                 position: absolute;
                 right: -15px;
                 right: -15px;
                 top: 0;
                 top: 0;
+                z-index: 10;
                 .drag-btn::after{
                 .drag-btn::after{
                     content: '';
                     content: '';
                     display: block;
                     display: block;

+ 5 - 1
src/views/system_manage/components/imgUpload.vue

@@ -4,7 +4,7 @@
         <div class="upload-box">
         <div class="upload-box">
             <template v-if="!imgUrl.length">
             <template v-if="!imgUrl.length">
                 <i class="el-icon-plus" style="font-size: 24px;"></i>
                 <i class="el-icon-plus" style="font-size: 24px;"></i>
-                <p class="form-hint">点击上传图片</p>
+                <p class="form-hint">{{ text }}</p>
             </template>
             </template>
             <template v-else>
             <template v-else>
                 <img class="upload-img" :src="imgUrl" alt="配图">
                 <img class="upload-img" :src="imgUrl" alt="配图">
@@ -24,6 +24,10 @@
             imgUrl: {
             imgUrl: {
                 type: String,
                 type: String,
                 default: ''
                 default: ''
+            },
+            text: {
+                type: String,
+                default: '点击上传图片'
             }
             }
         },
         },
         data() {
         data() {

+ 1 - 1
src/views/system_manage/dataRefreshSetting.vue

@@ -30,7 +30,7 @@
                         <el-option v-for="i in terminalCodeList" :key="i.TerminalCode"
                         <el-option v-for="i in terminalCodeList" :key="i.TerminalCode"
                             :label="i.Name" :value="i.TerminalCode"/>
                             :label="i.Name" :value="i.TerminalCode"/>
                     </el-select>
                     </el-select>
-                    <el-cascader placeholder="ETA指标库分类" no-match-text="请选择完整数据源" clearable
+                    <el-cascader placeholder="指标库分类" no-match-text="请选择完整数据源" clearable
                         v-model="selectOption.classify" @change="selectOptionChange('classify')"
                         v-model="selectOption.classify" @change="selectOptionChange('classify')"
                         :options="edbClassifyList" 
                         :options="edbClassifyList" 
                         :show-all-levels="false"
                         :show-all-levels="false"

+ 111 - 9
src/views/system_manage/etaBaseConfig.vue

@@ -76,8 +76,6 @@
                             </froala>
                             </froala>
                             <ConfigAnnotation picName="emailContentTemplate" @showImage="previewImage" picHintText="" :buttonText="$t('SystemManage.BaseConfig.view_example_text')"/>
                             <ConfigAnnotation picName="emailContentTemplate" @showImage="previewImage" picHintText="" :buttonText="$t('SystemManage.BaseConfig.view_example_text')"/>
                         </el-form-item>
                         </el-form-item>
-                    </div>
-                    <div class="side">
                         <el-form-item label="备案信息" prop="ICPLicense">
                         <el-form-item label="备案信息" prop="ICPLicense">
                             <el-input type="text" v-model="formData.ICPLicense" placeholder="文本中输入≥2个空格表示文本分段,小屏时换行展示" />
                             <el-input type="text" v-model="formData.ICPLicense" placeholder="文本中输入≥2个空格表示文本分段,小屏时换行展示" />
                             <ConfigAnnotation picHintText="" picName="ICPLicense" @showImage="previewImage"/>
                             <ConfigAnnotation picHintText="" picName="ICPLicense" @showImage="previewImage"/>
@@ -86,10 +84,69 @@
                             <el-input type="text" v-model="formData.ETATitle" placeholder="请输入登录页标题" />
                             <el-input type="text" v-model="formData.ETATitle" placeholder="请输入登录页标题" />
                             <ConfigAnnotation picHintText="" picName="ETATitle" @showImage="previewImage"/>
                             <ConfigAnnotation picHintText="" picName="ETATitle" @showImage="previewImage"/>
                         </el-form-item>
                         </el-form-item>
-                        <el-form-item label="网站名称" prop="TabName">
-                            <el-input type="text" v-model="formData.TabName" placeholder="请输入登录页标题" />
-                            <ConfigAnnotation picHintText="" picName="TabName" @showImage="previewImage"/>
-                        </el-form-item>
+                        <div class="inline-form-item-box" v-if="permissionBtn.isShowBtn('baseConfigPermission','etaBaseConfig_login_websiteName_pc') ||
+                            permissionBtn.isShowBtn('baseConfigPermission','etaBaseConfig_login_websiteName_mobile')">
+                            <div class="line-form-item-name">{{$t('SystemManage.BaseConfig.website_name')}}</div>
+                            <div class="line-form-item">
+                                <el-form-item :label="$t('SystemManage.BaseConfig.pc')" prop="TabName"
+                                v-permission="permissionBtn.baseConfigPermission.etaBaseConfig_login_websiteName_pc">
+                                    <el-input type="text" v-model="formData.TabName" :placeholder="$t('SystemManage.BaseConfig.pc_website_title_Tip')" />
+                                    <ConfigAnnotation picHintText="" picName="TabName" @showImage="previewImage"
+                                     :buttonText="$t('SystemManage.BaseConfig.view_example_text')"/>
+                                </el-form-item>
+                                <el-form-item :label="$t('SystemManage.BaseConfig.mobile')" prop="TabNameMobile"
+                                v-permission="permissionBtn.baseConfigPermission.etaBaseConfig_login_websiteName_mobile">
+                                    <el-input type="text" v-model="formData.TabNameMobile" :placeholder="$t('SystemManage.BaseConfig.mobile_website_title_Tip')" />
+                                    <ConfigAnnotation picHintText="" picName="TabNameMobile" @showImage="previewImage"
+                                     :buttonText="$t('SystemManage.BaseConfig.view_example_text')"/>
+                                </el-form-item>
+                            </div>
+                        </div>
+                    </div>
+                    <div class="side">
+                        <div class="inline-form-item-box"  v-if="permissionBtn.isShowBtn('baseConfigPermission','etaBaseConfig_login_systemLogo_pc') ||
+                            permissionBtn.isShowBtn('baseConfigPermission','etaBaseConfig_login_systemLogo_mobile')">
+                            <div class="line-form-item-name">{{ $t('SystemManage.BaseConfig.system_logo') }}</div>
+                            <div class="line-form-item-name" style="line-height: 30px;" v-permission="permissionBtn.baseConfigPermission.etaBaseConfig_login_systemLogo_pc">{{ $t('SystemManage.BaseConfig.pc') }}</div>
+                            <div class="line-form-item" v-permission="permissionBtn.baseConfigPermission.etaBaseConfig_login_systemLogo_pc">
+                                <el-form-item :label="`${$t('SystemManage.BaseConfig.chinese_version')}(${$t('SystemManage.BaseConfig.recommended_ratio')})`" prop="LogoCN">
+                                    <ImgUpload 
+                                    id="logo-image"
+                                    :imgUrl="formData.LogoCN"
+                                    :text="$t('SystemManage.BaseConfig.upload_image_tip')"
+                                    @showImage="showImage"
+                                    @upload="(file)=>handleUploadImage(file,'LogoCN')"
+                                    @remove="deleteFormImg('LogoCN')"
+                                    />
+                                    <ConfigAnnotation picHintText="" picName="LogoCN" @showImage="previewImage" :buttonText="$t('SystemManage.BaseConfig.view_example_text')"/>
+                                </el-form-item>
+                                <el-form-item :label="`${$t('SystemManage.BaseConfig.english_version')}(${$t('SystemManage.BaseConfig.recommended_ratio')})`" prop="LogoEN">
+                                    <ImgUpload 
+                                        id="logo-image"
+                                        :imgUrl="formData.LogoEN"
+                                        :text="$t('SystemManage.BaseConfig.upload_image_tip')"
+                                        @showImage="showImage"
+                                        @upload="(file)=>handleUploadImage(file,'LogoEN')"
+                                        @remove="deleteFormImg('LogoEN')"
+                                    />
+                                    <ConfigAnnotation picHintText="" picName="LogoEN" @showImage="previewImage" :buttonText="$t('SystemManage.BaseConfig.view_example_text')"/>
+                                </el-form-item>
+                            </div>
+                            <div class="line-form-item" v-permission="permissionBtn.baseConfigPermission.etaBaseConfig_login_systemLogo_mobile">
+                                <el-form-item :label="$t('SystemManage.BaseConfig.mobile')" prop="LogoMobile" style="width: 50%;">
+                                    <ImgUpload 
+                                    id="logo-image"
+                                    :imgUrl="formData.LogoMobile"
+                                    :text="$t('SystemManage.BaseConfig.upload_image_tip')"
+                                    @showImage="showImage"
+                                    @upload="(file)=>handleUploadImage(file,'LogoMobile')"
+                                    @remove="deleteFormImg('LogoMobile')"
+                                    />
+                                    <ConfigAnnotation picHintText="" picName="LogoMobile" @showImage="previewImage" :buttonText="$t('SystemManage.BaseConfig.view_example_text')"/>
+                                </el-form-item>
+                                <div style="width: 50%;"></div>
+                            </div>
+                        </div>
                     </div>
                     </div>
                 </div>
                 </div>
                 <!-- 研报设置 -->
                 <!-- 研报设置 -->
@@ -477,7 +534,11 @@ export default {
                 ReportApproveType:'eta',//研报审批选项
                 ReportApproveType:'eta',//研报审批选项
                 ICPLicense:'', //备案信息
                 ICPLicense:'', //备案信息
                 ETATitle:'', //登录页标题
                 ETATitle:'', //登录页标题
-                TabName:'',//网页名称
+                TabName:'',//网页名称-PC端
+                TabNameMobile:'',//网页名称-移动端
+                LogoCN:'',//logo-中文版
+                LogoEN:'',//logo-英文版 
+                LogoMobile:'',//logo-移动端登录页
             },//表单预设值
             },//表单预设值
             rules: {
             rules: {
                 Disclaimer:[{ required: true, message: '请输入免责声明', trigger: 'blur' }],
                 Disclaimer:[{ required: true, message: '请输入免责声明', trigger: 'blur' }],
@@ -507,7 +568,11 @@ export default {
                 CnPptCoverImgs:[{ required: true, validator:ListValidator}],
                 CnPptCoverImgs:[{ required: true, validator:ListValidator}],
                 EnPptCoverImgs:[{ required: true, validator:ListValidator}],
                 EnPptCoverImgs:[{ required: true, validator:ListValidator}],
                 ETATitle:[{ required: true, message: '请输入登录页标题', trigger: 'blur' }],
                 ETATitle:[{ required: true, message: '请输入登录页标题', trigger: 'blur' }],
-                TabName:[{ required: true, message: '请输入网站名称', trigger: 'blur' }],
+                TabName:[{ required: true, message: '请输入PC端网页名称', trigger: 'blur' }],
+                TabNameMobile:[{ required: true, message: '请输入移动端网页名称', trigger: 'blur' }],
+                LogoCN:[{ required: true, message: '请上传系统中文版Logo', trigger: 'blur' }],
+                LogoEN:[{ required: true, message: '请上传系统英文版Logo', trigger: 'blur' }],
+                LogoMobile:[{ required: true, message: '请上传系统移动端Logo', trigger: 'blur' }],
             },//表单校验
             },//表单校验
             disclaimerConfig:{
             disclaimerConfig:{
                 toolbarButtons:[
                 toolbarButtons:[
@@ -562,7 +627,11 @@ export default {
                 'emailContentTemplate':[require('@/assets/img/eta_base_config/email_content_template.png')],
                 'emailContentTemplate':[require('@/assets/img/eta_base_config/email_content_template.png')],
                 'ICPLicense':[require('@/assets/img/eta_base_config/record_information.jpg')],
                 'ICPLicense':[require('@/assets/img/eta_base_config/record_information.jpg')],
                 'ETATitle':[require('@/assets/img/eta_base_config/ETA_title.png')],
                 'ETATitle':[require('@/assets/img/eta_base_config/ETA_title.png')],
-                'TabName':[require('@/assets/img/eta_base_config/website_title.png')]
+                'TabName':[require('@/assets/img/eta_base_config/website_title.png')],
+                'TabNameMobile':[require('@/assets/img/eta_base_config/ETA_mobile_title.png')],
+                'LogoCN':[require('@/assets/img/eta_base_config/Logo_ch.png')],
+                'LogoEN':[require('@/assets/img/eta_base_config/Logo_en.png')],
+                'LogoMobile':[require('@/assets/img/eta_base_config/ETA_mobile_logo.png')],  
             },
             },
             /* loading */
             /* loading */
             configLoading:null,
             configLoading:null,
@@ -735,6 +804,9 @@ export default {
                     this.formData.CnPptCoverImgs = CnPptCoverImgs.length?CnPptCoverImgs.split(','):[]
                     this.formData.CnPptCoverImgs = CnPptCoverImgs.length?CnPptCoverImgs.split(','):[]
                     this.formData.EnPptCoverImgs = EnPptCoverImgs.length?EnPptCoverImgs.split(','):[]
                     this.formData.EnPptCoverImgs = EnPptCoverImgs.length?EnPptCoverImgs.split(','):[]
                     this.formData.WatermarkReport=res.Data.WatermarkReport==='true'?true:false
                     this.formData.WatermarkReport=res.Data.WatermarkReport==='true'?true:false
+                    this.formData.LogoCN = res.Data.LogoCN || require('@/assets/img/login_logo.png')
+                    this.formData.LogoEN = res.Data.LogoEN || require('@/assets/img/en/logo.png')
+                    this.formData.LogoMobile = res.Data.LogoMobile || require('@/assets/img/logo_mobile.png')
                 }
                 }
                 this.configLoading&&this.configLoading.close()
                 this.configLoading&&this.configLoading.close()
             })
             })
@@ -791,6 +863,10 @@ export default {
                         }
                         }
                     }).then(res=>{
                     }).then(res=>{
                         if(res.Ret!==200) return 
                         if(res.Ret!==200) return 
+                        // 设置logo
+                        this.$store.commit('SET_BASE_INFO',
+                            {logoCh:this.formData.LogoCN,logoEn:this.formData.LogoEN}
+                        )
                         this.$message.success(this.$t('SystemManage.BaseConfig.tip_msg01')||'保存成功,请稍后到对应页面/项目查看')
                         this.$message.success(this.$t('SystemManage.BaseConfig.tip_msg01')||'保存成功,请稍后到对应页面/项目查看')
                     })
                     })
                 }
                 }
@@ -909,6 +985,17 @@ export default {
                     margin-bottom: 10px;
                     margin-bottom: 10px;
                     margin-top: -3px;
                     margin-top: -3px;
                 }
                 }
+                .inline-form-item-box{
+                    .line-form-item-name{
+                        color: #606266;
+                        font-size: 14px;
+                        line-height: 40px;
+                    }
+                    .line-form-item{
+                        display: flex;
+                        gap: 40px;
+                    }
+                }
             }
             }
             .ppt-form-item-wrap{
             .ppt-form-item-wrap{
                 width:100%;
                 width:100%;
@@ -936,4 +1023,19 @@ export default {
         }
         }
     }
     }
 }
 }
+</style>
+<style lang="scss">
+#logo-image{
+    .el-upload{
+        width: 100%;
+        height: 86px;
+        .upload-mask{
+            line-height: 86px;
+        }
+    }
+    .upload-box{
+        width: 100%;
+        height: 100%;
+    }
+}
 </style>
 </style>

+ 1 - 0
src/vuex/index.js

@@ -33,6 +33,7 @@ const state = {
   // 是否有 试用用户行为权限
   // 是否有 试用用户行为权限
   hasTrialUserPermisson:false,
   hasTrialUserPermisson:false,
   permissionRoute:[], //用于需要验证是否有某个菜单的权限
   permissionRoute:[], //用于需要验证是否有某个菜单的权限
+  baseInfo:{}
 };
 };
 
 
 export default {
 export default {

+ 5 - 1
src/vuex/mutations.js

@@ -76,7 +76,11 @@ const mutations = {
   // 添加需要校验且有权限的路由
   // 添加需要校验且有权限的路由
   ADD_PERMISSION_ROUTE(state,route){
   ADD_PERMISSION_ROUTE(state,route){
     state.permissionRoute.push(route)
     state.permissionRoute.push(route)
-  }
+  },
+  //设置基础信息
+  SET_BASE_INFO(state,obj) {
+    state.baseInfo={...state.baseInfo,...obj};
+  },
 };
 };
 
 
 export default mutations;
 export default mutations;