Pārlūkot izejas kodu

fix控制台wanrning报错

Karsa 1 gadu atpakaļ
vecāks
revīzija
9cc347a700
100 mainītis faili ar 474 papildinājumiem un 4162 dzēšanām
  1. 2 2
      .env.development
  2. 2 2
      .env.production
  3. 2 2
      .env.test
  4. 1 1
      .vscode/settings.json
  5. 1 1
      public/index.html
  6. 1 0
      src/App.vue
  7. 119 0
      src/api/http.js
  8. 2 2
      src/components/lzTable.vue
  9. 5 5
      src/components/pubDialog.vue
  10. 0 1
      src/components/pwdDlg.vue
  11. 2 0
      src/main.js
  12. 141 0
      src/mixins/index.js
  13. 32 79
      src/routes/modules/oldRoutes.js
  14. 23 25
      src/views/Home.vue
  15. 2 2
      src/views/chartRelevance_manage/components/chartCard.vue
  16. 1 1
      src/views/chartRelevance_manage/components/selectTarget.vue
  17. 0 2
      src/views/chartRelevance_manage/fittingEquationChartEditor.vue
  18. 1 1
      src/views/chartRelevance_manage/fittingEquationList.vue
  19. 1 1
      src/views/chartRelevance_manage/list.vue
  20. 0 1
      src/views/chartRelevance_manage/relevanceChartEditor.vue
  21. 0 1
      src/views/chartRelevance_manage/statisticFeatureChartEditor.vue
  22. 1 1
      src/views/chartRelevance_manage/statisticFeatureList.vue
  23. 3 1
      src/views/classify_manage/classifyEnlist.vue
  24. 0 10
      src/views/classify_manage/classifylist.vue
  25. 0 1
      src/views/dataEntry_manage/addChart.vue
  26. 1 3
      src/views/dataEntry_manage/adjustdata/adjustData.vue
  27. 2 1
      src/views/dataEntry_manage/chartSetting.vue
  28. 0 1
      src/views/dataEntry_manage/coal/index.vue
  29. 2 4
      src/views/dataEntry_manage/codecount/index.vue
  30. 0 3
      src/views/dataEntry_manage/components/DateChooseDia.vue
  31. 1 1
      src/views/dataEntry_manage/components/SaveChartOther.vue
  32. 0 1
      src/views/dataEntry_manage/components/addTarget.vue
  33. 2 2
      src/views/dataEntry_manage/components/barOptionSection.vue
  34. 0 5
      src/views/dataEntry_manage/components/chart.vue
  35. 6 6
      src/views/dataEntry_manage/components/editTarget.vue
  36. 1 0
      src/views/dataEntry_manage/components/insertData.vue
  37. 1 2
      src/views/dataEntry_manage/components/satterSeriesDia.vue
  38. 3 3
      src/views/dataEntry_manage/components/sectionalScatterOption.vue
  39. 1 1
      src/views/dataEntry_manage/components/setEnNameDia.vue
  40. 1 1
      src/views/dataEntry_manage/databaseComponents/addTargetDiaBase.vue
  41. 1 6
      src/views/dataEntry_manage/databaseComponents/completeTargetDia.vue
  42. 0 1
      src/views/dataEntry_manage/databaseComponents/computedDialog.vue
  43. 1 1
      src/views/dataEntry_manage/databaseComponents/createChart.vue
  44. 1 1
      src/views/dataEntry_manage/databaseComponents/dataAssociateChart.vue
  45. 0 1
      src/views/dataEntry_manage/databaseComponents/diffusionIndexDia.vue
  46. 1 3
      src/views/dataEntry_manage/databaseComponents/fittingResidueDia.vue
  47. 1 2
      src/views/dataEntry_manage/databaseComponents/jointTargetDia.vue
  48. 0 1
      src/views/dataEntry_manage/databaseComponents/operationDialog.vue
  49. 13 13
      src/views/dataEntry_manage/databaseList.vue
  50. 1 1
      src/views/dataEntry_manage/editChart.vue
  51. 1 1
      src/views/dataEntry_manage/mixins/chartPublic.js
  52. 0 47
      src/views/dataEntry_manage/targetList.vue
  53. 1 1
      src/views/dataEntry_manage/thirdBase/UNdata.vue
  54. 2 2
      src/views/dataEntry_manage/thirdBase/chinaFinancialFutures.vue
  55. 1 1
      src/views/dataEntry_manage/thirdBase/components/targetDialog.vue
  56. 1 1
      src/views/dataEntry_manage/thirdBase/dlExchangeData.vue
  57. 3 3
      src/views/dataEntry_manage/thirdBase/shEnergy.vue
  58. 3 3
      src/views/dataEntry_manage/thirdBase/shFutures.vue
  59. 1 1
      src/views/dataEntry_manage/thirdBase/zzExchangeData.vue
  60. 2 3
      src/views/datasheet_manage/components/CustomTable.vue
  61. 1 1
      src/views/datasheet_manage/components/SheetExcel.vue
  62. 2 3
      src/views/datasheet_manage/sheetList.vue
  63. 1 2
      src/views/futures_manage/chartEditor.vue
  64. 1 1
      src/views/futures_manage/commodityChartBase.vue
  65. 0 1
      src/views/futures_manage/components/plateProfitDia.vue
  66. 1 1
      src/views/mychart_manage/components/chartDetailDia.vue
  67. 1 1
      src/views/mychart_manage/components/chooseChart.vue
  68. 8 7
      src/views/mychart_manage/index.vue
  69. 1 1
      src/views/ppt_manage/mixins/pptMixins.js
  70. 1 1
      src/views/ppt_manage/newVersion/components/formatPage/mixins.js
  71. 10 10
      src/views/ppt_manage/newVersion/pptCatalog.vue
  72. 10 10
      src/views/ppt_manage/newVersion/pptEnCatalog.vue
  73. 1 1
      src/views/ppt_manage/pptlist.vue
  74. 1 0
      src/views/predictEdb_manage/components/operationDialog.vue
  75. 9 9
      src/views/predictEdb_manage/predictEdb.vue
  76. 0 933
      src/views/report_manage/addreport.vue
  77. 0 862
      src/views/report_manage/editreport.vue
  78. 2 2
      src/views/report_manage/everyday.vue
  79. 4 1
      src/views/report_manage/mixins/reportMixin.js
  80. 0 2
      src/views/report_manage/reportAuthor.vue
  81. 0 1
      src/views/report_manage/reportEn/reportlist.vue
  82. 2 3
      src/views/report_manage/reportlist.vue
  83. 1 2
      src/views/sandbox_manage/common/gragh.js
  84. 1 1
      src/views/semantics_manage/semanticsPage.vue
  85. 9 1
      src/views/semantics_manage/utils/config.js
  86. 0 1
      src/views/supply_manage/components/addPlantDia.vue
  87. 0 1
      src/views/supply_manage/components/targetTable.vue
  88. 0 1
      src/views/supply_manage/components/varietySetDia.vue
  89. 1 1
      src/views/supply_manage/stockPlant.vue
  90. 0 629
      src/views/system_manage/approvalManage.vue
  91. 1 1
      src/views/system_manage/authManage.vue
  92. 0 304
      src/views/system_manage/components/voicePlate.vue
  93. 0 219
      src/views/system_manage/components/voiceRole.vue
  94. 1 1
      src/views/system_manage/dataAuthManage.vue
  95. 4 5
      src/views/system_manage/departManage.vue
  96. 1 1
      src/views/system_manage/enAuthManage.vue
  97. 0 272
      src/views/system_manage/groupSend.vue
  98. 0 259
      src/views/system_manage/messageManage.vue
  99. 0 341
      src/views/system_manage/operationsManage.vue
  100. 2 0
      src/views/system_manage/roleManage.vue

+ 2 - 2
.env.development

@@ -4,5 +4,5 @@ VUE_APP_API_ROOT='/adminapi'
 Domain='brilliantstart.cn'
 Login='http://localhost:3030/login'
 CHART_LINK='https://charttest.hzinsights.com/chartshow'
-HR_MANAGEMENT_SYSTEM='http://8.136.199.33:8391/login'
-FINANCIAL_MANAGEMENT_SYSTEM='http://8.136.199.33:8618/login'
+VUE_APP_HR_MANAGEMENT_SYSTEM='http://8.136.199.33:8391/login'
+VUE_APP_FINANCIAL_MANAGEMENT_SYSTEM='http://8.136.199.33:8618/login'

+ 2 - 2
.env.production

@@ -4,5 +4,5 @@ API_ROOT='https://admin.hzinsights.com/adminapi'
 Domain='hzinsights.com'
 Login='https://admin.hzinsights.com/login'
 CHART_LINK='https://chartlib.hzinsights.com/chartshow'
-HR_MANAGEMENT_SYSTEM='https://hr.hzinsights.com/login'
-FINANCIAL_MANAGEMENT_SYSTEM='https://fms.hzinsights.com/login'
+VUE_APP_HR_MANAGEMENT_SYSTEM='https://hr.hzinsights.com/login'
+VUE_APP_FINANCIAL_MANAGEMENT_SYSTEM='https://fms.hzinsights.com/login'

+ 2 - 2
.env.test

@@ -6,5 +6,5 @@ API_ROOT='https://rddptest.hzinsights.com/adminapi/'
 Domain='brilliantstart.cn'
 Login='https://rddptest.hzinsights.com/login'
 CHART_LINK='https://charttest.hzinsights.com/chartshow'
-HR_MANAGEMENT_SYSTEM='http://8.136.199.33:8391/login'
-FINANCIAL_MANAGEMENT_SYSTEM='http://8.136.199.33:8618/login'
+VUE_APP_HR_MANAGEMENT_SYSTEM='http://8.136.199.33:8391/login'
+VUE_APP_FINANCIAL_MANAGEMENT_SYSTEM='http://8.136.199.33:8618/login'

+ 1 - 1
.vscode/settings.json

@@ -5,7 +5,7 @@
     "horz_eta": true,
     "pnpm-lock.sh": true
   },
-  "editor.formatOnSave": true,
+  "editor.formatOnSave": false,
   "[javascript]": {
     "editor.defaultFormatter": "esbenp.prettier-vscode"
   },

+ 1 - 1
public/index.html

@@ -9,7 +9,7 @@
     <link rel="icon" type="image/x-icon" href="./fa.ico" id="icon"/>
     <!-- 引入组件库 -->
     <!-- echart cdn -->
-    <script type="text/javascript" src="https://lib.baomitu.com/echarts/5.0.2/echarts.min.js"></script>
+    <!-- <script type="text/javascript" src="https://lib.baomitu.com/echarts/5.0.2/echarts.min.js"></script> -->
     <!-- oss SDK -->
     <script type="text/javascript" src="https://gosspublic.alicdn.com/aliyun-oss-sdk-6.16.0.min.js"></script>
     <!-- luckysheet cdn -->

+ 1 - 0
src/App.vue

@@ -104,6 +104,7 @@ iframe {
   font-size: 14px;
   color: #409eff;
   cursor: pointer;
+  margin-right: 5px;
 }
 .deletesty {
   font-size: 14px;

+ 119 - 0
src/api/http.js

@@ -121,11 +121,30 @@ export default {
         return checkCode(res);
       });
   },
+  Base64,
   dateFormatter,
   getTotalMonth,
+  Decrypt,
+  Encrypt,
   isMobileNo,
 };
 
