Kaynağa Gözat

增加人才数据字段
(增加年龄字段。增加籍贯字段。增加手机号码展示字段: 手机号码1,手机号码2,手机号码3)

lifanagju_citu 4 gün önce
ebeveyn
işleme
fa51252f4f

+ 76 - 7
src/views/menduner/system/talentMap/maintenance/gather/businessCard/FormPage.vue

@@ -34,9 +34,34 @@
         </el-col>
       </el-row>
       <el-row :gutter="10">
-        <el-col :span="24">
+        <el-col :span="12">
           <el-form-item label="生日" prop="birthday">
-            <el-input v-model="formQuery.birthday" placeholder="请输入出生日期" />
+            <!-- <el-input v-model="formQuery.birthday" placeholder="请输入出生日期" /> -->
+            <el-date-picker
+              v-model="formQuery.birthday"
+              :value-format="valueFormat"
+              type="date"
+              placeholder="请选择出生日期"
+              :disabledDate="disabledDates"
+              @change="birthdayChange"
+            />
+          </el-form-item>
+        </el-col>
+        <el-col :span="12">
+          <el-form-item label="籍贯" prop="birthplace">
+            <el-input v-model="formQuery.birthplace" placeholder="请输入籍贯" />
+          </el-form-item>
+        </el-col>
+      </el-row>
+      <el-row :gutter="10">
+        <el-col :span="12">
+          <el-form-item label="年龄" prop="age">
+            <el-input v-model="formQuery.age" placeholder="请输入年龄" />
+          </el-form-item>
+        </el-col>
+        <el-col :span="12">
+          <el-form-item label="电子邮箱" prop="email">
+            <el-input v-model="formQuery.email" placeholder="请输入电子邮箱" />
           </el-form-item>
         </el-col>
       </el-row>
@@ -52,19 +77,28 @@
       </el-row>
       <el-row :gutter="10">
         <el-col :span="12">
-          <el-form-item label="手机号码" prop="mobile">
-            <el-input v-model="formQuery.mobile" placeholder="请输入手机号码" />
+          <el-form-item label="手机号码1" prop="mobile">
+            <el-input v-model="formQuery.mobile[0]" placeholder="请输入手机号码" />
+          </el-form-item>
+        </el-col>
+        <el-col :span="12">
+          <el-form-item label="手机号码2" prop="mobile">
+            <el-input v-model="formQuery.mobile[1]" placeholder="请输入手机号码" />
           </el-form-item>
         </el-col>
+      </el-row>
+      <el-row :gutter="10">
         <el-col :span="12">
           <el-form-item label="固定电话" prop="phone">
             <el-input v-model="formQuery.phone" placeholder="请输入固定电话" />
           </el-form-item>
         </el-col>
+        <el-col :span="12">
+          <el-form-item label="手机号码3" prop="mobile">
+            <el-input v-model="formQuery.mobile[2]" placeholder="请输入手机号码" />
+          </el-form-item>
+        </el-col>
       </el-row>
-      <el-form-item label="电子邮箱" prop="email">
-        <el-input v-model="formQuery.email" placeholder="请输入电子邮箱" />
-      </el-form-item>
       <el-row>
         <div class="m-title">酒店/公司信息</div>
       </el-row>
@@ -205,9 +239,31 @@ const formQuery = ref({
 })
 const careerTrajectory = ref([{ hotel_zh: null,  title_zh: null, date: null }])
 
