valveWell.vue 7.31 KB
Newer Older
耿迪迪's avatar
耿迪迪 committed
1 2
<template>
  <el-dialog
3
    :title="title"
耿迪迪's avatar
耿迪迪 committed
4 5
    :visible.sync="dialogVisible"
    :before-close="handleClose">
6 7 8
    <el-row>
      <el-form ref="form" :model="form" :rules="rules" label-width="135px">
        <el-row>
9
          <el-col :span="11">
10
            <el-form-item label="所属管道" prop="pipeCode">
11
              <el-select v-model="form.pipeCode" placeholder="请选择所属管道" style="width: 100%">
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 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111
                <el-option
                  v-for="item in pipeList"
                  :key="item.pipeCode"
                  :label="item.pipeName"
                  :value="item.pipeCode"
                >
                </el-option>
              </el-select>
            </el-form-item>
          </el-col>
        </el-row>

        <el-row>
          <el-col :span="11">
            <el-form-item label="设备名称" prop="deviceName">
              <el-input v-model="form.deviceName" placeholder="请输入设备名称" />
            </el-form-item>
          </el-col>

          <el-col :span="11">
            <el-form-item label="设备型号" prop="deviceModel">
              <el-input v-model="form.deviceModel" placeholder="请输入设备型号" />
            </el-form-item>
          </el-col>
        </el-row>
        <el-col :span="11">
          <el-form-item label="所在地址" prop="deviceAddr">
            <el-input v-model="form.deviceAddr" placeholder="请输入所在地址" />
          </el-form-item>
        </el-col>

        <el-col :span="11">
          <el-form-item label="物联网编号" prop="iotNo">
            <el-input v-model="form.iotNo" placeholder="请输入物联网编号" />
          </el-form-item>
        </el-col>

        <el-col :span="22">
          <el-form-item label="经纬度坐标" prop="">
            <el-card class="box-card">
              <div v-text="`[[${form.longitude},${form.latitude}]]`"></div>
            </el-card>
          </el-form-item>
        </el-col>

        <!-- <el-col>
          <el-form-item label="纬度" prop="latitude">
            <el-input v-model="form.latitude" placeholder="请输入纬度" />
          </el-form-item>
        </el-col> -->

        <el-col :span="11">
          <el-form-item label="联系人" prop="linkman">
            <el-input v-model="form.linkman" placeholder="请输入联系人" />
          </el-form-item>
        </el-col>

        <el-col :span="11">
          <el-form-item label="联系电话" prop="phone">
            <el-input v-model="form.phone" placeholder="请输入联系电话" />
          </el-form-item>
        </el-col>

        <el-col>
          <el-form-item label="设备图片上传" prop="iconUrl">
            <MyFileUpload
              listType="picture-card"
              @resFun="getFileInfo"
              @remove="listRemove"
              :fileArr="fileArr"
            />
            <el-input v-show="false" disabled v-model="form.iconUrl"></el-input>
          </el-form-item>
        </el-col>

        <el-col>
          <el-form-item label="安装时间" prop="installationTime">
            <el-date-picker
              clearable
              size="small"
              v-model="form.installationTime"
              type="date"
              value-format="yyyy-MM-dd HH:mm:ss"
              placeholder="选择安装时间"
            >
            </el-date-picker>
          </el-form-item>
        </el-col>

        <el-col :span="22">
          <el-form-item label="备注" prop="remarks">
            <el-input
              type="textarea"
              v-model="form.remarks"
              placeholder="请输入备注"
            />
          </el-form-item>
        </el-col>
      </el-form>
    </el-row>
耿迪迪's avatar
耿迪迪 committed
112 113
    <span slot="footer" class="dialog-footer">
      <el-button @click="dialogVisible = false">取 消</el-button>
耿迪迪's avatar
耿迪迪 committed
114
      <el-button type="primary" @click="submitForm">确 定</el-button>
耿迪迪's avatar
耿迪迪 committed
115 116 117 118 119
    </span>
  </el-dialog>
</template>

<script>
耿迪迪's avatar
耿迪迪 committed
120 121

  import { getAllDeviceInfo ,addDeviceInfo, updateDeviceInfo } from "@/api/device/deviceInfo";
122
  import { pipeAllInfoList } from "@/api/device/pipe";
耿迪迪's avatar
耿迪迪 committed
123
  import MyFileUpload from "@/components/MyFileUpload";
