浏览代码

英文编辑的问题

bding 1 年之前
父节点
当前提交
d2ba2dae3e

+ 121 - 55
src/lang/modules/ReportManagement/ReportList.js

@@ -40,29 +40,62 @@ export const ReportListEn = {
   scheduled_publish_btn: "Scheduled Publish",
   publish_btn: "Publish",
   submission_btn: "Submission",
-  new_method_btn: "新增方式 New method",
-  title_ipt: "标题 Title",
-  abstract_ipt: "摘要 Abstract",
-  author_select: "作者 Author",
-  frequency_select: "频度 Frequency",
-  creation_time_select: "创建时间 Creation time",
-  insert_chart_tabs: "图表插入 Insert chart",
-  chart_inventory_radio: "ETA图库 ETA Chart Inventory",
-  price_curve_radio: "商品价格曲线 Commodity price curve",
-  related_charts_radio: "相关性图表 Related Charts",
-  curve_fitting_radio: "拟合方程曲线 Curve fitting",
-  statistical_feature_radio: "统计特征 Statistical Feature",
-  intercommodity_analysis_radio: "跨品种分析 Intercommodity Analysis",
-  just_mine_radio: "只看我的 Just Mine",
-  insert_sandbox_tabs: "沙盘插入 Insert Sandbox",
-  no_reports_msg: "沙盘名称/品种 Sandbox Name/Commodity",
-  insert_table_tabs: "表格插入 Insert Table",
-  table_name_tabs: "表格名称 Table Name",
-  bulk_insertion_tabs: "MyETA批量插入 Bulk Insertion of MyETA",
-  semantic_analysis_tabs: "语义分析插入 Semantic Analysis Insertion",
-  publish_time: "发送时间 Publish Time",
-  select_date_and_time: "选择日期时间 Select Date and Time",
-  the_report_will_be_posted_on_time: "设置成功之后,研报将定时进行发送 After the schedule confirmed, the report will be posted on time",
+  new_method_btn: "New method",
+  title_ipt: "Title",
+  abstract_ipt: "Abstract",
+  author_select: "Author",
+  frequency_select: "Frequency",
+  creation_time_select: "Creation time",
+  insert_chart_tabs: "Insert chart",
+  chart_inventory_radio: "ETA Chart Inventory",
+  price_curve_radio: "Commodity price curve",
+  related_charts_radio: "Related Charts",
+  curve_fitting_radio: "Curve fitting",
+  statistical_feature_radio: "Statistical Feature",
+  intercommodity_analysis_radio: "Intercommodity Analysis",
+  just_mine_radio: "Just Mine",
+  insert_sandbox_tabs: "Insert Sandbox",
+  no_reports_msg: "Sandbox Name/Commodity",
+  insert_table_tabs: "Insert Table",
+  table_name_tabs: "Table Name",
+  bulk_insertion_tabs: "Bulk Insertion of MyETA",
+  semantic_analysis_tabs: "Semantic Analysis Insertion",
+  publish_time: "Publish Time",
+  select_date_and_time: "Select Date and Time",
+  the_report_will_be_posted_on_time: "After the schedule confirmed, the report will be posted on time",
+  no_chart_table_available: "No Chart or Table available",
+  classificiation_selest: "Classificiation",
+  edit_en_report: "Editing English research reports",
+  add_ch_report: "Add English research report",
+  chart_name: "Chart Name",
+  select_date: "Select date",
+  charts_update_btn: "Charts update",
+  library_top_type: "Layout Resource Library",
+  eta_top_type: "ETA table",
+  statistical_top_type: "Statistical Analysis",
+  sandbox_top_type: "Sandbox",
+  semantic_top_type: "Semantic Analysis",
+  chart_top_type: "Chart Inventory",
+  insert_charts_msg: "Please insert charts",
+  header_setting_msg: "Page header setting successful",
+  trailer_setting_msg: "Page trailer setting successful",
+  chart_refreshed_msg: "The chart is currently being refreshed, please do not repeat the operation",
+  img_uplaod_title: "Image Upload",
+  click_img_upload: "Click to Upload Image",
+  select_img_card: "Select Image",
+  img_name_ipt: "Please input image name",
+  select_img_type: "Please select an image type",
+  page_header_op: "Page Header",
+  page_trailer_op: "Page Trailer",
+  select_layout_msg: "Please select a layout",
+  keyword_search: "Keyword Search",
+  correlation_analysis: "Correlation Analysis",
+  text_editing: "Text Editing",
+  chart_category_name: "Chart Category Name",
+  click_import: "One click import",
+  no_one_charts: "There are no charts for this category",
+  no_chart_msg: "Single chart insertion is not supported here",
+  import_all_chart_msg: "This operation will batch import all charts under theselected chart category",
 };
 
 /* 中文 */
@@ -77,7 +110,7 @@ export const ReportListZh = {
   designated_personnel: "指定人员",
   designated_sender_information: "指定发送人员信息:",
   please_select_personnel: "请选择人员",
-  click_through_details: "点击量详情 Click through details",
+  click_through_details: "点击量详情",
   click_through_details: "客户名称",
   email_address: "邮箱地址",
   Last_click_time: "最近点击时间",
@@ -95,35 +128,68 @@ export const ReportListZh = {
   please_report_category_select: "请选择报告分类",
   please_report_title_input: "请填写报告标题",
   no_reports_msg: "此分类暂无报告",
-  chart_insertion_progress: "图表批量插入中... Batch chart insertion in progress",
-  last_save_time: "最近保存时间 Last save time",
-  click_refresh_btn: "一键刷新 Refresh",
-  preview_btn: "预览 Preview",
-  save_draft_btn: "存草稿  Save Draft",
-  scheduled_publish_btn: "定时发布 Scheduled Publish",
-  publish_btn: "发布 Publish",
-  submission_btn: "提交 Submission",
-  new_method_btn: "新增方式 New method",
-  title_ipt: "标题 Title",
-  abstract_ipt: "摘要 Abstract",
-  author_select: "作者 Author",
-  frequency_select: "频度 Frequency",
-  creation_time_select: "创建时间 Creation time",
-  insert_chart_tabs: "图表插入 Insert chart",
-  chart_inventory_radio: "ETA图库 ETA Chart Inventory",
-  price_curve_radio: "商品价格曲线 Commodity price curve",
-  related_charts_radio: "相关性图表 Related Charts",
-  curve_fitting_radio: "拟合方程曲线 Curve fitting",
-  statistical_feature_radio: "统计特征 Statistical Feature",
-  intercommodity_analysis_radio: "跨品种分析 Intercommodity Analysis",
-  just_mine_radio: "只看我的 Just Mine",
-  insert_sandbox_tabs: "沙盘插入 Insert Sandbox",
-  no_reports_msg: "沙盘名称/品种 Sandbox Name/Commodity",
-  insert_table_tabs: "表格插入 Insert Table",
-  table_name_tabs: "表格名称 Table Name",
-  bulk_insertion_tabs: "MyETA批量插入 Bulk Insertion of MyETA",
-  semantic_analysis_tabs: "语义分析插入 Semantic Analysis Insertion",
-  publish_time: "发送时间 Publish Time",
-  select_date_and_time: "选择日期时间 Select Date and Time",
-  the_report_will_be_posted_on_time: "设置成功之后,研报将定时进行发送 After the schedule confirmed, the report will be posted on time",
+  chart_insertion_progress: "图表批量插入中...",
+  last_save_time: "最近保存时间",
+  click_refresh_btn: "一键刷新",
+  preview_btn: "预览",
+  save_draft_btn: "存草稿",
+  scheduled_publish_btn: "定时发布",
+  publish_btn: "发布",
+  submission_btn: "提交",
+  new_method_btn: "新增方式",
+  title_ipt: "标题",
+  abstract_ipt: "摘要",
+  author_select: "作者",
+  frequency_select: "频度",
+  creation_time_select: "创建时间",
+  insert_chart_tabs: "图表插入",
+  chart_inventory_radio: "ETA图库",
+  price_curve_radio: "商品价格曲线",
+  related_charts_radio: "相关性图表",
+  curve_fitting_radio: "拟合方程曲线",
+  statistical_feature_radio: "统计特征",
+  intercommodity_analysis_radio: "跨品种分析",
+  just_mine_radio: "只看我的",
+  insert_sandbox_tabs: "沙盘插入",
+  no_reports_msg: "沙盘名称/品种",
+  insert_table_tabs: "表格插入",
+  table_name_tabs: "表格名称",
+  bulk_insertion_tabs: "MyETA批量插入",
+  semantic_analysis_tabs: "语义分析插入",
+  publish_time: "发送时间",
+  select_date_and_time: "选择日期时间",
+  the_report_will_be_posted_on_time: "设置成功之后,研报将定时进行发送",
+  no_chart_table_available: "暂无图表",
+  classificiation_selest: "分类",
+  edit_en_report: "编辑英文研报",
+  add_ch_report: "添加英文研报",
+  chart_name: "图表名称",
+  select_date: "选择日期",
+  charts_update_btn: "图表刷新",
+  library_top_type: "版图资源库",
+  eta_top_type: "ETA表格",
+  statistical_top_type: "统计分析",
+  sandbox_top_type: "沙盘图",
+  semantic_top_type: "语义分析",
+  chart_top_type: "图库",
+  insert_charts_msg: "请插入图表",
+  header_setting_msg: "版头设置成功",
+  trailer_setting_msg: "版尾设置成功",
+  chart_refreshed_msg: "图表正在刷新中,请勿重复操作",
+  img_uplaod_title: "图片上传",
+  click_img_upload: "点击上传图片",
+  select_img_card: "选择图片",
+  img_name_ipt: "请输入图片名称",
+  select_img_type: "请选择图片类型",
+  page_header_op: "版头",
+  page_trailer_op: "版尾",
+  select_layout_msg: "请选择版图",
+  keyword_search: "关键词搜索",
+  correlation_analysis: "相关性",
+  text_editing: "文本编辑",
+  chart_category_name: "图分类名称",
+  click_import: "一键导入",
+  no_one_charts: "此处不支持单个插入图表",
+  no_chart_msg: "该分类无图表",
+  import_all_chart_msg: "该操作将批量导入所选图分类下所有图表",
 };

+ 57 - 36
src/lang/modules/ReportManagement/SmartReport.js

@@ -75,40 +75,51 @@ export const SmartReportEn = {
     send_email: "Send email to group",
     send_log: "Group send log",
     image_download: "Image Download",
-    tooltip_pv_show: "The number of times the report has been opened, calculated once each time it is opened (only for authorized users)",
-    tooltip_uv_show:
-      "The number of people accessing the report, and the same person accessing each report is only counted once (only authorized users are counted)",
-    smart_msg: {
-      no_edit: "This research report is currently being edited and cannot be duplicated",
-      unknown_error: "Unknown error, please try again later",
-      uploaded_limitation: "The size of the uploaded file cannot exceed 200M",
-      upload_format: "The upload file format is incorrect",
-      report_recording: "Report not uploaded recording",
-      published_success: "Successfully published and pushed",
-      submit_approval: "Are you sure to submit this report for approval?",
-      revoke_approval: "Are you sure you want to revoke the approval?",
-      revoke_success: "Revoke successful",
-      submit_success: "Submitted successfully",
-      sent_success: "Successfully sent",
-      push_success: "Push successful",
-      release_prompt: "Release prompt",
-      publish_it: "Are you sure to publish it?",
-      delete_it: "Are you sure to delete it?",
-      select_dl_report: "Please select the report that needs to be downloaded",
-      is_publish_immediately: "This report has been scheduled for publication. Would you like to change it to publish immediately?",
-      report_publish_immediately: "Are you sure you want to publish now?",
-      copy_success: "Copy link successful",
-      browser_supported: "Browser not currently supported",
-      select_email_person: "Please select email recipients ",
-      email_subject: "Please input email subject",
-      email_characters: "Email subject should be within 100 characters",
-      synchronization: "Synchronization successful",
-      upload_success: "Upload Successful",
-      please_select_file: "Please select file",
-      should_published_immediately: "Should the report be published immediately?",
-      timed_release_setup: "The report has been scheduled for publication. Do you want to publish the report now?",
-      please_manually_save: "Automatic image download failed, please manually save",
-    },
+    push: "Push",
+    not_push: "Do not push",
+  },
+  tooltip_pv_show: "The number of times the report has been opened, calculated once each time it is opened (only for authorized users)",
+  tooltip_uv_show: "The number of people accessing the report, and the same person accessing each report is only counted once (only authorized users are counted)",
+  smart_msg: {
+    no_edit: "This research report is currently being edited and cannot be duplicated",
+    unknown_error: "Unknown error, please try again later",
+    uploaded_limitation: "The size of the uploaded file cannot exceed 200M",
+    upload_format: "The upload file format is incorrect",
+    report_recording: "Report not uploaded recording",
+    published_success: "Successfully published and pushed",
+    submit_approval: "Are you sure to submit this report for approval?",
+    revoke_approval: "Are you sure you want to revoke the approval?",
+    revoke_success: "Revoke successful",
+    submit_success: "Submitted successfully",
+    sent_success: "Successfully sent",
+    push_success: "Push successful",
+    release_prompt: "Release prompt",
+    publish_it: "Are you sure to publish it?",
+    delete_it: "Are you sure to delete it?",
+    select_dl_report: "Please select the report that needs to be downloaded",
+    is_publish_immediately: "This report has been scheduled for publication. Would you like to change it to publish immediately?",
+    report_publish_immediately: "Are you sure you want to publish now?",
+    copy_success: "Copy link successful",
+    browser_supported: "Browser not currently supported",
+    select_email_person: "Please select email recipients ",
+    email_subject: "Please input email subject",
+    email_characters: "Email subject should be within 100 characters",
+    synchronization: "Synchronization successful",
+    upload_success: "Upload Successful",
+    please_select_file: "Please select file",
+    should_published_immediately: "Should the report be published immediately?",
+    timed_release_setup: "The report has been scheduled for publication. Do you want to publish the report now?",
+    please_manually_save: "Automatic image download failed, please manually save",
+    all_loaded_have: "All have been loaded",
+    timed_success: "Timed release successful!",
+    push_report_msg: "Do you want to publish a scheduled report and push template messages?",
+    is_push_timed: "Is a scheduled report released?",
+    than_current_time: "Timed release must not be earlier than the current time",
+    select_push_time: "Please select a scheduled release time",
+    publishing_messages: "After publishing, do you want to push template messages?",
+    img_wait: "There are some images that have not been uploaded yet. Please wait",
+    please_enter: "Please enter",
+    
   },
 };
 
