From 497583fe37d894095ea03b2ee87d43468b8eed6c Mon Sep 17 00:00:00 2001
From: gongjinbao <gongjinbao@163.com>
Date: 星期三, 08 一月 2025 18:20:37 +0800
Subject: [PATCH] Merge branch 'main' of http://120.76.84.145:10101/gitblit/r/H5/americanContainer

---
 src/component/userInfo.vue |  170 +++++++++++++++++++++++++++++++++++++++-----------------
 1 files changed, 119 insertions(+), 51 deletions(-)

diff --git a/src/component/userInfo.vue b/src/component/userInfo.vue
index e06ca59..6b43204 100644
--- a/src/component/userInfo.vue
+++ b/src/component/userInfo.vue
@@ -1,97 +1,165 @@
 <template>
-    <el-dialog :visible.sync="show" :show-close="false" width="80%" top="51px" :close-on-click-modal="false">
+    <el-dialog :visible.sync="show" :show-close="false" width="80%" top="51px" :close-on-click-modal="false"
+        append-to-body @open="open">
         <div class="content">
-            <el-form label-position="left" label-width="105px" :model="form" :rules="rules">
+            <el-form label-position="left" label-width="120px" ref="form" :model="form" :rules="rules">
                 <div class="title">个人信息</div>
-                <div class="company">所属公司:成都喜望软件有限公司</div>
+                <div class="company">所属公司:{{ userInfo.companyName }}</div>
                 <el-row :gutter="90" class="companyForm">
                     <el-col :span="6.5">
-                        <el-form-item label="姓名:">
-                            <el-input v-model="form.name"></el-input>
+                        <el-form-item label="姓名:" prop="userName">
+                            <el-input v-model="form.userName" placeholder="请输入"></el-input>
                         </el-form-item>
                     </el-col>
-                    <el-col :span="6.5"><el-form-item label="手机号:" label-width="120px">
-                            <el-input v-model="form.region"></el-input>
+                    <el-col :span="6.5"><el-form-item label="手机号:" prop="phone" label-width="120px">
+                            <el-input v-model="form.phone"></el-input>
                         </el-form-item></el-col>
-                    <el-col :span="6.5"><el-form-item label="邮箱:">
-                            <el-input v-model="form.type"></el-input>
+                    <el-col :span="6.5"><el-form-item label="邮箱:" prop="userEmail">
+                            <el-input v-model="form.userEmail"></el-input>
                         </el-form-item></el-col>
                 </el-row>
                 <div class="company" style="margin-top: 6px;">其他邮箱
-                    <div class="btn"><img src="@/assets/add.png" alt="">新增邮箱</div>
+                    <div @click="addEmail" class="btn"><img src="@/assets/add.png" alt="">新增邮箱</div>
                 </div>
                 <el-row :gutter="90" class="companyForm">
-                    <el-col :span="6.5">
-                        <el-form-item label="邮箱:" prop="email">
-                            <el-input v-model="form.email"></el-input>
-                        </el-form-item>
-                    </el-col>
-                    <el-col :span="16"><el-form-item label="备注:" label-width="120px">
-                            <div style="display: flex;align-items: center;"><el-input v-model="form.region"></el-input>
-                                <img style="width: 19px;height: 21px;cursor: pointer;margin-left: 26px;"
-                                    src="@/assets/delete.png" alt="">
-                            </div>
-                        </el-form-item></el-col>
-
+                    <div v-for="(item, index) in form.otherEmails" :key="item">
+                        <el-col :span="6.5">
+                            <el-form-item label="邮箱:" :prop="'otherEmails.' + index + '.mail'" :rules="[{
+                                required: true, message: '请输入邮箱', trigger: 'change'
+                            }, { type: 'email', message: '请输入正确的邮箱地址', trigger: 'change' }]">
+                                <el-input v-model="item.mail"></el-input>
+                            </el-form-item>
+                        </el-col>
+                        <el-col :span="16">
+                            <el-form-item label="备注:" label-width="120px">
+                                <div style="display: flex;align-items: center;"><el-input
+                                        v-model="item.mark"></el-input>
+                                    <img style="width: 19px;height: 21px;cursor: pointer;margin-left: 26px;"
+                                        src="@/assets/delete.png" alt="">
+                                </div>
+                            </el-form-item>
+                        </el-col>
+                    </div>
                 </el-row>
                 <div class="company" style="margin-top: 6px;">常用收件信息
-                    <div class="btn"><img src="@/assets/add.png" alt="">新增收件人</div>
+                    <div class="btn" @click="addContact"><img src="@/assets/add.png" alt="">新增收件人</div>
                 </div>
-                <el-row :gutter="90" class="companyForm">
+                <el-row :gutter="90" class="companyForm" v-for="(item, index) in form.contactInfoList" :key="item">
                     <el-col :span="6.5">
-                        <el-form-item label="收件人姓名:">
-                            <el-input v-model="form.name"></el-input>
+                        <el-form-item label="收件人姓名:" :rules="[{ required: true, message: '请输入', trigger: 'change' }]"
+                            :prop="'contactInfoList.' + index + '.name'">
+                            <el-input v-model="item.name"></el-input>
                         </el-form-item>
                     </el-col>
