Browse Source

Merge branch 'yx' of http://61.161.152.110:10101/r/electronic-map into yx

chenminghua 4 years ago
parent
commit
a1b4c0e927

+ 3 - 2
public/static/config/modeConfig.js

@@ -1,6 +1,6 @@
 
 
 // 本地联调开关
 // 本地联调开关
-const localTest = 0;
+const localTest = 1;
 
 
 // 服务器地址
 // 服务器地址
 let baseURL = null;
 let baseURL = null;
@@ -10,7 +10,8 @@ let websocketUrl = null;
 
 
 if (localTest) {
 if (localTest) {
   // baseURL = "http://192.168.10.23:8082/" // 联机调试 - 石林
   // baseURL = "http://192.168.10.23:8082/" // 联机调试 - 石林
-  baseURL = "http://192.168.10.18:8082/" // 联机调试 - 石林
+  // baseURL = "http://192.168.10.18:8082/" // 联机调试 - 石林
+  baseURL = "http://10.155.32.33:9001/" // 联机调试 - 谢生杰
   websocketUrl = (baseURL.replace(/http:\/\//g, "")) + "gyee-websocket";
   websocketUrl = (baseURL.replace(/http:\/\//g, "")) + "gyee-websocket";
 } else {
 } else {
   baseURL = "http://10.155.32.4:8082/" // 正式环境
   baseURL = "http://10.155.32.4:8082/" // 正式环境

+ 1 - 0
src/components/coms/table/table.vue

@@ -108,6 +108,7 @@ export default {
       if (col.click) col.click(event, data);
       if (col.click) col.click(event, data);
     },
     },
     onSort(col) {
     onSort(col) {
+		console.log(col)
       if (col.sortable == true) {
       if (col.sortable == true) {
         this.sortCol = col.field;
         this.sortCol = col.field;
         switch (this.sortType) {
         switch (this.sortType) {

+ 31 - 4
src/router/index.js

@@ -85,15 +85,42 @@ const routes = [
     name: 'LightMatrix3',
     name: 'LightMatrix3',
     component: () => import(/* webpackChunkName: "lightmatrix3" */ '../views/LightMatrix3/LightMatrix3.vue'),
     component: () => import(/* webpackChunkName: "lightmatrix3" */ '../views/LightMatrix3/LightMatrix3.vue'),
   }, {
   }, {
-    path: '/decision/decision1',
+    path: '/decision/decision1',//风机绩效榜
     name: 'decision1',
     name: 'decision1',
     component: () => import(/* webpackChunkName: "decision1" */ '../views/Decision/Decision1.vue'),
     component: () => import(/* webpackChunkName: "decision1" */ '../views/Decision/Decision1.vue'),
   },
   },
   {
   {
-    path: '/decision/decision2',
-    name: 'decision2',
-    component: () => import(/* webpackChunkName: "decision2" */ '../views/Decision/Decision2.vue'),
+    path: '/decision/decision1Mx',//风机绩效榜明细
+    name: 'decision1Mx',
+    component: () => import(/* webpackChunkName: "decision1Mx" */ '../views/Decision/Decision1Mx.vue'),
   },
   },
+  
+    {
+      path: '/decision/decision2',//五项损失率
+      name: 'decision2',
+      component: () => import(/* webpackChunkName: "decision2" */ '../views/Decision/Decision2.vue'),
+    },
+    {
+      path: '/decision/decision2Cndb',//场内对标
+      name: 'decision2Cndb',
+      component: () => import(/* webpackChunkName: "decision2Cndb" */ '../views/Decision/Decision2Cndb.vue'),
+    },
+    {
+      path: '/decision/decision2Cjdb',//场际对标
+      name: 'decision2Cjdb',
+      component: () => import(/* webpackChunkName: "decision2Cjdb" */ '../views/Decision/Decision2Cjdb.vue'),
+    },
+    {
+      path: '/decision/decision2Xmdb',//项目对标
+      name: 'decision2Xmdb',
+      component: () => import(/* webpackChunkName: "decision2Xmdb" */ '../views/Decision/Decision2Xmdb.vue'),
+    },
+    {
+      path: '/decision/decision2Xldb',//线路对标
+      name: 'decision2Xldb',
+      component: () => import(/* webpackChunkName: "decision2Xldb" */ '../views/Decision/Decision2Xldb.vue'),
+    },
+  
   {
   {
     path: '/decision/decision3',
     path: '/decision/decision3',
     name: 'decision3',
     name: 'decision3',

+ 407 - 274
src/views/Decision/Decision1.vue

@@ -1,289 +1,422 @@
 <template>
 <template>
-  <div class="decision-page-1">
-    <!-- 查询样式统一处理 样式在 assets/styles/form.less 文件中 -->
-    <div class="query mg-b-8">
-      <div class="query-items">
-        <div class="query-item">
-          <div class="lable">场站:</div>
-          <div class="search-input">
-            <el-select v-model="value1" clearable placeholder="请选择" popper-class="select">
-              <el-option v-for="item in options" :key="item.value" :label="item.label" :value="item.value"> </el-option>
-            </el-select>
-          </div>
-        </div>
-        <div class="query-item">
-          <div class="lable">项目:</div>
-          <div class="search-input">
-            <el-select v-model="value2" multiple placeholder="请选择" popper-class="select">
-              <el-option v-for="item in options" :key="item.value" :label="item.label" :value="item.value"> </el-option>
-            </el-select>
-          </div>
-        </div>
-        <div class="query-item">
-          <div class="lable">线路:</div>
-          <div class="search-input">
-            <el-select v-model="value3" multiple placeholder="请选择" popper-class="select">
-              <el-option v-for="item in options" :key="item.value" :label="item.label" :value="item.value"> </el-option>
-            </el-select>
-          </div>
-        </div>
-        <div class="query-item">
-          <div class="lable">开始日期:</div>
-          <div class="search-input">
-            <el-date-picker v-model="value4" type="date" placeholder="选择日期" popper-class="date-select"> </el-date-picker>
-          </div>
-        </div>
-        <div class="query-item">
-          <div class="lable">结束日期:</div>
-          <div class="search-input">
-            <el-date-picker v-model="value5" type="date" placeholder="选择日期" popper-class="date-select"> </el-date-picker>
-          </div>
-        </div>
-      </div>
-      <div class="query-actions">
-        <button class="btn green">搜索</button>
-        <button class="btn">明细信息</button>
-        <button class="btn">导出</button>
-      </div>
-    </div>
-    <div class="actions mg-b-8">
-      <button class="btn green">风场</button>
-      <button class="btn">项目</button>
-      <button class="btn">集电线路</button>
-    </div>
-    <el-row :type="'flex'" class="content">
-      <el-col :span="12" class="pd-r-8">
-        <toolbar-panel :title="123" :showLine="false">
-          <template v-slot:tools>
-            <div class="tools">
-              <div class="tool-block">
-                <div class="legend bg-green"></div>
-                <div class="legend-text">实际电量</div>
-              </div>
-              <div class="tool-block">
-                <div class="legend bg-orange"></div>
-                <div class="legend-text">计划检修损失</div>
-              </div>
-              <div class="tool-block">
-                <div class="legend bg-yellow"></div>
-                <div class="legend-text">非计划检修损失</div>
-              </div>
-              <div class="tool-block">
-                <div class="legend bg-red"></div>
-                <div class="legend-text">限电损失</div>
-              </div>
-              <div class="tool-block">
-                <div class="legend bg-purple"></div>
-                <div class="legend-text">受累损失</div>
-              </div>
-              <div class="tool-block">
-                <div class="legend bg-blue"></div>
-                <div class="legend-text">性能损失</div>
-              </div>
-            </div>
-          </template>
-          <bar-line-chart :height="'calc(100vh - 200px)'" :color="barColor" />
-        </toolbar-panel>
-      </el-col>
-      <el-col :span="12" class="pd-l-8">
-        <panel :title="'项目列表'" :showLine="false">
-          <div class="project-table">
-            <Table :data="tableData"></Table>
-          </div>
-        </panel>
-      </el-col>
-    </el-row>
-  </div>
+	<div class="decision-page-1">
+		<!-- 查询样式统一处理 样式在 assets/styles/form.less 文件中 -->
+		<div class="query mg-b-8">
+			<div class="query-items">
+				<div class="query-item">
+					<div class="lable">场站:</div>
+					<div class="search-input">
+						<el-select v-model="value1" @change="ChangZhanChange(value1)" clearable placeholder="请选择"
+							popper-class="select">
+							<el-option v-for="item in ChangZhan" :key="item.id" :value="item.id" :label="item.name">
+							</el-option>
+						</el-select>
+					</div>
+				</div>
+				<div class="query-item">
+					<div class="lable">项目:</div>
+					<div class="search-input">
+						<el-select v-model="value2" @change="XiangMuChange(value2)" multiple placeholder="请选择"
+							popper-class="select">
+							<el-option v-for="item in XiangMu" :key="item.id" :value="item.id" :label="item.name">
+							</el-option>
+						</el-select>
+					</div>
+				</div>
+				<div class="query-item">
+					<div class="lable">线路:</div>
+					<div class="search-input">
+						<el-select v-model="value3" @change="XianLuChange(value3)" multiple placeholder="请选择"
+							popper-class="select">
+							<el-option v-for="item in XianLu" :key="item.id" :label="item.name" :value="item.id">
+							</el-option>
+						</el-select>
+					</div>
+				</div>
+				<div class="query-item">
+					<div class="lable">开始日期:</div>
+					<div class="search-input">
+						<el-date-picker v-model="value4" @change="BeginChange(value4)" type="date"
+							value-format="YYYY-MM-DD" placeholder="选择日期" popper-class="date-select">
+						</el-date-picker>
+					</div>
+				</div>
+				<div class="query-item">
+					<div class="lable">结束日期:</div>
+					<div class="search-input">
+						<el-date-picker v-model="value5" @change="EndChange(value5)" type="date"
+							value-format="YYYY-MM-DD" placeholder="选择日期" popper-class="date-select">
+						</el-date-picker>
+						<div class="unit svg-icon svg-icon-gray">
+							<svg-icon :svgid="''" />
+						</div>
+					</div>
+				</div>
+			</div>
+			<div class="query-actions">
+				<button class="btn green">搜索</button>
+				<button class="btn" @click="mxClick()">明细信息</button>
+				<button class="btn">导出</button>
+			</div>
+		</div>
+		<div class="actions mg-b-8">
+			<button class="btn" :class="TypeClass==1?'green':''" @click="TypeClick(1)">风场</button>
+			<button class="btn" :class="TypeClass==2?'green':''" @click="TypeClick(2)">项目</button>
+			<button class="btn" :class="TypeClass==3?'green':''" @click="TypeClick(3)">集电线路</button>
+		</div>
+		<el-row :type="'flex'" class="content">
+			<el-col :span="12" class="pd-r-8">
+				<toolbar-panel title="风机绩效榜" :showLine="false">
+					<bar-line-chart :height="'calc(100vh - 200px)'" :bardata="bardata" :lineData="lineData" :color="barColor" lineName="理论发电量"/>
+				</toolbar-panel>
+			</el-col>
+			<el-col :span="12" class="pd-l-8">
+				<panel :title="'项目列表'" :showLine="false">
+					<div class="project-table">
+						<Table :data="tableData"></Table>
+					</div>
+				</panel>
+			</el-col>
+		</el-row>
+	</div>
 </template>
 </template>
 
 
 <script>
 <script>
-import BarLineChart from "../../components/chart/combination/bar-line-chart.vue";
-import Panel from "../../components/coms/panel/panel.vue";
-import ToolbarPanel from "../../components/coms/panel/toolbar-panel.vue";
-import Table from "../../components/coms/table/table.vue";
-import partten from "@/helper/partten.js";
-
-export default {
-  components: { ToolbarPanel, BarLineChart, Panel, Table },
-  data() {
-    return {
-      tableData: {
-        column: [
-          {
-            name: "",
-            field: "index",
-            is_num: false,
-            is_light: false,
-          },
-          {
-            name: "名称",
-            field: "name",
-            is_num: false,
-            is_light: false,
-          },
-          {
-            name: "理论发电量",
-            field: "lqf",
-            is_num: false,
-            is_light: false,
-          },
-          {
-            name: "SCADA发电量",
-            field: "yggl",
-            is_num: false,
-            is_light: false,
-          },
-          {
-            name: "风速",
-            field: "yyy",
-            is_num: false,
-            is_light: false,
-          },
-          {
-            name: "非计划检修",
-            field: "pcspp",
-            is_num: false,
-            is_light: false,
-          },
-          {
-            name: "计划检修",
-            field: "u1",
-            is_num: false,
-            is_light: false,
-          },
-          {
-            name: "受累",
-            field: "u2",
-            is_num: false,
-            is_light: true,
-          },
-          {
-            name: "限电",
-            field: "v1",
-            is_num: false,
-            is_light: false,
-          },
-          {
-            name: "性能",
-            field: "v2",
-            is_num: false,
-            is_light: false,
-          },
-          {
-            name: "风能率用率%",
-            field: "w1",
-            is_num: false,
-            is_light: false,
-          },
-        ],
-        data: [
-          {
-            index: 1,
-            name: "MG01-01",
-            lqf: "0.1000",
-            yggl: "0.1000",
-            yyy: "0.10",
-            pcspp: "0.1000",
-            u1: "0.1000",
-            u2: "0.1000",
-            v1: "0.1000",
-            v2: "0.1000",
-            w1: "0.1000",
-            w2: "0.1000",
-            zca: "0.1000",
-            zcb: "0.1000",
-            clx: "0.1000",
-            clx1: "0.1000",
-            clx2: "0.1000",
-            jc: "0.1000",
-            hh: "0.1000",
-            hj: "0.1000",
-            is_light: false,
-          },
-        ],
-      },
-      options: [
-        {
-          value: "选项1",
-          label: "黄金糕",
-        },
-        {
-          value: "选项2",
-          label: "双皮奶",
-        },
-        {
-          value: "选项3",
-          label: "蚵仔煎",
-        },
-        {
-          value: "选项4",
-          label: "龙须面",
-        },
-        {
-          value: "选项5",
-          label: "北京烤鸭",
-        },
-      ],
-      barColor: [partten.getColor("green"), partten.getColor("orange"), partten.getColor("yellow"), partten.getColor("red"), partten.getColor("purple"), partten.getColor("blue")],
-      value1: [],
-      value2: [],
-      value3: [],
-      value4: "",
-      value5: "",
-    };
-  },
-  created() {
-    for (let i = 1; i < 50; i++) {
-      this.tableData.data.push(JSON.parse(JSON.stringify(this.tableData.data[0])));
-      this.tableData.data[i].index = i + 1;
-    }
-  },
-};
+	import BarLineChart from "../../components/chart/combination/bar-line-chart.vue";
+	import Panel from "../../components/coms/panel/panel.vue";
+	import SvgIcon from "../../components/coms/icon/svg-icon.vue";
+	import ToolbarPanel from "../../components/coms/panel/toolbar-panel.vue";
+	import Table from "../../components/coms/table/table.vue";
+	import partten from "@/helper/partten.js";
+	export default {
+		components: {
+			ToolbarPanel,
+			BarLineChart,
+			Panel,
+			Table,
+			partten,
+			SvgIcon
+		},
+		data() {
+			return {
+				tableData: {
+					column: [{
+							name: "",
+							field: "index",
+							is_num: false,
+							is_light: false
+						},
+						{
+							name: "名称",
+							field: "name",
+							is_num: false,
+							is_light: false,
+						},
+						{
+							name: "理论发电量",
+							field: "llfdl",
+							is_num: false,
+							is_light: false,
+							sortable:true
+						},
+						{
+							name: "SCADA发电量",
+							field: "sjfdl",
+							is_num: false,
+							is_light: false,
+							sortable:true
+						},
+						{
+							name: "风速",
+							field: "speed",
+							is_num: false,
+							is_light: false,
+							sortable:true
+						},
+						{
+							name: "非计划检修",
+							field: "fjhjx",
+							is_num: false,
+							is_light: false,
+							sortable:true
+						},
+						{
+							name: "计划检修",
+							field: "jhjx",
+							is_num: false,
+							is_light: false,
+							sortable:true
+						},
+						{
+							name: "受累",
+							field: "sl",
+							is_num: false,
+							is_light: true,
+							sortable:true
+						},
+						{
+							name: "限电",
+							field: "xd",
+							is_num: false,
+							is_light: false,
+							sortable:true
+						},
+						{
+							name: "性能",
+							field: "xn",
+							is_num: false,
+							is_light: false,
+							sortable:true
+						},
+						{
+							name: "风能利用率%",
+							field: "fnlly",
+							is_num: false,
+							is_light: false,
+							sortable:true
+						}
+					],
+					data: [],
+				},
+				ChangZhan: [], //场站
+				XiangMu: [], //项目
+				XianLu: [], //线路
+				value1: [],
+				value2: [],
+				value3: [],
+				value4: "",
+				value5: "",
+				barColor: [partten.getColor("green"), partten.getColor("orange"), partten.getColor("yellow"), partten.getColor("red"), partten.getColor("purple"), partten.getColor("blue")],
+				TypeClass: 1, //风场,项目,集电线路 的按钮颜色,默认第一个
+				bardata: [],
+				lineData: [],
+			};
+		},
+		created() {
+			this.ChangZhanVal();
+			this.value4 = this.getTime(1);
+			this.value5 = this.getTime(2);
+			this.AjaxCommon();
+		},
+		methods: {
+			ChangZhanVal() {
+				var that = this;
+				that.API.requestData({
+					method: "GET",
+					subUrl: "benchmarking/wplist",
+					success(res) {
+						that.ChangZhan = res.data;
+					}
+				});
+			},
+			ChangZhanChange(val) {
+				this.TypeClass = "";
+				this.value1 = val;
+				this.value2 = [];
+				this.value3 = [];
+				this.AjaxCommon();
+				this.XiangMuVal(val);
+			},
+			XiangMuVal(val) {
+				var that = this;
+				that.API.requestData({
+					method: "GET",
+					subUrl: "benchmarking/projectList",
+					data: {
+						wpids: val
+					},
+					success(res) {
+						that.XiangMu = res.data;
+					}
+				});
+			},
+			XiangMuChange(val) {
+				this.TypeClass = "";
+				this.value2 = val;
+				this.value3 = [];
+				this.AjaxCommon();
+				this.XianLuVal(val);
+			},
+			XianLuVal(val) {
+				var that = this;
+				that.API.requestData({
+					method: "GET",
+					subUrl: "benchmarking/lineList",
+					data: {
+						projects: val
+					},
+					success(res) {
+						that.XianLu = res.data;
+					}
+				});
+			},
+			XianLuChange(val) {
+				this.TypeClass = "";
+				this.value3 = val;
+				this.AjaxCommon();
+			},
+			BeginChange(val) {
+				this.value4 = val;
+				this.AjaxCommon();
+			},
+			EndChange(val) {
+				this.value5 = val;
+				this.AjaxCommon();
+			},
+			TypeClick(val) {
+				if (val != this.TypeClass && this.TypeClass) {
+					this.TypeClass = val;
+					// 重置状态start
+					this.value1 = [];
+					this.value2 = [];
+					this.value3 = [];
+					this.value4 = this.getTime(1);
+					this.value5 = this.getTime(2);
+					this.AjaxCommon();
+					// 重置状态end
+				}
+			},
+			getTime(val) { //时间戳处理,val=1是默认开始时间(当前月第一天),val=2是默认结束时间(今天)
+				var date = new Date();
+				var year = date.getFullYear(),
+					month = date.getMonth() + 1,
+					day = date.getDate();
+				month >= 1 && month <= 9 ? (month = '0' + month) : '';
+				day >= 0 && day <= 9 ? (day = '0' + day) : '';
+				var begin = year + '-' + month + '-01';
+				var end = year + '-' + month + '-' + day;
+				if (val == 1) {
+					return begin;
+				} else if (val == 2) {
+					return end;
+				}
+			},
+			AjaxCommon() {
+				var that = this;
+				that.API.requestData({
+					method: "GET",
+					subUrl: "benchmarking/fjjxb",
+					data: {
+						wpids: that.value1,
+						projectids: that.value2,
+						lineids: that.value3,
+						beginDate: that.value4,
+						endDate: that.value5,
+						type: that.TypeClass,
+						target: '',
+						sort: ''
+					},
+					success(res) {
+						console.log(res)
+						var name = [],
+							data = [],
+							llfdl = [],
+							legend = ["实际电量", "计划检修损失", "非计划检修损失", "限电损失", "受累损失", "性能损失"],
+							data2 = []; //项目列表
+						res.data.forEach((item, index) => {
+							name.push(item.name);
+							data.push([item.sjfdl, item.jhjx, item.fjhjx, item.xd, item.sl, item.xn])
+							llfdl.push(item.llfdl);
+							data2.push({
+								index: index + 1,
+								name: item.name,
+								llfdl: item.llfdl,
+								sjfdl: item.sjfdl,
+								speed: item.speed,
+								fjhjx: item.fjhjx,
+								jhjx: item.jhjx,
+								sl: item.sl,
+								xd: item.xd,
+								xn: item.xn,
+								fnlly: item.fnlly,
+								is_light: false
+							})
+						})
+						name.pop();
+						data.pop();
+						llfdl.pop();
+						if (data.length > 0) {
+							let arr1 = [];
+							const length = data[0].length;
+							for (var i = 0; i < length; i++) {
+								let arr2 = [];
+								data.forEach(ele => {
+									arr2.push(ele[i])
+								});
+								arr1.push(arr2);
+							}
+							that.lineData = llfdl;
+							that.bardata = {
+								area: name,
+								legend: legend,
+								data: arr1
+							};
+				
+						}
+						that.tableData.data = data2;
+					}
+				});
+			},
+			mxClick() {
+				this.$router.push("/decision/decision1Mx")
+			}
+		}
+	};
 </script>
 </script>
 
 
 <style lang="less">
 <style lang="less">
-.decision-page-1 {
-  .com-panel .panel-title {
-    line-height: 3.4259vh;
-  }
+	.decision-page-1 {
+		.com-panel .panel-title {
+			line-height: 3.4259vh;
+		}
+
+		.tools {
+			display: flex;
+			line-height: 3.4259vh;
+
+			.tool-block {
+				display: flex;
+				align-items: center;
+				margin-left: 0.741vh;
+
+				.legend {
+					flex: auto;
+					width: 0.741vh;
+					height: 0.741vh;
+					margin-right: 0.741vh;
 
 
-  .tools {
-    display: flex;
-    line-height: 3.4259vh;
+					&.long {
+						width: 2.963vh;
+						height: 0.37vh;
+					}
+				}
 
 
-    .tool-block {
-      display: flex;
-      align-items: center;
-      margin-left: 0.741vh;
+				.legend-text {
+					color: @gray-l;
+					font-size: @fontsize-s;
+				}
+			}
+		}
 
 
-      .legend {
-        flex: auto;
-        width: 0.741vh;
-        height: 0.741vh;
-        margin-right: 0.741vh;
+		.project-table {
+			overflow: auto;
 
 
-        &.long {
-          width: 2.963vh;
-          height: 0.37vh;
-        }
-      }
+			tbody {
+				height: calc(100vh - 24.5vh);
+			}
 
 
-      .legend-text {
-        color: @gray-l;
-        font-size: @fontsize-s;
-      }
-    }
-  }
+			td {
+				color: #b2bdc0;
+			}
+		}
 
 
-  .project-table {
-    overflow: auto;
+		.contentMx {
+			width: 100%;
+			overflow-x: auto;
+		}
 
 
-    tbody {
-      height: calc(100vh - 24.5vh);
-    }
-    td {
-      color: #b2bdc0;
-    }
-  }
-}
+		.activeMx {
+			width: 150%;
+		}
+	}
 </style>
 </style>

+ 546 - 0
src/views/Decision/Decision1Mx.vue

@@ -0,0 +1,546 @@
+<template>
+	<div class="decision-page-1">
+		<!-- 查询样式统一处理 样式在 assets/styles/form.less 文件中 -->
+		<div class="query mg-b-8">
+			<div class="query-items">
+				<div class="query-item">
+					<div class="lable">场站:</div>
+					<div class="search-input">
+						<el-select v-model="value1" @change="ChangZhanChange(value1)" clearable placeholder="请选择"
+							popper-class="select">
+							<el-option v-for="item in ChangZhan" :key="item.id" :value="item.id" :label="item.name">
+							</el-option>
+						</el-select>
+					</div>
+				</div>
+				<div class="query-item">
+					<div class="lable">项目:</div>
+					<div class="search-input">
+						<el-select v-model="value2" @change="XiangMuChange(value2)" multiple placeholder="请选择"
+							popper-class="select">
+							<el-option v-for="item in XiangMu" :key="item.id" :value="item.id" :label="item.name">
+							</el-option>
+						</el-select>
+					</div>
+				</div>
+				<div class="query-item">
+					<div class="lable">线路:</div>
+					<div class="search-input">
+						<el-select v-model="value3" @change="XianLuChange(value3)" multiple placeholder="请选择"
+							popper-class="select">
+							<el-option v-for="item in XianLu" :key="item.id" :label="item.name" :value="item.id">
+							</el-option>
+						</el-select>
+					</div>
+				</div>
+				<div class="query-item">
+					<div class="lable">开始日期:</div>
+					<div class="search-input">
+						<el-date-picker v-model="value4" @change="BeginChange(value4)" type="date"
+							value-format="YYYY-MM-DD" placeholder="选择日期" popper-class="date-select">
+						</el-date-picker>
+					</div>
+				</div>
+				<div class="query-item">
+					<div class="lable">结束日期:</div>
+					<div class="search-input">
+						<el-date-picker v-model="value5" @change="EndChange(value5)" type="date"
+							value-format="YYYY-MM-DD" placeholder="选择日期" popper-class="date-select">
+						</el-date-picker>
+						<div class="unit svg-icon svg-icon-gray">
+							<svg-icon :svgid="''" />
+						</div>
+					</div>
+				</div>
+			</div>
+			<div class="query-actions">
+				<button class="btn">搜索</button>
+				<button class="btn green" @click="mxClick()">明细信息</button>
+				<button class="btn">导出</button>
+			</div>
+		</div>
+		<div class="actions mg-b-8">
+			<button class="btn" :class="TypeClass==1?'green':''" @click="TypeClick(1)">风场</button>
+			<button class="btn" :class="TypeClass==2?'green':''" @click="TypeClick(2)">项目</button>
+			<button class="btn" :class="TypeClass==3?'green':''" @click="TypeClick(3)">集电线路</button>
+		</div>
+		<div class="contentMx">
+			<div class="activeMx">
+				<el-row :type="'flex'" class="content">
+					<el-col :span="12" class="pd-r-8">
+						<toolbar-panel title="风机绩效榜明细" :showLine="false">
+							<bar-line-chart :height="'calc(100vh - 200px)'" :bardata="bardata" :lineData="lineData" :color="barColor" lineName="理论发电量"/>
+						</toolbar-panel>
+					</el-col>
+					<el-col :span="12" class="pd-l-8">
+						<panel :title="'项目列表'" :showLine="false">
+							<div class="project-table">
+								<Table :data="tableData"></Table>
+							</div>
+						</panel>
+					</el-col>
+				</el-row>
+			</div>
+		</div>
+	</div>
+</template>
+
+<script>
+	import BarLineChart from "../../components/chart/combination/bar-line-chart.vue";
+	import SvgIcon from "../../components/coms/icon/svg-icon.vue";
+	import Panel from "../../components/coms/panel/panel.vue";
+	import ToolbarPanel from "../../components/coms/panel/toolbar-panel.vue";
+	import Table from "../../components/coms/table/table.vue";
+	export default {
+		components: {
+			ToolbarPanel,
+			BarLineChart,
+			Panel,
+			Table,
+			SvgIcon
+		},
+		data() {
+			return {
+				tableData: {
+					column: [{
+							name: "",
+							field: "index",
+							is_num: false,
+							is_light: false,
+						},
+						{
+							name: "名称",
+							field: "name",
+							is_num: false,
+							is_light: false,
+						},
+						{
+							name: "理论发电量",
+							field: "llfdl",
+							is_num: false,
+							is_light: false,
+							sortable:true
+						},
+						{
+							name: "SCADA发电量",
+							field: "sjfdl",
+							is_num: false,
+							is_light: false,
+							sortable:true
+						},
+						{
+							name: "风速",
+							field: "speed",
+							is_num: false,
+							is_light: false,
+							sortable:true
+						},
+						{
+							name: "故障损失",
+							field: "fjhjx1",
+							is_num: false,
+							is_light: false,
+							sortable:true
+						},
+						{
+							name: "故障受累",
+							field: "fjhjx2",
+							is_num: false,
+							is_light: false,
+							sortable:true
+						},
+						{
+							name: "检修损失",
+							field: "jhjx1",
+							is_num: false,
+							is_light: false,
+							sortable:true
+						},
+						{
+							name: "检修受累",
+							field: "jhjx2",
+							is_num: false,
+							is_light: false,
+							sortable:true
+						},
+						{
+							name: "电网受累",
+							field: "sl1",
+							is_num: false,
+							is_light: false,
+							sortable:true
+						},
+						{
+							name: "天气受累",
+							field: "sl2",
+							is_num: false,
+							is_light: false,
+							sortable:true
+						},
+						{
+							name: "限电降出",
+							field: "xd1",
+							is_num: false,
+							is_light: false,
+							sortable:true
+						},
+						{
+							name: "限电停机",
+							field: "xd2",
+							is_num: false,
+							is_light: false,
+							sortable:true
+						},
+						{
+							name: "待风损失",
+							field: "xn1",
+							is_num: false,
+							is_light: false,
+							sortable:true
+						},
+						{
+							name: "手动停机",
+							field: "xn2",
+							is_num: false,
+							is_light: false,
+							sortable:true
+						},
+						{
+							name: "正常发电",
+							field: "xn3",
+							is_num: false,
+							is_light: false,
+							sortable:true
+						},
+						{
+							name: "缺陷降出",
+							field: "xn4",
+							is_num: false,
+							is_light: false,
+							sortable:true
+						},
+						{
+							name: "风能利用率%",
+							field: "fnlly",
+							is_num: false,
+							is_light: false,
+							sortable:true
+						}
+					],
+					data: [],
+				},
+				ChangZhan: [], //场站
+				XiangMu: [], //项目
+				XianLu: [], //线路
+				value1: [],
+				value2: [],
+				value3: [],
+				value4: "",
+				value5: "",
+				TypeClass: 1, //风场,项目,集电线路 的按钮颜色,默认第一个
+				bardata: [],
+				lineData: [],
+			};
+		},
+		created() {
+			this.ChangZhanVal();
+			this.value4 = this.getTime(1);
+			this.value5 = this.getTime(2);
+			this.AjaxCommon();
+
+
+			// var that = this;
+			// that.API.requestData({
+			// 	method: "GET",
+			// 	subUrl: "benchmarking/fjjxb",
+			// 	data: {
+			// 		wpids: that.value1,
+			// 		projectids: that.value2,
+			// 		lineids: that.value3,
+			// 		beginDate: that.value4,
+			// 		endDate: that.value5,
+			// 		type: that.TypeClass,
+			// 		target: 'llfdl',//当前点击的名称
+			// 		sort: 1//1或2
+			// 	},
+			// 	success(res) {
+			// 		console.log(JSON.stringify(res))
+			// 	}
+			// });
+			// http://10.155.32.33:9001/
+		},
+		methods: {
+			ChangZhanVal() {
+				var that = this;
+				that.API.requestData({
+					method: "GET",
+					subUrl: "benchmarking/wplist",
+					success(res) {
+						that.ChangZhan = res.data;
+					}
+				});
+			},
+			ChangZhanChange(val) {
+				this.TypeClass = "";
+				this.value1 = val;
+				this.value2 = [];
+				this.value3 = [];
+				this.AjaxCommon();
+				this.XiangMuVal(val);
+			},
+			XiangMuVal(val) {
+				var that = this;
+				that.API.requestData({
+					method: "GET",
+					subUrl: "benchmarking/projectList",
+					data: {
+						wpids: val
+					},
+					success(res) {
+						that.XiangMu = res.data;
+					}
+				});
+			},
+			XiangMuChange(val) {
+				this.TypeClass = "";
+				this.value2 = val;
+				this.value3 = [];
+				this.AjaxCommon();
+				this.XianLuVal(val);
+			},
+			XianLuVal(val) {
+				var that = this;
+				that.API.requestData({
+					method: "GET",
+					subUrl: "benchmarking/lineList",
+					data: {
+						projects: val
+					},
+					success(res) {
+						that.XianLu = res.data;
+					}
+				});
+			},
+			XianLuChange(val) {
+				this.TypeClass = "";
+				this.value3 = val;
+				this.AjaxCommon();
+			},
+			BeginChange(val) {
+				this.value4 = val;
+				this.AjaxCommon();
+			},
+			EndChange(val) {
+				this.value5 = val;
+				this.AjaxCommon();
+			},
+			TypeClick(val) {
+				if (val != this.TypeClass && this.TypeClass) {
+					this.TypeClass = val;
+					// 重置状态start
+					this.value1 = [];
+					this.value2 = [];
+					this.value3 = [];
+					this.value4 = this.getTime(1);
+					this.value5 = this.getTime(2);
+					this.AjaxCommon();
+					// 重置状态end
+				}
+			},
+			getTime(val) { //时间戳处理,val=1是默认开始时间(当前月第一天),val=2是默认结束时间(今天)
+				var date = new Date();
+				var year = date.getFullYear(),
+					month = date.getMonth() + 1,
+					day = date.getDate();
+				month >= 1 && month <= 9 ? (month = '0' + month) : '';
+				day >= 0 && day <= 9 ? (day = '0' + day) : '';
+				var begin = year + '-' + month + '-01';
+				var end = year + '-' + month + '-' + day;
+				if (val == 1) {
+					return begin;
+				} else if (val == 2) {
+					return end;
+				}
+			},
+			AjaxCommon() {
+				var that = this;
+				that.API.requestData({
+					method: "GET",
+					subUrl: "benchmarking/fjjxb",
+					data: {
+						wpids: that.value1,
+						projectids: that.value2,
+						lineids: that.value3,
+						beginDate: that.value4,
+						endDate: that.value5,
+						type: that.TypeClass,
+						target: '',
+						sort: ''
+					},
+					success(res) {
+						console.log(res)
+						var name = [],
+							data = [],
+							llfdl = [],
+							legend = ["实际电量", "故障损失", "故障受累", "检修受累", "电网受累", "天气受累", "限电降出", "限电停机", "待风损失",
+								"手动停机", "正常发电", "缺陷降出"
+							],
+							data2 = []; //项目列表
+						res.data.forEach((item, index) => {
+							name.push(item.name);
+							llfdl.push(item.llfdl);
+							data.push([item.sjfdl, item.fjhjx1, item.fjhjx2, item.jhjx1, item.jhjx2, item
+								.sl1, item.sl2, item.xd1, item.xd2, item.xn1, item.xn2, item.xn3,
+								item.xn4
+							])
+							data2.push({
+								index: index + 1,
+								name: item.name,
+								llfdl: item.llfdl,
+								sjfdl: item.sjfdl,
+								speed: item.speed,
+								fjhjx1: item.fjhjx1,
+								fjhjx2: item.fjhjx2,
+								jhjx1: item.jhjx1,
+								jhjx2: item.jhjx2,
+								sl1: item.sl1,
+								sl2: item.sl2,
+								xd1: item.xd1,
+								xd2: item.xd2,
+								xn1: item.xn1,
+								xn2: item.xn2,
+								xn3: item.xn3,
+								xn4: item.xn4,
+								fnlly: item.fnlly,
+								is_light: false
+							})
+						})
+						name.pop();
+						data.pop();
+						llfdl.pop();
+						if (data.length > 0) {
+							let arr1 = [];
+							const length = data[0].length;
+							for (var i = 0; i < length; i++) {
+								let arr2 = [];
+								data.forEach(ele => {
+									arr2.push(ele[i])
+								});
+								arr1.push(arr2);
+							}
+							that.lineData = llfdl;
+							that.bardata = {
+								area: name,
+								legend: legend,
+								data: arr1
+							};
+
+						}
+						that.tableData.data = data2;
+					}
+				});
+			},
+			mxClick() {
+				this.$router.push("/decision/decision1")
+			},
+			thClick: function(i) {
+				console.log(i) // 当子组件触发按钮时,msg获取值为 哈哈啊哈哈
+			}
+		}
+	};
+</script>
+
+<style lang="less">
+	.decision-page-1 {
+		.com-panel .panel-title {
+			line-height: 3.4259vh;
+		}
+
+		.tools {
+			display: flex;
+			line-height: 3.4259vh;
+
+			.tool-block {
+				display: flex;
+				align-items: center;
+				margin-left: 0.741vh;
+
+				.legend {
+					flex: auto;
+					width: 0.741vh;
+					height: 0.741vh;
+					margin-right: 0.741vh;
+
+					&.long {
+						width: 2.963vh;
+						height: 0.37vh;
+					}
+				}
+
+				.legend-text {
+					color: @gray-l;
+					font-size: @fontsize-s;
+				}
+			}
+		}
+
+		.project-table {
+			overflow: auto;
+
+			tbody {
+				height: calc(100vh - 24.5vh);
+			}
+
+			td {
+				color: #b2bdc0;
+			}
+		}
+
+		.contentMx {
+			width: 100%;
+			overflow-x: auto;
+		}
+
+		.activeMx {
+			width: 130%;
+		}
+	}
+
+	.main {
+		overflow: auto;
+	}
+
+	// .main .main-body{height: calc(100vh - 6.63vh);}
+	.bg-olive {
+		background-color: #8dc63f;
+		color: #ffffff;
+	}
+
+	.bg-cyan {
+		background-color: #1cbbb4;
+	}
+
+	.bg-mauve {
+		background-color: #9c26b0;
+	}
+
+	.bg-pink {
+		background-color: #e03997;
+	}
+
+	.bg-brown {
+		background-color: #a5673f;
+	}
+
+	.bg-pink2 {
+		background-color: #FF0099;
+	}
+
+	.bg-blue2 {
+		background-color: #07ABF5;
+	}
+
+	.bg-green2 {
+		background-color: #1D3638;
+	}
+</style>

File diff suppressed because it is too large
+ 983 - 347
src/views/Decision/Decision2.vue


+ 880 - 0
src/views/Decision/Decision2Cndb.vue

@@ -0,0 +1,880 @@
+<template>
+	<div class="decision-page-2">
+		<div class="query mg-b-8">
+			<div class="query-items">
+				<div class="query-item">
+					<div class="lable">场站:</div>
+					<div class="search-input">
+						<el-select v-model="value1" @change="ChangZhanChange(value1)" clearable placeholder="请选择"
+							popper-class="select">
+							<el-option v-for="item in ChangZhan" :key="item.id" :value="item.id" :label="item.name">
+							</el-option>
+						</el-select>
+					</div>
+				</div>
+				<div class="query-item">
+					<div class="lable">开始日期:</div>
+					<div class="search-input">
+						<el-date-picker v-model="value4" @change="BeginChange(value4)" type="date"
+							value-format="YYYY-MM-DD" placeholder="选择日期" popper-class="date-select">
+						</el-date-picker>
+					</div>
+				</div>
+				<div class="query-item">
+					<div class="lable">结束日期:</div>
+					<div class="search-input">
+						<el-date-picker v-model="value5" @change="EndChange(value5)" type="date"
+							value-format="YYYY-MM-DD" placeholder="选择日期" popper-class="date-select">
+						</el-date-picker>
+						<div class="unit svg-icon svg-icon-gray">
+							<svg-icon :svgid="''" />
+						</div>
+					</div>
+				</div>
+			</div>
+			<div class="query-actions">
+				<button class="btn green">搜索</button>
+				<button class="btn" @click="dbfx">对标分析</button>
+				<button class="btn">导出</button>
+			</div>
+		</div>
+		<div v-show="detailShow==1">
+			<div class="mg-b-16">
+				<div class="project-table">
+					<Table :data="tableData" :canScroll="false"></Table>
+				</div>
+			</div>
+			<el-row :type="'flex'" class="content">
+				<el-col :span="24" class="pd-l-8">
+					<panel title="损失电量分析">
+						<multiple-bar-chart height="400px" :list="analyis" :customerTooltip="true" @tooltip="tooltip"
+							:units='["(万KWh)"]' />
+					</panel>
+				</el-col>
+			</el-row>
+			<el-dialog title="对标排名分析" v-model="dialogVisible" width="70%" top="10vh" custom-class="modal"
+				:close-on-click-modal="false">
+				<dayinfo :radarValue="radarValue" :windNum="windNum" :windNum2="windNum2" :tabs="tabs"
+					:analyisDialog="analyisDialog" />
+			</el-dialog>
+		</div>
+		<el-row :type="'flex'" class="content" v-show="detailShow==2">
+			<el-col :span="24" class="pd-l-8">
+				<panel :title="'风机对标列表明细'" :showLine="false">
+					<div class="project-table">
+						<Table :data="tableDataDetail"></Table>
+					</div>
+				</panel>
+			</el-col>
+		</el-row>
+	</div>
+</template>
+
+<script>
+	import MultipleBarChart from "../../components/chart/bar/multiple-bar-chart.vue";
+	import DualPieChart from "../../components/chart/pie/dual-pie-chart.vue";
+	import SvgIcon from "../../components/coms/icon/svg-icon.vue";
+	import Panel from "../../components/coms/panel/panel.vue";
+	import Table from "../../components/coms/table/table.vue";
+	import Dayinfo from "./dayinfo.vue";
+	export default {
+		components: {
+			Panel,
+			Table,
+			SvgIcon,
+			DualPieChart,
+			MultipleBarChart,
+			Dayinfo
+		},
+		data() {
+			let that = this;
+			return {
+				tableIdArr: [], //放checkbox的id数组
+				tableDateArr: [],
+				tableDate: [],
+				checkLength: 0, //对标分析只能选择2个
+				tableData: {
+					column: [{
+							name: "",
+							field: "index",
+							is_num: false,
+							is_light: false,
+						},
+						{
+							name: "",
+							field: "check",
+							is_num: false,
+							is_light: false,
+							template: function() {
+								return "<input class='check' type='CheckBox'/>";
+							},
+							click: function(event, data) {
+								var dataDate = that.tableDateArr[data.index - 1];
+								if (event.target.checked == false && that.checkLength <= 2) {
+									that.tableDate.forEach((item, i) => {
+										if (item == dataDate) {
+											that.tableDate.splice(i, 1)
+										}
+									})
+									that.checkLength--;
+								} else if (event.target.checked && that.checkLength < 2) {
+									that.tableDate.push(dataDate)
+									that.checkLength++;
+								} else if (that.checkLength == 2) {
+									event.target.checked = false;
+								}
+							},
+						},
+						{
+							name: "综合排名",
+							field: "zhpm",
+							is_num: false,
+							is_light: false,
+							sortable: true,
+						},
+						{
+							name: "日期",
+							field: "date",
+							is_num: false,
+							is_light: false,
+						},
+						{
+							name: "发电量排名",
+							field: "fdlpm",
+							is_num: false,
+							is_light: false,
+							sortable: true,
+						},
+						{
+							name: "发电量",
+							field: "fdl",
+							is_num: false,
+							is_light: false,
+							sortable: true,
+						},
+						{
+							name: "故障损失电量排名",
+							field: "gzssdlpm",
+							is_num: false,
+							is_light: false,
+							sortable: true,
+						},
+						{
+							name: "故障损失电量",
+							field: "gzssdl",
+							is_num: false,
+							is_light: false,
+							sortable: true,
+						},
+						{
+							name: "检修损失电量排名",
+							field: "jxssdlpm",
+							is_num: false,
+							is_light: false,
+							sortable: true,
+						},
+						{
+							name: "检修损失电量",
+							field: "jxssdl",
+							is_num: false,
+							is_light: false,
+							sortable: true,
+						},
+						{
+							name: "性能损失电量排名",
+							field: "xnssdlpm",
+							is_num: false,
+							is_light: true,
+							sortable: true,
+						},
+						{
+							name: "性能损失电量",
+							field: "xnssdl",
+							is_num: false,
+							is_light: false,
+							sortable: true,
+						},
+						{
+							name: "限电损失电量排名",
+							field: "xdssdlpm",
+							is_num: false,
+							is_light: false,
+							sortable: true,
+						},
+						{
+							name: "限电损失电量",
+							field: "xdssdl",
+							is_num: false,
+							is_light: false,
+							sortable: true,
+						}, {
+							name: "受累损失电量排名",
+							field: "slssdlpm",
+							is_num: false,
+							is_light: false,
+							sortable: true,
+						}, {
+							name: "受累损失电量",
+							field: "slssdl",
+							is_num: false,
+							is_light: false,
+							sortable: true,
+						}, {
+							name: "风能利用率排名",
+							field: "fnlylpm",
+							is_num: false,
+							is_light: false,
+							sortable: true,
+						}, {
+							name: "风能利用率(%)",
+							field: "fnlyl",
+							is_num: false,
+							is_light: false,
+							sortable: true,
+						}, {
+							name: "故障损失率排名",
+							field: "gzsslpm",
+							is_num: false,
+							is_light: false,
+							sortable: true,
+						}, {
+							name: "故障损失率(%)",
+							field: "gzssl",
+							is_num: false,
+							is_light: false,
+							sortable: true,
+						}, {
+							name: "检修损失率排名",
+							field: "jxsslpm",
+							is_num: false,
+							is_light: false,
+							sortable: true,
+						}, {
+							name: "检修损失率(%)",
+							field: "jxssl",
+							is_num: false,
+							is_light: false,
+							sortable: true,
+						}, {
+							name: "弃风率排名",
+							field: "qflpm",
+							is_num: false,
+							is_light: false,
+							sortable: true,
+						}, {
+							name: "弃风率(%)",
+							field: "qfl",
+							is_num: false,
+							is_light: false,
+							sortable: true,
+						}, {
+							name: "性能损失率排名",
+							field: "xnsslpm",
+							is_num: false,
+							is_light: false,
+							sortable: true,
+						}, {
+							name: "性能损失率(%)",
+							field: "xnssl",
+							is_num: false,
+							is_light: false,
+							sortable: true,
+						}, {
+							name: "受累损失率排名",
+							field: "slsslpm",
+							is_num: false,
+							is_light: false,
+							sortable: true,
+						}, {
+							name: "受累损失率(%)",
+							field: "slssl",
+							is_num: false,
+							is_light: false,
+							sortable: true,
+						}, {
+							name: "操作",
+							field: "cz",
+							is_num: false,
+							is_light: false,
+							template: function() {
+								return "<a class='action'>详情</a>";
+							},
+							click: function(event, data) {
+								var dataId = that.tableIdArr[data.index - 1];
+								console.log(dataId)
+								that.detailShow = 2;
+								// var that = this;
+								that.API.requestData({
+									method: "GET",
+									subUrl: "benchmarking/details",
+									data: {
+										id: dataId,
+										beginDate: that.value4,
+										endDate: that.value5,
+										target: '',
+										sort: ''
+									},
+									success(res) {
+										var dataTab = [];
+										res.data.forEach((item, index) => {
+											that.tableIdArr.push(item.id);
+
+											dataTab.push({ //表格
+												index: index + 1,
+												name: item.name,
+												zhpm: item.zhpm,
+												gzssdl: item.gzssdl,
+												jxssdlpm: item.jxssdlpm,
+												jxssdl: item.jxssdl,
+												xnssdlpm: item.xnssdlpm,
+												xnssdl: item.xnssdl,
+												xdssdlpm: item.xdssdlpm,
+												xdssdl: item.xdssdl,
+												slssdlpm: item.slssdlpm,
+												slssdl: item.slssdl,
+												gzsslpm: item.gzsslpm,
+												gzssl: item.gzssl,
+												jxsslpm: item.jxsslpm,
+												jxssl: item.jxssl,
+												qflpm: item.qflpm,
+												qfl: item.qfl,
+												xnsslpm: item.xnsslpm,
+												xnssl: item.xnssl,
+												slsslpm: item.slsslpm,
+												slssl: item.slssl,
+												is_light: false
+											})
+										})
+										that.tableDataDetail.data = dataTab;
+									}
+								});
+							}
+						}
+					],
+					data: [],
+				},
+				tableDataDetail: {
+					column: [{
+							name: "",
+							field: "index",
+							is_num: false,
+							is_light: false,
+						},
+						{
+							name: "",
+							field: "check",
+							is_num: false,
+							is_light: false,
+							template: function() {
+								return "<input class='check' type='CheckBox'/>";
+							},
+							click: function(event, data) {
+								var dataId = that.tableIdArr[data.index - 1];
+								if (event.target.checked == false && that.checkLength <= 2) {
+									that.tableId.forEach((item, i) => {
+										if (item == dataId) {
+											that.tableId.splice(i, 1)
+										}
+									})
+									that.checkLength--;
+								} else if (event.target.checked && that.checkLength < 2) {
+									that.tableId.push(dataId)
+									that.checkLength++;
+								} else if (that.checkLength == 2) {
+									event.target.checked = false;
+								}
+							},
+						},
+						{
+							name: "风机名称",
+							field: "name",
+							is_num: false,
+							is_light: false,
+						},
+						{
+							name: "综合排名",
+							field: "zhpm",
+							is_num: false,
+							is_light: false,
+							sortable: true,
+						},
+						{
+							name: "故障损失电量",
+							field: "gzssdl",
+							is_num: false,
+							is_light: false,
+							sortable: true,
+						},
+						{
+							name: "检修损失电量排名",
+							field: "jxssdlpm",
+							is_num: false,
+							is_light: false,
+							sortable: true,
+						},
+						{
+							name: "检修损失电量",
+							field: "jxssdl",
+							is_num: false,
+							is_light: false,
+							sortable: true,
+						},
+						{
+							name: "性能损失电量排名",
+							field: "xnssdlpm",
+							is_num: false,
+							is_light: true,
+							sortable: true,
+						},
+						{
+							name: "性能损失电量",
+							field: "xnssdl",
+							is_num: false,
+							is_light: false,
+							sortable: true,
+						},
+						{
+							name: "限电损失电量排名",
+							field: "xdssdlpm",
+							is_num: false,
+							is_light: false,
+							sortable: true,
+						},
+						{
+							name: "限电损失电量",
+							field: "xdssdl",
+							is_num: false,
+							is_light: false,
+							sortable: true,
+						}, {
+							name: "受累损失电量排名",
+							field: "slssdlpm",
+							is_num: false,
+							is_light: false,
+							sortable: true,
+						}, {
+							name: "受累损失电量",
+							field: "slssdl",
+							is_num: false,
+							is_light: false,
+							sortable: true,
+						}, {
+							name: "故障损失率排名",
+							field: "gzsslpm",
+							is_num: false,
+							is_light: false,
+							sortable: true,
+						}, {
+							name: "故障损失率(%)",
+							field: "gzssl",
+							is_num: false,
+							is_light: false,
+							sortable: true,
+						}, {
+							name: "检修损失率排名",
+							field: "jxsslpm",
+							is_num: false,
+							is_light: false,
+							sortable: true,
+						}, {
+							name: "检修损失率(%)",
+							field: "jxssl",
+							is_num: false,
+							is_light: false,
+							sortable: true,
+						}, {
+							name: "弃风率排名",
+							field: "qflpm",
+							is_num: false,
+							is_light: false,
+							sortable: true,
+						}, {
+							name: "弃风率(%)",
+							field: "qfl",
+							is_num: false,
+							is_light: false,
+							sortable: true,
+						}, {
+							name: "性能损失率排名",
+							field: "xnsslpm",
+							is_num: false,
+							is_light: false,
+							sortable: true,
+						}, {
+							name: "性能损失率(%)",
+							field: "xnssl",
+							is_num: false,
+							is_light: false,
+							sortable: true,
+						}, {
+							name: "受累损失率排名",
+							field: "slsslpm",
+							is_num: false,
+							is_light: false,
+							sortable: true,
+						}, {
+							name: "受累损失率(%)",
+							field: "slssl",
+							is_num: false,
+							is_light: false,
+							sortable: true,
+						}
+					],
+					data: [],
+				},
+				options: [],
+				ChangZhan: [], //场站
+				XiangMu: [], //项目
+				XianLu: [], //线路
+				value1: [],
+				value4: "",
+				value5: "",
+				analyis: [], //损失电量分析
+				dialogVisible: false,
+				radarValue: [],
+				windNum: 'dd',
+				windNum2: 'dd',
+				tabs: [],
+				analyisDialog: [],
+				detailShow: 1
+			};
+		},
+		created() {
+			this.ChangZhanVal();
+			this.value4 = this.getTime(1);
+			this.value5 = this.getTime(2);
+			this.AjaxCommon();
+		},
+		methods: {
+			ChangZhanVal() {
+				var that = this;
+				that.API.requestData({
+					method: "GET",
+					subUrl: "benchmarking/wplist",
+					success(res) {
+						that.ChangZhan = res.data;
+						that.value1 = res.data[0].id;
+					}
+				});
+			},
+			ChangZhanChange(val) {
+				this.value1 = val;
+				this.AjaxCommon();
+			},
+			BeginChange(val) {
+				this.value4 = val;
+				this.AjaxCommon();
+			},
+			EndChange(val) {
+				this.value5 = val;
+				this.AjaxCommon();
+			},
+			getTime(val) { //时间戳处理,val=1是默认开始时间(当前月第一天),val=2是默认结束时间(今天)
+				var date = new Date();
+				var year = date.getFullYear(),
+					month = date.getMonth() + 1,
+					day = date.getDate();
+				month >= 1 && month <= 9 ? (month = '0' + month) : '';
+				day >= 0 && day <= 9 ? (day = '0' + day) : '';
+				var begin = year + '-' + month + '-01';
+				var end = year + '-' + month + '-' + day;
+				if (val == 1) {
+					return begin;
+				} else if (val == 2) {
+					return end;
+				}
+			},
+			AjaxCommon() {
+				var that = this;
+				that.API.requestData({
+					method: "GET",
+					subUrl: "benchmarking/cndb",
+					data: {
+						wpid: that.value1,
+						beginDate: that.value4,
+						endDate: that.value5,
+						target: '',
+						sort: ''
+					},
+					success(res) {
+						console.log(JSON.stringify(res))
+						var dataTab = [], //表格
+							analyis = [],
+							gzssdl = [],
+							jxssdl = [],
+							xnssdl = [],
+							xdssdl = [],
+							slssdl = [];
+						res.data.forEach((item, index) => {
+							that.tableDateArr.push(item.date);
+that.tableIdArr.push(item.id);
+							dataTab.push({ //表格
+								index: index + 1,
+								zhpm: item.zhpm,
+								date: item.date.substr(0, 10),
+								fdlpm: item.fdlpm,
+								fdl: item.fdl,
+								gzssdlpm: item.gzssdlpm,
+								gzssdl: item.gzssdl,
+								jxssdlpm: item.jxssdlpm,
+								jxssdl: item.jxssdl,
+								xnssdlpm: item.xnssdlpm,
+								xnssdl: item.xnssdl,
+								xdssdlpm: item.xdssdlpm,
+								xdssdl: item.xdssdl,
+								slssdlpm: item.slssdlpm,
+								slssdl: item.slssdl,
+								fnlylpm: item.fnlylpm,
+								fnlyl: item.fnlyl,
+								gzsslpm: item.gzsslpm,
+								gzssl: item.gzssl,
+								jxsslpm: item.jxsslpm,
+								jxssl: item.jxssl,
+								qflpm: item.qflpm,
+								qfl: item.qfl,
+								xnsslpm: item.xnsslpm,
+								xnssl: item.xnssl,
+								slsslpm: item.slsslpm,
+								slssl: item.slssl,
+								is_light: false
+							})
+							if (index < 7) {
+								gzssdl.push({
+									text: item.date.substr(0, 10),
+									value: item.gzssdl
+								});
+								jxssdl.push({
+									text: item.date.substr(0, 10),
+									value: item.jxssdl
+								});
+								xnssdl.push({
+									text: item.date.substr(0, 10),
+									value: item.xnssdl
+								});
+								xdssdl.push({
+									text: item.date.substr(0, 10),
+									value: item.xdssdl
+								});
+								slssdl.push({
+									text: item.date.substr(0, 10),
+									value: item.slssdl
+								});
+							}
+						})
+						analyis.push({
+							title: "故障损失电量",
+							yAxisIndex: 0,
+							value: gzssdl
+						}, {
+							title: "检修损失电量",
+							yAxisIndex: 0,
+							value: jxssdl
+						}, {
+							title: "性能损失电量",
+							yAxisIndex: 0,
+							value: xnssdl
+						}, {
+							title: "限电损失电量",
+							yAxisIndex: 0,
+							value: xdssdl
+						}, {
+							title: "受累损失电量",
+							yAxisIndex: 0,
+							value: slssdl
+						})
+						that.tableData.data = dataTab;
+
+						that.analyis = analyis;
+					}
+				});
+			},
+			AjaxDbfx() {
+				var that = this;
+				that.API.requestData({
+					method: "GET",
+					subUrl: "benchmarking/cndb",
+					data: {
+						wpid: that.value1,
+						beginDate: that.value4,
+						endDate: that.value5,
+						target: '',
+						sort: ''
+					},
+					success(res) {
+						var data = res.data;
+						that.windNum = data[0].date.substr(0, 10);
+						that.windNum2 = data[1].date.substr(0, 10);
+						that.tabs = [{
+							name: "发电量",
+							windData1: data[0].fdl,
+							windData2: data[1].fdl
+						}, {
+							name: "故障损失电量",
+							windData1: data[0].gzssdl,
+							windData2: data[1].gzssdl
+						}, {
+							name: "检修损失电量",
+							windData1: data[0].jxssdl,
+							windData2: data[1].jxssdl
+						}, {
+							name: "性能未达标损失电量",
+							windData1: data[0].xnssdl,
+							windData2: data[1].xnssdl
+						}, {
+							name: "受累损失电量",
+							windData1: data[0].slssdl,
+							windData2: data[1].slssdl
+						}, {
+							name: "风能利用率",
+							windData1: data[0].fnlyl,
+							windData2: data[1].fnlyl
+						}, {
+							name: "故障损失率",
+							windData1: data[0].gzssl,
+							windData2: data[1].gzssl
+						}, {
+							name: "检修损失率",
+							windData1: data[0].jxssl,
+							windData2: data[1].jxssl
+						}, {
+							name: "弃风率",
+							windData1: data[0].qfl,
+							windData2: data[1].qfl
+						}, {
+							name: "性能损失率",
+							windData1: data[0].xnssl,
+							windData2: data[1].xnssl
+						}, {
+							name: "受累损失率",
+							windData1: data[0].slssl,
+							windData2: data[1].slssl
+						}];
+
+						that.radarValue = [{
+							indicator: ["风能利用率", "故障损失率", "检修损失率", "弃风率", "性能损失率", "受累损失率"],
+							data: [{
+								value: [data[0].fnlylpm, data[0].gzsslpm, data[0].jxsslpm, data[0]
+									.qflpm,
+									data[0].xnsslpm, data[0].slsslpm
+								]
+							}, {
+								value: [data[1].fnlylpm, data[1].gzsslpm, data[1].jxsslpm, data[1]
+									.qflpm,
+									data[1].xnsslpm, data[1].slsslpm
+								]
+							}]
+						}];
+
+						var analyis = [],
+							gzssdl = [],
+							jxssdl = [],
+							xnssdl = [],
+							xdssdl = [],
+							slssdl = [];
+						res.data.forEach((item, index) => {
+							if (index < 7) {
+								gzssdl.push({
+									text: item.date.substr(0, 10),
+									value: item.gzssdl
+								});
+								jxssdl.push({
+									text: item.date.substr(0, 10),
+									value: item.jxssdl
+								});
+								xnssdl.push({
+									text: item.date.substr(0, 10),
+									value: item.xnssdl
+								});
+								xdssdl.push({
+									text: item.date.substr(0, 10),
+									value: item.xdssdl
+								});
+								slssdl.push({
+									text: item.date.substr(0, 10),
+									value: item.slssdl
+								});
+							}
+						})
+						analyis.push({
+							title: "故障损失电量",
+							yAxisIndex: 0,
+							value: gzssdl
+						}, {
+							title: "检修损失电量",
+							yAxisIndex: 0,
+							value: jxssdl
+						}, {
+							title: "性能损失电量",
+							yAxisIndex: 0,
+							value: xnssdl
+						}, {
+							title: "限电损失电量",
+							yAxisIndex: 0,
+							value: xdssdl
+						}, {
+							title: "受累损失电量",
+							yAxisIndex: 0,
+							value: slssdl
+						})
+						that.analyisDialog = analyis;
+					}
+				});
+			},
+			tooltip(param, callback) {
+				var color = ["#05bb4c", "#4b55ae", "#fa8c16", "#f8de5b"];
+
+				var result = param[0].axisValue;
+				param.forEach((value, index) => {
+					result += "<br />" +
+						`<span style="display:inline-block;margin-right:4px;border-radius:10px;width:10px;height:10px;background-color:${color[index]};"></span>` +
+						value.seriesName + ":" + value.value;
+				});
+				callback(result);
+				return true;
+			},
+			dbfx() {
+				var that = this;
+				if (that.tableDate.length == 2) {
+					that.dialogVisible = true;
+					this.AjaxDbfx();
+				}
+			}
+		}
+	};
+</script>
+
+<style lang="less">
+	.decision-page-2 {
+		.content .project-table {
+			tbody {
+				height: calc(100vh - 24.5vh);
+			}
+		}
+		.project-table {
+			overflow: auto;
+
+			tbody {
+				height: calc(100vh - 65vh);
+			}
+
+			th,
+			td {
+				color: #b2bdc0;
+
+				&:nth-child(1) {
+					width: 50px;
+				}
+
+				&:nth-child(2) {
+					width: 50px;
+				}
+			}
+		}
+
+		.action {
+			text-decoration: underline;
+			color: @green;
+			cursor: pointer;
+		}
+	}
+</style>

+ 221 - 0
src/views/Decision/dayinfo.vue

@@ -0,0 +1,221 @@
+<template>
+	<div class="health-day-info">
+		<div class="body">
+			<div class="left">
+				<div class="header">
+					<span class="herder-info">
+						对标排名分析
+					</span>
+				</div>
+				<div class="chart-body">
+					<normal-radar-chart :height="'500px'" :value="radarValue" />
+				</div>
+			</div>
+			<div class="left">
+				<div class="header">
+					<span class="herder-info">
+						基础指标
+					</span>
+				</div>
+				<table class="table-form">
+					<tr>
+						<td class="white">指标</td>
+						<td class="white">{{windNum}}</td>
+						<td class="white">{{windNum2}}</td>
+					</tr>
+					<tr v-for="item in tabs">
+						<td class="white">{{item.name}}</td>
+						<td class="white">{{item.windData1}}</td>
+						<td class="white">{{item.windData2}}</td>
+					</tr>
+				</table>
+			</div>
+
+		</div>
+		<div class="body">
+			<div style="width: 100%;">
+				<div class="header">
+					<span class="herder-info">
+						损失电量分析
+					</span>
+				</div>
+				<div class="chart-body">
+					<multiple-bar-chart height="240px" :list="analyisDialog" :customerTooltip="true" @tooltip="tooltip"
+						:units='["(万KWh)"]' />
+				</div>
+			</div>
+		</div>
+	</div>
+</template>
+
+<script>
+	import NormalRadarChart from "../../components/chart/radar/normal-radar-chart.vue";
+	import MultipleBarChart from "../../components/chart/bar/multiple-bar-chart.vue";
+	export default {
+		components: {
+			NormalRadarChart,
+			MultipleBarChart
+		},
+		props: {
+			windNum: {
+				type: String,
+				default: '麻黄山24号风机',
+			},
+			windNum2: {
+				type: String,
+				default: '麻黄山2号风机',
+			},
+			radarValue: {
+				type: Array,
+				default: () => [{
+					indicator: ["风能利用率", "故障损失率", "检修损失率", "弃风率", "性能损失率", "受累损失率", "复位及时率", "消缺及时率", "状态转换率"],
+					data: [{
+						value: [44200, 14200, 20000, 35000, 50000, 38000, 44200, 14200, 20000]
+					}],
+				}],
+			},
+			tabs: {
+				type: Array,
+				default: () => [{
+					name: "发电量",
+					windData1: 1,
+					windData2: 14
+				}, {
+					name: "故障损失电量",
+					windData1: 2,
+					windData2: 13
+				}, {
+					name: "检修损失电量",
+					windData1: 3,
+					windData2: 12
+				}, {
+					name: "性能未达标损失电量",
+					windData1: 4,
+					windData2: 11
+				}, {
+					name: "受累损失电量",
+					windData1: 5,
+					windData2: 10
+				}, {
+					name: "风能利用率",
+					windData1: 6,
+					windData2: 9
+				}, {
+					name: "故障损失率",
+					windData1: 7,
+					windData2: 8
+				}, {
+					name: "检修损失率",
+					windData1: 8,
+					windData2: 7
+				}, {
+					name: "弃风率",
+					windData1: 9,
+					windData2: 6
+				}, {
+					name: "性能损失率",
+					windData1: 10,
+					windData2: 5
+				}, {
+					name: "受累损失率",
+					windData1: 11,
+					windData2: 4
+				}, {
+					name: "复位及时率",
+					windData1: 12,
+					windData2: 3
+				}, {
+					name: "消缺及时率",
+					windData1: 13,
+					windData2: 2
+				}, {
+					name: "状态转换率",
+					windData1: 14,
+					windData2: 1
+				}],
+			},
+			analyisDialog: {
+				type: Array,
+				default: () => [{
+					title: "故障损失电量",
+					yAxisIndex: 0,
+					value: [11, 22]
+				}, {
+					title: "检修损失电量",
+					yAxisIndex: 0,
+					value: [11, 22]
+				}, {
+					title: "性能损失电量",
+					yAxisIndex: 0,
+					value: [11, 22]
+				}, {
+					title: "限电损失电量",
+					yAxisIndex: 0,
+					value: [11, 22]
+				}, {
+					title: "受累损失电量",
+					yAxisIndex: 0,
+					value: [11, 22]
+				}]
+			},
+		},
+		methods: {
+			tooltip(param, callback) {
+				var color = ["#05bb4c", "#4b55ae", "#fa8c16", "#f8de5b"];
+
+				var result = param[0].axisValue;
+				param.forEach((value, index) => {
+					result += "<br />" +
+						`<span style="display:inline-block;margin-right:4px;border-radius:10px;width:10px;height:10px;background-color:${color[index]};"></span>` +
+						value.seriesName + ":" + value.value;
+				});
+				callback(result);
+				return true;
+			},
+		}
+	};
+</script>
+
+<style lang="less">
+	.health-day-info {
+		.header {
+			display: flex;
+			width: 100%;
+			height: 40px;
+			line-height: 40px;
+			background: fade(@gray, 60);
+			color: @white;
+
+			.herder-info {
+				flex: 1 0 25%;
+				text-align: center;
+				font-size: @fontsize-s;
+
+				&:last-child {
+					flex: 1 0 50%;
+				}
+			}
+		}
+
+		.body {
+			display: flex;
+
+			.left {
+				flex: 0 0 50%;
+
+				display: flex;
+				flex-direction: column;
+
+				.chart-body {
+					flex-grow: 1;
+					display: flex;
+					align-items: center;
+				}
+			}
+
+			.right {
+				flex: 0 0 50%;
+			}
+		}
+	}
+</style>

+ 921 - 0
src/views/Decision/decision2Cjdb.vue

@@ -0,0 +1,921 @@
+<template>
+	<div class="decision-page-2">
+		<div class="query mg-b-8">
+			<div class="query-items">
+				<div class="query-item">
+					<div class="lable">场站:</div>
+					<div class="search-input">
+						<el-select v-model="value1" @change="ChangZhanChange(value1)" multiple placeholder="请选择"
+							popper-class="select">
+							<el-option v-for="item in ChangZhan" :key="item.id" :value="item.id" :label="item.name">
+							</el-option>
+						</el-select>
+					</div>
+				</div>
+				<div class="query-item">
+					<div class="lable">开始日期:</div>
+					<div class="search-input">
+						<el-date-picker v-model="value4" @change="BeginChange(value4)" type="date"
+							value-format="YYYY-MM-DD" placeholder="选择日期" popper-class="date-select">
+						</el-date-picker>
+					</div>
+				</div>
+				<div class="query-item">
+					<div class="lable">结束日期:</div>
+					<div class="search-input">
+						<el-date-picker v-model="value5" @change="EndChange(value5)" type="date"
+							value-format="YYYY-MM-DD" placeholder="选择日期" popper-class="date-select">
+						</el-date-picker>
+						<div class="unit svg-icon svg-icon-gray">
+							<svg-icon :svgid="''" />
+						</div>
+					</div>
+				</div>
+			</div>
+			<div class="query-actions">
+				<button class="btn green">搜索</button>
+				<button class="btn" @click="dbfx">对标分析</button>
+				<button class="btn">导出</button>
+			</div>
+		</div>
+
+		<div v-show="detailShow==1">
+			<div class="mg-b-16">
+				<div class="project-table">
+					<Table :data="tableData" :canScroll="false"></Table>
+				</div>
+			</div>
+			<el-row class="mg-b-16">
+				<el-col :span="12">
+					<panel title="发电量占比">
+						<dual-pie-chart height="21.296vh" :innerData="innerFdl" :outerData="outerFdl" />
+					</panel>
+				</el-col>
+				<el-col :span="12">
+					<panel title="各场站损失电量占比">
+						<dual-pie-chart height="21.296vh" :innerData="innerCz" :outerData="outerCz" />
+					</panel>
+				</el-col>
+			</el-row>
+			<div>
+				<panel title="损失电量分析">
+					<multiple-bar-chart height="300px" :list="analyis" :customerTooltip="true" @tooltip="tooltip"
+						:units='["(万KWh)"]' />
+				</panel>
+			</div>
+			<el-dialog title="对标排名分析" v-model="dialogVisible" width="70%" top="10vh" custom-class="modal"
+				:close-on-click-modal="false">
+				<dayinfo :radarValue="radarValue" :windNum="windNum" :windNum2="windNum2" :tabs="tabs"
+					:analyisDialog="analyisDialog" />
+			</el-dialog>
+		</div>
+		<el-row :type="'flex'" class="content" v-show="detailShow==2">
+			<el-col :span="24" class="pd-l-8">
+				<panel :title="'风机对标列表明细'" :showLine="false">
+					<div class="project-table">
+						<Table :data="tableDataDetail"></Table>
+					</div>
+				</panel>
+			</el-col>
+		</el-row>
+	</div>
+</template>
+
+<script>
+	import MultipleBarChart from "../../components/chart/bar/multiple-bar-chart.vue";
+	import DualPieChart from "../../components/chart/pie/dual-pie-chart.vue";
+	import SvgIcon from "../../components/coms/icon/svg-icon.vue";
+	import Panel from "../../components/coms/panel/panel.vue";
+	import Table from "../../components/coms/table/table.vue";
+	import Dayinfo from "./dayinfo.vue";
+	export default {
+		components: {
+			Panel,
+			Table,
+			SvgIcon,
+			DualPieChart,
+			MultipleBarChart,
+			Dayinfo
+		},
+		data() {
+			let that = this;
+			return {
+				tableIdArr: [], //放checkbox的id数组
+				tableId: [],
+				checkLength: 0, //对标分析只能选择2个
+				tableData: {
+					column: [{
+							name: "",
+							field: "index",
+							is_num: false,
+							is_light: false,
+						},
+						{
+							name: "",
+							field: "check",
+							is_num: false,
+							is_light: false,
+							template: function() {
+								return "<input class='check' type='CheckBox'/>";
+							},
+							click: function(event, data) {
+								// checkbox 事件
+								// event.target checkbox or td 需进行判断
+								// event.target.checked 判断 checkbox 是否选中
+								// data  当前数据
+								// console.log(that);
+								// console.log(event.target);
+								// console.log(event.target.checked);
+								var dataId = that.tableIdArr[data.index - 1];
+								if (event.target.checked == false && that.checkLength <= 2) {
+									that.tableId.forEach((item, i) => {
+										if (item == dataId) {
+											that.tableId.splice(i, 1)
+										}
+									})
+									that.checkLength--;
+								} else if (event.target.checked && that.checkLength < 2) {
+									that.tableId.push(dataId)
+									that.checkLength++;
+								} else if (that.checkLength == 2) {
+									event.target.checked = false;
+								}
+							},
+						},
+						{
+							name: "名称",
+							field: "name",
+							is_num: false,
+							is_light: false,
+						},
+						{
+							name: "综合排名",
+							field: "zhpm",
+							is_num: false,
+							is_light: false,
+							sortable: true,
+						},
+						{
+							name: "发电量排名",
+							field: "fdlpm",
+							is_num: false,
+							is_light: false,
+							sortable: true,
+						},
+						{
+							name: "发电量",
+							field: "fdl",
+							is_num: false,
+							is_light: false,
+							sortable: true,
+						},
+						{
+							name: "故障损失电量排名",
+							field: "gzssdlpm",
+							is_num: false,
+							is_light: false,
+							sortable: true,
+						},
+						{
+							name: "故障损失电量",
+							field: "gzssdl",
+							is_num: false,
+							is_light: false,
+							sortable: true,
+						},
+						{
+							name: "检修损失电量排名",
+							field: "jxssdlpm",
+							is_num: false,
+							is_light: false,
+							sortable: true,
+						},
+						{
+							name: "检修损失电量",
+							field: "jxssdl",
+							is_num: false,
+							is_light: false,
+							sortable: true,
+						},
+						{
+							name: "性能损失电量排名",
+							field: "xnssdlpm",
+							is_num: false,
+							is_light: true,
+							sortable: true,
+						},
+						{
+							name: "性能损失电量",
+							field: "xnssdl",
+							is_num: false,
+							is_light: false,
+							sortable: true,
+						},
+						{
+							name: "限电损失电量排名",
+							field: "xdssdlpm",
+							is_num: false,
+							is_light: false,
+							sortable: true,
+						},
+						{
+							name: "限电损失电量",
+							field: "xdssdl",
+							is_num: false,
+							is_light: false,
+							sortable: true,
+						}, {
+							name: "受累损失电量排名",
+							field: "slssdlpm",
+							is_num: false,
+							is_light: false,
+							sortable: true,
+						}, {
+							name: "受累损失电量",
+							field: "slssdl",
+							is_num: false,
+							is_light: false,
+							sortable: true,
+						}, {
+							name: "风能利用率排名",
+							field: "fnlylpm",
+							is_num: false,
+							is_light: false,
+							sortable: true,
+						}, {
+							name: "风能利用率(%)",
+							field: "fnlyl",
+							is_num: false,
+							is_light: false,
+							sortable: true,
+						},{
+							name: "故障损失率排名",
+							field: "gzsslpm",
+							is_num: false,
+							is_light: false,
+							sortable: true,
+						}, {
+							name: "故障损失率(%)",
+							field: "gzssl",
+							is_num: false,
+							is_light: false,
+							sortable: true,
+						}, {
+							name: "检修损失率排名",
+							field: "jxsslpm",
+							is_num: false,
+							is_light: false,
+							sortable: true,
+						}, {
+							name: "检修损失率(%)",
+							field: "jxssl",
+							is_num: false,
+							is_light: false,
+							sortable: true,
+						}, {
+							name: "弃风率排名",
+							field: "qflpm",
+							is_num: false,
+							is_light: false,
+							sortable: true,
+						}, {
+							name: "弃风率(%)",
+							field: "qfl",
+							is_num: false,
+							is_light: false,
+							sortable: true,
+						}, {
+							name: "性能损失率排名",
+							field: "xnsslpm",
+							is_num: false,
+							is_light: false,
+							sortable: true,
+						}, {
+							name: "性能损失率(%)",
+							field: "xnssl",
+							is_num: false,
+							is_light: false,
+							sortable: true,
+						}, {
+							name: "受累损失率排名",
+							field: "slsslpm",
+							is_num: false,
+							is_light: false,
+							sortable: true,
+						}, {
+							name: "受累损失率(%)",
+							field: "slssl",
+							is_num: false,
+							is_light: false,
+							sortable: true,
+						}, {
+							name: "操作",
+							field: "cz",
+							is_num: false,
+							is_light: false,
+							template: function() {
+								return "<a class='action'>详情</a>";
+							},
+							click: function(event, data) {
+								var dataId = that.tableIdArr[data.index - 1];
+								that.detailShow = 2;
+								that.API.requestData({
+									method: "GET",
+									subUrl: "benchmarking/details",
+									data: {
+										id: dataId,
+										beginDate: that.value4,
+										endDate: that.value5,
+										target: '',
+										sort: ''
+									},
+									success(res) {
+										var dataTab = [];
+										res.data.forEach((item, index) => {
+											that.tableIdArr.push(item.id);
+											dataTab.push({ //表格
+												index: index + 1,
+												name: item.name,
+												zhpm: item.zhpm,
+												gzssdl: item.gzssdl,
+												jxssdlpm: item.jxssdlpm,
+												jxssdl: item.jxssdl,
+												xnssdlpm: item.xnssdlpm,
+												xnssdl: item.xnssdl,
+												xdssdlpm: item.xdssdlpm,
+												xdssdl: item.xdssdl,
+												slssdlpm: item.slssdlpm,
+												slssdl: item.slssdl,
+												fnlylpm: item.fnlylpm,
+												fnlyl: item.fnlyl,
+												gzsslpm: item.gzsslpm,
+												gzssl: item.gzssl,
+												jxsslpm: item.jxsslpm,
+												jxssl: item.jxssl,
+												qflpm: item.qflpm,
+												qfl: item.qfl,
+												xnsslpm: item.xnsslpm,
+												xnssl: item.xnssl,
+												slsslpm: item.slsslpm,
+												slssl: item.slssl,
+												is_light: false
+											})
+										})
+										that.tableDataDetail.data = dataTab;
+									}
+								});
+							}
+						}
+					],
+					data: [],
+				},
+				tableDataDetail: {
+					column: [{
+							name: "",
+							field: "index",
+							is_num: false,
+							is_light: false,
+						},
+						{
+							name: "",
+							field: "check",
+							is_num: false,
+							is_light: false,
+							template: function() {
+								return "<input class='check' type='CheckBox'/>";
+							},
+							click: function(event, data) {
+								var dataId = that.tableIdArr[data.index - 1];
+								if (event.target.checked == false && that.checkLength <= 2) {
+									that.tableId.forEach((item, i) => {
+										if (item == dataId) {
+											that.tableId.splice(i, 1)
+										}
+									})
+									that.checkLength--;
+								} else if (event.target.checked && that.checkLength < 2) {
+									that.tableId.push(dataId)
+									that.checkLength++;
+								} else if (that.checkLength == 2) {
+									event.target.checked = false;
+								}
+							},
+						},
+						{
+							name: "风机名称",
+							field: "name",
+							is_num: false,
+							is_light: false,
+						},
+						{
+							name: "综合排名",
+							field: "zhpm",
+							is_num: false,
+							is_light: false,
+							sortable: true,
+						},
+						{
+							name: "故障损失电量",
+							field: "gzssdl",
+							is_num: false,
+							is_light: false,
+							sortable: true,
+						},
+						{
+							name: "检修损失电量排名",
+							field: "jxssdlpm",
+							is_num: false,
+							is_light: false,
+							sortable: true,
+						},
+						{
+							name: "检修损失电量",
+							field: "jxssdl",
+							is_num: false,
+							is_light: false,
+							sortable: true,
+						},
+						{
+							name: "性能损失电量排名",
+							field: "xnssdlpm",
+							is_num: false,
+							is_light: true,
+							sortable: true,
+						},
+						{
+							name: "性能损失电量",
+							field: "xnssdl",
+							is_num: false,
+							is_light: false,
+							sortable: true,
+						},
+						{
+							name: "限电损失电量排名",
+							field: "xdssdlpm",
+							is_num: false,
+							is_light: false,
+							sortable: true,
+						},
+						{
+							name: "限电损失电量",
+							field: "xdssdl",
+							is_num: false,
+							is_light: false,
+							sortable: true,
+						}, {
+							name: "受累损失电量排名",
+							field: "slssdlpm",
+							is_num: false,
+							is_light: false,
+							sortable: true,
+						}, {
+							name: "受累损失电量",
+							field: "slssdl",
+							is_num: false,
+							is_light: false,
+							sortable: true,
+						}, {
+							name: "故障损失率排名",
+							field: "gzsslpm",
+							is_num: false,
+							is_light: false,
+							sortable: true,
+						}, {
+							name: "故障损失率(%)",
+							field: "gzssl",
+							is_num: false,
+							is_light: false,
+							sortable: true,
+						}, {
+							name: "检修损失率排名",
+							field: "jxsslpm",
+							is_num: false,
+							is_light: false,
+							sortable: true,
+						}, {
+							name: "检修损失率(%)",
+							field: "jxssl",
+							is_num: false,
+							is_light: false,
+							sortable: true,
+						}, {
+							name: "弃风率排名",
+							field: "qflpm",
+							is_num: false,
+							is_light: false,
+							sortable: true,
+						}, {
+							name: "弃风率(%)",
+							field: "qfl",
+							is_num: false,
+							is_light: false,
+							sortable: true,
+						}, {
+							name: "性能损失率排名",
+							field: "xnsslpm",
+							is_num: false,
+							is_light: false,
+							sortable: true,
+						}, {
+							name: "性能损失率(%)",
+							field: "xnssl",
+							is_num: false,
+							is_light: false,
+							sortable: true,
+						}, {
+							name: "受累损失率排名",
+							field: "slsslpm",
+							is_num: false,
+							is_light: false,
+							sortable: true,
+						}, {
+							name: "受累损失率(%)",
+							field: "slssl",
+							is_num: false,
+							is_light: false,
+							sortable: true,
+						}
+					],
+					data: [],
+				},
+				options: [],
+				ChangZhan: [], //场站
+				value1: [],
+				value4: "",
+				value5: "",
+				innerFdl: [], //发电量占比
+				outerFdl: [],
+				innerCz: [], //各场站损失电量占比
+				outerLl: [],
+				analyis: [], //损失电量分析
+				dialogVisible: false,
+				radarValue: [],
+				windNum: 'dd',
+				windNum2: 'dd',
+				tabs: [],
+				analyisDialog: [],
+				detailShow: 1
+			};
+		},
+		created() {
+			this.ChangZhanVal();
+			this.value4 = this.getTime(1);
+			this.value5 = this.getTime(2);
+			this.AjaxCommon();
+		},
+		methods: {
+			ChangZhanVal() {
+				var that = this;
+				that.API.requestData({
+					method: "GET",
+					subUrl: "benchmarking/wplist",
+					success(res) {
+						that.ChangZhan = res.data;
+					}
+				});
+			},
+			ChangZhanChange(val) {
+				this.value1 = val;
+				this.AjaxCommon();
+			},
+			BeginChange(val) {
+				this.value4 = val;
+				this.AjaxCommon();
+			},
+			EndChange(val) {
+				this.value5 = val;
+				this.AjaxCommon();
+			},
+			getTime(val) { //时间戳处理,val=1是默认开始时间(当前月第一天),val=2是默认结束时间(今天)
+				var date = new Date();
+				var year = date.getFullYear(),
+					month = date.getMonth() + 1,
+					day = date.getDate();
+				month >= 1 && month <= 9 ? (month = '0' + month) : '';
+				day >= 0 && day <= 9 ? (day = '0' + day) : '';
+				var begin = year + '-' + month + '-01';
+				var end = year + '-' + month + '-' + day;
+				if (val == 1) {
+					return begin;
+				} else if (val == 2) {
+					return end;
+				}
+			},
+			AjaxCommon() {
+				var that = this;
+				that.API.requestData({ //五项损失率
+					method: "GET",
+					subUrl: "benchmarking/cjdb",
+					data: {
+						wpids: that.value1,
+						projectids: that.value2,
+						lineids: that.value3,
+						beginDate: that.value4,
+						endDate: that.value5,
+						target: '',
+						sort: ''
+					},
+					success(res) {
+						console.log(JSON.stringify(res))
+						var dataTab = [], //表格
+							fdl = [],
+							cz = [],
+							ll = [],
+							analyis = [],
+							gzssdl = [],
+							jxssdl = [],
+							xnssdl = [],
+							xdssdl = [],
+							slssdl = [];
+						res.data.forEach((item, index) => {
+							that.tableIdArr.push(item.id);
+							dataTab.push({ //表格
+								index: index + 1,
+								name: item.name,
+								zhpm: item.zhpm,
+								fdlpm: item.fdlpm,
+								fdl: item.fdl,
+								gzssdlpm: item.gzssdlpm,
+								gzssdl: item.gzssdl,
+								jxssdlpm: item.jxssdlpm,
+								jxssdl: item.jxssdl,
+								xnssdlpm: item.xnssdlpm,
+								xnssdl: item.xnssdl,
+								xdssdlpm: item.xdssdlpm,
+								xdssdl: item.xdssdl,
+								slssdlpm: item.slssdlpm,
+								slssdl: item.slssdl,
+								fnlylpm: item.fnlylpm,
+								fnlyl: item.fnlyl,
+								gzsslpm: item.gzsslpm,
+								gzssl: item.gzssl,
+								jxsslpm: item.jxsslpm,
+								jxssl: item.jxssl,
+								qflpm: item.qflpm,
+								qfl: item.qfl,
+								xnsslpm: item.xnsslpm,
+								xnssl: item.xnssl,
+								slsslpm: item.slsslpm,
+								slssl: item.slssl,
+								is_light: false
+							})
+
+							fdl.push({
+								value: item.fdl,
+								name: item.name
+							})
+
+							cz.push({
+								value: (item.gzssdl + item.jxssdl + item.xnssdl + item.xdssdl +
+									item.slssdl).toFixed(2),
+								name: item.name
+							})
+
+							ll.push({
+								value: item.llfdl,
+								name: item.name
+							})
+
+							gzssdl.push({
+								text: item.name,
+								value: item.gzssdl
+							});
+							jxssdl.push({
+								text: item.name,
+								value: item.jxssdl
+							});
+							xnssdl.push({
+								text: item.name,
+								value: item.xnssdl
+							});
+							xdssdl.push({
+								text: item.name,
+								value: item.xdssdl
+							});
+							slssdl.push({
+								text: item.name,
+								value: item.slssdl
+							});
+						})
+						analyis.push({
+							title: "故障损失电量",
+							yAxisIndex: 0,
+							value: gzssdl
+						}, {
+							title: "检修损失电量",
+							yAxisIndex: 0,
+							value: jxssdl
+						}, {
+							title: "性能损失电量",
+							yAxisIndex: 0,
+							value: xnssdl
+						}, {
+							title: "限电损失电量",
+							yAxisIndex: 0,
+							value: xdssdl
+						}, {
+							title: "受累损失电量",
+							yAxisIndex: 0,
+							value: slssdl
+						})
+						that.tableData.data = dataTab;
+
+						that.innerFdl = fdl;
+						that.outerFdl = fdl;
+
+						that.innerCz = cz;
+						that.outerCz = cz;
+
+						that.analyis = analyis;
+					}
+				});
+			},
+			AjaxDbfx() {
+				var that = this;
+				that.API.requestData({
+					method: "GET",
+					subUrl: "benchmarking/cjdb",
+					data: {
+						wpids: that.tableId,
+						projectids: that.value2,
+						lineids: that.value3,
+						beginDate: that.value4,
+						endDate: that.value5,
+						target: '',
+						sort: ''
+					},
+					success(res) {
+						var data = res.data;
+						that.windNum = data[0].name;
+						that.windNum2 = data[1].name;
+						that.tabs = [{
+							name: "发电量",
+							windData1: data[0].fdl,
+							windData2: data[1].fdl
+						}, {
+							name: "故障损失电量",
+							windData1: data[0].gzssdl,
+							windData2: data[1].gzssdl
+						}, {
+							name: "检修损失电量",
+							windData1: data[0].jxssdl,
+							windData2: data[1].jxssdl
+						}, {
+							name: "性能未达标损失电量",
+							windData1: data[0].xnssdl,
+							windData2: data[1].xnssdl
+						}, {
+							name: "受累损失电量",
+							windData1: data[0].slssdl,
+							windData2: data[1].slssdl
+						}, {
+							name: "风能利用率",
+							windData1: data[0].fnlyl,
+							windData2: data[1].fnlyl
+						}, {
+							name: "故障损失率",
+							windData1: data[0].gzssl,
+							windData2: data[1].gzssl
+						}, {
+							name: "检修损失率",
+							windData1: data[0].jxssl,
+							windData2: data[1].jxssl
+						}, {
+							name: "弃风率",
+							windData1: data[0].qfl,
+							windData2: data[1].qfl
+						}, {
+							name: "性能损失率",
+							windData1: data[0].xnssl,
+							windData2: data[1].xnssl
+						}, {
+							name: "受累损失率",
+							windData1: data[0].slssl,
+							windData2: data[1].slssl
+						}];
+
+						that.radarValue = [{
+							indicator: ["风能利用率", "故障损失率", "检修损失率", "弃风率", "性能损失率", "受累损失率"],
+							data: [{
+								value: [data[0].fnlylpm, data[0].gzsslpm, data[0].jxsslpm, data[0].qflpm,
+									data[0].xnsslpm, data[0].slsslpm
+								]
+							}, {
+								value: [data[1].fnlylpm, data[1].gzsslpm, data[1].jxsslpm, data[1].qflpm,
+									data[1].xnsslpm, data[1].slsslpm
+								]
+							}]
+						}];
+
+						var analyis = [],
+							gzssdl = [],
+							jxssdl = [],
+							xnssdl = [],
+							xdssdl = [],
+							slssdl = [];
+						res.data.forEach((item, index) => {
+							gzssdl.push({
+								text: item.name,
+								value: item.gzssdl
+							});
+							jxssdl.push({
+								text: item.name,
+								value: item.jxssdl
+							});
+							xnssdl.push({
+								text: item.name,
+								value: item.xnssdl
+							});
+							xdssdl.push({
+								text: item.name,
+								value: item.xdssdl
+							});
+							slssdl.push({
+								text: item.name,
+								value: item.slssdl
+							});
+						})
+						analyis.push({
+							title: "故障损失电量",
+							yAxisIndex: 0,
+							value: gzssdl
+						}, {
+							title: "检修损失电量",
+							yAxisIndex: 0,
+							value: jxssdl
+						}, {
+							title: "性能损失电量",
+							yAxisIndex: 0,
+							value: xnssdl
+						}, {
+							title: "限电损失电量",
+							yAxisIndex: 0,
+							value: xdssdl
+						}, {
+							title: "受累损失电量",
+							yAxisIndex: 0,
+							value: slssdl
+						})
+						that.analyisDialog = analyis;
+					}
+				});
+			},
+			tooltip(param, callback) {
+				var color = ["#05bb4c", "#4b55ae", "#fa8c16", "#f8de5b"];
+
+				var result = param[0].axisValue;
+				param.forEach((value, index) => {
+					result += "<br />" +
+						`<span style="display:inline-block;margin-right:4px;border-radius:10px;width:10px;height:10px;background-color:${color[index]};"></span>` +
+						value.seriesName + ":" + value.value;
+				});
+				callback(result);
+				return true;
+			},
+			dbfx() {
+				var that = this;
+				if (that.tableId.length == 2) {
+					that.dialogVisible = true;
+					this.AjaxDbfx();
+				}
+			}
+		}
+	};
+</script>
+
+<style lang="less">
+	.decision-page-2 {
+		.content .project-table {
+			tbody {
+				height: calc(100vh - 24.5vh);
+			}
+		}
+
+		.project-table {
+			overflow: auto;
+
+			tbody {
+				height: 189px;
+			}
+
+			th,
+			td {
+				color: #b2bdc0;
+
+				&:nth-child(1) {
+					width: 50px;
+				}
+
+				&:nth-child(2) {
+					width: 50px;
+				}
+			}
+		}
+
+		.action {
+			text-decoration: underline;
+			color: @green;
+			cursor: pointer;
+		}
+	}
+</style>

+ 964 - 0
src/views/Decision/decision2Xldb.vue

@@ -0,0 +1,964 @@
+<template>
+	<div class="decision-page-2">
+		<div class="query mg-b-8">
+			<div class="query-items">
+				<div class="query-item">
+					<div class="lable">场站:</div>
+					<div class="search-input">
+						<el-select v-model="value1" @change="ChangZhanChange(value1)" clearable placeholder="请选择"
+							popper-class="select">
+							<el-option v-for="item in ChangZhan" :key="item.id" :value="item.id" :label="item.name">
+							</el-option>
+						</el-select>
+					</div>
+				</div>
+				<div class="query-item">
+					<div class="lable">线路:</div>
+					<div class="search-input">
+						<el-select v-model="value3" @change="XianLuChange(value3)" multiple placeholder="请选择"
+							popper-class="select">
+							<el-option v-for="item in XianLu" :key="item.id" :label="item.name" :value="item.id">
+							</el-option>
+						</el-select>
+					</div>
+				</div>
+				<div class="query-item">
+					<div class="lable">开始日期:</div>
+					<div class="search-input">
+						<el-date-picker v-model="value4" @change="BeginChange(value4)" type="date"
+							value-format="YYYY-MM-DD" placeholder="选择日期" popper-class="date-select">
+						</el-date-picker>
+					</div>
+				</div>
+				<div class="query-item">
+					<div class="lable">结束日期:</div>
+					<div class="search-input">
+						<el-date-picker v-model="value5" @change="EndChange(value5)" type="date"
+							value-format="YYYY-MM-DD" placeholder="选择日期" popper-class="date-select">
+						</el-date-picker>
+						<div class="unit svg-icon svg-icon-gray">
+							<svg-icon :svgid="''" />
+						</div>
+					</div>
+				</div>
+			</div>
+			<div class="query-actions">
+				<button class="btn green">搜索</button>
+				<button class="btn" @click="dbfx">对标分析</button>
+				<button class="btn">导出</button>
+			</div>
+		</div>
+
+		<div v-show="detailShow==1">
+			<div class="mg-b-16">
+				<div class="project-table">
+					<Table :data="tableData" :canScroll="false"></Table>
+				</div>
+			</div>
+			<el-row class="mg-b-16">
+				<el-col :span="8">
+					<panel title="发电量占比">
+						<dual-pie-chart height="21.296vh" :innerData="innerFdl" :outerData="outerFdl" />
+					</panel>
+				</el-col>
+				<el-col :span="8">
+					<panel title="各场站损失电量占比">
+						<dual-pie-chart height="21.296vh" :innerData="innerCz" :outerData="outerCz" />
+					</panel>
+				</el-col>
+				<el-col :span="8">
+					<panel title="理论发电量占比">
+						<dual-pie-chart height="21.296vh" :innerData="innerLl" :outerData="outerLl" />
+					</panel>
+				</el-col>
+			</el-row>
+			<div>
+				<panel title="损失电量分析">
+					<multiple-bar-chart height="300px" :list="analyis" :customerTooltip="true" @tooltip="tooltip"
+						:units='["(万KWh)"]' />
+				</panel>
+			</div>
+			<el-dialog title="对标排名分析" v-model="dialogVisible" width="70%" top="10vh" custom-class="modal"
+				:close-on-click-modal="false">
+				<dayinfo :radarValue="radarValue" :windNum="windNum" :windNum2="windNum2" :tabs="tabs"
+					:analyisDialog="analyisDialog" />
+			</el-dialog>
+		</div>
+		<el-row :type="'flex'" class="content" v-show="detailShow==2">
+			<el-col :span="24" class="pd-l-8">
+				<panel :title="'风机对标列表明细'" :showLine="false">
+					<div class="project-table">
+						<Table :data="tableDataDetail"></Table>
+					</div>
+				</panel>
+			</el-col>
+		</el-row>
+	</div>
+</template>
+
+<script>
+	import MultipleBarChart from "../../components/chart/bar/multiple-bar-chart.vue";
+	import DualPieChart from "../../components/chart/pie/dual-pie-chart.vue";
+	import SvgIcon from "../../components/coms/icon/svg-icon.vue";
+	import Panel from "../../components/coms/panel/panel.vue";
+	import Table from "../../components/coms/table/table.vue";
+	import Dayinfo from "./dayinfo.vue";
+	export default {
+		components: {
+			Panel,
+			Table,
+			SvgIcon,
+			DualPieChart,
+			MultipleBarChart,
+			Dayinfo
+		},
+		data() {
+			let that = this;
+			return {
+				tableIdArr: [], //放checkbox的id数组
+				tableId: [],
+				checkLength: 0, //对标分析只能选择2个
+				tableData: {
+					column: [{
+							name: "",
+							field: "index",
+							is_num: false,
+							is_light: false,
+						},
+						{
+							name: "",
+							field: "check",
+							is_num: false,
+							is_light: false,
+							template: function() {
+								return "<input class='check' type='CheckBox'/>";
+							},
+							click: function(event, data) {
+								// checkbox 事件
+								// event.target checkbox or td 需进行判断
+								// event.target.checked 判断 checkbox 是否选中
+								// data  当前数据
+								// console.log(that);
+								// console.log(event.target);
+								// console.log(event.target.checked);
+								var dataId = that.tableIdArr[data.index - 1];
+								if (event.target.checked == false && that.checkLength <= 2) {
+									that.tableId.forEach((item, i) => {
+										if (item == dataId) {
+											that.tableId.splice(i, 1)
+										}
+									})
+									that.checkLength--;
+								} else if (event.target.checked && that.checkLength < 2) {
+									that.tableId.push(dataId)
+									that.checkLength++;
+								} else if (that.checkLength == 2) {
+									event.target.checked = false;
+								}
+							},
+						},
+						{
+							name: "名称",
+							field: "name",
+							is_num: false,
+							is_light: false,
+						},
+						{
+							name: "综合排名",
+							field: "zhpm",
+							is_num: false,
+							is_light: false,
+							sortable: true,
+						},
+						{
+							name: "发电量排名",
+							field: "fdlpm",
+							is_num: false,
+							is_light: false,
+							sortable: true,
+						},
+						{
+							name: "发电量",
+							field: "fdl",
+							is_num: false,
+							is_light: false,
+							sortable: true,
+						},
+						{
+							name: "故障损失电量排名",
+							field: "gzssdlpm",
+							is_num: false,
+							is_light: false,
+							sortable: true,
+						},
+						{
+							name: "故障损失电量",
+							field: "gzssdl",
+							is_num: false,
+							is_light: false,
+							sortable: true,
+						},
+						{
+							name: "检修损失电量排名",
+							field: "jxssdlpm",
+							is_num: false,
+							is_light: false,
+							sortable: true,
+						},
+						{
+							name: "检修损失电量",
+							field: "jxssdl",
+							is_num: false,
+							is_light: false,
+							sortable: true,
+						},
+						{
+							name: "性能损失电量排名",
+							field: "xnssdlpm",
+							is_num: false,
+							is_light: true,
+							sortable: true,
+						},
+						{
+							name: "性能损失电量",
+							field: "xnssdl",
+							is_num: false,
+							is_light: false,
+							sortable: true,
+						},
+						{
+							name: "限电损失电量排名",
+							field: "xdssdlpm",
+							is_num: false,
+							is_light: false,
+							sortable: true,
+						},
+						{
+							name: "限电损失电量",
+							field: "xdssdl",
+							is_num: false,
+							is_light: false,
+							sortable: true,
+						}, {
+							name: "受累损失电量排名",
+							field: "slssdlpm",
+							is_num: false,
+							is_light: false,
+							sortable: true,
+						}, {
+							name: "受累损失电量",
+							field: "slssdl",
+							is_num: false,
+							is_light: false,
+							sortable: true,
+						}, {
+							name: "风能利用率排名",
+							field: "fnlylpm",
+							is_num: false,
+							is_light: false,
+							sortable: true,
+						}, {
+							name: "风能利用率(%)",
+							field: "fnlyl",
+							is_num: false,
+							is_light: false,
+							sortable: true,
+						},{
+							name: "故障损失率排名",
+							field: "gzsslpm",
+							is_num: false,
+							is_light: false,
+							sortable: true,
+						}, {
+							name: "故障损失率(%)",
+							field: "gzssl",
+							is_num: false,
+							is_light: false,
+							sortable: true,
+						}, {
+							name: "检修损失率排名",
+							field: "jxsslpm",
+							is_num: false,
+							is_light: false,
+							sortable: true,
+						}, {
+							name: "检修损失率(%)",
+							field: "jxssl",
+							is_num: false,
+							is_light: false,
+							sortable: true,
+						}, {
+							name: "弃风率排名",
+							field: "qflpm",
+							is_num: false,
+							is_light: false,
+							sortable: true,
+						}, {
+							name: "弃风率(%)",
+							field: "qfl",
+							is_num: false,
+							is_light: false,
+							sortable: true,
+						}, {
+							name: "性能损失率排名",
+							field: "xnsslpm",
+							is_num: false,
+							is_light: false,
+							sortable: true,
+						}, {
+							name: "性能损失率(%)",
+							field: "xnssl",
+							is_num: false,
+							is_light: false,
+							sortable: true,
+						}, {
+							name: "受累损失率排名",
+							field: "slsslpm",
+							is_num: false,
+							is_light: false,
+							sortable: true,
+						}, {
+							name: "受累损失率(%)",
+							field: "slssl",
+							is_num: false,
+							is_light: false,
+							sortable: true,
+						}, {
+							name: "操作",
+							field: "cz",
+							is_num: false,
+							is_light: false,
+							template: function() {
+								return "<a class='action'>详情</a>";
+							},
+							click: function(event, data) {
+								var dataId = that.tableIdArr[data.index - 1];
+								that.detailShow = 2;
+								// var that = this;
+								that.API.requestData({
+									method: "GET",
+									subUrl: "benchmarking/details",
+									data: {
+										id: dataId,
+										beginDate: that.value4,
+										endDate: that.value5,
+										target: '',
+										sort: ''
+									},
+									success(res) {
+										var dataTab = [];
+										res.data.forEach((item, index) => {
+											that.tableIdArr.push(item.id);
+
+											dataTab.push({ //表格
+												index: index + 1,
+												name: item.name,
+												zhpm: item.zhpm,
+												gzssdl: item.gzssdl,
+												jxssdlpm: item.jxssdlpm,
+												jxssdl: item.jxssdl,
+												xnssdlpm: item.xnssdlpm,
+												xnssdl: item.xnssdl,
+												xdssdlpm: item.xdssdlpm,
+												xdssdl: item.xdssdl,
+												slssdlpm: item.slssdlpm,
+												slssdl: item.slssdl,
+												fnlylpm: item.fnlylpm,
+												fnlyl: item.fnlyl,
+												gzsslpm: item.gzsslpm,
+												gzssl: item.gzssl,
+												jxsslpm: item.jxsslpm,
+												jxssl: item.jxssl,
+												qflpm: item.qflpm,
+												qfl: item.qfl,
+												xnsslpm: item.xnsslpm,
+												xnssl: item.xnssl,
+												slsslpm: item.slsslpm,
+												slssl: item.slssl,
+												is_light: false
+											})
+										})
+										that.tableDataDetail.data = dataTab;
+									}
+								});
+							}
+						}
+					],
+					data: [],
+				},
+				tableDataDetail: {
+					column: [{
+							name: "",
+							field: "index",
+							is_num: false,
+							is_light: false,
+						},
+						{
+							name: "",
+							field: "check",
+							is_num: false,
+							is_light: false,
+							template: function() {
+								return "<input class='check' type='CheckBox'/>";
+							},
+							click: function(event, data) {
+								var dataId = that.tableIdArr[data.index - 1];
+								if (event.target.checked == false && that.checkLength <= 2) {
+									that.tableId.forEach((item, i) => {
+										if (item == dataId) {
+											that.tableId.splice(i, 1)
+										}
+									})
+									that.checkLength--;
+								} else if (event.target.checked && that.checkLength < 2) {
+									that.tableId.push(dataId)
+									that.checkLength++;
+								} else if (that.checkLength == 2) {
+									event.target.checked = false;
+								}
+							},
+						},
+						{
+							name: "风机名称",
+							field: "name",
+							is_num: false,
+							is_light: false,
+						},
+						{
+							name: "综合排名",
+							field: "zhpm",
+							is_num: false,
+							is_light: false,
+							sortable: true,
+						},
+						{
+							name: "故障损失电量",
+							field: "gzssdl",
+							is_num: false,
+							is_light: false,
+							sortable: true,
+						},
+						{
+							name: "检修损失电量排名",
+							field: "jxssdlpm",
+							is_num: false,
+							is_light: false,
+							sortable: true,
+						},
+						{
+							name: "检修损失电量",
+							field: "jxssdl",
+							is_num: false,
+							is_light: false,
+							sortable: true,
+						},
+						{
+							name: "性能损失电量排名",
+							field: "xnssdlpm",
+							is_num: false,
+							is_light: true,
+							sortable: true,
+						},
+						{
+							name: "性能损失电量",
+							field: "xnssdl",
+							is_num: false,
+							is_light: false,
+							sortable: true,
+						},
+						{
+							name: "限电损失电量排名",
+							field: "xdssdlpm",
+							is_num: false,
+							is_light: false,
+							sortable: true,
+						},
+						{
+							name: "限电损失电量",
+							field: "xdssdl",
+							is_num: false,
+							is_light: false,
+							sortable: true,
+						}, {
+							name: "受累损失电量排名",
+							field: "slssdlpm",
+							is_num: false,
+							is_light: false,
+							sortable: true,
+						}, {
+							name: "受累损失电量",
+							field: "slssdl",
+							is_num: false,
+							is_light: false,
+							sortable: true,
+						}, {
+							name: "故障损失率排名",
+							field: "gzsslpm",
+							is_num: false,
+							is_light: false,
+							sortable: true,
+						}, {
+							name: "故障损失率(%)",
+							field: "gzssl",
+							is_num: false,
+							is_light: false,
+							sortable: true,
+						}, {
+							name: "检修损失率排名",
+							field: "jxsslpm",
+							is_num: false,
+							is_light: false,
+							sortable: true,
+						}, {
+							name: "检修损失率(%)",
+							field: "jxssl",
+							is_num: false,
+							is_light: false,
+							sortable: true,
+						}, {
+							name: "弃风率排名",
+							field: "qflpm",
+							is_num: false,
+							is_light: false,
+							sortable: true,
+						}, {
+							name: "弃风率(%)",
+							field: "qfl",
+							is_num: false,
+							is_light: false,
+							sortable: true,
+						}, {
+							name: "性能损失率排名",
+							field: "xnsslpm",
+							is_num: false,
+							is_light: false,
+							sortable: true,
+						}, {
+							name: "性能损失率(%)",
+							field: "xnssl",
+							is_num: false,
+							is_light: false,
+							sortable: true,
+						}, {
+							name: "受累损失率排名",
+							field: "slsslpm",
+							is_num: false,
+							is_light: false,
+							sortable: true,
+						}, {
+							name: "受累损失率(%)",
+							field: "slssl",
+							is_num: false,
+							is_light: false,
+							sortable: true,
+						}
+					],
+					data: [],
+				},
+				options: [],
+				ChangZhan: [], //场站
+				XiangMu: [], //项目
+				XianLu: [], //线路
+				value1: [],
+				value3: [],
+				value4: "",
+				value5: "",
+				innerFdl: [], //发电量占比
+				outerFdl: [],
+				innerCz: [], //各场站损失电量占比
+				outerCz: [],
+				innerLl: [], //理论发电量占比
+				outerLl: [],
+				analyis: [], //损失电量分析
+				dialogVisible: false,
+				radarValue: [],
+				windNum: 'dd',
+				windNum2: 'dd',
+				tabs: [],
+				analyisDialog: [],
+				detailShow: 1
+			};
+		},
+		created() {
+			this.ChangZhanVal();
+			this.value4 = this.getTime(1);
+			this.value5 = this.getTime(2);
+			this.AjaxCommon();
+		},
+		methods: {
+			ChangZhanVal() {
+				var that = this;
+				that.API.requestData({
+					method: "GET",
+					subUrl: "benchmarking/wplist",
+					success(res) {
+						that.ChangZhan = res.data;
+					}
+				});
+			},
+			ChangZhanChange(val) {
+				this.value1 = val;
+				this.value3 = [];
+				this.AjaxCommon();
+				this.XianLuVal(val);
+			},
+			XianLuVal(val) {
+				var that = this;
+				that.API.requestData({
+					method: "GET",
+					subUrl: "benchmarking/lineList",
+					data: {
+						projects: val
+					},
+					success(res) {
+						that.XianLu = res.data;
+					}
+				});
+			},
+			XianLuChange(val) {
+				this.value3 = val;
+				this.AjaxCommon();
+			},
+			BeginChange(val) {
+				this.value4 = val;
+				this.AjaxCommon();
+			},
+			EndChange(val) {
+				this.value5 = val;
+				this.AjaxCommon();
+			},
+			getTime(val) { //时间戳处理,val=1是默认开始时间(当前月第一天),val=2是默认结束时间(今天)
+				var date = new Date();
+				var year = date.getFullYear(),
+					month = date.getMonth() + 1,
+					day = date.getDate();
+				month >= 1 && month <= 9 ? (month = '0' + month) : '';
+				day >= 0 && day <= 9 ? (day = '0' + day) : '';
+				var begin = year + '-' + month + '-01';
+				var end = year + '-' + month + '-' + day;
+				if (val == 1) {
+					return begin;
+				} else if (val == 2) {
+					return end;
+				}
+			},
+			AjaxCommon() {
+				var that = this;
+				that.API.requestData({ //五项损失率
+					method: "GET",
+					subUrl: "benchmarking/xldb",
+					data: {
+						wpids: that.value1,
+						projectids: '',
+						lineids: that.value3,
+						beginDate: that.value4,
+						endDate: that.value5,
+						target: '',
+						sort: ''
+					},
+					success(res) {
+						var dataTab = [], //表格
+							fdl = [],
+							cz = [],
+							ll = [],
+							analyis = [],
+							gzssdl = [],
+							jxssdl = [],
+							xnssdl = [],
+							xdssdl = [],
+							slssdl = [];
+						res.data.forEach((item, index) => {
+							that.tableIdArr.push(item.id);
+							dataTab.push({ //表格
+								index: index + 1,
+								name: item.name,
+								zhpm: item.zhpm,
+								fdlpm: item.fdlpm,
+								fdl: item.fdl,
+								gzssdlpm: item.gzssdlpm,
+								gzssdl: item.gzssdl,
+								jxssdlpm: item.jxssdlpm,
+								jxssdl: item.jxssdl,
+								xnssdlpm: item.xnssdlpm,
+								xnssdl: item.xnssdl,
+								xdssdlpm: item.xdssdlpm,
+								xdssdl: item.xdssdl,
+								slssdlpm: item.slssdlpm,
+								slssdl: item.slssdl,
+								fnlylpm: item.fnlylpm,
+								fnlyl: item.fnlyl,
+								gzsslpm: item.gzsslpm,
+								gzssl: item.gzssl,
+								jxsslpm: item.jxsslpm,
+								jxssl: item.jxssl,
+								qflpm: item.qflpm,
+								qfl: item.qfl,
+								xnsslpm: item.xnsslpm,
+								xnssl: item.xnssl,
+								slsslpm: item.slsslpm,
+								slssl: item.slssl,
+								is_light: false
+							})
+
+							fdl.push({
+								value: item.fdl,
+								name: item.name
+							})
+
+							cz.push({
+								value: (item.gzssdl + item.jxssdl + item.xnssdl + item.xdssdl +
+									item.slssdl).toFixed(2),
+								name: item.name
+							})
+
+							ll.push({
+								value: item.llfdl,
+								name: item.name
+							})
+
+							gzssdl.push({
+								text: item.name,
+								value: item.gzssdl
+							});
+							jxssdl.push({
+								text: item.name,
+								value: item.jxssdl
+							});
+							xnssdl.push({
+								text: item.name,
+								value: item.xnssdl
+							});
+							xdssdl.push({
+								text: item.name,
+								value: item.xdssdl
+							});
+							slssdl.push({
+								text: item.name,
+								value: item.slssdl
+							});
+						})
+						analyis.push({
+							title: "故障损失电量",
+							yAxisIndex: 0,
+							value: gzssdl
+						}, {
+							title: "检修损失电量",
+							yAxisIndex: 0,
+							value: jxssdl
+						}, {
+							title: "性能损失电量",
+							yAxisIndex: 0,
+							value: xnssdl
+						}, {
+							title: "限电损失电量",
+							yAxisIndex: 0,
+							value: xdssdl
+						}, {
+							title: "受累损失电量",
+							yAxisIndex: 0,
+							value: slssdl
+						})
+						that.tableData.data = dataTab;
+
+						that.innerFdl = fdl;
+						that.outerFdl = fdl;
+
+						that.innerCz = cz;
+						that.outerCz = cz;
+
+						that.innerLl = ll;
+						that.outerLl = ll;
+
+						that.analyis = analyis;
+					}
+				});
+			},
+			AjaxDbfx() {
+				var that = this;
+				that.API.requestData({
+					method: "GET",
+					subUrl: "benchmarking/xldb",
+					data: {
+						wpids: that.tableId,
+						projectids: '',
+						lineids: that.value3,
+						beginDate: that.value4,
+						endDate: that.value5,
+						target: '',
+						sort: ''
+					},
+					success(res) {
+						var data = res.data;
+						that.windNum = data[0].name;
+						that.windNum2 = data[1].name;
+						that.tabs = [{
+							name: "发电量",
+							windData1: data[0].fdl,
+							windData2: data[1].fdl
+						}, {
+							name: "故障损失电量",
+							windData1: data[0].gzssdl,
+							windData2: data[1].gzssdl
+						}, {
+							name: "检修损失电量",
+							windData1: data[0].jxssdl,
+							windData2: data[1].jxssdl
+						}, {
+							name: "性能未达标损失电量",
+							windData1: data[0].xnssdl,
+							windData2: data[1].xnssdl
+						}, {
+							name: "受累损失电量",
+							windData1: data[0].slssdl,
+							windData2: data[1].slssdl
+						}, {
+							name: "风能利用率",
+							windData1: data[0].fnlyl,
+							windData2: data[1].fnlyl
+						}, {
+							name: "故障损失率",
+							windData1: data[0].gzssl,
+							windData2: data[1].gzssl
+						}, {
+							name: "检修损失率",
+							windData1: data[0].jxssl,
+							windData2: data[1].jxssl
+						}, {
+							name: "弃风率",
+							windData1: data[0].qfl,
+							windData2: data[1].qfl
+						}, {
+							name: "性能损失率",
+							windData1: data[0].xnssl,
+							windData2: data[1].xnssl
+						}, {
+							name: "受累损失率",
+							windData1: data[0].slssl,
+							windData2: data[1].slssl
+						}];
+
+						that.radarValue = [{
+							indicator: ["风能利用率", "故障损失率", "检修损失率", "弃风率", "性能损失率", "受累损失率"],
+							data: [{
+								value: [data[0].fnlylpm, data[0].gzsslpm, data[0].jxsslpm, data[0].qflpm,
+									data[0].xnsslpm, data[0].slsslpm
+								]
+							}, {
+								value: [data[1].fnlylpm, data[1].gzsslpm, data[1].jxsslpm, data[1].qflpm,
+									data[1].xnsslpm, data[1].slsslpm
+								]
+							}]
+						}];
+
+						var analyis = [],
+							gzssdl = [],
+							jxssdl = [],
+							xnssdl = [],
+							xdssdl = [],
+							slssdl = [];
+						res.data.forEach((item, index) => {
+							gzssdl.push({
+								text: item.name,
+								value: item.gzssdl
+							});
+							jxssdl.push({
+								text: item.name,
+								value: item.jxssdl
+							});
+							xnssdl.push({
+								text: item.name,
+								value: item.xnssdl
+							});
+							xdssdl.push({
+								text: item.name,
+								value: item.xdssdl
+							});
+							slssdl.push({
+								text: item.name,
+								value: item.slssdl
+							});
+						})
+						analyis.push({
+							title: "故障损失电量",
+							yAxisIndex: 0,
+							value: gzssdl
+						}, {
+							title: "检修损失电量",
+							yAxisIndex: 0,
+							value: jxssdl
+						}, {
+							title: "性能损失电量",
+							yAxisIndex: 0,
+							value: xnssdl
+						}, {
+							title: "限电损失电量",
+							yAxisIndex: 0,
+							value: xdssdl
+						}, {
+							title: "受累损失电量",
+							yAxisIndex: 0,
+							value: slssdl
+						})
+						that.analyisDialog = analyis;
+					}
+				});
+			},
+			tooltip(param, callback) {
+				var color = ["#05bb4c", "#4b55ae", "#fa8c16", "#f8de5b"];
+
+				var result = param[0].axisValue;
+				param.forEach((value, index) => {
+					result += "<br />" +
+						`<span style="display:inline-block;margin-right:4px;border-radius:10px;width:10px;height:10px;background-color:${color[index]};"></span>` +
+						value.seriesName + ":" + value.value;
+				});
+				callback(result);
+				return true;
+			},
+			dbfx() {
+				var that = this;
+				if (that.tableId.length == 2) {
+					that.dialogVisible = true;
+					this.AjaxDbfx();
+				}
+			}
+		}
+	};
+</script>
+
+<style lang="less">
+	.decision-page-2 {
+		.content .project-table {
+			tbody {
+				height: calc(100vh - 24.5vh);
+			}
+		}
+
+		.project-table {
+			overflow: auto;
+
+			tbody {
+				height: 189px;
+			}
+
+			th,
+			td {
+				color: #b2bdc0;
+
+				&:nth-child(1) {
+					width: 50px;
+				}
+
+				&:nth-child(2) {
+					width: 50px;
+				}
+			}
+		}
+
+		.action {
+			text-decoration: underline;
+			color: @green;
+			cursor: pointer;
+		}
+	}
+</style>

+ 957 - 0
src/views/Decision/decision2Xmdb.vue

@@ -0,0 +1,957 @@
+<template>
+	<div class="decision-page-2">
+		<div class="query mg-b-8">
+			<div class="query-items">
+				<div class="query-item">
+					<div class="lable">场站:</div>
+					<div class="search-input">
+						<el-select v-model="value1" @change="ChangZhanChange(value1)" multiple placeholder="请选择"
+							popper-class="select">
+							<el-option v-for="item in ChangZhan" :key="item.id" :value="item.id" :label="item.name">
+							</el-option>
+						</el-select>
+					</div>
+				</div>
+				<div class="query-item">
+					<div class="lable">项目:</div>
+					<div class="search-input">
+						<el-select v-model="value2" @change="XiangMuChange(value2)" multiple placeholder="请选择"
+							popper-class="select">
+							<el-option v-for="item in XiangMu" :key="item.id" :value="item.id" :label="item.name">
+							</el-option>
+						</el-select>
+					</div>
+				</div>
+				<div class="query-item">
+					<div class="lable">开始日期:</div>
+					<div class="search-input">
+						<el-date-picker v-model="value4" @change="BeginChange(value4)" type="date"
+							value-format="YYYY-MM-DD" placeholder="选择日期" popper-class="date-select">
+						</el-date-picker>
+					</div>
+				</div>
+				<div class="query-item">
+					<div class="lable">结束日期:</div>
+					<div class="search-input">
+						<el-date-picker v-model="value5" @change="EndChange(value5)" type="date"
+							value-format="YYYY-MM-DD" placeholder="选择日期" popper-class="date-select">
+						</el-date-picker>
+						<div class="unit svg-icon svg-icon-gray">
+							<svg-icon :svgid="''" />
+						</div>
+					</div>
+				</div>
+			</div>
+			<div class="query-actions">
+				<button class="btn green">搜索</button>
+				<button class="btn" @click="dbfx">对标分析</button>
+				<button class="btn">导出</button>
+			</div>
+		</div>
+
+		<div v-show="detailShow==1">
+			<div class="mg-b-16">
+				<div class="project-table">
+					<Table :data="tableData" :canScroll="false"></Table>
+				</div>
+			</div>
+			<el-row class="mg-b-16">
+				<el-col :span="12">
+					<panel title="发电量占比">
+						<dual-pie-chart height="21.296vh" :innerData="innerFdl" :outerData="outerFdl" />
+					</panel>
+				</el-col>
+				<el-col :span="12">
+					<panel title="各场站损失电量占比">
+						<dual-pie-chart height="21.296vh" :innerData="innerCz" :outerData="outerCz" />
+					</panel>
+				</el-col>
+			</el-row>
+			<div>
+				<panel title="损失电量分析">
+					<multiple-bar-chart height="300px" :list="analyis" :customerTooltip="true" @tooltip="tooltip"
+						:units='["(万KWh)"]' />
+				</panel>
+			</div>
+			<el-dialog title="对标排名分析" v-model="dialogVisible" width="70%" top="10vh" custom-class="modal"
+				:close-on-click-modal="false">
+				<dayinfo :radarValue="radarValue" :windNum="windNum" :windNum2="windNum2" :tabs="tabs"
+					:analyisDialog="analyisDialog" />
+			</el-dialog>
+		</div>
+		<el-row :type="'flex'" class="content" v-show="detailShow==2">
+			<el-col :span="24" class="pd-l-8">
+				<panel :title="'风机对标列表明细'" :showLine="false">
+					<div class="project-table">
+						<Table :data="tableDataDetail"></Table>
+					</div>
+				</panel>
+			</el-col>
+		</el-row>
+	</div>
+</template>
+
+<script>
+	import MultipleBarChart from "../../components/chart/bar/multiple-bar-chart.vue";
+	import DualPieChart from "../../components/chart/pie/dual-pie-chart.vue";
+	import SvgIcon from "../../components/coms/icon/svg-icon.vue";
+	import Panel from "../../components/coms/panel/panel.vue";
+	import Table from "../../components/coms/table/table.vue";
+	import Dayinfo from "./dayinfo.vue";
+	export default {
+		components: {
+			Panel,
+			Table,
+			SvgIcon,
+			DualPieChart,
+			MultipleBarChart,
+			Dayinfo
+		},
+		data() {
+			let that = this;
+			return {
+				tableIdArr: [], //放checkbox的id数组
+				tableId: [],
+				checkLength: 0, //对标分析只能选择2个
+				tableData: {
+					column: [{
+							name: "",
+							field: "index",
+							is_num: false,
+							is_light: false,
+						},
+						{
+							name: "",
+							field: "check",
+							is_num: false,
+							is_light: false,
+							template: function() {
+								return "<input class='check' type='CheckBox'/>";
+							},
+							click: function(event, data) {
+								// checkbox 事件
+								// event.target checkbox or td 需进行判断
+								// event.target.checked 判断 checkbox 是否选中
+								// data  当前数据
+								// console.log(that);
+								// console.log(event.target);
+								// console.log(event.target.checked);
+								var dataId = that.tableIdArr[data.index - 1];
+								if (event.target.checked == false && that.checkLength <= 2) {
+									that.tableId.forEach((item, i) => {
+										if (item == dataId) {
+											that.tableId.splice(i, 1)
+										}
+									})
+									that.checkLength--;
+								} else if (event.target.checked && that.checkLength < 2) {
+									that.tableId.push(dataId)
+									that.checkLength++;
+								} else if (that.checkLength == 2) {
+									event.target.checked = false;
+								}
+							},
+						},
+						{
+							name: "名称",
+							field: "name",
+							is_num: false,
+							is_light: false,
+						},
+						{
+							name: "综合排名",
+							field: "zhpm",
+							is_num: false,
+							is_light: false,
+							sortable: true,
+						},
+						{
+							name: "发电量排名",
+							field: "fdlpm",
+							is_num: false,
+							is_light: false,
+							sortable: true,
+						},
+						{
+							name: "发电量",
+							field: "fdl",
+							is_num: false,
+							is_light: false,
+							sortable: true,
+						},
+						{
+							name: "故障损失电量排名",
+							field: "gzssdlpm",
+							is_num: false,
+							is_light: false,
+							sortable: true,
+						},
+						{
+							name: "故障损失电量",
+							field: "gzssdl",
+							is_num: false,
+							is_light: false,
+							sortable: true,
+						},
+						{
+							name: "检修损失电量排名",
+							field: "jxssdlpm",
+							is_num: false,
+							is_light: false,
+							sortable: true,
+						},
+						{
+							name: "检修损失电量",
+							field: "jxssdl",
+							is_num: false,
+							is_light: false,
+							sortable: true,
+						},
+						{
+							name: "性能损失电量排名",
+							field: "xnssdlpm",
+							is_num: false,
+							is_light: true,
+							sortable: true,
+						},
+						{
+							name: "性能损失电量",
+							field: "xnssdl",
+							is_num: false,
+							is_light: false,
+							sortable: true,
+						},
+						{
+							name: "限电损失电量排名",
+							field: "xdssdlpm",
+							is_num: false,
+							is_light: false,
+							sortable: true,
+						},
+						{
+							name: "限电损失电量",
+							field: "xdssdl",
+							is_num: false,
+							is_light: false,
+							sortable: true,
+						}, {
+							name: "受累损失电量排名",
+							field: "slssdlpm",
+							is_num: false,
+							is_light: false,
+							sortable: true,
+						}, {
+							name: "受累损失电量",
+							field: "slssdl",
+							is_num: false,
+							is_light: false,
+							sortable: true,
+						}, {
+							name: "风能利用率排名",
+							field: "fnlylpm",
+							is_num: false,
+							is_light: false,
+							sortable: true,
+						}, {
+							name: "风能利用率(%)",
+							field: "fnlyl",
+							is_num: false,
+							is_light: false,
+							sortable: true,
+						},{
+							name: "故障损失率排名",
+							field: "gzsslpm",
+							is_num: false,
+							is_light: false,
+							sortable: true,
+						}, {
+							name: "故障损失率(%)",
+							field: "gzssl",
+							is_num: false,
+							is_light: false,
+							sortable: true,
+						}, {
+							name: "检修损失率排名",
+							field: "jxsslpm",
+							is_num: false,
+							is_light: false,
+							sortable: true,
+						}, {
+							name: "检修损失率(%)",
+							field: "jxssl",
+							is_num: false,
+							is_light: false,
+							sortable: true,
+						}, {
+							name: "弃风率排名",
+							field: "qflpm",
+							is_num: false,
+							is_light: false,
+							sortable: true,
+						}, {
+							name: "弃风率(%)",
+							field: "qfl",
+							is_num: false,
+							is_light: false,
+							sortable: true,
+						}, {
+							name: "性能损失率排名",
+							field: "xnsslpm",
+							is_num: false,
+							is_light: false,
+							sortable: true,
+						}, {
+							name: "性能损失率(%)",
+							field: "xnssl",
+							is_num: false,
+							is_light: false,
+							sortable: true,
+						}, {
+							name: "受累损失率排名",
+							field: "slsslpm",
+							is_num: false,
+							is_light: false,
+							sortable: true,
+						}, {
+							name: "受累损失率(%)",
+							field: "slssl",
+							is_num: false,
+							is_light: false,
+							sortable: true,
+						}, {
+							name: "操作",
+							field: "cz",
+							is_num: false,
+							is_light: false,
+							template: function() {
+								return "<a class='action'>详情</a>";
+							},
+							click: function(event, data) {
+								var dataId = that.tableIdArr[data.index - 1];
+								that.detailShow = 2;
+								// var that = this;
+								that.API.requestData({
+									method: "GET",
+									subUrl: "benchmarking/details",
+									data: {
+										id: dataId,
+										beginDate: that.value4,
+										endDate: that.value5,
+										target: '',
+										sort: ''
+									},
+									success(res) {
+										var dataTab = [];
+										res.data.forEach((item, index) => {
+											that.tableIdArr.push(item.id);
+
+											dataTab.push({ //表格
+												index: index + 1,
+												name: item.name,
+												zhpm: item.zhpm,
+												gzssdl: item.gzssdl,
+												jxssdlpm: item.jxssdlpm,
+												jxssdl: item.jxssdl,
+												xnssdlpm: item.xnssdlpm,
+												xnssdl: item.xnssdl,
+												xdssdlpm: item.xdssdlpm,
+												xdssdl: item.xdssdl,
+												slssdlpm: item.slssdlpm,
+												slssdl: item.slssdl,
+												fnlylpm: item.fnlylpm,
+												fnlyl: item.fnlyl,
+												gzsslpm: item.gzsslpm,
+												gzssl: item.gzssl,
+												jxsslpm: item.jxsslpm,
+												jxssl: item.jxssl,
+												qflpm: item.qflpm,
+												qfl: item.qfl,
+												xnsslpm: item.xnsslpm,
+												xnssl: item.xnssl,
+												slsslpm: item.slsslpm,
+												slssl: item.slssl,
+												is_light: false
+											})
+										})
+										that.tableDataDetail.data = dataTab;
+									}
+								});
+							}
+						}
+					],
+					data: [],
+				},
+				tableDataDetail: {
+					column: [{
+							name: "",
+							field: "index",
+							is_num: false,
+							is_light: false,
+						},
+						{
+							name: "",
+							field: "check",
+							is_num: false,
+							is_light: false,
+							template: function() {
+								return "<input class='check' type='CheckBox'/>";
+							},
+							click: function(event, data) {
+								var dataId = that.tableIdArr[data.index - 1];
+								if (event.target.checked == false && that.checkLength <= 2) {
+									that.tableId.forEach((item, i) => {
+										if (item == dataId) {
+											that.tableId.splice(i, 1)
+										}
+									})
+									that.checkLength--;
+								} else if (event.target.checked && that.checkLength < 2) {
+									that.tableId.push(dataId)
+									that.checkLength++;
+								} else if (that.checkLength == 2) {
+									event.target.checked = false;
+								}
+							},
+						},
+						{
+							name: "风机名称",
+							field: "name",
+							is_num: false,
+							is_light: false,
+						},
+						{
+							name: "综合排名",
+							field: "zhpm",
+							is_num: false,
+							is_light: false,
+							sortable: true,
+						},
+						{
+							name: "故障损失电量",
+							field: "gzssdl",
+							is_num: false,
+							is_light: false,
+							sortable: true,
+						},
+						{
+							name: "检修损失电量排名",
+							field: "jxssdlpm",
+							is_num: false,
+							is_light: false,
+							sortable: true,
+						},
+						{
+							name: "检修损失电量",
+							field: "jxssdl",
+							is_num: false,
+							is_light: false,
+							sortable: true,
+						},
+						{
+							name: "性能损失电量排名",
+							field: "xnssdlpm",
+							is_num: false,
+							is_light: true,
+							sortable: true,
+						},
+						{
+							name: "性能损失电量",
+							field: "xnssdl",
+							is_num: false,
+							is_light: false,
+							sortable: true,
+						},
+						{
+							name: "限电损失电量排名",
+							field: "xdssdlpm",
+							is_num: false,
+							is_light: false,
+							sortable: true,
+						},
+						{
+							name: "限电损失电量",
+							field: "xdssdl",
+							is_num: false,
+							is_light: false,
+							sortable: true,
+						}, {
+							name: "受累损失电量排名",
+							field: "slssdlpm",
+							is_num: false,
+							is_light: false,
+							sortable: true,
+						}, {
+							name: "受累损失电量",
+							field: "slssdl",
+							is_num: false,
+							is_light: false,
+							sortable: true,
+						}, {
+							name: "故障损失率排名",
+							field: "gzsslpm",
+							is_num: false,
+							is_light: false,
+							sortable: true,
+						}, {
+							name: "故障损失率(%)",
+							field: "gzssl",
+							is_num: false,
+							is_light: false,
+							sortable: true,
+						}, {
+							name: "检修损失率排名",
+							field: "jxsslpm",
+							is_num: false,
+							is_light: false,
+							sortable: true,
+						}, {
+							name: "检修损失率(%)",
+							field: "jxssl",
+							is_num: false,
+							is_light: false,
+							sortable: true,
+						}, {
+							name: "弃风率排名",
+							field: "qflpm",
+							is_num: false,
+							is_light: false,
+							sortable: true,
+						}, {
+							name: "弃风率(%)",
+							field: "qfl",
+							is_num: false,
+							is_light: false,
+							sortable: true,
+						}, {
+							name: "性能损失率排名",
+							field: "xnsslpm",
+							is_num: false,
+							is_light: false,
+							sortable: true,
+						}, {
+							name: "性能损失率(%)",
+							field: "xnssl",
+							is_num: false,
+							is_light: false,
+							sortable: true,
+						}, {
+							name: "受累损失率排名",
+							field: "slsslpm",
+							is_num: false,
+							is_light: false,
+							sortable: true,
+						}, {
+							name: "受累损失率(%)",
+							field: "slssl",
+							is_num: false,
+							is_light: false,
+							sortable: true,
+						}
+					],
+					data: [],
+				},
+				options: [],
+				ChangZhan: [], //场站
+				XiangMu: [], //项目
+				value1: [],
+				value2: [],
+				value4: "",
+				value5: "",
+				innerFdl: [], //发电量占比
+				outerFdl: [],
+				innerCz: [], //各场站损失电量占比
+				outerCz: [],
+				innerLl: [], //理论发电量占比
+				outerLl: [],
+				analyis: [], //损失电量分析
+				dialogVisible: false,
+				radarValue: [],
+				windNum: 'dd',
+				windNum2: 'dd',
+				tabs: [],
+				analyisDialog: [],
+				detailShow: 1
+			};
+		},
+		created() {
+			this.ChangZhanVal();
+			this.value4 = this.getTime(1);
+			this.value5 = this.getTime(2);
+			this.AjaxCommon();
+		},
+		methods: {
+			ChangZhanVal() {
+				var that = this;
+				that.API.requestData({
+					method: "GET",
+					subUrl: "benchmarking/wplist",
+					success(res) {
+						that.ChangZhan = res.data;
+					}
+				});
+			},
+			ChangZhanChange(val) {
+				this.value1 = val;
+				this.value2 = [];
+				this.AjaxCommon();
+				this.XiangMuVal(val);
+			},
+			XiangMuVal(val) {
+				var that = this;
+				that.API.requestData({
+					method: "GET",
+					subUrl: "benchmarking/projectList",
+					data: {
+						wpids: val
+					},
+					success(res) {
+						that.XiangMu = res.data;
+					}
+				});
+			},
+			XiangMuChange(val) {
+				this.value2 = val;
+				this.AjaxCommon();
+			},
+			BeginChange(val) {
+				this.value4 = val;
+				this.AjaxCommon();
+			},
+			EndChange(val) {
+				this.value5 = val;
+				this.AjaxCommon();
+			},
+			getTime(val) { //时间戳处理,val=1是默认开始时间(当前月第一天),val=2是默认结束时间(今天)
+				var date = new Date();
+				var year = date.getFullYear(),
+					month = date.getMonth() + 1,
+					day = date.getDate();
+				month >= 1 && month <= 9 ? (month = '0' + month) : '';
+				day >= 0 && day <= 9 ? (day = '0' + day) : '';
+				var begin = year + '-' + month + '-01';
+				var end = year + '-' + month + '-' + day;
+				if (val == 1) {
+					return begin;
+				} else if (val == 2) {
+					return end;
+				}
+			},
+			AjaxCommon() {
+				var that = this;
+				that.API.requestData({ //五项损失率
+					method: "GET",
+					subUrl: "benchmarking/xmdb",
+					data: {
+						wpids: that.value1,
+						projectids: that.value2,
+						beginDate: that.value4,
+						endDate: that.value5,
+						target: '',
+						sort: ''
+					},
+					success(res) {
+						var dataTab = [], //表格
+							fdl = [],
+							cz = [],
+							ll = [],
+							analyis = [],
+							gzssdl = [],
+							jxssdl = [],
+							xnssdl = [],
+							xdssdl = [],
+							slssdl = [];
+						res.data.forEach((item, index) => {
+							that.tableIdArr.push(item.id);
+							dataTab.push({ //表格
+								index: index + 1,
+								name: item.name,
+								zhpm: item.zhpm,
+								fdlpm: item.fdlpm,
+								fdl: item.fdl,
+								gzssdlpm: item.gzssdlpm,
+								gzssdl: item.gzssdl,
+								jxssdlpm: item.jxssdlpm,
+								jxssdl: item.jxssdl,
+								xnssdlpm: item.xnssdlpm,
+								xnssdl: item.xnssdl,
+								xdssdlpm: item.xdssdlpm,
+								xdssdl: item.xdssdl,
+								slssdlpm: item.slssdlpm,
+								slssdl: item.slssdl,
+								fnlylpm: item.fnlylpm,
+								fnlyl: item.fnlyl,
+								gzsslpm: item.gzsslpm,
+								gzssl: item.gzssl,
+								jxsslpm: item.jxsslpm,
+								jxssl: item.jxssl,
+								qflpm: item.qflpm,
+								qfl: item.qfl,
+								xnsslpm: item.xnsslpm,
+								xnssl: item.xnssl,
+								slsslpm: item.slsslpm,
+								slssl: item.slssl,
+								is_light: false
+							})
+
+							fdl.push({
+								value: item.fdl,
+								name: item.name
+							})
+
+							cz.push({
+								value: (item.gzssdl + item.jxssdl + item.xnssdl + item.xdssdl +
+									item.slssdl).toFixed(2),
+								name: item.name
+							})
+
+							ll.push({
+								value: item.llfdl,
+								name: item.name
+							})
+
+							gzssdl.push({
+								text: item.name,
+								value: item.gzssdl
+							});
+							jxssdl.push({
+								text: item.name,
+								value: item.jxssdl
+							});
+							xnssdl.push({
+								text: item.name,
+								value: item.xnssdl
+							});
+							xdssdl.push({
+								text: item.name,
+								value: item.xdssdl
+							});
+							slssdl.push({
+								text: item.name,
+								value: item.slssdl
+							});
+						})
+						analyis.push({
+							title: "故障损失电量",
+							yAxisIndex: 0,
+							value: gzssdl
+						}, {
+							title: "检修损失电量",
+							yAxisIndex: 0,
+							value: jxssdl
+						}, {
+							title: "性能损失电量",
+							yAxisIndex: 0,
+							value: xnssdl
+						}, {
+							title: "限电损失电量",
+							yAxisIndex: 0,
+							value: xdssdl
+						}, {
+							title: "受累损失电量",
+							yAxisIndex: 0,
+							value: slssdl
+						})
+						that.tableData.data = dataTab;
+
+						that.innerFdl = fdl;
+						that.outerFdl = fdl;
+
+						that.innerCz = cz;
+						that.outerCz = cz;
+
+						that.innerLl = ll;
+						that.outerLl = ll;
+
+						that.analyis = analyis;
+					}
+				});
+			},
+			AjaxDbfx() {
+				var that = this;
+				that.API.requestData({
+					method: "GET",
+					subUrl: "benchmarking/xmdb",
+					data: {
+						wpids: that.tableId,
+						projectids: [],
+						beginDate: that.value4,
+						endDate: that.value5,
+						target: '',
+						sort: ''
+					},
+					success(res) {
+						console.log(JSON.stringify(res))
+						var data = res.data;
+						that.windNum = data[0].name;
+						that.windNum2 = data[1].name;
+						that.tabs = [{
+							name: "发电量",
+							windData1: data[0].fdl,
+							windData2: data[1].fdl
+						}, {
+							name: "故障损失电量",
+							windData1: data[0].gzssdl,
+							windData2: data[1].gzssdl
+						}, {
+							name: "检修损失电量",
+							windData1: data[0].jxssdl,
+							windData2: data[1].jxssdl
+						}, {
+							name: "性能未达标损失电量",
+							windData1: data[0].xnssdl,
+							windData2: data[1].xnssdl
+						}, {
+							name: "受累损失电量",
+							windData1: data[0].slssdl,
+							windData2: data[1].slssdl
+						}, {
+							name: "风能利用率",
+							windData1: data[0].fnlyl,
+							windData2: data[1].fnlyl
+						}, {
+							name: "故障损失率",
+							windData1: data[0].gzssl,
+							windData2: data[1].gzssl
+						}, {
+							name: "检修损失率",
+							windData1: data[0].jxssl,
+							windData2: data[1].jxssl
+						}, {
+							name: "弃风率",
+							windData1: data[0].qfl,
+							windData2: data[1].qfl
+						}, {
+							name: "性能损失率",
+							windData1: data[0].xnssl,
+							windData2: data[1].xnssl
+						}, {
+							name: "受累损失率",
+							windData1: data[0].slssl,
+							windData2: data[1].slssl
+						}];
+
+						that.radarValue = [{
+							indicator: ["风能利用率", "故障损失率", "检修损失率", "弃风率", "性能损失率", "受累损失率"],
+							data: [{
+								value: [data[0].fnlylpm, data[0].gzsslpm, data[0].jxsslpm, data[0].qflpm,
+									data[0].xnsslpm, data[0].slsslpm
+								]
+							}, {
+								value: [data[1].fnlylpm, data[1].gzsslpm, data[1].jxsslpm, data[1].qflpm,
+									data[1].xnsslpm, data[1].slsslpm
+								]
+							}]
+						}];
+
+						var analyis = [],
+							gzssdl = [],
+							jxssdl = [],
+							xnssdl = [],
+							xdssdl = [],
+							slssdl = [];
+						res.data.forEach((item, index) => {
+							gzssdl.push({
+								text: item.name,
+								value: item.gzssdl
+							});
+							jxssdl.push({
+								text: item.name,
+								value: item.jxssdl
+							});
+							xnssdl.push({
+								text: item.name,
+								value: item.xnssdl
+							});
+							xdssdl.push({
+								text: item.name,
+								value: item.xdssdl
+							});
+							slssdl.push({
+								text: item.name,
+								value: item.slssdl
+							});
+						})
+						analyis.push({
+							title: "故障损失电量",
+							yAxisIndex: 0,
+							value: gzssdl
+						}, {
+							title: "检修损失电量",
+							yAxisIndex: 0,
+							value: jxssdl
+						}, {
+							title: "性能损失电量",
+							yAxisIndex: 0,
+							value: xnssdl
+						}, {
+							title: "限电损失电量",
+							yAxisIndex: 0,
+							value: xdssdl
+						}, {
+							title: "受累损失电量",
+							yAxisIndex: 0,
+							value: slssdl
+						})
+						that.analyisDialog = analyis;
+					}
+				});
+			},
+			tooltip(param, callback) {
+				var color = ["#05bb4c", "#4b55ae", "#fa8c16", "#f8de5b"];
+
+				var result = param[0].axisValue;
+				param.forEach((value, index) => {
+					result += "<br />" +
+						`<span style="display:inline-block;margin-right:4px;border-radius:10px;width:10px;height:10px;background-color:${color[index]};"></span>` +
+						value.seriesName + ":" + value.value;
+				});
+				callback(result);
+				return true;
+			},
+			dbfx() {
+				var that = this;
+				if (that.tableId.length == 2) {
+					that.dialogVisible = true;
+					this.AjaxDbfx();
+				}
+			}
+		}
+	};
+</script>
+
+<style lang="less">
+	.decision-page-2 {
+		.content .project-table {
+			tbody {
+				height: calc(100vh - 24.5vh);
+			}
+		}
+
+		.project-table {
+			overflow: auto;
+
+			tbody {
+				height: 189px;
+			}
+
+			th,
+			td {
+				color: #b2bdc0;
+
+				&:nth-child(1) {
+					width: 50px;
+				}
+
+				&:nth-child(2) {
+					width: 50px;
+				}
+			}
+		}
+
+		.action {
+			text-decoration: underline;
+			color: @green;
+			cursor: pointer;
+		}
+	}
+</style>