Blame view

src/components/owner/addOwnerMember.vue 10.4 KB
6ec243d6   wuxw   v1.9 点击提交后,成功提示没有...
1
  <template>
b96589a4   wuxw   v1.9 业主相关bug
2
    <el-dialog :title="$t('addOwnerMember.title')" :visible.sync="dialogVisible" width="60%"
84ba0155   wuxw   家庭成员测试
3
      @close="_closeSaveOwnerModal">
c85e0853   wuxw   业主详情开发完成
4
5
6
7
      <el-form :model="addOwnerMemberInfo" :rules="rules" ref="form" label-width="120px">
        <el-row :gutter="20">
          <el-col :span="12">
            <el-form-item :label="$t('addOwnerMember.personRole')" prop="personRole">
84ba0155   wuxw   家庭成员测试
8
9
10
              <el-select v-model="addOwnerMemberInfo.personRole"
                :placeholder="$t('addOwnerMember.placeholder.personRole')" class="w100">
                <el-option v-for="item in roleOptions" :key="item.value" :label="item.label" :value="item.value" />
c85e0853   wuxw   业主详情开发完成
11
12
              </el-select>
            </el-form-item>
84ba0155   wuxw   家庭成员测试
13
  
c85e0853   wuxw   业主详情开发完成
14
            <el-form-item :label="$t('addOwnerMember.name')" prop="name">
84ba0155   wuxw   家庭成员测试
15
16
              <el-input v-model.trim="addOwnerMemberInfo.name" :placeholder="$t('addOwnerMember.placeholder.name')"
                clearable />
c85e0853   wuxw   业主详情开发完成
17
            </el-form-item>
84ba0155   wuxw   家庭成员测试
18
  
c85e0853   wuxw   业主详情开发完成
19
            <el-form-item :label="$t('addOwnerMember.link')" prop="link">
84ba0155   wuxw   家庭成员测试
20
21
              <el-input v-model.trim="addOwnerMemberInfo.link" :placeholder="$t('addOwnerMember.placeholder.link')"
                clearable />
c85e0853   wuxw   业主详情开发完成
22
            </el-form-item>
84ba0155   wuxw   家庭成员测试
23
  
c85e0853   wuxw   业主详情开发完成
24
            <el-form-item :label="$t('addOwnerMember.sex')" prop="sex">
84ba0155   wuxw   家庭成员测试
25
26
27
              <el-select v-model="addOwnerMemberInfo.sex" :placeholder="$t('addOwnerMember.placeholder.sex')"
                class="w100">
                <el-option v-for="item in sexOptions" :key="item.value" :label="item.label" :value="item.value" />
c85e0853   wuxw   业主详情开发完成
28
29
30
              </el-select>
            </el-form-item>
          </el-col>
84ba0155   wuxw   家庭成员测试
31
  
c85e0853   wuxw   业主详情开发完成
32
33
          <el-col :span="12" class="text-center">
            <div class="avatar-uploader">
84ba0155   wuxw   家庭成员测试
34
35
36
              <img v-if="addOwnerMemberInfo.ownerPhotoUrl" :src="addOwnerMemberInfo.ownerPhotoUrl" class="avatar"
                :alt="$t('addOwnerMember.photo')">
              <img v-else src="/img/noPhoto.jpg" class="avatar" :alt="$t('addOwnerMember.photo')">
c85e0853   wuxw   业主详情开发完成
37
            </div>
84ba0155   wuxw   家庭成员测试
38
            <el-button type="primary" class="mt10" @click="_uploadPhoto">
c85e0853   wuxw   业主详情开发完成
39
40
              {{ $t('addOwnerMember.uploadPhoto') }}
            </el-button>
84ba0155   wuxw   家庭成员测试
41
            <input type="file" ref="fileInput" accept=".jpg,.jpeg,.png" @change="_choosePhoto" style="display: none">
c85e0853   wuxw   业主详情开发完成
42
43
          </el-col>
        </el-row>
84ba0155   wuxw   家庭成员测试
44
  
c85e0853   wuxw   业主详情开发完成
45
46
47
        <el-row :gutter="20">
          <el-col :span="12">
            <el-form-item :label="$t('addOwnerMember.concactLink')">
84ba0155   wuxw   家庭成员测试
48
49
              <el-input v-model.trim="addOwnerMemberInfo.concactLink"
                :placeholder="$t('addOwnerMember.placeholder.concactLink')" clearable />
