Procházet zdrojové kódy

样本库增删改查功能开发完成

Koishi před 4 roky
rodič
revize
4c3a4fdbc3

+ 1 - 1
src/views/MalfunctionWarning/components/testReport.vue

@@ -319,7 +319,7 @@ export default {
               if (ele.id === that.faultid) {
                 that.history(ele.modelName);
                 that.reportData = ele;
-                that.modelName = ele.modelName.split("-")[2];
+                that.modelName = ele.modelName.split("-")[4];
                 let faultList = [],
                   faultResult = "";
                 ele.result.split(" ").forEach((ele) => {

+ 985 - 467
src/views/sampleDatabase/fault/index.vue

@@ -1,479 +1,997 @@
 <template>
-	<el-scrollbar height="92vh">
-		<div class="query mg-b-8">
-			<div class="query-items">
-				<div class="query-item" style="width: 220px;">
-					<div class="lable">场站:</div>
-					<div class="search-input">
-						<el-select v-model="station" placeholder="请选择" popper-class="select" @change="stationChange">
-							<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" style="width: 230px;">
-					<div class="lable">故障类型:</div>
-					<div class="search-input">
-						<el-select v-model="widget" multiple collapse-tags clearable placeholder="请选择" popper-class="select">
-							<el-option @click="checkAll" :class="active?'green':''">
-								全选
-							</el-option>
-							<el-option v-for="item in widgetArr" :key="item.value" :value="item.value" :label="item.label">
-							</el-option>
-						</el-select>
-					</div>
-				</div>
-				<div class="query-item" style="width: 230px;">
-					<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" style="width: 230px;">
-					<div class="lable">样本类型:</div>
-					<div class="search-input">
-						<el-select v-model="category" collapse-tags clearable placeholder="请选择" popper-class="select">
-							<el-option
-								v-for="item in categorys"
-								:key="item.value"
-								:value="item.value"
-								:label="item.label"
-							/>
-						</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="list">查询</button>
-					<button class="btn" @click="query()">导入</button>
-					<button class="btn" @click="exportData()">导出</button>
-				</div>
-			</div>
-		</div>
-		<el-row :type="'flex'" class="content">
-			<ComTable :data="tableData" :pageSize="pageSize" @onPagging="onChangePage" height="84vh"
-				v-loading="tableLoading" element-loading-text="拼命加载中"
-				element-loading-background="rgba(0, 0, 0, 0.8)" v-if="category=='0'"></ComTable>
-			<ComTable :data="tableData2" :pageSize="pageSize" @onPagging="onChangePage" height="84vh"
-				v-loading="tableLoading" element-loading-text="拼命加载中"
-				element-loading-background="rgba(0, 0, 0, 0.8)" v-else></ComTable>	
-		</el-row>
-		<el-dialog title="原始数据对比" v-model="gzCgd" width="80%" top="5vh" custom-class="modal" :close-on-click-modal="false" :before-close="onClickDialogClose" class="isvisiable">
-			<Point :data="gzCgdData" :st='st' v-if='gzCgd'/>
-		</el-dialog>
-	</el-scrollbar>
+  <el-scrollbar height="92vh">
+    <div class="query mg-b-8">
+      <div class="query-items">
+        <div class="query-item" style="width: 220px">
+          <div class="lable">场站:</div>
+          <div class="search-input">
+            <el-select
+              v-model="station"
+              placeholder="请选择"
+              popper-class="select"
+              @change="stationChange"
+            >
+              <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" style="width: 230px">
+          <div class="lable">故障类型:</div>
+          <div class="search-input">
+            <el-select
+              v-model="widget"
+              multiple
+              collapse-tags
+              clearable
+              placeholder="请选择"
+              popper-class="select"
+            >
+              <el-option @click="checkAll" :class="active ? 'green' : ''">
+                全选
+              </el-option>
+              <el-option
+                v-for="item in widgetArr"
+                :key="item.value"
+                :value="item.value"
+                :label="item.label"
+              >
+              </el-option>
+            </el-select>
+          </div>
+        </div>
+        <div class="query-item" style="width: 230px">
+          <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" style="width: 230px">
+          <div class="lable">样本类型:</div>
+          <div class="search-input">
+            <el-select
+              v-model="category"
+              collapse-tags
+              clearable
+              placeholder="请选择"
+              popper-class="select"
+            >
+              <el-option
+                v-for="item in categorys"
+                :key="item.value"
+                :value="item.value"
+                :label="item.label"
+              />
+            </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="list">查询</button>
+          <button class="btn" @click="add">新增</button>
+          <button class="btn" @click="query()">导入</button>
+          <button class="btn" @click="exportData()">导出</button>
+        </div>
+      </div>
+    </div>
+    <el-row :type="'flex'" class="content">
+      <ComTable
+        :data="tableData"
+        :pageSize="pageSize"
+        @onPagging="onChangePage"
+        height="84vh"
+        v-loading="tableLoading"
+        element-loading-text="拼命加载中"
+        element-loading-background="rgba(0, 0, 0, 0.8)"
+        v-if="category == '0'"
+      ></ComTable>
+      <ComTable
+        :data="tableData2"
+        :pageSize="pageSize"
+        @onPagging="onChangePage"
+        height="84vh"
+        v-loading="tableLoading"
+        element-loading-text="拼命加载中"
+        element-loading-background="rgba(0, 0, 0, 0.8)"
+        v-else
+      ></ComTable>
+    </el-row>
+    <el-dialog
+      title="原始数据对比"
+      v-model="gzCgd"
+      width="80%"
+      top="5vh"
+      custom-class="modal"
+      :close-on-click-modal="false"
+      :before-close="onClickDialogClose"
+      class="isvisiable"
+    >
+      <Point :data="gzCgdData" :st="st" v-if="gzCgd" />
+    </el-dialog>
+    <el-dialog
+      :title="'故障样本库' + addDialogTitle"
+      v-model="addDialogShow"
+      width="50%"
+      custom-class="modal currentAddDialog"
+      :close-on-click-modal="false"
+      class="isvisiable"
+      @closed="
+        (res) => {
+          addDialogTitle = '';
+          addDialogShow = false;
+          list()
+        }
+      "
+    >
+      <el-form
+        ref="addDialogRef"
+        :model="addDialogForm"
+        :rules="addDialogRules"
+        label-width="120px"
+      >
+        <div class="inlineItem">
+          <el-form-item label="场站:" prop="stationen">
+            <el-select
+              v-model="addDialogForm.stationen"
+              placeholder="请选择"
+              popper-class="select"
+              @change="addDialogStationChange"
+            >
+              <el-option
+                v-for="item in ChangZhan"
+                :key="item.id"
+                :value="item.id"
+                :label="item.name"
+              >
+              </el-option>
+            </el-select>
+          </el-form-item>
+          <el-form-item label="风机:" prop="windturbineid">
+            <el-select
+              v-model="addDialogForm.windturbineid"
+              placeholder="请选择"
+              popper-class="select"
+            >
+              <el-option
+                v-for="item in fengjiArray"
+                :key="item.id"
+                :value="item.id"
+                :label="item.name"
+              >
+              </el-option>
+            </el-select>
+          </el-form-item>
+        </div>
+        <div class="inlineItem">
+          <el-form-item label="故障类型:" prop="faulttype">
+            <el-select
+              v-model="addDialogForm.faulttype"
+              placeholder="请选择"
+              popper-class="select"
+              @change="addDialogFaulttypeChange"
+            >
+              <el-option
+                v-for="item in widgetArr"
+                :key="item.value"
+                :value="item.value"
+                :label="item.label"
+              >
+              </el-option>
+            </el-select>
+          </el-form-item>
+          <el-form-item label="风机型号:" prop="model">
+            <el-select
+              v-model="addDialogForm.model"
+              placeholder="请选择"
+              popper-class="select"
+            >
+              <el-option
+                v-for="item in addDialogFjxh"
+                :key="item.value"
+                :value="item.value"
+                :label="item.label"
+              >
+              </el-option>
+            </el-select>
+          </el-form-item>
+        </div>
+        <div class="inlineItem">
+          <el-form-item label="故障时间:" prop="time">
+            <el-date-picker
+              v-model="addDialogForm.time"
+              type="datetimerange"
+              range-separator="至"
+              start-placeholder="开始时间"
+              end-placeholder="结束时间"
+              value-format="YYYY-MM-DD hh:mm:ss"
+            >
+            </el-date-picker>
+          </el-form-item>
+        </div>
+        <div class="inlineItem">
+          <el-form-item label="风机厂商:" prop="manufacturer">
+            <el-select
+              style="width: 100%"
+              v-model="addDialogForm.manufacturer"
+              placeholder="请选择"
+              popper-class="select"
+            >
+              <el-option
+                v-for="item in manufacturerArray"
+                :key="item.value"
+                :value="item.value"
+                :label="item.label"
+              >
+              </el-option>
+            </el-select>
+          </el-form-item>
+        </div>
+        <div class="inlineItem" style="width: 100%">
+          <el-form-item style="width: 100%" label="故障现象:" prop="symptom">
+            <el-input
+              type="textarea"
+              v-model="addDialogForm.symptom"
+              placeholder="请输入"
+              clearable
+              resize="none"
+              :maxlength="200"
+              :autosize="{ minRows: 2, maxRows: 6 }"
+              :rows="2"
+              show-word-limit
+            />
+          </el-form-item>
+        </div>
+      </el-form>
+      <template #footer>
+        <span class="dialog-footer">
+          <el-button
+            class="btn red"
+            type="danger"
+            @click="cancelAdd('addDialogRef')"
+          >
+            取消
+          </el-button>
+          <el-button
+            class="btn green"
+            type="success"
+            style="margin-left: 12px"
+            @click="submitForm('addDialogRef')"
+          >
+            保存
+          </el-button>
+        </span>
+      </template>
+    </el-dialog>
+  </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 {
-				active: true,
-				selectAll: true,
-				pageIndex: 1,
-				pageSize: 20,
-				gzCgd: false, //传感点组件隐藏或显示
-				gzCgdData: [], //传感点参数
-				category: "0", //模型分类
-				categorys: [
-					{label: "检修样本", value: "0"},
-					{label: "DBSCAN样本", value: "1"},
-				],
-				st:'',
-				widgetArr: [],
-				ChangZhan: [],
-				fjxh: [],
-				fjxhArr: [],
-				widget: [],
-				model: [],
-				time: [],
-				station: '',
-				tableData: {
-					column: [{
-							name: "序号",
-							field: "index",
-							is_light: false,
-							width: '50px',
-						},
-						{
-							name: "风机编号",
-							field: "wtId",
-							is_light: false,
-							width: '150px',
-						},
-						{
-							name: "故障类型",
-							field: "tableTag",
-							is_light: false,
-							width: '150px',
-						},
-						{
-							name: "故障现象",
-							field: "symptom",
-							is_light: false,
-							width: '300px',
-						},
-						{
-							name: "时间",
-							field: "tableTime",
-							is_light: false,
-							width: '350px',
-						},
-						{
-							name: "风机型号",
-							field: "tableModel",
-							is_light: false,
-							width: '150px',
-						},
-						{
-							name: "厂商",
-							field: "tableManufacturer",
-							is_light: false,
-							width: '150px',
-						},
-						{
-							name: "操作",
-							field: "cz",
-							is_light: false,
-							width: '200px',
-							template: () => {
-								return (
-									// "<el-button type='text' style='cursor: pointer;' value='config'>传感点</el-button><el-button type='text' style='cursor: pointer;margin:0 10px;' value='config'>编辑</el-button><el-button type='text' style='cursor: pointer;' value='config'>删除</el-button>"
-									"<el-button type='text' style='cursor: pointer;' value='config'>传感点</el-button>"
-								);
-							},
-							click(e, row) {
-								that.onClickOption(e, row);
-							},
-						},
-					],
-					data: [],
-				},
-				tableData2: {
-					column: [{
-							name: "序号",
-							field: "index",
-							is_light: false,
-							width: '50px',
-						},
-						{
-							name: "风机编号",
-							field: "wtId",
-							is_light: false,
-							width: '200px',
-						},
-						{
-							name: "故障类型",
-							field: "faulttype",
-							is_light: false,
-							width: '200px',
-						},
-						{
-							name: "故障时间",
-							field: "faultTime",
-							is_light: false,
-							width: '200px',
-						},
-						{
-							name: "风机型号",
-							field: "modelId",
-							is_light: false,
-							width: '200px',
-						},
-						{
-							name: "操作",
-							field: "cz",
-							is_light: false,
-							width: '200px',
-							template: () => {
-								return (
-									"<el-button type='text' style='cursor: pointer;' value='config'>传感点</el-button>&nbsp"
-								);
-							},
-							click(e, row) {
-								that.onClickOption(e, row);
-							},
-						},
-					],
-					data: [],
-				},
-			};
-		},
-		methods: {
-			stationChange(){
-				let fjxh = [];
-				this.fjxhArr.forEach(ele => {
-					if (ele.id == this.station) {
-						ele.value.forEach(ele2 => {
-							fjxh.push({
-								label: ele2,
-								value: ele2
-							})
-						})
-						this.model = ele.value;
-					}
-				})
-				this.fjxh = fjxh;
-			},
-			checkAll() {
-				this.selectAll = !this.selectAll
-				if (this.selectAll) {
-					let widget = [];
-					this.widgetArr.forEach(ele=>{
-						widget.push(ele.value)
-					})
-					this.widget = widget;
-					this.active = true;
-				} else {
-					this.active = false;
-					this.widget = [];
-				}
-			},
-			onChangePage(params) {
-				this.pageIndex = params.pageIndex;
-				this.pageSize = params.pageSize;
-				this.list();
-			},
-			async startAjax() {
-				var that = this;
-				that.time = [new Date((new Date() - 3600 * 1000 * 24 * 360)).formatDate("yyyy-MM-dd hh:mm:ss"), new Date()
-					.formatDate("yyyy-MM-dd hh:mm:ss")
-				];
+import ComTable from "@/components/coms/table/table.vue";
+import Point from "./point.vue";
+import { ElMessageBox, ElMessage, Action } from "element-plus";
+import axios from "axios";
+export default {
+  components: {
+    ComTable,
+    Point,
+  },
+  data() {
+    const that = this;
+    return {
+      addDialogTitle: "",
+      addDialogShow: false,
+      addDialogForm: {
+        tag: 0,
+        category: 0,
+        stationcn: "",
+        stationen: "",
+        windturbineid: "",
+        faulttype: "",
+        faultcode: "",
+        time: [],
+        symptom: "",
+        manufacturer: "",
+      },
+      addDialogRules: {
+        stationen: [
+          {
+            required: true,
+            message: "场站不可为空",
+            trigger: "change",
+          },
+        ],
+        windturbineid: [
+          {
+            required: true,
+            message: "风机不可为空",
+            trigger: "change",
+          },
+        ],
+        faulttype: [
+          {
+            required: true,
+            message: "故障类型不可为空",
+            trigger: "change",
+          },
+        ],
+        model: [
+          {
+            required: true,
+            message: "风机型号不可为空",
+            trigger: "change",
+          },
+        ],
+        time: [
+          {
+            required: true,
+            message: "故障时间区间不可为空",
+            trigger: "blur",
+          },
+        ],
+        manufacturer: [
+          {
+            required: true,
+            message: "风机厂商不可为空",
+            trigger: "change",
+          },
+        ],
+        symptom: [
+          {
+            required: true,
+            message: "故障现象不可为空",
+            trigger: "change",
+          },
+        ],
+      },
+      fengjiArray: [],
+      addDialogFjxh: [],
+      manufacturerArray: [
+        { label: "联合动力", value: "联合动力" },
+        { label: "华创", value: "华创" },
+      ],
+      sourceTableData: [],
+      active: true,
+      selectAll: true,
+      pageIndex: 1,
+      pageSize: 20,
+      gzCgd: false, //传感点组件隐藏或显示
+      gzCgdData: [], //传感点参数
+      category: "0", //模型分类
+      categorys: [
+        { label: "检修样本", value: "0" },
+        { label: "DBSCAN样本", value: "1" },
+      ],
+      st: "",
+      widgetArr: [],
+      ChangZhan: [],
+      fjxh: [],
+      fjxhArr: [],
+      widget: [],
+      model: [],
+      time: [],
+      station: "",
+      tableData: {
+        column: [
+          {
+            name: "序号",
+            field: "index",
+            is_light: false,
+            width: "50px",
+          },
+          {
+            name: "风机编号",
+            field: "wtId",
+            is_light: false,
+            width: "150px",
+          },
+          {
+            name: "故障类型",
+            field: "tableTag",
+            is_light: false,
+            width: "150px",
+          },
+          {
+            name: "故障现象",
+            field: "symptom",
+            is_light: false,
+            width: "300px",
+          },
+          {
+            name: "时间",
+            field: "tableTime",
+            is_light: false,
+            width: "350px",
+          },
+          {
+            name: "风机型号",
+            field: "tableModel",
+            is_light: false,
+            width: "150px",
+          },
+          {
+            name: "厂商",
+            field: "tableManufacturer",
+            is_light: false,
+            width: "150px",
+          },
+          {
+            name: "操作",
+            field: "cz",
+            is_light: false,
+            width: "200px",
+            template: () => {
+              return "<el-button type='text' style='cursor: pointer;' value='config' data-callback='onClickOption'>传感点</el-button><el-button type='text' style='cursor: pointer;margin:0 10px;' value='config' data-callback='edit'>编辑</el-button><el-button type='text' style='cursor: pointer;' value='config' data-callback='delete'>删除</el-button>";
+              // "<el-button type='text' style='cursor: pointer;' value='config'>传感点</el-button>"
+            },
+            click(e, row) {
+              const fnName = e.target.getAttribute("data-callback");
+              fnName && that[fnName](e, row);
+            },
+          },
+        ],
+        data: [],
+      },
+      tableData2: {
+        column: [
+          {
+            name: "序号",
+            field: "index",
+            is_light: false,
+            width: "50px",
+          },
+          {
+            name: "风机编号",
+            field: "wtId",
+            is_light: false,
+            width: "200px",
+          },
+          {
+            name: "故障类型",
+            field: "faulttype",
+            is_light: false,
+            width: "200px",
+          },
+          {
+            name: "故障时间",
+            field: "faultTime",
+            is_light: false,
+            width: "200px",
+          },
+          {
+            name: "风机型号",
+            field: "modelId",
+            is_light: false,
+            width: "200px",
+          },
+          {
+            name: "操作",
+            field: "cz",
+            is_light: false,
+            width: "200px",
+            template: () => {
+              return "<el-button type='text' style='cursor: pointer;' value='config' data-callback='onClickOption'>传感点</el-button><el-button type='text' style='cursor: pointer;margin:0 10px;' value='config' data-callback='edit'>编辑</el-button><el-button type='text' style='cursor: pointer;' value='config' data-callback='delete'>删除</el-button>";
+              // "<el-button type='text' style='cursor: pointer;' value='config'>传感点</el-button>"
+            },
+            click(e, row) {
+              console.log(333, row);
+              const fnName = e.target.getAttribute("data-callback");
+              console.log(444, fnName);
+              fnName && that[fnName](e, row);
+            },
+          },
+        ],
+        data: [],
+      },
+    };
+  },
+  methods: {
+    stationChange() {
+      let fjxh = [];
+      this.fjxhArr.forEach((ele) => {
+        if (ele.id == this.station) {
+          ele.value.forEach((ele2) => {
+            fjxh.push({
+              label: ele2,
+              value: ele2,
+            });
+          });
+          this.model = ele.value;
+        }
+      });
+      this.fjxh = fjxh;
+    },
 
-				await that.API.requestData({
-					method: "GET",
-					baseURL: "http://192.168.1.18:9002/",
-					subUrl: "basic/widget/condition",
-					success(res) {
-						let widgetArr = [],
-							widget = [];
-						res.data.forEach((ele, index) => {
-							widgetArr.push({
-								label: ele.faulttype,
-								value: ele.faultcode
-							})
-							widget.push(ele.faultcode)
-						})
-						that.widget = widget;
-						that.widgetArr = widgetArr;
-					},
-				});
+    checkAll() {
+      this.selectAll = !this.selectAll;
+      if (this.selectAll) {
+        let widget = [];
+        this.widgetArr.forEach((ele) => {
+          widget.push(ele.value);
+        });
+        this.widget = widget;
+        this.active = true;
+      } else {
+        this.active = false;
+        this.widget = [];
+      }
+    },
 
-				await that.API.requestData({
-					method: "GET",
-					baseURL: "http://192.168.1.18:9002/",
-					subUrl: "basic/station/all",
-					success(res) {
-						that.ChangZhan = res.data;
-						that.station = res.data[1].name
-						let fjxhArr = [];
-						let model = [],
-							fjxh = [];
-						res.data.forEach(ele => {
-							fjxhArr.push({
-								id: ele.id,
-								value: ele.model.split("/")
-							})
-							if (ele.id == "NSS_FDC") {
-								model = ["UP82"];
-								fjxh.push({
-									label: "UP82",
-									value: "UP82"
-								})
-							}
-						})
-						that.fjxhArr = fjxhArr;
-						that.model = model;
-						that.fjxh = fjxh;
-					},
-				});
-				that.list()
-			},
-			onClickOption(e, row) { // 操作按钮
-				let that = this;
-				if ("config" == e.target.getAttribute("value")) { //传感点
-					that.API.requestData({
-						method: "GET",
-						baseURL: "http://192.168.1.18:9002/",
-						subUrl: "point/list",
-						data: {
-							wtId: row.wtId,
-							widget: row.widget
-						},
-						success(res) {
-							if (res.code == 200) {
-								if(res.data.length){
-									that.gzCgdData = res.data;
-									if(that.category == '0'){
-										that.st = Date.parse(new Date(row.tableTime.split(" - ")[0]));
-									}else{
-										that.st = Date.parse(new Date(row.faultTime));
-									}
-									that.gzCgd = true;
-								}else{
-									that.BASE.showMsg({
-										msg: "暂无数据"
-									});
-								}
-							}
-						},
-					});
-				}
-			},
-			onClickDialogClose() { // 弹窗右上角关闭按钮
-				this.gzCgd = false;
-			},
-			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.widgetArr.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.tableData.data = [];
-				that.tableData2.data = [];
-				that.API.requestData({
-					showLoading: true,
-					method: "GET",
-					baseURL: "http://192.168.1.18:9002/",
-					subUrl: "case/fault/list",
-					data: {
-						widget: widget ? widget : that.widget,
-						station: station ? station : that.station,
-						model: that.model,
-						category: that.category,
-						st: that.time[0].valueOf(),
-						et: that.time[1].valueOf()
-					},
-					success(res) {
-						if (res.code == 200 && res.data.length) {
-							let data = res.data;
-							if(that.category == '0'){
-								let k = 0;
-								for (var i = 0; i < data.length; i++) {
-									k ++;
-									let obj = {
-										index: k,
-										tableTag: data[i].faulttype,
-										symptom: data[i].symptom,
-										tableModel: data[i].model,
-										tableTime: data[i].starttime + ' - ' + data[i].endtime,
-										tableManufacturer: data[i].manufacturer,
-										wtId: data[i].windturbineid,
-										widget:data[i].faultcode
-									};
-									that.tableData.data.push(obj);
-								}
-							}else{
-								that.tableData2.data = [];
-								let k = 0;
-								for (var j = 0; j < data.length; j++) {
-									k ++;
-									let obj = {
-										index: k,
-										wtId: data[j].windturbineid,
-										faulttype: data[j].faulttype,
-										modelId: data[j].model,
-										faultTime: data[j].starttime,
-										widget:data[j].faultcode
-									};
-									that.tableData2.data.push(obj);
-								}
-							}
-						}
-					},
-				});
-			},
-			formatJson(filterVal, jsonData) {
-				return jsonData.map(v => filterVal.map(j => v[j]));
-			},
-			exportData() {
-				let that = this;
-				const {export_json_to_excel} = require('@tools/excel/Export2Excel.js'); // 注意这个Export2Excel路径      
-				let tHeader = []; // 上面设置Excel的表格第一行的标题       
-				let filterVal = []; // 上面的index、nickName、name是tableData里对象的属性key值
-			
-				that.tableData.column.forEach(ele => {
-					if(ele.field != 'cz'){
-						tHeader.push(ele.name);
-						filterVal.push(ele.field);
-					}
-				});
-				const data = that.formatJson(filterVal, that.tableData.data);
-				export_json_to_excel(tHeader, data, '故障样本库'); // 最后一个是表名字
-			},
-		},
-		created() {
-			this.startAjax();
-		},
-	};
+    onChangePage(params) {
+      this.pageIndex = params.pageIndex;
+      this.pageSize = params.pageSize;
+      this.list();
+    },
+
+    async startAjax() {
+      var that = this;
+      that.time = [
+        new Date(new Date() - 3600 * 1000 * 24 * 360).formatDate(
+          "yyyy-MM-dd hh:mm:ss"
+        ),
+        new Date().formatDate("yyyy-MM-dd hh:mm:ss"),
+      ];
+
+      await that.API.requestData({
+        method: "GET",
+        baseURL: "http://192.168.1.18:9002/",
+        subUrl: "basic/widget/condition",
+        success(res) {
+          let widgetArr = [],
+            widget = [];
+          res.data.forEach((ele, index) => {
+            widgetArr.push({
+              label: ele.faulttype,
+              value: ele.faultcode,
+            });
+            widget.push(ele.faultcode);
+          });
+          that.widget = widget;
+          that.widgetArr = widgetArr;
+        },
+      });
+
+      await that.API.requestData({
+        method: "GET",
+        baseURL: "http://192.168.1.18:9002/",
+        subUrl: "basic/station/all",
+        success(res) {
+          that.ChangZhan = res.data;
+          that.station = res.data[1].name;
+          let fjxhArr = [];
+          let model = [],
+            fjxh = [];
+          res.data.forEach((ele) => {
+            fjxhArr.push({
+              id: ele.id,
+              value: ele.model.split("/"),
+            });
+            if (ele.id == "NSS_FDC") {
+              model = ["UP82"];
+              fjxh.push({
+                label: "UP82",
+                value: "UP82",
+              });
+            }
+          });
+          that.fjxhArr = fjxhArr;
+          that.model = model;
+          that.fjxh = fjxh;
+        },
+      });
+      that.list();
+    },
+
+    onClickOption(e, row) {
+      // 操作按钮
+      let that = this;
+      if ("config" == e.target.getAttribute("value")) {
+        //传感点
+        that.API.requestData({
+          method: "GET",
+          baseURL: "http://192.168.1.18:9002/",
+          subUrl: "point/list",
+          data: {
+            wtId: row.wtId,
+            widget: row.widget,
+          },
+          success(res) {
+            if (res.code == 200) {
+              if (res.data.length) {
+                that.gzCgdData = res.data;
+                if (that.category == "0") {
+                  that.st = Date.parse(new Date(row.tableTime.split(" - ")[0]));
+                } else {
+                  that.st = Date.parse(new Date(row.faultTime));
+                }
+                that.gzCgd = true;
+              } else {
+                that.BASE.showMsg({
+                  msg: "暂无数据",
+                });
+              }
+            }
+          },
+        });
+      }
+    },
+
+    onClickDialogClose() {
+      // 弹窗右上角关闭按钮
+      this.gzCgd = false;
+    },
+
+    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.widgetArr.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.tableData.data = [];
+      that.tableData2.data = [];
+      that.API.requestData({
+        showLoading: true,
+        method: "GET",
+        baseURL: "http://192.168.1.18:9002/",
+        subUrl: "case/fault/list",
+        data: {
+          widget: widget ? widget : that.widget,
+          station: station ? station : that.station,
+          model: that.model,
+          category: that.category,
+          st: that.time[0].valueOf(),
+          et: that.time[1].valueOf(),
+        },
+        success(res) {
+          if (res.code === 200 && res.data.length) {
+            let data = res.data;
+            that.sourceTableData = res.data;
+            if (that.category == "0") {
+              let k = 0;
+              for (var i = 0; i < data.length; i++) {
+                k++;
+                let obj = {
+                  index: k,
+                  dataIndex: i,
+                  tableTag: data[i].faulttype,
+                  symptom: data[i].symptom,
+                  tableModel: data[i].model,
+                  tableTime: data[i].starttime + " - " + data[i].endtime,
+                  tableManufacturer: data[i].manufacturer,
+                  wtId: data[i].windturbineid,
+                  widget: data[i].faultcode,
+                  id: data[i].id,
+                };
+                that.tableData.data.push(obj);
+              }
+            } else {
+              that.tableData2.data = [];
+              let k = 0;
+              for (var j = 0; j < data.length; j++) {
+                k++;
+                let obj = {
+                  index: k,
+                  dataIndex: i,
+                  wtId: data[j].windturbineid,
+                  faulttype: data[j].faulttype,
+                  modelId: data[j].model,
+                  faultTime: data[j].starttime,
+                  widget: data[j].faultcode,
+                };
+                that.tableData2.data.push(obj);
+              }
+            }
+          }
+        },
+      });
+    },
+
+    formatJson(filterVal, jsonData) {
+      return jsonData.map((v) => filterVal.map((j) => v[j]));
+    },
+
+    exportData() {
+      let that = this;
+      const { export_json_to_excel } = require("@tools/excel/Export2Excel.js"); // 注意这个Export2Excel路径
+      let tHeader = []; // 上面设置Excel的表格第一行的标题
+      let filterVal = []; // 上面的index、nickName、name是tableData里对象的属性key值
+
+      that.tableData.column.forEach((ele) => {
+        if (ele.field != "cz") {
+          tHeader.push(ele.name);
+          filterVal.push(ele.field);
+        }
+      });
+      const data = that.formatJson(filterVal, that.tableData.data);
+      export_json_to_excel(tHeader, data, "故障样本库"); // 最后一个是表名字
+    },
+
+    delete(e, row) {
+      const that = this;
+      ElMessageBox.alert("确定删除该条数据?此操作不可逆", "", {
+        showCancelButton: true,
+        showConfirmButton: true,
+        confirmButtonText: "确定",
+        cancelButtonText: "我再想想",
+        callback(action) {
+          if (action === "confirm") {
+            that.API.requestData({
+              method: "GET",
+              baseURL: "http://192.168.1.18:9002/",
+              subUrl: "case/fault/delete",
+              data: {
+                id: row.id,
+              },
+              success() {
+                that.BASE.showMsg({
+                  type: "success",
+                  msg: "删除成功",
+                });
+                that.list();
+              },
+            });
+          }
+        },
+      });
+    },
+
+    add() {
+      this.addDialogTitle = "新增";
+      this.addDialogForm.stationen = this.ChangZhan[0]?.id;
+      this.addDialogStationChange(this.ChangZhan[0]?.id);
+      this.addDialogShow = true;
+    },
+
+    addDialogStationChange(res, fjId) {
+      let fjxh = [];
+      this.fjxhArr.forEach((ele) => {
+        if (ele.id === res) {
+          ele.value.forEach((ele2) => {
+            fjxh.push({
+              label: ele2,
+              value: ele2,
+            });
+          });
+        }
+      });
+      this.addDialogFjxh = fjxh;
+      this.addDialogForm.model = fjxh[0].value;
+      this.addDialogForm.stationcn = this.ChangZhan.find((ele) => {
+        return ele.id === res;
+      })?.name;
+      this.getFengji(fjId);
+    },
+
+    getFengji(fjId) {
+      const that = this;
+      that.API.requestData({
+        method: "GET",
+        baseURL: "http://10.155.32.4:9001/",
+        subUrl: "benchmarking/wtList",
+        data: {
+          wpid: that.addDialogForm.stationen,
+        },
+        success(res) {
+          that.fengjiArray = res.data;
+          that.addDialogForm.windturbineid = fjId || res.data[0].id;
+        },
+      });
+    },
+
+    addDialogFaulttypeChange(res) {
+      this.addDialogForm.faultcode = this.widgetArr.find((ele) => {
+        return ele.value === res;
+      })?.value;
+    },
+
+    cancelAdd(ref) {
+      const that = this;
+      ElMessageBox.alert(
+        `确定取消${that.addDialogTitle}吗?之前所做的操作将不被保存`,
+        "",
+        {
+          showCancelButton: true,
+          showConfirmButton: true,
+          confirmButtonText: "确定",
+          cancelButtonText: "取消",
+          callback(action) {
+            if (action === "confirm") {
+              that.resetForm(ref);
+              that.addDialogShow = false;
+            }
+          },
+        }
+      );
+    },
+
+    resetForm(ref) {
+      this.addDialogForm = {
+        tag: 0,
+        category: 0,
+        stationcn: "",
+        stationen: "",
+        windturbineid: "",
+        faulttype: "",
+        faultcode: "",
+        time: [],
+        symptom: "",
+        manufacturer: "",
+      };
+      this.$refs[ref].resetFields();
+    },
+
+    submitForm(ref) {
+      const that = this;
+      that.$refs[ref].validate((valid, fields) => {
+        if (valid) {
+          let data = that.BASE.deepCopy(that.addDialogForm);
+          data.starttime = data.time[0];
+          data.endtime = data.time[1];
+          data.faulttype = that.widgetArr.find((ele) => {
+            return ele.value === data.faulttype;
+          })?.label;
+          data.time && delete data.time;
+          axios({
+            method: "post",
+            url: `http://192.168.1.18:9002/case/fault/${
+              that.addDialogTitle === "新增" ? "insert" : "edit"
+            }`,
+            data: that.addDialogTitle === "新增" ? [data] : data,
+            header: {
+              "Content-Type": "application/json",
+            },
+          }).then((res) => {
+            if (res.data.code === 200) {
+              that.BASE.showMsg({
+                type: "success",
+                msg: `${that.addDialogTitle}成功`,
+              });
+              that.addDialogShow = false;
+              that.resetForm();
+            }
+          });
+        }
+      });
+    },
+    edit(e, row) {
+      const that = this;
+      const editItem = that.sourceTableData[row.dataIndex];
+      for (let key in that.addDialogForm) {
+        if (key === "time") {
+          that.addDialogForm[key] = [editItem.starttime, editItem.endtime];
+        } else if (key === "faulttype") {
+          that.addDialogForm[key] = editItem.faultcode;
+        } else {
+          that.addDialogForm[key] = editItem[key];
+        }
+      }
+      that.addDialogForm.id = editItem.id;
+      that.addDialogStationChange(editItem.stationen, editItem.windturbineid);
+      that.addDialogTitle = "编辑";
+      that.addDialogShow = true;
+    },
+  },
+  created() {
+    this.startAjax();
+  },
+};
 </script>
 
 <style lang="less" scoped>
-	.mb10 {
-		margin-bottom: 10px;
-	}
+.mb10 {
+  margin-bottom: 10px;
+}
+
+.el-select.w {
+  width: 100%;
+}
+
+// .el-range-editor.w{width: 100%;}
+</style>
 
-	.el-select.w {
-		width: 100%;
-	}
+<style lang="less">
+.currentAddDialog {
+  .el-form {
+    display: flex;
+    justify-content: start;
+    align-items: center;
+    flex-wrap: wrap;
+    .inlineItem {
+      width: 50%;
+      display: flex;
+      justify-content: start;
+      align-items: center;
+      .el-form-item {
+        width: 100%;
+        margin-bottom: 40px;
 
-	// .el-range-editor.w{width: 100%;}
+        .el-input__count {
+          background: rgba(83, 98, 104, 0.2);
+          color: #b3bdc0;
+        }
+      }
+    }
+  }
+}
 </style>