@@ -185,10 +196,11 @@ export const SmartReportZh = {
     send_email: "群发邮件",
     send_log: "群发日志",
     image_download: "图片下载",
+    push: "推送",
+    not_push: "不推送",
   },
   tooltip_pv_show: "报告被打开的次数,每次打开都计算一次(只统计有权限用户)",
-  tooltip_uv_show:
-    "访问报告的人数,每篇报告同一个人访问只计算一次(只统计有权限用户)",
+  tooltip_uv_show: "访问报告的人数,每篇报告同一个人访问只计算一次(只统计有权限用户)",
   smart_msg: {
     no_edit: "该研报正在编辑,不可重复编辑",
     unknown_error: "未知错误,请稍后重试",
@@ -219,6 +231,15 @@ export const SmartReportZh = {
     should_published_immediately: "是否立即发布报告?",
     timed_release_setup: "该报告已设置定时发布,是否立即发布报告?",
     please_manually_save: "自动下载图片失败,请手动保存",
+    all_loaded_have: "已全部加载完",
+    timed_success: "定时发布成功!",
+    push_report_msg: "是否发布定时报告,并推送模板消息?",
+    is_push_timed: "是否发布定时报告?",
+    than_current_time: "定时发布不得早于当前时间",
+    select_push_time: "请选择定时发布的时间",
+    publishing_messages: "发布后,是否推送模板消息?",
+    img_wait: "有图片未上传完成,请稍等",
+    please_enter: "请输入",
   },
 };
 

+ 73 - 75
src/views/report_manage/addreportNew.vue

@@ -4,7 +4,7 @@
 			id="leftfroala" 
 			:class="{'full':!isRightFormShow,'block':isRightFormShow}"
 			v-loading="importChartNum>0" 
-			element-loading-text="图表批量插入中..."
+			:element-loading-text="$t('ReportManage.ReportList.chart_insertion_progress')"
 			element-loading-spinner="el-icon-loading"
 			element-loading-background="rgba(0, 0, 0, 0.8)"
 		>
@@ -26,7 +26,7 @@
 				"
 			>
 				<div v-show="lastsavetime" style="color: #666; margin-bottom: 15px">
-					最近保存时间:{{ lastsavetime }}
+					{{$t('ReportManage.ReportList.last_save_time')}}:{{ lastsavetime }}
 				</div>
 				<el-button
 					type="primary"
@@ -34,21 +34,21 @@
 					plain
 					@click.native="refreshReport"
 				>
-					一键刷新
+					{{$t('ReportManage.ReportList.click_refresh_btn')}}
 				</el-button>
 				<el-button v-permission="permissionBtn.reportManageBtn.reportManage_reportView"
 					type="primary"
 					size="medium"
 					plain
 					@click.native="clickreportadd('yl')"
-					>预览</el-button
+					>{{$t('ReportManage.ReportList.preview_btn')}}</el-button
 				>
 				<el-button
 					type="primary"
 					size="medium"
 					plain
 					@click.native="clickreportadd('cg')"
-					>存草稿</el-button
+					>{{$t('ReportManage.ReportList.save_draft_btn')}}</el-button
 				>
 				<!--不走审批流-->
 				<template v-if="!isApprove||!hasApproveFlow">
@@ -57,7 +57,7 @@
 						size="medium"
 						:disabled="checkLoading"
 						@click.native="clickreportadd('dsfb')"
-						>定时发布</el-button
+						>{{$t('ReportManage.ReportList.scheduled_publish_btn')}}</el-button
 					>
 					<el-button v-permission="permissionBtn.reportManageBtn.reportManage_publish"
 						type="primary"
@@ -65,13 +65,13 @@
 						:disabled="checkLoading"
 						@click.native="clickreportadd('fb')"
 						:loading="isPublishloading"
-						>发布</el-button
+						>{{$t('ReportManage.ReportList.publish_btn')}}</el-button
 					>
 				</template>
 				<template v-if="isApprove&&hasApproveFlow">
 					<el-button v-permission="permissionBtn.reportManageBtn.reportManage_publish"
 						:disabled="checkLoading"
-						type="primary" size="medium" @click="clickreportadd('submit')">提交</el-button>
+						type="primary" size="medium" @click="clickreportadd('submit')">{{$t('ReportManage.ReportList.submission_btn')}}</el-button>
 				</template>
 			</div>
 			<div
@@ -84,7 +84,7 @@
 				"
 			>
 				<el-tabs v-model="tabsactive">
-					<el-tab-pane :label="tab" :name="tab" v-for="tab in panelTabs" :key="tab"></el-tab-pane>
+					<el-tab-pane :label="tab.label" :name="tab.key" v-for="tab in panelTabs" :key="tab.key"></el-tab-pane>
 				</el-tabs>
 				<div
 					v-if="tabsactive == '基础信息'"
@@ -100,52 +100,52 @@
 						id="login-container"
 						@submit.native.prevent
 					>
-						<el-form-item prop="add_type" label="新增方式">
+						<el-form-item prop="add_type" :label="$t('ReportManage.ReportList.new_method_btn')">
 							<el-select
 								v-model="aeForm.add_type"
 								@change="userclassidreportdetail"
-								placeholder="请选择"
+								:placeholder="$t('ReportManage.CategoryList.please_select')"
 								size="medium"
 								style="width: 270px"
 							>
-								<el-option label="新增报告" :value="1"></el-option>
-								<el-option label="继承报告" :value="2"></el-option>
+								<el-option :label="$t('ReportManage.ReportList.new_report_radio')" :value="1"></el-option>
+								<el-option :label="$t('ReportManage.ReportList.inherit_report_radio')" :value="2"></el-option>
 							</el-select>
 						</el-form-item>
-						<el-form-item prop="classifynameArr" label="分类">
+						<el-form-item prop="classifynameArr" :label="$t('ReportManage.ReportList.classificiation_selest')">
 							<el-cascader
 								@change="userclassidreportdetail"
 								ref="cascader"
 								:options="optionsArr"
 								v-model="aeForm.classifynameArr"
-								placeholder="类型筛选"
+								:placeholder="$t('ReportManage.smart_type_filtering')"
 								size="medium"
 								style="width: 270px"
 							></el-cascader>
 						</el-form-item>
-						<el-form-item prop="title" label="标题">
+						<el-form-item prop="title" :label="$t('ReportManage.ReportList.title_ipt')">
 							<el-input
 								type="textarea"
 								:rows="2"
-								placeholder="请输入"
+								:placeholder="$t('ReportManage.CategoryList.please_input')"
 								v-model="aeForm.title"
 								size="medium"
 							></el-input>
 						</el-form-item>
-						<el-form-item label="摘要">
+						<el-form-item :label="$t('ReportManage.ReportList.abstract_ipt')">
 							<el-input
 								type="textarea"
 								:rows="2"
-								placeholder="请输入"
+								:placeholder="$t('ReportManage.CategoryList.please_input')"
 								v-model="aeForm.abstract"
 								size="medium"
 							></el-input>
 						</el-form-item>
-						<el-form-item label="作者">
+						<el-form-item :label="$t('ReportManage.ReportList.author_select')">
 							<el-select
 								v-model="aeForm.author"
 								multiple
-								placeholder="请选择"
+								:placeholder="$t('ReportManage.CategoryList.please_select')"
 								size="medium"
 								style="width: 270px"
 							>
@@ -157,29 +157,29 @@
 								></el-option>
 							</el-select>
 						</el-form-item>
-						<el-form-item label="频度">
+						<el-form-item :label="$t('ReportManage.ReportList.frequency_select')">
 							<el-select
 								v-model="aeForm.frequency"
-								placeholder="请选择"
+								:placeholder="$t('ReportManage.CategoryList.please_select')"
 								size="medium"
 								style="width: 270px"
 							>
-								<el-option label="年度" value="年度"></el-option>
-								<el-option label="半年度" value="半年度"></el-option>
-								<el-option label="季度" value="季度"></el-option>
-								<el-option label="月度" value="月度"></el-option>
-								<el-option label="双周度" value="双周度"></el-option>
-								<el-option label="周度" value="周度"></el-option>
-								<el-option label="日度" value="日度"></el-option>
-								<el-option label="不定时" value="不定时"></el-option>
+							   <el-option :label="$t('ReportManage.smart_annually')" :value="$t('ReportManage.smart_annually')"></el-option>
+                               <el-option :label="$t('ReportManage.smart_semi_annually')" :value="$t('ReportManage.smart_semi_annually')"></el-option>
+                               <el-option :label="$t('ReportManage.smart_quarterly')" :value="$t('ReportManage.smart_quarterly')"></el-option>
+                               <el-option :label="$t('ReportManage.smart_monthly')" :value="$t('ReportManage.smart_monthly')"></el-option>
+                               <el-option :label="$t('ReportManage.smart_bi_weekly')" :value="$t('ReportManage.smart_bi_weekly')"></el-option>
+                               <el-option :label="$t('ReportManage.smart_weekly')" :value="$t('ReportManage.smart_weekly')"></el-option>
+                               <el-option :label="$t('ReportManage.smart_daily')" :value="$t('ReportManage.smart_daily')"></el-option>
+                               <el-option :label="$t('ReportManage.smart_irregularly')" :value="$t('ReportManage.smart_irregularly')"></el-option>
 							</el-select>
 						</el-form-item>
-						<el-form-item label="创建时间">
+						<el-form-item :label="$t('ReportManage.ReportList.creation_time_select')">
 							<el-date-picker
 								v-model="aeForm.create_time"
 								type="date"
 								value-format="yyyy-MM-dd"
-								placeholder="选择日期"
+								:placeholder="$t('ReportManage.ReportList.select_date')"
 								size="medium"
 								:clearable="false"
 								style="width: 270px"
@@ -189,7 +189,7 @@
 				</div>
 				<div v-if="tabsactive == '图表插入'">
 					<el-input
-						placeholder="图表名称"
+						:placeholder="$t('ReportManage.ReportList.chart_name')"
 						v-model="key_word"
 						size="medium"
 						prefix-icon="el-icon-search"
@@ -197,15 +197,15 @@
 					>
 					</el-input>
 					<el-radio-group v-model="chart_source" @change="() => {search_page=1;$refs.chartListRef.scrollTop = 0;getreportlist()}" style="margin-top: 10px;">
-						<el-radio :label="1">ETA图库</el-radio>
-						<el-radio :label="2">商品价格曲线</el-radio> 
-						<el-radio :label="3">相关性图表</el-radio>
-						<el-radio :label="6">拟合方程曲线</el-radio>
-						<el-radio :label="7">统计特征</el-radio>
-						<el-radio :label="10">跨品种分析</el-radio>
+						<el-radio :label="1">{{$t('ReportManage.ReportList.chart_inventory_radio')}}</el-radio>
+						<el-radio :label="2">{{$t('ReportManage.ReportList.price_curve_radio')}}</el-radio> 
+						<el-radio :label="3">{{$t('ReportManage.ReportList.related_charts_radio')}}</el-radio>
+						<el-radio :label="6">{{$t('ReportManage.ReportList.curve_fitting_radio')}}</el-radio>
+						<el-radio :label="7">{{$t('ReportManage.ReportList.statistical_feature_radio')}}</el-radio>
+						<el-radio :label="10">{{$t('ReportManage.ReportList.intercommodity_analysis_radio')}}</el-radio>
 					</el-radio-group>
 					<div style="margin: 10px 0">
-						<el-checkbox v-model="isShowMe" @change="() => {search_page=1;$refs.chartListRef.scrollTop = 0;getreportlist(key_word)}">只看我的</el-checkbox>
+						<el-checkbox v-model="isShowMe" @change="() => {search_page=1;$refs.chartListRef.scrollTop = 0;getreportlist(key_word)}">{{$t('ReportManage.ReportList.just_mine_radio')}}</el-checkbox>
 					</div>
 					<div
 						id="reportwin"
@@ -234,13 +234,13 @@
 							</div>
 						</template>
 
-						<tableNoData text="暂无图表" size="mini" v-else/>
+						<tableNoData :text="$t('ReportManage.ReportList.no_chart_table_available')" size="mini" v-else/>
 					</div>
 
 				</div>
 				<div v-if="tabsactive == '沙盘插入'">
 					<el-input