c85e0853   wuxw   业主详情开发完成
50
            </el-form-item>
84ba0155   wuxw   家庭成员测试
51
  
c85e0853   wuxw   业主详情开发完成
52
            <el-form-item :label="$t('addOwnerMember.address')">
84ba0155   wuxw   家庭成员测试
53
54
              <el-input v-model.trim="addOwnerMemberInfo.address" :placeholder="$t('addOwnerMember.placeholder.address')"
                clearable />
c85e0853   wuxw   业主详情开发完成
55
56
            </el-form-item>
          </el-col>
84ba0155   wuxw   家庭成员测试
57
  
c85e0853   wuxw   业主详情开发完成
58
59
          <el-col :span="12">
            <el-form-item :label="$t('addOwnerMember.idCard')">
84ba0155   wuxw   家庭成员测试
60
61
              <el-input v-model.trim="addOwnerMemberInfo.idCard" :placeholder="$t('addOwnerMember.placeholder.idCard')"
                clearable />
c85e0853   wuxw   业主详情开发完成
62
            </el-form-item>
84ba0155   wuxw   家庭成员测试
63
  
c85e0853   wuxw   业主详情开发完成
64
            <el-form-item :label="$t('addOwnerMember.remark')">
84ba0155   wuxw   家庭成员测试
65
66
              <el-input v-model.trim="addOwnerMemberInfo.remark" :placeholder="$t('addOwnerMember.placeholder.remark')"
                clearable />
c85e0853   wuxw   业主详情开发完成
67
68
69
            </el-form-item>
          </el-col>
        </el-row>
84ba0155   wuxw   家庭成员测试
70
71
  
        <template v-for="(item, index) in addOwnerMemberInfo.attrs">
c85e0853   wuxw   业主详情开发完成
72
73
74
          <el-row :gutter="20" v-if="index % 2 === 0" :key="index">
            <el-col :span="12">
              <el-form-item :label="item.specName" v-if="item.specType === '2233'">
84ba0155   wuxw   家庭成员测试
75
                <el-input v-model="item.value" :placeholder="item.specHoldplace" clearable />
c85e0853   wuxw   业主详情开发完成
76
              </el-form-item>
84ba0155   wuxw   家庭成员测试
77
  
c85e0853   wuxw   业主详情开发完成
78
              <el-form-item :label="item.specName" v-if="item.specType === '3344'">
84ba0155   wuxw   家庭成员测试
79
80
81
                <el-select v-model="item.value" :placeholder="item.specHoldplace" class="w100">
                  <el-option v-for="value in item.values" :key="value.value" :label="value.valueName"
                    :value="value.value" />
c85e0853   wuxw   业主详情开发完成
82
83
84
                </el-select>
              </el-form-item>
            </el-col>
84ba0155   wuxw   家庭成员测试
85
86
87
88
89
90
  
            <el-col :span="12" v-if="index < addOwnerMemberInfo.attrs.length - 1">
              <el-form-item :label="addOwnerMemberInfo.attrs[index + 1].specName"
                v-if="addOwnerMemberInfo.attrs[index + 1].specType === '2233'">
                <el-input v-model="addOwnerMemberInfo.attrs[index + 1].value"
                  :placeholder="addOwnerMemberInfo.attrs[index + 1].specHoldplace" clearable />
c85e0853   wuxw   业主详情开发完成
91
              </el-form-item>
84ba0155   wuxw   家庭成员测试
92
93
94
95
96
97
98
  
              <el-form-item :label="addOwnerMemberInfo.attrs[index + 1].specName"
                v-if="addOwnerMemberInfo.attrs[index + 1].specType === '3344'">
                <el-select v-model="addOwnerMemberInfo.attrs[index + 1].value"
                  :placeholder="addOwnerMemberInfo.attrs[index + 1].specHoldplace" class="w100">
                  <el-option v-for="value in addOwnerMemberInfo.attrs[index + 1].values" :key="value.value"
                    :label="value.valueName" :value="value.value" />
c85e0853   wuxw   业主详情开发完成
99
100
101
102
103
104
                </el-select>
              </el-form-item>
            </el-col>
          </el-row>
        </template>
      </el-form>
84ba0155   wuxw   家庭成员测试
105
  
