Selaa lähdekoodia

功率曲线拟合组件

chenminghua 3 vuotta sitten
vanhempi
commit
7e43921031

+ 1 - 0
src/components/chart/combination/scatter-line-chart.vue

@@ -698,6 +698,7 @@ export default {
         ],
         yAxis: [
           {
+            min: 0,
             type: "value",
             name: this.yTitle,
             scale: true,

+ 6 - 0
src/router/index.js

@@ -826,6 +826,12 @@ const routes = [{
 	name: "analysis",
 	component: () => import("../views/sampleDatabase/analysis/index.vue")
 },
+//样本库功率曲线分析
+{
+	path: "/others/powerline/analysis",
+	name: "powerlineAnalysis",
+	component: () => import("../views/sampleDatabase/powerlineAnalysis/index.vue")
+},
 //知识库
 {
 	path: "/others/knowledgeBase",

+ 5 - 0
src/views/layout/Menu.vue

@@ -1002,6 +1002,11 @@ export default {
                   path: "/others/analysis",
                 },
                 {
+                  text: "功率曲线综合分析",
+                  icon: "svg-matrix",
+                  path: "/others/powerline/analysis",
+                },
+                {
                   text: "知识库",
                   icon: "svg-matrix",
                   path: "/others/knowledgeBase",

+ 0 - 623
src/views/sampleDatabase/fault/index - 副本.vue

@@ -1,623 +0,0 @@
-<template>
-	<el-scrollbar height="92vh" v-if="gzCgd == 1">
-		<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="station" 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="tableTag" placeholder="请选择样本" popper-class="select">
-							<el-option v-for="item in tableTagArr" :key="item.value" :value="item.value" :label="item.label">
-							</el-option>
-						</el-select>
-					</div>
-				</div>
-				<div class="query-item">
-					<div class="lable">故障分类:</div>
-					<div class="search-input">
-						<el-select v-model="widget" multiple collapse-tags clearable placeholder="请选择"
-							popper-class="select">
-							<el-option v-for="item in BuJian" :key="item.value" :value="item.value" :label="item.label">
-							</el-option>
-						</el-select>
-					</div>
-				</div>
-				<div class="query-item">
-					<div class="lable">风机型号:</div>
-					<div class="search-input">
-						<el-select v-model="model" multiple collapse-tags clearable placeholder="请选择"
-							popper-class="select">
-							<el-option v-for="item in fjxh" :key="item.value" :value="item.value" :label="item.label">
-							</el-option>
-						</el-select>
-					</div>
-				</div>
-				<div class="query-item">
-					<div class="lable">时间:</div>
-					<div class="search-input">
-						<el-date-picker v-model="time" type="datetimerange" range-separator="至" start-placeholder="开始日期"
-							end-placeholder="结束日期">
-						</el-date-picker>
-					</div>
-				</div>
-				<div class="query-actions">
-					<button class="btn" @click="query()">查询</button>
-					<button class="btn" @click="addEdit()">新增</button>
-				</div>
-			</div>
-		</div>
-		<el-row :type="'flex'" class="content">
-			<el-col :span="24">
-				<ComTable :data="tableData" :pageSize="pageSize" @onPagging="onChangePage" height="84vh"
-					v-loading="tableLoading" element-loading-text="拼命加载中"
-					element-loading-background="rgba(0, 0, 0, 0.8)"></ComTable>
-			</el-col>
-		</el-row>
-		<el-dialog :title="isvisiableType == 1 ? '新增' : '编辑'" v-model="isvisiable" width="45%" top="15vh"
-			custom-class="modal" :close-on-click-modal="false" :before-close="onClickDialogClose" class="isvisiable">
-			<!-- 这里是新增或编辑 -->
-			<el-row type="flex" class="mb10">
-				<el-col :span="12">
-					<div>样本类型:</div>
-					<el-select v-model="tableTag" placeholder="请选择样本" popper-class="select" class="w">
-						<el-option v-for="item in tableTagArr" :key="item.value" :value="item.value"
-							:label="item.label">
-						</el-option>
-					</el-select>
-				</el-col>
-				<el-col :span="12">
-					<div>风机型号:</div>
-					<el-select v-model="tableModel" placeholder="请选择风机型号" popper-class="select" class="w">
-						<el-option v-for="item in fjxh" :key="item.value" :value="item.value" :label="item.label">
-						</el-option>
-					</el-select>
-				</el-col>
-			</el-row>
-			<el-row type="flex" class="mb10">
-				<el-col :span="12">
-					<div>故障分类:</div>
-					<el-select v-model="tableFaulttype" placeholder="请选择故障" popper-class="select" class="w">
-						<el-option v-for="item in BuJian" :key="item.value" :value="item.value" :label="item.label">
-						</el-option>
-					</el-select>
-				</el-col>
-				<el-col :span="12">
-					<div>时间:</div>
-					<el-date-picker v-model="tableTime" type="datetimerange" range-separator="至"
-						start-placeholder="开始日期" end-placeholder="结束日期" class="w">
-					</el-date-picker>
-				</el-col>
-			</el-row>
-			<el-row type="flex" class="mb10">
-				<el-col :span="12">
-					<div>故障原因:</div>
-					<el-input placeholder="请输入故障原因" v-model="tableSymptom" :value="tableSymptom">
-					</el-input>
-				</el-col>
-				<el-col :span="12">
-					<div>风机厂商:</div>
-					<el-input placeholder="请输入风机厂商" v-model="tableManufacturer" :value="tableManufacturer">
-					</el-input>
-				</el-col>
-			</el-row>
-			<el-row type="flex" class="mb10">
-				<el-col :span="12">
-					<div>风机编号:</div>
-					<el-input placeholder="请输入风机编号" v-model="tableWindturbineid" :value="tableWindturbineid">
-					</el-input>
-				</el-col>
-			</el-row>
-			<el-row type="flex" justify="end">
-				<div class="query-actions" style="margin-top: 15px">
-					<button class="btn" @click="onClickDialogClose">取消</button>
-					<button class="btn" @click="dialogSave">保存</button>
-				</div>
-			</el-row>
-		</el-dialog>
-	</el-scrollbar>
-	<el-scrollbar height="92vh" v-if="gzCgd == 2">
-		<Point :data="gzCgdData" :st='st' @gzCgdClick="gzCgdClick" />
-	</el-scrollbar>
-</template>
-
-<script>
-	import ComTable from "@/components/coms/table/table.vue";
-	import Point from "./point.vue";
-	export default {
-		components: {
-			ComTable,
-			Point,
-		},
-		data() {
-			const that = this;
-			return {
-				tableTagArr: [{
-						label: '正样本',
-						value: 0
-					},
-					{
-						label: '负样本',
-						value: 1
-					}
-				],
-				queryType: false, //没有改变select时,点击查询无效
-				pageIndex: 1,
-				pageSize: 20,
-				gzCgd: 1, //传感点组件隐藏或显示
-				gzCgdData: [], //传感点参数
-				st:'',
-				BuJian: [],
-				ChangZhan: [],
-				fjxh: [],
-				fjxhArr: [],
-				widget: [],
-				model: [],
-				time: [],
-				station: '',
-				tableFaulttype: "",
-				tableTag: "",
-				tableModel: "",
-				tableTime: "",
-				tableSymptom: "",
-				tableManufacturer: "",
-				tableWindturbineid: "",
-				tableCategory: "", //隐藏保存部分
-				tableRemark: "",
-				tableFaultcode: "",
-				tableId: "",
-				tableSymptomcode: "",
-				tableStationen: "",
-				isvisiable: false,
-				isvisiableType: 1, //新增为1,编辑为2
-				tableData: {
-					column: [{
-							name: "序号",
-							field: "index",
-							is_light: false,
-							width: '50px',
-						},
-						{
-							name: "样本类型",
-							field: "tableTag",
-							is_light: false,
-							width: '100px',
-						},
-						{
-							name: "风机编号",
-							field: "tableWindturbineid",
-							is_light: false,
-							width: '150px',
-						},
-						{
-							name: "故障分类",
-							field: "tableFaulttype",
-							is_light: false,
-							width: '150px',
-						},
-						{
-							name: "故障原因",
-							field: "tableSymptom",
-							is_light: false,
-							width: '350px',
-						},
-						{
-							name: "时间",
-							field: "tableTime",
-							is_light: false,
-							width: '350px',
-						},
-						{
-							name: "风机厂商",
-							field: "tableManufacturer",
-							is_light: false,
-							width: '150px',
-						},
-						{
-							name: "风机型号",
-							field: "tableModel",
-							is_light: false,
-							width: '150px',
-						},
-						{
-							name: "操作",
-							is_light: false,
-							width: '200px',
-							template: () => {
-								return (
-									"<el-button type='text' style='cursor: pointer;' value='edit'>编辑</el-button>&nbsp" +
-									"<el-button type='text' style='cursor: pointer;' value='delete'>删除</el-button>&nbsp" +
-									"<el-button type='text' style='cursor: pointer;' value='config'>传感点</el-button>&nbsp"
-								);
-							},
-							click(e, row) {
-								that.onClickOption(e, row);
-							},
-						},
-					],
-					data: [],
-				}
-			};
-		},
-		methods: {
-			getTable() {
-				let that = this;
-				this.tableLoading = true;
-				that.API.requestData({
-					method: "GET",
-					baseURL: "http://192.168.10.4:9002/",
-					subUrl: "benchmarking/wplist",
-					data: {
-						wpId: that.stationId,
-						startTs: that.startDate,
-						endTs: that.endDate,
-						pageNum: that.pageIndex,
-						pageSize: that.pageSize,
-					},
-					success(res) {
-						var dataTab = [];
-						if (res.data) {
-							res.data.list.forEach(item => {
-								dataTab.push({ //表格
-									recodedata: that.formatTime(item.recodedata),
-									region: item.region,
-								})
-							})
-							that.tableData.data = dataTab;
-							that.tableData.total = res.data.total;
-						} else {
-							that.tableData.data = [];
-							that.tableData.total = 0;
-						}
-						that.tableLoading = false;
-					},
-				});
-			},
-			onChangePage(params) {
-				this.pageIndex = params.pageIndex;
-				this.pageSize = params.pageSize;
-				this.getTable();
-			},
-			startAjax() {
-				var that = this;
-				// that.time = [new Date((new Date() - 3600 * 1000 * 24 * 30)).formatDate("yyyy-MM-dd"), new Date().formatDate("yyyy-MM-dd")];
-				that.time = [new Date((new Date() - 3600 * 1000 * 24 * 360)).formatDate("yyyy-MM-dd"), new Date()
-					.formatDate("yyyy-MM-dd")
-				];
-				that.API.requestData({
-					method: "GET",
-					baseURL: "http://10.155.32.4:9001/",
-					subUrl: "benchmarking/wplist",
-					success(res) {
-						that.ChangZhan = res.data;
-						// that.station = res.data[0].name
-						that.station = res.data[1].name
-					},
-				});
-
-				that.API.requestData({
-					method: "GET",
-					baseURL: "http://192.168.1.18:9002/",
-					subUrl: "basic/widget/condition",
-					success(res) {
-						let keys = Object.keys(res.data[0]);
-						let bujian = [],
-							widget = [];
-						keys.forEach((ele, index) => {
-							bujian.push({
-								label: res.data[0].ele,
-								value: ele
-							})
-							widget.push(ele)
-						})
-
-						that.widget = widget;
-						that.BuJian = bujian;
-					},
-				});
-
-				that.API.requestData({
-					method: "GET",
-					baseURL: "http://192.168.1.18:9002/",
-					subUrl: "basic/station/all",
-					success(res) {
-						let fjxhArr = [];
-						let model = [],
-							fjxh = [];
-						res.data.forEach(ele => {
-							fjxhArr.push({
-								id: ele.id,
-								value: ele.model.split("/")
-							})
-							if (ele.id == "MHS_FDC") {
-								model = ele.model.split("/");
-								model.forEach(ele => {
-									fjxh.push({
-										label: ele,
-										value: ele
-									})
-								})
-							}
-						})
-						that.fjxhArr = fjxhArr;
-						that.model = model;
-						that.fjxh = fjxh;
-					},
-				});
-			},
-			query() {
-				if (this.queryType) {
-					this.list();
-				}
-			},
-			addEdit() {
-				this.isvisiableType = 1;
-				this.tableFaulttype = '';
-				this.tableModel = '';
-				this.tableTime = '';
-				this.tableSymptom = '';
-				this.tableManufacturer = '';
-				this.tableWindturbineid = '';
-
-				// this.tableCategory: data[i].category,
-				// this.tableRemark: data[i].remark,
-				// this.tableFaultcode: data[i].faultcode,
-				// this.tableId: data[i].id,
-				// this.tableSymptomcode:data[i].Symptomcode,
-				// this.tableStationen:data[i].stationen
-
-				this.isvisiable = true;
-			},
-			onClickOption(e, row) { // 操作按钮
-				let that = this;
-				if ("delete" == e.target.getAttribute("value")) {
-					that
-						.$confirm("确认删除此条样本数据?", "提示", {
-							confirmButtonText: "删除",
-							cancelButtonText: "取消"
-						})
-						.then((_) => {
-							console.log('ok')
-							// that.requestDelete(row);
-						})
-						.catch((_) => {});
-				}
-				if ("edit" == e.target.getAttribute("value")) {
-					that.isvisiableType = 2;
-					that.$nextTick(() => {
-						let tableTime = row.tableTime.split(" - ");
-						that.tableTag = row.tableTag;
-						that.BuJian.forEach(ele => {
-							if (ele.value == row.tableFaultcode) {
-								that.tableFaulttype = ele.label
-							}
-						})
-						that.tableModel = row.tableModel;
-						that.tableTime = [Date.parse(new Date(tableTime[0])), Date.parse(new Date(tableTime[1]))];
-						that.tableSymptom = row.tableSymptom;
-						that.tableManufacturer = row.tableManufacturer;
-						that.tableWindturbineid = row.tableWindturbineid;
-
-						that.tableCategory = row.tableCategory;
-						that.tableRemark = row.tableRemark;
-						that.tableFaultcode = row.tableFaultcode;
-						that.tableId = row.tableId;
-						that.tableSymptomcode = row.tableSymptomcode;
-						that.tableStationen = row.tableStationen;
-					});
-					that.isvisiable = true;
-				}
-				if ("config" == e.target.getAttribute("value")) { //传感点
-					that.API.requestData({
-						method: "GET",
-						baseURL: "http://192.168.1.18:9002/",
-						subUrl: "point/all",
-						data: {
-							wtId: row.tableWindturbineid,
-							widget: row.tableFaultcode
-						},
-						success(res) {
-							console.log(res)
-							if (res.code == 200) {
-								that.gzCgdData = res.data;
-								that.st = Date.parse(new Date(row.tableTime.split(" - ")[0]));
-								that.gzCgd = 2;
-							}
-						},
-					});
-				}
-			},
-			onClickDialogClose() { // 弹窗右上角关闭按钮
-				this.isvisiable = false;
-				this.isvisiableType = 1;
-			},
-			dialogSave() {
-				let that = this;
-				that.tableTime[0] = that.formatDate(that.tableTime[0].valueOf());
-				that.tableTime[1] = that.formatDate(that.tableTime[1].valueOf());
-				console.log(that.tableTime)
-				that.API.requestData({
-					method: "POST",
-					baseURL: "http://192.168.1.18:9002/",
-					headers: {
-						'Content-Type': 'application/json;charset=utf-8',
-					},
-					subUrl: "case/item/edit",
-					body: {
-						category: that.tableCategory,
-						endtime: that.tableTime[1],
-						faultcode: that.tableFaultcode,
-						faulttype: that.tableFaulttype,
-						id: that.tableId,
-						manufacturer: that.tableManufacturer,
-						model: that.tableModel,
-						remark: that.tableRemark,
-						starttime: that.tableTime[0],
-						stationen: that.tableStationen,
-						symptom: that.tableSymptom,
-						symptomcode: that.tableSymptomcode,
-						tag: that.tableTag == "正样本" ? 0 : 1,
-						windturbineid: that.tableWindturbineid
-					},
-					success(res) {
-						if (res.code == 200) {
-							that.BASE.showMsg({
-								type: "success",
-								msg: "保存成功",
-							});
-							that.onClickDialogClose();
-							that.list();
-						}
-					},
-				});
-			},
-			gzCgdClick(data) {
-				this.gzCgd = data;
-			},
-			formatDate(dates) {
-				var date = new Date(dates);
-				var YY = date.getFullYear() + '-';
-				var MM = (date.getMonth() + 1 < 10 ? '0' + (date.getMonth() + 1) : date.getMonth() + 1) + '-';
-				var DD = (date.getDate() < 10 ? '0' + (date.getDate()) : date.getDate());
-				var hh = (date.getHours() < 10 ? '0' + date.getHours() : date.getHours()) + ':';
-				var mm = (date.getMinutes() < 10 ? '0' + date.getMinutes() : date.getMinutes()) + ':';
-				var ss = (date.getSeconds() < 10 ? '0' + date.getSeconds() : date.getSeconds());
-				return YY + MM + DD + " " + hh + mm + ss;
-			},
-			list() {
-				var that = this;
-				let station = '',
-					widget = ''
-				if (typeof that.time[0].valueOf() != 'string') {
-					that.time[0] = that.formatDate(that.time[0].valueOf())
-				}
-				if (typeof that.time[1].valueOf() != 'string') {
-					that.time[1] = that.formatDate(that.time[1].valueOf())
-				}
-				if (typeof that.station.valueOf() == 'string') {
-					that.ChangZhan.forEach(ele => {
-						if (ele.name == that.station) {
-							station = ele.id
-						}
-					})
-				}
-				if (typeof that.widget.valueOf() == 'string') {
-					that.BuJian.forEach(ele => {
-						if (ele.label == that.widget) {
-							widget = ele.value
-						}
-					})
-				}
-				if (that.model.length == 0) {
-					that.BASE.showMsg({
-						type: "warning",
-						msg: "请选择风机型号",
-					});
-					return
-				}
-				if (that.widget.length == 0) {
-					that.BASE.showMsg({
-						type: "warning",
-						msg: "请选择部件",
-					});
-					return
-				}
-				that.API.requestData({
-					showLoading: true,
-					method: "GET",
-					baseURL: "http://192.168.1.18:9002/",
-					subUrl: "case/fault/all",
-					data: {
-						widget: widget ? widget : that.widget,
-						station: station ? station : that.station,
-						model: that.model,
-						st: that.time[0].valueOf(),
-						et: that.time[1].valueOf()
-					},
-					success(res) {
-						if (res.code == 200) {
-							console.log(res)
-							that.tableData.data = [];
-							if (res.data.length) {
-								let data = res.data;
-								for (var i = 0; i < data.length; i++) {
-									let obj = {
-										index: i + 1,
-										tableTag: data[i].tag == 0 ? '正样本' : '负样本',
-										tableFaulttype: data[i].faulttype,
-										tableModel: data[i].model,
-										tableTime: data[i].starttime + ' - ' + data[i].endtime,
-										tableSymptom: data[i].symptom,
-										tableManufacturer: data[i].manufacturer,
-										tableWindturbineid: data[i].windturbineid,
-
-										tableCategory: data[i].category,
-										tableRemark: data[i].remark,
-										tableFaultcode: data[i].faultcode,
-										tableId: data[i].id,
-										tableSymptomcode: data[i].symptomcode,
-										tableStationen: data[i].stationen
-									};
-									that.tableData.data.push(obj);
-								}
-							}
-						}
-					},
-				});
-			},
-		},
-		created() {
-			let that = this;
-			that.startAjax();
-			setTimeout(function() {
-				that.list()
-			}, 500)
-		},
-		watch: {
-			station(res) {
-				let fjxh = [];
-				this.fjxhArr.forEach(ele => {
-					if (ele.id == res) {
-						ele.value.forEach(ele2 => {
-							fjxh.push({
-								label: ele2,
-								value: ele2
-							})
-						})
-						this.model = ele.value;
-					}
-				})
-				this.fjxh = fjxh;
-				this.queryType = true;
-			},
-			widget() {
-				this.queryType = true;
-			},
-			model() {
-				this.queryType = true;
-			},
-			time() {
-				this.queryType = true;
-			},
-		},
-	};
-</script>
-
-<style lang="less" scoped>
-	.mb10 {
-		margin-bottom: 10px;
-	}
-
-	.el-select.w {
-		width: 100%;
-	}
-
-	// .el-range-editor.w{width: 100%;}
-</style>

+ 0 - 799
src/views/sampleDatabase/fault/point - 副本.vue

@@ -1,799 +0,0 @@
-<template>
-	<el-row type="flex">
-		<div class="query-actions">
-			<button class="btn" @click="addEdit">新增</button>
-			<button class="btn" @click="dbfx">原始数据对标</button>
-			<button class="btn" @click="back">返回</button>
-		</div>
-	</el-row>
-	<el-row :type="'flex'" class="content">
-		<el-col :span="24">
-			<ComTable :data="tableData" :pageSize="pageSize" @onPagging="onChangePage" height="84vh"
-				v-loading="tableLoading" ref="curRef" element-loading-text="拼命加载中"
-				element-loading-background="rgba(0, 0, 0, 0.8)"></ComTable>
-		</el-col>
-	</el-row>
-		
-		
-	<el-dialog :title="isvisiableType == 1 ? '新增' : '编辑'" v-model="isvisiable" width="45%" top="15vh"
-		custom-class="modal" :close-on-click-modal="false" :before-close="onClickDialogClose" class="isvisiable">
-		<!-- 这里是新增或编辑 -->
-		<el-row type="flex" class="mb10">
-			<el-col :span="12">
-				<div>样本类型:</div>
-				<el-select v-model="widget" placeholder="请选择样本" popper-class="select" class="w">
-					<el-option v-for="item in widgetArr" :key="item.value" :value="item.value"
-						:label="item.label">
-					</el-option>
-				</el-select>
-			</el-col>
-			<el-col :span="12">
-				<div>风机型号:</div>
-				<el-select v-model="tableModel" placeholder="请选择风机型号" popper-class="select" class="w">
-					<el-option v-for="item in fjxh" :key="item.value" :value="item.value" :label="item.label">
-					</el-option>
-				</el-select>
-			</el-col>
-		</el-row>
-		<el-row type="flex" class="mb10">
-			<el-col :span="12">
-				<div>故障分类:</div>
-				<el-select v-model="windturbinename" placeholder="请选择故障" popper-class="select" class="w">
-					<el-option v-for="item in BuJian" :key="item.value" :value="item.value" :label="item.label">
-					</el-option>
-				</el-select>
-			</el-col>
-			<el-col :span="12">
-				<div>时间:</div>
-				<el-date-picker v-model="tableTime" type="datetimerange" range-separator="至"
-					start-placeholder="开始日期" end-placeholder="结束日期" class="w">
-				</el-date-picker>
-			</el-col>
-		</el-row>
-		<el-row type="flex" class="mb10">
-			<el-col :span="12">
-				<div>故障原因:</div>
-				<el-input placeholder="请输入故障原因" v-model="tableSymptom" :value="tableSymptom">
-				</el-input>
-			</el-col>
-			<el-col :span="12">
-				<div>风机厂商:</div>
-				<el-input placeholder="请输入风机厂商" v-model="tableManufacturer" :value="tableManufacturer">
-				</el-input>
-			</el-col>
-		</el-row>
-		<el-row type="flex" class="mb10">
-			<el-col :span="12">
-				<div>风机编号:</div>
-				<el-input placeholder="请输入风机编号" v-model="stationcn" :value="stationcn">
-				</el-input>
-			</el-col>
-		</el-row>
-		<el-row type="flex" justify="end">
-			<div class="query-actions" style="margin-top: 15px">
-				<button class="btn" @click="onClickDialogClose">取消</button>
-				<button class="btn" @click="dialogSave">保存</button>
-			</div>
-		</el-row>
-	</el-dialog>
-	<!-- 原始数据start -->
-	<el-dialog title="原始数据" v-model="yssjDialog" width="70%" top="15vh" custom-class="modal"
-		:close-on-click-modal="false" :before-close="yssjDialogClose">
-		<div class="query mg-b-8">
-			<div class="query-items">
-				<div class="query-item">
-					<div class="lable">时间:</div>
-					<div class="search-input">
-						<el-date-picker v-model="time" type="datetimerange" range-separator="至" start-placeholder="开始日期"
-							end-placeholder="结束日期">
-						</el-date-picker>
-					</div>
-				</div>
-				<div class="query-item">
-					<div class="lable">等间隔:</div>
-					<div class="search-input">
-						<el-select
-						  v-if="!chooseStatus"
-						  @change="switchChange(selectValue)"
-						  class="inputs"
-						  v-model="selectValue"
-						  placeholder="请选择"
-						>
-						  <el-option
-							v-for="item in timeoptions"
-							:key="item.value"
-							:label="item.label"
-							:value="item.value"
-						  >
-						  </el-option>
-						</el-select>
-					</div>
-				</div>
-				<div class="query-actions">
-					<button class="btn" @click="queryYssj">查询</button>
-				</div>
-			</div>
-		</div>
-		
-		<el-row type="flex">
-			<multiple-y-line-chart-normal
-			  height="500px"
-			  :list="Powertrend"
-			  :yAxises="PowertrendYAxises"
-			  :showLegend="true"
-			/>
-		</el-row>
-	</el-dialog>
-			<!-- 原始数据end -->
-</template>
-
-<script>
-	import ComTable from "@/components/coms/table/table.vue";
-		import MultipleYLineChartNormal from "../../NewPages/multiple-y-line-chart-normal.vue";
-		import Tab from "@/components/coms/tabs/tab.vue";
-	export default {
-		components: {
-			ComTable,MultipleYLineChartNormal,Tab
-		},
-		data() {
-			const that = this;
-			return {
-				Powertrend: [
-				  {
-				    title: "",
-				    yAxisIndex: 0, // 使用单位
-				    value: [],
-				  },
-				],
-				PowertrendYAxises: [
-				  {
-				    name: "功率",
-				    min: 0,
-				    max: null,
-				    unit: "(万kWh)",
-				    position: "left",
-				  },
-				  {
-				    name: "风速",
-				    min: 0,
-				    max: 25,
-				    unit: "(m/s)",
-				    position: "right",
-				  },
-				],
-				selectValue: "60",
-				timeoptions: [
-				  {
-				    value: "60",
-				    label: "一分钟",
-				  },
-				  {
-				    value: "300",
-				    label: "五分钟",
-				  },
-				  {
-				    value: "600",
-				    label: "十分钟",
-				  },
-				  {
-				    value: "1800",
-				    label: "三十分钟",
-				  },
-				  {
-				    value: "3600",
-				    label: "一小时",
-				  },
-				  {
-				    value: "86400",
-				    label: "一天",
-				  },
-				],
-				time: [],
-				yssjDialog:false,
-				point:[],
-				pointdes:[],
-				
-				widgetArr: [{label: '正样本',value: 0},{label: '负样本',value: 1}],
-				queryType: false, //没有改变select时,点击查询无效
-				pageIndex: 1,
-				pageSize: 20,
-				BuJian: [{
-					label: '部件1',
-					value: '1'
-				}, {
-					label: '部件2',
-					value: '2'
-				}],
-				ChangZhan: [{
-					label: '麻黄山风电场',
-					value: 'MHS_FDC'
-				}],
-				fjxh: [{
-					label: '类型1',
-					value: '1'
-				}],
-				fjxhArr: [{
-					id: "MHS_FDC",
-					value: ['UP77', 'UP82', 'UP105']
-				}],
-				widget: [],
-				model: [],
-				station: '',
-				windturbinename: "",
-				widget: "",
-				tableModel: "",
-				tableTime: "",
-				tableSymptom: "",
-				tableManufacturer: "",
-				stationcn: "",
-				tableCategory: "", //隐藏保存部分
-				tableRemark: "",
-				tableFaultcode: "",
-				tableId: "",
-				tableSymptomcode: "",
-				tableStationen: "",
-				isvisiable: false,
-				isvisiableType: 1, //新增为1,编辑为2
-				checkLength: 0, //对标分析只能选择5个
-				tableData: {
-					column: [{
-							name: "序号",
-							field: "index",
-							is_light: false,
-							width: '50px',
-						},
-						{
-						  name: "",
-						  field: "check",
-						  is_light: false,
-						  width: '50px',
-						  template: function () {
-						    return "<input class='check curCheckBox' type='CheckBox'/>";
-						  },
-						  click: function (event, data) {
-						    let point = data.point,
-								pointdes = data.pointdes;
-						    if (event.target.checked == false && that.checkLength <= 5) {
-						      that.point.forEach((item, i) => {
-						        if (item == point) {
-						          that.point.splice(i, 1);
-						          that.pointdes.splice(i, 1);
-						        }
-						      });
-						      that.checkLength--;
-						    } else if (event.target.checked && that.checkLength < 5) {
-						      that.point.push(point);
-						      that.pointdes.push(pointdes);
-						      that.checkLength++;
-						    } else if (that.checkLength == 5) {
-						      event.target.checked = false;
-						    }
-						  },
-						},
-						{
-							name: "风机",
-							field: "windturbineid",
-							is_light: false,
-							width: '100px',
-						},
-						{
-							name: "部件",
-							field: "widget",
-							is_light: false,
-							width: '100px',
-						},
-						{
-							name: "测点",
-							field: "point",
-							is_light: false,
-							width: '250px',
-						},
-						{
-							name: "测点描述",
-							field: "pointdes",
-							is_light: false,
-							width: '150px',
-						},
-						{
-							name: "风机型号",
-							field: "model",
-							is_light: false,
-							width: '150px',
-						},
-						{
-							name: "场站",
-							field: "stationcn",
-							is_light: false,
-							width: '150px',
-						},
-						{
-							name: "操作",
-							is_light: false,
-							width: '200px',
-							template: () => {
-								return (
-									"<el-button type='text' style='cursor: pointer;' value='edit'>编辑</el-button>&nbsp" +
-									"<el-button type='text' style='cursor: pointer;' value='delete'>删除</el-button>&nbsp" +
-									"<el-button type='text' style='cursor: pointer;' value='config'>原始数据</el-button>&nbsp"
-								);
-							},
-							click(e, row) {
-								that.onClickOption(e, row);
-							},
-						},
-					],
-					data: [{
-						index: 1,
-						windturbineid: 0,
-						widget: "MG01-01",
-						point: "0.1000",
-						pointdes: "0.1000",
-						model: "0.1000",
-						stationcn: "0.1000",
-						is_light: false,
-					}],
-				}
-			};
-		},
-		props: {
-			data: {
-				type: Array
-			},
-			st:{
-				type: String
-			}
-		},
-		methods: {
-			getTable() {
-				let that = this;
-				this.tableLoading = true;
-				that.API.requestData({
-					method: "GET",
-					baseURL: "http://192.168.10.4:9002/",
-					subUrl: "benchmarking/wplist",
-					data: {
-						wpId: that.stationId,
-						startTs: that.startDate,
-						endTs: that.endDate,
-						pageNum: that.pageIndex,
-						pageSize: that.pageSize,
-					},
-					success(res) {
-						var dataTab = [];
-						if (res.data) {
-							res.data.list.forEach(item => {
-								dataTab.push({ //表格
-									recodedata: that.formatTime(item.recodedata),
-									region: item.region,
-								})
-							})
-							that.tableData.data = dataTab;
-							that.tableData.total = res.data.total;
-						} else {
-							that.tableData.data = [];
-							that.tableData.total = 0;
-						}
-						that.tableLoading = false;
-					},
-				});
-			},
-			onChangePage(params) {
-				this.pageIndex = params.pageIndex;
-				this.pageSize = params.pageSize;
-				this.getTable();
-			},
-			startAjax() {
-				var that = this;
-				// that.time = [new Date((new Date() - 3600 * 1000 * 24 * 30)).formatDate("yyyy-MM-dd"), new Date().formatDate("yyyy-MM-dd")];
-				that.time = [new Date((new Date() - 3600 * 1000 * 24 * 360)).formatDate("yyyy-MM-dd"), new Date()
-					.formatDate("yyyy-MM-dd")
-				];
-				that.API.requestData({
-					method: "GET",
-					baseURL: "http://10.155.32.4:9001/",
-					subUrl: "benchmarking/wplist",
-					success(res) {
-						that.ChangZhan = res.data;
-						// that.station = res.data[0].name
-						that.station = res.data[1].name
-					},
-				});
-
-				that.API.requestData({
-					method: "GET",
-					baseURL: "http://192.168.1.18:9002/",
-					subUrl: "basic/widget/condition",
-					success(res) {
-						let keys = Object.keys(res.data[0]);
-						let bujian = [],
-							widget = [];
-						keys.forEach((ele, index) => {
-							bujian.push({
-								label: res.data[0].ele,
-								value: ele
-							})
-							widget.push(ele)
-						})
-
-						that.widget = widget;
-						that.BuJian = bujian;
-					},
-				});
-
-				that.API.requestData({
-					method: "GET",
-					baseURL: "http://192.168.1.18:9002/",
-					subUrl: "basic/station/all",
-					success(res) {
-						let fjxhArr = [];
-						let model = [],
-							fjxh = [];
-						res.data.forEach(ele => {
-							fjxhArr.push({
-								id: ele.id,
-								value: ele.model.split("/")
-							})
-							if (ele.id == "MHS_FDC") {
-								model = ele.model.split("/");
-								model.forEach(ele => {
-									fjxh.push({
-										label: ele,
-										value: ele
-									})
-								})
-							}
-						})
-						that.fjxhArr = fjxhArr;
-						that.model = model;
-						that.fjxh = fjxh;
-					},
-				});
-			},
-			query() {
-				if (this.queryType) {
-					this.list();
-				}
-			},
-			addEdit() {
-				this.isvisiableType = 1;
-				this.windturbinename = '';
-				this.tableModel = '';
-				this.tableTime = '';
-				this.tableSymptom = '';
-				this.tableManufacturer = '';
-				this.stationcn = '';
-
-				// this.tableCategory: data[i].category,
-				// this.tableRemark: data[i].remark,
-				// this.tableFaultcode: data[i].faultcode,
-				// this.tableId: data[i].id,
-				// this.tableSymptomcode:data[i].Symptomcode,
-				// this.tableStationen:data[i].stationen
-
-				this.isvisiable = true;
-			},
-			onClickOption(e, row) { // 操作按钮
-				let that = this;
-				if ("delete" == e.target.getAttribute("value")) {
-					that
-						.$confirm("确认删除此条样本数据?", "提示", {
-							confirmButtonText: "删除",
-							cancelButtonText: "取消"
-						})
-						.then((_) => {
-							console.log('ok')
-							// that.requestDelete(row);
-						})
-						.catch((_) => {});
-				}
-				if ("edit" == e.target.getAttribute("value")) {
-					that.isvisiableType = 2;
-					that.$nextTick(() => {
-						let tableTime = row.tableTime.split(" - ");
-						that.widget = row.widget;
-						that.BuJian.forEach(ele => {
-							if (ele.value == row.tableFaultcode) {
-								that.windturbinename = ele.label
-							}
-						})
-						that.tableModel = row.tableModel;
-						that.tableTime = [Date.parse(new Date(tableTime[0])), Date.parse(new Date(tableTime[1]))];
-						that.tableSymptom = row.tableSymptom;
-						that.tableManufacturer = row.tableManufacturer;
-						that.stationcn = row.stationcn;
-
-						that.tableCategory = row.tableCategory;
-						that.tableRemark = row.tableRemark;
-						that.tableFaultcode = row.tableFaultcode;
-						that.tableId = row.tableId;
-						that.tableSymptomcode = row.tableSymptomcode;
-						that.tableStationen = row.tableStationen;
-					});
-					that.isvisiable = true;
-				}
-				if ("config" == e.target.getAttribute("value")) { //传感点
-					that.time = [that.st - (3600 * 1000), that.st];
-					that.point =[row.point];
-					that.pointdes = [row.pointdes];
-					that.requestDetailData(that.point,that.pointdes,that.time,that.selectValue);
-					that.yssjDialog=true;
-				}
-			},
-			onClickDialogClose() { // 弹窗右上角关闭按钮
-				this.isvisiable = false;
-				this.isvisiableType = 1;
-			},
-			dialogSave() {
-				let that = this;
-				that.tableTime[0] = that.formatDate(that.tableTime[0].valueOf());
-				that.tableTime[1] = that.formatDate(that.tableTime[1].valueOf());
-				console.log(that.tableTime)
-				that.API.requestData({
-					method: "POST",
-					baseURL: "http://192.168.1.18:9002/",
-					headers: {
-						'Content-Type': 'application/json;charset=utf-8',
-					},
-					subUrl: "case/item/edit",
-					body: {
-						category: that.tableCategory,
-						endtime: that.tableTime[1],
-						faultcode: that.tableFaultcode,
-						faulttype: that.windturbinename,
-						id: that.tableId,
-						manufacturer: that.tableManufacturer,
-						model: that.tableModel,
-						remark: that.tableRemark,
-						starttime: that.tableTime[0],
-						stationen: that.tableStationen,
-						symptom: that.tableSymptom,
-						symptomcode: that.tableSymptomcode,
-						tag: that.widget == "正样本" ? 0 : 1,
-						windturbineid: that.stationcn
-					},
-					success(res) {
-						if (res.code == 200) {
-							that.BASE.showMsg({
-								type: "success",
-								msg: "保存成功",
-							});
-							that.onClickDialogClose();
-							that.list();
-						}
-					},
-				});
-			},
-			gzCgdClick(data) {
-				this.gzCgd = data;
-			},
-			formatDate(dates) {
-				var date = new Date(dates);
-				var YY = date.getFullYear() + '-';
-				var MM = (date.getMonth() + 1 < 10 ? '0' + (date.getMonth() + 1) : date.getMonth() + 1) + '-';
-				var DD = (date.getDate() < 10 ? '0' + (date.getDate()) : date.getDate());
-				var hh = (date.getHours() < 10 ? '0' + date.getHours() : date.getHours()) + ':';
-				var mm = (date.getMinutes() < 10 ? '0' + date.getMinutes() : date.getMinutes()) + ':';
-				var ss = (date.getSeconds() < 10 ? '0' + date.getSeconds() : date.getSeconds());
-				return YY + MM + DD + " " + hh + mm + ss;
-			},
-			list(data) {
-				console.log(data)
-				var that = this;
-				that.tableData.data = [];
-				if (data.length) {
-					for (var i = 0; i < data.length; i++) {
-						let obj = {
-							index: i + 1,
-							windturbineid: data[i].windturbineid,
-							widget: data[i].widget,
-							point: data[i].point,
-							pointdes: data[i].pointdes,
-							model: data[i].model,
-							stationcn: data[i].stationcn,
-							
-						};
-						that.tableData.data.push(obj);
-					}
-				}
-				
-				
-				// let station = '',
-				// 	widget = ''
-				// if (typeof that.time[0].valueOf() != 'string') {
-				// 	that.time[0] = that.formatDate(that.time[0].valueOf())
-				// }
-				// if (typeof that.time[1].valueOf() != 'string') {
-				// 	that.time[1] = that.formatDate(that.time[1].valueOf())
-				// }
-				// if (typeof that.station.valueOf() == 'string') {
-				// 	that.ChangZhan.forEach(ele => {
-				// 		if (ele.name == that.station) {
-				// 			station = ele.id
-				// 		}
-				// 	})
-				// }
-				// if (typeof that.widget.valueOf() == 'string') {
-				// 	that.BuJian.forEach(ele => {
-				// 		if (ele.label == that.widget) {
-				// 			widget = ele.value
-				// 		}
-				// 	})
-				// }
-				// if (that.model.length == 0) {
-				// 	that.BASE.showMsg({
-				// 		type: "warning",
-				// 		msg: "请选择风机型号",
-				// 	});
-				// 	return
-				// }
-				// if (that.widget.length == 0) {
-				// 	that.BASE.showMsg({
-				// 		type: "warning",
-				// 		msg: "请选择部件",
-				// 	});
-				// 	return
-				// }
-				// that.API.requestData({
-				// 	showLoading: true,
-				// 	method: "GET",
-				// 	baseURL: "http://192.168.1.18:9002/",
-				// 	subUrl: "case/fault/all",
-				// 	data: {
-				// 		widget: widget ? widget : that.widget,
-				// 		station: station ? station : that.station,
-				// 		model: that.model,
-				// 		st: that.time[0].valueOf(),
-				// 		et: that.time[1].valueOf()
-				// 	},
-				// 	success(res) {
-				// 		if (res.code == 200) {
-				// 			console.log(res)
-				// 			that.tableData.data = [];
-				// 			if (res.data.length) {
-				// 				let data = res.data;
-				// 				for (var i = 0; i < data.length; i++) {
-				// 					let obj = {
-				// 						index: i + 1,
-				// 						widget: data[i].tag == 0 ? '正样本' : '负样本',
-				// 						windturbinename: data[i].faulttype,
-				// 						tableModel: data[i].model,
-				// 						tableTime: data[i].starttime + ' - ' + data[i].endtime,
-				// 						tableSymptom: data[i].symptom,
-				// 						tableManufacturer: data[i].manufacturer,
-				// 						stationcn: data[i].windturbineid,
-
-				// 						tableCategory: data[i].category,
-				// 						tableRemark: data[i].remark,
-				// 						tableFaultcode: data[i].faultcode,
-				// 						tableId: data[i].id,
-				// 						tableSymptomcode: data[i].symptomcode,
-				// 						tableStationen: data[i].stationen
-				// 					};
-				// 					that.tableData.data.push(obj);
-				// 				}
-				// 			}
-				// 		}
-				// 	},
-				// });
-			},
-			back() {
-				this.clearDb();
-				this.$emit('gzCgdClick', 1);
-			},
-			switchChange(interval,status) {
-			  if(status === 'interval') {
-			    this.chooseStatus = false
-			    this.selectValue = '60'
-			  }else if(status === 'original'){
-			    this.chooseStatus = true
-			  }
-			  // this.requestDetailData(
-			  //     this.wpvalue,
-			  //     this.startdate,
-			  //     this.enddate,
-			  //     interval,
-			  //     this.wtId,
-			  //     this.descName
-			  //   );
-			},
-			requestDetailData(point, pointdes, time,interval) {
-			    let that = this;
-				let Powertrend = [];
-				pointdes.forEach((ele,index)=>{
-					Powertrend.push({
-						title:ele,
-						smooth: true,
-						value: [],
-					})
-				})
-				point.forEach((ele,index)=>{
-					that.API.requestData({
-						method: "GET",
-						baseURL: "http://192.168.1.18:9002/",
-						subUrl: "point/item",
-						data:{
-							point:ele,
-							startTs:time[0],
-							endTs:time[1],
-							interval:interval
-						},
-						success(res) {
-							if(res.data){
-							  res.data.forEach((cEle) => {
-								Powertrend[index].value.push({
-								  text: new Date(cEle.ts).formatDate("hh:mm"),
-								  value: cEle.doubleValue,
-								});
-							  });
-							  if((point.length - 1) == index){
-								that.Powertrend = Powertrend;
-							  }
-							}
-						},
-					});
-				})
-				
-			},
-			queryYssj(){
-				this.requestDetailData(this.point,this.pointdes,[Date.parse(new Date(this.time[0])), Date.parse(new Date(this.time[1]))],this.selectValue);
-			},
-			dbfx() {
-			  var that = this;
-			  if (that.point.length <=5) {
-				  that.Powertrend = [];
-				  that.time = [that.st - (3600 * 1000), that.st];
-				  that.requestDetailData(that.point,that.pointdes,[Date.parse(new Date(that.time[0])), Date.parse(new Date(that.time[1]))],that.selectValue);
-			    that.yssjDialog = true;
-			    that.clearDb();
-			  }
-			},
-			clearDb() {
-			  //清空对标状态
-			  this.$refs.curRef.clearCheckBox();
-			  this.point = [];
-			  this.pointdes = [];
-			  this.checkLength = 0;
-			},
-		},
-		created() {
-			this.list(this.data)
-		},
-		watch: {
-			station(res) {
-				let fjxh = [];
-				this.fjxhArr.forEach(ele => {
-					if (ele.id == res) {
-						ele.value.forEach(ele2 => {
-							fjxh.push({
-								label: ele2,
-								value: ele2
-							})
-						})
-						this.model = ele.value;
-					}
-				})
-				this.fjxh = fjxh;
-				this.queryType = true;
-			},
-			widget() {
-				this.queryType = true;
-			},
-			model() {
-				this.queryType = true;
-			},
-			time() {
-				this.queryType = true;
-			},
-		},
-	};
-</script>
-
-<style lang="less" scoped>
-	.mb10 {
-		margin-bottom: 10px;
-	}
-
-	.el-select.w {
-		width: 100%;
-	}
-</style>

+ 364 - 0
src/views/sampleDatabase/powerlineAnalysis/index.vue

@@ -0,0 +1,364 @@
+<template>
+  <div>
+    <!-- <div>
+      <panel :title="'偏航对风分析'" :showLine="false">
+        <div style="height: 200px" class="chart" id="linechart"></div>
+      </panel>
+    </div> -->
+    <div>
+      <panel :title="'功率曲线拟合'" :showLine="false">
+        <el-button @click="get()">查询</el-button>
+        <ScatterLineChart
+          xTitle="风速(m/s)"
+          yTitle="功率(kw)"
+          :showLegend="true"
+          :height="'calc(70vh)'"
+          :symbolSize="5"
+          :data="scatterData"
+          :lineData="lineData"
+        ></ScatterLineChart>
+      </panel>
+    </div>
+  </div>
+</template>
+
+<script>
+import Panel from "../../../components/coms/panel/panel.vue";
+import ScatterLineChart from "./scatter-line-chart.vue";
+import util from "@/helper/util.js";
+import partten from "@/helper/partten.js";
+import * as echarts from "echarts";
+
+export default {
+  // 使用组件
+  components: {
+    Panel,
+    ScatterLineChart,
+  },
+  data() {
+    return {
+      scatterData: [
+        {
+          title: "",
+          value: [],
+        },
+      ],
+      lineData: { legends: [], data: [[], []] },
+    };
+  },
+  created() {
+    // this.$nextTick(() => {
+    //   this.getPHAnalyse();
+    // });
+  },
+  methods: {
+    get() {
+      // this.getPHAnalyse();
+       this.getScatter();
+    },
+    //散点数据
+    getScatter() {
+      let that = this;
+      that.API.requestData({
+        method: "POST",
+        baseURL: "http://192.168.10.5:9002/",
+        subUrl: "scatter/list",
+        data: {
+          station: "NSS_FDC",
+          wtId: "NG01_01",
+          time: "2021-11",
+        },
+        success(res) {
+          if (res.code == 200 && res.data) {
+            let scatterArr = [
+              {
+                title: "NG01有用点",
+                value: res.data.scatter,
+              },
+            ];
+            that.scatterData = scatterArr;
+            let lineArr = {
+              legends: ["实际", "修正"],
+              data: [[], []],
+            };
+            res.data.lineactual.forEach((ele) => {
+              lineArr.data[0].push(ele[1]);
+            });
+            res.data.lineoptimal.forEach((ele) => {
+              lineArr.data[1].push(ele[1]);
+            });
+            that.lineData = lineArr;
+          }
+        },
+      });
+    },
+    //偏航对风分析
+    getPHAnalyse() {
+      let that = this;
+      //  that.API.requestData({
+      //    method: "POST",
+      //    baseURL: "http://192.168.10.5:9002/",
+      //    subUrl: "scatter/range",
+      //    data: {
+      //      station: "NSS_FDC",
+      //      wtId: "NG01_01",
+      //      time: "2021-11",
+      //    },
+      //    success(res) {
+      //      if (res.code == 200 && res.data) {
+      const xData = [
+        "-50",
+        "-49",
+        "-48",
+        "-47",
+        "-46",
+        "-45",
+        "-44",
+        "-43",
+        "-42",
+        "-41",
+        "-40",
+        "-39",
+        "-38",
+        "-37",
+        "-36",
+        "-35",
+        "-34",
+        "-33",
+        "-32",
+        "-31",
+        "-30",
+        "-29",
+        "-28",
+        "-27",
+        "-26",
+        "-25",
+        "-24",
+        "-23",
+        "-22",
+        "-21",
+        "-20",
+        "-19",
+        "-18",
+        "-17",
+        "-16",
+        "-15",
+        "-14",
+        "-13",
+        "-12",
+        "-11",
+        "-10",
+        "-9",
+        "-8",
+        "-7",
+        "-6",
+        "-5",
+        "-4",
+        "-3",
+        "-2",
+        "-1",
+        "0",
+        "1",
+        "2",
+        "3",
+        "4",
+        "5",
+        "6",
+        "7",
+        "8",
+        "9",
+        "10",
+        "11",
+        "12",
+        "13",
+        "14",
+        "15",
+        "16",
+        "17",
+        "18",
+        "19",
+        "20",
+        "21",
+        "22",
+        "23",
+        "24",
+        "25",
+        "26",
+        "27",
+        "28",
+        "29",
+        "30",
+        "31",
+        "32",
+        "33",
+        "34",
+        "35",
+        "36",
+        "37",
+        "38",
+        "39",
+        "40",
+        "41",
+        "42",
+        "43",
+        "44",
+        "45",
+        "46",
+        "47",
+        "48",
+        "49",
+        "50",
+      ];
+      const lData = [
+        1, 1, 0, 0, 0, 0, 1, 1, 0, 1, 0, 1, 0, 4, 3, 3, 1, 3, 1, 2, 5, 5, 5, 5,
+        9, 15, 16, 25, 39, 42, 62, 77, 103, 108, 161, 189, 238, 309, 418, 480,
+        538, 635, 777, 877, 1021, 1170, 1224, 1341, 1409, 1421, 3016, 1493,
+        1437, 1389, 1334, 1177, 1135, 1031, 865, 693, 599, 538, 404, 318, 252,
+        207, 200, 140, 103, 81, 77, 66, 46, 32, 27, 16, 19, 9, 4, 9, 10, 5, 7,
+        7, 3, 1, 3, 2, 1, 1, 0, 0, 2, 2, 1, 1, 0, 1, 1, 0, 2,
+      ];
+      //   const dataMap = res.data[0];
+      //   for (let key in dataMap) {
+      //     let tmpKey = key.replace(/r/, "");
+      //     tmpKey = tmpKey.replace(/f/, "-");
+      //     if (tmpKey < 100) {
+      //       xData.push(tmpKey);
+      //       lData.push(dataMap[key]);
+      //     }
+      //   }
+      console.log(xData);
+      console.log(lData);
+      let option = {
+        color: ["#05bb4c", "#4b55ae", "#fa8c16", "#f8de5b"],
+        tooltip: {
+          trigger: "axis",
+          backgroundColor: "rgba(0,0,0,0.4)",
+          borderColor: partten.getColor("gray"),
+          textStyle: {
+            color: "#fff",
+            fontSize: util.vh(16),
+          },
+        },
+        legend: {
+          show: false,
+          data: ["偏航次数"],
+          right: 56,
+          icon: "circle",
+          itemWidth: 6,
+          inactiveColor: "#606769",
+          textStyle: {
+            color: partten.getColor("grayl"),
+            fontSize: 12,
+          },
+        },
+        toolbox: {
+          brush: {
+            type: ["lineX", "clear"],
+          },
+        },
+        //拖动选择属性
+        brush: {
+          xAxisIndex: "all",
+          brushLink: "all",
+          throttleDelay: 1,
+          outOfBrush: {
+            colorAlpha: 0.5,
+          },
+        },
+        grid: {
+          top: util.vh(40),
+          left: util.vh(60),
+          right: util.vh(130),
+          bottom: util.vh(24),
+        },
+        xAxis: [
+          {
+            name: "对风偏差(度)",
+            type: "category",
+            boundaryGap: false,
+            axisLabel: {
+              formatter: "{value}",
+              fontSize: util.vh(14),
+              textStyle: {
+                color: partten.getColor("gray"),
+              },
+            },
+            data: xData,
+          },
+        ],
+        yAxis: [
+          {
+            type: "value",
+            name: "数量",
+            axisLabel: {
+              formatter: "{value}",
+              fontSize: util.vh(14),
+            },
+            splitLine: {
+              lineStyle: {
+                color: partten.getColor("gray") + 55,
+                type: "dashed",
+              },
+            },
+          },
+        ],
+        series: [
+          {
+            name: "数量",
+            type: "line",
+            smooth: true,
+            zlevel: 0,
+            lineStyle: {
+              normal: {
+                color: "#05bb4c",
+                width: 1,
+              },
+            },
+            yAxisIndex: 0,
+            data: lData,
+          },
+        ],
+      };
+      const chart = echarts.init(document.getElementById("linechart"));
+      chart.clear();
+      chart.setOption(option);
+      //拖动选择属性
+      chart.dispatchAction({
+        type: "brush",
+        areas: [
+          {
+            brushType: "lineX",
+            coordRange: ["-15", "15"],
+            xAxisIndex: 0,
+          },
+        ],
+      });
+      chart.on("brushSelected", function (params) {
+        var mainSeries = params.batch[0].areas;
+        var selectedItems = []; //选中区域的横纵标
+        for (var i = 0; i < mainSeries.length; i++) {
+          if (mainSeries[i].coordRange && mainSeries[i].coordRange.length > 0) {
+            for (var j = 0; j < mainSeries[i].coordRange.length; j++) {
+              selectedItems.push(mainSeries[i].coordRange[j]);
+            }
+          }
+        }
+        
+           console.log(selectedItems);
+      });
+
+      this.resize = function () {
+        chart.resize();
+      };
+      window.addEventListener("resize", this.resize);
+      // }
+      //    },
+      //  });
+    },
+  },
+};
+</script>
+
+<style lang="less" scoped>
+</style>
+

+ 799 - 0
src/views/sampleDatabase/powerlineAnalysis/scatter-line-chart.vue

@@ -0,0 +1,799 @@
+<template>
+  <div class="chart" :id="id"></div>
+</template>
+
+<script>
+import util from "@/helper/util.js";
+import partten from "@/helper/partten.js";
+import * as echarts from "echarts";
+
+export default {
+  props: {
+    width: {
+      type: String,
+      default: "100%",
+    },
+    height: {
+      type: String,
+      default: "350px",
+    },
+    // 传入数据
+    data: {
+      type: Array,
+      default: () => [
+        {
+          title: "男",
+          value: [
+            [161.2, 51.6],
+            [167.5, 59.0],
+            [159.5, 49.2],
+            [157.0, 63.0],
+            [155.8, 53.6],
+            [170.0, 59.0],
+            [159.1, 47.6],
+            [166.0, 69.8],
+            [176.2, 66.8],
+            [160.2, 75.2],
+            [172.5, 55.2],
+            [170.9, 54.2],
+            [172.9, 62.5],
+            [153.4, 42.0],
+            [160.0, 50.0],
+            [147.2, 49.8],
+            [168.2, 49.2],
+            [175.0, 73.2],
+            [157.0, 47.8],
+            [167.6, 68.8],
+            [159.5, 50.6],
+            [175.0, 82.5],
+            [166.8, 57.2],
+            [176.5, 87.8],
+            [170.2, 72.8],
+            [174.0, 54.5],
+            [173.0, 59.8],
+            [179.9, 67.3],
+            [170.5, 67.8],
+            [160.0, 47.0],
+            [154.4, 46.2],
+            [162.0, 55.0],
+            [176.5, 83.0],
+            [160.0, 54.4],
+            [152.0, 45.8],
+            [162.1, 53.6],
+            [170.0, 73.2],
+            [160.2, 52.1],
+            [161.3, 67.9],
+            [166.4, 56.6],
+            [168.9, 62.3],
+            [163.8, 58.5],
+            [167.6, 54.5],
+            [160.0, 50.2],
+            [161.3, 60.3],
+            [167.6, 58.3],
+            [165.1, 56.2],
+            [160.0, 50.2],
+            [170.0, 72.9],
+            [157.5, 59.8],
+            [167.6, 61.0],
+            [160.7, 69.1],
+            [163.2, 55.9],
+            [152.4, 46.5],
+            [157.5, 54.3],
+            [168.3, 54.8],
+            [180.3, 60.7],
+            [165.5, 60.0],
+            [165.0, 62.0],
+            [164.5, 60.3],
+            [156.0, 52.7],
+            [160.0, 74.3],
+            [163.0, 62.0],
+            [165.7, 73.1],
+            [161.0, 80.0],
+            [162.0, 54.7],
+            [166.0, 53.2],
+            [174.0, 75.7],
+            [172.7, 61.1],
+            [167.6, 55.7],
+            [151.1, 48.7],
+            [164.5, 52.3],
+            [163.5, 50.0],
+            [152.0, 59.3],
+            [169.0, 62.5],
+            [164.0, 55.7],
+            [161.2, 54.8],
+            [155.0, 45.9],
+            [170.0, 70.6],
+            [176.2, 67.2],
+            [170.0, 69.4],
+            [162.5, 58.2],
+            [170.3, 64.8],
+            [164.1, 71.6],
+            [169.5, 52.8],
+            [163.2, 59.8],
+            [154.5, 49.0],
+            [159.8, 50.0],
+            [173.2, 69.2],
+            [170.0, 55.9],
+            [161.4, 63.4],
+            [169.0, 58.2],
+            [166.2, 58.6],
+            [159.4, 45.7],
+            [162.5, 52.2],
+            [159.0, 48.6],
+            [162.8, 57.8],
+            [159.0, 55.6],
+            [179.8, 66.8],
+            [162.9, 59.4],
+            [161.0, 53.6],
+            [151.1, 73.2],
+            [168.2, 53.4],
+            [168.9, 69.0],
+            [173.2, 58.4],
+            [171.8, 56.2],
+            [178.0, 70.6],
+            [164.3, 59.8],
+            [163.0, 72.0],
+            [168.5, 65.2],
+            [166.8, 56.6],
+            [172.7, 105.2],
+            [163.5, 51.8],
+            [169.4, 63.4],
+            [167.8, 59.0],
+            [159.5, 47.6],
+            [167.6, 63.0],
+            [161.2, 55.2],
+            [160.0, 45.0],
+            [163.2, 54.0],
+            [162.2, 50.2],
+            [161.3, 60.2],
+            [149.5, 44.8],
+            [157.5, 58.8],
+            [163.2, 56.4],
+            [172.7, 62.0],
+            [155.0, 49.2],
+            [156.5, 67.2],
+            [164.0, 53.8],
+            [160.9, 54.4],
+            [162.8, 58.0],
+            [167.0, 59.8],
+            [160.0, 54.8],
+            [160.0, 43.2],
+            [168.9, 60.5],
+            [158.2, 46.4],
+            [156.0, 64.4],
+            [160.0, 48.8],
+            [167.1, 62.2],
+            [158.0, 55.5],
+            [167.6, 57.8],
+            [156.0, 54.6],
+            [162.1, 59.2],
+            [173.4, 52.7],
+            [159.8, 53.2],
+            [170.5, 64.5],
+            [159.2, 51.8],
+            [157.5, 56.0],
+            [161.3, 63.6],
+            [162.6, 63.2],
+            [160.0, 59.5],
+            [168.9, 56.8],
+            [165.1, 64.1],
+            [162.6, 50.0],
+            [165.1, 72.3],
+            [166.4, 55.0],
+            [160.0, 55.9],
+            [152.4, 60.4],
+            [170.2, 69.1],
+            [162.6, 84.5],
+            [170.2, 55.9],
+            [158.8, 55.5],
+            [172.7, 69.5],
+            [167.6, 76.4],
+            [162.6, 61.4],
+            [167.6, 65.9],
+            [156.2, 58.6],
+            [175.2, 66.8],
+            [172.1, 56.6],
+            [162.6, 58.6],
+            [160.0, 55.9],
+            [165.1, 59.1],
+            [182.9, 81.8],
+            [166.4, 70.7],
+            [165.1, 56.8],
+            [177.8, 60.0],
+            [165.1, 58.2],
+            [175.3, 72.7],
+            [154.9, 54.1],
+            [158.8, 49.1],
+            [172.7, 75.9],
+            [168.9, 55.0],
+            [161.3, 57.3],
+            [167.6, 55.0],
+            [165.1, 65.5],
+            [175.3, 65.5],
+            [157.5, 48.6],
+            [163.8, 58.6],
+            [167.6, 63.6],
+            [165.1, 55.2],
+            [165.1, 62.7],
+            [168.9, 56.6],
+            [162.6, 53.9],
+            [164.5, 63.2],
+            [176.5, 73.6],
+            [168.9, 62.0],
+            [175.3, 63.6],
+            [159.4, 53.2],
+            [160.0, 53.4],
+            [170.2, 55.0],
+            [162.6, 70.5],
+            [167.6, 54.5],
+            [162.6, 54.5],
+            [160.7, 55.9],
+            [160.0, 59.0],
+            [157.5, 63.6],
+            [162.6, 54.5],
+            [152.4, 47.3],
+            [170.2, 67.7],
+            [165.1, 80.9],
+            [172.7, 70.5],
+            [165.1, 60.9],
+            [170.2, 63.6],
+            [170.2, 54.5],
+            [170.2, 59.1],
+            [161.3, 70.5],
+            [167.6, 52.7],
+            [167.6, 62.7],
+            [165.1, 86.3],
+            [162.6, 66.4],
+            [152.4, 67.3],
+            [168.9, 63.0],
+            [170.2, 73.6],
+            [175.2, 62.3],
+            [175.2, 57.7],
+            [160.0, 55.4],
+            [165.1, 104.1],
+            [174.0, 55.5],
+            [170.2, 77.3],
+            [160.0, 80.5],
+            [167.6, 64.5],
+            [167.6, 72.3],
+            [167.6, 61.4],
+            [154.9, 58.2],
+            [162.6, 81.8],
+            [175.3, 63.6],
+            [171.4, 53.4],
+            [157.5, 54.5],
+            [165.1, 53.6],
+            [160.0, 60.0],
+            [174.0, 73.6],
+            [162.6, 61.4],
+            [174.0, 55.5],
+            [162.6, 63.6],
+            [161.3, 60.9],
+            [156.2, 60.0],
+            [149.9, 46.8],
+            [169.5, 57.3],
+            [160.0, 64.1],
+            [175.3, 63.6],
+            [169.5, 67.3],
+            [160.0, 75.5],
+            [172.7, 68.2],
+            [162.6, 61.4],
+            [157.5, 76.8],
+            [176.5, 71.8],
+            [164.4, 55.5],
+            [160.7, 48.6],
+            [174.0, 66.4],
+            [163.8, 67.3],
+          ],
+        },
+        {
+          title: "女",
+          value: [
+            [174.0, 65.6],
+            [175.3, 71.8],
+            [193.5, 80.7],
+            [186.5, 72.6],
+            [187.2, 78.8],
+            [181.5, 74.8],
+            [184.0, 86.4],
+            [184.5, 78.4],
+            [175.0, 62.0],
+            [184.0, 81.6],
+            [180.0, 76.6],
+            [177.8, 83.6],
+            [192.0, 90.0],
+            [176.0, 74.6],
+            [174.0, 71.0],
+            [184.0, 79.6],
+            [192.7, 93.8],
+            [171.5, 70.0],
+            [173.0, 72.4],
+            [176.0, 85.9],
+            [176.0, 78.8],
+            [180.5, 77.8],
+            [172.7, 66.2],
+            [176.0, 86.4],
+            [173.5, 81.8],
+            [178.0, 89.6],
+            [180.3, 82.8],
+            [180.3, 76.4],
+            [164.5, 63.2],
+            [173.0, 60.9],
+            [183.5, 74.8],
+            [175.5, 70.0],
+            [188.0, 72.4],
+            [189.2, 84.1],
+            [172.8, 69.1],
+            [170.0, 59.5],
+            [182.0, 67.2],
+            [170.0, 61.3],
+            [177.8, 68.6],
+            [184.2, 80.1],
+            [186.7, 87.8],
+            [171.4, 84.7],
+            [172.7, 73.4],
+            [175.3, 72.1],
+            [180.3, 82.6],
+            [182.9, 88.7],
+            [188.0, 84.1],
+            [177.2, 94.1],
+            [172.1, 74.9],
+            [167.0, 59.1],
+            [169.5, 75.6],
+            [174.0, 86.2],
+            [172.7, 75.3],
+            [182.2, 87.1],
+            [164.1, 55.2],
+            [163.0, 57.0],
+            [171.5, 61.4],
+            [184.2, 76.8],
+            [174.0, 86.8],
+            [174.0, 72.2],
+            [177.0, 71.6],
+            [186.0, 84.8],
+            [167.0, 68.2],
+            [171.8, 66.1],
+            [182.0, 72.0],
+            [167.0, 64.6],
+            [177.8, 74.8],
+            [164.5, 70.0],
+            [192.0, 101.6],
+            [175.5, 63.2],
+            [171.2, 79.1],
+            [181.6, 78.9],
+            [167.4, 67.7],
+            [181.1, 66.0],
+            [177.0, 68.2],
+            [174.5, 63.9],
+            [177.5, 72.0],
+            [170.5, 56.8],
+            [182.4, 74.5],
+            [197.1, 90.9],
+            [180.1, 93.0],
+            [175.5, 80.9],
+            [180.6, 72.7],
+            [184.4, 68.0],
+            [175.5, 70.9],
+            [180.6, 72.5],
+            [177.0, 72.5],
+            [177.1, 83.4],
+            [181.6, 75.5],
+            [176.5, 73.0],
+            [175.0, 70.2],
+            [174.0, 73.4],
+            [165.1, 70.5],
+            [177.0, 68.9],
+            [192.0, 102.3],
+            [176.5, 68.4],
+            [169.4, 65.9],
+            [182.1, 75.7],
+            [179.8, 84.5],
+            [175.3, 87.7],
+            [184.9, 86.4],
+            [177.3, 73.2],
+            [167.4, 53.9],
+            [178.1, 72.0],
+            [168.9, 55.5],
+            [157.2, 58.4],
+            [180.3, 83.2],
+            [170.2, 72.7],
+            [177.8, 64.1],
+            [172.7, 72.3],
+            [165.1, 65.0],
+            [186.7, 86.4],
+            [165.1, 65.0],
+            [174.0, 88.6],
+            [175.3, 84.1],
+            [185.4, 66.8],
+            [177.8, 75.5],
+            [180.3, 93.2],
+            [180.3, 82.7],
+            [177.8, 58.0],
+            [177.8, 79.5],
+            [177.8, 78.6],
+            [177.8, 71.8],
+            [177.8, 116.4],
+            [163.8, 72.2],
+            [188.0, 83.6],
+            [198.1, 85.5],
+            [175.3, 90.9],
+            [166.4, 85.9],
+            [190.5, 89.1],
+            [166.4, 75.0],
+            [177.8, 77.7],
+            [179.7, 86.4],
+            [172.7, 90.9],
+            [190.5, 73.6],
+            [185.4, 76.4],
+            [168.9, 69.1],
+            [167.6, 84.5],
+            [175.3, 64.5],
+            [170.2, 69.1],
+            [190.5, 108.6],
+            [177.8, 86.4],
+            [190.5, 80.9],
+            [177.8, 87.7],
+            [184.2, 94.5],
+            [176.5, 80.2],
+            [177.8, 72.0],
+            [180.3, 71.4],
+            [171.4, 72.7],
+            [172.7, 84.1],
+            [172.7, 76.8],
+            [177.8, 63.6],
+            [177.8, 80.9],
+            [182.9, 80.9],
+            [170.2, 85.5],
+            [167.6, 68.6],
+            [175.3, 67.7],
+            [165.1, 66.4],
+            [185.4, 102.3],
+            [181.6, 70.5],
+            [172.7, 95.9],
+            [190.5, 84.1],
+            [179.1, 87.3],
+            [175.3, 71.8],
+            [170.2, 65.9],
+            [193.0, 95.9],
+            [171.4, 91.4],
+            [177.8, 81.8],
+            [177.8, 96.8],
+            [167.6, 69.1],
+            [167.6, 82.7],
+            [180.3, 75.5],
+            [182.9, 79.5],
+            [176.5, 73.6],
+            [186.7, 91.8],
+            [188.0, 84.1],
+            [188.0, 85.9],
+            [177.8, 81.8],
+            [174.0, 82.5],
+            [177.8, 80.5],
+            [171.4, 70.0],
+            [185.4, 81.8],
+            [185.4, 84.1],
+            [188.0, 90.5],
+            [188.0, 91.4],
+            [182.9, 89.1],
+            [176.5, 85.0],
+            [175.3, 69.1],
+            [175.3, 73.6],
+            [188.0, 80.5],
+            [188.0, 82.7],
+            [175.3, 86.4],
+            [170.5, 67.7],
+            [179.1, 92.7],
+            [177.8, 93.6],
+            [175.3, 70.9],
+            [182.9, 75.0],
+            [170.8, 93.2],
+            [188.0, 93.2],
+            [180.3, 77.7],
+            [177.8, 61.4],
+            [185.4, 94.1],
+            [168.9, 75.0],
+            [185.4, 83.6],
+            [180.3, 85.5],
+            [174.0, 73.9],
+            [167.6, 66.8],
+            [182.9, 87.3],
+            [160.0, 72.3],
+            [180.3, 88.6],
+            [167.6, 75.5],
+            [186.7, 101.4],
+            [175.3, 91.1],
+            [175.3, 67.3],
+            [175.9, 77.7],
+            [175.3, 81.8],
+            [179.1, 75.5],
+            [181.6, 84.5],
+            [177.8, 76.6],
+            [182.9, 85.0],
+            [177.8, 102.5],
+            [184.2, 77.3],
+            [179.1, 71.8],
+            [176.5, 87.9],
+            [188.0, 94.3],
+            [174.0, 70.9],
+            [167.6, 64.5],
+            [170.2, 77.3],
+            [167.6, 72.3],
+            [188.0, 87.3],
+            [174.0, 80.0],
+            [176.5, 82.3],
+            [180.3, 73.6],
+            [167.6, 74.1],
+            [188.0, 85.9],
+            [180.3, 73.2],
+            [167.6, 76.3],
+            [183.0, 65.9],
+            [183.0, 90.9],
+            [179.1, 89.1],
+            [170.2, 62.3],
+            [177.8, 82.7],
+            [179.1, 79.1],
+            [190.5, 98.2],
+            [177.8, 84.1],
+            [180.3, 83.2],
+            [180.3, 83.2],
+          ],
+        },
+      ],
+    },
+    xTitle: {
+      type: String,
+      default: "x轴标题",
+    },
+    yTitle: {
+      type: String,
+      default: "Y轴标题",
+    },
+    showLegend: {
+      type: Boolean,
+      default: true,
+    },
+    lineData: {
+      type: Object,
+      default: () => {
+        return {
+          xTitle: "折线X",
+          yTitle: "折线y",
+          legends: ["1", "2", "3"],
+          data: [[1, 2, 3, 4]],
+        };
+      },
+    },
+  },
+  data() {
+    return {
+      id: "",
+      chart: null,
+      color: ["#05bb4c", "#f8de5b", "#4b55ae", "#fa8c16"],
+    };
+  },
+  computed: {
+    series() {
+      let result = [];
+      this.data.forEach((element, index) => {
+        result.push({
+          name: element.title,
+          type: "scatter",
+          emphasis: {
+            focus: "series",
+          },
+          data: element.value,
+          markLine: {
+            data: [
+              {
+                type: "max",
+                name: "最大值",
+                label: {
+                  color: partten.getColor("gray"),
+                },
+              },
+              {
+                type: "min",
+                name: "最小值",
+                label: {
+                  color: partten.getColor("gray"),
+                },
+              },
+            ],
+          },
+        });
+      });
+      return result;
+    },
+    legend() {
+      let result = [];
+
+      // if (this.data && this.data.length > 0)
+      //   result.push(
+      //     this.data.map((t) => {
+      //       return t.title;
+      //     })
+      //   );
+
+      // if (this.lineData && this.lineData.legends && this.lineData.legends.legends > 0) result.push(this.lineData.legends);
+
+      this.data.forEach((ele) => {
+        result.push(ele.title);
+      });
+
+      this.lineData.legends.forEach((ele) => {
+        result.push(ele);
+      });
+
+      return result;
+    },
+  },
+  methods: {
+    resize() {},
+    initChart() {
+      let that = this;
+      const chart = echarts.init(this.$el);
+
+      let option = {
+        color: this.color,
+        grid: {
+          top: 40,
+          left: 40,
+          right: 64,
+          bottom: 24,
+          containLabel: true,
+        },
+        tooltip: {
+          trigger: "item",
+          showDelay: 0,
+          backgroundColor: "rgba(0,0,0,0.4)",
+          borderColor: partten.getColor("gray"),
+          textStyle: {
+            fontSize: util.vh(16),
+            color: "#fff",
+          },
+          formatter(params) {
+            if (params.componentType == "markLine") {
+              return params.name + "<br />" + params.value;
+            }
+            var msg = params.seriesName + "<br />";
+            msg +=
+              params.marker + that.xTitle + ":" + params.value[0] + "<br />";
+            msg +=
+              params.marker + that.yTitle + ":" + params.value[1] + "<br />";
+            return msg;
+          },
+          axisPointer: {
+            show: true,
+            type: "cross",
+            lineStyle: {
+              type: "dashed",
+              width: 1,
+            },
+          },
+        },
+        legend: {
+          show: this.showLegend,
+          data: this.legend,
+          right: "40",
+          icon: "circle",
+          itemWidth: 6,
+          inactiveColor: partten.getColor("gray"),
+          textStyle: {
+            color: partten.getColor("grayl"),
+            fontSize: 12,
+          },
+        },
+        xAxis: [
+          {
+            name: this.xTitle,
+            type: "value",
+            scale: true,
+            axisLabel: {
+              formatter: "{value}",
+            },
+            splitLine: {
+              show: false,
+            },
+          },
+        ],
+        yAxis: [
+          {
+            min: 0,
+            type: "value",
+            name: this.yTitle,
+            scale: true,
+            axisLabel: {
+              formatter: "{value}",
+            },
+            splitLine: {
+              show: false,
+            },
+          },
+        ],
+        series: this.series,
+      };
+
+      if (this.lineData && this.lineData.data) {
+        option.xAxis.push({
+          type: "category",
+          // name: this.lineData.xTitle,
+          boundaryGap: false,
+          axisLabel: {
+            show: false,
+          },
+          axisLine: {
+            show: false,
+          },
+          data: this.lineData.legends,
+        });
+
+        option.yAxis.push({
+          type: "value",
+          // name: this.lineData.yTitle,
+          axisLabel: {
+            show: false,
+          },
+          axisLine: {
+            show: false,
+          },
+          //分格线
+          splitLine: {
+            show: false,
+          },
+        });
+
+        this.lineData.data.forEach((value, index) => {
+          option.series.push({
+            name: this.lineData.legends[index],
+            type: "line",
+            smooth: true,
+            showSymbol: false,
+            zlevel: index,
+            lineStyle: {
+              show: false,
+            },
+            yAxisIndex: 0,
+            xAxisIndex: 1,
+            data: value,
+          });
+        });
+      }
+
+      chart.clear();
+      chart.setOption(option);
+
+      this.resize = function () {
+        chart.resize();
+      };
+
+      window.addEventListener("resize", this.resize);
+    },
+  },
+  created() {
+    this.id = "pie-chart-" + util.newGUID();
+  },
+  mounted() {
+    this.$nextTick(() => {
+      this.$el.style.width = this.width;
+      this.$el.style.height = this.height;
+      this.initChart();
+    });
+  },
+  updated() {
+    this.$nextTick(() => {
+      this.initChart();
+    });
+  },
+  unmounted() {
+    window.removeEventListener("resize", this.resize);
+  },
+};
+</script>
+
+<style lang="less">
+.chart {
+  width: 100%;
+  height: 100%;
+  display: inline-block;
+}
+</style>