-						placeholder="沙盘名称/品种"
+						:placeholder="$t('ReportManage.ReportList.no_reports_msg')"
 						v-model="sandTabelQuery.Keyword"
 						size="medium"
 						prefix-icon="el-icon-search"
@@ -271,12 +271,12 @@
 								<!-- <p class="source-identification">来源:弘则研究</p> -->
 							</div>
 						</template>
-						<tableNoData text="暂无数据" size="mini" v-else/>
+						<tableNoData :text="$t('Table.prompt_slogan')"  size="mini" v-else/>
 					</div>
 				</div>
 				<div v-if="tabsactive == '表格插入'">
 					<el-input
-						placeholder="表格名称"
+						:placeholder="$t('ReportManage.ReportList.table_name_tabs')"
 						v-model="sheetSearchObj.Keyword"
 						size="medium"
 						prefix-icon="el-icon-search"
@@ -306,7 +306,7 @@
 							</div>
 						</template>
 
-						<tableNoData text="暂无数据" size="mini" v-else/>
+						<tableNoData :text="$t('Table.prompt_slogan')" size="mini" v-else/>
 					</div>
 				</div>
 				<div v-if="tabsactive == 'MyETA批量插入'">
@@ -331,23 +331,23 @@
 			:append-to-body="true" 
 			:visible.sync="showDSFB" 
 			width="500px" 
-			title="定时发布"
+			:title="$t('ReportManage.ReportList.scheduled_publish_btn')"
 		>
 			<div>
 				<div>
-					<span>发送时间</span>
+					<span>{{$t('ReportManage.ReportList.publish_time')}}</span>
 					<el-date-picker
 						v-model="taskTime"
 						type="datetime"
-						placeholder="选择日期时间"
+						:placeholder="$t('ReportManage.ReportList.select_date_and_time')"
 						value-format="yyyy-MM-dd HH:mm"
 						:picker-options="timePickerOpt"
 					/>
 				</div>
-				<p style="margin:15px 0">设置成功之后,研报将定时进行发送。</p>
+				<p style="margin:15px 0">{{$t('ReportManage.ReportList.the_report_will_be_posted_on_time')}}</p>
 				<div style="text-align:right;margin:20px 0">
-					<el-button type="primary" plain @click="showDSFB=false">取消</el-button>
-					<el-button type="primary" @click="handleSetReportPrepublish">确定</el-button>
+					<el-button type="primary" plain @click="showDSFB=false">{{$t('Dialog.cancel_btn')}}</el-button>
+					<el-button type="primary" @click="handleSetReportPrepublish">{{$t('Dialog.confirm_btn')}}</el-button>
 				</div>
 			</div>
 		</el-dialog>
