likang před 3 roky
rodič
revize
e7cb548a30

+ 3 - 0
src/config/componentsMap.js

@@ -82,6 +82,9 @@ export default {
         import ('@/views/device/synscheme'),
     device_mold: () =>
         import ('@/views/device/mold'),
+    //维保记录参数 映射表
+    maintenancemapper: () =>
+        import ('@/views/wind/maintenance'),
     // stolenVehicles: () => import('@/views/yunying/vehicle/stolen'),
     // 短信平台
     sms: () =>

+ 433 - 0
src/views/wind/maintenancemapper/detail.vue

@@ -0,0 +1,433 @@
+<template>
+  <el-drawer
+    title="设备信息"
+    :visible.sync="drawerVisible"
+    :direction="direction"
+    size="60%"
+  >
+    <el-tabs v-model="activeName" type="card" @tab-click="handleClick">
+      <el-tab-pane label="液压泵信息" name="first">
+        <el-divider content-position="left">基础信息</el-divider>
+        <el-row>
+          <div style="margin-bottom: 30px; margin-left: 50px">
+            <el-col
+              :span="6"
+              style="margin-top: 10px; font-size: 14px; color: #a0a0a0"
+            >
+              <div class="detail-item">
+                <span>法兰编号:</span>
+                <span class="item">{{ data.number }}</span>
+              </div>
+              <div class="detail-item">
+                <pre style="display: inline">型    号:</pre>
+                <span class="item">{{ data.model }}</span>
+              </div>
+              <div class="detail-item">
+                <span>所属部门:</span>
+                <span class="item">{{ data.depart_name }}</span>
+              </div>
+            </el-col>
+            <el-col
+              :span="6"
+              style="margin-top: 10px; font-size: 14px; color: #a0a0a0"
+            >
+              <div class="detail-item">
+                <pre style="display: inline">名    称:</pre>
+                <span class="item">{{ data.name }}</span>
+              </div>
+              <div class="detail-item">
+                <span>使用状态:</span>
+                <span class="item">在用</span>
+              </div>
+              <div class="detail-item">
+                <pre style="display: inline">品    牌:</pre>
+                <span class="item">{{ data.brand }}</span>
+              </div>
+            </el-col>
+            <el-col
+              :span="6"
+              style="margin-top: 10px; font-size: 14px; color: #a0a0a0"
+            >
+              <div class="detail-item">
+                <pre style="display: inline">供 应 商:</pre>
+                <span class="item">{{ data.supplier }}</span>
+              </div>
+              <div class="detail-item">
+                <span>出厂日期:</span>
+                <span class="item">{{ data.out_date }}</span>
+              </div>
+              <div class="detail-item">
+                <pre style="display: inline">备    注:</pre>
+                <span class="item">{{ data.remark }}</span>
+              </div>
+            </el-col>
+            <el-col :span="6"></el-col>
+          </div>
+        </el-row>
+        <el-divider content-position="left">规格信息</el-divider>
+        <el-row>
+          <div style="margin-bottom: 30px; margin-left: 50px">
+            <el-col
+              :span="24"
+              style="margin-top: 10px; font-size: 14px; color: #a0a0a0"
+            >
+              <div class="detail-item">
+                <pre style="display: inline">压力范围(PSI):</pre>
+                <span class="item">{{ data.pressure_range }}</span>
+              </div>
+            </el-col>
+          </div>
+        </el-row>
+      </el-tab-pane>
+      <el-tab-pane label="使用扳手" name="second">
+        <el-table
+          :data="AssemblyData"
+          style="width: 100%; margin-left: 20px"
+          :row-class-name="tableRowClassName"
+        >
+          <el-table-column prop="number" label="编号"> </el-table-column>
+          <el-table-column prop="name" label="名称"> </el-table-column>
+          <el-table-column prop="model" label="型号"> </el-table-column>
+        </el-table>
+      </el-tab-pane>
+      <el-tab-pane label="螺栓紧固方案" name="third">
+        <el-divider content-position="left"><span style="color:#1850ef">单同步</span></el-divider>
+        <el-table
+          :data="oneData"
+          style="width: 100%;margin-left: 20px"
+        >
+          <el-table-column prop="step" label="步骤">
+          </el-table-column>
+          <el-table-column prop="number" label="螺栓编号">
+          </el-table-column>
+          <el-table-column prop="preload" label="标准预紧力(N*m)"> </el-table-column>
+        </el-table>
+        <el-divider content-position="left"><span style="color:#1850ef">两同步</span></el-divider>
+        <el-table
+          :data="twoData"
+          style="width: 100%;margin-left: 20px"
+        >
+          <el-table-column prop="step" label="步骤">
+          </el-table-column>
+          <el-table-column prop="number" label="螺栓编号">
+          </el-table-column>
+          <el-table-column prop="preload" label="标准预紧力(N*m)"> </el-table-column>
+        </el-table>
+        <el-divider content-position="left"><span style="color:#1850ef">四同步</span></el-divider>
+        <el-table
+          :data="fourData"
+          style="width: 100%;margin-left: 20px"
+        >
+          <el-table-column prop="step" label="步骤">
+          </el-table-column>
+          <el-table-column prop="number" label="螺栓编号">
+          </el-table-column>
+          <el-table-column prop="preload" label="标准预紧力(N*m)"> </el-table-column>
+        </el-table>
+        <el-divider content-position="left"><span style="color:#1850ef">六同步</span></el-divider>
+        <el-table
+          :data="sixData"
+          style="width: 100%;margin-left: 20px"
+        >
+          <el-table-column prop="step" label="步骤">
+          </el-table-column>
+          <el-table-column prop="number" label="螺栓编号">
+          </el-table-column>
+          <el-table-column prop="preload" label="标准预紧力(N*m)"> </el-table-column>
+        </el-table>
+      </el-tab-pane>
+      <el-tab-pane label="实时维保信息" name="fourth">
+           <el-table
+          :data="nowData"
+          style="width: 100%;margin-left: 20px"
+        >
+          <el-table-column prop="number" label="螺栓编号">
+          </el-table-column>
+          <el-table-column prop="real_preload" label="实际预紧力(N*m)">
+          </el-table-column>
+          <el-table-column prop="stand_preload" label="标准预紧力(N*m)">
+          </el-table-column>
+          <el-table-column prop="end_time" label="预紧结束时间">
+          </el-table-column>
+          <el-table-column prop="beng_no" label="液压泵编号">
+          </el-table-column>
+          <el-table-column prop="banshou_no" label="液压扳手编号">
+          </el-table-column>
+          <el-table-column prop="ways" label="紧固方式">
+          </el-table-column>
+          <el-table-column prop="operator" label="操作员"> </el-table-column>
+        </el-table>
+      </el-tab-pane>
+      <el-tab-pane label="历史维保记录" name="five">
+           <el-table
+          :data="historyData"
+          style="width: 100%;margin-left: 20px"
+        >
+         <el-table-column prop="number" label="螺栓编号">
+          </el-table-column>
+          <el-table-column prop="real_preload" label="实际预紧力(N*m)">
+          </el-table-column>
+          <el-table-column prop="stand_preload" label="标准预紧力(N*m)">
+          </el-table-column>
+          <el-table-column prop="end_time" label="预紧结束时间">
+          </el-table-column>
+          <el-table-column prop="beng_no" label="液压泵编号">
+          </el-table-column>
+          <el-table-column prop="banshou_no" label="液压扳手编号">
+          </el-table-column>
+          <el-table-column prop="ways" label="紧固方式">
+          </el-table-column>
+          <el-table-column prop="operator" label="操作员"> </el-table-column>
+        </el-table>
+      </el-tab-pane>
+    </el-tabs>
+  </el-drawer>
+</template>
+<script>
+export default {
+  props: ["detailVisible", "data"],
+  data() {
+    return {
+      drawer: false,
+      direction: "rtl",
+      activeName: "first",
+      AssemblyData: [
+        {
+          model: "v23300",
+          name: "测试工具1",
+          number: "2022030301",
+        },
+        {
+          model: "v23301",
+          name: "测试工具2",
+          number: "2022030302",
+        },
+        {
+          model: "v23302",
+          name: "测试工具3",
+          number: "2022030303",
+        },
+        {
+          model: "v23303",
+          name: "测试工具4",
+          number: "2022030304",
+        },
+      ],
+       oneData: [
+        {
+          step: 1,
+          preload: "2120",
+          number: "01",
+        },
+        {
+          step: 2,
+          preload: "2126",
+          number: "02",
+        }
+      ],
+      twoData: [
+        {
+          step: 1,
+          preload: "2128",
+          number: "03",
+        },
+        {
+          step: 2,
+          preload: "2100",
+          number: "04",
+        }
+      ],
+       fourData: [
+        {
+          step: 1,
+          preload: "2128",
+          number: "05",
+        },
+        {
+          step: 2,
+          preload: "2100",
+          number: "06",
+        }
+      ],
+       sixData: [
+        {
+          step: 1,
+          preload: "2128",
+          number: "07",
+        },
+        {
+          step: 2,
+          preload: "2100",
+          number: "08",
+        }
+      ],
+       nowData: [
+        {
+          number: '09',
+          real_preload: "2128",
+          stand_preload: "3000",
+          end_time:'2022-03-02 15:31:54',
+          beng_no:'200001',
+          banshou_no:'300001',
+          ways:'单同步',
+          operator:'张速'
+        },
+        {
+          number: 10,
+          real_preload: "2129",
+          stand_preload: "3001",
+          end_time:'2022-03-02 16:31:44',
+          beng_no:'200002',
+          banshou_no:'300002',
+          ways:'两同步',
+          operator:'张速'
+        },
+         {
+          number: 11,
+          real_preload: "2139",
+          stand_preload: "3002",
+          end_time:'2022-03-02 16:31:44',
+          beng_no:'200002',
+          banshou_no:'300002',
+          ways:'四同步',
+          operator:'张速'
+        },
+         {
+          number: 12,
+          real_preload: "2129",
+          stand_preload: "3003",
+          end_time:'2022-03-02 16:31:44',
+          beng_no:'200002',
+          banshou_no:'300002',
+          ways:'六同步',
+          operator:'张速'
+        }
+      ],
+       historyData: [
+        {
+          number: 13,
+          real_preload: "2128",
+          stand_preload: "3005",
+          end_time:'2022-03-02 15:31:54',
+          beng_no:'200001',
+          banshou_no:'300001',
+          ways:'单同步',
+          operator:'张速'
+        },
+        {
+          number: 14,
+          real_preload: "2129",
+          stand_preload: "3006",
+          end_time:'2022-03-02 16:31:44',
+          beng_no:'200002',
+          banshou_no:'300002',
+          ways:'两同步',
+          operator:'张速'
+        },
+         {
+          number: 15,
+          real_preload: "2139",
+          stand_preload: "3007",
+          end_time:'2022-03-02 16:31:44',
+          beng_no:'200002',
+          banshou_no:'300002',
+          ways:'四同步',
+          operator:'张速'
+        },
+         {
+          number: 16,
+          real_preload: "2129",
+          stand_preload: "3008",
+          end_time:'2022-03-02 16:31:44',
+          beng_no:'200002',
+          banshou_no:'300002',
+          ways:'六同步',
+          operator:'张速'
+        },
+         {
+          number: 17,
+          real_preload: "2128",
+          stand_preload: "3009",
+          end_time:'2022-03-02 15:31:54',
+          beng_no:'200001',
+          banshou_no:'300001',
+          ways:'单同步',
+          operator:'张速'
+        },
+        {
+          number: 18,
+          real_preload: "2129",
+          stand_preload: "3010",
+          end_time:'2022-03-02 16:31:44',
+          beng_no:'200002',
+          banshou_no:'300002',
+          ways:'两同步',
+          operator:'张速'
+        },
+         {
+          number: 19,
+          real_preload: "2139",
+          stand_preload: "3012",
+          end_time:'2022-03-02 16:31:44',
+          beng_no:'200002',
+          banshou_no:'300002',
+          ways:'四同步',
+          operator:'张速'
+        },
+         {
+          number: 20,
+          real_preload: "2129",
+          stand_preload: "3013",
+          end_time:'2022-03-02 16:31:44',
+          beng_no:'200002',
+          banshou_no:'300002',
+          ways:'六同步',
+          operator:'张速'
+        }
+      ],
+    };
+  },
+  methods: {
+    handleClick(tab, event) {
+      console.log(tab, event);
+    },
+    tableRowClassName({ row, rowIndex }) {
+      if (rowIndex === 1) {
+        return "warning-row";
+      } else if (rowIndex === 3) {
+        return "success-row";
+      }
+      return "";
+    },
+  },
+  computed: {
+    drawerVisible: {
+      set(val) {
+        this.$emit("sendVal", val); // 表示将子组件改变的值传递给父组件
+      },
+      get() {
+        return this.detailVisible; // 表示获取父组件的值
+      },
+    },
+  },
+};
+</script>
+<style scoped>
+.detail-item {
+  width: 100%;
+  padding: 15px 0px;
+  list-style-type: none;
+}
+.item {
+  font-size: 14px;
+  color: black;
+  margin-top: 5px;
+}
+.el-table .warning-row {
+  background: oldlace !important;
+}
+
+.el-table .success-row {
+  background: #f0f9eb !important;
+}
+</style>

+ 137 - 0
src/views/wind/maintenancemapper/formModel.vue

@@ -0,0 +1,137 @@
+<template>
+  <ele-form-dialog
+    v-bind="formConfig"
+    v-model="formFieldsData"
+    v-dialogDrag
+    :title="title"
+    :request-fn="handleFormSubmit"
+    :visible.sync="DialogVisible"
+    width="550px"
+    custom-class="abow_dialog"
+    label-width="100px"
+    label-position="left"
+    :dialogAttrs="{ 'close-on-click-modal': false,'top':'8vh'}"
+  >
+    <template v-slot:number_rules="{ }" >
+       <el-input class="form-item1" v-model="rule_data.number_first" placeholder="机位号前缀"></el-input>
+       <el-input class="form-item1" v-model="rule_data.start_number" placeholder="起始编号"></el-input>
+       <el-input class="form-item1" v-model="rule_data.number_last" placeholder="机位号后缀"></el-input>
+       <el-input class="form-item1" v-model="rule_data.number_length" placeholder="生成数量"></el-input>
+       
+       <!-- <el-switch
+          v-model="zero_fill"
+          active-text="补零"
+          inactive-text="不补零">
+        </el-switch> -->
+        <el-checkbox class="form-item1" label="中间是否补零"  v-model="rule_data.zero_fill"></el-checkbox>
+        <el-input class="form-item1" v-if="rule_data.zero_fill" v-model="rule_data.zero_length" placeholder="补零长度"></el-input>
+    </template>
+  </ele-form-dialog>
+</template>
+
+<script>
+export default {
+  props: ["formModelVisible", "title"],
+  data() {
+    return {
+      url: "fan",
+      formData: {},
+      rule_data:{
+        start_number:'',
+        number_first:'',
+        number_length:'',
+        number_last:'',
+        zero_fill:'',
+        zero_length:'',
+      },
+      deviceTypes:[],
+      formFieldsData: {
+        wind_id: "",
+        number_rules: "",
+        fan_model:"",
+        info: "",
+        mul_number:'',
+      },
+      formConfig: {
+        formDesc: {
+          wind_id: {
+            type: "select",
+            label: "所属风场",
+            isOptions: true,
+            options: [],
+            required: true,
+            prop: {
+              text: 'name',
+              value: 'id'
+            }
+          },
+          fan_model: {
+            type: "select",
+            label: "型号",
+            required:true,
+            options: [],
+          },
+          number_rules: {
+   
+            label: "机位号规则",
+          },
+          mul_number: {
+            type: "textarea",
+            label: "机位号",
+            attrs: {
+              placeholder: '请输入机位号,多个机位号用英文逗号(,)相隔'
+            }
+          },
+           info: {
+            type: "textarea",
+            label: "备注",
+          },
+         
+        },
+        order: ["wind_id","fan_model", "number_rules","mul_number","info"]
+      }
+    };
+  },
+  created() {
+    this.$http.get("wind").then(response => {
+      this.formConfig.formDesc.wind_id.options = response.data;
+    });
+     // 4-风机
+    this.$http.get("get_device_mold",{ params: {type:4} }).then(resp => {
+        this.formConfig.formDesc.fan_model.options = resp.data
+     });
+  },
+  methods: {
+    handleFormSubmit(data) {
+      // console.log(this.rule_data)
+      // console.log(this.formFieldsData)
+      this.formFieldsData.rule_data=this.rule_data
+      this.$parent.handleAddSubmit();
+    },
+    handleRequest(data) {
+      return Promise.resolve();
+    },
+    handleRequestSuccess() {
+      this.$message.success("发送成功");
+    }
+  },
+  computed: {
+    DialogVisible: {
+      set(val) {
+        this.$emit("sendVal", val); // 表示将子组件改变的值传递给父组件
+      },
+      get() {
+        console.log(this.formFieldsData)
+        return this.formModelVisible; // 表示获取父组件的值
+      }
+    }
+  }
+};
+</script>
+<style lang="scss" scoped>
+.form-item1{
+  width:110px;
+  margin-right: 5px;
+  margin-bottom: 5px;
+}
+</style>

+ 112 - 0
src/views/wind/maintenancemapper/index.scss

@@ -0,0 +1,112 @@
+.col-setting-popover {
+    min-width: 100px;
+    padding: 9px 16px;
+    .col-setting-title {
+      color: #7f8b93;
+      font-size: 12px;
+    }
+    .col-setting-group {
+      .el-checkbox {
+        display: block;
+        margin-top: 5px;
+      }
+    }
+  }
+  .icyuandianda {
+    font-size: 12px;
+  }
+  .search-box-area {
+    width: 70%;
+    height: 44px;
+    float: left;
+  }
+  .search-operate-area {
+    width: 20%;
+    height: 44px;
+    float: left;
+  }
+  .search-item {
+    width: 25%;
+    height: 44px;
+    float: left;
+  }
+  #searchBox {
+    overflow: hidden;
+  }
+  .upload-dialog .el-dialog__body {
+    padding: 0px, 20px !important;
+  }
+  .columnOption {
+    position: fixed;
+    z-index: 20;
+    top: 0;
+    left: 0;
+    width: 100%;
+    height: 100%;
+    background-color: rgba(0, 0, 0, 0.3);
+    display: flex;
+    flex-direction: row-reverse;
+    .content {
+      width: 140px;
+      height: 100%;
+      background-color: rgb(255, 255, 255);
+      .head {
+        width: 100%;
+        height: 44px;
+        border-bottom: 1px solid #000;
+        display: flex;
+        justify-content: center;
+        align-items: center;
+        font-size: 12px;
+      }
+      .body {
+        width: 100%;
+        height: calc(100% - 88px);
+        box-sizing: border-box;
+        padding-top: 10px;
+        padding-left: 10px;
+        overflow-y: auto;
+        .items {
+          width: 100%;
+          height: 100%;
+          overflow-y: auto;
+          display: flex;
+          flex-direction: column;
+          .el-checkbox {
+            width: 100%;
+            height: 28px;
+            line-height: 28px;
+            margin-bottom: 14px;
+            display: inline-block;
+            font-family: PingFang SC;
+            font-style: normal;
+            font-weight: normal;
+            font-size: 14px;
+            color: #000;
+            overflow: hidden;
+            text-overflow: ellipsis;
+            white-space: nowrap;
+            box-sizing: border-box;
+            padding-left: 14px;
+          }
+          .el-checkbox:hover {
+            background-color: #f5f7fa;
+          }
+        }
+      }
+      .footer {
+        width: 100%;
+        height: 44px;
+        border-top: 1px solid #000;
+        display: flex;
+        justify-content: center;
+        align-items: center;
+      }
+    }
+  }
+  .el-tag {
+    border: 0px;
+  }
+  .form-search-input{
+    margin-bottom:10px;
+  }

