1
2
3
4
5
6
7
8
9
10
11
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
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
  | <template> 
 |      <GlobalWindow 
 |          :title="title" 
 |          width="100%" 
 |          :visible.sync="visible" 
 |          :confirm-working="isWorking" 
 |          @confirm="confirm" 
 |      > 
 |          <el-form :inline="true" class="demo-form-inline"> 
 |              <div v-for="(item, index) in list" :key="index"> 
 |                  <el-form-item label="姓名" required> 
 |                      <el-input v-model="item.memberName" placeholder="请输入"></el-input> 
 |                  </el-form-item> 
 |                  <el-form-item label="身份证号" required> 
 |                      <el-input v-model="item.idCard" maxlength="18" placeholder="请输入"></el-input> 
 |                  </el-form-item> 
 |                  <el-form-item> 
 |                      <el-button type="primary" v-if="index === 0" @click="add">添加</el-button> 
 |                      <el-button type="danger" v-else @click="dele(index)">删除</el-button> 
 |                  </el-form-item> 
 |              </div> 
 |          </el-form> 
 |      </GlobalWindow> 
 |  </template> 
 |    
 |  <script> 
 |      import BaseOpera from '@/components/base/BaseOpera' 
 |      import GlobalWindow from '@/components/common/GlobalWindow' 
 |      export default { 
 |          name: 'addEmployee', 
 |          extends: BaseOpera, 
 |          components: { GlobalWindow }, 
 |          data () { 
 |              return { 
 |                  list: [ 
 |                      { 
 |                          memberName: '', 
 |                          idCard: '', 
 |                          workTypeName: '', 
 |                          worktypeId: '', 
 |                          duName: '', 
 |                          duId: '', 
 |                          fee: '' 
 |                      } 
 |                  ], 
 |                  price: 0, 
 |                  arr: [] 
 |              } 
 |          }, 
 |          methods: { 
 |              open (title, obj) { 
 |                  this.title = title 
 |                  this.visible = true 
 |                  this.list = [ 
 |                      { 
 |                          memberName: '', 
 |                          idCard: '', 
 |                          workTypeName: '', 
 |                          worktypeId: '', 
 |                          duName: '', 
 |                          duId: '', 
 |                          fee: '' 
 |                      } 
 |                  ] 
 |                  this.arr = obj.arr 
 |                  this.price = obj.price 
 |              }, 
 |              add() { 
 |                  this.list.push({ 
 |                      memberName: '', 
 |                      idCard: '', 
 |                      workTypeName: '', 
 |                      worktypeId: '', 
 |                      duName: '', 
 |                      duId: '', 
 |                      fee: '' 
 |                  }) 
 |              }, 
 |              dele(index) { 
 |                  this.list.splice(index, 1) 
 |              }, 
 |              hasDuplicates(arr) { 
 |                  return arr.some((value, index) => arr.indexOf(value) !== index); 
 |              }, 
 |              confirm() { 
 |                  // 判断列表否是有空值 
 |                  // for (let i = 0; this.list.length; i++) { 
 |                  //     if (!this.list[i].memberName || !this.list[i].idCard) { 
 |                  //         this.$message.warning('请先完善信息后再提交') 
 |                  //         return 
 |                  //     } 
 |                  // } 
 |                  // 判断新录入数据身份证是否有重复 
 |                  let idcardList = this.list.map(item => item.idCard) 
 |                  if (this.hasDuplicates(idcardList)) { 
 |                      this.$message.warning('身份证有重复') 
 |                      return 
 |                  } 
 |                  // 判断身份证是否有效 
 |                  for (let i = 0; i < this.list.length; i++) { 
 |                      const regExp = /^[1-9]\d{5}(18|19|([23]\d))\d{2}((0[1-9])|(10|11|12))(([0-2][1-9])|10|20|30|31)\d{3}[0-9Xx]$/; 
 |                      if (!regExp.test(this.list[i].idCard)) { 
 |                          this.$message.warning(`第${i + 1}项员工身份证不合法`) 
 |                          return 
 |                      } 
 |                  } 
 |                  // 判断详情列表数据身份证是否有重复 
 |                  let next = true 
 |                  this.list.forEach(item => { 
 |                      this.arr.forEach(child => { 
 |                          if (item.idCard === child.idCard) { 
 |                              next = false 
 |                          } 
 |                      }) 
 |                  }) 
 |                  if (next) { 
 |                      this.list.forEach(item => { 
 |                          item.fee = this.price 
 |                      }) 
 |                      this.$emit('result', this.list) 
 |                      this.visible = false 
 |                  } else { 
 |                      this.$message.warning('身份证号不能重复!') 
 |                  } 
 |              } 
 |          } 
 |      } 
 |  </script> 
 |    
 |  <style lang="scss" scoped> 
 |    
 |  </style> 
 |  
  |