+//解密方法
+function Decrypt(word) {
+  let encryptedHexStr = CryptoJS.enc.Hex.parse(word);
+  let srcs = CryptoJS.enc.Base64.stringify(encryptedHexStr);
+  let decrypt = CryptoJS.AES.decrypt(srcs, key, { iv: iv, mode: CryptoJS.mode.CBC, padding: CryptoJS.pad.Pkcs7 });
+  let decryptedStr = decrypt.toString(CryptoJS.enc.Utf8);
+  return decryptedStr.toString();
+}
+
+//加密方法
+function Encrypt(word) {
+  let srcs = CryptoJS.enc.Utf8.parse(word);
+  let encrypted = CryptoJS.AES.encrypt(srcs, key, { iv: iv, mode: CryptoJS.mode.CBC, padding: CryptoJS.pad.Pkcs7 });
+  return encrypted.ciphertext.toString().toUpperCase();
+}
+
 function isMobileNo(account) {
   // 手机号正则
   var isChinaMobile = new RegExp(
@@ -149,6 +168,106 @@ function isMobileNo(account) {
   } else return isOtherTelphone.test(account);
 }
 
+function Base64() {
+  // private property
+  var _keyStr = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=";
+  // public method for encoding
+  this.encode = function (input) {
+      var output = "";
+      var chr1, chr2, chr3, enc1, enc2, enc3, enc4;
+      var i = 0;
+      input = this._utf8_encode(input);
+      while (i < input.length) {
+          chr1 = input.charCodeAt(i++);
+          chr2 = input.charCodeAt(i++);
+          chr3 = input.charCodeAt(i++);
+          enc1 = chr1 >> 2;
+          enc2 = ((chr1 & 3) << 4) | (chr2 >> 4);
+          enc3 = ((chr2 & 15) << 2) | (chr3 >> 6);
+          enc4 = chr3 & 63;
+          if (isNaN(chr2)) {
+              enc3 = enc4 = 64;
+          } else if (isNaN(chr3)) {
+              enc4 = 64;
+          }
+          output = output +
+              _keyStr.charAt(enc1) + _keyStr.charAt(enc2) +
+              _keyStr.charAt(enc3) + _keyStr.charAt(enc4);
+      }
+      return output;
+  }
+  // public method for decoding
+  this.decode = function (input) {
+      var output = "";
+      var chr1, chr2, chr3;
+      var enc1, enc2, enc3, enc4;
+      var i = 0;
+      input = input.replace(/[^A-Za-z0-9\+\/\=]/g, "");
+      while (i < input.length) {
+          enc1 = _keyStr.indexOf(input.charAt(i++));
+          enc2 = _keyStr.indexOf(input.charAt(i++));
+          enc3 = _keyStr.indexOf(input.charAt(i++));
+          enc4 = _keyStr.indexOf(input.charAt(i++));
+          chr1 = (enc1 << 2) | (enc2 >> 4);
+          chr2 = ((enc2 & 15) << 4) | (enc3 >> 2);
+          chr3 = ((enc3 & 3) << 6) | enc4;
+          output = output + String.fromCharCode(chr1);
+          if (enc3 != 64) {
+              output = output + String.fromCharCode(chr2);
+          }
+          if (enc4 != 64) {
+              output = output + String.fromCharCode(chr3);
+          }
+      }
+      output = this._utf8_decode(output);
+      return output;
+  }
+  // private method for UTF-8 encoding
+  this._utf8_encode = function (string) {
+      string = string.replace(/\r\n/g, "\n");
+      var utftext = "";
+      for (var n = 0; n < string.length; n++) {
+          var c = string.charCodeAt(n);
+          if (c < 128) {
+              utftext += String.fromCharCode(c);
+          } else if ((c > 127) && (c < 2048)) {
+              utftext += String.fromCharCode((c >> 6) | 192);
+              utftext += String.fromCharCode((c & 63) | 128);
+          } else {
+              utftext += String.fromCharCode((c >> 12) | 224);
+              utftext += String.fromCharCode(((c >> 6) & 63) | 128);
+              utftext += String.fromCharCode((c & 63) | 128);
+          }
+      }
+      return utftext;
+  }
+  // private method for UTF-8 decoding
+  this._utf8_decode = function (utftext) {
+      var string = "";
+      var i = 0;
+      var c = 0;
+      var c1 = 0;
+      var c2 = 0;
+      while (i < utftext.length) {
+          c = utftext.charCodeAt(i);
+          if (c < 128) {
+              string += String.fromCharCode(c);
+              i++;
+          } else if ((c > 191) && (c < 224)) {
+              c2 = utftext.charCodeAt(i + 1);
+              string += String.fromCharCode(((c & 31) << 6) | (c2 & 63));
+              i += 2;
+          } else {
+              c2 = utftext.charCodeAt(i + 1);
+              var c3 = utftext.charCodeAt(i + 2);
+              string += String.fromCharCode(((c & 15) << 12) | ((c2 & 63) << 6) | (c3 & 63));
+              i += 3;
+          }
+      }
+      return string;
+  }
+}
+
 function dateFormatter(str) {
   //默认返回yyyy-MM-dd HH-mm-ss
   var hasTime = arguments[1] != false ? true : false; //可传第二个参数false,返回yyyy-MM-dd

+ 2 - 2
src/components/lzTable.vue

@@ -31,8 +31,8 @@
 		</template>
 		<template v-else>
 			<tr
-				v-for="date in dateArr"
-				:key="date"
+				v-for="(date,index) in dateArr"
+				:key="index"
 				align="center"
 			>
 				<th>{{date}}</th>

+ 5 - 5
src/components/pubDialog.vue

@@ -100,26 +100,26 @@ export default {
     //form 数据
     formData: {
       type: Object,
-      default: {},
+      default: () =>{},
     },
     //form 规则
     formRules: {
       type: Object,
-      default: {},
+      default: ()=>{},
     },
     //表单key数组 { label:对应的名称,prop:规则的key, type: input支持的类型 默认input,placeholder}
     keysArr: {
       type: Array,
-      default: [],
+      default: ()=>[],
     },
     /* select的数据 {name,value}格式 */
     selectArr: {
       type: Array,
-      default: [],
+      default: ()=>[],
     },
     confimTxt: {
       type: Array,
-      default: ['保存', '取消'],
+      default: ()=>['保存', '取消'],
     },
   },
   data() {

+ 0 - 1
src/components/pwdDlg.vue

@@ -7,7 +7,6 @@
       :close-on-click-modal="false"
       :close-on-press-escape="false"
       :show-close="false"
-      :before-close="handleClose"
       custom-class="reset-pwd-dlg"
       v-dialogDrag
     >

+ 2 - 0
src/main.js

@@ -11,6 +11,8 @@ import "font-awesome/css/font-awesome.min.css";
 import "@/utils/dialog.js";
 import "@/utils/option-scroll.js";
 import "element-ui/lib/theme-chalk/index.css";
+import { mixins } from "@/mixins";
+Vue.mixin(mixins);
 
 Vue.use(ElementUI);
 Vue.use(VueRouter);

+ 141 - 0
src/mixins/index.js

@@ -0,0 +1,141 @@
+/**
+ * Created by xieli on 2018/7/12 0012.
+ */
+import http from "api/http.js";
+const mixins = {
+	filters: {
+		// 显示时间为 2021.07.22 
+		formatTime(time){
+			if(time==='0001-01-01 00:00:00'||time==='0000-00-00 00:00:00'){
+				return '--'
+			}else{
+				return time.replace(/-/g,'.')
+			}
+			
+		},
+		//  格式化金额 三位一个逗号
+		formatPriceHasPoint(e){
+			let str=e.toString()
+			let num1='',num2=''
+			if(str.indexOf(".")!=-1){
+				num1=str.substring(0,str.indexOf("."))
+				num2=str.substring(str.length,str.indexOf("."))
+				if(Number(num2)<=0){
+					num2=''
+				}
+			}else{
+				num1=str
+			}
+			return num1.replace(/(?!^)(?=(\d{3})+$)/g, ',')+num2
+		}
+	},
+	methods: {
+		formatterColumn(row,column,cellvalue){
+			return cellvalue ? http.dateFormatter(cellvalue) : '';
+		},
+		notHasTimeFormatter(row,column,cellvalue){
+		
+			return cellvalue ? http.dateFormatter(cellvalue,false) : '';
+		},
+		mixinsDateFormatter(date,type){
+			if(!date) return "";
+			return type === false ? http.dateFormatter(date, false) : http.dateFormatter(date);
+		},
+		numberFormatter(str,type=1){   // 0 文字在左侧  1 文字在右侧
+			switch (str) {
+				case '万':
+					return (row,column,cellvalue) =>{
+						return  type ? `${this.division(cellvalue,10000)}${str}`:`${str}${this.division(cellvalue,10000)}`;
+					};
+				default:
+					return (row,column,cellvalue) =>{
+						return `${cellvalue}${str}`;
+					};
+			}
+
+		},
+		formatterTime(time){
+			return http.dateFormatter(time);
+		},
+		/**
+		 * y 被除数
+		 * n 除数
+		 */
+		division(y,n){ //除法
+			if( y === '' || y===null || y===undefined){
+				y = 0;
+			}
+			let a = String(y);
+			let power = String(a).split('.')[1] ? String(a).split('.')[1].length : 0;
+			let intY = y * Math.pow(10,power);
+			let intN = n * Math.pow(10,power);
+			return intY/intN;
+		},
+
+		prompt(msg) { //提示
+			this.$message({
+				message: msg,
+				duration: 1000,
+			});
+		},
+		notice(msg) {
+			this.$message({
+				message: msg,
+				type: 'error',
+				duration: 1000,
+			});
+		},
+		success(msg) {
+			this.$message({
+				message: msg,
+				type: 'success',
+				duration: 1000,
+			});
+		},
+		_handleFocus(){
+			this.$nextTick(()=>{
+						var a=  document.getElementsByClassName('el-icon-arrow-right');
+						a[1].removeAttribute('disabled');
+						a[1].classList.remove('is-disabled');
+					})
+		},
+		_sendCode(params,func){
+			return new Promise( (resolve,reject)=>{
+				this.$prompt('请输入验证码', '提示', {
+					confirmButtonText: '确定',
+					cancelButtonText: '取消',
+					inputValidator:(e)=>{
+						if( e=='' || e==null ){
+							return '验证码不能为空';
+						}else{
+							return true;
+						}
+					},
+					beforeClose:(action,instance,done) => {
+						if( action==='confirm' ){
+							let newParams = Object.assign({},params,{VerifyCode:instance.inputValue});
+							func(newParams).then(res=>{
+								if( res.Ret==200 ){
+									done();
+									resolve(res);
+								}
+							})
+						}else{
+							done();
+						}
+					}
+				}).then(({ value }) => {
+					
+				}).catch(() => {
+					// this.$message({
+					//   type: 'info',
+					//   message: '取消输入'
+					// });       
+				});
+			})
+		}
+		
+	}
+}
+
+export { mixins }

+ 32 - 79
src/routes/modules/oldRoutes.js

@@ -13,18 +13,6 @@ const reportlist = (r) =>
     () => r(require("@/views/report_manage/reportlist")),
     "reportlist"
   ); //研报管理-报告列表
-const addreport = (r) =>
-  require.ensure(
-    [],
-    () => r(require("@/views/report_manage/addreport")),
-    "addreport"
-  ); //研报管理-新增报告
-const editreport = (r) =>
-  require.ensure(
-    [],
-    () => r(require("@/views/report_manage/editreport")),
-    "editreport"
-  ); //研报管理-编辑报告
 const reportdtl = (r) =>
   require.ensure(
     [],
@@ -58,12 +46,12 @@ export default [
     name: "操作指南",
     hidden: false,
   },
-  // {
-  // 	path:'/AIQA',
-  // 	component:()=> import('@/views/operation_manage/AIQA/AIQA.vue'),
-  // 	name:'AI问答',
-  // 	hidden:false
-  // },
+  {
+  	path:'/AIQA',
+  	component:()=> import('@/views/operation_manage/AIQA/AIQA.vue'),
+  	name:'AI问答',
+  	hidden:false
+  },
 
   // 主页
   {
@@ -129,24 +117,6 @@ export default [
           keepAlive: false,
         },
       },
-      {
-        path: "addreport",
-        component: addreport,
-        name: "添加研报",
-        hidden: true,
-        meta: {
-          keepAlive: false,
-        },
-      },
-      {
-        path: "editreport",
-        component: editreport,
-        name: "编辑研报",
-        hidden: true,
-        meta: {
-          keepAlive: false,
-        },
-      },
       {
         path: "addreportNew",
         component: () => import("@/views/report_manage/addreportNew.vue"),
@@ -191,21 +161,21 @@ export default [
           pathName: "晨报/周报",
         },
       },
-      {
-        path: "reportupdate",
-        component: () => import("@/views/report_manage/dayWeekUpdate.vue"),
-        name: "更新管理",
-        hidden: true,
-        meta: {
-          keepAlive: false,
-        },
-      },
-      {
-        path: "reportlabel",
-        component: () => import("@/views/report_manage/tagLib.vue"),
-        name: "标签库",
-        hidden: true,
-      },
+      // {
+      //   path: "reportupdate",
+      //   component: () => import("@/views/report_manage/dayWeekUpdate.vue"),
+      //   name: "更新管理",
+      //   hidden: true,
+      //   meta: {
+      //     keepAlive: false,
+      //   },
+      // },
+      // {
+      //   path: "reportlabel",
+      //   component: () => import("@/views/report_manage/tagLib.vue"),
+      //   name: "标签库",
+      //   hidden: true,
+      // },
       {
         path: "reportEnList",
         component: () =>
@@ -220,12 +190,12 @@ export default [
         name: "英文研报编辑",
         hidden: false,
       },
-      {
-        path: "emaiList",
-        component: () => import("@/views/report_manage/emailList.vue"),
-        name: "邮箱管理",
-        hidden: false,
-      },
+      // {
+      //   path: "emaiList",
+      //   component: () => import("@/views/report_manage/emailList.vue"),
+      //   name: "邮箱管理",
+      //   hidden: false,
+      // },
       // {
       // 	path: 'classifyEnlist',
       // 	component: () => import('@/views/classify_manage/classifyEnlist.vue'),
@@ -238,17 +208,6 @@ export default [
         name: "研报作者管理",
         hidden: false,
       },
-      {
-        path: "ReportThsSend",
-        component: () => import("@/views/report_manage/pushSetting.vue"),
-        name: "推送客户群设置",
-        hidden: false,
-      },
-      {
-        path: "pricedriven",
-        name: "价格驱动",
-        component: () => import("@/views/report_manage/priceDriven.vue"),
-      },
       {
         path: "sendlog",
         component: () =>
@@ -256,12 +215,6 @@ export default [
         name: "群发日志",
         hidden: true,
       },
-      {
-        path: "daynews",
-        component: () => import("@/views/report_manage/dayilyNews.vue"),
-        name: "每日资讯",
-        hidden: false,
-      },
       {
         path: "strategyReport",
         name: "策略报告",
@@ -272,11 +225,11 @@ export default [
         name: "云盘",
         component: () => import("@/views/report_manage/cloudDisk.vue"),
       },
-      {
-        path: "pdfList",
-        name: "PDF报告",
-        component: () => import("@/views/report_manage/pdfList.vue"),
-      },
+      // {
+      //   path: "pdfList",
+      //   name: "PDF报告",
+      //   component: () => import("@/views/report_manage/pdfList.vue"),
+      // },
       {
         path: "reportvariety",
         name: "英文品种配置",

+ 23 - 25
src/views/Home.vue

@@ -217,7 +217,7 @@
               v-else
             />
 
-            <div class="approval_notice" v-show="isShowApprovalNotice">
+            <!-- <div class="approval_notice" v-show="isShowApprovalNotice">
               <img
                 src="~@/assets/img/approval_ notice.png"
                 alt="用印审批公告"
@@ -225,7 +225,7 @@
               <div>
                 纸质合同的用印交付时间为上午10:30-11:30,下午16:00-17:30
               </div>
-            </div>
+            </div> -->
           </div>
 
           <div class="right_section">
@@ -242,8 +242,8 @@
               "
             />
             <!-- 留言板消息通知 -->
-            <questionMsgDia></questionMsgDia>
-            <el-popover
+            <!-- <questionMsgDia></questionMsgDia> -->
+            <!-- <el-popover
               placement="bottom"
               width="610"
               trigger="hover"
@@ -445,14 +445,14 @@
                   v-if="flag1 || flag2 || flag3 || flag4 || flag5 || flag6"
                 ></span>
               </div>
-            </el-popover>
-            <img
+            </el-popover> -->
+            <!-- <img
               src="~@/assets/img/home/saller_notice.png"
               v-if="Role == 'ficc_seller' || Role == 'rai_seller'"
               alt=""
               style="height: 25px; margin-left: 20px; cursor: pointer"
               @click="handleShowSallerTodayList"
-            />
+            /> -->
             <div class="userinfo">
               <div class="userinfo-fingerpost">
                 <el-button
@@ -464,12 +464,12 @@
               </div>
               <span
                 style="color: #409eff; cursor: pointer"
-                @click="linkToOtherMS('HR_MANAGEMENT_SYSTEM')"
+                @click="linkToOtherMS('VUE_APP_HR_MANAGEMENT_SYSTEM')"
                 >HR系统</span
               >
               <span
                 style="color: #409eff; cursor: pointer"
-                @click="linkToOtherMS('FINANCIAL_MANAGEMENT_SYSTEM')"
+                @click="linkToOtherMS('VUE_APP_FINANCIAL_MANAGEMENT_SYSTEM')"
                 >财务报表系统</span
               >
               <el-dropdown trigger="click">
@@ -687,10 +687,10 @@
     <pwd-dlg :dialogVisiblePwd="dialogVisiblePwd" />
 
     <!-- 路演反馈弹窗 -->
-    <feedback-dialog
+    <!-- <feedback-dialog
       :isShow.sync="isFeedbackDialog"
       :data="roadshowFeedbackList"
-    />
+    /> -->
 
     <!-- 代办历史记录弹窗 -->
     <el-dialog
@@ -746,13 +746,13 @@ import {
   roadshowInterence,
 } from "api/api.js";
 import PwdDlg from "@/components/pwdDlg.vue";
-import feedbackDialog from "@/components/todo/roadShowFeedbackDia.vue";
+// import feedbackDialog from "@/components/todo/roadShowFeedbackDia.vue";
 import questionMsgDia from "@/components/questionMsgDia.vue";
 import EventBus from "@/api/bus.js";
 export default {
   components: {
     PwdDlg,
-    feedbackDialog,
+    // feedbackDialog,
     questionMsgDia,
   },
   inject: ["reload"],
@@ -791,10 +791,10 @@ export default {
       // 之前是通过判断列表中是否都有说明,现需要判断列表中都要添加或编辑
       return this.todayList.every((item) => item.isEdited);
     },
-    Role() {
-      let role = localStorage.getItem("Role") || "";
-      return role;
-    },
+    // Role() {
+    //   let role = localStorage.getItem("Role") || "";
+    //   return role;
+    // },
     isShowRole() {
       let role = localStorage.getItem("RoleIdentity") || "";
       return (
@@ -919,12 +919,10 @@ export default {
     this.sysUserName = localStorage.getItem("userName") || "";
     this.sysUserAvatar = "../assets/img/userLogo.png";
 
-    this.getSellerTodayList("auto");
     if (this.$route.path === "/sealApprovalList") {
       this.isShowApprovalNotice = true;
     }
   },
-  destroyed() {},
   mounted() {
     if (document.body.clientWidth <= 1500) {
       //小屏适配
@@ -936,7 +934,6 @@ export default {
     } else {
       this.getMenuList();
     }
-    this.getNotice();
   },
   methods: {
     //判断是否为初始密码
@@ -947,9 +944,9 @@ export default {
       }
     },
     // 点击导航 打开今日待办
-    handleShowSallerTodayList() {
-      this.getSellerTodayList("click");
-    },
+    // handleShowSallerTodayList() {
+    //   this.getSellerTodayList("click");
+    // },
 
     // 点击完成 批量提交备注
     handleTodayFinished() {
@@ -1122,9 +1119,10 @@ export default {
     // 跳转去其他的系统
     linkToOtherMS(key) {
       /**
-       * HR_MANAGEMENT_SYSTEM -- HR管理系统
-       * FINANCIAL_MANAGEMENT_SYSTEM -- 财务管理系统
+       * VUE_APP_HR_MANAGEMENT_SYSTEM -- HR管理系统
+       * VUE_APP_FINANCIAL_MANAGEMENT_SYSTEM -- 财务管理系统
        */
+      console.log(process.env)
       let href = process.env[key];
       console.log(href);
       window.open(href, "_blank");

+ 2 - 2
src/views/chartRelevance_manage/components/chartCard.vue

@@ -44,9 +44,9 @@
       <Chart
         v-if="options.series"
         :options="options"
-        :index="entryType"
+        :index="String(entryType)"
         :ref="`chartRef${entryType}`"
-        :height="350"
+        height="350"
       />
     </div>
   </div>

+ 1 - 1
src/views/chartRelevance_manage/components/selectTarget.vue

@@ -60,7 +60,7 @@ export default {
         default:''
       },
       defaultOpt:{
-        default:[]
+        default:()=>[]
       },
       defaultType:{
         default:''

+ 0 - 2
src/views/chartRelevance_manage/fittingEquationChartEditor.vue

@@ -39,7 +39,6 @@
 						range
 						value-type="format"
 						placeholder="请选择时间段"
-						@change="dateChange"
 					/>
 				</div>
         
@@ -116,7 +115,6 @@
         class="move-btn resize"
         v-drag
         id="resize"
-        @mousemove="dynamicNode && resetNodeStyle(dynamicNode)"
       ></span>
       <span class="slide-icon slide-left" @click="isSlideLeft = !isSlideLeft">
 				<i class="el-icon-d-arrow-left"></i>

+ 1 - 1
src/views/chartRelevance_manage/fittingEquationList.vue

@@ -282,7 +282,7 @@ export default {
 			chart_title:'',//图表标题 双击标题修改时来存储最新值
 
 			isAddMyChart: false, //加入图库弹窗
-      add_chart_id: '', //要加入的图表
+      add_chart_id: 0, //要加入的图表
 			add_ids:[],//加入时已有的分类
 
 			/* 图表列表 */

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

@@ -363,7 +363,7 @@ export default {
       chart_title: "", //图表标题 双击标题修改时来存储最新值
 
       isAddMyChart: false, //加入图库弹窗
-      add_chart_id: "", //要加入的图表
+      add_chart_id: 0, //要加入的图表
       add_ids: [], //加入时已有的分类
 
       /* 图表列表 */

+ 0 - 1
src/views/chartRelevance_manage/relevanceChartEditor.vue

@@ -249,7 +249,6 @@
         class="move-btn resize"
         v-drag
         id="resize"
-        @mousemove="dynamicNode && resetNodeStyle(dynamicNode)"
       ></span>
       <span class="slide-icon slide-left" @click="isSlideLeft = !isSlideLeft">
         <i class="el-icon-d-arrow-left"></i>

+ 0 - 1
src/views/chartRelevance_manage/statisticFeatureChartEditor.vue

@@ -189,7 +189,6 @@
         class="move-btn resize"
         v-drag
         id="resize"
-        @mousemove="dynamicNode && resetNodeStyle(dynamicNode)"
       ></span>
       <span class="slide-icon slide-left" @click="isSlideLeft = !isSlideLeft">
         <i class="el-icon-d-arrow-left"></i>

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

@@ -280,7 +280,7 @@ export default {
 			chart_title:'',//图表标题 双击标题修改时来存储最新值
 
 			isAddMyChart: false, //加入图库弹窗
-      add_chart_id: '', //要加入的图表
+      add_chart_id: 0, //要加入的图表
 			add_ids:[],//加入时已有的分类
 
 			/* 图表列表 */

+ 3 - 1
src/views/classify_manage/classifyEnlist.vue

@@ -34,7 +34,7 @@
       <el-table
         :data="tableData"
         v-loading="dataLoading"
-        :row-class-name="tableRowClassName"
+        row-class-name="tableRowClassName"
         element-loading-text="数据加载中..."
         :default-expand-all="isexpand"
         row-key="Id"
@@ -252,6 +252,8 @@ export default {
       ],
       aTab:0,
 
+      isexpand:false,
+
       showSetVariety:false,
       checkedVariety:[],
       activeItem:{},//当前编辑权限的分类

+ 0 - 10
src/views/classify_manage/classifylist.vue

@@ -454,16 +454,6 @@ export default{
 					message:'上传报告合集配图',
 					trigger:'change'
         }],
-			/* 	YbIconUrl:[{
-					required:true,
-					message:'上传已购icon',
-					trigger:'change'
-				}],
-				YbBgUrl:[{
-					required:true,
-					message:'上传已购详情配图',
-					trigger:'change'
-				}], */
 				YbFiccPcIcon:[{
 					required:true,
 					message:'选择背景颜色',

+ 0 - 1
src/views/dataEntry_manage/addChart.vue

@@ -260,7 +260,6 @@
         class="move-btn resize"
         v-drag
         id="resize"
-        @mousemove="dynamicNode && resetNodeStyle(dynamicNode)"
       ></span>
       <span class="slide-icon slide-left" @click="isSlideLeft = !isSlideLeft">
 				<i class="el-icon-d-arrow-left"></i>

+ 1 - 3
src/views/dataEntry_manage/adjustdata/adjustData.vue

@@ -80,7 +80,6 @@
               placeholder="请选择频度"
               style="width: 150px"
               clearable
-              :disabled="type === 14"
             >
               <el-option
                 v-for="item in frequencyArr"
@@ -386,8 +385,7 @@ export default {
 		searchApi(query,page=1) {
 			dataBaseInterface.targetSearchByPage({
 				KeyWord:query,
-				CurrentIndex: page,
-				FilterSource: this.type === 5 ? 2 : this.type === 14 ? 3 : 1
+				CurrentIndex: page
 			}).then(res => {
 				if(res.Ret !== 200) return
 

+ 2 - 1
src/views/dataEntry_manage/chartSetting.vue

@@ -821,6 +821,7 @@ export default {
         level: '',
       },
       drawImg: '',
+      dynamicWidth: '',
 
       /* 季节性图 */
       season_year: '', //显示的年份
@@ -837,7 +838,7 @@ export default {
       public_total: 0,
       chartPublicList: [],
       isAddMyChart: false, //加入图库弹窗
-      add_chart_id: '', //要加入的图表
+      add_chart_id: 0, //要加入的图表
 
       /* 左侧更改目录和坐标轴切换 */
       leftShowLabel: '目录',

+ 0 - 1
src/views/dataEntry_manage/coal/index.vue

@@ -55,7 +55,6 @@
           :props="defaultProps"
           default-expand-all
           :default-checked-keys="[select_classify]"
-          :filter-node-method="filterNode"
           ref="coalTree"
           highlight-current
           @node-click="clickClassify"

+ 2 - 4
src/views/dataEntry_manage/codecount/index.vue

@@ -49,8 +49,7 @@
 								<el-select 
 								v-model="formData.frequency" 
 								placeholder="请选择频度" 
-								clearable 
-								@change="changeTrade"
+								clearable
 								style="width:220px">
 									<el-option
 										v-for="item in frequencyArr"
@@ -86,8 +85,7 @@
 								<el-select 
 								v-model="fromType" 
 								placeholder="请选择来源"
-								style="width:220px"
-								@change="changeTrade">
+								style="width:220px">
 									<el-option
 										v-for="item in allFromArr"
 										:key="item.key"

+ 0 - 3
src/views/dataEntry_manage/components/DateChooseDia.vue

@@ -21,7 +21,6 @@
 							type="month"
 							value-type="format"
 							placeholder="起始时间"
-							@change="dateChange"
 						></date-picker>
 						<span style="margin:0 20px">至</span>
 						<date-picker
@@ -29,7 +28,6 @@
 							type="month"
 							value-type="format"
 							placeholder="结束时间"
-							@change="dateChange"
 						></date-picker>
 					</template>
 					<template v-else>
@@ -38,7 +36,6 @@
 							type="month"
 							value-type="format"
 							placeholder="起始时间"
-							@change="dateChange"
 						></date-picker>
 						<span style="margin:0 20px">至</span>
 						<el-button type="text" style="font-size: 16px">至今</el-button>

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

@@ -63,7 +63,7 @@ export default {
       default: ''
     },
     source: { //兼容商品价格图另存 good_price
-      type: String,
+      type: String|Number,
       default: ''
     }
   },

+ 0 - 1
src/views/dataEntry_manage/components/addTarget.vue

@@ -80,7 +80,6 @@
 								v-model="formData.unit"
 								:fetch-suggestions="querySearchUnit"
 								placeholder="请填写单位"
-								@select="handleSelectUnit"
 								suffix-icon="el-icon-arrow-down"
 								style="width: 321px;"
 							></el-autocomplete>

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

@@ -82,8 +82,7 @@
     >
       <div style="padding-left: 50px">
         <el-form 
-          :model="dialogForm" 
-          :rules="formRules" 
+          :model="dialogForm"
           ref="formRef" 
           label-position="left"
           hide-required-asterisk
@@ -165,6 +164,7 @@ export default {
   },
   data() {
     return {
+      activeNames: '',
       predefineColors: defaultOpts.colors.slice(0, 2), //定义颜色蓝,红 默认颜色
       sortObj: {
         sort: 0,

+ 0 - 5
src/views/dataEntry_manage/components/chart.vue

@@ -22,11 +22,6 @@ export default {
 		options: {
 			type: Object,
 		},
-		/* 置于页面 还是弹窗 弹窗固定高度*/
-		inset: {
-			type: Boolean,
-			default: false,
-		},
 		//maxHeight
 		height: {
 			type: String,

+ 6 - 6
src/views/dataEntry_manage/components/editTarget.vue

@@ -156,7 +156,7 @@ import {dataInterence} from 'api/api.js';
 			},
 			//编辑id
 			edit_dataId: {
-				type:String
+				type:String|Number
 			},
 			// 修改数据时的老日期
 			old_date: {
@@ -200,11 +200,11 @@ import {dataInterence} from 'api/api.js';
 				classify_id:'',//分类id
 				targetList:[],//指标列表
 				defaultNode:'',
-				unitList:[
-					{value:'吨'},
-					{value:'元'},
-					{value:'米'},
-				]
+				// unitList:[
+				// 	{value:'吨'},
+				// 	{value:'元'},
+				// 	{value:'米'},
+				// ]
 			};
 		},	
 		watch: {

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

@@ -94,6 +94,7 @@ export default {
         Authorization: localStorage.getItem("auth"),
       },
       isLoading: false,
+      fileList: []
     };
   },
   watch: {

+ 1 - 2
src/views/dataEntry_manage/components/satterSeriesDia.vue

@@ -274,14 +274,13 @@
       :show.sync="openReplaceDialog"
       width="700px"
       title="指标替换"
-      @close="closeDialog"
+      @close="cancelReplace"
     >
       <div>
         <el-form
 					label-position="left"
 					label-width="80px"
 					:model="replaceForm"
-					:rules="chartRules"
 				>
 					<el-form-item label="指标名称" prop="name">
 						<span>{{replaceForm.oldEdbName}}</span>

+ 3 - 3
src/views/dataEntry_manage/components/sectionalScatterOption.vue

@@ -14,10 +14,10 @@
           </template>
           <div class="setting-wrapper" v-if="item.edbs">
             <div class="set-header">
-              <el-checkbox v-model="item.showTrendLine" @change="changeSeriesOption(item,index)" :true-label="true" :false-label="false">趋势线</el-checkbox>
+              <el-checkbox v-model="item.showTrendLine" @change="changeSeriesOption(item,index)">趋势线</el-checkbox>
               <template v-if="item.showTrendLine">
-                <el-checkbox v-model="item.showFitEquation" @change="changeSeriesOption(item,index)" :true-label="true" :false-label="false">拟合方程</el-checkbox>
-                <el-checkbox v-model="item.showRSquare" @change="changeSeriesOption(item,index)" :true-label="true" :false-label="false">R²</el-checkbox>
+                <el-checkbox v-model="item.showFitEquation" @change="changeSeriesOption(item,index)">拟合方程</el-checkbox>
+                <el-checkbox v-model="item.showRSquare" @change="changeSeriesOption(item,index)">R²</el-checkbox>
               </template>
             </div>
 

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

@@ -135,7 +135,7 @@ export default {
       default: null
     },
     edblist: {
-      default: []
+      default: () => []
     }
   },
   watch:{

+ 1 - 1
src/views/dataEntry_manage/databaseComponents/addTargetDiaBase.vue

@@ -36,7 +36,7 @@
 				您当前暂无权限查看该指标,如需查看,请联系管理员
 			</div>
 			<div class="dialog-main" v-else>
-				<el-table ref="Table" :data="tableData" @row-click="chooseTarget" highlight-current-row border
+				<el-table ref="Table" :data="tableData" highlight-current-row border
 					:style="(status === 1 || !tableData.length) ? 'height:350px' : ''">
 					<el-table-column v-for="item in tableColums" :key="item.label" :label="item.label" align="center">
 						<template slot-scope="scope">

+ 1 - 6
src/views/dataEntry_manage/databaseComponents/completeTargetDia.vue

@@ -32,7 +32,6 @@
 						v-model="formData.menu"
 						:options="options"
 						:props="levelProps"
-						@change="menuChange"
 						style="width: 80%"
 						clearable
 						placeholder="请选择所属目录"/>
@@ -43,8 +42,7 @@
 						v-model="formData.frequency" 
 						placeholder="请选择频率" 
 						style="width:80%" 
-						clearable 
-						@change="changeTrade">
+						clearable>
 							<el-option
 								v-for="item in frequencyArr"
 								:key="item"
@@ -166,9 +164,6 @@ export default {
 		cancelHandle() {
 			this.formData = {}
 			this.$emit('cancel')
-		},
-		menuChange(val) {
-			// console.log(val);
 		}
 	},
 	created() {},

+ 0 - 1
src/views/dataEntry_manage/databaseComponents/computedDialog.vue

@@ -105,7 +105,6 @@
 						v-model="formData.menu"
 						:options="options"
 						:props="levelProps"
-						@change="menuChange"
 						clearable
 						placeholder="请选择指标目录"
 					/>

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

@@ -48,7 +48,7 @@
 		</div>
 		<div class="min-wrapper">
 			<div class="chartWrapper" id="chartWrapper" v-if="showChart">
-				<Chart :options="options" ref="chartRef" inset="true" @clickYAxisTitle="clickYAxisTitle" />
+				<Chart :options="options" ref="chartRef" @clickYAxisTitle="clickYAxisTitle" />
 				<div class="range-cont left" v-if="leftIndex != -1">
 					<el-input
 						style="width: 80px; display: block"

+ 1 - 1
src/views/dataEntry_manage/databaseComponents/dataAssociateChart.vue

@@ -108,7 +108,7 @@ export default {
 
             // 加入我的
             isAddMyChart: false, //加入图库弹窗
-            add_chart_id: '', //要加入的图表
+            add_chart_id: 0, //要加入的图表
             add_ids:[],//加入时已有的分类
 
             // 显示详情弹窗

+ 0 - 1
src/views/dataEntry_manage/databaseComponents/diffusionIndexDia.vue

@@ -104,7 +104,6 @@
               v-model="formData.menu"
               :options="options"
               :props="levelProps"
-              @change="menuChange"
               clearable
               placeholder="请选择指标目录"
 							style="width: 340px"

+ 1 - 3
src/views/dataEntry_manage/databaseComponents/fittingResidueDia.vue

@@ -145,7 +145,6 @@
             v-model="formData.menu"
             :options="options"
             :props="levelProps"
-            @change="menuChange"
             style="width:70%" 
             clearable
             placeholder="请选择指标目录"
@@ -156,8 +155,7 @@
           v-model="formData.frequency" 
           placeholder="请选择频度" 
           style="width:70%" 
-          clearable 
-          @change="changeTrade">
+          clearable>
             <el-option
               v-for="item in frequencyArr"
               :key="item"

+ 1 - 2
src/views/dataEntry_manage/databaseComponents/jointTargetDia.vue

@@ -167,8 +167,7 @@
 				v-model="formData.frequency" 
 				placeholder="请选择频度" 
 				style="width:70%" 
-				clearable 
-				@change="changeTrade">
+				clearable >
 					<el-option
 						v-for="item in frequencyArr"
 						:key="item"

+ 0 - 1
src/views/dataEntry_manage/databaseComponents/operationDialog.vue

@@ -172,7 +172,6 @@
 								v-model="formData.menu"
 								:options="options"
 								:props="levelProps"
-								@change="menuChange"
 								clearable
 								placeholder="请选择指标目录"
 							/>

+ 13 - 13
src/views/dataEntry_manage/databaseList.vue

@@ -297,7 +297,7 @@
 			:title="computedTit"
 			:calulateForm="calulateForm"
 			:calulateList="calulateList"
-			@cancel="computed_type=''"
+			@cancel="computed_type=0"
 			@addCallBack="addComputedCallBack"
 			@openPrev="isOpenComputed=true"
 			@lookHistory="id => {isLookHistory=true;lookEdbId=id;}"
@@ -314,7 +314,7 @@
 		width="920px"
 		v-dialogDrag>
 			<div class="dialog-computed-header">
-				<el-radio-group v-model="computed_source" size="medium" @change="computed_type = ''">
+				<el-radio-group v-model="computed_source" size="medium" @change="computed_type = 0">
 					<el-radio-button :label="1">常规计算</el-radio-button>
 					<el-radio-button :label="2">批量计算</el-radio-button>
 				</el-radio-group>
@@ -344,7 +344,7 @@
 			:isOperation="([5,6,7,8,12,13,14,22,35,51,52,61,62,63].includes(computed_type) || (computed_type===40&&operationForm.view)) && computed_source===1"
 			:type="computed_type"
 			:operationForm="operationForm"
-			@cancel="computed_type=''"
+			@cancel="computed_type=0"
 			@addCallBack="addComputedCallBack"
 			@openPrev="isOpenComputed=true"
 			@lookHistory="id => {isLookHistory=true;lookEdbId=id;}"
@@ -376,7 +376,7 @@
 		<joint-target-dia
 			:isShow="computed_type === 'joint'"
 			:params="operationForm"
-			@cancel="computed_type=''"
+			@cancel="computed_type=0"
 			@addCallBack="addComputedCallBack"
 			@openPrev="isOpenComputed=true"
 		/>
@@ -386,7 +386,7 @@
 			:isShow="computed_type === 37 && computed_source===1"
 			:type="37"
 			:operationForm="operationForm"
-			@cancel="computed_type=''"
+			@cancel="computed_type=0"
 			@addCallBack="addComputedCallBack"
 			@openPrev="isOpenComputed=true"
 		/>
@@ -395,7 +395,7 @@
 		<batchComputedDialog
 			:isBatchComputed="[6,7,8,12,13,14,5,61,62,63].includes(computed_type) && computed_source===2"
 			:type="computed_type"
-			@cancel="computed_type=''"
+			@cancel="computed_type=0"
 			@addCallBack="addComputedCallBack"
 			@openPrev="isOpenComputed=true"
 			@lookHistory="id => {isLookHistory=true;lookEdbId=id;}"
@@ -407,7 +407,7 @@
 			:isShow="computed_type === 53 && computed_source===1"
 			:type="computed_type"
 			:operationForm="operationForm"
-			@cancel="computed_type=''"
+			@cancel="computed_type=0"
 			@addCallBack="addComputedCallBack"
 			@openPrev="isOpenComputed=true"
 		/>
@@ -581,7 +581,7 @@ export default {
 				}
 			],
 			haveMore: true,
-			selected_edbid: '',//选中的指标id
+			selected_edbid: 0,//选中的指标id
 			dataList: [],//指标数值
 			new_label: '',//新的节点label值
 			select_node:'',//当前选中的节点
@@ -602,7 +602,7 @@ export default {
 			computedTit:'',
 			calulateForm:{},
 			calulateList:[],
-			computed_type:'',//打开弹窗的类型
+			computed_type:0,//打开弹窗的类型
 			operationForm:{},
 			dynamicNode:null,
 		
@@ -736,7 +736,7 @@ export default {
 				if(res.Ret === 200) {
 					/* 默认选中 默认指标id */
 						this.select_node = res.Data ? res.Data.UniqueCode : '';
-						this.selected_edbid = res.Data ? res.Data.EdbInfoId : '';
+						this.selected_edbid = res.Data ? res.Data.EdbInfoId : 0;
 						this.getTreeData();
 				}
 			})
@@ -1216,7 +1216,7 @@ export default {
 				if(res.Ret === 200) {
 					this.$message.success(res.Msg);
 					this.getTreeData();
-					this.selected_edbid = '';
+					this.selected_edbid = 0;
 					this.deleteLabel({code:this.select_node,id:EdbInfoId,classifyId:ClassifyId})
 					// this.getNewTargetList();
 				}
@@ -1482,7 +1482,7 @@ export default {
 		},
 		/* 新增计算指标回调 */
 		addComputedCallBack(type, params) {
-			this.computed_type = '';
+			this.computed_type = 0;
 			this.computed_source = 1;
 			this.showAssociateChart=false
 			this.showAssociateComputeData=false
@@ -1722,7 +1722,7 @@ export default {
 			if(this.select_node===params.code){
 				//删除的是唯一一个标签
 				if(this.labelList.length===1){
-					this.selected_edbid=''
+					this.selected_edbid=0
 					this.select_node = ''
 					this.$refs.menuTree.setCurrentKey(null)
 				//不是唯一的标签,则默认选中上一个/下一个

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

@@ -257,7 +257,6 @@
         class="move-btn resize"
         v-drag
         id="resize"
-        @mousemove="dynamicNode && resetNodeStyle(dynamicNode)"
       ></span>
       <span class="slide-icon slide-left" @click="isSlideLeft = !isSlideLeft">
 				<i class="el-icon-d-arrow-left"></i>
@@ -560,6 +559,7 @@ export default {
     return {
 			isSlideLeft: false,
 			search_txt: '',
+			activeNames: '',
 
 			/* right */
 			calendar_type: '公历',//默认公历

+ 1 - 1
src/views/dataEntry_manage/mixins/chartPublic.js

@@ -129,7 +129,7 @@ export const chartSetMixin = {
       currentLang:'ch', // ch(中文) en(英文)
       setEnName:false,
       // 传入的formItem所需内容
-      formItemArray:{},
+      formItemArray:[],
 
       /* 奇怪柱形图 */
       barDateList: [],//柱形图的绘图数据

+ 0 - 47
src/views/dataEntry_manage/targetList.vue

@@ -14,53 +14,6 @@
 				style="maxWidth:520px;float:right">
 				<i slot="prefix" class="el-input__icon el-icon-search"></i>
 			</el-input>
-			<!-- 筛选条件 -->
-			<!-- <el-form :inline="true" style="dispaly:flex;justify-content:space-around;align-items:center;" class="elForm">
-				<el-form-item style="marginRight:10px;">
-					<el-button type="primary" size="medium" @click="insertData(2)">新增指标</el-button>
-					<el-button type="primary" size="medium" @click="handleImport">导入新指标</el-button>
-				</el-form-item>
-				<el-form-item label="" style="marginRight:10px;">
-					<el-cascader
-						:options="fillterClassifyList"
-						v-model="classify_id"
-						:props="classifyProps"
-						@change="classifyChange"
-						placeholder="请选择分类"
-						:show-all-levels="false"
-						style="maxWidth:180px;marginRight:10px;"
-						clearable>
-					</el-cascader>
-					<el-select v-model="frequency" placeholder="请选择频度" @change="frequencyChange" style="maxWidth:180px" clearable>
-						<el-option
-							v-for="item in frequencyList"
-							:key="item.value"
-							:label="item.label"
-							:value="item.value">
-						</el-option>
-					</el-select>
-				</el-form-item>
-				<el-form-item style="marginRight:10px;">
-					<el-date-picker
-						v-model="date"
-						type="daterange"
-						range-separator="至"
-						start-placeholder="开始日期"
-						end-placeholder="结束日期"
-						@change="dateChange"
-						value-format="yyyy-MM-dd">
-					</el-date-picker>
-				</el-form-item>
-				<el-form-item>
-					<el-input
-						placeholder="关键字搜索"
-						v-model="search_txt"
-						@input="searchHandle"
-						style="maxWidth:210px">
-						<i slot="prefix" class="el-input__icon el-icon-search"></i>
-					</el-input>
-				</el-form-item>
-			</el-form> -->
 		</div>
 		<div class="data-bot-container">
 			<div style="margin-bottom:30px">

+ 1 - 1
src/views/dataEntry_manage/thirdBase/UNdata.vue

@@ -36,7 +36,7 @@
         v-for="item in countryData" :key="item.code"></el-option>  
       </el-select>
       <div style="margin: 0 0 10px 30px;height:40px;display:flex;">
-      <el-dropdown split-button type="primary"  @command="handleCommand" :disabled="isPublish">
+      <el-dropdown split-button type="primary"  @command="handleCommand">
           {{searchParams.DateType===1?'年度':'月度'}}
           <el-dropdown-menu slot="dropdown">
             <el-dropdown-item :command="1">年度</el-dropdown-item>

+ 2 - 2
src/views/dataEntry_manage/thirdBase/chinaFinancialFutures.vue

@@ -33,14 +33,14 @@
                           <td colspan="4" style="background:#ECF5FF">持卖单量排名</td>
                       </tr>
                       <tr>
-                          <td v-for="val in labelArr" :key="val">
+                          <td v-for="(val,index) in labelArr" :key="`${item.Code}_${index}`">
                               {{ val }}
                           </td>
                       </tr>
                   </thead>
                   <tbody>
                       <tr v-for="item2 in item.Item" :key="item2.Rank">
-                          <td v-for="(val, key) in labelArr" :key="val">
+                          <td v-for="(val, key) in labelArr" :key="`${item.Code}_${item2.Rank}_${key}`">
                               {{item2.Rank==999&&key=='Rank'?'合计':item2[key]}}
                           </td>
                       </tr>

+ 1 - 1
src/views/dataEntry_manage/thirdBase/components/targetDialog.vue

@@ -117,7 +117,7 @@ export default {
       type: Boolean,
     },
     classifyList: {
-      type: Object,
+      type: Array,
     },
     edbForm: {
       type: Object,

+ 1 - 1
src/views/dataEntry_manage/thirdBase/dlExchangeData.vue

@@ -25,7 +25,7 @@
                 <table width="auto" border="0">
                     <thead class="border-head">
                         <tr>
-                            <td v-for="val in labelArr" :key="val">
+                            <td v-for="(val,index) in labelArr" :key="`${val}_${index}`">
                                 {{ val }}
                             </td>
                         </tr>

+ 3 - 3
src/views/dataEntry_manage/thirdBase/shEnergy.vue

@@ -28,14 +28,14 @@
                         <td :colspan="Object.keys(labelArr).length" style="background:#ECF5FF">合约代码:{{item.Code}}</td>
                       </tr>
                       <tr>
-                          <td v-for="val in labelArr" :key="val">
+                          <td v-for="(val,index) in labelArr" :key="`${item.Code}_${index}`">
                               {{ val }}
                           </td>
                       </tr>
                   </thead>
                   <tbody>
-                      <tr v-for="item2 in item.Item" :key="item2.Rank">
-                          <td v-for="(val, key) in labelArr" :key="val">
+                      <tr v-for="item2 in item.Item" :key="`${item.Code}_${item2.Rank}`">
+                          <td v-for="(val, key) in labelArr" :key="`${item.Code}_${item2.Rank}_${key}`">
                               {{item2.Rank==999&&key=='Rank'?'合计':item2[key]}}
                           </td>
                       </tr>

+ 3 - 3
src/views/dataEntry_manage/thirdBase/shFutures.vue

@@ -50,12 +50,12 @@
                             </td>
                         </tr>
                         <tr>
-                            <td v-for="val in labelArr" :key="val">
+                            <td v-for="(val,index) in labelArr" :key="`${item.Title}_${item2.Code}_${val}_${index}`">
                                 {{ val }}
                             </td>
                         </tr>
-                        <tr v-for="item3 in item2.Item" :key="item3.Rank">
-                            <td v-for="(val, key) in labelArr" :key="val">
+                        <tr v-for="item3 in item2.Item" :key="`${item.Title}_${item2.Code}_${item3.Rank}`">
+                            <td v-for="(val, key) in labelArr" :key="`${item.Title}_${item2.Code}_${item3.Rank}_${key}`">
                                 {{item3.Rank==999&&key=='Rank'?'合计':item3[key]}}
                             </td>
                         </tr>

+ 1 - 1
src/views/dataEntry_manage/thirdBase/zzExchangeData.vue

@@ -25,7 +25,7 @@
                 <table width="auto">
                     <thead class="border-head">
                         <tr>
-                            <td v-for="val in labelArr" :key="val">
+                            <td v-for="(val,index) in labelArr" :key="`${val}_${index}`">
                                 {{ val }}
                             </td>
                         </tr>

+ 2 - 3
src/views/datasheet_manage/components/CustomTable.vue

@@ -240,7 +240,7 @@
               <!-- 数据列 -->
               <td 
                 v-for="(data, data_index) in edb.Data"
-                :key="`${edb.EdbInfoId}_${data_index}`"
+                :key="`${edb.EdbInfoId}_${rowHeader[data_index]}_${columnHeader[edb_index]}`"
                 :data-rindex="rowHeader[data_index]"
                 :data-cindex="columnHeader[edb_index]"
                 :class="([2,3].includes(data.DataType)&&data.ShowValue)?'insert': ''"
@@ -271,7 +271,7 @@
               <!-- 文本列 -->
               <td
                 v-for="(column,column_index) in config.textRowData"
-                :key="`${edb_index}_${column_index+data_index}`"
+                :key="`${rowHeader[column_index+dateArr.length]}_${columnHeader[edb_index]}`"
                 :data-rindex="rowHeader[column_index+dateArr.length]"
                 :data-cindex="columnHeader[edb_index]"
                 :class="([2,3].includes(column[edb_index+1].DataType)&&column[edb_index+1].ShowValue)?'insert': ''"
@@ -362,7 +362,6 @@
           hide-required-asterisk
           label-width="80px"
           :model="editEdb"
-          :rules="dialogFormRules"
         >
           <el-form-item label="指标名称">
             <span>{{ editEdb.EdbName }}</span>

+ 1 - 1
src/views/datasheet_manage/components/SheetExcel.vue

@@ -13,7 +13,7 @@ export default {
     },
     sheetInfo: {
       type: Object,
-      default: {}
+      default: ()=>{}
     }
   },
   // watch: {

+ 2 - 3
src/views/datasheet_manage/sheetList.vue

@@ -10,9 +10,8 @@
     <div class="data-sheet-main" id="box">
       <div class="main-left left" id="left" v-show="!isSlideLeft">
         <div class="datasheet_top">
-          <el-button type="primary" @click="goAddSheetHandle(1)"
-            >添加Excel表格</el-button
-          >
+          <el-button type="primary" style="margin-right:20px" @click="goAddSheetHandle(1)"
+          >添加Excel表格</el-button >
 
           <el-dropdown @command="goAddSheetHandle">
             <el-button type="primary">

+ 1 - 2
src/views/futures_manage/chartEditor.vue

@@ -111,7 +111,6 @@
         class="move-btn resize"
         v-drag
         id="resize"
-        @mousemove="dynamicNode && resetNodeStyle(dynamicNode)"
       ></span>
       <span class="slide-icon slide-left" @click="isSlideLeft = !isSlideLeft">
 				<i class="el-icon-d-arrow-left"></i>
@@ -581,7 +580,7 @@ export default {
 		setProfitBack(obj) {
 			this.profitInfo = obj;
 			this.tableData.length && this.$refs.BarOptRef.dateList.length && this.getPreviewData({sort:null,dateList:this.$refs.BarOptRef.dateList});
-		}
+		},
 	},
   mounted() {
 		this.getMenu();

+ 1 - 1
src/views/futures_manage/commodityChartBase.vue

@@ -305,7 +305,7 @@ export default {
 			chart_title:'',//图表标题 双击标题修改时来存储最新值
 
 			isAddMyChart: false, //加入图库弹窗
-      add_chart_id: '', //要加入的图表
+      add_chart_id: 0, //要加入的图表
 			add_ids:[],//加入时已有的分类
 
 			/* 图表列表 */

+ 0 - 1
src/views/futures_manage/components/plateProfitDia.vue

@@ -28,7 +28,6 @@
             style="width: 90%"
             clearable
             placeholder="请选择期货"
-						@change="chooseFutures"
           />
 					<i
 						class="el-icon-error del-tag"

+ 1 - 1
src/views/mychart_manage/components/chartDetailDia.vue

@@ -208,7 +208,7 @@
           <div class="chart-show-cont">
             <div class="chartWrapper" id="chartWrapper">
               <template v-if="!chartInfo.WarnMsg">
-                <Chart :options="options" ref="chartRef" inset="true"/>
+                <Chart :options="options" ref="chartRef"/>
                 <!-- 上下限 -->
                 <div class="range-cont left" v-if="leftIndex != -1">
                   <el-input

+ 1 - 1
src/views/mychart_manage/components/chooseChart.vue

@@ -132,7 +132,7 @@ export default {
       chartPublicList: [],
       /* 加入弹窗 */
       isAddMyChart: false,
-      add_chart_id: '', //要加入的图表
+      add_chart_id: 0, //要加入的图表
       add_ids: [], //已加入的分类id
       isHaveAdd: false,
 

+ 8 - 7
src/views/mychart_manage/index.vue

@@ -183,7 +183,7 @@
             <el-col
               :span="6"
               v-for="chart in chartList"
-              :key="chart"
+              :key="chart.ChartInfoId"
               style="margin-bottom: 20px; padding-right: 20px"
             >
               <el-card class="public-chart-item">
@@ -324,7 +324,7 @@ export default {
       isSlideLeft: false, //收起分类
       search_txt: '',
       searchOptions: [],
-      select_classify: '',
+      select_classify: 0,
       classifyList: [],
       total: 0,
       page_no: 1,
@@ -375,7 +375,8 @@ export default {
 
       publicClassifyList: [],//公共分类
       ispublic: '',//选中的是公共还是own
-      select_classify_userid: '',//选中图表的创建人id
+      select_classify_userid: 0,//选中图表的创建人id
+      haveMove: false,
 
       chart_lang: 'ch',
     };
@@ -408,7 +409,7 @@ export default {
         let classify_arr = obj.MyChartClassifyId.split(',');
 
         this.page_no = 1;
-        this.select_classify = '';
+        this.select_classify = 0;
 
         if (classify_arr.length === 1) this.select_classify = Number(classify_arr[0]);
         this.getChartList();
@@ -437,14 +438,14 @@ export default {
           this.select_classify ||
           (this.classifyList.length
             ? this.classifyList[0].MyChartClassifyId
-            : '');
+            : 0);
         this.ispublic =  this.ispublic ||
           (this.classifyList.length
             ? this.classifyList[0].fromPublic
             : '');
         this.select_classify_userid = this.select_classify_userid ||  (this.classifyList.length
             ? this.classifyList[0].AdminId
-            : '');   
+            : 0);   
       });
     },
 
@@ -870,7 +871,7 @@ export default {
     }else {
     this.select_classify = sessionStorage.getItem('myChartOpt')
       ? Number(sessionStorage.getItem('myChartOpt'))
-      : '';
+      : 0;
     this.ispublic=sessionStorage.getItem('myChartIspublic')? Number(sessionStorage.getItem('myChartIspublic')): '';
     }
     this.getClassify();

+ 1 - 1
src/views/ppt_manage/mixins/pptMixins.js

@@ -40,7 +40,7 @@ export default {
 
       setEnName:false,
       // 传入的formItem所需内容
-      formItemArray:{},
+      formItemArray:[],
       addMyChartShow:false,//控制添加到 我的图库 弹窗是否显示
       addChartInfoId:0,//当前选择的图表InfoId,
       addChartClassifyIds:[],//当前选择的图表所在我的图库目录id

+ 1 - 1
src/views/ppt_manage/newVersion/components/formatPage/mixins.js

@@ -26,7 +26,7 @@ export default {
             },
         },
         choosedId:{//当前选中的页面id
-            type:Number
+            type:Number|String
         },
         type: { //edit or show
             type: String,

+ 10 - 10
src/views/ppt_manage/newVersion/pptCatalog.vue

@@ -36,7 +36,7 @@
         </el-tabs>
 
         <!-- 公共 -->
-        <div class="public-ppt" v-show="default_tab === 3">
+        <div class="public-ppt" v-show="default_tab === '3'">
           <!-- <h3>公共PPT <span @click="listExpand=!listExpand">{{listExpand?'收起':'展开'}} <i :class="listExpand?'el-icon-arrow-up':'el-icon-arrow-down'"></i></span></h3> -->
           <div class="ppt-list">
             <el-tree
@@ -71,7 +71,7 @@
         </div>
 
         <!-- 我的 -->
-        <div class="private-ppt" v-show="default_tab === 1">
+        <div class="private-ppt" v-show="default_tab === '1'">
           <!-- <h3>我的PPT</h3> -->
           <div class="ppt-list">
             <el-tree
@@ -140,7 +140,7 @@
         </div>
 
         <!-- 共享 -->
-        <div class="shared-ppt" v-show="default_tab === 2">
+        <div class="shared-ppt" v-show="default_tab === '2'">
           <div class="ppt-list">
             <el-tree
               ref="sharedTree"
@@ -366,11 +366,11 @@ export default {
       mergePptShow:false,//合并ppt弹窗
       /* selectCatalogId:0,//选择的目录 */
 
-      default_tab: 1,
+      default_tab: '1',
       panelTabs: [
-        { label: '我的PPT', key: 1 },
-        { label: '共享PPT', key: 2 },
-        { label: '公共PPT', key: 3 },
+        { label: '我的PPT', key: '1' },
+        { label: '共享PPT', key: '2' },
+        { label: '公共PPT', key: '3' },
       ],
 
       sharedList: [],//共享目录
@@ -394,7 +394,7 @@ export default {
           }
         })
       })
-      this.default_tab = 3;
+      this.default_tab = '3';
       //选中该节点
       this.$refs.publicTree.setCurrentKey('ppt'+newVal)
       //展开该节点的父节点...
@@ -454,7 +454,7 @@ export default {
             //更新目录列表
             await this.getCatalogsList()
             //切换到"我的PPT",展开选择的目录,选中复制的PPT
-            this.default_tab = 1
+            this.default_tab = '1'
             this.$nextTick(()=>{
               const {PptId} = res.Data||{}
               this.$refs.privateTree.setCurrentKey('ppt'+PptId)
@@ -1096,7 +1096,7 @@ export default {
       this.treeName='private'
       this.changeModel('ppt',pptItem)
       this.mergePptShow = false
-      this.default_tab=1
+      this.default_tab='1'
     },
     //合并PPT成功后,PPT页数和图表数校验
     handleIsLegal(isLegalObj){

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

@@ -36,7 +36,7 @@
         </el-tabs>
 
         <!-- 公共 -->
-        <div class="public-ppt" v-show="default_tab === 3">
+        <div class="public-ppt" v-show="default_tab === '3'">
           <div class="ppt-list">
             <el-tree
               ref="publicTree"
@@ -69,7 +69,7 @@
         </div>
 
         <!-- 我的 -->
-        <div class="private-ppt" v-show="default_tab === 1">
+        <div class="private-ppt" v-show="default_tab === '1'">
           <div class="ppt-list">
             <el-tree
               ref="privateTree"
@@ -136,7 +136,7 @@
         </div>
 
         <!-- 共享 -->
-        <div class="shared-ppt" v-show="default_tab === 2">
+        <div class="shared-ppt" v-show="default_tab === '2'">
           <div class="ppt-list">
             <el-tree
               ref="sharedTree"
@@ -356,11 +356,11 @@ export default {
       mergePptShow:false,//合并ppt弹窗
       /* selectCatalogId:0,//选择的目录 */
 
-      default_tab: 1,
+      default_tab: '1',
       panelTabs: [
-        { label: '我的PPT', key: 1 },
-        { label: '共享PPT', key: 2 },
-        { label: '公共PPT', key: 3 },
+        { label: '我的PPT', key: '1' },
+        { label: '共享PPT', key: '2' },
+        { label: '公共PPT', key: '3' },
       ],
 
       sharedList: [],//共享目录
@@ -384,7 +384,7 @@ export default {
           }
         })
       })
-      this.default_tab = 3;
+      this.default_tab = '3';
       //选中该节点
       this.$refs.publicTree.setCurrentKey('ppt'+newVal)
       //展开该节点的父节点...
@@ -441,7 +441,7 @@ export default {
             //更新目录列表
             await this.getCatalogsList()
             //切换到"我的PPT",展开选择的目录,选中复制的PPT
-            this.default_tab = 1
+            this.default_tab = '1'
             this.$nextTick(()=>{
               const {PptId} = res.Data||{}
               this.$refs.privateTree.setCurrentKey('ppt'+PptId)
@@ -1017,7 +1017,7 @@ export default {
       this.treeName='private'
       this.changeModel('ppt',pptItem)
       this.mergePptShow = false
-      this.default_tab=1
+      this.default_tab='1'
     },
     //合并PPT成功后,PPT页数和图表数校验
     handleIsLegal(isLegalObj){

+ 1 - 1
src/views/ppt_manage/pptlist.vue

@@ -51,7 +51,7 @@
             prop="ModifyTime"
             label="更新时间"
             min-width="110"
-            :formatter="formatter"
+            :formatter="formatterColumn"
             align="center"
           ></el-table-column>
           <el-table-column

+ 1 - 0
src/views/predictEdb_manage/components/operationDialog.vue

@@ -423,6 +423,7 @@ export default {
 				},
 			],
 			loading:false,
+			tableData: [],
 			
 			search_have_more: false,
 			search_page: 1,

+ 9 - 9
src/views/predictEdb_manage/predictEdb.vue

@@ -235,7 +235,7 @@
 		width="950px"
 		v-dialogDrag>
 			<div class="dialog-computed-header">
-				<el-radio-group v-model="computed_source" size="medium" @change="computed_type = ''">
+				<el-radio-group v-model="computed_source" size="medium" @change="computed_type = 0">
 					<el-radio-button :label="1">常规计算</el-radio-button>
 					<el-radio-button :label="2">批量计算</el-radio-button>
 				</el-radio-group>
@@ -293,7 +293,7 @@
 			:title="computedTit"
 			:calulateForm="calulateForm"
 			:calulateList="calulateList"
-			@cancel="computed_type=''"
+			@cancel="computed_type=0"
 			@addCallBack="addComputedCallBack"
 			@openPrev="isOpenComputed=true"
 			@lookHistory="id => {isLookHistory=true;lookEdbId=id;}"
@@ -305,7 +305,7 @@
 			:isOperation="[42,32,33,39,43,44,45,46,49,54,55,64,65,66,69,70].includes(computed_type) && computed_source===1"
 			:type="computed_type"
 			:operationForm="operationForm"
-			@cancel="computed_type=''"
+			@cancel="computed_type=0"
 			@addCallBack="addComputedCallBack"
 			@openPrev="isOpenComputed=true"
 			@lookHistory="id => {isLookHistory=true;lookEdbId=id;}"
@@ -324,7 +324,7 @@
 			:isBatchComputed="[32,33,39,43,44,45,42,64,65,66].includes(computed_type) && computed_source===2"
 			:type="computed_type"
 			edbSource="predict"
-			@cancel="computed_type=''"
+			@cancel="computed_type=0"
 			@addCallBack="addComputedCallBack"
 			@openPrev="isOpenComputed=true"
 			@lookHistory="id => {isLookHistory=true;lookEdbId=id;}"
@@ -336,7 +336,7 @@
 			:isShow="computed_type === 'joint'"
 			:params="operationForm"
 			:isPredict="true"
-			@cancel="computed_type=''"
+			@cancel="computed_type=0"
 			@addCallBack="addComputedCallBack"
 			@openPrev="isOpenComputed=true"
 		/>
@@ -347,7 +347,7 @@
 			:type="50"
 			:operationForm="operationForm"
 			:isPredict="true"
-			@cancel="computed_type=''"
+			@cancel="computed_type=0"
 			@addCallBack="addComputedCallBack"
 			@openPrev="isOpenComputed=true"
 		/>
@@ -358,7 +358,7 @@
 			:type="computed_type"
 			:isPredict="true"
 			:operationForm="operationForm"
-			@cancel="computed_type=''"
+			@cancel="computed_type=0"
 			@addCallBack="addComputedCallBack"
 			@openPrev="isOpenComputed=true"
 		/>
@@ -478,7 +478,7 @@ export default {
 			calulateForm:{},
 			operationForm:{},
 			calulateList:[],
-			computed_type:'',//打开弹窗的类型
+			computed_type:0,//打开弹窗的类型
 
 			tips: new Map([
 				[31,formulaTip.get(4)],
@@ -1101,7 +1101,7 @@ export default {
 
 		/* 新增计算指标回调 */
 		addComputedCallBack(type, params) {
-			this.computed_type = '';
+			this.computed_type = 0;
 			this.computed_source = 1;
 			type === 'add' ? this.getTreeData(params) : this.getTreeData();
 			if(type === 'edit') {

+ 0 - 933
src/views/report_manage/addreport.vue

@@ -1,933 +0,0 @@
-<template>
-  <div id="addreport">
-    <div id="leftfroala">
-      <froala
-        id="froala-editor"
-        ref="froalaEditor"
-        :tag="'textarea'"
-        :config="froalaConfig"
-        v-model="aeForm.content"
-      ></froala>
-    </div>
-    <div id="rightitems">
-      <div
-        style="text-align: right; padding: 0px 0 15px 0; box-sizing: border-box"
-      >
-        <div v-show="lastsavetime" style="color: #666; margin-bottom: 15px">
-          最近保存时间:{{ lastsavetime }}
-        </div>
-        <el-button
-          type="primary"
-          size="medium"
-          plain
-          @click.native="clickreportadd('yl')"
-          >预览</el-button
-        >
-        <el-button
-          type="primary"
-          size="medium"
-          plain
-          @click.native="clickreportadd('cg')"
-          >存草稿</el-button
-        >
-        <el-button
-          type="primary"
-          size="medium"
-          @click.native="clickreportadd('fb')"
-          :loading="isPublishloading"
-          >发布</el-button
-        >
-      </div>
-      <div
-        style="
-          margin: 0px 0 0 20px;
-          padding: 10px 20px;
-          box-sizing: border-box;
-          background: #fff;
-          border: 1px solid #3464e0;
-        "
-      >
-        <div id="tabs">
-          <p
-            @click="tabsactive = '基础信息'"
-            :class="{ active: tabsactive == '基础信息' ? true : false }"
-          >
-            基础信息
-          </p>
-          <p
-            @click="tabsactive = '图表插入'"
-            :class="{ active: tabsactive == '图表插入' ? true : false }"
-          >
-            图表插入
-          </p>
-        </div>
-        <div
-          v-if="tabsactive == '基础信息'"
-          style="height: calc(100vh - 280px); overflow-y: auto"
-        >
-          <el-form
-            :model="aeForm"
-            :rules="aerules"
-            ref="aeForm"
-            label-position="right"
-            label-width="90px"
-            class="demo-aeForm"
-            id="login-container"
-            @submit.native.prevent
-          >
-            <el-form-item prop="add_type" label="新增方式">
-              <el-select
-                v-model="aeForm.add_type"
-                @change="userclassidreportdetail"
-                placeholder="请选择"
-                size="medium"
-                style="width: 270px"
-              >
-                <el-option label="新增报告" :value="1"></el-option>
-                <el-option label="继承报告" :value="2"></el-option>
-              </el-select>
-            </el-form-item>
-            <el-form-item prop="classifynameArr" label="分类">
-              <el-cascader
-                @change="userclassidreportdetail"
-                ref="cascader"
-                :options="optionsArr"
-                v-model="aeForm.classifynameArr"
-                placeholder="类型筛选"
-                size="medium"
-                style="width: 270px"
-              ></el-cascader>
-            </el-form-item>
-            <el-form-item prop="title" label="标题">
-              <el-input
-                type="textarea"
-                :rows="2"
-                placeholder="请输入"
-                v-model="aeForm.title"
-                size="medium"
-              ></el-input>
-            </el-form-item>
-            <el-form-item label="摘要">
-              <el-input
-                type="textarea"
-                :rows="2"
-                placeholder="请输入"
-                v-model="aeForm.abstract"
-                size="medium"
-              ></el-input>
-            </el-form-item>
-            <el-form-item label="作者">
-              <el-select
-                v-model="aeForm.author"
-                multiple
-                placeholder="请选择"
-                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="频度">
-              <el-select
-                v-model="aeForm.frequency"
-                placeholder="请选择"
-                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-select>
-            </el-form-item>
-            <el-form-item label="创建时间">
-              <el-date-picker
-                v-model="aeForm.create_time"
-                type="date"
-                value-format="yyyy-MM-dd"
-                placeholder="选择日期"
-                size="medium"
-                :clearable="false"
-                style="width: 270px"
-              ></el-date-picker>
-            </el-form-item>
-          </el-form>
-        </div>
-        <div v-if="tabsactive == '图表插入'">
-          <el-input
-            placeholder="标题/子标题/作者"
-            v-model="key_word"
-            size="medium"
-            prefix-icon="el-icon-search"
-            @input="getreportlist(key_word)"
-          >
-          </el-input>
-          <div
-            id="reportwin"
-            style="
-              height: calc(100vh - 320px);
-              overflow-x: hidden;
-              overflow-y: auto;
-            "
-          >
-            <div
-              v-for="(item, index) in newreportlist"
-              :key="index"
-              class="liststy"
-            >
-              <p class="color_primary">{{ item.element__title }}</p>
-              <img
-                :src="item.image"
-                :id="'listnode' + index"
-                @click="insertHtml(item)"
-              />
-            </div>
-          </div>
-        </div>
-      </div>
-    </div>
-  </div>
-</template>
-
-<script>
-import {
-  autosave,
-  reportadd,
-  reportedit,
-  classifylist,
-  classifyIdDetail,
-  reportpublish,
-  reportauthor,
-  getDraft,
-} from "@/api/api.js";
-import http from "@/api/http.js";
-import VueFroala from "vue-froala-wysiwyg";
-import urlSlug from "url-slug";
-import mixinMsg from "./mixins/messagePush";
-
-export default {
-  mixins: [mixinMsg],
-  data() {
-    var that = this;
-    return {
-      tabsactive: "基础信息",
-      optionsArr: [],
-      key_word: "",
-      originreportlist: [],
-      newreportlist: [],
-      authorlist: [],
-      aeForm: {
-        add_type: 1,
-        classify_name: 1,
-        classifynameArr: [],
-        title: "",
-        abstract: "",
-        author: ["FICC团队"],
-        frequency: "日度",
-        create_time: http.dateFormatter(new Date(), false).replace(/\./g, "-"),
-        content: "",
-      },
-      aerules: {
-        add_type: [
-          {
-            required: true,
-            message: "",
-            trigger: "blur",
-          },
-        ],
-        classifynameArr: [
-          {
-            required: true,
-            message: "",
-            trigger: "blur",
-          },
-        ],
-        title: [
-          {
-            required: true,
-            message: "请输入",
-            trigger: "blur",
-          },
-        ],
-      },
-      editor: null,
-      lastEditRange: null,
-      report_draft_id: 0,
-      froalaConfig: {
-        //More -> https://www.froala.com/wysiwyg-editor/docs/options
-        // toolbarButtons: ['undo', 'redo', 'clearFormatting', '|', 'bold', 'italic', 'underline','strikeThrough','|', 'fontFamily', 'fontSize', 'color', '|','paragraphFormat', 'align', 'formatOL', 'formatUL', 'outdent', 'indent', 'quote', '-', 'insertLink', 'insertImage', 'insertVideo', 'embedly', 'insertFile', 'insertTable', '|', 'emoticons', 'specialCharacters', 'insertHR', 'selectAll', '|', 'print', 'spellChecker', 'help', '|', 'fullscreen'],//['fullscreen', 'bold', 'italic', 'underline', 'strikeThrough', 'subscript', 'superscript', '|', 'fontFamily', 'fontSize', 'color', 'inlineStyle', 'paragraphStyle', '|', 'paragraphFormat', 'align', 'formatOL', 'formatUL', 'outdent', 'indent', 'quote', '-', 'insertLink', 'insertImage', 'insertVideo', 'embedly', 'insertFile', 'insertTable', '|', 'emoticons', 'specialCharacters', 'insertHR', 'selectAll', 'clearFormatting', '|', 'print', 'spellChecker', 'help', 'html', '|', 'undo', 'redo'],//显示可操作项
-        toolbarButtons: [
-          "insertImage",
-          "insertVideo",
-          "embedly",
-          "insertFile",
-          "textColor",
-          "bold",
-          "italic",
-          "underline",
-          "strikeThrough",
-          "subscript",
-          "superscript",
-          "fontFamily",
-          "fontSize",
-          "color",
-          "inlineClass",
-          "inlineStyle",
-          "paragraphStyle",
-          "lineHeight",
-          "paragraphFormat",
-          "align",
-          "formatOL",
-          "formatUL",
-          "outdent",
-          "indent",
-          "quote",
-          "insertTable",
-          "emoticons",
-          "fontAwesome",
-          "specialCharacters",
-          "insertHR",
-          "selectAll",
-          "clearFormatting",
-          "html",
-          "undo",
-          "redo",
-        ],
-        height: screen.height - 390,
-        fontSize: ["12", "14", "16", "18", "20", "24", "28", "32", "36", "40"],
-        fontSizeDefaultSelection: "16",
-        theme: "dark", //主题
-        placeholderText: "请输入内容",
-        language: "zh_cn", //国际化
-        imageUploadURL: process.env.VUE_APP_API_ROOT + "/report/uploadImg", //上传url
-        videoUploadURL: process.env.VUE_APP_API_ROOT + "/report/uploadImg", //上传url
-        fileUploadURL: process.env.VUE_APP_API_ROOT + "/report/uploadImg", //上传url 更多上传介绍 请访问https://www.froala.com/wysiwyg-editor/docs/options
-        imageDefaultWidth: false,
-        // imageEditButtons:['imageAlign', 'imageCaption', 'imageRemove', '|', 'imageLink', 'linkOpen', 'linkEdit', 'linkRemove', '-', 'imageDisplay', 'imageStyle', 'imageAlt', 'imageSize'],
-        quickInsertButtons: ["image", "table", "ul", "ol", "hr"], //快速插入项
-        toolbarVisibleWithoutSelection: true, //是否开启 不选中模式
-        // disableRightClick:true,//是否屏蔽右击
-        // colorsHEXInput:false,//关闭16进制色值
-        toolbarSticky: false, //操作栏是否自动吸顶
-        // zIndex:99999,
-        saveInterval: 0,
-        /* 				saveParam: 'content',
-			saveURL: process.env.VUE_APP_API_ROOT+'/report/saveReportContent',
-			saveMethod: 'POST',
-			saveParams: {}, */
-        events: {
-          // 'froalaEditor.initialized':function(){
-          //   console.log('initialized', this);
-          // },
-          //this.editor 定义在vue data 中
-          initialized: function () {
-            // this.editor = editor;
-            that.editor = this;
-            // that.editor.html.set(that.value);
-            // that.setHtml()
-          },
-          keyup: function (e, editor) {
-            //添加事件,在每次按键按下时,都记录一下最后停留位置
-            that.$nextTick(function () {
-              that.lastEditRange = getSelection().getRangeAt(0);
-            });
-          },
-          click: function (e, editor) {
-            //添加事件,在每次鼠标点击时,都记录一下最后停留位置
-            that.$nextTick(function () {
-              that.lastEditRange = getSelection().getRangeAt(0);
-            });
-          },
-          /* 					'save.before': function () {
-					// that.froalaConfig.saveParams.report_draft_id=that.report_draft_id;
-					// that.froalaConfig.saveParams.state=1;
-					// that.froalaConfig.saveParams.classify_id_first=that.aeForm.classifynameArr.length>0?JSON.parse(that.aeForm.classifynameArr[0]).v:'';
-					// that.froalaConfig.saveParams.classify_name_first=that.aeForm.classifynameArr.length>0?JSON.parse(that.aeForm.classifynameArr[0]).l:'';
-					// that.froalaConfig.saveParams.classify_id_second=that.aeForm.classifynameArr.length==2?JSON.parse(that.aeForm.classifynameArr[1]).v:'';
-					// that.froalaConfig.saveParams.classify_name_second=that.aeForm.classifynameArr.length==2?JSON.parse(that.aeForm.classifynameArr[1]).l:'';
-					// that.froalaConfig.saveParams.title=that.aeForm.title;
-					// that.froalaConfig.saveParams.abstract=that.aeForm.abstract;
-					// that.froalaConfig.saveParams.author=that.aeForm.author.length>0?that.aeForm.author.join(','):'';
-					// that.froalaConfig.saveParams.frequency=that.aeForm.frequency;
-					that.froalaConfig.saveParams.ReportId=that.report_draft_id;
-					console.log( that.froalaConfig.saveParams );
-					
-					// $('iframe').each(function(k,i){
-					// 	var h = '',elementID;
-					// 	// let tableheight;
-					// 	try {
-					// 		h = $(i)[0].contentWindow.location.href;
-					// 		// tableheight =$(i)[0].contentWindow.raw[0].table.length *30 +100;
-					// 		console.log("start get location_href")
-					// 		console.log(h)
-					// 		console.log("end get location_href")
-					// 	} catch (err) {
-					// 		h = $(i).attr('src');
-					// 		// tableheight = 350;
-					// 		console.log("start get location_href fail ");
-					// 		console.log(h);
-					// 		console.log("end get location_href fail ");
-					// 	}
-					// 	elementID = h.split('/')[4];
-					// 	// $(i).attr('height', tableheight);
-					// 	if($(i).attr('src') !== h && h!==''){
-					// 		$(i).unbind('load');
-					// 		$(i).on('load', function(e){
-					// 			console.log(1);
-					// 		});
-					// 		let newSrc=$(i)[0].contentWindow.location.href;
-					// 		console.log("start newSrc ");
-					// 		console.log(newSrc);
-					// 		console.log("end newSrc ");
-					// 		$(i).attr('src', newSrc);
-					// 	}
-					// });
-				},
-				'save.after': function (res) {
-					res=JSON.parse(res);
-					if( res.Ret==200 ){
-						that.report_id=res.Data.ReportId;
-						that.lastsavetime=http.dateFormatter(new Date(),true);
-					}
-				} */
-        },
-        charCounterCount: false,
-        reportloadding: false,
-        lastsavetime: "",
-        isAddEnter: false, //是否已经添加过
-        timer: null,
-        ischange: false,
-        isPublishloading: false,
-      },
-    };
-  },
-  mounted() {
-    // this.getDrafts();
-    this.getclassifylist();
-    this.getreportlist("");
-    this.getreportauthor();
-    // $("#rightitems").css({minHeight:screen.height});
-    this.timer = setInterval(() => {
-      this.autoSave();
-    }, 6000);
-  },
-  destroyed() {
-    if (this.timer) {
-      clearInterval(this.timer);
-    }
-  },
-  updated() {
-    $("#leftfroala").find("p").css({ fontSize: "16px" });
-    $("#leftfroala").find("p strong span").css({ fontSize: "16px" });
-    $("#leftfroala")
-      .find(".fr-placeholder")
-      .css({ fontSize: "16px", lineHeight: "25.6px" });
-  },
-  methods: {
-    // 每十秒自动保存
-    autoSave() {
-      console.log(this.ischange);
-      if (this.report_draft_id) {
-        $("iframe").each(function (k, i) {
-          var h = "",
-            elementID;
-          try {
-            h = $(i)[0].contentWindow.location.href;
-            console.log(h);
-          } catch (err) {
-            h = $(i).attr("src");
-            console.log(h);
-          }
-          elementID = h.split("/")[4];
-          if ($(i).attr("src") !== h && elementID) {
-            $(i).unbind("load");
-            $(i).on("load", function (e) {
-              console.log(1);
-            });
-            let newSrc = $(i)[0].contentWindow.location.href;
-            // console.log(newSrc);
-            $(i).attr("src", newSrc);
-          }
-        });
-        autosave({
-          ReportId: Number(this.report_draft_id),
-          Content: $(".fr-element").html(),
-          NoChange: this.ischange ? 0 : 1,
-        }).then((res) => {
-          if (res.Ret === 200) {
-            this.report_id = res.Data.ReportId;
-            this.lastsavetime = http.dateFormatter(new Date(), true);
-          }
-        });
-        this.ischange = false;
-      }
-    },
-    getDrafts() {
-      getDraft({}).then((res) => {
-        if (res.Ret == 200) {
-          this.report_draft_id = res.Data.Id;
-          this.aeForm = {
-            classifynameArr:
-              res.Data.ClassifyIdSecond && res.Data.ClassifyNameSecond
-                ? [
-                    JSON.stringify({
-                      l: res.Data.ClassifyNameFirst,
-                      v: parseInt(res.Data.ClassifyIdFirst),
-                    }),
-                    JSON.stringify({
-                      l: res.Data.ClassifyNameSecond,
-                      v: parseInt(res.Data.ClassifyIdSecond),
-                    }),
-                  ]
-                : [
-                    JSON.stringify({
-                      l: res.Data.ClassifyNameFirst,
-                      v: parseInt(res.Data.ClassifyIdFirst),
-                    }),
-                  ],
-            title: res.Data.Title,
-            abstract: res.Data.Abstract,
-            author: res.Data.Author ? res.Data.Author.split(",") : "",
-            frequency: res.Data.Frequency,
-            content: res.Data.Content,
-          };
-        }
-      });
-    },
-    getreportauthor() {
-      reportauthor({}).then((res) => {
-        if (res.Ret == 200) {
-          this.authorlist = res.Data.List || [];
-        }
-      });
-    },
-    userclassidreportdetail() {
-      if (this.aeForm.add_type == 1) {
-        // if( (!this.aeForm.title)&&this.aeForm.classifynameArr.length==2 ){
-        if (this.aeForm.classifynameArr.length == 2) {
-          this.aeForm.title = JSON.parse(this.aeForm.classifynameArr[1]).l;
-        }
-        return false;
-      }
-      if (this.aeForm.classifynameArr.length == 0) {
-        return false;
-      }
-      console.log(this.aeForm.classifynameArr);
-      let params = {
-        ClassifyIdFirst: JSON.parse(this.aeForm.classifynameArr[0]).v,
-      };
-      if (this.aeForm.classifynameArr.length == 2) {
-        params.ClassifyIdSecond = JSON.parse(this.aeForm.classifynameArr[1]).v;
-      } else {
-        params.ClassifyIdSecond = 0;
-      }
-      classifyIdDetail(params).then((res) => {
-        if (res.Ret == 200) {
-          if (res.Data == null) {
-            this.$message.error("此分类暂无报告");
-            return false;
-          }
-          let obj = JSON.parse(JSON.stringify(this.aeForm.classifynameArr));
-          this.aeForm = {
-            add_type: 2,
-            classify_name: 1,
-            classifynameArr: obj,
-            title: res.Data.Title,
-            abstract: res.Data.Abstract,
-            author: res.Data.Author ? res.Data.Author.split(",") : "",
-            frequency: res.Data.Frequency,
-            create_time:
-              this.aeForm.add_type == 2
-                ? http.dateFormatter(new Date(), false)
-                : res.Data.CreateTime,
-            content: res.Data.Content,
-          };
-        }
-      });
-    },
-    clickreportadd(tp) {
-      if (
-        !this.aeForm.classifynameArr ||
-        this.aeForm.classifynameArr.length == 0
-      ) {
-        this.$message.error("请选择分类");
-        return false;
-      }
-      if (!this.aeForm.title) {
-        this.$message.error("请输入标题");
-        return false;
-      }
-      $("iframe").each(function (k, i) {
-        var h = "",
-          elementID;
-        try {
-          h = $(i)[0].contentWindow.location.href;
-          // console.log("start get location_href")
-          console.log(h);
-          // console.log("end get location_href")
-        } catch (err) {
-          h = $(i).attr("src");
-          // console.log("start get location_href fail ");
-          console.log(h);
-          // console.log("end get location_href fail ");
-        }
-        elementID = h.split("/")[4];
-        if ($(i).attr("src") !== h && elementID) {
-          $(i).unbind("load");
-          $(i).on("load", function (e) {
-            console.log(1);
-          });
-          let newSrc = $(i)[0].contentWindow.location.href;
-          // console.log("start newSrc ");
-          // console.log(newSrc);
-          // console.log("end newSrc ");
-          $(i).attr("src", newSrc);
-        }
-      });
-      // console.log("content end");
-      // console.log(this.aeForm.content)
-      let params = {
-        AddType: this.aeForm.add_type,
-        ClassifyIdFirst: JSON.parse(this.aeForm.classifynameArr[0]).v,
-        ClassifyNameFirst: JSON.parse(this.aeForm.classifynameArr[0]).l,
-        Title: this.aeForm.title,
-        Abstract: this.aeForm.abstract,
-        Author:
-          this.aeForm.author.length > 0 ? this.aeForm.author.join(",") : "",
-        Frequency: this.aeForm.frequency,
-        // content:this.aeForm.content,create_time:this.aeForm.create_time
-        Content: $(".fr-element").html(),
-        CreateTime: this.aeForm.create_time,
-        ReportVersion: 1,
-      };
-
-      if (this.aeForm.classifynameArr.length == 2) {
-        params.ClassifyIdSecond = JSON.parse(this.aeForm.classifynameArr[1]).v;
-        params.ClassifyNameSecond = JSON.parse(
-          this.aeForm.classifynameArr[1]
-        ).l;
-      }
-      params.State = 1;
-      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;
-      }
-      // 如果已经添加过就修改 否则新增
-      if (this.isAddEnter) {
-        let hasTel = JSON.parse(
-          this.aeForm.classifynameArr[0]
-        ).HasTeleconference; //是否是电话会 0没有 1有
-        let params2 = {
-          ReportId: Number(this.report_draft_id),
-          State: 1,
-          AddType: this.aeForm.add_type,
-          ClassifyIdFirst: JSON.parse(this.aeForm.classifynameArr[0]).v,
-          ClassifyNameFirst: JSON.parse(this.aeForm.classifynameArr[0]).l,
-          Title: this.aeForm.title,
-          Abstract: this.aeForm.abstract,
-          Author:
-            this.aeForm.author.length > 0 ? this.aeForm.author.join(",") : "",
-          Frequency: this.aeForm.frequency,
-          // content:this.aeForm.content,
-          Content: $(".fr-element").html(),
-          CreateTime: this.aeForm.create_time,
-        };
-        if (this.aeForm.classifynameArr.length == 2) {
-          params2.ClassifyIdSecond = JSON.parse(
-            this.aeForm.classifynameArr[1]
-          ).v;
-          params2.ClassifyNameSecond = JSON.parse(
-            this.aeForm.classifynameArr[1]
-          ).l;
-          hasTel = JSON.parse(this.aeForm.classifynameArr[1]).HasTeleconference;
-        }
-        if (tp == "fb") {
-          if (hasTel == 1) {
-            this.isMessagePost = false;
-            this.reporteditMsg(params2, tp);
-          } else {
-            this.$confirm("发布后,是否推送客户群?", "发布提示", {
-              confirmButtonText: "推送",
-              cancelButtonText: "不推送",
-              type: "warning",
-              distinguishCancelAndClose: true,
-              beforeClose: (action, instance, done) => {
-                if (action == "close") {
-                  //右上角
-                  this.isPublishloading = false;
-                } else if (action == "cancel") {
-                  //cancelButton
-                  this.isMessagePost = false;
-                  this.reporteditMsg(params2, tp);
-                } else {
-                  //confirmButton
-                  this.isMessagePost = true;
-                  this.reporteditMsg(params2, tp);
-                }
-                done();
-              },
-            });
-          }
-        } else {
-          this.reporteditMsg(params2, tp);
-        }
-        // reportedit(params2).then((res) => {
-        // 	if( res.Ret==200 ){
-        // 		this.$message.success( res.Msg );
-        // 		if( tp=='yl' ){
-        // 			// this.$router.push({name:'预览报告',query:{id:res.report_id}});
-        // 			let {href} = this.$router.resolve({name:'预览报告',query:{id:res.Data.ReportId}});
-        // 			window.open(href,'_blank');
-        // 		}else if( tp=='fb' ){
-        // 			this.publishreport(res.Data.ReportId);
-        // 		}else{
-        // 			// this.$router.push({path:'/reportlist'});
-        // 		}
-        // 	}
-        // });
-      } else {
-        let hasTel =
-          this.aeForm.classifynameArr.length == 2
-            ? JSON.parse(this.aeForm.classifynameArr[1]).HasTeleconference
-            : JSON.parse(this.aeForm.classifynameArr[0]).HasTeleconference;
-
-        if (tp == "fb") {
-          if (hasTel == 1) {
-            this.isMessagePost = false;
-            this.reportaddMsg(params, tp);
-          } else {
-            this.$confirm("发布后,是否推送客户群?", "发布提示", {
-              confirmButtonText: "推送",
-              cancelButtonText: "不推送",
-              type: "warning",
-              distinguishCancelAndClose: true,
-              beforeClose: (action, instance, done) => {
-                console.log(action, instance);
-                if (action === "close") {
-                  //右上角
-                  this.isPublishloading = false;
-                } else if (action === "cancel") {
-                  //cancelButton
-                  this.isMessagePost = false;
-                  this.reportaddMsg(params, tp);
-                } else {
-                  //confirmButton
-                  this.isMessagePost = true;
-                  this.reportaddMsg(params, tp);
-                }
-                done();
-              },
-            });
-          }
-        } else {
-          this.reportaddMsg(params, tp);
-        }
-        // reportadd(params).then((res) => {
-        // 	if( res.Ret==200 ){
-        // 		this.$message.success( res.Msg );
-        // 		this.report_draft_id=res.Data.ReportId;
-        // 		if( tp=='yl' ){
-        // 			// this.$router.push({name:'预览报告',query:{id:res.report_id}});
-        // 			let {href} = this.$router.resolve({name:'预览报告',query:{id:res.Data.ReportId}});
-        // 			window.open(href,'_blank');
-        // 		}else if( tp=='fb' ){
-        // 			this.publishreport(res.Data.ReportId);
-        // 		}else{
-        // 			// this.$router.push({path:'/reportlist'});
-        // 		}
-        // 		//已经添加过报告
-        // 		this.isAddEnter = true;
-        // 	}
-        // });
-      }
-    },
-    publishreport(id) {
-      //发布报告
-      reportpublish({ ReportIds: String(id) }).then((res) => {
-        if (res.Ret == 200) {
-          this.isPublishloading = false;
-          this.$router.push({ path: "/reportlist" });
-        }
-      });
-    },
-    insertHtml(item) {
-      //设置编辑器获取焦点
-      this.editor.events.focus();
-      // 获取选定对象
-      const selection = getSelection();
-      // 判断是否有最后光标对象存在
-      if (this.lastEditRange) {
-        // 存在最后光标对象,选定对象清除所有光标并添加最后光标还原之前的状态
-        selection.removeAllRanges();
-        selection.addRange(this.lastEditRange);
-      }
-      //插入内容
-      // this.editor.html.insert( `<img src=${emoji} >` );
-      this.$nextTick(function () {
-        // this.editor.html.insert( `<iframe src="http://vmp.hzinsights.com/element/${item.element_id}/${urlSlug(item.element__title_en, { separator: '_' })}/|||||/" key="${item.element_id}" width="100%" display="initial" position="relative" style="border-width:0px;height:400px;"></iframe>` );
-        let url = `https://vmp.hzinsights.com/element/${
-          item.element_id
-        }/${urlSlug(item.element__title_en, { separator: "_" })}/|||||/`;
-        this.editor.html.insert(
-          "<p style='text-align:left; margin-top:10px;'><iframe src='" +
-            url +
-            "' key='" +
-            item.element_id +
-            "' width='100%' height='350' display='initial' position='relative' border='none' style='border-width:0px; min-height:350px;'></iframe></p>"
-        );
-        // this.editor.html.insert( "<iframe src='"+url+"' key='"+item.element_id+"' width='100%' height='300' display='initial' position='relative' border='none' style='border-width:0px; height:400px;'></iframe>" );
-      });
-      this.lastEditRange = selection.getRangeAt(0);
-    },
-    getreportlist(word) {
-      let that = this;
-      if (that.reportloadding) {
-        return false;
-      }
-      that.reportloadding = true;
-      that.newreportlist = [];
-      $.ajax({
-        url: "https://vmp.hzinsights.com/api/v1/flow/images",
-        type: "get",
-        data: { search_keywords: word, size: 100 },
-        dataType: "json",
-        xhrFields: { withCredentials: false },
-        success: function (res) {
-          that.newreportlist = res.results || [];
-          that.reportloadding = false;
-        },
-        error: function (error) {},
-      });
-    },
-    getclassifylist() {
-      //获取分类列表
-      let params = {
-        CurrentIndex: 0,
-        PageSize: 1000,
-        KeyWord: "",
-        HideDayWeek: 1 /*不显示晨报/周报*/,
-      };
-      classifylist(params).then((res) => {
-        if (res.Ret == 200 && Array.isArray(res.Data.List)) {
-          console.info("line 455");
-          this.optionsArr = [];
-          res.Data.List.forEach((item, index) => {
-            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;
-            }
-            this.optionsArr.push(newitem);
-          });
-          console.log(this.optionsArr);
-        }
-      });
-    },
-  },
-  components: {},
-  watch: {
-    "aeForm.add_type"(to, from) {
-      if (from == 2 && to == 1) {
-        this.aeForm = {
-          add_type: 1,
-          classify_name: 1,
-          classifynameArr: [],
-          title: "",
-          abstract: "",
-          author: ["FICC团队"],
-          frequency: "日度",
-          create_time: http.dateFormatter(new Date(), false),
-          content: "",
-        };
-      }
-    },
-  },
-};
-</script>
-
-<style scoped lang="scss">
-#addreport {
-  display: flex;
-  overflow: hidden;
-  #leftfroala {
-    flex: 1;
-  }
-  #rightitems {
-    width: 500px;
-    flex: 500px 0 0;
-    overflow: hidden;
-    #tabs {
-      padding: 0px 40px;
-      box-sizing: border-box;
-      margin-bottom: 15px;
-      overflow: hidden;
-      > p {
-        display: inline-block;
-        float: left;
-        width: 50%;
-        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: 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;
-      }
-    }
-  }
-}
-</style>

+ 0 - 862
src/views/report_manage/editreport.vue

@@ -1,862 +0,0 @@
-<template>
-  <div id="editreport">
-    <div id="leftfroala">
-      <froala
-        id="froala-editor"
-        ref="froalaEditor"
-        :tag="'textarea'"
-        :config="froalaConfig"
-        v-model="aeForm.content"
-      ></froala>
-    </div>
-    <div id="rightitems">
-      <div
-        style="text-align: right; padding: 0px 0 15px 0; box-sizing: border-box"
-      >
-        <div v-show="lastsavetime" style="color: #666; margin-bottom: 15px">
-          最近保存时间:{{ lastsavetime }}
-        </div>
-        <el-button
-          type="primary"
-          size="medium"
-          plain
-          @click.native="clickreportadd('yl')"
-          >预览</el-button
-        >
-        <el-button
-          type="primary"
-          size="medium"
-          plain
-          @click.native="clickreportadd('cg')"
-          >存草稿</el-button
-        >
-        <el-button
-          type="primary"
-          size="medium"
-          @click.native="clickreportadd('fb')"
-          :loading="isPublishloading"
-          >发布</el-button
-        >
-      </div>
-      <div
-        style="
-          margin: 0px 0 0 20px;
-          padding: 10px 20px;
-          box-sizing: border-box;
-          background: #fff;
-          border: 1px solid #3464e0;
-        "
-      >
-        <div id="tabs">
-          <p
-            @click="tabsactive = '基础信息'"
-            :class="{ active: tabsactive == '基础信息' ? true : false }"
-          >
-            基础信息
-          </p>
-          <p
-            @click="tabsactive = '图表插入'"
-            :class="{ active: tabsactive == '图表插入' ? true : false }"
-          >
-            图表插入
-          </p>
-        </div>
-        <div
-          v-if="tabsactive == '基础信息'"
-          style="height: calc(100vh - 280px); overflow-y: auto"
-        >
-          <el-form
-            :model="aeForm"
-            :rules="aerules"
-            ref="aeForm"
-            label-position="right"
-            label-width="90px"
-            class="demo-aeForm"
-            id="login-container"
-            @submit.native.prevent
-          >
-            <el-form-item prop="add_type" label="新增方式">
-              <el-select
-                v-model="aeForm.add_type"
-                @change="userclassidreportdetail"
-                placeholder="请选择"
-                size="medium"
-                disabled
-                style="width: 270px"
-              >
-                <el-option label="新增报告" :value="1"></el-option>
-                <el-option label="继承报告" :value="2"></el-option>
-              </el-select>
-            </el-form-item>
-            <el-form-item prop="classifynameArr" label="分类">
-              <el-cascader
-                @change="userclassidreportdetail"
-                :options="optionsArr"
-                v-model="aeForm.classifynameArr"
-                placeholder="类型筛选"
-                size="medium"
-                style="width: 270px"
-              ></el-cascader>
-            </el-form-item>
-            <el-form-item prop="title" label="标题">
-              <el-input
-                type="textarea"
-                :rows="2"
-                placeholder="请输入"
-                v-model="aeForm.title"
-                size="medium"
-              ></el-input>
-            </el-form-item>
-            <el-form-item label="摘要">
-              <el-input
-                type="textarea"
-                :rows="2"
-                placeholder="请输入"
-                v-model="aeForm.abstract"
-                size="medium"
-              ></el-input>
-            </el-form-item>
-            <el-form-item label="作者">
-              <el-select
-                v-model="aeForm.author"
-                multiple
-                placeholder="请选择"
-                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="频度">
-              <el-select
-                v-model="aeForm.frequency"
-                placeholder="请选择"
-                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-select>
-            </el-form-item>
-            <el-form-item label="创建时间">
-              <el-date-picker
-                v-model="aeForm.create_time"
-                type="date"
-                value-format="yyyy-MM-dd"
-                placeholder="选择日期"
-                size="medium"
-                :clearable="false"
-                style="width: 270px"
-              ></el-date-picker>
-            </el-form-item>
-          </el-form>
-        </div>
-        <div v-if="tabsactive == '图表插入'">
-          <el-input
-            placeholder="标题/子标题/作者"
-            v-model="key_word"
-            size="medium"
-            prefix-icon="el-icon-search"
-            @input="getreportlist(key_word)"
-          >
-          </el-input>
-          <div
-            style="
-              height: calc(100vh - 320px);
-              overflow-x: hidden;
-              overflow-y: auto;
-            "
-          >
-            <div
-              v-for="(item, index) in newreportlist"
-              :key="index"
-              class="liststy"
-            >
-              <p class="color_primary">{{ item.element__title }}</p>
-              <img
-                :src="item.image"
-                :id="'listnode' + index"
-                @click="insertHtml(item)"
-              />
-            </div>
-          </div>
-        </div>
-        <!-- <div v-for="(item,index) in reportlist" :key="index" :id="'listnode'+index" @click="insethtml(index)" style="					width:100%; margin:20px 0; padding:20px; box-sizing:border-box; border:1px solid #eaeaea; border-radius:10px; position:relative; overflow:hidden;">
-					<p class="color_primary" style="text-align:center; font-size:16px; margin-bottom:10px;">{{item.element__title}}</p>
-					<img :src="item.image" style="width:100%; height:auto;" />
-				</div> -->
-      </div>
-    </div>
-  </div>
-</template>
-
-<script>
-import {
-  autosave,
-  reportdetail,
-  reportedit,
-  classifylist,
-  reportpublish,
-  reportauthor,
-  classifyIdDetail,
-} from "api/api.js";
-import VueFroala from "vue-froala-wysiwyg";
-import urlSlug from "url-slug";
-import http from "@/api/http.js";
-import mixinMsg from "./mixins/messagePush";
-
-export default {
-  mixins: [mixinMsg],
-  data() {
-    var that = this;
-    return {
-      report_id: this.$route.query.id,
-      tabsactive: "基础信息",
-      optionsArr: [],
-      key_word: "",
-      originreportlist: [],
-      newreportlist: [],
-      authorlist: [],
-      aeForm: {
-        add_type: 1,
-        classify_name: 1,
-        classifynameArr: [],
-        title: "",
-        abstract: "",
-        author: ["FICC团队"],
-        frequency: "日度",
-        create_time: http.dateFormatter(new Date(), false),
-        content: "",
-      },
-      aerules: {
-        add_type: [
-          {
-            required: true,
-            message: "",
-            trigger: "blur",
-          },
-        ],
-        classifynameArr: [
-          {
-            required: true,
-            message: "",
-            trigger: "blur",
-          },
-        ],
-        title: [
-          {
-            required: true,
-            message: "请输入",
-            trigger: "blur",
-          },
-        ],
-      },
-      editor: null,
-      lastEditRange: null,
-      froalaConfig: {
-        //More -> https://www.froala.com/wysiwyg-editor/docs/options
-        // toolbarButtons: ['undo', 'redo', 'clearFormatting', '|', 'bold', 'italic', 'underline','strikeThrough','|', 'fontFamily', 'fontSize', 'color', '|','paragraphFormat', 'align', 'formatOL', 'formatUL', 'outdent', 'indent', 'quote', '-', 'insertLink', 'insertImage', 'insertVideo', 'embedly', 'insertFile', 'insertTable', '|', 'emoticons', 'specialCharacters', 'insertHR', 'selectAll', '|', 'print', 'spellChecker', 'help', '|', 'fullscreen'],//['fullscreen', 'bold', 'italic', 'underline', 'strikeThrough', 'subscript', 'superscript', '|', 'fontFamily', 'fontSize', 'color', 'inlineStyle', 'paragraphStyle', '|', 'paragraphFormat', 'align', 'formatOL', 'formatUL', 'outdent', 'indent', 'quote', '-', 'insertLink', 'insertImage', 'insertVideo', 'embedly', 'insertFile', 'insertTable', '|', 'emoticons', 'specialCharacters', 'insertHR', 'selectAll', 'clearFormatting', '|', 'print', 'spellChecker', 'help', 'html', '|', 'undo', 'redo'],//显示可操作项
-        toolbarButtons: [
-          "insertImage",
-          "insertVideo",
-          "embedly",
-          "insertFile",
-          "textColor",
-          "bold",
-          "italic",
-          "underline",
-          "strikeThrough",
-          "subscript",
-          "superscript",
-          "fontFamily",
-          "fontSize",
-          "color",
-          "inlineClass",
-          "inlineStyle",
-          "paragraphStyle",
-          "lineHeight",
-          "paragraphFormat",
-          "align",
-          "formatOL",
-          "formatUL",
-          "outdent",
-          "indent",
-          "quote",
-          "insertTable",
-          "emoticons",
-          "fontAwesome",
-          "specialCharacters",
-          "insertHR",
-          "selectAll",
-          "clearFormatting",
-          "html",
-          "undo",
-          "redo",
-        ],
-        // attribution: false,
-        //     quickInsertTags: [],
-        imageDefaultWidth: false,
-        // imageResizeWithPercent:true,
-        //     imageMaxSize: 10 * 1024 * 1024,
-        //     imageAllowedTypes: ['jpeg', 'jpg', 'png', 'gif'],
-        imageInsertButtons: ["imageUpload", "imageByURL"],
-        height: screen.height - 390,
-        fontSizeDefaultSelection: "16",
-        fontSize: ["12", "14", "16", "18", "20", "24", "28", "32", "36", "40"],
-        theme: "dark", //主题
-        placeholderText: "请输入内容",
-        language: "zh_cn", //国际化
-        imageUploadURL: process.env.VUE_APP_API_ROOT + "/report/uploadImg", //上传url
-        imagePaste: true,
-        imagePasteProcess: true,
-        imageResize: true,
-        videoUploadURL: process.env.VUE_APP_API_ROOT + "/report/uploadImg", //上传url
-        fileUploadURL: process.env.VUE_APP_API_ROOT + "/report/uploadImg", //上传url 更多上传介绍 请访问https://www.froala.com/wysiwyg-editor/docs/options
-        toolbarSticky: false, //操作栏是否自动吸顶
-        imageEditButtons: [
-          "imageLink",
-          "imageAlign",
-          "imageInfo",
-          "imageRemove",
-        ],
-        quickInsertButtons: ["image", "table", "ul", "ol", "hr"], //快速插入项
-        toolbarVisibleWithoutSelection: true, //是否开启 不选中模式
-        saveInterval: 0,
-        /* saveParam: 'Content',
-				saveURL: process.env.VUE_APP_API_ROOT+'/report/saveReportContent',
-				saveMethod: 'POST',
-				saveParams: {}, */
-        events: {
-          initialized: function () {
-            //this.editor 定义在vue data 中
-            that.editor = this;
-          },
-          keyup: function (e, editor) {
-            //添加事件,在每次按键按下时,都记录一下最后停留位置
-            that.lastEditRange = getSelection().getRangeAt(0) || 0;
-          },
-          click: function (e, editor) {
-            //添加事件,在每次鼠标点击时,都记录一下最后停留位置
-            that.lastEditRange = getSelection().getRangeAt(0) || 0;
-          },
-          //内容改变事件
-          contentChanged: function () {
-            console.log("cont-change");
-            that.ischange = true;
-            that.lastEditRange = getSelection().getRangeAt(0) || 0;
-          },
-          /* 'save.before': function () {
-						that.froalaConfig.saveParams.ReportId=that.report_id;
-						
-						// $('iframe').each(function(k,i){
-						// 	var h = '',elementID;
-						// 	try {
-						// 		h = $(i)[0].contentWindow.location.href;
-						// 		console.log("start get location_href")
-						// 		console.log(h)
-						// 		console.log("end get location_href")
-						// 	} catch (err) {
-						// 		h = $(i).attr('src');
-						// 		console.log("start get location_href fail ");
-						// 		console.log(h);
-						// 		console.log("end get location_href fail ");
-						// 	}
-						// 	elementID = h.split('/')[4];
-						// 	if($(i).attr('src') !== h && h!==''){
-						// 		$(i).unbind('load');
-						// 		$(i).on('load', function(e){
-						// 			console.log(1);
-						// 		});
-						// 		let newSrc=$(i)[0].contentWindow.location.href;
-						// 		console.log("start newSrc ");
-						// 		console.log(newSrc);
-						// 		console.log("end newSrc ");
-						// 		$(i).attr('src', newSrc);
-						// 	}
-						// });
-						
-					},
-					'save.after': function (res) {
-						res=JSON.parse(res);
-						if( res.Ret==200 ){
-							that.report_id=res.Data.ReportId;
-							that.lastsavetime=http.dateFormatter(new Date(),true);
-						}
-					} */
-        },
-        charCounterCount: false,
-      },
-      reportloadding: false,
-      lastsavetime: "",
-      timer: null,
-      ischange: false,
-      isPublishloading: false,
-      ThsMsgIsSend: "", //是否推送过客群
-    };
-  },
-  mounted() {
-    this.getreportdetail();
-    this.getclassifylist();
-    this.getreportlist("");
-    this.getreportauthor();
-    // $("#rightitems").css({minHeight:screen.height});
-    this.timer = setInterval(() => {
-      this.autoSave();
-    }, 6000);
-  },
-  updated() {
-    $("#leftfroala").find("p").css({ fontSize: "16px" });
-  },
-  destroyed() {
-    if (this.timer) {
-      clearInterval(this.timer);
-    }
-  },
-  methods: {
-    // 每十秒自动保存
-    autoSave() {
-      console.log(this.ischange);
-      // if(this.ischange) {
-      $("iframe").each(function (k, i) {
-        var h = "",
-          elementID;
-        try {
-          h = $(i)[0].contentWindow.location.href;
-          // console.log("start get location_href")
-          console.log(h);
-          // console.log("end get location_href")
-        } catch (err) {
-          h = $(i).attr("src");
-          // console.log("start get location_href fail ");
-          console.log(h);
-          // console.log("end get location_href fail ");
-        }
-        elementID = h.split("/")[4];
-        if ($(i).attr("src") !== h && elementID) {
-          $(i).unbind("load");
-          $(i).on("load", function (e) {
-            console.log(1);
-          });
-          let newSrc = $(i)[0].contentWindow.location.href;
-          // console.log("start newSrc ");
-          // console.log(newSrc);
-          // console.log("end newSrc ");
-          $(i).attr("src", newSrc);
-        }
-      });
-      autosave({
-        ReportId: Number(this.$route.query.id),
-        Content: $(".fr-element").html(),
-        NoChange: this.ischange ? 0 : 1,
-      }).then((res) => {
-        if (res.Ret === 200) {
-          this.report_id = res.Data.ReportId;
-          this.lastsavetime = http.dateFormatter(new Date(), true);
-        }
-      });
-      this.ischange = false;
-      // }
-    },
-    userclassidreportdetail() {
-      if (this.aeForm.add_type == 1) {
-        if (this.aeForm.classifynameArr.length == 2) {
-          this.aeForm.title = JSON.parse(this.aeForm.classifynameArr[1]).l;
-        }
-        return false;
-      }
-      if (this.aeForm.classifynameArr.length == 0) {
-        return false;
-      }
-      console.log(this.aeForm.classifynameArr);
-      let params = {
-        ClassifyIdFirst: JSON.parse(this.aeForm.classifynameArr[0]).v,
-      };
-      if (this.aeForm.classifynameArr.length == 2) {
-        params.ClassifyIdSecond = JSON.parse(this.aeForm.classifynameArr[1]).v;
-      } else {
-        params.ClassifyIdSecond = 0;
-      }
-      classifyIdDetail(params).then((res) => {
-        if (res.Ret == 200) {
-          if (res.Data == null) {
-            this.$message.error("此分类暂无报告");
-            return false;
-          }
-          this.aeForm = {
-            add_type: 2,
-            classify_name: 1,
-            classifynameArr:
-              res.Data.ClassifyIdSecond && res.Data.ClassifyNameSecond
-                ? [
-                    JSON.stringify({
-                      l: res.Data.ClassifyNameFirst,
-                      v: res.Data.ClassifyIdFirst,
-                    }),
-                    JSON.stringify({
-                      l: res.Data.ClassifyNameSecond,
-                      v: res.Data.ClassifyIdSecond,
-                    }),
-                  ]
-                : [
-                    JSON.stringify({
-                      l: res.Data.ClassifyNameFirst,
-                      v: res.Data.ClassifyIdFirst,
-                    }),
-                  ],
-            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,
-          };
-        }
-      });
-    },
-    getreportauthor() {
-      reportauthor({}).then((res) => {
-        if (res.Ret == 200) {
-          this.authorlist = res.Data.List || [];
-        }
-      });
-    },
-    getreportdetail() {
-      reportdetail({ ReportId: parseInt(this.report_id) }).then((res) => {
-        if (res.Ret == 200) {
-          let data = res.Data;
-          this.aeForm = {
-            add_type: parseInt(data.AddType),
-            classify_name: 1,
-            classifynameArr:
-              data.ClassifyIdSecond && data.ClassifyNameSecond
-                ? [
-                    JSON.stringify({
-                      l: data.ClassifyNameFirst,
-                      v: parseInt(data.ClassifyIdFirst),
-                    }),
-                    JSON.stringify({
-                      l: data.ClassifyNameSecond,
-                      v: parseInt(data.ClassifyIdSecond),
-                    }),
-                  ]
-                : [
-                    JSON.stringify({
-                      l: data.ClassifyNameFirst,
-                      v: parseInt(data.ClassifyIdFirst),
-                    }),
-                  ],
-            title: data.Title,
-            abstract: data.Abstract,
-            author: data.Author ? data.Author.split(",") : "",
-            frequency: data.Frequency,
-            create_time: data.CreateTime,
-            content: data.Content,
-          };
-          this.ThsMsgIsSend = data.ThsMsgIsSend;
-        }
-      });
-    },
-    clickreportadd(tp) {
-      console.log(this.aeForm.classifynameArr);
-      if (
-        !this.aeForm.classifynameArr ||
-        this.aeForm.classifynameArr.length == 0
-      ) {
-        this.$message.error("请选择分类");
-        return false;
-      }
-      if (!this.aeForm.title) {
-        this.$message.error("请输入标题");
-        return false;
-      }
-      console.log("content start");
-      $("iframe").each(function (k, i) {
-        var h = "",
-          elementID;
-        try {
-          h = $(i)[0].contentWindow.location.href;
-          // console.log("start get location_href")
-          console.log(h);
-          // console.log("end get location_href")
-        } catch (err) {
-          h = $(i).attr("src");
-          // console.log("start get location_href fail ");
-          console.log(h);
-          // console.log("end get location_href fail ");
-        }
-        elementID = h.split("/")[4];
-        if ($(i).attr("src") !== h && elementID) {
-          $(i).unbind("load");
-          $(i).on("load", function (e) {
-            console.log(1);
-          });
-          let newSrc = $(i)[0].contentWindow.location.href;
-          // console.log("start newSrc ");
-          // console.log(newSrc);
-          // console.log("end newSrc ");
-          $(i).attr("src", newSrc);
-        }
-      });
-      console.log("content end");
-
-      let params = {
-        ReportId: parseInt(this.report_id),
-        AddType: this.aeForm.add_type,
-        ClassifyIdFirst: JSON.parse(this.aeForm.classifynameArr[0]).v,
-        ClassifyNameFirst: JSON.parse(this.aeForm.classifynameArr[0]).l,
-        Title: this.aeForm.title,
-        Abstract: this.aeForm.abstract,
-        Author:
-          this.aeForm.author.length > 0 ? this.aeForm.author.join(",") : "",
-        Frequency: this.aeForm.frequency,
-        // content:this.aeForm.content,create_time:this.aeForm.create_time
-        Content: $(".fr-element").html(),
-        CreateTime: this.aeForm.create_time,
-      };
-      if (this.aeForm.classifynameArr.length == 2) {
-        params.ClassifyIdSecond = JSON.parse(this.aeForm.classifynameArr[1]).v;
-        params.ClassifyNameSecond = JSON.parse(
-          this.aeForm.classifynameArr[1]
-        ).l;
-      }
-      params.State = 1;
-      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;
-        //判断是否要推送客群(含电话会的不推送)
-        let hasTel = 0;
-        if (this.aeForm.classifynameArr.length == 2) {
-          this.optionsArr.forEach((item) => {
-            item.children &&
-              item.children.forEach((childItem) => {
-                if (JSON.parse(item.value).v == params.ClassifyIdSecond) {
-                  hasTel = childItem.HasTeleconference;
-                }
-              });
-          });
-        } else {
-          this.optionsArr.forEach((item) => {
-            if (JSON.parse(item.value).v == params.ClassifyIdFirst) {
-              hasTel = item.HasTeleconference;
-            }
-          });
-        }
-        console.log(hasTel);
-        if (hasTel == 1 || this.ThsMsgIsSend == 1) {
-          this.isMessagePost = false;
-          this.reporteditMsg(params, tp);
-        } else {
-          this.$confirm("发布后,是否推送客户群?", "发布提示", {
-            confirmButtonText: "推送",
-            cancelButtonText: "不推送",
-            type: "warning",
-            distinguishCancelAndClose: true,
-            beforeClose: (action, instance, done) => {
-              if (action === "close") {
-                //右上角
-                this.isPublishloading = false;
-              } else if (action === "cancel") {
-                //cancelButton
-                this.isMessagePost = false;
-                this.reporteditMsg(params, tp);
-              } else {
-                //confirmButton
-                this.isMessagePost = true;
-                this.reporteditMsg(params, tp);
-              }
-              done();
-            },
-          });
-        }
-      } else {
-        this.reporteditMsg(params, tp);
-      }
-      // reportedit(params).then((res) => {
-      // 	if( res.Ret==200 ){
-      // 		this.$message.success( res.Msg );
-      // 		if( tp=='yl' ){
-      // 			// this.$router.push({name:'预览报告',query:{id:res.report_id}});
-      // 			let {href} = this.$router.resolve({name:'预览报告',query:{id:res.Data.ReportId}});
-      // 			window.open(href,'_blank');
-      // 		}else if( tp=='fb' ){
-      // 			this.publishreport(res.Data.ReportId);
-      // 		}else{
-      // 			// this.$router.push({path:'/reportlist'});
-      // 		}
-      // 	}
-      // });
-    },
-    publishreport(id) {
-      //发布报告
-      reportpublish({ ReportIds: String(id) }).then((res) => {
-        if (res.Ret == 200) {
-          this.isPublishloading = false;
-          this.$router.push({ path: "/reportlist" });
-        }
-      });
-    },
-    insertHtml(item) {
-      //设置编辑器获取焦点
-      this.editor.events.focus();
-      // 获取选定对象
-      const selection = getSelection();
-      // 判断是否有最后光标对象存在
-      if (this.lastEditRange) {
-        // 存在最后光标对象,选定对象清除所有光标并添加最后光标还原之前的状态
-        selection.removeAllRanges();
-        selection.addRange(this.lastEditRange);
-      }
-      //插入内容
-      // this.editor.html.insert( `<img src=${emoji} >` );
-      this.$nextTick(function () {
-        // this.editor.html.insert( `<p><iframe src="http://vmp.hzinsights.com/element/${item.element_id}/${urlSlug(item.element__title_en, { separator: '_' })}/|||||/" key="${item.element_id}" width="100%" display="initial" position="relative" style="border-width:0px;height:400px;"></iframe></p>` );
-        let url = `https://vmp.hzinsights.com/element/${
-          item.element_id
-        }/${urlSlug(item.element__title_en, { separator: "_" })}/|||||/`;
-        this.editor.html.insert(
-          "<p style='text-align:left; margin-top:10px;'><iframe src='" +
-            url +
-            "' key='" +
-            item.element_id +
-            "' width='100%' height='350' display='initial' position='relative' border='none' style='border-width:0px; min-height:350px;'></iframe></p>"
-        );
-        // this.editor.html.insert( "<iframe src='"+url+"' key='"+item.element_id+"' width='100%' height='300' display='initial' position='relative' border='none' style='border-width:0px; height:400px;'></iframe>" );
-      });
-      this.lastEditRange = selection.getRangeAt(0);
-    },
-    getreportlist(word) {
-      let that = this;
-      if (that.reportloadding) {
-        return false;
-      }
-      that.reportloadding = true;
-      that.newreportlist = [];
-      $.ajax({
-        url: "https://vmp.hzinsights.com/api/v1/flow/images",
-        type: "get",
-        data: { search_keywords: word, size: 100 },
-        dataType: "json",
-        xhrFields: { withCredentials: false },
-        success: function (res) {
-          that.newreportlist = res.results || [];
-          that.reportloadding = false;
-        },
-        error: function (error) {},
-      });
-    },
-    getclassifylist() {
-      //获取分类列表
-      let params = {
-        CurrentIndex: 0,
-        PageSize: 1000,
-        KeyWord: "",
-        HideDayWeek: 1 /*不显示晨报/周报*/,
-      };
-      classifylist(params).then((res) => {
-        if (res.Ret == 200 && Array.isArray(res.Data.List)) {
-          this.optionsArr = [];
-          res.Data.List.forEach((item, index) => {
-            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;
-            }
-            this.optionsArr.push(newitem);
-          });
-          console.log(this.optionsArr);
-        }
-      });
-    },
-  },
-  components: {},
-};
-</script>
-
-<style scoped lang="scss">
-#editreport {
-  display: flex;
-  overflow: hidden;
-  #leftfroala {
-    flex: 1;
-  }
-  #rightitems {
-    width: 500px;
-    flex: 500px 0 0;
-    overflow: hidden;
-    #tabs {
-      padding: 0px 40px;
-      box-sizing: border-box;
-      margin-bottom: 15px;
-      overflow: hidden;
-      > p {
-        display: inline-block;
-        float: left;
-        width: 50%;
-        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: 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;
-      }
-    }
-  }
-}
-</style>

+ 2 - 2
src/views/report_manage/everyday.vue

@@ -73,7 +73,7 @@
           prop="LastUpdateTime"
           label="更新时间"
           align="center"
-          :formatter="formatter"
+          :formatter="formatterColumn"
         >
         </el-table-column>
         <el-table-column label="发布状态" align="center">
@@ -305,7 +305,7 @@ export default {
       },
       listData: [], //表格数据
       varietyList: [], //全部分类
-      totals: "", //条数
+      totals: 0, //条数
       options: [
         {
           value: "0",

+ 4 - 1
src/views/report_manage/mixins/reportMixin.js

@@ -144,9 +144,12 @@ export default {
       sheetSearchObj: {},
       sheetSearchList: [],
 
+      isPublishloading: false,
+      lastsavetime: "",
+
       setEnName: false,
       // 传入的formItem所需内容
-      formItemArray: {},
+      formItemArray: [],
 
       search_page: 1,
       search_page_sizes: 20,

+ 0 - 2
src/views/report_manage/reportAuthor.vue

@@ -21,8 +21,6 @@
         style="box-shadow: 0px 3px 6px rgba(155, 170, 219, 0.2)"
         row-key="VersionCode"
         :tree-props="{ children: 'children', hasChildren: 'hasChildren' }"
-        :load="loadChildList"
-        @sort-change="sortChangeHandle"
         element-loading-text="加载中..."
         v-loading="tableLoading"
         lazy

+ 0 - 1
src/views/report_manage/reportEn/reportlist.vue

@@ -83,7 +83,6 @@
 				v-loading="listLoading"
 				element-loading-text="加载中..."
 				style="margin-top: 20px"
-				@sort-change="sortChangeHandle"
 			>
 				<el-table-column
 					v-for="item in tableColums"

+ 2 - 3
src/views/report_manage/reportlist.vue

@@ -172,13 +172,12 @@
               <span v-if="scope.row.State == '1'">未发布</span>
             </template>
           </el-table-column>
-          <!-- <el-table-column prop="publish_time" label="发布时间" min-width="110" sortable='custom' :formatter="formatter" align="center"></el-table-column> -->
           <el-table-column
             prop="PublishTime"
             label="发布时间"
             min-width="124"
             align="center"
-            :formatter="formatter"
+            :formatter="formatterColumn"
           ></el-table-column>
           <el-table-column
             prop="MsgSendTime"
@@ -195,7 +194,7 @@
             label="更新时间"
             min-width="124"
             align="center"
-            :formatter="formatter"
+            :formatter="formatterColumn"
           ></el-table-column>
           <el-table-column label="期数" align="center">
             <template slot-scope="scope">第{{ scope.row.Stage }}期</template>

+ 1 - 2
src/views/sandbox_manage/common/gragh.js

@@ -1,11 +1,10 @@
 import { Graph,Shape } from '@antv/x6';
-/* const { Graph,Shape } = X6 */
 import { bindKey,myEvents } from './events';
 import { configOpt } from './toolConfig';
 
 const { line } = configOpt;
 
-export const myGraph = (wrapper) => {
+export function myGraph (wrapper) {
 	const graph = new Graph({
 		container: document.getElementById(wrapper),
 		// width: $(window).width(),

+ 1 - 1
src/views/semantics_manage/semanticsPage.vue

@@ -198,7 +198,7 @@ import { formatArr } from './utils/index';
 import {semanticInterface} from '@/api/modules/semanticsApi.js';
 export default {
   mixins:[catalogMixin],
-  components:[/*draggable*/],
+  components:{/*draggable*/},
   data() {
     return {
       classifyForm:{},//分类信息

+ 9 - 1
src/views/semantics_manage/utils/config.js

@@ -46,7 +46,15 @@ const documentFile={
         Ispart:1,//该项数据是片段
         startOffset:2,//片段在段落内的开始下标
         endOffset:24,//片段在段落内的结束下标
-        areaRangeInfo:areaRangeInfo,//选定文字Range信息,加载完页面后才有值
+        areaRangeInfo:{
+          //$(`#${text.SectionId}`)[0].childNodes[0]
+          ParentNode:Node,//选定文字所属段落,根据SectionId找到对应p标签下的文本节点
+          //从range.getBoundingClientRect获取
+          BoundingXRange:[321,321+308],//Range x方向的范围,[left,right]
+          BoundingYRange:[447,447+16],//Range y方向的范围,[top,bottom]
+          StartOffset:2,//选定文字开始下标
+          EndOffset:24,//选定文字结束下标
+      },//选定文字Range信息,加载完页面后才有值
     },
     {
       SectionId:2,

+ 0 - 1
src/views/supply_manage/components/addPlantDia.vue

@@ -29,7 +29,6 @@
             :city-source="city_sorce"
             hide-area 
             @selected="selectAddress"
-            @province="provinceChange"
           />
         </el-form-item>
         <el-form-item label="工厂" prop="factory">

+ 0 - 1
src/views/supply_manage/components/targetTable.vue

@@ -32,7 +32,6 @@
       :edbid="selected_edbid"
       ref="createChart"
       @close="isCreateChart = false"
-      @editEnName="openEnNameDia"
     />
   </div>
 </template>

+ 0 - 1
src/views/supply_manage/components/varietySetDia.vue

@@ -17,7 +17,6 @@
         label-position="left"
         label-width="80px"
         :model="formData"
-        :rules="formRules"
       >
         <el-form-item label="品种" prop="varietyName">
           <el-input

+ 1 - 1
src/views/supply_manage/stockPlant.vue

@@ -1,7 +1,7 @@
 <template>
   <div class="variety-list-page">
     <div class="top">
-      <el-button type="primary" @click="addVarietyHandle" v-if="isCanAdd">添加品种</el-button>
+      <el-button type="primary" @click="addVarietyHandle(null)" v-if="isCanAdd">添加品种</el-button>
       <div class="top-right">
         <el-checkbox v-model="isCanAnalyse" @change="pageChangeHandle(1)" v-if="!isCanAdd">只看可分析</el-checkbox>
         <el-input

+ 0 - 629
src/views/system_manage/approvalManage.vue

@@ -1,629 +0,0 @@
-<template>
-  <div class="approvalset-wrap">
-    <div class="left-wrap">
-      <div class="item" :class="typeName==='客户审批'?'active':null" @click="handleChangeType('客户审批')">客户审批</div>
-      <div class="item" :class="typeName==='合同审批'?'active':null" @click="handleChangeType('合同审批')">合同审批</div>
-      <div class="item" :class="typeName==='用印审批'?'active':null" @click="handleChangeType('用印审批')">用印审批</div>
-    </div>
-    <div class="content-wrap">
-      <div class="top-type">
-        <span class="item" :class="topTypeActive===item.id?'active':null" v-for="item in topTypeArr" :key="item.id" @click="handleTopTypeChange(item.id)">{{item.name}}</span>
-      </div>
-      
-      <div class="step-wrap">
-        <div>
-          <div class="step-item-box" v-for="(step,stepIndex) in processList" :key="step.name">
-            <div class="step-line">
-              <h2>{{step.name}}</h2>
-            </div>
-            <div class="step-content">
-              <!-- 审批人 -->
-              <div>
-                <block v-for="(auser,index) in step.approvalUser" :key="auser.user_type">
-                  <block v-if="auser.user_type==='user'">
-                    <span class="user-box" v-for="(item,index2) in auser.user" :key="item.AdminId">
-                      {{item.userName}}
-                      <img class="delete-icon" src="../../assets/img/icons/delete-icon.png" alt="" @click="handleDelete({type:'approve',userType:'user',stepIndex,index,index2})">
-                    </span>
-                  </block>
-                  <block v-if="auser.user_type==='role'">
-                    <!-- <span class="user-box" style="margin-right:0"> -->
-                    <span class="user-box">
-                      {{auser.user[0].RoleName}}:
-                      <span v-for="(item,itemindex) in auser.user" :key="item.AdminId">{{item.userName}}<span v-if="itemindex<auser.user.length-1">、</span></span>
-                      <img class="delete-icon" src="../../assets/img/icons/delete-icon.png" alt="" @click="handleDelete({type:'approve',userType:'role',stepIndex,index})">
-                    </span>
-                    <!-- :<span class="user-name" v-for="item in auser.user" :key="item.AdminId">{{item.userName}}</span> -->
-                  </block>
-                </block>
-                <span class="add-btn" @click="handleShowAdd('approve',stepIndex)">+添加用户</span>
-              </div>
-              <!-- 抄送人 -->
-              <div style="margin-top:24px">
-                <block v-for="(cuser,index) in step.copyUser" :key="cuser.user_type">
-                  <block v-if="cuser.user_type==='user'">
-                    <span class="user-box" v-for="(item,index2) in cuser.user" :key="item.AdminId">
-                      {{item.userName}}
-                      <img class="delete-icon" src="../../assets/img/icons/delete-icon.png" alt="" @click="handleDelete({type:'copy',userType:'user',stepIndex,index,index2})">
-                    </span>
-                  </block>
-                  <block v-if="cuser.user_type==='role'">
-                    <!-- <span class="user-box" style="margin-right:0"> -->
-                    <span class="user-box">
-                      {{cuser.user[0].RoleName}}:
-                      <span v-for="(item,itemindex) in cuser.user" :key="item.AdminId">{{item.userName}}<span v-if="itemindex<cuser.user.length-1">、</span></span>
-                      <img class="delete-icon" src="../../assets/img/icons/delete-icon.png" alt="" @click="handleDelete({type:'copy',userType:'role',stepIndex,index})">
-                    </span>
-                    <!-- :<span class="user-name" v-for="item in cuser.user" :key="item.AdminId">{{item.userName}}</span> -->
-                  </block>
-                </block>
-
-                <span class="add-btn" @click="handleShowAdd('copy',stepIndex)">+添加抄送人</span>
-              </div>
-            </div>
-          </div>
-        </div>
-      </div>
-      <div class="bts-box">
-        <el-button type="primary" @click="handleSave">保存</el-button>
-        <el-button type="primary" plain @click="handleCancelSave">取消</el-button>
-      </div>
-    </div>
-
-    <!-- 添加审批人/抄送人 弹窗 -->
-    <el-dialog width="560px" :visible.sync="show" :modal-append-to-body="false" @close="show=false">
-      <div slot="title">
-        <img width="15" src="../../assets/img/icons/add_icon.png" alt="" style="position:relative;top:2px;margin-right:10px">
-        <span>{{addType==='approve'?'添加审批人':'添加抄送人'}}</span>
-      </div>
-      <div class="add-wrap">
-        <el-autocomplete 
-          class="search-box"
-          v-model="searchVal"
-          :fetch-suggestions="searchList"
-          placeholder="搜索用户名称"
-          @select="handleSelect"
-        ></el-autocomplete>
-
-        <div style="text-align:center;margin:70px 0 30px 0">
-          <el-button type="primary" @click="handleConfirmUser">确定</el-button>
-          <el-button type="primary" plain @click="show=false">取消</el-button>
-        </div>
-      </div>
-    </el-dialog>
-  </div>
-</template>
-
-<script>
-import {departInterence} from '@/api/api.js'
-const config={
-  '客户审批':[{id:1,name:'FICC部门'},{id:2,name:'权益部门'}],
-  '合同审批':[{id:3,name:'FICC部门'},{id:4,name:'权益部门'}],
-  '用印审批':[{id:5,name:'合同章'},{id:6,name:'公章/法人章'}]
-}
-export default {
-  data () {
-    return {
-      typeName:"客户审批",
-
-      topTypeArr:config['客户审批'],
-      topTypeActive:config['客户审批'][0].id,
-
-      processList:[
-        {name:"一级审批",approvalUser:[],copyUser:[]},
-        {name:'二级审批',approvalUser:[],copyUser:[]},
-        {name:'三级审批',approvalUser:[],copyUser:[]}
-      ],//此处写死三级 目前需求固定页面展示三级 允许只配置一个节点
-
-      show:false,
-      searchVal:'',
-      addType:'',//添加人类型 approve 审批 copy 抄送
-      temUser:null,
-      stepIndex:null,
-    }
-  },
-  created () {
-    this.getApprovalDetail()
-  },
-  methods: {
-    handleCancelSave(){
-      this.getApprovalDetail()
-    },
-
-    // 保存配置
-    async handleSave(){
-      let temarr=[]
-      let copyArr=JSON.parse(JSON.stringify(this.processList))
-      copyArr.forEach(item=>{
-        
-        if(item.approvalUser.length>0){
-          let obj={
-            NodeType:'check',
-            User:[]
-          }
-          let arr=[]
-          arr=item.approvalUser.filter(item=> item.user.length>0)
-          obj.User=arr.map(item2=>{
-            item2.user=item2.user.map(item3=>{
-              return item3.AdminId
-            })
-            return {
-              user_type:item2.user_type,
-              user:[...new Set(item2.user)].join(',')
-            }
-          })
-          if(obj.User.length>0){
-            temarr.push(obj)
-          }
-
-        }
-
-        if(item.copyUser.length>0){
-          let obj={
-            NodeType:'cc',
-            User:[]
-          }
-          let arr=[]
-          arr=item.copyUser.filter(item=> item.user.length>0)
-          obj.User=arr.map(item2=>{
-            item2.user=item2.user.map(item3=>{
-              return item3.AdminId
-            })
-            return {
-              user_type:item2.user_type,
-              user:[...new Set(item2.user)].join(',')
-            }
-          })
-          if(obj.User.length>0){
-            temarr.push(obj)
-          }
-        }
-        
-      })
-      const res=await departInterence.approvalFlowSave({
-        FlowId:Number(this.topTypeActive),
-        NodeList:temarr
-      })
-      if(res.Ret===200){
-        this.$message.success('保存成功')
-        this.getApprovalDetail()
-      }
-    },
-
-    /**
-     * 删除用户/组织
-     * type:类型 approve审批人 copy抄送人
-     * userType:用户类型 role组织 user个人
-     * stepIndex:当前是操作第几级审批的序号
-     * index:最外层序号
-     * index2:内部删除指定用户序号
-     */
-    handleDelete({type,userType,stepIndex,index,index2}){
-      // 删除审批人
-      if(type==='approve'){
-        if(userType==='role'){
-          this.processList[stepIndex].approvalUser.splice(index,1)
-        }
-        if(userType==='user'){
-          this.processList[stepIndex].approvalUser[index].user.splice(index2,1)
-        }
-      }
-
-      // 删除抄送人
-      if(type==='copy'){
-        if(userType==='role'){
-          this.processList[stepIndex].copyUser.splice(index,1)
-        }
-        if(userType==='user'){
-          this.processList[stepIndex].copyUser[index].user.splice(index2,1)
-        }
-      }
-    },
-
-    // 切换左侧类型
-    handleChangeType(e){
-      this.typeName=e
-      this.topTypeArr=config[e]
-      this.handleTopTypeChange(config[e][0].id)
-    },
-
-    //显示添加弹窗
-    handleShowAdd(e,index){
-      this.addType=e
-      this.searchVal=''
-      this.stepIndex=index
-      this.temUser=null
-      this.show=true
-    },
-
-    //切换顶部类型
-    handleTopTypeChange(e){
-      this.topTypeActive=e
-      this.getApprovalDetail()
-    },
-
-    //搜索用户
-    async searchList(queryVal,cb){
-      cb([])
-      if(!queryVal) return
-      const res=await departInterence.approvalUserSearch({Keyword:queryVal})
-      if(res.Ret===200){
-        let arr1=[],arr2=[]
-        if(res.Data.AdminList){
-          arr1=res.Data.AdminList.map(item=>{
-            return {
-              value:item.RealName,
-              AdminId:item.AdminId,
-              RoleName:item.RoleName,
-              type:'user'
-            }
-          })
-        }
-        if(res.Data.RoleList){
-          arr2=res.Data.RoleList.map(item=>{
-            return {
-              value:item.RoleName,
-              AdminId:item.RoleId,
-              RoleName:item.RoleType,
-              type:'role'
-            }
-          })
-        }
-        cb([...arr1,...arr2])
-      }
-      
-    },
-
-    handleConfirmUser(){
-      // 判断是否存在该用户
-      if(!this.temUser||!this.temUser.AdminId||!this.searchVal){
-        let str='请添加审批人'
-        if(this.addType==='copy'){
-          str='请添加抄送人'
-        }
-        this.$message.warning(str)
-        return
-      }
-      let temarr=[]
-      if(this.addType==='approve'){
-        this.processList[this.stepIndex].approvalUser.forEach(item=>{
-          temarr.push(...item.user)
-        })
-      }else{
-        this.processList[this.stepIndex].copyUser.forEach(item=>{
-          temarr.push(...item.user)
-        })
-      }
-      let flag=temarr.some(item=>item.AdminId==this.temUser.AdminId)
-      if(flag){
-        this.$message.warning('该用户已存在')
-        return
-      }
-
-      // 添加到审批节点
-      if(this.addType==='approve'){
-        if(this.temUser.type==='user'){
-          let tagindex=-1
-          this.processList[this.stepIndex].approvalUser.forEach((item,index)=>{
-            if(item.user_type==='user'){
-              tagindex=index
-            }
-          })
-          if(tagindex>-1){
-            this.processList[this.stepIndex].approvalUser[tagindex].user.push({
-              AdminId:this.temUser.AdminId,
-              RoleName:this.temUser.RoleName,
-              userName:this.temUser.value
-            })
-          }else{
-            this.processList[this.stepIndex].approvalUser.push({
-              user:[{
-                AdminId:this.temUser.AdminId,
-                RoleName:this.temUser.RoleName,
-                userName:this.temUser.value
-              }],
-              user_type:"user"
-            })
-          }
-        }else{
-          let tag=false
-          this.processList[this.stepIndex].approvalUser.forEach(item=>{
-            if(item.user_type==='role'&&item.user[0].AdminId==this.temUser.AdminId){
-              tag=true
-            }
-          })
-          if(tag){
-            this.$message.warning('该组织已存在')
-            return
-          }
-          this.processList[this.stepIndex].approvalUser.push({
-            user:this.temUser.value,
-            user_type:"role"
-          })
-        }
-      }else{
-        if(this.temUser.type==='user'){
-          let tagindex=-1
-          this.processList[this.stepIndex].copyUser.forEach((item,index)=>{
-            if(item.user_type==='user'){
-              tagindex=index
-            }
-          })
-          if(tagindex>-1){
-            this.processList[this.stepIndex].copyUser[tagindex].user.push({
-              AdminId:this.temUser.AdminId,
-              RoleName:this.temUser.RoleName,
-              userName:this.temUser.value
-            })
-          }else{
-            this.processList[this.stepIndex].copyUser.push({
-              user:[{
-                AdminId:this.temUser.AdminId,
-                RoleName:this.temUser.RoleName,
-                userName:this.temUser.value
-              }],
-              user_type:"user"
-            })
-          }
-        }else{
-          let tag=false
-          this.processList[this.stepIndex].copyUser.forEach(item=>{
-            if(item.user_type==='role'&&item.user[0].AdminId==this.temUser.AdminId){
-              tag=true
-            }
-          })
-          if(tag){
-            this.$message.warning('该组织已存在')
-            return
-          }
-          this.processList[this.stepIndex].copyUser.push({
-            user:this.temUser.value,
-            user_type:"role"
-          })
-        }
-      }
-
-
-      this.show=false
-      
-    },
-
-    //选择搜索到的用户
-    async handleSelect(e){
-      if(e.type==='user'){
-        this.temUser=e
-      }else{
-        const res=await departInterence.getUserList({RoleId:e.AdminId,PageSize:1000})
-        if(res.Ret===200){
-          let arr=res.Data.List&&res.Data.List.map(item=>{
-            return {
-              AdminId:e.AdminId,
-              RoleName:e.RoleName,
-              userName:item.RealName
-            }
-          })
-          this.temUser={
-            value:arr,
-            AdminId:e.AdminId,
-            RoleName:e.RoleName,
-            type:'role'
-          }
-        }
-      }
-    },
-
-    // 流程详情
-    async getApprovalDetail(){
-      this.processList=[
-        {name:"一级审批",approvalUser:[],copyUser:[]},
-        {name:'二级审批',approvalUser:[],copyUser:[]},
-        {name:'三级审批',approvalUser:[],copyUser:[]}
-      ]
-      const res=await departInterence.approvalFlowDetail({FlowId :this.topTypeActive})
-      if(res.Ret===200){
-        let tag=-1
-        let obj={name:'',approvalUser:[],copyUser:[]}
-
-        res.Data.NodeList.forEach(item=>{
-          item.User.forEach(item2=>{
-            let userarr=item2.user.split(',')
-            let temarr=[]
-            userarr.forEach(item3=>{
-              item.UserList.forEach(item4=>{
-                if(item2.user_type==='role'){
-                  if(item4.RoleId==item3){
-                    temarr=[...temarr,{AdminId:item3,userName:item4.Name,RoleName:item4.RoleName}]
-                  }
-                }else{
-                  if(item4.AdminId==item3){
-                    temarr=[...temarr,{AdminId:item3,userName:item4.Name,RoleName:item4.RoleName}]
-                  }
-                }
-              })
-            })
-            item2.user=temarr
-          })
-
-          if(item.NodeType==='check'){
-            tag++
-            obj={name:`${tag}级审批`,approvalUser:[],copyUser:[]}
-            obj.approvalUser=[...obj.approvalUser,...item.User]
-          }else{
-            obj.copyUser=[...obj.copyUser,...item.User]
-          }
-
-          // arr[tag]=obj
-          this.processList[tag].approvalUser=obj.approvalUser
-          this.processList[tag].copyUser=obj.copyUser
-        })
-        
-      }
-    }
-  }
-}
-</script>
-
-<style lang="scss">
-.add-wrap{
-  .el-input{
-    width: 100%;
-  }
-}
-</style>
-
-<style lang="scss" scoped>
-div{
-  box-sizing: border-box;
-}
-.approvalset-wrap{
-    display: flex;
-}
-.left-wrap{
-    width: 210px;
-    background: #fff;
-    // border: 1px solid #ececec;
-    border-radius: 4px;
-    // box-shadow: 0 3px 6px rgba(0, 0, 0, 0.05);
-    padding: 30px 0 30px 30px;
-    margin-right: 20px;
-    .item{
-      line-height: 53px;
-      color: #409EFF;
-      font-size: 14px;
-      padding-left: 48px;
-      font-weight: bold;
-      cursor: pointer;
-    }
-    .active{
-      background-color: #409EFF;
-      border-radius: 27px 0px 0px 27px;
-      color: #fff;
-      position: relative;
-      &::before{
-        content: '';
-        display: block;
-        width: 10px;
-        height: 10px;
-        border-radius: 50%;
-        position: absolute;
-        left: 20px;
-        top: 50%;
-        transform: translateY(-50%);
-        background-color: #fff;
-      }
-    }
-}
-
-.content-wrap{
-  flex: 1;
-  .top-type{
-    .item{
-      display: inline-block;
-      font-size: 16px;
-      font-weight: bold;
-      width: 216px;
-      text-align: center;
-      line-height: 60px;
-      cursor: pointer;
-    }
-    .active{
-      color: #409EFF;
-      background-color: #fff;
-    }
-  }
-  .step-wrap{
-    background-color: #fff;
-    padding: 60px 70px;
-    min-height: calc(100vh - 350px);
-    .step-item-box{
-      display: flex;
-      .step-line{
-        font-size: 16px;
-        padding-left: 30px;
-        margin-right: 120px;
-        position: relative;
-        &::before{
-          position: absolute;
-          left: 0;
-          top: 5px;
-          content: '';
-          display: inline-block;
-          width: 16px;
-          height: 16px;
-          background-color: #E1E1E1;
-          border-radius: 50%;
-        }
-        &::after{
-          content: '';
-          display: inline-block;
-          width: 1px;
-          height: 100%;
-          background-color: #E1E1E1;
-          position: absolute;
-          left: 8px;
-          top: 5px;
-        }
-      }
-      .step-content{
-        font-size: 14px;
-        margin-bottom: 60px;
-        .user-box{
-          display: inline-block;
-          padding: 9px 24px;
-          background-color: #E0EEFD;
-          border-radius: 4px;
-          color: #2D8CF0;
-          margin-right: 24px;
-          margin-bottom: 24px;
-          position: relative;
-          .delete-icon{
-            position: absolute;
-            top: -7px;
-            right: -7px;
-            width: 14px;
-            height: 14px;
-            cursor: pointer;
-          }
-        }
-        .user-name{
-          font-size: 14px;
-          &::after{
-            content: '、';
-          }
-        }
-        .user-name:last-child::after{
-          content: '';
-          margin-right: 20px;
-        }
-        .add-btn{
-          color: #409EFF;
-          font-size: 16px;
-          cursor: pointer;
-          // margin-left: 20px;
-        }
-      }
-    }
-
-    .step-item-box:last-child{
-      .step-line::after{
-        width: 0;
-      }
-    }
-    
-  }
-  .bts-box{
-    background-color: #fff;
-    text-align: center;
-    padding: 50px 0;
-  }
-}
-
-.add-wrap{
-  /deep/ .el-input{
-    width: 100% !important;
-  }
-  .search-box{
-    width: 500px;
-  }
-}
-</style>

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

@@ -5,7 +5,7 @@
 			<el-select v-model="role" placeholder="请选择角色" style="width:360px;marginLeft:30px;">
 				<el-option
 					v-for="item in roleList"
-					:key="item"
+					:key="item.RoleId"
 					:label="item.RoleName"
 					:value="item.RoleId">
 				</el-option>

+ 0 - 304
src/views/system_manage/components/voicePlate.vue

@@ -1,304 +0,0 @@
-<template>
-    <div class="voice-plate-wrap">
-        <div>
-            <el-button type="primary" @click="handelShowAdd">新建板块</el-button>
-        </div>
-        <div style="margin-top:30px">
-            <el-table
-                :data="tableData"
-                border
-                style="width: 100%"
-            >
-
-                <el-table-column
-                    prop="SectionName"
-                    label="版块名称"
-                    align="center"
-                />
-                <el-table-column
-                    prop="VarietyName"
-                    label="品种"
-                    width="200"
-                    align="center"
-                />
-                <el-table-column
-                    prop="Status"
-                    label="状态"
-                    width="200"
-                    align="center"
-                >
-                    <template slot-scope="scope">
-                        <span :style="{color:scope.row.Status===1?'':'#ef0000'}">{{scope.row.Status===1?'启用':'禁用'}}</span>
-                    </template>
-                </el-table-column>
-                <el-table-column
-                    width="200"
-                    align="center"
-                >
-                    <template #header>
-                        <el-tooltip 
-                            effect="dark" 
-                            content="禁用后不可选择该版块新增语音播报,不影响历史数据;" 
-                            placement="top-start"
-                        >   
-                            <div>
-                                <span>操作</span>
-                                <i class="el-icon-question"></i>
-                            </div>
-                        </el-tooltip>
-                    </template>
-                    <template slot-scope="scope">
-                        <span style="color:#409EFF;cursor:pointer;margin-right:5px" @click="handleEdit(scope.row)">编辑</span>
-                        <span :style="{color:scope.row.Status===1?'#ef0000':'#409EFF',cursor:'pointer'}" @click="handleOptItem(scope.row)">{{scope.row.Status===1?'禁用':'启用'}}</span>
-                    </template>
-                </el-table-column>
-                <template slot="empty">
-                    <div style="margin:50px 0">
-                        <img style="width:150px" src="~@/assets/img/cus_m/nodata.png" alt="">
-                        <div>暂无数据~</div>
-                    </div>
-                </template>
-            </el-table>
-            <el-pagination
-				layout="total,prev,pager,next,jumper" 
-				background
-				:current-page="page_no"
-				@current-change="handleCurrentChange"
-				:page-size="pageSize" 
-				:total="totals"
-				style="float:right;margin-top:20px">
-			</el-pagination>
-        </div>
-
-        <!-- 新增板块弹窗 -->
-        <el-dialog
-            :visible.sync="showAdd"
-            :close-on-click-modal="false"
-            :modal-append-to-body='false'
-            custom-class="dialog"
-            center
-            width="700px"
-            v-dialogDrag
-            :title="isEdit?'编辑板块':'新建版块'"
-        >
-            <div >
-                <el-form
-                    ref="diaForm"
-                    label-position="left"
-                    hide-required-asterisk
-                    label-width="80px"
-                    :model="formData"
-                    :rules="formRules"
-                >
-                    <el-form-item 
-                        label="版块名称" 
-                        prop="name"
-                    >
-                        <el-input
-                            style="width:400px"
-							v-model="formData.name"
-							placeholder="请输入板块名称"
-                        />
-                    </el-form-item>
-                    <el-form-item 
-                        label="品种" 
-                        prop="classify"
-                    >
-                        <el-cascader 
-                            class="voice-plate-cascader"
-                            v-model="formData.classify"
-                            placeholder="请选择品种"
-                            :options="classifyArr" 
-                            :props="{value:'ChartPermissionId',label:'ClassifyName',children:'Items',emitPath:false}"
-                            :show-all-levels="false"
-                            ref="cascader"
-                            :disabled="isEdit"
-                        ></el-cascader>
-                    </el-form-item>
-                    <el-form-item 
-                        label="分享图片" 
-                        prop="shareImg"
-                    >
-                        <el-input
-                            style="width:400px"
-							v-model="formData.shareImg"
-							placeholder="请上传分享图片"
-                            readonly
-                        />
-                        <el-upload
-                            style="display: inline-block;margin-left:5px"
-                            action=""
-                            accept="image/*"
-                            :http-request="handleUpload"
-                            :show-file-list="false"
-                        >
-                            <el-button type="primary">选择图片</el-button>
-                        </el-upload>
-                    </el-form-item>
-                    <div style="text-align:center;margin:30px 0">
-                        <el-button type="primary" plain style="width:100px" @click="showAdd=false">取消</el-button>
-                        <el-button type="primary" style="margin-left:30px;width:100px" @click="handleAdd">保存</el-button>
-                    </div>
-                </el-form>
-            </div>
-
-        </el-dialog>
-    </div>
-</template>
-
-<script>
-import { interactiveInterface } from '@/api/api'
-import { customInterence } from '@/api/api.js'
-export default {
-    data() {
-        return {
-            tableData:[],
-            page_no:1,
-            pageSize:15,
-            totals:0,
-
-            showAdd:false,
-            isEdit:false,
-            formData:{
-                name:'',
-                classify:'',
-                shareImg:'',
-                item:null
-            },
-            classifyArr:[]
-        }
-    },
-    created () {
-        this.getTableList()
-        this.getClassifyList()
-    },
-    methods: {
-        handleCurrentChange(e){
-            this.page_no=e 
-            this.getTableList()
-        },
-
-        async getTableList(){
-            const res=await interactiveInterface.voiceList({
-                CurrentIndex: this.page_no,
-				PageSize:this.pageSize
-            })
-            if(res.Ret!==200) return
-            const { List,Paging } = res.Data;
-
-			this.tableData = List || [];
-			this.totals = Paging.Totals;
-        },
-
-        //获取品种数据
-        async getClassifyList(){
-            const res=await customInterence.getvariety({CompanyType:"ficc"})
-            if(res.Ret!==200) return 
-            this.classifyArr=res.Data.List||[]
-        },
-
-        handelShowAdd(){
-            this.formData.name=''
-            this.formData.classify=''
-            this.formData.shareImg=''
-            this.isEdit=false
-            this.showAdd=true
-        },
-
-        handleEdit(item){
-            this.formData.name=item.SectionName
-            this.formData.classify=item.VarietyId
-            this.formData.shareImg=item.ImgUrl
-            this.formData.item=item
-            this.isEdit=true
-            this.showAdd=true
-        },
-
-        // 新增板块
-        async handleAdd(){
-            if(!this.formData.name){
-                this.$message.warning('请输入板块名称')
-                return
-            }
-            if(!this.formData.classify){
-                this.$message.warning('请选择品种')
-                return
-            }
-            if(!this.formData.shareImg){
-                this.$message.warning('请上传分享图片')
-                return
-            }
-
-            //如果是编辑
-            if(this.isEdit){
-                this.handleEditItem()
-                return
-            }
-
-            //获取选择的分类品种名称
-            let VarietyName=this.$refs.cascader.getCheckedNodes()[0].label
-            const res=await interactiveInterface.addVoiceSection({
-                SectionName:this.formData.name,
-                VarietyId:Number(this.formData.classify),
-                VarietyName:VarietyName,
-                ImgUrl:this.formData.shareImg
-            })
-            if(res.Ret===200){
-                this.$message.success('新增成功')
-                this.showAdd=false
-                this.getTableList()
-            }
-        },
-
-        //编辑
-        async handleEditItem(){
-            const res=await interactiveInterface.editVoiceSection({
-                SectionId:Number(this.formData.item.SectionId),
-                SectionName:this.formData.name,
-                ImgUrl:this.formData.shareImg
-            })
-            if(res.Ret===200){
-                this.$message.success('编辑成功')
-                this.showAdd=false
-                this.getTableList()
-            }
-        },
-
-        //启用/禁用 
-        async handleOptItem(item){
-            const res=await interactiveInterface.editVoiceSection({
-                SectionId:Number(item.SectionId),
-                Enable:item.Status==1?0:1
-            })
-            if(res.Ret===200){
-                this.$message.success(`${item.Status==1?'禁用':'启用'}成功`)
-                this.getTableList()
-            }
-        },
-
-        // 上传图片
-        handleUpload(e){
-            let form = new FormData();
-		    form.append('file',e.file);
-            customInterence.upload(form).then(res=>{
-                if(res.Ret===200){
-                    this.formData.shareImg=res.Data.ResourceUrl
-                }
-            })
-        }
-
-    },
-}
-</script>
-
-<style lang="scss">
-    .voice-plate-cascader{
-        width: 400px;
-        .el-input{
-            width: 100% !important;
-        }
-    }
-</style>
-<style lang="scss" scoped>
-
-</style>

+ 0 - 219
src/views/system_manage/components/voiceRole.vue

@@ -1,219 +0,0 @@
-<template>
-    <div class="voice-role-wrap">
-        <div>
-            <el-cascader
-				v-model="select_users"
-				placeholder="请选择用户"
-				style="width: 230px"
-				:options="userList"
-				:props="{
-					label: 'RealName',
-					value: 'AdminId', 
-					children: 'ChildrenList',
-					emitPath: false,
-					multiple: true
-				}"
-				:show-all-levels="false"
-				:key="cascaderIdx"
-				@remove-tag="removeTagChange"
-				collapse-tags
-				clearable
-				filterable
-				@change="selectUsers"
-			/>
-            <el-button type="primary" style="margin-left:30px" @click="handleSetAuth">配置权限</el-button>
-        </div>
-        <div style="margin-top:30px">
-            <el-table
-                :data="tableData"
-                border
-                style="width: 100%"
-            >
-                <el-table-column
-                    prop="RealName"
-                    label="姓名"
-                    width="180"
-                    align="center"
-                />
-                <el-table-column
-                    prop="Mobile"
-                    label="手机号"
-                    width="180"
-                    align="center"
-                />
-                <el-table-column
-                    prop="RoleName"
-                    label="角色"
-                    width="180"
-                    align="center"
-                />
-                <el-table-column
-                    prop="DepartmentGroup"
-                    label="部门/分组"
-                    align="center"
-                />
-                <el-table-column
-                    prop="Enabled"
-                    label="状态"
-                    width="180"
-                    align="center"
-                >
-                    <template slot-scope="scope">
-                        <span :style="{color:scope.row.Enabled===1?'':'#ef0000'}">{{scope.row.Enabled===1?'启用':'禁用'}}</span>
-                    </template>
-                </el-table-column>
-                <el-table-column
-                    width="180"
-                    align="center"
-                >
-                    <template #header>
-                        <el-tooltip 
-                            effect="dark" 
-                            content="此项删除只删除该用户的语音管理员权限" 
-                            placement="top-start"
-                        >   
-                            <div>
-                                <span>操作</span>
-                                <i class="el-icon-question"></i>
-                            </div>
-                        </el-tooltip>
-                    </template>
-                    <template slot-scope="scope">
-                        <span style="color:#ef0000;cursor: pointer;" @click="handleDel(scope.row)">删除</span>
-                    </template>
-                
-                </el-table-column>
-                <template slot="empty">
-                    <div style="margin:50px 0">
-                        <img style="width:150px" src="~@/assets/img/cus_m/nodata.png" alt="">
-                        <div>暂无数据~</div>
-                    </div>
-                </template>
-            </el-table>
-			<el-pagination
-				layout="total,prev,pager,next,jumper" 
-				background
-				:current-page="page_no"
-				@current-change="handleCurrentChange"
-				:page-size="pageSize" 
-				:total="totals"
-				style="float:right;margin-top:20px">
-			</el-pagination>
-        </div>
-       
-    </div>
-</template>
-
-<script>
-import { interactiveInterface } from '@/api/api'
-export default {
-    data() {
-        return {
-            tableData:[],
-            page_no:1,
-            pageSize:15,
-            totals:0,
-
-            userList:[],
-            select_users:[],
-            cascaderIdx: 1,
-        }
-    },
-    created() {
-        this.getAllDepart()
-        this.getTableList()
-    },
-    methods:{
-        // 获取所有部门
-        async getAllDepart(){
-            const res=await interactiveInterface.allUserList()
-            if(res.Ret===200){
-                const arr=res.Data.List||[]
-                this.userList=arr
-            }
-        },
-
-        removeTagChange(val) {
-			this.select_users = this.select_users.filter(_ => _ !== val);
-            this.cascaderIdx++;
-            this.selectUsers()
-		},
-
-        /* 选中用户改变时 */
-		selectUsers() {
-			this.select_userArr = this.filterData([],this.userList)
-		},
-
-        filterData(arr,data) {
-            data.forEach(item => {
-				if(this.select_users.includes(item.AdminId)) {
-					arr.push({
-						id: item.AdminId,
-                        name: item.RealName,
-					})
-				}else {
-					item.ChildrenList && this.filterData(arr,item.ChildrenList)
-				}
-            });
-			return arr
-		},
-
-        //获取列表
-        async getTableList(){
-            const res=await interactiveInterface.messageManageList({
-                RoleTypeCode:'yb_voice_admin',
-				CurrentIndex: this.page_no,
-				PageSize:this.pageSize
-            })
-            if(res.Ret !== 200) return
-
-			const { List,Paging } = res.Data;
-
-			this.tableData = List || [];
-			this.totals = Paging.Totals;
-        },
-
-        //翻页
-        handleCurrentChange(e){
-            this.page_no=e
-            this.getTableList()
-        },
-        
-        //设置权限
-        handleSetAuth(){
-            if(!this.select_users.length>0) return this.$message.warning('请选择用户')
-            interactiveInterface.setMessageAuth({
-				RoleTypeCode:'yb_voice_admin',
-				AdminIds: this.select_users.join(',')
-			}).then(res => {
-				if(res.Ret !== 200) return
-				this.getTableList();
-                this.select_users=[]
-			})
-        },
-
-        //删除
-        handleDel({SysRoleAdminId}){
-            this.$confirm('确认删除吗?', '提示', {
-                confirmButtonText: '确定',
-                cancelButtonText: '取消',
-                type: 'warning'
-            }).then(() => {
-				interactiveInterface.delMessageAuth({ SysRoleAdminId })
-				.then(res => {
-					if(res.Ret !== 200) return
-					this.$message.success('删除成功')
-					this.getTableList();
-				})
-			})
-        }
-
-    }
-}
-</script>
-
-<style lang="scss" scoped>
-.voice-role-wrap{
-
-}
-</style>

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

@@ -25,7 +25,7 @@
 				<li v-for="item in authList" :key="item.id" class="menu_item">
 					<div style="flex-shrink: 0;">
 					<el-checkbox
-						:indeterminate="item.isIndeterminate"
+						:indeterminate="item.isIndeterminate?true:false"
 						v-model="item.checkAll"
 						@change="handleCheckAll(item)"
 						>

+ 4 - 5
src/views/system_manage/departManage.vue

@@ -10,7 +10,7 @@
 			class="depart_tree"
 			style="marginTop:27px;"
 			:data="departArr"
-			:node-key="DepartmentId"
+			node-key="DepartmentId"
 			:props="defaultProp"
 			default-expand-all
 			check-strictly
@@ -122,8 +122,7 @@
 					background 
 					:current-page="page_no"
 					@current-change="handleCurrentChange"
-					:page-size="pageSize" 
-					@size-change="handleSizeChange" 
+					:page-size="pageSize"
 					:total="total" 
 					style="float:right;">
 					</el-pagination>
@@ -180,11 +179,11 @@
 							trigger="hover">
 							<div class="auth_cont" style="padding:30px 0">
 								<template v-if="authList.length">
-									<div v-for="item in authList" :key="item" class="menu_item">
+									<div v-for="item in authList" :key="item.Name" class="menu_item">
 										<el-checkbox  v-model="item.checkAll" disabled>{{item.Name}}</el-checkbox>
 										<div style="margin: 15px 0; padding:24px;border:1px solid #DCDFE6">
 											<el-checkbox-group v-model="item.CheckList" disabled>
-												<el-checkbox v-for="list in item.Child" :label="list.MenuId" :key="list">{{list.Name}}</el-checkbox>
+												<el-checkbox v-for="list in item.Child" :label="list.MenuId" :key="list.MenuId">{{list.Name}}</el-checkbox>
 											</el-checkbox-group>
 										</div>
 									</div>

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

@@ -84,7 +84,7 @@
           </template>
           <template slot-scope="{ row }">
             <span @click="setAuth(row)"
-              style="cursor: pointer; color:#409eff;"
+              style="cursor: pointer; color:#409eff;margin-right: 5px;"
             >设置权限</span>
             <span
               @click="handleDeleteAuth(row)"

+ 0 - 272
src/views/system_manage/groupSend.vue

@@ -1,272 +0,0 @@
-<template>
-  <div class="group-send-page">
-      <el-form ref="form" :model="form" label-position="right" :rules="formRule" label-width="100px">
-          
-          <el-form-item label="跳转类型" prop="jump_type">
-            <el-radio-group v-model="form.jump_type" style="margin-left:20px">
-              <div style="display:flex">
-                <div style="margin-right:30px;">
-                  <el-radio label="1" >h5链接</el-radio>
-                </div>
-                <div style="margin-right:30px;">
-                  <el-radio label="2">微信小程序</el-radio>
-                </div>
-                <div>
-                  <el-radio label="4">图片</el-radio>
-                </div>
-              </div>
-            </el-radio-group>
-          </el-form-item>
-		  
-		  <el-form-item label="推送链接" prop="link" v-if="form.jump_type!=4">
-              <el-input v-model="form.link" placeholder="请输入链接地址" style="width:500px;margin-left:20px"></el-input>
-          </el-form-item>
-          <el-form-item label="推送标题" prop="title" v-if="form.jump_type!=4">
-              <el-input v-model="form.title" placeholder="请输入推送标题" style="width:500px;margin-left:20px"></el-input>
-          </el-form-item>
-          <el-form-item label="上传图片" prop="image">
-                <input type="file" name="file" @change="fileSelected()" id="file" style="display:none;">
-                <el-image style="width: 200px; height: 200px" :src="form.image" fit="cover" v-if="form.image" @click="handleUpload"></el-image>
-                <div style="margin-left:20px" v-else>
-                    <div class="upload-default-box" @click="handleUpload"></div>
-                    <p style="font-size:14px;color:#999">支持png、jpg格式</p>
-                </div>
-          </el-form-item>
-          <el-form-item label="描述" prop="des" v-show="form.jump_type!=4">
-              <el-input type="textarea" maxlength="64" clearable placeholder="请输入描述内容" :rows="5" v-model="form.des" style="margin-left:20px;width:500px"></el-input>
-          </el-form-item>
-          <el-form-item label="默认标签" prop="labels">
-              <div class="label-box" style="margin-left:20px">
-                  <span v-for="item in showLabels" :key="item.name" class="label-item">{{item.name}}</span>
-                  <span style="font-size:14px;color:#0099FF;cursor: pointer;margin-left:30px" @click="show=true">+更改</span>
-              </div>
-          </el-form-item>
-
-          <div style="text-align: center; margin-top: 40px; margin-bottom: 20px">
-              <el-button type="primary" @click="handleSubmit" style="width: 145px">推送</el-button>
-          </div>
-      </el-form>
-
-      <!-- 选择标签弹窗 -->
-      <el-dialog width="620px" top="15vh" :visible.sync="show" :modal-append-to-body="false" @close="show=false">
-        <div slot="title">
-            <img width="20" src="../../assets/img/icons/label.png" alt="" style="position:relative;top:4px;margin-right:10px">
-            <span>群发标签</span>
-        </div>
-        <div class="label-select-wrap">
-            <span 
-                class="label-item" 
-                :class="item.selected?'label-active':null" 
-                v-for="(item,index) in labelArr" 
-                :key="item.name" 
-                @click="handleClickLabel(index)"
-            >{{item.name}}</span>
-        </div>
-      </el-dialog>
-  </div>
-</template>
-
-<script>
-import { customInterence,groupSendInterface } from "@/api/api.js";
-export default {
-    name:"GroupSend",
-    computed: {
-      showLabels(){
-          return this.labelArr.filter(item=> item.selected)
-      }  
-    },
-    data () {
-        return {
-            show:false,
-            form:{
-				jump_type:"1",
-                link:"",
-                title:"",
-                image:'',
-                des:"",
-            },
-            formRule:{
-                jump_type:[{required: true, message: "请选择跳转类型", trigger: "blur"}],
-                link:[{required: true, message: "请输入链接地址", trigger: "blur"}],
-                title:[{required: true, message: "请输入推送标题", trigger: "blur"}],
-            },
-            labelArr:[],
-        }
-    },
-    created () {
-      this.getLabels()  
-    },
-    methods: {
-        async getLabels(){
-            const res=await groupSendInterface.groupMessageLabel()
-            if(res.Ret===200){
-                this.labelArr=res.Data.map((item,index)=>{
-                    let obj={
-                        name:item,
-                        selected:false
-                    }
-                    if(index===0){
-                        obj.selected=true
-                    }
-                    return obj
-                })
-            }
-        },
-
-        handleClickLabel(index){
-            this.labelArr[index].selected=!this.labelArr[index].selected
-        },
-
-        handleUpload(){
-            $("#file").click();
-        },
-
-        fileSelected(){  //选择文件上传
-		    if( document.getElementById('file').files[0] ){
-		        let hostfile = document.getElementById('file').files[0];
-		        let size = Math.floor(hostfile.size / 1024 / 1024);
-		        if( size>200 ){
-		            this.$message.error('上传文件大小不能大于200M!');
-		            hostfile = {};
-		            return false
-		        }
-		        if( hostfile.name.toLowerCase().includes('.png') || hostfile.name.toLowerCase().includes('.jpg') || hostfile.name.toLowerCase().includes('.jpeg') ){
-		        	let form = new FormData();
-		        	form.append('file',hostfile);  //hostfile.name
-					
-					customInterence.upload(form).then((res) => {
-						if( res.Ret === 200 ){
-							// that.$message.success( '上传成功' );
-							this.form.image=res.Data.ResourceUrl
-						}
-						
-					});
-				}else{
-					this.$message.error('上传文件格式不正确!');
-		        }
-		    } 
-		},
-
-        handleSubmit(){
-            this.$refs.form.validate(async (valid)=>{
-                if(valid){
-                    if(!this.form.image){
-                        this.$message.warning('请上传图片')
-                        return
-                    }
-                    let arr=this.showLabels.map(item=>{
-                        return item.name
-                    })
-                    if(arr.length===0){
-                        this.$message.warning('请选择标签')
-                        return
-                    }
-                    let params={
-                        Description:this.form.jump_type=='4'?'':this.form.des,
-                        ImgUrl:this.form.image,
-                        Label:arr.join(','),
-                        LinkUrl:this.form.jump_type=='4'?'':this.form.link,
-                        Title:this.form.jump_type=='4'?'':this.form.title,
-                        JumpType:Number(this.form.jump_type),
-                    }
-                    const res=await groupSendInterface.groupMessageAdd(params)
-                    if(res.Ret===200){
-                        this.$message.success('新增成功')
-                        setTimeout(() => {
-                            this.$router.go(0)
-                        }, 1000);
-                           
-                    }
-                }
-            })
-        }
-    }
-
-}
-</script>
-
-<style lang="scss" scoped>
-.group-send-page{
-    width: 100%;
-    background: #FFFFFF;
-    box-sizing: border-box;
-    // box-shadow: 0 3px 6px rgba(0, 0, 0 ,0.05);
-    border-radius: 4px;
-    min-height: calc(100vh - 120px);
-    padding: 30px;
-    .el-form-item{
-        margin-bottom: 40px;
-    }
-    
-}
-.upload-default-box{
-    width: 103px;
-    height: 103px;
-    background: #E9E9E9;
-    border-radius: 2px;
-    position: relative;
-    cursor: pointer;
-    &::after{
-        content: '';
-        display: block;
-        background-image: url('../../assets/img/icons/add_icon.png');
-        background-size: cover;
-        width: 50px;
-        height: 50px;
-        position: absolute;
-        left: 50%;
-        top: 50%;
-        transform: translate(-50%,-50%);
-    }
-}
-
-.des-box{
-    width: 815px;
-    height: 257px;
-    border: 1px solid #DCDFE6;
-    display: block;
-    box-sizing: border-box;
-    padding: 20px;
-    border-radius: 4px;
-}
-
-.label-box{
-    .label-item{
-        display: inline-block;
-        background-color: #E0EEFD;
-        padding: 10px 20px;
-        min-width: 80px;
-        text-align: center;
-        color: #2D8CF0;
-        font-size: 14px;
-        border-radius: 2px;
-        line-height: 1;
-        margin-right: 20px;
-        margin-bottom: 20px;
-    }
-}
-
-.label-select-wrap{
-    // margin-bottom: 30px;
-    padding: 10px 10px 30px 10px;
-    .label-item{
-        display: inline-block;
-        background-color: #ECECEC;
-        padding: 10px 20px;
-        min-width: 80px;
-        text-align: center;
-        color: #333;
-        font-size: 14px;
-        border-radius: 2px;
-        line-height: 1;
-        margin-right: 20px;
-        margin-bottom: 20px;
-        cursor: pointer;
-    }
-    .label-active{
-        background-color: #E0EEFD;
-        color: #2D8CF0;
-    }
-}
-</style>
-

+ 0 - 259
src/views/system_manage/messageManage.vue

@@ -1,259 +0,0 @@
-<template>
-	<div class="messageManage-conatainer">
-		<div class="main_top">
-			<el-cascader
-				v-model="select_users"
-				placeholder="请选择用户"
-				style="width: 230px"
-				:options="userList"
-				:props="{
-					label: 'RealName',
-					value: 'AdminId', 
-					children: 'ChildrenList',
-					emitPath: false,
-					multiple: true
-				}"
-				:show-all-levels="false"
-				:key="cascaderIdx"
-				@remove-tag="removeTagChange"
-				collapse-tags
-				clearable
-				filterable
-				@change="selectUsers"
-			/>
-			<el-button type="primary" style="margin-left: 10px;" @click="setAuthHandle">配置权限</el-button>
-			<div class="select-users" :style="`height: ${isSlideAllUsers ? 'auto' : '40px'}`"  v-if="select_userArr.length">
-				<el-tag v-for="(user,index) in select_userArr" :key="user.id" type="info" closable @close="removeUser(user,index)">{{ user.name }}</el-tag>
-				<div class="slide-cont" @click="isSlideAllUsers = !isSlideAllUsers">
-					<span>{{ isSlideAllUsers ? '收起' : '展开'}}</span>  
-					<i :class="isSlideAllUsers ? 'el-icon-arrow-up' : 'el-icon-arrow-down'"></i>
-				</div>
-			</div>
-		</div>
-		<div class="main">
-			<label>留言管理员列表</label>
-			<el-table
-				border
-				:data="tableData"
-				style="margin-top: 20px"
-			>
-				<el-table-column
-					v-for="item in tableColums"
-					:key="item.label"
-					:label="item.label"
-					:width="item.widthsty"
-					:min-width="item.minwidthsty"
-					align="center"
-				>
-					<template #header>
-						<span>{{ item.label }}</span>
-						<el-tooltip  content="此项删除只删除该用户的留言管理员权限" placement="top-start" v-if="item.key === 'action'">
-							<i class="el-icon-question"/>
-						</el-tooltip>
-					</template>	
-					<template slot-scope="{row}">
-						<span v-if="item.key === 'Enabled'">{{ row[item.key] === 1 ? '启用' : '禁用' }}</span>
-						<span v-else-if="item.key === 'action'" class="deletesty" @click="delHandle(row)">删除</span>
-						<span v-else>{{ row[item.key] || '——' }}</span>
-					</template>
-				</el-table-column>
-				<div slot="empty" style="padding: 100px 0">
-					<img src="~@/assets/img/cus_m/nodata.png" alt="" style="display:block;width:128px;height:128px;margin: 0 auto;">
-					<span>暂无数据</span>
-				</div>
-			</el-table>
-			<div style="height: 40px;margin-top: 10px; padding: 0 20px;" >
-				<m-page
-					:page_no="page_no"
-					:pageSize="10"
-					:total="totals"
-					@handleCurrentChange="handleCurrentChange"
-				/>
-				
-			</div>
-		</div>
-	</div>
-</template>
-
-<script>
-import { interactiveInterface } from '@/api/api'
-import mPage from '@/components/mPage.vue'
-export default {
-	name:'',
-	components: { mPage },
-	data () {
-		return {
-			select_users: [],
-			userList: [],
-			isSlideAllUsers: false,
-			select_userArr: [],//选中的数组
-			tableColums:[
-				{
-					label: '姓名',
-					key: 'RealName',
-				},
-				{
-					label: '手机号',
-					key: 'Mobile',
-				},
-				{
-					label: '角色',
-					key: 'RoleName',
-				},
-				{
-					label: '部门/分组',
-					key: 'DepartmentGroup',
-				},
-				{
-					label: '状态',
-					key: 'Enabled',
-				},
-				{
-					label: '操作',
-					key: 'action',
-				},
-			],
-			cascaderIdx: 1,
-			page_no: 1,
-			totals: 0,
-			tableData:[],
-		};
-	},
-	methods: {
-		/* 获取所有列表 */
-		getAllUser() {
-			interactiveInterface.allUserList()
-				.then(res => {
-					if(res.Ret !== 200) return
-
-					this.userList = res.Data.List;
-				})
-		},
-
-		/* 获取表格数据 */
-		getTableData() {
-			interactiveInterface.messageManageList({
-				RoleTypeCode:'yb_comment_admin',
-				CurrentIndex: this.page_no,
-				PageSize:10
-			}).then(res => {
-				if(res.Ret !== 200) return
-
-				const { List,Paging } = res.Data;
-
-				this.tableData = List || [];
-				this.totals = Paging.Totals;
-
-			})
-		},
-
-		/* 配置权限 */
-		setAuthHandle() {
-			if(!this.select_users) return this.$message.warning('请选择用户')
-
-			interactiveInterface.setMessageAuth({
-				RoleTypeCode:'yb_comment_admin',
-				AdminIds: this.select_users.join(',')
-			}).then(res => {
-				if(res.Ret !== 200) return
-				this.getTableData();
-			})
-		},
-
-		delHandle({ SysRoleAdminId }) {
-			this.$confirm('确认删除吗?', '提示', {
-        confirmButtonText: '确定',
-        cancelButtonText: '取消',
-        type: 'warning'
-      }).then(() => {
-				interactiveInterface.delMessageAuth({ SysRoleAdminId })
-					.then(res => {
-						if(res.Ret !== 200) return
-						this.$message.success('删除成功')
-						this.getTableData();
-					})
-			})
-		},
-
-		handleCurrentChange(e) {
-			this.page_no = e;
-			this.getTableData();
-		},
-
-		removeTagChange(val) {
-			this.select_users = this.select_users.filter(_ => _ !== val);
-      this.cascaderIdx++;
-      this.selectUsers()
-		},
-
-		removeUser({ id }, index) {
-			this.select_userArr.splice(index, 1);
-      this.select_users = this.select_users.filter(_ => _ !== id );
-      this.cascaderIdx++;
-		},
-
-		/* 选中用户改变时 */
-		selectUsers() {
-			this.select_userArr = this.filterData([],this.userList)
-		},
-
-		filterData(arr,data) {
-      data.forEach(item => {
-				if(this.select_users.includes(item.AdminId)) {
-					arr.push({
-						id: item.AdminId,
-            name: item.RealName,
-					})
-				}else {
-					item.ChildrenList && this.filterData(arr,item.ChildrenList)
-				}
-      });
-			return arr
-		}
-
-	},
-	mounted() {
-		this.getAllUser();
-		this.getTableData();
-	},
-}
-</script>
-<style lang='scss' scoped>
-.messageManage-conatainer{
-	.main_top {
-		margin-bottom: 20px;
-		padding: 20px 30px;
-		background: #fff;
-		border: 1px solid #ececec;
-		border-radius: 4px;
-		box-shadow: 0 3px 6px rgba(0, 0, 0, 0.05);
-		.select-users{
-			margin-top: 20px;
-			padding-right: 45px;
-			display: flex;
-			flex-wrap: wrap;
-			position: relative;
-			overflow: hidden;
-			.slide-cont {
-				position: absolute;
-				right: 0;
-				top: 10px;
-				color: #409EFF;
-			}
-			.el-tag {
-				margin: 5px;
-			}
-		}
-	}
-	.main {
-		background: #fff;
-		padding: 20px;
-		border: 1px solid #ececec;
-		border-radius: 4px;
-		box-shadow: 0px 3px 6px rgba(0, 0, 0, 0.05);
-		height: calc(100vh - 240px);
-		overflow: hidden;
-		position: relative;
-	}
-}
-</style>

+ 0 - 341
src/views/system_manage/operationsManage.vue

@@ -1,341 +0,0 @@
-<template>
-  <div class="operations-wrap">
-    <div class="select-wrap">
-      <div class="select">
-        <el-cascader
-          v-model="users"
-          :options="options"
-          :props="props"
-          collapse-tags
-          :show-all-levels="false"
-          :key="modifySelect"
-          clearable
-          @change="changeSelect"
-          filterable
-        ></el-cascader>
-        <el-button
-          type="primary"
-          style="margin-left: 20px"
-          @click="handleAddQuestionAdmins"
-          >配置权限</el-button
-        >
-      </div>
-      <div class="result-list">
-        <div class="result-item" v-for="item in selectList" :key="item.AdminId">
-          <span>{{ item.RealName }}</span>
-          <i class="el-icon-error" @click="handleDeleteResult(item)"></i>
-        </div>
-      </div>
-    </div>
-    <div class="operations-table">
-      <div class="table-title">
-        <span>运营管理员</span>
-        <!--  <el-input
-          placeholder="姓名/手机号搜索"
-          v-model="search_txt"
-          style="max-width: 320px"
-          clearable
-        >
-          <i slot="prefix" class="el-input__icon el-icon-search"></i>
-        </el-input> -->
-      </div>
-      <el-table :data="tableData" border v-loading="isShowloadding">
-        <el-table-column
-          v-for="item in tableColumns"
-          :key="item.label"
-          :label="item.label"
-          :prop="item.key"
-          align="center"
-        >
-          <template slot-scope="{ row }">
-            <span v-if="item.key === 'Enabled'">
-              {{ row[item.key] === 0 ? "已禁用" : "已启用" }}
-            </span>
-            <div v-else-if="item.key === 'RealName'">
-              <el-tag
-                size="small"
-                v-if="row.LabelVal"
-                :style="
-                  row.LabelVal == 1 || row.LabelVal == 2
-                    ? 'color:#fff;background:#409EFF'
-                    : 'color:#409EFF;background:#ECF5FF'
-                "
-                style="position: absolute; left: 10px"
-                >{{
-                  row.LabelVal == 1
-                    ? "超管"
-                    : row.LabelVal == 2
-                    ? "管理员"
-                    : row.LabelVal == 3
-                    ? "部门经理"
-                    : row.LabelVal == 4
-                    ? "组长"
-                    : "主管"
-                }}</el-tag
-              >
-              <span style="position: relative">{{ row.RealName }}</span>
-            </div>
-            <span v-else>{{ row[item.key] }}</span>
-          </template>
-        </el-table-column>
-        <el-table-column label="操作" align="center">
-          <template slot="header" slot-scope="{}">
-            <span>操作</span>
-            <el-tooltip
-              effect="dark"
-              placement="top-start"
-              content="此项删除只删除该用户的运营管理员权限"
-            >
-              <i class="el-icon-question" />
-            </el-tooltip>
-          </template>
-          <template slot-scope="{ row }">
-            <span
-              @click="handleDeleteAuth(row)"
-              style="cursor: pointer; color: #d1433a"
-              >删除</span
-            >
-          </template>
-        </el-table-column>
-        <div slot="empty" style="lineheight: 44px; margin: 60px 0; color: #999">
-          <img
-            src="~@/assets/img/cus_m/nodata.png"
-            alt=""
-            style="display: block; width: 160px; height: 128px; margin: auto"
-          />
-          <span>暂无数据</span>
-        </div>
-      </el-table>
-      <el-pagination
-        layout="total,prev,pager,next,jumper"
-        background
-        :current-page="page_no"
-        @current-change="handleCurrentChange"
-        :page-size="pageSize"
-        :total="total"
-        style="text-align: end; margin-top: 20px"
-      >
-      </el-pagination>
-    </div>
-  </div>
-</template>
-
-<script>
-import { departInterence } from "@/api/api.js";
-export default {
-  data() {
-    return {
-      users: "",
-      selectList: [],
-      tableColumns: [
-        {
-          label: "姓名",
-          key: "RealName",
-        },
-        {
-          label: "手机号",
-          key: "Mobile",
-        },
-        {
-          label: "角色",
-          key: "RoleName",
-        },
-        {
-          label: "部门/分组",
-          key: "DepartmentGroup",
-        },
-        {
-          label: "状态",
-          key: "Enabled",
-        },
-      ],
-      options: [],
-      props: {
-        value: "AdminId",
-        label: "RealName",
-        children: "ChildrenList",
-        multiple: true,
-      },
-      modifySelect: 0, //重新渲染级联选择框
-      tableData: [],
-      search_txt: "",
-      page_no: 1,
-      pageSize: 10,
-      total: 1,
-      isShowloadding: false,
-    };
-  },
-  methods: {
-    handleCurrentChange(page) {
-      this.page_no = page;
-      this.getTableData();
-    },
-    changeSelect() {
-      //根据users的值,生成select-list
-      //select-list:[index,name],index:在users里的索引值,name:在user里,实际选择的那项的label值:user[0][user[0].length-1].label
-      if (this.users.length === 0) {
-        this.modifySelect = 0;
-        this.selectList = [];
-        return;
-      }
-      const findItem = (ids) => {
-        let data = this.options;
-        let item = null;
-        for (let i = 0; i < ids.length; i++) {
-          item = data.find((_item) => _item.AdminId === ids[i]);
-          if (item.ChildrenList) {
-            data = item.ChildrenList;
-          }
-        }
-        return item;
-      };
-      this.selectList = [];
-      this.users.forEach((item) => {
-        const temp = findItem(item);
-        this.selectList.push(temp);
-      });
-    },
-    handleDeleteResult(item) {
-      //从select-list和users删除这一项
-      console.log(item);
-      const userIndex = this.users.findIndex((i) => {
-        return i[i.length - 1] === item.AdminId;
-      });
-      this.users.splice(userIndex, 1);
-      this.modifySelect++;
-      const selectIndex = this.selectList.findIndex(
-        (i) => i.AdminId === item.AdminId
-      );
-      this.selectList.splice(selectIndex, 1);
-    },
-    async handleDeleteAuth(item) {
-      const res = await departInterence.deleteQuestionAdmin({
-        SysRoleAdminId: item.SysRoleAdminId,
-      });
-      if (res.Ret === 200) {
-        this.$message.success("删除成功");
-        this.getTableData();
-      }
-    },
-    async handleAddQuestionAdmins() {
-      if (!this.selectList.length) return;
-      const adminArr = [];
-      this.selectList.map((item) => {
-        adminArr.push(item.AdminId);
-      });
-      const res = await departInterence.addQuestionAdmins({
-        AdminIds: adminArr.join(","),
-        RoleTypeCode: "yb_question_admin",
-      });
-      if (res.Ret === 200) {
-        this.$message.success("配置成功");
-        this.page_no = 1;
-        this.getTableData();
-      }
-    },
-    async getQuestionAdminList() {
-      const res = await departInterence.getQuestionAdminList();
-      if (res.Ret === 200) {
-        this.options = res.Data.List;
-      }
-    },
-    async getTableData() {
-      this.isShowloadding = true;
-      const res = await departInterence.getRoleAdminList({
-        RoleTypeCode: "yb_question_admin",
-        PageSize: this.pageSize,
-        CurrentIndex: this.page_no,
-      });
-      if (res.Ret === 200) {
-        const { List, Paging } = res.Data;
-        this.tableData = List;
-        this.page_no = Paging.CurrentIndex;
-        this.total = Paging.Totals;
-      } else if (res.Ret === 403) {
-        //无权查看,清空tableData
-        this.tableData = [];
-        this.page_no = 1;
-        this.total = 0;
-      }
-      this.isShowloadding = false;
-    },
-  },
-  mounted() {
-    this.getQuestionAdminList();
-    this.getTableData();
-  },
-};
-</script>
-<style lang="scss">
-.operations-wrap {
-  .select-wrap {
-    .select {
-      .el-cascader {
-        .el-tag {
-          background: #f0f2f5;
-          span {
-            color: #909399;
-          }
-          i {
-            color: white;
-            background: #909399;
-            &:hover {
-              background: #a5a8af;
-            }
-          }
-        }
-      }
-    }
-  }
-}
-</style>
-<style scoped lang="scss">
-.operations-wrap {
-  .select-wrap,
-  .operations-table {
-    margin-bottom: 28px;
-    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;
-  }
-  .operations-table {
-    margin-bottom: 0;
-    .table-title {
-      display: flex;
-      justify-content: space-between;
-      margin-bottom: 20px;
-    }
-  }
-  .result-list {
-    margin-top: 20px;
-    display: flex;
-    flex-wrap: wrap;
-    .result-item {
-      margin: 10px 10px 0 0;
-      padding: 5px 10px;
-      background-color: #f0f2f5;
-      border-radius: 4px;
-      display: flex;
-      justify-content: space-between;
-      align-items: center;
-      span,
-      i {
-        color: #909399;
-        font-size: 14px;
-      }
-      span {
-        margin-right: 5px;
-      }
-      i {
-        cursor: pointer;
-        &:hover {
-          color: #a5a8af;
-        }
-      }
-    }
-  }
-}
-</style>

+ 2 - 0
src/views/system_manage/roleManage.vue

@@ -115,6 +115,8 @@ export default {
 			page_no:1,
 			total:1,
 			pageSize:10,
+
+			isAddRole: false,
 			roleForm:{
 				title:'添加角色',
 				name:'',

Daži faili netika attēloti, jo izmaiņu fails ir pārāk liels