refactor(erp): 调整客户添加页面样式和功能

- 优化客户添加页面的输入框样式
- 更新仓库选择和区域选择功能
- 修复电话号码验证逻辑
- 调整产品列表和选择组件的显示
- 修改区域选择组件的样式
- 更新私钥文件
This commit is contained in:
郑彪辉
2025-08-11 23:15:01 +08:00
parent 90adee4320
commit b8fbae24fb
6 changed files with 121 additions and 110 deletions

View File

@@ -1,27 +1,27 @@
-----BEGIN RSA PRIVATE KEY-----
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
-----END RSA PRIVATE KEY-----

View File

@@ -1,6 +1,7 @@
<template>
<view class="bg-[var(--page-bg-color)] min-h-[100vh] overflow-hidden form-edit" :style="themeColor()">
<u-form labelPosition="left" :model="formData" errorType='toast' :rules="rules" ref="formRef" labelWidth="180rpx">
<u-form labelPosition="left" :model="formData" errorType='toast' :rules="rules" ref="formRef"
labelWidth="180rpx">
<view class="sidebar-margin card-template mt-[var(--top-m)] py-[20rpx]">
<!-- <view>
<u-form-item :label="t('code')" prop="code" required borderBottom>
@@ -9,7 +10,8 @@
</view> -->
<view class="mt-[16rpx]">
<u-form-item :label="t('name')" prop="name" required borderBottom>
<u-input fontSize="28rpx" v-model.trim="formData.name" clearable placeholderStyle="color: #888" :placeholder="t('namePlaceholder')"/>
<u-input fontSize="28rpx" v-model.trim="formData.name" clearable placeholderStyle="color: #888"
:placeholder="t('namePlaceholder')" />
</u-form-item>
</view>
<view class="mt-[16rpx]">
@@ -26,17 +28,20 @@
</view>
<view class="mt-[16rpx]">
<u-form-item :label="t('contact')" prop="contact" required borderBottom>
<u-input fontSize="28rpx" v-model="formData.contact" :placeholder="t('contactPlaceholder')" ></u-input>
<u-input fontSize="28rpx" v-model="formData.contact"
:placeholder="t('contactPlaceholder')"></u-input>
</u-form-item>
</view>
<view class="mt-[16rpx]">
<u-form-item :label="t('phone')" prop="phone" required borderBottom>
<u-input fontSize="28rpx" v-model.trim="formData.phone" type="number" maxlength="11" clearable :placeholder="t('phonePlaceholder')" placeholderStyle="color: #888"/>
<u-input fontSize="28rpx" v-model.trim="formData.phone" type="number" maxlength="11" clearable
:placeholder="t('phonePlaceholder')" placeholderStyle="color: #888" />
</u-form-item>
</view>
<view class="mt-[16rpx]">
<u-form-item :label="t('telephone')" prop="telephone" borderBottom>
<u-input fontSize="28rpx" v-model="formData.telephone" :placeholder="t('telephonePlaceholder')" ></u-input>
<u-input fontSize="28rpx" v-model="formData.telephone"
:placeholder="t('telephonePlaceholder')"></u-input>
</u-form-item>
</view>
<view class="mt-[16rpx]">
@@ -53,20 +58,24 @@
</view>
<view class="mt-[16rpx]">
<u-form-item :label="t('address')" prop="address" borderBottom>
<u-input fontSize="28rpx" v-model="formData.address" clearable maxlength="120" :placeholder="t('addressPlaceholder')" placeholderStyle="color: #888"/>
<u-input fontSize="28rpx" v-model="formData.address" clearable maxlength="120"
:placeholder="t('addressPlaceholder')" placeholderStyle="color: #888" />
</u-form-item>
</view>
<view class="mt-[16rpx]">
<u-form-item :label="t('description')" prop="description">
<u-textarea fontSize="28rpx" v-model="formData.description" :placeholder="t('descriptionPlaceholder')" ></u-textarea>
<u-textarea fontSize="28rpx" v-model="formData.description"
:placeholder="t('descriptionPlaceholder')"></u-textarea>
</u-form-item>
</view>
</view>
</u-form>
<view class="w-full footer" v-if="hasPermission('erp_base_customer_add')">
<view class="py-[var(--top-m)] px-[var(--sidebar-m)] footer w-full fixed bottom-0 left-0 right-0 box-border">
<button hover-class="none" class="!bg-[var(--primary-color)] text-[#fff] h-[80rpx] leading-[80rpx] rounded-[100rpx] text-[26rpx] font-500"
<view
class="py-[var(--top-m)] px-[var(--sidebar-m)] footer w-full fixed bottom-0 left-0 right-0 box-border">
<button hover-class="none"
class="!bg-[var(--primary-color)] text-[#fff] h-[80rpx] leading-[80rpx] rounded-[100rpx] text-[26rpx] font-500"
@click="handSave" :disabled="loading" :class="{'opacity-50': loading}">{{t('save')}}</button>
</view>
</view>
@@ -134,7 +143,7 @@
},
{
validator(rule : any, value : any, callback : any) {
let mobile = /^1[3-9]\d{9}$/;
let mobile = new RegExp('^1[3-9]\d{9}$');
if (!mobile.test(value)) {
callback(new Error(t('mobileError')))
} else {
@@ -233,10 +242,12 @@
.form-edit :deep(.u-form-item__body__left__content__label) {
font-size: 28rpx !important;
}
.form-edit :deep(.u-form-item__body__right) {
display: flex;
align-items: center;
}
.footer {
height: calc(100rpx + var(--top-m) + var(--top-m) + constant(safe-area-inset-bottom)) !important;
height: calc(100rpx + var(--top-m) + var(--top-m) + env(safe-area-inset-bottom)) !important;

View File

@@ -34,10 +34,10 @@
{{ t('spec') }}:<text
class="ml-[20rpx] text-[var(--primary-color)]">{{item.spec}}</text>
</view>
<view class="flex justify-start mb-[18rpx] text-[12px] text-[#6a6a6a]">
<!-- <view class="flex justify-start mb-[18rpx] text-[12px] text-[#6a6a6a]">
{{ t('inventory') }}:<text
class="ml-[20rpx] text-[var(--primary-color)]">{{item.inventory}}</text>
</view>
</view> -->
<view class="flex justify-start mb-[18rpx] text-[12px] text-[#6a6a6a]">
{{ t('productUnitId') }}:<text
class="ml-[20rpx] text-[var(--primary-color)]">{{item.productUnit?.name}}</text>

View File

@@ -37,10 +37,10 @@
{{ t('spec') }}:<text
class="ml-[20rpx] text-[var(--primary-color)]">{{item.spec}}</text>
</view>
<view class="flex justify-start mb-[18rpx] text-[12px] text-[#6a6a6a]">
<!-- <view class="flex justify-start mb-[18rpx] text-[12px] text-[#6a6a6a]">
{{ t('inventory') }}:<text
class="ml-[20rpx] text-[var(--primary-color)]">{{item.inventory}}</text>
</view>
</view> -->
<view class="flex justify-start mb-[18rpx] text-[12px] text-[#6a6a6a]">
{{ t('productUnitId') }}:<text
class="ml-[20rpx] text-[var(--primary-color)]">{{item.productUnit?.name}}</text>

View File

@@ -47,7 +47,7 @@
"urlCheck" : true,
"es6" : true,
"postcss" : true,
"minified" : true
"minified" : false
},
"usingComponents" : true,
"permission" : {