+ 334 - 0
src/views/wind/maintenancemapper/index.vue

@@ -0,0 +1,334 @@
+<template>
+  <div class="app-container">
+    <div class="filter-container" style="padding-bottom: 0px">
+  
+      
+   
+          <el-input
+            v-model="queryParam.number"
+            placeholder="编号"
+            clearable
+            class="filter-item form-search-input fl"
+            @keyup.enter.native="handleSearch"
+          />
+       
+         <el-button
+          class="filter-item search fl"
+          icon="el-icon-search"
+          @click="handleSearch"
+          >搜索</el-button
+        >
+        <el-button
+          class="filter-item fl"
+          icon="el-icon-refresh"
+          @click="handleRefresh"
+          >重置</el-button
+        >
+        
+     
+
+     
+        <el-button
+          class="filter-item search fl"
+          icon="el-icon-refresh-right"
+          @click="refresh"
+          >刷新</el-button
+        >
+     
+    </div>
+    <el-table
+      :data="data"
+      v-loading="loading"
+      ref="multipleTable"
+      @selection-change="hydraulicSelectMulti"
+      @sort-change="sortChange"
+      :dynamicColumnSetting="true"
+      tooltip-effect="dark"
+      style="width: 100%"
+      border
+      fit
+    >
+      <el-table-column
+        type="selection"
+        fixed="left"
+        width="55"
+      ></el-table-column>
+      <el-table-column
+        prop="wind_name"
+        label="风场名称"
+        align="center"
+     
+        :show-overflow-tooltip="true"
+       
+      />
+      
+      <el-table-column
+        prop="number"
+        label="机位号"
+        align="center"
+        :show-overflow-tooltip="true"
+      />
+       <el-table-column
+        prop="model_name"
+        label="风机型号"
+        align="center"
+        :show-overflow-tooltip="true"
+     
+      />
+       <el-table-column
+        prop="info"
+        label="备注"
+        align="center"
+        :show-overflow-tooltip="true"
+     
+      />  
+      <el-table-column
+        prop="created_at"
+        label="添加时间"
+        align="center"
+
+        :show-overflow-tooltip="true"
+     
+      />
+   
+      
+      <el-table-column
+        label="操作"
+        min-width="120"
+        align="center"
+        fixed="right"
+         width="150"
+      >
+        <template slot-scope="record">
+          <el-tooltip
+            content="修改"
+            placement="top"
+            :enterable="false"
+          >
+            <el-button
+              type="primary"
+              size="mini"
+              icon="el-icon-edit"
+              @click="handleUpdate(record.row)"
+            ></el-button>
+          </el-tooltip>
+        </template>
+      </el-table-column>
+    </el-table>
+    <!-- <transition name="fade">
+      <div class="columnOption" v-show="isShowColumn">
+        <div class="content">
+          <div class="head">选择显示字段</div>
+          <div class="body">
+            <el-checkbox v-model="checkList.wind_name">所属部门风场</el-checkbox>
+            <el-checkbox v-model="checkList.number" disabled>编号</el-checkbox>
+            <el-checkbox v-model="checkList.name" disabled>名称</el-checkbox>
+            <el-checkbox v-model="checkList.supplier">供应商</el-checkbox>
+            <el-checkbox v-model="checkList.production_date">出厂日期</el-checkbox>
+            <el-checkbox v-model="checkList.install_date">安装日期</el-checkbox>
+            <el-checkbox v-model="checkList.location">位置</el-checkbox>
+          </div>
+          <div class="footer">
+            <el-button size="small" type="primary" plain @click="saveColumn"
+              >保存列配置</el-button
+            >
+          </div>
+        </div>
+      </div>
+    </transition> -->
+    <el-button
+      type="primary"
+      icon="el-icon-plus"
+      :loading="downloadLoading"
+      style="margin-top: 15px"
+      @click="handleAddFan()"
+      >添加</el-button
+    >
+    <el-button
+      type="danger"
+      icon="el-icon-delete"
+      v-if="selectedIds.length > 0"
+      style="margin-top: 15px"
+      @click="handleMultiDelete()"
+      >删除</el-button
+    >
+    <el-pagination
+      background
+      class="pagination-container"
+      @size-change="handleSizeChange"
+      @current-change="handleCurrentChange"
+      :current-page="paginate.current"
+      :page-sizes="paginate.sizes"
+      :page-size="paginate.limit"
+      :layout="paginate.layout"
+      :total="paginate.total"
+    />
+    <form-model
+      @sendVal="closeAddDialog"
+      :formModelVisible="addFormVisible"
+      :title="title"
+      :ref="AddFormName"
+    />
+    <update-model
+      @sendVal="closeDialog"
+      :formModelVisible="formVisible"
+      :title="title"
+      :ref="formName"
+    />
+    <detail
+      :detailVisible="detailVisible"
+       @sendVal="closeDrawer"
+       :data="detail"
+    />
+  </div>
+</template>
+
+<script>
+import rlListOperate from "@/layout/rl-list-operate/rlListOperate";
+import { action } from "@/directive/permission/index.js";
+import detail from "./detail.vue";
+import formModel from './formModel.vue';
+import updateModel from './updateModel.vue';
+export default {
+  name: "fan",
+  directives: { action },
+  mixins: [rlListOperate],
+  components: {
+    formModel,
+    updateModel,
+    detail,
+  },
+  data() {
+    return {
+      url: "fan",
+      options: [],
+      queryParam: {
+        number: "",
+        wind_id: '',
+      },
+      current_type: {
+        0: "success",
+        1: "danger",
+      },
+      AddFormName:'addFan',
+      formName:'fan',
+      addFormVisible:false,
+      formVisible:false, 
+      //搜索
+      searchDisplay: true,
+      departments: [],
+
+      //详情
+      detailVisible:false,
+      detail:{},
+
+      isShowColumn: false,
+      // 列的配置化对象,存储配置信息
+      checkList: {},
+      showColumn: {
+        wind_name: true,
+        production_date: true,
+        name:true,
+        location:true,
+        number: true,
+        production_date: true,
+        install_date: true,
+      }
+    };
+  },
+  // created() {
+  //   // this.$http.get("wind").then((response) => {
+  //   //   this.departments = response.data;
+  //   // });
+  // },
+  methods: {
+    handleAddFan(){
+      this.title = '新增'
+      this.isReadonly=false
+      this.id = null
+      this.resetFormFields();
+      this.addFormVisible = true
+    },
+    closeAddDialog(){
+      this.addFormVisible = false
+    },
+    handleAddSubmit() {
+      this.$http.post(this.$refs[this.AddFormName].url, this.$refs[this.AddFormName].formFieldsData).then(response => {
+          this.addFormVisible = false
+          this.handleRefresh()
+      })
+      
+    },
+    handleChange(val) {
+      //  console.log(val)
+      this.queryParam.department_id = val;
+      this.handleSearch();
+    },
+    hydraulicSelectMulti(data) {
+      this.selectedIds = [];
+      data.forEach((item) => {
+        this.selectedIds.push(item.id);
+      });
+    },
+    refresh() {
+      this.queryParam.page = this.paginate.current;
+      this.getList();
+    },
+    remoteMethod(query) {
+        if (query !== '') {
+          this.loading = true;
+          let url = 'wind?name='+query;
+          this.$http.get(url).then((response) => {
+          this.loading = false;
+            this.options = response.data;
+          });
+  
+        } else {
+          this.options = [];
+        }
+      },
+
+   
+    closeDrawer(){
+      this.detailVisible = false
+    }
+  },
+  watch: {
+    // 监听复选框配置列所有的变化
+    checkList: {
+      handler: function (newnew, oldold) {
+        // console.log(newnew);
+        this.showColumn = newnew;
+        // 这里需要让表格重新绘制一下,否则会产生固定列错位的情况
+        this.$nextTick(() => {
+          this.$refs.multipleTable.doLayout();
+        });
+      },
+      deep: true,
+      immediate: true,
+    },
+  },
+
+  mounted() {
+    // this.getIsUseVoice();
+
+    // 发请求得到checkListInitData的列的名字
+    if (localStorage.getItem("fan")) {
+      this.checkList = JSON.parse(localStorage.getItem("fan"));
+    } else {
+      this.checkList = {
+        wind_name: true,
+        name:true,
+        production_date: true,
+        location:true,
+        number: true,
+        production_date: true,
+        install_date: true,
+      };
+    }
+  },
+};
+</script>
+<style lang="scss" scoped>
+ @import "@/views/wind/fan/index.scss";
+</style>