耿迪迪's avatar
耿迪迪 committed
124 125
  import { DEVICE_TYPE } from "utils/gaodeMap.js";

耿迪迪's avatar
耿迪迪 committed
126 127
  export default {
    props: {
128
      title: { type: String }
耿迪迪's avatar
耿迪迪 committed
129 130 131
    },
    data () {
      return {
耿迪迪's avatar
耿迪迪 committed
132
        form : {
133
          deviceType : "2"
耿迪迪's avatar
耿迪迪 committed
134 135 136 137 138
        },
        dialogVisible : false,
        fileList: [],
        map : null,
        obj : null,
耿迪迪's avatar
耿迪迪 committed
139
        gaoMap : null,
140
        fileArr: [],
141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174
        pipeList: [],
        rules: {
          pipeCode: [
            { required: true, message: "请选择所属管道", trigger: "blur" },
            // { min: 3, max: 5, message: "长度在 3 到 5 个字符", trigger: "blur" },
          ],
          deviceName: [
            { required: true, message: "请输入设备名称", trigger: "blur" },
          ],
          deviceModel: [
            { required: true, message: "请输入设备型号", trigger: "blur" },
          ],
          deviceAddr: [
            { required: true, message: "请输入所在地址", trigger: "blur" },
          ],
          iotNo: [
            { required: true, message: "请输入物联网编号", trigger: "blur" },
          ],
          linkman: [
            { required: true, message: "请输入联系人", trigger: "blur" },
          ],
          phone: [
            { required: true, message: "请输入联系电话", trigger: "blur" },
          ],
          iconUrl: [{ required: true, message: "请上传图片", trigger: "change" }],
          installationTime: [
            {
              // type: "date",
              required: true,
              message: "请选择日期",
              trigger: "change",
            },
          ],
        },
耿迪迪's avatar
耿迪迪 committed
175 176
      }
    },
耿迪迪's avatar
耿迪迪 committed
177
    components: {
耿迪迪's avatar
耿迪迪 committed
178
      MyFileUpload,
耿迪迪's avatar
耿迪迪 committed
179
    },
耿迪迪's avatar
耿迪迪 committed
180 181 182 183 184 185 186
    methods: {
      show () {
        this.dialogVisible = true;
      },
      hide () {
        this.remove()
      },
耿迪迪's avatar
耿迪迪 committed
187 188 189 190 191 192 193 194
      getFileInfo(res){
        this.form.iconUrl = res.url;
      },
      submitForm() {
        this.$refs["form"].validate(valid => {
          if (valid) {
            if (this.form.deviceId != null) {
              updateDeviceInfo(this.form).then(response => {
耿迪迪's avatar
耿迪迪 committed
195
                this.dialogVisible = false;
196 197
                this.map.remove(this.obj);
                this.gaoMap.addMarker(this.gaoMap.deviceType,this.form);
耿迪迪's avatar
耿迪迪 committed
198 199 200 201 202 203 204 205 206
                this.msgSuccess("修改成功");
              });
            } else {
              addDeviceInfo(this.form).then(response => {
                if(response.code == 200){
                  this.remove();
                  this.map.remove(this.obj);
                  this.form.deviceId = response.data;
                  this.gaoMap.addMarker(this.gaoMap.deviceType,this.form);
耿迪迪's avatar
耿迪迪 committed
207
                  //this.gaoMap.placeSearch.clear();
耿迪迪's avatar
耿迪迪 committed
208
                  this.gaoMap.closeAddMarker();
耿迪迪's avatar
耿迪迪 committed
209 210 211 212 213 214 215 216 217
                  this.msgSuccess("新增成功");
                }else{
                  this.msgSuccess("新增失败");
                }
              });
            }
          }
        });
      },
耿迪迪's avatar
耿迪迪 committed
218
      handleClose(done) {
耿迪迪's avatar
耿迪迪 committed
219
        done();
耿迪迪's avatar
耿迪迪 committed
220 221 222 223
      },
      listRemove(e) {
        this.form.url = "";
        this.fileArr = [];
224 225 226 227 228
      },
      getPipeInfos(){
        pipeAllInfoList({}).then((response) => {
          this.pipeList = response.data;
        });
耿迪迪's avatar
耿迪迪 committed
229
      }
230
    },
231 232 233 234 235 236
    watch:{
      dialogVisible(val){
        if(val){
          this.getPipeInfos();
        }
      }
耿迪迪's avatar
耿迪迪 committed
237 238 239 240 241
    }
  }
</script>