c85e0853   wuxw   业主详情开发完成
106
107
108
109
110
111
112
113
114
      <div slot="footer" class="dialog-footer">
        <el-button @click="_closeSaveOwnerModal">{{ $t('common.cancel') }}</el-button>
        <el-button type="primary" @click="saveOwnerMemberInfo">{{ $t('common.save') }}</el-button>
      </div>
    </el-dialog>
  </template>
  
  <script>
  import { getCommunityId } from '@/api/community/communityApi'
b96589a4   wuxw   v1.9 业主相关bug
115
  import { getAttrValue } from '@/api/owner/ownerApi'
c85e0853   wuxw   业主详情开发完成
116
  import { uploadFile } from '@/api/staff/addStaffApi'
84ba0155   wuxw   家庭成员测试
117
118
119
  import { getAttrSpecList } from '@/api/dev/attrSpecApi'
  import { saveOwnerMember } from '@/api/owner/addOwnerMemberApi'
  
c85e0853   wuxw   业主详情开发完成
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
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
175
  
  export default {
    name: 'AddOwnerMember',
    data() {
      return {
        dialogVisible: false,
        addOwnerMemberInfo: {
          name: '',
          link: '',
          address: '',
          sex: '',
          remark: '',
          ownerId: '',
          ownerPhoto: '',
          ownerPhotoUrl: '',
          idCard: '',
          personType: 'P',
          personRole: '3',
          concactLink: '',
          attrs: []
        },
        roleOptions: [
          { value: '2', label: this.$t('addOwnerMember.role.tenant') },
          { value: '3', label: this.$t('addOwnerMember.role.family') },
          { value: '4', label: this.$t('addOwnerMember.role.staff') },
          { value: '99', label: this.$t('addOwnerMember.role.other') }
        ],
        sexOptions: [
          { value: '0', label: this.$t('common.male') },
          { value: '1', label: this.$t('common.female') }
        ],
        rules: {
          personRole: [
            { required: true, message: this.$t('addOwnerMember.placeholder.personRole'), trigger: 'change' }
          ],
          name: [
            { required: true, message: this.$t('addOwnerMember.placeholder.name'), trigger: 'blur' },
            { min: 2, max: 64, message: this.$t('addOwnerMember.validate.nameLength'), trigger: 'blur' }
          ],
          link: [
            { required: true, message: this.$t('addOwnerMember.placeholder.link'), trigger: 'blur' },
            { pattern: /^1[3-9]\d{9}$/, message: this.$t('addOwnerMember.validate.phoneFormat'), trigger: 'blur' }
          ],
          sex: [
            { required: true, message: this.$t('addOwnerMember.placeholder.sex'), trigger: 'change' }
          ],
          idCard: [
            { pattern: /(^\d{15}$)|(^\d{18}$)|(^\d{17}(\d|X|x)$)/, message: this.$t('addOwnerMember.validate.idCardFormat'), trigger: 'blur' }
          ],
          remark: [
            { max: 200, message: this.$t('addOwnerMember.validate.remarkLength'), trigger: 'blur' }
          ]
        }
      }
    },
    methods: {
84ba0155   wuxw   家庭成员测试
176
177
      open(params) {
        this.addOwnerMemberInfo.ownerId = params.ownerId
c85e0853   wuxw   业主详情开发完成
178
179
180
181
182
183
        this._loadOwnerAttrSpec()
        this.dialogVisible = true
        this.$nextTick(() => {
          this.$refs.form.clearValidate()
        })
      },
84ba0155   wuxw   家庭成员测试
184
185
  
      async saveOwnerMemberInfo() {
c85e0853   wuxw   业主详情开发完成
186
187
188
189
190
191
        this.$refs.form.validate(valid => {
          if (valid) {
            const params = {
              ...this.addOwnerMemberInfo,
              communityId: getCommunityId()
            }
84ba0155   wuxw   家庭成员测试
192
            saveOwnerMember(params)
c85e0853   wuxw   业主详情开发完成
193
              .then(res => {
52b5e4b9   wuxw   v1.9 优化客户黄反馈bug
194
                if (res.code == 0) {
6ec243d6   wuxw   v1.9 点击提交后,成功提示没有...
195
                  this.$message.success(this.$t('common.operationSuccess'))
c85e0853   wuxw   业主详情开发完成
196
                  this.dialogVisible = false
b96589a4   wuxw   v1.9 业主相关bug
197
                  this.$emit('success')
c85e0853   wuxw   业主详情开发完成
198
                } else {
52b5e4b9   wuxw   v1.9 优化客户黄反馈bug
199
                  this.$message.error(res.msg || this.$t('common.saveFailed'))
c85e0853   wuxw   业主详情开发完成
200
201
202
203
204
205
206
207
208
                }
              })
              .catch(err => {
                console.error('请求失败:', err)
                this.$message.error(this.$t('common.saveFailed'))
              })
          }
        })
      },
84ba0155   wuxw   家庭成员测试
209
  
b96589a4   wuxw   v1.9 业主相关bug
210
      async _loadOwnerAttrSpec() {
c85e0853   wuxw   业主详情开发完成
211
        this.addOwnerMemberInfo.attrs = []
b96589a4   wuxw   v1.9 业主相关bug
212
213
        const { data } = await getAttrSpecList({ page: 1, row: 100, tableName: 'building_owner_attr' })
        for (const attr of data) {
92c405db   wuxw   优化业务受理中部分选项打不开bug
214
215
           attr.value = ''
          if (attr.specShow == 'Y') {
b96589a4   wuxw   v1.9 业主相关bug
216
            attr.values = await getAttrValue(attr.specCd)
92c405db   wuxw   优化业务受理中部分选项打不开bug
217
            this.addOwnerMemberInfo.attrs.push(attr)
b96589a4   wuxw   v1.9 业主相关bug
218
          }
84ba0155   wuxw   家庭成员测试
219
  
b96589a4   wuxw   v1.9 业主相关bug
220
        }
c85e0853   wuxw   业主详情开发完成
221
      },
84ba0155   wuxw   家庭成员测试
222
  
c85e0853   wuxw   业主详情开发完成
223
224
225
      _uploadPhoto() {
        this.$refs.fileInput.click()
      },
84ba0155   wuxw   家庭成员测试
226
  
c85e0853   wuxw   业主详情开发完成
227
228
229
230
231
232
233
234
      _choosePhoto(event) {
        const files = event.target.files
        if (files && files.length > 0) {
          const file = files[0]
          if (file.size > 1024 * 1024 * 2) {
            this.$message.error(this.$t('addOwnerMember.validate.photoSize'))
            return
          }
c85e0853   wuxw   业主详情开发完成
235
236
237
          this._doUploadImage(file)
        }
      },
84ba0155   wuxw   家庭成员测试
238
  
c85e0853   wuxw   业主详情开发完成
239
240
241
242
      _doUploadImage(file) {
        const formData = new FormData()
        formData.append('uploadFile', file)
        formData.append('communityId', getCommunityId())
84ba0155   wuxw   家庭成员测试
243
  
c85e0853   wuxw   业主详情开发完成
244
245
246
247
248
249
250
251
        uploadFile(formData).then(res => {
          this.addOwnerMemberInfo.ownerPhoto = res.fileId
          this.addOwnerMemberInfo.ownerPhotoUrl = res.url
        }).catch(err => {
          console.error('上传失败:', err)
          this.$message.error(this.$t('addOwnerMember.uploadFailed'))
        })
      },
84ba0155   wuxw   家庭成员测试
252
  
c85e0853   wuxw   业主详情开发完成
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
      _closeSaveOwnerModal() {
        this.dialogVisible = false
        this.$refs.form.resetFields()
        this.addOwnerMemberInfo = {
          name: '',
          link: '',
          address: '',
          sex: '',
          remark: '',
          ownerId: '',
          ownerPhoto: '',
          ownerPhotoUrl: '',
          idCard: '',
          personType: 'P',
          personRole: '3',
          concactLink: '',
          attrs: []
        }
      }
    }
  }
  </script>
  
  <style scoped>
  .w100 {
    width: 100%;
  }
84ba0155   wuxw   家庭成员测试
280
  
c85e0853   wuxw   业主详情开发完成
281
282
283
  .mt10 {
    margin-top: 10px;
  }
84ba0155   wuxw   家庭成员测试
284
  
c85e0853   wuxw   业主详情开发完成
285
286
287
  .text-center {
    text-align: center;
  }
84ba0155   wuxw   家庭成员测试
288
  
c85e0853   wuxw   业主详情开发完成
289
290
291
292
293
294
  .avatar-uploader {
    width: 100%;
    display: flex;
    justify-content: center;
    margin-bottom: 10px;
  }
84ba0155   wuxw   家庭成员测试
295
  
c85e0853   wuxw   业主详情开发完成
296
297
298
299
300
301
  .avatar {
    width: 150px;
    height: 150px;
    object-fit: cover;
  }
  </style>