+// 保持电话数量为3
+function processVariable(input) {
+  if (Array.isArray(input)) {
+    // 如果是数组,保持长度为3
+    if (input.length > 3) {
+      return input.slice(0, 3); // 截取前3个元素
+    } else if (input.length < 3) {
+      // 填充到长度为3,用undefined填充
+      return input.concat(new Array(3 - input.length).fill(undefined));
+    }
+    return input; // 正好是3个元素,直接返回
+  } else if (typeof input === 'string') {
+    // 如果是字符串,转换为长度为3的数组
+    const result = new Array(3);
+    result[0] = input;
+    return result;
+  }
+  // 如果不是数组也不是字符串
+  return [undefined, undefined, undefined]
+}
+
 if (props.itemData) {
 	formQuery.value = cloneDeep(props.itemData)
 	careerTrajectory.value = cloneDeep(props.itemData?.career_path) ?? []
+  formQuery.value.mobile = processVariable(formQuery.value.mobile)
 }
 
 const addCareer = () => {
@@ -226,6 +282,19 @@ const disabledDates = (date) => {
   return date.getTime() > Date.now()
 }
 
+const valueFormat = 'YYYY-MM-DD'
+// 自动填充年龄
+const birthdayChange = (val) => {
+  if (!val) return
+  const birthDate = new Date(val);
+  const today = new Date();
+  let age = today.getFullYear() - birthDate.getFullYear();
+  const monthDiff = today.getMonth() - birthDate.getMonth();
+  // 如果当前月份小于出生月份,或者月份相同但日期小于出生日期,则年龄减1
+  if (monthDiff < 0 || (monthDiff === 0 && today.getDate() < birthDate.getDate())) age--;
+  formQuery.value.age = age;
+}
+
 defineExpose({
 	formQuery
 })

+ 4 - 161
src/views/menduner/system/talentMap/maintenance/gather/businessCard/index.vue

@@ -85,167 +85,6 @@
             </UploadImg>
           </div>
         </div>
-        <!-- <div class="formBox">
-          <el-form
-            :model="formQuery"
-            label-width="128px"
-            v-loading="formLoading"
-          >
-            <el-row>
-              <div class="m-title">基础信息</div>
-            </el-row>
-            <el-row :gutter="10">
-              <el-col :span="12">
-                <el-form-item label="姓名(中)" prop="name_zh">
-                  <el-input v-model="formQuery.name_zh" placeholder="请输入中文姓名" />
-                </el-form-item>
-              </el-col>
-              <el-col :span="12">
-                <el-form-item label="姓名(英)" prop="name_en">
-                  <el-input v-model="formQuery.name_en" placeholder="请输入英文姓名" />
-                </el-form-item>
-              </el-col>
-            </el-row>
-            <el-row :gutter="10">
-              <el-col :span="12">
-                <el-form-item label="职位/头衔(中)" prop="title_zh">
-                  <el-input v-model="formQuery.title_zh" placeholder="请输入中文职位/头衔" />
-                </el-form-item>
-              </el-col>
-              <el-col :span="12">
-                <el-form-item label="职位/头衔(英)" prop="title_en">
-                  <el-input v-model="formQuery.title_en" placeholder="请输入英文职位/头衔" />
-                </el-form-item>
-              </el-col>
-            </el-row>
-            <el-row :gutter="10">
-              <el-col :span="24">
-                <el-form-item label="生日" prop="birthday">
-                  <el-input v-model="formQuery.birthday" placeholder="请输入出生日期" />
-                </el-form-item>
-              </el-col>
-            </el-row>
-            <el-row :gutter="10">
-              <el-col :span="24">
-                <el-form-item label="居住地" prop="residence">
-                  <el-input v-model="formQuery.residence" placeholder="请输入当前居住地址" />
-                </el-form-item>
-              </el-col>
-            </el-row>
-            <el-row>
-              <div class="m-title">联系方式</div>
-            </el-row>
-            <el-row :gutter="10">
-              <el-col :span="12">
-                <el-form-item label="手机号码" prop="mobile">
-                  <el-input v-model="formQuery.mobile" placeholder="请输入手机号码" />
-                </el-form-item>
-              </el-col>
-              <el-col :span="12">
-                <el-form-item label="固定电话" prop="phone">
-                  <el-input v-model="formQuery.phone" placeholder="请输入固定电话" />
-                </el-form-item>
-              </el-col>
-            </el-row>
-            <el-form-item label="电子邮箱" prop="email">
-              <el-input v-model="formQuery.email" placeholder="请输入电子邮箱" />
-            </el-form-item>
-            <el-row>
-              <div class="m-title">酒店/公司信息</div>
-            </el-row>
-            <el-form-item label="酒店/公司名称(中)" prop="hotel_zh">
-              <el-input v-model="formQuery.hotel_zh" placeholder="请输入中文酒店/公司名称" />
-            </el-form-item>
-            <el-form-item label="酒店/公司名称(英)" prop="hotel_en">
-              <el-input v-model="formQuery.hotel_en" placeholder="请输入英文酒店/公司名称" />
-            </el-form-item>
-            <el-form-item label="品牌名称(中)" prop="brand_zh">
-              <el-input v-model="formQuery.brand_zh" placeholder="请输入中文品牌名称" />
-            </el-form-item>
-            <el-form-item label="品牌名称(英)" prop="brand_en">
-              <el-input v-model="formQuery.brand_en" placeholder="请输入英文品牌名称" />
-            </el-form-item>
-            <el-form-item label="隶属关系(中)" prop="affiliation_zh">
-              <el-input v-model="formQuery.affiliation_zh" placeholder="请输入中文隶属关系" />
-            </el-form-item>
-            <el-form-item label="隶属关系(英)" prop="affiliation_en">
-              <el-input v-model="formQuery.affiliation_en" placeholder="请输入英文隶属关系" />
-            </el-form-item>
-            <el-form-item label="品牌组合" prop="brand_group">
-              <el-input v-model="formQuery.brand_group" placeholder="请输入品牌组合" />
-            </el-form-item>
-            <el-row>
-              <div class="m-title">职业轨迹</div>
-            </el-row>
-            <el-row :gutter="10" class="trajectoryBox" v-for="(item, index) of careerTrajectory" :key="'trajectory' + index">
-              <el-col :span="20">
-                <el-form-item label="酒店名称" prop="hotel_zh" label-width="128px">
-                  <el-input v-model="item.hotel_zh" placeholder="请输入酒店名称" />
-                </el-form-item>
-                <el-form-item label="职位名称" prop="title_zh" label-width="128px">
-                  <el-input v-model="item.title_zh" placeholder="请输入职位名称" />
-                </el-form-item>
-                <el-form-item label="任职时间" prop="date">
-                  <el-date-picker
-                    v-model="item.date"
-                    value-format="YYYY-MM-DD"
-                    type="date"
-                    start-placeholder="开始日期"
-                    end-placeholder="结束日期"
-                  />
-                </el-form-item>
-              </el-col>
-              <el-col :span="4">
-                <div class="flex justify-center items-center !h-100%" style="flex-direction: column;">
-                  <el-button @click="addCareer(index)" type="primary" class="cursor-pointer" :icon="Plus" circle />
-                  <el-button
-                    v-if="careerTrajectory.length > 1"
-                    class="mt-15px ml-0 cursor-pointer"
-                    @click="removeCareer(index)"
-                    type="danger"
-                    :icon="Delete"
-                    circle
-                  />
-                </div>
-              </el-col>
-            </el-row>
-            <el-row>
-              <div class="m-title">地址信息</div>
-            </el-row>
-            <el-form-item label="中文地址" prop="address_zh">
-              <el-input v-model="formQuery.address_zh" placeholder="请输入中文地址" />
-            </el-form-item>
-            <el-form-item label="英文地址" prop="address_en">
-              <el-input v-model="formQuery.address_en" placeholder="请输入英文地址" />
-            </el-form-item>
-            <el-row :gutter="10">
-              <el-col :span="12">
-                <el-form-item label="邮政编码(中)" prop="postal_code_zh">
-                  <el-input v-model="formQuery.postal_code_zh" placeholder="请输入中文邮政编码" />
-                </el-form-item>
-              </el-col>
-              <el-col :span="12">
-                <el-form-item label="邮政编码(英)" prop="postal_code_en">
-                  <el-input v-model="formQuery.postal_code_en" placeholder="请输入英文邮政编码" />
-                </el-form-item>
-              </el-col>
-            </el-row>
-            <el-row v-if="formType === 'edit'">
-              <div class="m-title">系统信息</div>
-            </el-row>
-            <el-form-item v-if="formType === 'edit'" label="状态">
-               <el-tag v-if="itemData.status" :type="itemData.status === 'active' ? 'success' : 'danger'">
-                {{ itemData.status === 'active' ? '已启用' : '已禁用' }}
-              </el-tag>
-            </el-form-item>
-            <el-form-item label="创建时间" v-if="formType === 'edit'">
-              <el-tag v-if="itemData.created_at" type="primary" effect="light">{{ itemData.created_at }}</el-tag>
-            </el-form-item>
-            <el-form-item label="更新时间" v-if="formType === 'edit'">
-              <el-tag v-if="itemData.updated_at" type="primary" effect="light">{{ itemData.updated_at }}</el-tag>
-            </el-form-item>
-          </el-form>
-        </div> -->
         <FormPage ref="FormPageRef" :formType="formType" :itemData="itemData" />
       </div>
       <template #footer>
@@ -421,6 +260,10 @@ const FormPageRef = ref(null)
 const mergeFormRef = ref() // 合并表单 Ref
 const handleSave = async () => {
   const params = FormPageRef.value.formQuery
+  // 等后端改接口,目前接口是字符串,非数组
+  params.mobile = params.mobile[0]
+  // const filtered = params.mobile.filter(e => e !== undefined && e !== null && e !== '')
+  // params.mobile = filtered?.length > 1 ? filtered : filtered[0]
   console.log(params, 'handleSubmit')
   try {
     formLoading.value = true