vue+elementui新增,删除,校验ip地址


 

 

 

 

 

 

 

 

@/api/wms/wmsWorkstation

wmsWorkstation.js

import request from '@/utils/request'


// 校验ip
export function checkIp_exist(query) {
  return request({
    url: '/wms/wmsWorkstation/ip_exist',
    method: 'get',
    params: query
  })
}

 

 

<template>
  <div>
    <!-- 表单 -->
    <el-form ref="form" :model="form" :rules="rules" label-width="90px" size="small">
      <el-row>
        <el-col :span="12">
         <el-row>
        <el-col :span="12">
          <el-form-item label="" :prop="'ipAddrList.' + index " v-for="(list,index) in form.ipAddrList" :rules="{
              validator:validateIPAddress,  trigger: 'blur'}" :key="index">
            <template slot="label">
              <span v-if="index === 0">IP地址</span>
              <span v-else></span>
            </template>
            <el-input type="text" v-model="form.ipAddrList[index]" @blur="onInputBlur(list)" style="width: calc(100% - 50px);" placeholder="请输入IP地址" />
            <el-button @click="addEl" style="margin-left: 5px;" icon="el-icon-circle-plus-outline" type="text" class="iadd" size="medium" />
            <el-button @click="del(index)" style="margin-left: 5px;" icon="el-icon-remove-outline" type="text" class="irem" size="medium" />
          </el-form-item>
        </el-col>
      </el-row>
    </el-form>
  </div>
</template>

<script>
import { checkIp_exist } from '@/api/wms/wmsWorkstation'

export default {
  name: 'MesWorkstationForm',
  components: {},
  props: {
    form: {
      type: Object,
    },
  },
  data() {
    return {
      // 表单校验
      rules: {
        code: [
          {
            required: true,
            message: '站点代码不能为空',
            trigger: 'blur',
          },
          {
            validator: Format.FormValidate.Form().checkRules, //validateInput
            trigger: 'blur',
          },
        ],
      },
      mesProductionLineList: [],
      mesWorkstationList: [],
    }
  },
  created() {
  },
  mounted() {},
  methods: {
    // 验证ip地址
    validateIPAddress(rule, value, callback) {
      let regexp =
        /^((2(5[0-5]|[0-4]\d))|[0-1]?\d{1,2})(\.((2(5[0-5]|[0-4]\d))|[0-1]?\d{1,2})){3}$/
      let valdata = value.split(',')
      let isCorrect = true
      if (valdata.length) {
        for (let i = 0; i < valdata.length; i++) {
          if (regexp.test(valdata[i]) == false) {
            isCorrect = false
          }
        }
      }
      if (value == null || value === '') {
        callback()
      } else if (!isCorrect) {
        callback(new Error('请输入正确对IP地址'))
      } else if (this.equalsAny(value, this.form.ipAddrList, 1)) {
        callback(new Error('IP地址重复'))
      } else {
        callback()
      }
    },
    // 添加
    addEl() {
      this.form.ipAddrList.push('')
      console.log('添加', this.form.ipAddrList)
    },
    // 删除
    del(index) {
      // 判断只有一条数据的时候 不删除
      if (this.form.ipAddrList.length <= 1) {
        this.form.ipAddrList = ['']
        return false
      }
      this.form.ipAddrList.splice(index, 1)
      console.log('删除', this.form.ipAddrList)
    },
    // 失去焦点的时候调用校验ip
    onInputBlur(item) {
      console.log(item)
      if (item != '') {
        this.checkIp(item)
      }
    },
    // 校验ip  校验通过返回code:200,校验不通过返回code:500,msg:"ip[iPAddr]已存在
    checkIp(ipAddr) {
      const params = {
        ipAddr,
        id: this.form.id,
      }
      checkIp_exist(params).then((res) => {
        console.log(res)
      })
    },
    
  },
}
</script>

 

 

附:util/ruquest.js

import axios from 'axios'
import {
  Notification,
  MessageBox,
  Message
} from 'element-ui'
import store from '@/store'
import {
  getToken
} from '@/utils/auth'
import errorCode from '@/utils/errorCode'

// 是否显示重新登录
let isReloginShow;

axios.defaults.headers['Content-Type'] = 'application/json'
// 创建axios实例
const service = axios.create({
  // axios中请求配置有baseURL选项,表示请求URL公共部分
  baseURL: process.env.VUE_APP_BASE_API,
  // 超时
  timeout: 100000
})
// request拦截器
service.interceptors.request.use(config => {
  // 是否需要设置 token
  const isToken = (config.headers || {}).isToken === false
  if (getToken() && !isToken) {
    config.headers['Authorization'] = 'Bearer ' + getToken() // 让每个请求携带自定义token 请根据实际情况自行修改
  }
  // get请求映射params参数
  if (config.method === 'get' && config.params) {
    let url = config.url + '?';
    for (const propName of Object.keys(config.params)) {
      const value = config.params[propName];
      var part = encodeURIComponent(propName) + "=";
      // if (propName != "createTime" && propName != "updateTime") {
      if (value !== null && typeof (value) !== "undefined") {
        if (typeof value === 'object') {
          for (const key of Object.keys(value)) {
            let params = propName + '[' + key + ']';
            var subPart = encodeURIComponent(params) + "=";
            url += subPart + encodeURIComponent(value[key]) + "&";
          }
        } else {
          url += part + encodeURIComponent(value) + "&";
        }
      }
      // }
    }
    url = url.slice(0, -1);
    config.params = {};
    config.url = url;
  }
  if (config.data) {
    // delete config.data.createBy
    // delete config.data.createTime
    // delete config.data.updateBy
    // delete config.data.updateTime
  }
  return config
}, error => {
  console.log(error)
  Promise.reject(error)
})

// 响应拦截器
service.interceptors.response.use(res => {
  // 未设置状态码则默认成功状态
  const code = res.data.code || 200;
  // 获取错误信息
  const msg = errorCode[code] || res.data.msg || errorCode['default']
  if (code === 401) {
    if (!isReloginShow) {
      isReloginShow = true;
      MessageBox.confirm('登录状态已过期,您可以继续留在该页面,或者重新登录', '系统提示', {
        confirmButtonText: '重新登录',
        cancelButtonText: '取消',
        type: 'warning'
      }).then(() => {
        isReloginShow = false;
        store.dispatch('LogOut').then(() => {
          // 如果是登录页面不需要重新加载
          if (window.location.hash.indexOf("#/login") != 0) {
            location.href = '/index';
          }
        })
      }).catch(() => {
        isReloginShow = false;
      });
    }
    return Promise.reject('无效的会话,或者会话已过期,请重新登录。')
  } else if (code === 500) {
    Message({
      message: msg,
      type: 'error',
      dangerouslyUseHTMLString: true
    })
    return Promise.reject(new Error(msg))
  } else if (code === 502) {
    return Promise.reject(res.data)
  } else if (code !== 200) {
    Notification.error({
      title: msg
    })
    return Promise.reject('error')
  } else {
    return res.data
  }
},
  error => {
    console.log('err' + error)
    let {
      message
    } = error;
    if (message == "Network Error") {
      message = "后端接口连接异常";
    } else if (message.includes("timeout")) {
      message = "系统接口请求超时";
    } else if (message.includes("Request failed with status code")) {
      message = "系统接口" + message.substr(message.length - 3) + "异常";
    }
    Message({
      message: message,
      type: 'error',
      duration: 5 * 1000
    })
    return Promise.reject(error)
  }
)

export default service

 

posted @ 2022-08-12 11:32  骑蝴蝶飞  阅读(989)  评论(0编辑  收藏  举报