+ 104 - 0
src/views/wind/maintenancemapper/updateModel.vue

@@ -0,0 +1,104 @@
+<template>
+  <ele-form-dialog
+    v-bind="formConfig"
+    v-model="formFieldsData"
+    v-dialogDrag
+    :title="title"
+    :request-fn="handleFormSubmit"
+    :visible.sync="DialogVisible"
+    width="550px"
+    custom-class="abow_dialog"
+    label-width="100px"
+    label-position="left"
+    :dialogAttrs="{ 'close-on-click-modal': false,'top':'8vh'}"
+  >
+    
+  </ele-form-dialog>
+</template>
+
+<script>
+export default {
+  props: ["formModelVisible", "title"],
+  data() {
+    return {
+      url: "fan",
+      formData: {},
+      
+ 
+      formFieldsData: {
+        wind_id: "",
+        fan_model:"",
+        info: "",
+        number:"",
+      },
+      formConfig: {
+        formDesc: {
+          wind_id: {
+            type: "select",
+            label: "所属风场",
+            options: [],
+            required: true,
+           
+          },
+          fan_model: {
+            type: "select",
+            label: "型号",
+            required:true,
+            options: [],
+          },
+         
+          number: {
+            type: "input",
+            label: "机位号",
+          },
+           info: {
+            type: "textarea",
+            label: "备注",
+          },
+         
+        },
+        order: ["wind_id","fan_model", "number","info"]
+      }
+    };
+  },
+  created() {
+    this.$http.get("wind/getWindOptions").then(response => {
+      this.formConfig.formDesc.wind_id.options = response.data;
+    });
+     // 4-风机
+    this.$http.get("get_device_mold",{ params: {type:4} }).then(resp => {
+        this.formConfig.formDesc.fan_model.options = resp.data
+     });
+  },
+  methods: {
+    handleFormSubmit(data) {
+      this.formFieldsData.rule_data=this.rule_data
+      this.$parent.handleSubmit();
+    },
+    handleRequest(data) {
+      return Promise.resolve();
+    },
+    handleRequestSuccess() {
+      this.$message.success("发送成功");
+    }
+  },
+  computed: {
+    DialogVisible: {
+      set(val) {
+        this.$emit("sendVal", val); // 表示将子组件改变的值传递给父组件
+      },
+      get() {
+        
+        return this.formModelVisible; // 表示获取父组件的值
+      }
+    }
+  }
+};
+</script>
+<style lang="scss" scoped>
+.form-item1{
+  width:110px;
+  margin-right: 5px;
+  margin-bottom: 5px;
+}
+</style>