Browse Source

feat(profile): 添加基本信息标签页和个人资料详情功能

- 实现了基本资料信息显示界面
- 集成了个人资料详情查看功能
- 添加了标签页导航组件
- 完善了用户个人信息展示逻辑
Lijingyang 1 month ago
parent
commit
5a763dcccc

+ 48 - 3
src/views/customer/info/components/BasicInfoTab.vue

@@ -88,7 +88,7 @@
         <el-row :gutter="12" class="form-row">
           <el-col :span="8">
             <el-form-item label="传真:">
-              <el-input v-model="detailData.fax" placeholder="请输入传真" />
+              <el-input v-model="detailData.fax" placeholder="请输入传真" @blur="onFaxBlur" />
             </el-form-item>
           </el-col>
           <el-col :span="8">
@@ -110,8 +110,8 @@
             </el-form-item>
           </el-col>
           <el-col :span="8">
-            <el-form-item label="邮政编码:">
-              <el-input v-model="detailData.postCode" placeholder="请输入邮政编码" />
+            <el-form-item label="邮政编码:" :error="postCodeError">
+              <el-input v-model="detailData.postCode" placeholder="请输入邮政编码" @blur="onPostCodeBlur" />
             </el-form-item>
           </el-col>
           <el-col :span="8">
@@ -310,6 +310,7 @@ const onOfficeRegionChange = (val: unknown) => {
 
 const fixedPhoneError = ref('');
 const fixedPhoneReg = /^(\d{3,4}-?)?\d{7,8}(-\d{1,6})?$/;
+const postCodeError = ref('');
 
 const validateFixedPhone = (val: unknown) => {
   const v = String(val ?? '').trim();
@@ -318,6 +319,20 @@ const validateFixedPhone = (val: unknown) => {
   return '';
 };
 
+const validatePostCode = (val: unknown) => {
+  const v = String(val ?? '').trim();
+  if (!v) return '';
+  if (!/^\d+$/.test(v)) return '邮政编码只能输入数字';
+  return '';
+};
+
+const validateFax = (val: unknown) => {
+  const v = String(val ?? '').trim();
+  if (!v) return '';
+  if (!/^\d+$/.test(v)) return '传真只能输入数字';
+  return '';
+};
+
 watch(
   () => props.detailData?.fixedPhone,
   (v) => {
@@ -326,10 +341,27 @@ watch(
   { immediate: true }
 );
 
+watch(
+  () => props.detailData?.postCode,
+  (v) => {
+    postCodeError.value = validatePostCode(v);
+  },
+  { immediate: true }
+);
+
 const onFixedPhoneBlur = () => {
   fixedPhoneError.value = validateFixedPhone(props.detailData?.fixedPhone);
 };
 
+const onPostCodeBlur = () => {
+  postCodeError.value = validatePostCode(props.detailData?.postCode);
+};
+
+const onFaxBlur = () => {
+  const err = validateFax(props.detailData?.fax);
+  if (err) ElMessage.warning(err);
+};
+
 const onSaveClick = () => {
   const err = validateFixedPhone(props.detailData?.fixedPhone);
   fixedPhoneError.value = err;
@@ -337,6 +369,19 @@ const onSaveClick = () => {
     ElMessage.warning(err);
     return;
   }
+
+  const postCodeErr = validatePostCode(props.detailData?.postCode);
+  postCodeError.value = postCodeErr;
+  if (postCodeErr) {
+    ElMessage.warning(postCodeErr);
+    return;
+  }
+
+  const faxErr = validateFax(props.detailData?.fax);
+  if (faxErr) {
+    ElMessage.warning(faxErr);
+    return;
+  }
   emit('save');
 };
 </script>

+ 13 - 5
src/views/supplier/none/index.vue

@@ -128,7 +128,7 @@ const data = reactive<{ queryParams: InfoQuery }>({
     city: undefined,
     productManager: undefined,
     buyer: undefined,
-    supplyStatus: 2, // 固定为2
+    supplyStatus: '2', // 固定为2
     params: {}
   }
 });
@@ -139,7 +139,7 @@ const { queryParams } = toRefs(data);
 const getList = async () => {
   loading.value = true;
   // 确保 supplyStatus 始终为 2
-  queryParams.value.supplyStatus = 2;
+  queryParams.value.supplyStatus = '2';
   const res = await getInfoList(queryParams.value);
   infoList.value = res.rows;
   total.value = res.total;
@@ -156,7 +156,7 @@ const handleQuery = () => {
 const resetQuery = () => {
   queryFormRef.value?.resetFields();
   // 重置后仍然保持 supplyStatus = 2
-  queryParams.value.supplyStatus = 2;
+  queryParams.value.supplyStatus = '2';
   handleQuery();
 }
 
@@ -174,7 +174,15 @@ const handleAdd = () => {
 
 /** 修改按钮操作 */
 const handleUpdate = async (row?: InfoVO) => {
-  // 修改逻辑
+  const router = proxy?.$router;
+  const _id = row?.id || ids.value[0];
+  router?.push({
+    path: '/customer/info/detail',
+    query: {
+      id: _id,
+      mode: 'edit'
+    }
+  });
 }
 
 /** 删除按钮操作 */
@@ -204,7 +212,7 @@ const handleStopCooperation = async (row: InfoVO) => {
     // 只传id和supplyStatus
     await updateInfo({ 
       id: row.id,
-      supplyStatus: 1 
+      supplyStatus: '1' 
     });
     proxy?.$modal.msgSuccess("恢复合作成功");
     await getList();