-                    <el-col :span="6.5"><el-form-item label="收件人手机号:" label-width="120px">
-                            <el-input v-model="form.region"></el-input>
-                        </el-form-item></el-col>
-                    <el-col :span="6.5"><el-form-item label="收件人邮箱:">
-                            <el-input v-model="form.type"></el-input>
-                        </el-form-item></el-col>
-                    <el-col :span="20" style="padding-right: 73px;"><el-form-item label="收件人地址:">
-                            <el-input v-model="form.type"></el-input>
-                        </el-form-item></el-col>
-                    <el-col :span="20" style="padding-right: 73px;position: relative;"><el-form-item label="备注:">
+                    <el-col :span="6.5">
+                        <el-form-item label="收件人手机号:"
+                            :rules="[{ required: true, message: '请输入', trigger: 'change' }, { pattern: /^1[3456789]\d{9}$/, message: '请输入正确的手机号', trigger: 'change' }]"
+                            :prop="'contactInfoList.' + index + '.phone'">
+                            <el-input v-model="item.phone"></el-input>
+                        </el-form-item>
+                    </el-col>
+                    <el-col :span="6.5">
+                        <el-form-item label="收件人邮箱:"
+                            :rules="[{ required: true, message: '请输入', trigger: 'change' }, { type: 'email', message: '请输入正确的邮箱地址', trigger: 'change' }]"
+                            :prop="'contactInfoList.' + index + '.email'">
+                            <el-input v-model="item.email"></el-input>
+                        </el-form-item>
+                    </el-col>
+                    <el-col :span="20" style="padding-right: 52px;">
+                        <el-form-item label="收件人地址:" :rules="[{ required: true, message: '请输入', trigger: 'change' }]"
+                            :prop="'contactInfoList.' + index + '.address'">
+                            <el-input v-model="item.address"></el-input>
+                        </el-form-item>
+                    </el-col>
+                    <el-col :span="20" style="padding-right: 52px;position: relative;">
+                        <el-form-item label="备注:">
                             <div style="display: flex;align-items: center;"><el-input type="textarea" :rows="3"
-                                    v-model="form.region"></el-input>
+                                    v-model="item.mark"></el-input>
                                 <img style="width: 19px;height: 21px;cursor: pointer;position: absolute;right: -175px;"
                                     src="@/assets/delete.png" alt="">
                             </div>
-                        </el-form-item></el-col>
+                        </el-form-item>
+                    </el-col>
                 </el-row>
             </el-form>
             <div class="btns">
                 <el-button @click="$emit('close')">关闭</el-button>
-                <el-button type="primary">保存</el-button>
+                <el-button type="primary" @click="submit">保存</el-button>
             </div>
         </div>
     </el-dialog>
 </template>
 
 <script>
+import { mapState } from 'vuex'
 export default {
     props: ['show'],
     data() {
         return {
-            form: {
-                name: '',
-                region: '',
-                type: '',
-                email: ''
-            },
+            form: {},
             rules: {
-                email: [
-                    { required: true, message: '请选择活动区域', trigger: 'change' }
+                userName: [
+                    { required: true, message: '请输入姓名', trigger: 'change' }
+                ],
+                phone: [
+                    { required: true, message: '请输入手机号', trigger: 'change' },
+                    { pattern: /^1[3456789]\d{9}$/, message: '请输入正确的手机号', trigger: 'change' }
+                ],
+                userEmail: [
+                    { required: true, message: '请输入邮箱', trigger: 'change' }
                 ],
             }
         };
     },
+    computed: {
+        ...mapState(['userInfo'])
+    },
     watch: {
-        show(val) {
-            if (val) {
-                console.log(this.$store.state.userInfo, '111');
+        'show': {
+            handler(val) {
+                if (val) {
+                    this.open()
+                }
+            },
+            immediate: true
+        }
+    },
+    methods: {
+        // 提交
+        submit() {
+            this.$refs.form.validate((valid) => {
+                if (valid) {
+                    console.log(this.form);
+                }
+            })
+        },
+        // 打开
+        open() {
+            let userInfo = JSON.parse(JSON.stringify(this.userInfo));
+            this.form = {
+                userName: userInfo.userName,
+                phone: userInfo.phone,
+                userEmail: userInfo.userEmail,
+                otherEmails: userInfo.otherEmails,
+                contactInfoList: userInfo.contactInfoList,
             }
+        },
+        // 新增其他邮箱
+        addEmail() {
+            this.form.otherEmails.push({
+                email: '',
+                mark: ''
+            })
+        },
+        // 新增收件人
+        addContact() {
+            this.form.contactInfoList.push({
+                name: '',
+                phone: '',
+                email: '',
+                address: '',
+                mark: ''
+            })
         }
     }
 };
@@ -181,7 +249,7 @@
 
 /deep/ .el-form {
     .el-form-item__label {
-        font-size: 16px;
+        font-size: 15px;
         color: #3B3F56;
         font-weight: 500;
     }

--
Gitblit v1.7.1