@@ -556,7 +556,7 @@ export default {
 			classifyIdDetail(params).then((res) => {
 				if (res.Ret == 200) {
 					if (res.Data == null) {
-						this.$message.error('此分类暂无报告');
+						this.$message.error(this.$t('ReportManage.ReportList.no_reports_msg'));
 						return false;
 					}
 					let obj=JSON.parse(JSON.stringify(this.aeForm.classifynameArr))
@@ -583,15 +583,15 @@ export default {
 				!this.aeForm.classifynameArr ||
 				this.aeForm.classifynameArr.length == 0
 			) {
-				this.$message.error('请选择分类');
+				this.$message.error(this.$t('ReportManage.ReportList.please_select_category'));
 				return false;
 			}
 			if (!this.aeForm.title) {
-				this.$message.error('请输入标题');
+				this.$message.error(this.$t('ReportManage.ReportList.input_title_please'));
 				return false;
 			}
 			if(!this.autoSaveFlag){
-				this.$message.error('有图片未上传完成,请稍等')
+				this.$message.error(this.$t('ReportManage.smart_msg.img_wait'))
 				return false
 			}
 			//如果富文本中有未上传完成的图片,去除这个dom
@@ -665,9 +665,9 @@ export default {
 						this.isMessagePost = false; 
 						this.reporteditMsg(params2,tp)
 					}else if(isPost){
-						this.$confirm('发布后,是否推送模板消息?', '发布提示', {
-								confirmButtonText: '推送',
-								cancelButtonText: '不推送',
+						this.$confirm(this.$t('ReportManage.smart_msg.publishing_messages'), this.$t('ReportManage.smart_release_prompt_btn'), {
+								confirmButtonText: this.$t('ReportManage.smart_btn.push'),
+								cancelButtonText: this.$t('ReportManage.smart_btn.not_push'),
 								type: 'warning',
 								distinguishCancelAndClose:true,
 								beforeClose:(action, instance,done)=>{
@@ -702,9 +702,9 @@ export default {
 						this.isMessagePost = false; 
 						this.reportaddMsg(params,tp)
 					}else if(isPost){
-						this.$confirm('发布后,是否推送模板消息?', '发布提示', {
-								confirmButtonText: '推送',
-								cancelButtonText: '不推送',
+						this.$confirm(this.$t('ReportManage.smart_msg.publishing_messages'), this.$t('ReportManage.ReportList.smart_release_prompt_btn'), {
+								confirmButtonText: this.$t('ReportManage.smart_btn.push'),
+								cancelButtonText:  this.$t('ReportManage.smart_btn.not_push'),
 								type: 'warning',
 								distinguishCancelAndClose:true,
 								beforeClose:(action, instance,done)=>{
@@ -746,21 +746,20 @@ export default {
 		// 定时发布报告
 		handleSetReportPrepublish(){
 			if(!this.taskTime){
-				this.$message.warning('请选择定时发布的时间')
+				this.$message.warning(this.$t('ReportManage.smart_msg.select_push_time'))
 				return
 			}
 			const now=this.$moment().format('YYYY-MM-DD HH:mm:ss')
 			console.log(now);
 			console.log(this.taskTime);
 			if(this.$moment(this.taskTime).isBefore(now,'second')){
-				this.$message.warning('定时发布不得早于当前时间')
+				this.$message.warning(this.$t('ReportManage.smart_msg.than_current_time'))
 				return
 			}
-			console.log('定时去发布了');
 			const isPost = this.permissionBtn.checkPermissionBtn(this.permissionBtn.reportManageBtn.reportManage_sendMsg)
-			this.$confirm(isPost?'是否发布定时报告,并推送模板消息?':'是否发布定时报告?', '发布提示', {
-				confirmButtonText: isPost?'推送':'发布',
-				cancelButtonText: isPost?'不推送':'取消',
+			this.$confirm(isPost?this.$t('ReportManage.smart_msg.push_report_msg'):this.$t('ReportManage.smart_msg.is_push_timed'), this.$t('ReportManage.ReportList.smart_release_prompt_btn'), {
+				confirmButtonText: isPost?this.$t('ReportManage.smart_btn.push'):this.$t('ReportManage.smart_btn.publish'),
+				cancelButtonText: isPost?this.$t('ReportManage.smart_btn.not_push'):this.$t('Dialog.cancel_btn'),
 				type: 'warning',
 				distinguishCancelAndClose:true,
 				beforeClose:(action, instance,done)=>{
@@ -774,7 +773,7 @@ export default {
 								PreMsgSend:0,
 							}).then(res=>{
 								if(res.Ret===200){
-									this.$message.success('定时发布成功!')
+									this.$message.success(this.$t('ReportManage.smart_msg.timed_success'))
 									this.$router.push({ path: '/reportlist' });
 								}
 							})
@@ -787,7 +786,7 @@ export default {
 							PreMsgSend:isPost?1:0,
 						}).then(res=>{
 							if(res.Ret===200){
-								this.$message.success('定时发布成功!')
+								this.$message.success(this.$t('ReportManage.smart_msg.timed_success'))
 								this.$router.push({ path: '/reportlist' });
 							}
 						})
@@ -835,7 +834,6 @@ export default {
 				let ifm=document.getElementById(item.domId)
 				ifm.onload=(e)=>{
 					this.importChartNum--
-					console.log('一个iframe加载了',e.path[0]);
 				}
 			})
 		},
@@ -851,9 +849,9 @@ export default {
 					this.sandTableList = List
 					this.sandTableTotal = Paging.Totals
 					if(this.sandTableList.length ==0){
-						this.loadedText = '暂无数据'
+						this.loadedText = this.$t('Table.prompt_slogan')
 					}else if(this.sandTableList.length>=this.sandTableTotal){
-						this.loadedText='已全部加载完'
+						this.loadedText = this.$t('ReportManage.smart_msg.all_loaded_have')
 					}else{
 
 					}
@@ -867,7 +865,7 @@ export default {
 		// 沙盘列表滚动事件,触底加载下一页数据 防抖
 		sandTableHandleScroll:_.debounce(function (e) {
 			if(this.sandTableList.length>=this.sandTableTotal){
-				this.loadedText = '已全部加载完'
+				this.loadedText = this.$t('ReportManage.smart_msg.all_loaded_have')
 				return
 			}
 			if(e.target.scrollHeight-e.target.clientHeight-e.target.scrollTop<10 && !this.isRequesting){
@@ -925,7 +923,7 @@ export default {
 					title: '',
 					abstract: '',
 					author: ['FICC团队'],
-					frequency: '日度',
+					frequency: this.$t('ReportManage.smart_daily'),
 					create_time: http.dateFormatter(new Date(), false),
 					content: '',
 				};

+ 1 - 1
src/views/report_manage/editreportNew.vue

@@ -232,7 +232,7 @@
 								/>
 							</div>
 						</template>
-						<tableNoData text="暂无图表" size="mini" v-else/>
+						<tableNoData :text="$t('ReportManage.ReportList.no_chart_table_available')" size="mini" v-else/>
 					</div>
 				</div>
 

+ 13 - 9
src/views/report_manage/mixins/reportMixin.js

@@ -164,15 +164,6 @@ export default {
         ischange: false,
         isPublishloading: false,
       },
-      panelTabs: [
-        "基础信息",
-        "图表插入",
-        "MyETA批量插入",
-        "表格插入",
-        "沙盘插入",
-        "语义分析插入"
-      ],
-
       sheetSearchObj: {},
       sheetSearchList: [],
 
@@ -557,4 +548,17 @@ export default {
       this.getreportlist(this.key_word);
     },
   },
+
+  computed:{
+    panelTabs(){
+    return [
+        {key: "基础信息",label:this.$t('ReportManage.ReportList.information_title')},
+        {key: "图表插入",label:this.$t('ReportManage.ReportList.insert_chart_tabs')},
+        {key: "MyETA批量插入",label:this.$t('ReportManage.ReportList.bulk_insertion_tabs')},
+        {key: "表格插入",label:this.$t('ReportManage.ReportList.insert_table_tabs')},
+        {key: "沙盘插入",label:this.$t('ReportManage.ReportList.insert_sandbox_tabs')},
+        {key: "语义分析插入",label:this.$t('ReportManage.ReportList.semantic_analysis_tabs')},
+       ]
+    },
+  }
 };

+ 1119 - 0
src/views/report_manage/reportEn/index.vue

@@ -0,0 +1,1119 @@
+<template>
+	<div id="editreport">
+    <div class="leftitems" :class="{'full':!isRightFormShow,'block':isRightFormShow}">
+      <div class="overview" :style="{marginBottom:value?'20px':'0'}">
+        <p @click="value=!value">Overview
+          <span><i :class="value?'el-icon-arrow-down':'el-icon-arrow-up'"></i></span>
+        </p>
+        <div id="leftoverview" v-show="value">
+          <froala :id="`overview-editor`" :style="{display:'none'}"
+                :ref="`overviewEditor`" 
+                :tag="'textarea'" 
+                :config="overviewConfig" v-model="aeForm.overview">
+          </froala> 
+        </div>
+      </div>
+      <div 
+        id="leftfroala"
+        v-loading="importChartNum>0" 
+        :element-loading-text="$t('ReportManage.ReportList.chart_insertion_progress')"
+        element-loading-spinner="el-icon-loading"
+        element-loading-background="rgba(0, 0, 0, 0.8)"
+		  >
+        <froala
+          id="froala-editor"
+          ref="froalaEditor"
+          :tag="'textarea'"
+          :config="{...froalaConfig,quickInsertEnabled: false,}"
+          v-model="aeForm.content"
+        ></froala>
+		  </div>
+    </div>
+		
+		<div id="rightitems" v-show="isRightFormShow">
+			<div v-if="!pageLoading"
+				style="
+					text-align: right;
+					padding: 0px 0 15px 0;
+					box-sizing: border-box;
+				"
+			>
+				<div v-show="lastsavetime" style="color: #666; margin-bottom: 15px">
+					{{$t('ReportManage.ReportList.last_save_time')}}:{{ lastsavetime }}
+				</div>
+				<el-button
+					type="primary"
+					size="medium"
+					plain
+					@click.native="refreshReport"
+				>
+					{{$t('ReportManage.ReportList.click_refresh_btn')}}
+				</el-button>
+				<el-button v-permission="permissionBtn.enReportManageBtn.enReport_reportView"
+					type="primary"
+					size="medium"
+					plain
+					@click.native="clickreportadd('yl')"
+					>{{$t('ReportManage.ReportList.preview_btn')}}</el-button
+				>
+				<el-button
+					type="primary"
+					size="medium"
+					plain
+					@click.native="clickreportadd('cg')"
+					>{{$t('ReportManage.ReportList.save_draft_btn')}}</el-button
+				>
+				<template v-if="!isApprove||!hasApproveFlow">
+					<el-button v-permission="permissionBtn.enReportManageBtn.enReport_publish"
+						type="primary"
+						size="medium"
+						:disabled="checkLoading"
+						@click.native="clickreportadd('dsfb')"
+						>{{$t('ReportManage.ReportList.scheduled_publish_btn')}}</el-button
+					>
+					<el-button v-permission="permissionBtn.enReportManageBtn.enReport_publish"
+						type="primary"
+						size="medium"
+						:disabled="checkLoading"
+						@click.native="clickreportadd('fb')"
+						:loading="isPublishloading"
+						>{{$t('ReportManage.ReportList.publish_btn')}}</el-button
+					>
+				</template>
+				<template v-if="isApprove&&hasApproveFlow">
+					<el-button v-permission="permissionBtn.enReportManageBtn.enReport_publish"
+						:disabled="checkLoading"
+						type="primary" size="medium" @click="clickreportadd('submit')">{{$t('ReportManage.ReportList.submission_btn')}}</el-button>
+				</template>
+			</div>
+			<div
+				style="margin: 0px 0 0 20px;padding: 10px 20px;box-sizing: border-box;background: #fff;border: 1px solid #3464e0;"
+			>
+				<el-tabs v-model="tabsactive">
+					<el-tab-pane :label="tab.label" :name="tab.key" v-for="tab in panelTabs" :key="tab.key"></el-tab-pane>
+				</el-tabs>
+				<div
+					v-if="tabsactive == '基础信息'"
+					style="height: calc(100vh - 315px); overflow-y: auto"
+				>
+					<el-form
+						:model="aeForm"
+						:rules="formRules"
+						ref="aeForm"
+						label-position="right"
+						label-width="90px"
+						class="demo-aeForm"
+						id="login-container"
+						@submit.native.prevent
+					>
+						<el-form-item prop="add_type" :label="$t('ReportManage.ReportList.new_method_btn')">
+							<el-select
+								v-model="aeForm.add_type"
+								@change="userclassidreportdetail"
+								:placeholder="$t('ReportManage.CategoryList.please_select')"
+								size="medium"
+								:disabled="report_id?true:false"
+								style="width: 270px"
+							>
+								<el-option :label="$t('ReportManage.ReportList.new_report_radio')" :value="1"></el-option>
+								<el-option :label="$t('ReportManage.ReportList.inherit_report_radio')" :value="2"></el-option>
+							</el-select>
+						</el-form-item>
+						<el-form-item prop="classifynameArr" :label="$t('ReportManage.ReportList.classificiation_selest')">
+							<el-cascader
+								@change="userclassidreportdetail"
+								:options="optionsArr"
+								:props="{
+									children:'Child'
+								}"
+								v-model="aeForm.classifynameArr"
+								:placeholder="$t('ReportManage.smart_type_filtering')"
+								size="medium"
+								style="width: 270px"
+							></el-cascader>
+						</el-form-item>
+						<el-form-item prop="title" :label="$t('ReportManage.ReportList.title_ipt')">
+							<el-input
+								type="textarea"
+								:rows="2"
+								:placeholder="$t('ReportManage.CategoryList.please_input')"
+								v-model="aeForm.title"
+								size="medium"
+							></el-input>
+						</el-form-item>
+						<el-form-item prop="abstract" label="摘要">
+							<el-input
+								type="textarea"
+								:rows="2"
+								:placeholder="$t('ReportManage.CategoryList.please_input')"
+								v-model="aeForm.abstract"
+								size="medium"
+							></el-input>
+              <span class="limit">{{aeForm.abstract.length}}</span>
+						</el-form-item>
+						<el-form-item :label="$t('ReportManage.ReportList.author_select')">
+							<el-select
+								v-model="aeForm.author"
+								multiple
+								:placeholder="$t('ReportManage.CategoryList.please_select')"
+								size="medium"
+								style="width: 270px"
+							>
+								<el-option
+									v-for="(item, i) in authorlist"
+									:key="i"
+									:label="item.ReportAuthor"
+									:value="item.ReportAuthor"
+								></el-option>
+							</el-select>
+						</el-form-item>
+						<el-form-item :label="$t('ReportManage.ReportList.frequency_select')">
+							<el-select
+								v-model="aeForm.frequency"
+								:placeholder="$t('ReportManage.CategoryList.please_select')"
+								size="medium"
+								style="width: 270px"
+							> 
+							   <el-option :label="$t('ReportManage.smart_annually')" :value="$t('ReportManage.smart_annually')"></el-option>
+                               <el-option :label="$t('ReportManage.smart_semi_annually')" :value="$t('ReportManage.smart_semi_annually')"></el-option>
+                               <el-option :label="$t('ReportManage.smart_quarterly')" :value="$t('ReportManage.smart_quarterly')"></el-option>
+                               <el-option :label="$t('ReportManage.smart_monthly')" :value="$t('ReportManage.smart_monthly')"></el-option>
+                               <el-option :label="$t('ReportManage.smart_bi_weekly')" :value="$t('ReportManage.smart_bi_weekly')"></el-option>
+                               <el-option :label="$t('ReportManage.smart_weekly')" :value="$t('ReportManage.smart_weekly')"></el-option>
+                               <el-option :label="$t('ReportManage.smart_daily')" :value="$t('ReportManage.smart_daily')"></el-option>
+                               <el-option :label="$t('ReportManage.smart_irregularly')" :value="$t('ReportManage.smart_irregularly')"></el-option>
+							</el-select>
+						</el-form-item>
+						<el-form-item :label="$t('ReportManage.ReportList.creation_time_select')">
+							<el-date-picker
+								v-model="aeForm.create_time"
+								type="date"
+								value-format="yyyy-MM-dd"
+								:placeholder="$t('ReportManage.ReportList.select_date')"
+								size="medium"
+								:clearable="false"
+								style="width: 270px"
+							></el-date-picker>
+						</el-form-item>
+					</el-form>
+				</div>
+				<div v-if="tabsactive == '图表插入'">
+					<el-input
+						:placeholder="$t('ReportManage.ReportList.chart_name')"
+						v-model="key_word"
+						size="medium"
+						prefix-icon="el-icon-search"
+						@input="() => {search_page=1;$refs.chartListRef.scrollTop = 0;getreportlist(key_word)}"
+					>
+					</el-input>
+					<el-radio-group v-model="chart_source" @change="() => {search_page=1;$refs.chartListRef.scrollTop = 0;getreportlist()}" style="margin-top: 10px;">
+						<el-radio :label="1">{{$t('ReportManage.ReportList.chart_inventory_radio')}}</el-radio>
+						<el-radio :label="2">{{$t('ReportManage.ReportList.price_curve_radio')}}</el-radio> 
+						<el-radio :label="3">{{$t('ReportManage.ReportList.related_charts_radio')}}</el-radio>
+						<el-radio :label="6">{{$t('ReportManage.ReportList.curve_fitting_radio')}}</el-radio>
+						<el-radio :label="7">{{$t('ReportManage.ReportList.statistical_feature_radio')}}</el-radio>
+						<el-radio :label="10">{{$t('ReportManage.ReportList.intercommodity_analysis_radio')}}</el-radio>
+					</el-radio-group>
+					<div style="margin: 10px 0">
+						<el-checkbox v-model="isShowMe" @change="() => {search_page=1;$refs.chartListRef.scrollTop = 0;getreportlist(key_word)}">只看我的</el-checkbox>
+					</div>
+					<div
+						style="height: calc(100vh - 370px);overflow-x: hidden;overflow-y: auto;"
+						v-infinite-scroll="loadReportHandle"
+						:infinite-scroll-immediate="false"
+						ref="chartListRef"
+					>
+						<template v-if="newreportlist.length">
+							<div
+								v-for="(item, index) in newreportlist"
+								:key="item.ChartInfoId"
+								:style="item.Disabled && 'cursor: not-allowed;'"
+								class="liststy"
+							>
+								<div class="chartEn-mark" style="top: 0;left:0;" @click="setEnHandle(item)">
+									<span v-if="item.IsEnChart">En</span>
+									<i class="el-icon-edit" v-else style="font-size:18px"/>
+								</div>
+								<p class="color_primary">{{ chart_source===1 ? (item.ChartNameEn||item.ChartName) : item.ChartName }}</p>
+								<img
+									:src="item.ChartImage"
+									:id="'listnode' + index"
+									@click="insertHtml(item)"
+								/>
+							</div>
+						</template>
+						<tableNoData text="暂无图表" size="mini" v-else/>
+					</div>
+				</div>
+				<div v-if="tabsactive == '沙盘插入'">
+					<el-input
+						:placeholder="$t('ReportManage.ReportList.no_reports_msg')"
+						v-model="sandTabelQuery.Keyword"
+						size="medium"
+						prefix-icon="el-icon-search"
+					>
+					</el-input>
+					<div
+						id="sandTable-container"
+						ref="sandTable"
+						style="
+							height: calc(100vh - 370px);
+							overflow-x: hidden;
+							overflow-y: auto;
+						"
+						@scroll="sandTableHandleScroll"
+					>
+						<template v-if="sandTableList.length">
+							<div
+								v-for="(item, index) in sandTableList"
+								:key="item.SandboxId"
+								class="liststy"
+							>
+								<p class="color_primary">{{ item.Name }}</p>
+								<img
+									:src="item.PicUrl"
+									:id="'sandTable' + index"
+									@click="insertHtml(item,'image')"
+								/>
+								<!-- <p class="source-identification">来源:弘则研究</p> -->
+							</div>
+						</template>
+						<tableNoData :text="$t('Table.prompt_slogan')" size="mini" v-else/>
+					</div>
+				</div>
+				<div v-if="tabsactive == '表格插入'">
+					<el-input
+						:placeholder="$t('ReportManage.ReportList.table_name_tabs')"
+						v-model="sheetSearchObj.Keyword"
+						size="medium"
+						prefix-icon="el-icon-search"
+						@input="getSheetList"
+					>
+					</el-input>
+					<div
+						style="
+							height: calc(100vh - 320px);
+							overflow-x: hidden;
+							overflow-y: auto;
+						"
+					>
+						<template v-if="sheetSearchList.length">
+							<div
+								v-for="item in sheetSearchList"
+								:key="item.ExcelInfoId"
+								class="liststy"
+							>
+								<p class="color_primary">{{ item.ExcelName }}</p>
+								<img
+									:src="item.ExcelImage"
+									:id="'sheet' + item.ExcelInfoId"
+									style="object-fit: contain;height: 250px;"
+									@click="insertHtml(item,'sheet')"
+								/>
+							</div>
+						</template>
+						<tableNoData :text="$t('Table.prompt_slogan')" size="mini" v-else/>
+					</div>
+				</div>
+				<div v-if="tabsactive == 'MyETA批量插入'">
+					<importMyChart @handleImportMyChart="handleImportMyChart" :showEnMark="true" />
+				</div>
+				<div v-if="tabsactive == '语义分析插入'">
+					<importSemantics @handleImportSemantic="(item)=>insertHtml(item,'image')"/>
+				</div>
+			</div>
+		</div>
+		<span
+			class="slide-icon"
+			:class="{'slide-left':!isRightFormShow,'slide-right':isRightFormShow}"
+			@click="isRightFormShow = !isRightFormShow"
+		>
+			<i :class="{'el-icon-d-arrow-left':!isRightFormShow,'el-icon-d-arrow-right':isRightFormShow}"></i>
+		</span>
+
+		<!-- 设置英文信息弹窗 -->
+		<set-en-name-dia 
+			:isOpenDialog="setEnName" 
+			:formData="formItemArray"
+			@cancel="setEnName=false" 
+			@updateEnName="updateEnName" 
+			:chartType="enChartInfo.ChartType"
+      :datainfo="enChartInfo.ChartType===10?JSON.parse(enChartInfo.ExtraConfig):null"
+      :edblist="enChartInfo.ChartType===10?enEdblist:[]"
+		/>
+
+		<!-- 定时发布弹窗 -->
+		<el-dialog 
+			v-dialogDrag 
+			:append-to-body="true" 
+			:visible.sync="showDSFB" 
+			width="500px" 
+		    :title="$t('ReportManage.ReportList.scheduled_publish_btn')"
+		>
+			<div>
+				<div>
+					<span>{{$t('ReportManage.ReportList.publish_time')}}</span>
+					<el-date-picker
+						v-model="taskTime"
+						type="datetime"
+						:placeholder="$t('ReportManage.ReportList.select_date_and_time')"
+						value-format="yyyy-MM-dd HH:mm"
+						:picker-options="timePickerOpt"
+					/>
+				</div>
+				<p style="margin:15px 0">{{$t('ReportManage.ReportList.the_report_will_be_posted_on_time')}}</p>
+				<div style="text-align:right;margin:20px 0">
+					<el-button type="primary" plain @click="showDSFB=false">{{$t('Dialog.cancel_btn')}}</el-button>
+					<el-button type="primary" @click="handleConfirmDSFB">{{$t('Dialog.confirm_btn')}}</el-button>
+				</div>
+			</div>
+		</el-dialog>
+
+	</div>
+</template>
+
+<script>
+import {
+	reportauthor,
+	dataBaseInterface,
+	sandInterface
+} from 'api/api.js';
+import {authorEn} from '@/api/modules/reportAuthorApi.js';
+import * as reportEnInterface from '@/api/modules/reportEnApi';
+import {approveInterence} from '@/api/modules/approve.js';
+import http from '@/api/http.js';
+import mixinMsg from '../mixins/messagePush'
+import reportMixin from '../mixins/reportMixin';
+import reportApproveConfig from "@/mixins/reportApproveConfig.js"
+import importMyChart from '../components/importMyChart.vue'
+import setEnNameDia from '@/views/dataEntry_manage/components/setEnNameDia.vue'
+import importSemantics from '../components/importSemantics.vue';
+export default {
+	mixins:[mixinMsg,reportMixin,reportApproveConfig],
+	data() {
+		return {
+			//批量导入图表
+			importChartNum:0,//批量导入图表的数量 如果大于0则说明在加载
+			report_id: this.$route.query.id || '',
+			tabsactive: '基础信息',
+			optionsArr: [],
+			key_word: '',
+			// 沙盘插入 ----------start
+			sandTabelQuery:{
+				PageSize: 13,
+				CurrentIndex: 1,
+				Keyword: '',
+			}, // 沙盘图查询参数
+			sandTableLoading:false,
+			sandTableTotal:0,//沙盘总共条数
+			sandTableList:[],
+			isRequesting:false,
+			loadedText:'', // 全部加载完的文字提示
+			// 沙盘插入 ------------- end
+			originreportlist: [],
+			newreportlist: [],
+			authorlist: [],
+			aeForm: {
+				add_type: 1,
+				classify_name: 1,
+				classifynameArr: [],
+				title: '',
+				abstract: '',
+				author: ['Horizon Insights FICC Team'],
+				frequency: '日度',
+				create_time: http.dateFormatter(new Date(), false),
+				content: '',
+			},
+			formRules: {
+				add_type: [
+					{
+						required: true,
+						message: '',
+						trigger: 'blur',
+					},
+				],
+				classifynameArr: [
+					{
+						required: true,
+						message: '',
+						trigger: 'blur',
+					},
+				],
+				title: [
+					{
+						required: true,
+						message: '请输入',
+						trigger: 'blur',
+					},
+				],
+        abstract: [
+					{
+						required: true,
+						message: '请输入',
+						trigger: 'blur',
+					},
+				],
+			},
+			lastEditRange: null,
+			reportloadding: false,
+			lastsavetime: '',
+			timer: null,
+			ischange: false,
+			isPublishloading: false,
+      value:true,
+      overviewConfig:{
+        toolbarButtons: [
+					'textColor',
+					'bold',
+					'italic',
+					'underline',
+					'strikeThrough',
+					'subscript',
+					'superscript',
+					'fontFamily',
+					'fontSize',
+					'color',
+					'inlineClass',
+					'inlineStyle',
+					'paragraphStyle',
+					'lineHeight',
+					'paragraphFormat',
+					'align',
+					'outdent',
+					'indent',
+					'quote',
+					'specialCharacters',
+					'insertHR',
+					'selectAll',
+					'clearFormatting',
+					'undo',
+					'redo',
+        ],
+        fontSize: ["12", "14", "16", "18", "20", "24", "28", "32", "36", "40"],
+        height:300,
+        fontSizeDefaultSelection: "16",
+        quickInsertEnabled: false,
+        theme: "dark", //主题
+        placeholderText:'请输入overview',
+        language: "zh_cn",
+        //允许粘贴的样式
+        pasteAllowedStyleProps: ['font-family', 'font-size', 'color']
+      },
+
+			showDSFB:false,//显示定时发布弹窗
+			taskTime:'',//定时发布的时间
+			timePickerOpt:{
+				disabledDate(e){
+					return e.getTime()< new Date().getTime()-24 * 60 * 60 * 1000
+				},
+				selectableRange:'00:00:00 - 23:59:59'
+			},
+		};
+	},
+	beforeRouteEnter(to, from, next) {
+        if(to.query.id){
+            to.matched[1].name= this.$t('ReportManage.ReportList.edit_en_report')
+		}else{
+			to.matched[1].name= this.$t('ReportManage.ReportList.add_ch_report')
+		}
+        next()
+    },
+	mounted() {
+		this.$route.query.id && this.getreportdetail();
+		this.getclassifylist();
+		this.getreportlist('');
+		this.getreportauthor();
+		this.getSandTable();
+		this.getSheetList();
+		this.timer = setInterval(() => {
+			this.autoSave();
+		}, 6000);
+
+		window.addEventListener('message',this.reInitIframe)
+	},
+	updated() {
+    // const height = this.value?(screen.height - 642):(screen.height - 400)
+		$('#leftfroala').find('p').css({ fontSize: '16px' });
+    $('#leftoverview').find('p').css({ fontSize: '16px' });
+    // $('#leftfroala .fr-wrapper').css({height:height+'px'})
+    // $('#leftfroala .fr-element').css({minHeight:height+'px'})
+	},
+	destroyed() {
+		window.removeEventListener('message',this.reInitIframe)
+		if (this.timer) {
+			clearInterval(this.timer);
+		}
+	},
+	watch: {
+		'sandTabelQuery.Keyword'(newval,oldval){
+			this.$refs.sandTable.scrollTop=0
+			this.sandTabelQuery.CurrentIndex = 1
+			this.getSandTable()
+		},
+		'taskTime'(){
+			const date = this.$moment(this.taskTime).startOf('day').format('x');
+	        const nowDate = this.$moment().startOf('day').format('x');
+	        // 如果选择的是今天 则需要禁用已经过去的时间节点
+	        if (date <= nowDate) {
+	            // 默认选择的最新时间 是当前时间的两分钟后 (留出2分钟的富裕时间)
+	            this.timePickerOpt.selectableRange = (
+	                `${this.$moment().add(2,'m').format('HH:mm:ss')} - 23:59:59`
+	            );
+	        }else {
+				// 如果是以后的日期,则不需要禁用时间节点
+	            this.timePickerOpt.selectableRange = '00:00:00 - 23:59:59';
+	        }
+		}
+	},
+	methods: {
+		// 每十秒自动保存
+		autoSave() {
+			console.log(this.ischange);
+			if (this.report_id&&this.autoSaveFlag) {
+				//如果富文本中有未上传完成的图片,去除这个dom
+				$('#leftfroala .fr-element').find('img.fr-uploading').length&&$('#leftfroala .fr-element').find('img.fr-uploading').remove()
+				reportEnInterface.reportAutoSave({
+					ReportId: Number(this.report_id),
+					Content: $('#leftfroala .fr-element').html(),
+					NoChange:this.ischange?0:1
+				}).then((res) => {
+					if (res.Ret !== 200) return
+						this.lastsavetime = http.dateFormatter(new Date(), true);
+				});
+				this.ischange = false;
+			}
+		},
+
+		userclassidreportdetail() {
+			//检查classifynameArr是否有审批流
+			let classify = this.aeForm.classifynameArr.map(i=>{
+				return JSON.parse(i).v||0
+			})
+			this.checkClassifyNameArr(2,classify)
+			// console.log(this.aeForm.classifynameArr,'this.aeForm.classifynameArr');
+			if (this.aeForm.add_type == 1) {
+				if (this.aeForm.classifynameArr.length == 3) {
+					this.aeForm.title = JSON.parse(this.aeForm.classifynameArr[2]).l;
+				}else{
+          this.aeForm.title = ''
+        }
+				return false;
+			}
+			if (this.aeForm.classifynameArr.length == 0) {
+				return false;
+			} 
+			let params = {
+				ClassifyIdFirst: JSON.parse(this.aeForm.classifynameArr[1]).v,
+			};
+			if (this.aeForm.classifynameArr.length === 3) {
+				params.ClassifyIdSecond = JSON.parse(
+					this.aeForm.classifynameArr[2]
+				).v;
+			} else {
+				params.ClassifyIdSecond = 0;
+			}
+
+			reportEnInterface.reportDetailByclassify(params).then((res) => {
+				if (res.Ret == 200) {
+					if (res.Data == null) {
+						this.$message.error(this.$t('ReportManage.ReportList.no_reports_msg'));
+						return false;
+					}
+					this.aeForm = {
+						add_type: 2,
+						classify_name: 1,
+						classifynameArr:[
+							JSON.stringify({
+								l: res.Data.ClassifyNameRoot,
+								v: parseInt(res.Data.ClassifyIdRoot),
+							}),
+							JSON.stringify({
+								l: res.Data.ClassifyNameFirst,
+								v: parseInt(res.Data.ClassifyIdFirst),
+							}),
+							JSON.stringify({
+								l: res.Data.ClassifyNameSecond,
+								v: parseInt(res.Data.ClassifyIdSecond),
+						})],
+						title: res.Data.Title,
+						abstract: res.Data.Abstract,
+						author: res.Data.Author ? res.Data.Author.split(',') : '',
+						frequency: res.Data.Frequency,
+						create_time: res.Data.CreateTime,
+						content: res.Data.Content,
+            			overview:res.Data.Overview||''
+					};
+				}
+			});
+		},
+
+		getreportauthor() {
+			authorEn({}).then((res) => {
+				if (res.Ret == 200) {
+					this.authorlist = res.Data.List || [];
+				}
+			});
+		},
+
+		//报告详情
+		getreportdetail() {
+			reportEnInterface.reportDetail({ ReportId: parseInt(this.report_id) }).then((res) => {
+				if (res.Ret === 200 && res.Data) {
+					let data = res.Data;
+					this.aeForm = {
+						add_type: parseInt(data.AddType),
+						classify_name: 1,
+						classifynameArr:[
+							JSON.stringify({
+								l: data.ClassifyNameRoot,
+								v: parseInt(data.ClassifyIdRoot),
+							}),
+							JSON.stringify({
+								l: data.ClassifyNameFirst,
+								v: parseInt(data.ClassifyIdFirst),
+							}),
+							JSON.stringify({
+								l: data.ClassifyNameSecond,
+								v: parseInt(data.ClassifyIdSecond),
+						})],
+						title: data.Title,
+						abstract: data.Abstract,
+						author: data.Author ? data.Author.split(',') : '',
+						frequency: data.Frequency,
+						create_time: data.CreateTime,
+						content: data.Content,
+            overview:data.Overview||''
+					};
+					// 回显定时发布时间
+					if(data.PrePublishTime){
+						this.taskTime=data.PrePublishTime
+					}
+					let classify = [data.ClassifyIdRoot,data.ClassifyIdFirst,data.ClassifyIdSecond]
+					this.checkClassifyNameArr(2,classify)
+				}
+			});
+		},
+
+		async clickreportadd(tp) {
+			if (
+				!this.aeForm.classifynameArr ||
+				this.aeForm.classifynameArr.length == 0
+			) {
+				this.$message.warning(this.$t('ReportManage.ReportList.please_select_category'));
+				return false;
+			}
+			if (!this.aeForm.title) {
+				this.$message.warning(this.$t('ReportManage.ReportList.input_title_please'));
+				return false;
+			}
+			if(!this.aeForm.overview){
+				this.$message.warning(this.$t('ReportManage.smart_msg.please_enter')+'overview')
+				return false;
+			}
+			if(!this.aeForm.content){
+				this.$message.warning(this.$t('ReportManage.smart_msg.please_enter')+'content')
+				return false;
+			}
+			if(!this.aeForm.abstract){
+				this.$message.warning(this.$t('ReportManage.ReportList.please_input_abstract'))
+				return false;
+			}
+			if(!this.autoSaveFlag){
+				this.$message.error(this.$t('ReportManage.smart_msg.img_wait'))
+				return false
+			}
+			//如果富文本中有未上传完成的图片,去除这个dom
+			$('#leftfroala .fr-element').find('img.fr-uploading').length&&$('#leftfroala .fr-element').find('img.fr-uploading').remove()
+			let params = {
+				AddType: this.aeForm.add_type,
+				ClassifyIdFirst: JSON.parse(this.aeForm.classifynameArr[1]).v,
+				ClassifyNameFirst: JSON.parse(this.aeForm.classifynameArr[1]).l,
+				Title: this.aeForm.title,
+				Abstract: this.aeForm.abstract,
+				Author:
+					this.aeForm.author.length > 0
+						? this.aeForm.author.join(',')
+						: '',
+				Frequency: this.aeForm.frequency,
+				Content: $('#leftfroala .fr-element').html(),
+				CreateTime: this.aeForm.create_time,
+				State: 1,
+				ReportVersion: 2,
+        Overview:this.aeForm.overview.replace(/<p data-f-id=\"pbf\".*?<\/p>/g,'')
+			};
+			if (this.aeForm.classifynameArr.length == 3) {
+				params.ClassifyIdSecond = JSON.parse(
+					this.aeForm.classifynameArr[2]
+				).v;
+				params.ClassifyNameSecond = JSON.parse(
+					this.aeForm.classifynameArr[2]
+				).l;
+			}
+
+			const res = this.report_id 
+				? await reportEnInterface.reportEdit({ReportId: parseInt(this.report_id),...params}) 
+				: await reportEnInterface.reportAdd(params)
+
+				if(res.Ret !== 200) return
+
+				this.$message.success(res.Msg);
+        this.report_id = res.Data.ReportId;
+
+				if (tp === "yl") {
+					let { href } = this.$router.resolve({
+						name: "预览报告",
+						query: { id: this.report_id,fromPage:'en' },
+					});
+					window.open(href, "_blank");
+				} else if (tp === "fb") {
+					this.$confirm(this.$t('ReportManage.smart_msg.report_publish_immediately'),this.$t('Confirm.prompt'),{type: 'warning'}).then(()=>{
+						this.publishreport(this.report_id);
+					})
+				}else if(tp==='dsfb'){
+					//定时发布
+					this.showDSFB=true
+				}else if(tp==='submit'){
+					this.submitReport()
+				}
+			// if (tp == 'yl') { //预览
+			// 	sessionStorage.setItem('reportdtl', JSON.stringify(params));
+			// 	let { href } = this.$router.resolve({ name: '预览报告' });
+			// 	window.open(href, '_blank');
+			// 	return false;
+			// }
+			// if (tp == 'fb') {
+			// 	this.isPublishloading = true;
+			// }else { //存草稿
+			// 	this.reporteditMsg(params,tp)
+			// }
+		},
+		submitReport(){
+			this.$confirm(this.$t('ReportManage.smart_msg.submit_approval'),this.$t('Confirm.prompt'),{
+				confirmButtonText: this.$t('Dialog.confirm_btn'),
+                cancelButtonText: this.$t('Dialog.cancel_btn'),
+				type:'warning',
+			}).then(()=>{
+				approveInterence.reportEnSubmit({
+					ReportId:Number(this.report_id)
+				}).then(res=>{
+					if(res.Ret!==200) return
+					this.$message.success(this.$t('ReportManage.smart_msg.submit_success'))
+					this.$router.push({ path: '/reportEnList' });
+				})
+			})
+		},
+
+		publishreport(id) {
+			//发布报告
+			reportEnInterface.reportPublish({ ReportIds: String(id) }).then((res) => {
+				if (res.Ret !== 200) return
+				this.isPublishloading = false;
+				this.$router.push({ path: '/reportEnList' });
+			});
+		},
+
+		//定时发布报告
+		handleConfirmDSFB(){
+			if(!this.taskTime){
+				this.$message.warning(this.$t('ReportManage.smart_msg.select_push_time'))
+				return
+			}
+			const now=this.$moment().format('YYYY-MM-DD HH:mm:ss')
+			console.log(now);
+			console.log(this.taskTime);
+			if(this.$moment(this.taskTime).isBefore(now,'second')){
+				this.$message.warning(this.$t('ReportManage.smart_msg.than_current_time'))
+				return
+			}
+			reportEnInterface.enReportPrepblish({
+				ReportId:this.report_id,
+				PrePublishTime:this.taskTime
+			}).then(res=>{
+				if(res.Ret===200){
+					this.$message.success(this.$t('ReportManage.smart_msg.timed_success'))
+					this.$router.push({ path: '/reportEnList' });
+				}
+			})
+		},
+
+		//批量插入我的图表
+		handleImportMyChart(data){
+			//设置编辑器获取焦点
+			this.editor.events.focus();
+			// 获取选定对象
+			const selection = getSelection();
+			// 判断是否有最后光标对象存在
+			if (this.lastEditRange) {
+				// 存在最后光标对象,选定对象清除所有光标并添加最后光标还原之前的状态
+				selection.removeAllRanges();
+				selection.addRange(this.lastEditRange);
+			}
+			//插入内容
+			let htmlStr=''
+			const LINK_CHART_URL = this.$setting.dynamicOutLinks.ChartViewUrl+'/chartshow';
+			let fromPage = this.$route.path === '/reportEnEditor' ? 'en' :'';
+			
+			data.forEach(item=>{
+				const t=new Date().getTime()
+				item.domId=item.UniqueCode+t //避免多次添加同一图表 id相同
+				htmlStr=htmlStr+`<p style='text-align:left; margin-top:10px;'>
+							<iframe id='${item.domId}' src='${LINK_CHART_URL}?code=${item.UniqueCode}&fromPage=${fromPage}' width='100%' height='350' style='border-width:0px; min-height:350px;'></iframe>
+						</p>`
+			})
+			this.$nextTick(()=>{
+				console.log('import start',data);
+				this.importChartNum=data.length
+				this.editor.html.insert(htmlStr)
+				this.handleListenIframeLoad(data)
+			})
+			
+			this.lastEditRange = selection.getRangeAt(0);
+		},
+
+		// 监听批量导入的iframe是否加载完
+		handleListenIframeLoad(list){
+			list.forEach(item=>{
+				let ifm=document.getElementById(item.domId)
+				ifm.onload=(e)=>{
+					this.importChartNum--
+					console.log('一个iframe加载了',e.path[0]);
+				}
+			})
+		},
+
+		// 获取沙盘图列表 分页
+		getSandTable(){
+			this.sandTableLoading = true
+			this.isRequesting = true
+			sandInterface.sandlistByQuote(this.sandTabelQuery).then(({Data:{List,Paging}})=>{
+				if(this.sandTabelQuery.CurrentIndex>1){
+					this.sandTableList = [...this.sandTableList,...List]
+				}else{
+					this.sandTableList = List
+					this.sandTableTotal = Paging.Totals
+					if(this.sandTableList.length ==0){
+						this.loadedText = this.$t('Table.prompt_slogan')
+					}else if(this.sandTableList.length>=this.sandTableTotal){
+						this.loadedText=this.$t('ReportManage.smart_msg.all_loaded_have')
+					}else{
+
+					}
+				}		
+			})
+			.finally(()=>{
+				this.sandTableLoading = false
+				this.isRequesting = false
+			})
+		},
+		// 沙盘列表滚动事件,触底加载下一页数据 防抖
+		sandTableHandleScroll:_.debounce(function (e) {
+			if(this.sandTableList.length>=this.sandTableTotal){
+				this.loadedText = this.$t('ReportManage.smart_msg.all_loaded_have')
+				return
+			}
+			if(e.target.scrollHeight-e.target.clientHeight-e.target.scrollTop<10 && !this.isRequesting){
+				this.sandTabelQuery.CurrentIndex++
+				this.getSandTable()
+			}
+		},100),
+
+		getclassifylist() {
+			//获取分类列表
+			let params = { CurrentIndex: 1, PageSize: 1000, KeyWord: '' };
+			reportEnInterface.classifyList(params).then((res) => {
+				if (res.Ret == 200 && Array.isArray(res.Data.List)) {
+					this.optionsArr = res.Data.List|| []
+					// res.Data.List.forEach(item => {
+					// 	let newitem = {
+					// 		label: item.ClassifyName,
+					// 		value: JSON.stringify({
+					// 			l: item.ClassifyName,
+					// 			v: parseInt(item.Id),
+					// 		}),
+					// 		HasTeleconference:item.HasTeleconference
+					// 	};
+					// 	if (item.Child&&item.Child.length > 0) {
+					// 		let childnode = [];
+					// 		item.Child.forEach((itemchild, i) => {
+					// 			childnode.push({
+					// 				label: itemchild.ClassifyName,
+					// 				value: JSON.stringify({
+					// 					l: itemchild.ClassifyName,
+					// 					v: parseInt(itemchild.Id),
+					// 				}),
+					// 				HasTeleconference:itemchild.HasTeleconference
+					// 			});
+					// 		});
+					// 		newitem.children = childnode;
+					// 	} else {
+					// 		newitem.children = undefined;
+					// 		newitem.disabled=true
+					// 	}
+					// 	this.optionsArr.push(newitem);
+					// });
+					this.optionsArr.map(itemOne =>{
+						itemOne.label = itemOne.ClassifyName
+						itemOne.value = JSON.stringify({
+							l: itemOne.ClassifyName,
+							v: parseInt(itemOne.Id),
+						})
+						itemOne.disabled = !(itemOne.Child && itemOne.Child.length>0)
+						if(itemOne.Child){
+							itemOne.Child.map(itemTwo =>{
+								itemTwo.label = itemTwo.ClassifyName
+								itemTwo.value = JSON.stringify({
+									l: itemTwo.ClassifyName,
+									v: parseInt(itemTwo.Id),
+								})
+								itemTwo.disabled = !(itemTwo.Child && itemTwo.Child.length>0)
+								if(itemTwo.Child){
+									itemTwo.Child.map(itemThree =>{
+										itemThree.label = itemThree.ClassifyName
+										itemThree.value = JSON.stringify({
+											l: itemThree.ClassifyName,
+											v: parseInt(itemThree.Id),
+										})
+									})
+								}
+							})
+						}
+					})
+				}
+			});
+		},
+	},
+	components: {importMyChart,setEnNameDia,importSemantics},
+};
+</script>
+
+<style scoped lang="scss">
+#editreport {
+	display: flex;
+	overflow: hidden;
+  padding: 20px 30px;
+  background: #fff;
+  border: 1px solid #ececec;
+  border-radius: 4px;
+  box-shadow: 0 3px 6px rgba(0, 0, 0, 0.05);
+  box-sizing: border-box;
+  .leftitems{
+    flex: 1;
+    display: flex;
+    flex-direction: column;
+	&.full{
+		max-width: calc(100vw - 200px - 120px);
+	}
+	&.block{
+		max-width: calc(100vw - 200px - 120px - 500px);
+	}
+    .overview{
+		overflow: hidden;
+      p{
+        margin-bottom: 35px;
+      }
+    }
+    #leftfroala{
+		overflow: hidden;
+      flex: 1;
+      #froala-editor{
+
+      }
+    }
+  }
+	/* #leftfroala {
+		flex: 1;
+		max-width: calc(100vw - 750px);
+	} */
+	#rightitems {
+		width: 500px;
+		flex: 500px 0 0;
+		overflow: hidden;
+		position: fixed;
+		right: 70px;
+		/* bottom:30px; */
+		#tabs {
+			padding: 0px 20px;
+			box-sizing: border-box;
+			margin-bottom: 15px;
+			overflow: hidden;
+			> p {
+				/* display: inline-block; */
+				float: left;
+				width: 25%;
+				font-size: 18px;
+				cursor: pointer;
+				color: #1f2e4d;
+				padding: 10px 0;
+				text-align: center;
+			}
+			> p.active {
+				border-bottom: 2px solid #3464e0;
+				color: #3464e0;
+			}
+		}
+		.liststy {
+			width: 100%;
+			margin: 20px 0;
+			padding: 30px 20px 20px 20px;
+			box-sizing: border-box;
+			border: 1px solid #eaeaea;
+			border-radius: 10px;
+			position: relative;
+			overflow: hidden;
+			> p {
+				text-align: center;
+				font-size: 16px;
+				margin-bottom: 10px;
+			}
+			> img {
+				width: 100%;
+				height: auto;
+			}
+			// .source-identification{
+			// 	text-align: left;
+			// }
+		}
+		.loaded-text{
+			height: 20px;
+			text-align: center;
+			color: #666;
+			font-size: 14px;
+		}
+    .limit{
+      position: absolute;
+      right: 5px;
+      bottom: 0;
+      font-size: 12px;
+      color: #C0C4CC;
+    }
+	}
+	.slide-icon {
+		padding: 20px 0;
+		box-shadow: 0px 3px 6px rgba(0, 0, 0, 0.3);
+		border-radius: 5px;
+		background-color: #fff;
+		cursor: pointer;
+		position: fixed;
+		top: 50%;
+		transform: translateY(-50%);
+		z-index: 99;
+		&:hover {
+			background-color: #e0e0e0;
+		}
+		&.slide-left {
+			right: 30px;
+		}
+		&.slide-right {
+			right: 540px;
+		}
+	}
+}
+</style>
+<style lang="scss">
+#editreport {
+	.el-tabs__nav-wrap::after {
+		height: 0;
+	}
+	.el-tabs__item { font-size: 16px; }
+}	
+</style>

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

@@ -2,13 +2,13 @@
     <div class="eta-chart-wrap">
         <div class="top-box">
             <div class="left-card">
-                <span :class="['item',activeType==='ETA图库'?'active':'']" @click="activeTypeChange('ETA图库')">ETA图库</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>
             </div>
             <div class="right">
                 <el-input
                     class="search-box"
-					placeholder="图表名称"
+					:placeholder="$t('ReportManage.ReportList.chart_name')"
 					v-model="keyword"
 					size="medium"
 					prefix-icon="el-icon-search"

+ 3 - 3
src/views/smartReport/components/ETAPriceChart.vue

@@ -2,7 +2,7 @@
     <div class="statistic-analysis-wrap">
         <div class="top-box">
             <div class="left-card">
-                <span>商品价格曲线</span>
+                <span>{{$t('ReportManage.ReportList.price_curve_radio')}}</span>
             </div>
             <div class="right">
                 <el-input
@@ -20,7 +20,7 @@
                 class="onlyshowme-box"
                 v-model="isShowMe" 
                 @change="handleIsShowMeChange"
-            >只看我的</el-checkbox>
+            >{{$t('ReportManage.ReportList.just_mine_radio')}}</el-checkbox>
             <div class="list-wrap" v-infinite-scroll="handleLoadMore" :infinite-scroll-immediate="true">
                 <draggable
                     :list="list"
@@ -35,7 +35,7 @@
                         <div class="img" :style="'backgroundImage:url('+item.ChartImage+')'"></div>
                     </div>
                 </draggable>
-                <tableNoData text="暂无图表" size="mini" v-if="list.length===0&&finished"/>
+                <tableNoData :text="$t('ReportManage.ReportList.no_chart_table_available')" size="mini" v-if="list.length===0&&finished"/>
             </div>
         </div>
     </div>

+ 3 - 3
src/views/smartReport/components/ETASandBox.vue

@@ -2,12 +2,12 @@
     <div class="statistic-analysis-wrap">
         <div class="top-box">
             <div class="left-card">
-                <span>沙盘图</span>
+                <span>{{$t('ReportManage.ReportList.sandbox_top_type')}}</span>
             </div>
             <div class="right">
                 <el-input
                     class="search-box"
-					placeholder="沙盘名称/品种"
+					:placeholder="$t('ReportManage.ReportList.no_reports_msg')"
 					v-model="keyword"
 					size="medium"
 					prefix-icon="el-icon-search"
@@ -30,7 +30,7 @@
                         <div class="img" :style="'backgroundImage:url('+item.PicUrl+')'"></div>
                     </div>
                 </draggable>
-                <tableNoData text="暂无数据" size="mini" v-if="list.length===0&&finished"/>
+                <tableNoData :text="$t('Table.prompt_slogan')" size="mini" v-if="list.length===0&&finished"/>
             </div>
         </div>
     </div>

+ 3 - 3
src/views/smartReport/components/ETASheet.vue

@@ -1,10 +1,10 @@
 <template>
     <div class="eta-sheet-wrap">
         <div class="top-box">
-            <span>ETA表格</span>
+            <span>{{$t('ReportManage.ReportList.eta_top_type')}}</span>
             <el-input
                 class="search-box"
-				placeholder="表格名称"
+				:placeholder="$t('ReportManage.ReportList.table_name_tabs')"
 				v-model="keyword"
 				size="medium"
 				prefix-icon="el-icon-search"
@@ -26,7 +26,7 @@
                     <div class="img" :style="'backgroundImage:url('+item.ExcelImage+')'"></div>
                 </div>
             </draggable>
-            <tableNoData text="暂无数据" size="mini" v-if="list.length===0"/>
+            <tableNoData :text="$t('Table.prompt_slogan')" size="mini" v-if="list.length===0"/>
             </div>
         </div>
     </div>

+ 4 - 4
src/views/smartReport/components/ImgEdit.vue

@@ -1,12 +1,12 @@
 <template>
     <div class="img-edit-wrap" @paste="handleListenPaste">
-        <div style="font-size:16px;margin-bottom:20px">图片上传</div>
+        <div style="font-size:16px;margin-bottom:20px">{{$t('ReportManage.ReportList.img_uplaod_title')}}</div>
         <div class="main-box">
             <input type="file" size="small" name="file" @change="fileSelected" id="file" class="true-file" style="display:none;">
             <div class="upload-box" @click="clickinput">
                 <img class="bg" :src="content" alt="" v-if="content">
                 <img src="~@/assets/img/smartReport/icon15.png" alt="">
-                <div>点击上传图片</div>
+                <div>{{$t('ReportManage.ReportList.click_img_upload')}}</div>
             </div>
         </div>
     </div>
@@ -36,7 +36,7 @@ export default {
 		    if( hostfile ){
 		        let size = Math.floor(hostfile.size / 1024 / 1024);
 		        if( size>200 ){
-		            that.$message.warning('上传文件大小不能大于200M!');
+		            that.$message.warning(this.$t('ReportManage.smart_msg.uploaded_limitation'));
 		            hostfile = {};
 		            return false
 		        }
@@ -52,7 +52,7 @@ export default {
 						hostfile = {};
 					});
 				}else{
-					that.$message.warning('上传文件格式不正确!');
+					that.$message.warning(this.$t('ReportManage.smart_msg.upload_format'));
 		        }
 		    } 
 		},

+ 9 - 9
src/views/smartReport/components/ImgSource.vue

@@ -2,20 +2,20 @@
     <div class="statistic-analysis-wrap">
         <div class="top-box">
             <div class="left-card">
-                <span>选择图片</span>
+                <span>{{$t('ReportManage.ReportList.select_img_card')}}</span>
             </div>
             <div class="right">
                 <el-input
                     class="search-box"
-					placeholder="请输入图片名称"
+					:placeholder="$t('ReportManage.ReportList.img_name_ipt')"
 					v-model="keyword"
 					size="medium"
                     @input="handleSearch"
                     style="width:240px"
 				/>
-                <el-select placeholder="请选择图片类型" v-model="type" style="width:240px" @change="handleSearch">
-                    <el-option label="版头" :value="1"></el-option>
-                    <el-option label="版尾" :value="2"></el-option>
+                <el-select :placeholder="$t('ReportManage.ReportList.select_img_type')" v-model="type" style="width:240px" @change="handleSearch">
+                    <el-option :label="$t('ReportManage.ReportList.page_header_op')" :value="1"></el-option>
+                    <el-option :label="$t('ReportManage.ReportList.page_trailer_op')" :value="2"></el-option>
                 </el-select>
             </div>
         </div>
@@ -28,7 +28,7 @@
                 </el-radio-group>
             </div> -->
             <div style="flex:1;overflow-y: auto;padding:20px 0">
-            <tableNoData text="暂无数据" size="mini" v-if="list.length===0&&finished"/>
+            <tableNoData :text="$t('Table.prompt_slogan')" size="mini" v-if="list.length===0&&finished"/>
             <div class="list-wrap" v-infinite-scroll="handleLoadMore" :infinite-scroll-immediate="false">
                 <div 
                     :class="['item',selectItem&&selectItem.ResourceId===item.ResourceId?'active':'']" 
@@ -42,8 +42,8 @@
             </div>
             </div>
             <div class="btns-box">
-                <el-button type="primary" plain @click="handleClose">取消</el-button>
-                <el-button type="primary" @click="handleSave">保存</el-button>
+                <el-button type="primary" plain @click="handleClose">{{$t('Dialog.cancel_btn')}}</el-button>
+                <el-button type="primary" @click="handleSave">{{$t('Dialog.confirm_save_btn')}}</el-button>
             </div>
         </div>
     </div>
@@ -113,7 +113,7 @@ export default {
             //     return
             // }
             if(!this.selectItem){
-                this.$message.warning('请选择版图')
+                this.$message.warning(this.$t('ReportManage.ReportList.select_layout_msg'))
                 return
             }
             this.$emit('change',{

+ 2 - 2
src/views/smartReport/components/ImportETAChart.vue

@@ -4,7 +4,7 @@
                 class="onlyshowme-box"
                 v-model="isShowMe" 
                 @change="handleIsShowMeChange"
-            >只看我的</el-checkbox>
+            >{{$t('ReportManage.ReportList.just_mine_radio')}}</el-checkbox>
             <draggable
                 :list="list"
                 :group="{ name: 'component', pull: 'clone', put: false }"
@@ -18,7 +18,7 @@
                     <div class="img" :style="'backgroundImage:url('+item.ChartImage+')'"></div>
                 </div>
             </draggable>
-            <tableNoData text="暂无图表" size="mini" v-if="list.length===0"/>
+            <tableNoData :text="$t('ReportManage.ReportList.no_chart_table_available')" size="mini" v-if="list.length===0"/>
     </div>
 </template>
 

+ 7 - 7
src/views/smartReport/components/ImportMyETAChart.vue

@@ -5,7 +5,7 @@
 				style="width:300px" 
 				v-model="selectMyChartClassify" 
 				filterable 
-				placeholder="图分类名称"
+				:placeholder="$t('ReportManage.ReportList.chart_category_name')"
 				@change="handleChange"
 			>
 				<el-option
@@ -16,8 +16,8 @@
 				>
 				</el-option>
 			</el-select>
-			<el-button type="primary" @click="handleImport">一键导入</el-button>
-			<el-tooltip class="item" effect="dark" content="该操作将批量导入所选图分类下所有图表" placement="top-start">
+			<el-button type="primary" @click="handleImport">{{$t('ReportManage.ReportList.click_import')}}</el-button>
+			<el-tooltip class="item" effect="dark" :content="$t('ReportManage.ReportList.import_all_chart_msg')" placement="top-start">
 				<i style="font-size:24px;color: #666;" class="el-icon-question"></i>
 			</el-tooltip>
 		</div>
@@ -27,7 +27,7 @@
                 <div class="img" :style="'backgroundImage:url('+item.ChartImage+')'"></div>
             </div>
 		</div>
-        <tableNoData text="无数据" size="mini" v-if="list.length===0"/>
+        <tableNoData :text="$t('Table.prompt_slogan')" size="mini" v-if="list.length===0"/>
     </div>
 </template>
 
@@ -97,11 +97,11 @@ export default {
 
         handleImport:_.throttle(function(){
             if(!this.selectMyChartClassify){
-                this.$message.warning('请选择分类')
+                this.$message.warning(this.$t('ReportManage.ReportList.please_select_category'))
                 return
             }
             if(this.list.length==0){
-                this.$message.warning('该分类无图表')
+                this.$message.warning(this.$t('ReportManage.ReportList.no_chart_msg'))
                 return
             }
             this.$emit('handleImportMyChart',this.list)
@@ -115,7 +115,7 @@ export default {
         },1000),
 
         handleClickItem(){
-            this.$message.warning('此处不支持单个插入图表')
+            this.$message.warning(this.$t('ReportManage.ReportList.no_one_charts'))
         }
     },
 }

+ 3 - 3
src/views/smartReport/components/SemanticAnalysis.vue

@@ -2,12 +2,12 @@
     <div class="statistic-analysis-wrap">
         <div class="top-box">
             <div class="left-card">
-                <span>语义分析</span>
+                <span>{{$t('ReportManage.ReportList.semantic_top_type')}}</span>
             </div>
             <div class="right">
                 <el-input
                     class="search-box"
-					placeholder="关键词搜索"
+					:placeholder="$t('ReportManage.ReportList.keyword_search')"
 					v-model="keyword"
 					size="medium"
 					prefix-icon="el-icon-search"
@@ -30,7 +30,7 @@
                         <div class="img" :style="'backgroundImage:url('+item.ResultImg+')'"></div>
                     </div>
                 </draggable>
-                <tableNoData text="暂无数据" size="mini" v-if="list.length===0&&finished"/>
+                <tableNoData :text="$t('Table.prompt_slogan')" size="mini" v-if="list.length===0&&finished"/>
             </div>
         </div>
     </div>

+ 26 - 21
src/views/smartReport/components/StatisticAnalysis.vue

@@ -12,7 +12,7 @@
             <div class="right">
                 <el-input
                     class="search-box"
-					placeholder="图表名称"
+					:placeholder="$t('ReportManage.ReportList.chart_name')"
 					v-model="keyword"
 					size="medium"
 					prefix-icon="el-icon-search"
@@ -25,7 +25,7 @@
                 class="onlyshowme-box"
                 v-model="isShowMe" 
                 @change="handleIsShowMeChange"
-            >只看我的</el-checkbox>
+            >{{$t('ReportManage.ReportList.just_mine_radio')}}</el-checkbox>
             <div class="list-wrap" v-infinite-scroll="handleLoadMore" :infinite-scroll-immediate="true">
                 <draggable
                     :list="list"
@@ -40,7 +40,7 @@
                         <div class="img" :style="'backgroundImage:url('+item.ChartImage+')'"></div>
                     </div>
                 </draggable>
-                <tableNoData text="暂无图表" size="mini" v-if="list.length===0&&finished"/>
+                <tableNoData :text="$t('ReportManage.ReportList.no_chart_table_available')" size="mini" v-if="list.length===0&&finished"/>
             </div>
         </div>
     </div>
@@ -56,24 +56,7 @@ import {
 export default {
     data() {
         return {
-            typeOpts:[
-                {
-                    name:'相关性',
-                    key:'相关性'
-                },
-                {
-                    name:'拟合方程曲线',
-                    key:'拟合方程曲线'
-                },
-                {
-                    name:'统计特征',
-                    key:'统计特征'
-                },
-                {
-                    name:'跨品种分析',
-                    key:'跨品种分析'
-                }
-            ],
+
             keyword:'',
             isShowMe:false,
             activeType:'相关性',
@@ -164,6 +147,28 @@ export default {
             this.getChartList()
         }
     },
+    computed:{
+      typeOpts(){
+        return [
+                {
+                    name:this.$t('ReportManage.ReportList.correlation_analysis'),
+                    key:'相关性'
+                },
+                {
+                    name:this.$t('ReportManage.ReportList.curve_fitting_radio'),
+                    key:'拟合方程曲线'
+                },
+                {
+                    name:this.$t('ReportManage.ReportList.statistical_feature_radio'),
+                    key:'统计特征'
+                },
+                {
+                    name:this.$t('ReportManage.ReportList.intercommodity_analysis_radio'),
+                    key:'跨品种分析'
+                }
+            ]
+      }
+    }
 }
 </script>
 

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

@@ -1,6 +1,6 @@
 <template>
     <div class="text-edit-wrap">
-        <div style="font-size:16px;margin-bottom:20px">文本编辑</div>
+        <div style="font-size:16px;margin-bottom:20px">{{$t('ReportManage.ReportList.text_editing')}}</div>
         <froala
 			id="froala-editor"
 			ref="froalaEditor"

+ 76 - 72
src/views/smartReport/editReport.vue

@@ -6,37 +6,37 @@
             <ul class="action-list">
                 <li class="action-item" @click="showReportBaseInfo=true">
                     <img src="~@/assets/img/smartReport/icon01.png" alt="">
-                    <span>基础信息</span>
+                    <span>{{$t('ReportManage.ReportList.information_title')}}</span>
                 </li>
                 <li class="action-item" @click="handleRefreshAllChart">
                     <img src="~@/assets/img/smartReport/icon02.png" alt="">
-                    <span>图表刷新 </span>
+                    <span>{{$t('ReportManage.ReportList.charts_update_btn')}} </span>
                 </li>
                 <li class="action-item" @click="handlePreviewReport">
                     <img src="~@/assets/img/smartReport/icon03.png" alt="">
-                    <span>预览</span>
+                    <span>{{$t('ReportManage.ReportList.preview_btn')}}</span>
                 </li>
                 <li class="action-item" @click="handleSaveContent">
                     <img src="~@/assets/img/smartReport/icon01.png" alt="">
-                    <span>存草稿</span>
+                    <span>{{$t('ReportManage.ReportList.save_draft_btn')}}</span>
                 </li>
                 <template v-if="!isApprove||!hasApproveFlow">
                     <li class="action-item" :class="{'disabled':checkLoading}"
                         @click="handlePublishOpt('dsfb')">
                         <img src="~@/assets/img/smartReport/icon01.png" alt="">
-                        <span>定时发布</span>
+                        <span>{{$t('ReportManage.ReportList.scheduled_publish_btn')}}</span>
                     </li>
                     <li class="action-item" :class="{'disabled':checkLoading}"
                         @click="handlePublishOpt('fb')">
                         <img src="~@/assets/img/smartReport/icon01.png" alt="">
-                        <span>发布</span>
+                        <span>{{$t('ReportManage.ReportList.publish_btn')}}</span>
                     </li>
                 </template>
                 <template v-if="isApprove&&hasApproveFlow">
                     <li class="action-item" :class="{'disabled':checkLoading}"
                         @click="handlePublishOpt('submit')">
                         <img src="~@/assets/img/smartReport/icon01.png" alt="">
-                        <span>提交</span>
+                        <span>{{$t('ReportManage.ReportList.submission_btn')}}</span>
                     </li>
                 </template>
                 
@@ -204,23 +204,23 @@
 			:append-to-body="true" 
 			:visible.sync="showDSFB" 
 			width="500px" 
-			title="定时发布"
+			:title="$t('ReportManage.ReportList.scheduled_publish_btn')"
 		>
 			<div>
 				<div>
-					<span>发送时间</span>
+					<span>{{$t('ReportManage.ReportList.publish_time')}}</span>
 					<el-date-picker
 						v-model="taskTime"
 						type="datetime"
-						placeholder="选择日期时间"
+						:placeholder="$t('ReportManage.ReportList.select_date_and_time')"
 						value-format="yyyy-MM-dd HH:mm"
 						:picker-options="timePickerOpt"
 					/>
 				</div>
-				<p style="margin:15px 0">设置成功之后,研报将定时进行发送。</p>
+				<p style="margin:15px 0">{{$t('ReportManage.ReportList.the_report_will_be_posted_on_time')}}</p>
 				<div style="text-align:right;margin:20px 0">
-					<el-button type="primary" plain @click="showDSFB=false">取消</el-button>
-					<el-button type="primary" @click="handleSetReportPrepublish">确定</el-button>
+					<el-button type="primary" plain @click="showDSFB=false">{{$t('Dialog.cancel_btn')}}</el-button>
+					<el-button type="primary" @click="handleSetReportPrepublish">{{$t('Dialog.confirm_btn')}}</el-button>
 				</div>
 			</div>
 		</el-dialog>
@@ -300,43 +300,6 @@ export default {
             reportInfo:null,
             showReportBaseInfo:false,
 
-            topTypeList:[
-                {
-                    name:'版图资源库',
-                    type:'imgSource',
-                    icon:require('@/assets/img/smartReport/icon04.png')
-                },
-                {
-                    name:'图库',
-                    type:'etaChart',
-                    icon:require('@/assets/img/smartReport/icon04.png')
-                },
-                {
-                    name:'ETA表格',
-                    type:'etaSheet',
-                    icon:require('@/assets/img/smartReport/icon05.png')
-                },
-                {
-                    name:'统计分析',
-                    type:'statisticAnalysis',
-                    icon:require('@/assets/img/smartReport/icon06.png')
-                },
-                {
-                    name:'商品价格曲线',
-                    type:'etaPriceChart',
-                    icon:require('@/assets/img/smartReport/icon07.png')
-                },
-                {
-                    name:'沙盘图',
-                    type:'etaSandBox',
-                    icon:require('@/assets/img/smartReport/icon08.png')
-                },
-                {
-                    name:'语义分析',
-                    type:'semanticAnalysis',
-                    icon:require('@/assets/img/smartReport/icon09.png')
-                }
-            ],
             compList:[
                 {   
                     compId:1,
@@ -807,7 +770,7 @@ export default {
 
             apiSmartReport.reportEdit({...params}).then(res=>{
                 if(res.Ret===200){
-                    this.$message.success('保存成功')
+                    this.$message.success(this.$t('MsgPrompt.saved_msg'))
                     this.reportInfo.Title=params.Title
                     this.showReportBaseInfo=false
                 }
@@ -855,7 +818,7 @@ export default {
                 }
             });
 
-            if(!code_arr.length) return this.$message.warning('请插入图表');
+            if(!code_arr.length) return this.$message.warning(this.$t('ReportManage.ReportList.insert_charts_msg'));
 
             if(this.$route.query.id) {
                 let res = await dataBaseInterface.getReportrefreshStatus({
@@ -864,7 +827,7 @@ export default {
                 ReportChapterId: 0
                 });
                 
-                if(!res.Data.RefreshResult) return this.$message.warning('图表正在刷新中,请勿重复操作')
+                if(!res.Data.RefreshResult) return this.$message.warning(this.$t('ReportManage.ReportList.chart_refreshed_msg'))
             }
 
             // const loading = this.$loading({
@@ -907,7 +870,7 @@ export default {
                     if(res.Ret===200){
                         resolve(true)
                         if(!isAutoSave){
-                            this.$message.success('保存成功')
+                            this.$message.success(this.$t('MsgPrompt.saved_msg'))
                         }
                     }
                     if(res.Msg==='报告已发布, 不允许编辑'){
@@ -937,11 +900,11 @@ export default {
             }else{
                 const isPost = this.permissionBtn.checkPermissionBtn(this.permissionBtn.smartReportManageBtn.reportManage_sendMsg)
                 this.$confirm(
-                    isPost?'发布后,是否推送模板消息?':'是否立即发布报告?', 
-                    '发布提示', 
+                    isPost?this.$t('ReportManage.smart_msg.publishing_messages'):this.$t('ReportManage.smart_msg.should_published_immediately'), 
+                    this.$t('ReportManage.ReportList.smart_release_prompt_btn'), 
                     {
-                        confirmButtonText: isPost?'推送':'发布',
-                        cancelButtonText: isPost?'不推送':'取消',
+                        confirmButtonText: isPost?this.$t('ReportManage.smart_btn.push'):this.$t('ReportManage.smart_btn.publish'),
+				        cancelButtonText: isPost?this.$t('ReportManage.smart_btn.not_push'):this.$t('Dialog.cancel_btn'),
                         type: 'warning',
                         distinguishCancelAndClose:true,
                     
@@ -966,16 +929,16 @@ export default {
         },
         //提交报告
         submitReport(){
-            this.$confirm("是否确认提交该报告进入审批流程?","提示",{
-                confirmButtonText:'确定',
-                cancelButtonText:'取消',
+             this.$confirm(this.$t('ReportManage.smart_msg.submit_approval'),this.$t('Confirm.prompt'),{
+                confirmButtonText: this.$t('Dialog.confirm_btn'),
+                cancelButtonText: this.$t('Dialog.cancel_btn'),
                 type:'warning',
             }).then(()=>{
                 approveInterence.reportSmartSubmit({
                     ReportId:Number(this.$route.query.id)
                 }).then(res=>{
                     if(res.Ret!==200) return 
-                    this.$message.success("提交成功")
+                    this.$message.success(this.$t('ReportManage.smart_msg.submit_success'))
                     this.$router.replace({ path: '/smartReportList' });
                 })
             })
@@ -984,14 +947,14 @@ export default {
         // 定时发布报告
         async handleSetReportPrepublish(){
             if(!this.taskTime){
-				this.$message.warning('请选择定时发布的时间')
+				this.$message.warning(this.$t('ReportManage.smart_msg.select_push_time'))
 				return
 			}
 			const now=this.$moment().format('YYYY-MM-DD HH:mm:ss')
 			// console.log(now);
 			// console.log(this.taskTime);
 			if(this.$moment(this.taskTime).isBefore(now,'second')){
-				this.$message.warning('定时发布不得早于当前时间')
+				this.$message.warning(this.$t('ReportManage.smart_msg.than_current_time'))
 				return
 			}
             // 如果该报告已经推送过模板消息
@@ -1002,7 +965,7 @@ export default {
                     PreMsgSend:0
                 }).then(res=>{
                     if(res.Ret===200){
-                        this.$message.success('定时发布成功!')
+                        this.$message.success(this.$t('ReportManage.smart_msg.timed_success'))
                         this.$router.replace({ path: '/smartReportList' });
                     }
                 })
@@ -1011,9 +974,9 @@ export default {
 
             const isPost = this.permissionBtn.checkPermissionBtn(this.permissionBtn.smartReportManageBtn.reportManage_sendMsg)
 
-            this.$confirm(isPost?'是否发布定时报告,并推送模板消息?':'是否发布定时报告?', '发布提示', {
-				confirmButtonText: isPost?'推送':'发布',
-				cancelButtonText: isPost?'不推送':'取消',
+           this.$confirm(isPost?this.$t('ReportManage.smart_msg.push_report_msg'):this.$t('ReportManage.smart_msg.is_push_timed'), this.$t('ReportManage.ReportList.smart_release_prompt_btn'), {
+				confirmButtonText: isPost?this.$t('ReportManage.smart_btn.push'):this.$t('ReportManage.smart_btn.publish'),
+				cancelButtonText: isPost?this.$t('ReportManage.smart_btn.not_push'):this.$t('Dialog.cancel_btn'),
 				type: 'warning',
 				distinguishCancelAndClose:true,
 				beforeClose:(action, instance,done)=>{
@@ -1027,7 +990,7 @@ export default {
 								PreMsgSend:0,
 							}).then(res=>{
 								if(res.Ret===200){
-									this.$message.success('定时发布成功!')
+									this.$message.success(this.$t('ReportManage.smart_msg.timed_success'))
 									this.$router.replace({ path: '/smartReportList' });
 								}
 							})
@@ -1040,7 +1003,7 @@ export default {
 							PreMsgSend:isPost?1:0,
 						}).then(res=>{
 							if(res.Ret===200){
-								this.$message.success('定时发布成功!')
+								this.$message.success(this.$t('ReportManage.smart_msg.timed_success'))
 								this.$router.replace({ path: '/smartReportList' });
 							}
 						})
@@ -1073,10 +1036,10 @@ export default {
         // 插入版头版尾
         handleInsertImgSource(e){
             if(e.type=='1'){
-                this.$message.success('版头设置成功')
+                this.$message.success(this.$t('ReportManage.ReportList.header_setting_msg'))
                 this.headImg=e.data.ImgUrl
             }else{
-                this.$message.success('版尾设置成功')
+                this.$message.success(this.$t('ReportManage.ReportList.trailer_setting_msg'))
                 this.endImg=e.data.ImgUrl
             }
             this.contentChange=true
@@ -1087,6 +1050,47 @@ export default {
             this.contentChange=true
         }
     },
+    computed:{
+      topTypeList(){
+           return [
+                {
+                    name:this.$t('ReportManage.ReportList.library_top_type'),
+                    type:'imgSource',
+                    icon:require('@/assets/img/smartReport/icon04.png')
+                },
+                {
+                    name:this.$t('ReportManage.ReportList.chart_top_type'),
+                    type:'etaChart',
+                    icon:require('@/assets/img/smartReport/icon04.png')
+                },
+                {
+                    name:this.$t('ReportManage.ReportList.eta_top_type'),
+                    type:'etaSheet',
+                    icon:require('@/assets/img/smartReport/icon05.png')
+                },
+                {
+                    name:this.$t('ReportManage.ReportList.statistical_top_type'),
+                    type:'statisticAnalysis',
+                    icon:require('@/assets/img/smartReport/icon06.png')
+                },
+                {
+                    name:this.$t('ReportManage.ReportList.price_curve_radio'),
+                    type:'etaPriceChart',
+                    icon:require('@/assets/img/smartReport/icon07.png')
+                },
+                {
+                    name:this.$t('ReportManage.ReportList.sandbox_top_type'),
+                    type:'etaSandBox',
+                    icon:require('@/assets/img/smartReport/icon08.png')
+                },
+                {
+                    name:this.$t('ReportManage.ReportList.semantic_top_type'),
+                    type:'semanticAnalysis',
+                    icon:require('@/assets/img/smartReport/icon09.png')
+                }
+            ]
+      }
+    },
     created() {
         this.getPublicSettings()
         this.getReportDetail()

+ 3 - 3
src/views/smartReport/reportList.vue

@@ -429,7 +429,7 @@
                         type="primary"
                         style="width: 100px; margin: 0 20px"
                         @click="handleConfirmPublishReport"
-                        >发布</el-button
+                        >{{$t('ReportManage.smart_btn.publish')}}</el-button
                     >
                 </div>
             </div>
@@ -569,9 +569,9 @@ export default {
             }
             this.$confirm(
                 item.PrePublishTime? this.$t('ReportManage.smart_msg.timed_release_setup'):this.$t('ReportManage.smart_msg.should_published_immediately'), 
-                '发布提示', 
+                this.$t('ReportManage.smart_release_prompt_btn'), 
                 {
-                    confirmButtonText: '发布',
+                    confirmButtonText: this.$t('ReportManage.smart_btn.publish'),
                     cancelButtonText: this.$t('Dialog.cancel_btn'),
                     type: 'warning',
                     distinguishCancelAndClose:true,