• wangxl's avatar
    2222 · e344c087
    wangxl authored
    e344c087
managerAdd.vue 5.71 KB
<template>
  <div>
    <a-row>
      <a-col :span="24">
        <div class="tb-title">
          <span>管理员设置</span><span style="color:red;"> ※ 若不填写用户名/密码,系统将自动生成,初始密码为证件号后六位(末位是字母为小写形式)</span>
        </div>
        <span style="color: rgb(56, 188, 213);clear:both"> ※ 密码由数字加字母组成,长度为6-10位</span>
      </a-col>
    </a-row>
    <a-row class="row_t">
      <a-col :span="4" class="bg-gray">
        <span style="color:red">*</span>
        姓名
      </a-col>
      <a-col :span="8" class="bg-gray">
        <span style="color:red">*</span>
        身份证号
      </a-col>
      <a-col :span="4" class="bg-gray">
        <span style="color:red">*</span>
        手机号
      </a-col>
      <a-col :span="3" class="bg-gray">
        用户名
      </a-col>
      <a-col :span="3" class="bg-gray">
        密码
      </a-col>
      <a-col :span="2" class="bg-gray">
        操作
      </a-col>
    </a-row>
    <a-row v-for="(member, index) in managers" :key="index" class="row_t" type="flex">
      <a-col :span="4">
        <div class="special-middle">
          <a-form-model-item :prop="'managers.' + index + '.personName'" :rules="rules.personName">
            <a-input v-model="member.personName" :maxLength="20" placeholder="姓名" />
          </a-form-model-item>
        </div>
      </a-col>
      <a-col :span="6">
        <div class="special-middle">
          <a-form-model-item :prop="'managers.' + index + '.certId'" :rules="rules.certId">
            <a-input v-model="member.certId" :maxLength="20" placeholder="身份证号" />
          </a-form-model-item>
        </div>
      </a-col>
      <a-col :span="4">
        <div class="special-middle">
          <a-form-model-item :prop="'managers.' + index + '.mobile'" :rules="rules.mobile">
            <a-input v-model="member.mobile" :maxLength="20" placeholder="手机号" />
          </a-form-model-item>
        </div>
      </a-col>
      <a-col :span="4">
        <a-form-model-item :prop="'managers.' + index + '.username'" :rules="rules.username">
          <a-input v-model="member.username" :maxLength="20" placeholder="用户名" />
        </a-form-model-item>
      </a-col>
      <a-col :span="4">
        <a-form-model-item :prop="'managers.' + index + '.password'" :rules="rules.password">
          <a-input v-model="member.password" :maxLength="20" placeholder="密码" />
        </a-form-model-item>
      </a-col>
      <a-col :span="2">
        <a-popconfirm title="确定要删除吗?" ok-text="确定" cancel-text="取消" @confirm="removemanagers(member)">
          <a-button type="link" size="small">删除</a-button>
        </a-popconfirm>
      </a-col>
    </a-row>
    <a-row v-if="managers && managers.length < 10"  type="flex">
      <a-col :span="24" style="text-align: center;">
        <div class="special-middle">
          <a-button type="dashed" style="width: 20%" @click="addmanagers">
            <a-icon type="plus" /> 添加
          </a-button>
        </div>
      </a-col>
    </a-row>
  </div>
</template>
<script>
//用法 <manager-group :managers.sync="formData.managers" />

import { isEmptyParams, checkPhone, checkEmail, checkIdentitytionId, personBirthday, personGender } from "@/views/utils/common"
import { isIdentityId } from '@/views/utils/validate'


const Member = {
  personName: null,
  certId: null,
  mobile: null,
  username: null,
  password: null,
}

export default {
  name: 'managerAdd',
  data () {
    return {
      rules: {
        personName: [
          { required: true, message: '*', trigger: 'blur' },
        ],
        certId: [
          { required: true, message: '*', trigger: 'blur' },
          { required: false, validator: checkIdentitytionId, trigger: 'blur' }
        ],
        mobile: [
          { required: true, message: '*', trigger: 'blur' },
          { required: false, validator: checkPhone, trigger: 'blur' }
        ],
        username: [
          { required: false, message: '*', trigger: 'blur' },
          {
            validator: (rule, value, callback) => {
              if (value == '' || value == undefined) {
                callback()
              }
              else {
                let pars = { username: value }
                this.$api.base.checkUser(pars).then(({ data = {} }) => {
                  if (data) {
                    callback(new Error("用户名已存在"));
                  } else
                    callback()
                })
              }
            }
          }
        ],
        password: [
          { required: false, message: '请输入密码', trigger: 'blur' },
          {
            validator: (rule, value, callback) => {
              if (value == '' || value == undefined) {
                callback()
              }
              let ckPwd = /^(?![0-9]+$)(?![a-zA-Z]+$)[0-9A-Za-z]{6,10}$/;
              if (ckPwd.test(value)) {
                callback()
              } else {
                callback(new Error('密码格式错误,请检查!'));
              }
            }
          },
        ]
      }
    }
  },
  props: {
    managers: {
      type: Array,
      default: () => {
        return [{ ...Member }]
      }
    },
    objectID: {//项目id/任务书id
      type: String,
      require: false
    },
  },
  components: {

  },
  created () {

  },
  methods: {
    removemanagers (item) {//移除成员
      let index = this.managers.indexOf(item)
      if (index !== -1) {
        this.managers.splice(index, 1)
      }
    },
    addmanagers () {//添加成员
      this.managers.push({ ...Member })
    }
  }
}
</script>
<style lang="less" scoped>
.row_t {
  .ant-col {
    text-align: center;
  }
}
.ant-input {
  width: 80%;
}
</style>