优化产品的选择
This commit is contained in:
@@ -47,6 +47,14 @@ export default defineUniPages({
|
|||||||
{ path: 'audit/list', style: { navigationBarTitleText: '审核列表' } },
|
{ path: 'audit/list', style: { navigationBarTitleText: '审核列表' } },
|
||||||
{ path: 'audit/detail', style: { navigationBarTitleText: '审核详情' } },
|
{ path: 'audit/detail', style: { navigationBarTitleText: '审核详情' } },
|
||||||
{ path: 'customer/list', style: { navigationBarTitleText: '客户管理' } },
|
{ path: 'customer/list', style: { navigationBarTitleText: '客户管理' } },
|
||||||
|
{ path: 'customer/detail', style: { navigationBarTitleText: '客户详情' } },
|
||||||
|
{ path: 'customer/transaction-list', style: { navigationBarTitleText: '交易记录' } },
|
||||||
|
{ path: 'customer/withdraw-list', style: { navigationBarTitleText: '提现记录' } },
|
||||||
|
{ path: 'report/list', style: { navigationBarTitleText: '报表列表' } },
|
||||||
|
{ path: 'report/download', style: { navigationBarTitleText: '报表下载' } },
|
||||||
|
{ path: 'visit/list', style: { navigationBarTitleText: '拜访计划' } },
|
||||||
|
{ path: 'visit/create', style: { navigationBarTitleText: '创建拜访' } },
|
||||||
|
{ path: 'visit/detail', style: { navigationBarTitleText: '拜访详情' } },
|
||||||
{ path: 'me/index', style: { navigationBarTitleText: '银行中心' } },
|
{ path: 'me/index', style: { navigationBarTitleText: '银行中心' } },
|
||||||
],
|
],
|
||||||
},
|
},
|
||||||
|
|||||||
@@ -69,6 +69,20 @@ function toggleProduct(productId: string) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// 获取产品名称
|
||||||
|
function getProductName(productId: string): string {
|
||||||
|
const product = products.value.find(p => p.id === productId)
|
||||||
|
return product?.name || ''
|
||||||
|
}
|
||||||
|
|
||||||
|
// 移除产品
|
||||||
|
function removeProduct(productId: string) {
|
||||||
|
const index = formData.value.productIds.indexOf(productId)
|
||||||
|
if (index > -1) {
|
||||||
|
formData.value.productIds.splice(index, 1)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
// 表单验证
|
// 表单验证
|
||||||
function validateForm(): boolean {
|
function validateForm(): boolean {
|
||||||
if (!formData.value.date) {
|
if (!formData.value.date) {
|
||||||
@@ -154,13 +168,22 @@ onMounted(() => {
|
|||||||
</view>
|
</view>
|
||||||
|
|
||||||
<!-- 营销产品 -->
|
<!-- 营销产品 -->
|
||||||
<view class="form-item" @click="showProductPicker = true">
|
<view class="form-item">
|
||||||
<view class="label">营销产品</view>
|
<view class="label">营销产品</view>
|
||||||
<view class="value-input">
|
<view class="product-tags-container" @click="showProductPicker = true">
|
||||||
<text :class="{ placeholder: formData.productIds.length === 0 }">
|
<view v-if="formData.productIds.length === 0" class="placeholder">请选择</view>
|
||||||
{{ formData.productIds.length > 0 ? `已选${formData.productIds.length}个` : '请选择' }}
|
<view v-else class="product-tags">
|
||||||
</text>
|
<view
|
||||||
<text class="i-carbon-chevron-right"></text>
|
v-for="productId in formData.productIds"
|
||||||
|
:key="productId"
|
||||||
|
class="product-tag"
|
||||||
|
@click.stop="removeProduct(productId)"
|
||||||
|
>
|
||||||
|
<text class="tag-name">{{ getProductName(productId) }}</text>
|
||||||
|
<text class="tag-close i-carbon-close"></text>
|
||||||
|
</view>
|
||||||
|
</view>
|
||||||
|
<text class="i-carbon-chevron-right picker-icon"></text>
|
||||||
</view>
|
</view>
|
||||||
</view>
|
</view>
|
||||||
|
|
||||||
@@ -293,6 +316,65 @@ onMounted(() => {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
.product-tags-container {
|
||||||
|
display: flex;
|
||||||
|
align-items: center;
|
||||||
|
justify-content: space-between;
|
||||||
|
min-height: 40rpx;
|
||||||
|
|
||||||
|
.placeholder {
|
||||||
|
color: #adb5bd;
|
||||||
|
font-size: 28rpx;
|
||||||
|
}
|
||||||
|
|
||||||
|
.product-tags {
|
||||||
|
display: flex;
|
||||||
|
flex-wrap: wrap;
|
||||||
|
gap: 12rpx;
|
||||||
|
flex: 1;
|
||||||
|
margin-right: 16rpx;
|
||||||
|
|
||||||
|
.product-tag {
|
||||||
|
display: inline-flex;
|
||||||
|
align-items: center;
|
||||||
|
background: linear-gradient(135deg, #e6f7ff 0%, #f0f9ff 100%);
|
||||||
|
border: 1rpx solid #bae7ff;
|
||||||
|
border-radius: 8rpx;
|
||||||
|
padding: 8rpx 16rpx;
|
||||||
|
font-size: 24rpx;
|
||||||
|
color: #0050b3;
|
||||||
|
|
||||||
|
.tag-name {
|
||||||
|
margin-right: 8rpx;
|
||||||
|
}
|
||||||
|
|
||||||
|
.tag-close {
|
||||||
|
display: flex;
|
||||||
|
align-items: center;
|
||||||
|
justify-content: center;
|
||||||
|
width: 28rpx;
|
||||||
|
height: 28rpx;
|
||||||
|
border-radius: 50%;
|
||||||
|
background: rgba(0, 80, 179, 0.1);
|
||||||
|
color: #0050b3;
|
||||||
|
font-size: 20rpx;
|
||||||
|
transition: all 0.2s;
|
||||||
|
|
||||||
|
&:active {
|
||||||
|
background: rgba(0, 80, 179, 0.2);
|
||||||
|
transform: scale(0.9);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
.picker-icon {
|
||||||
|
color: #adb5bd;
|
||||||
|
font-size: 32rpx;
|
||||||
|
flex-shrink: 0;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
.input {
|
.input {
|
||||||
width: 100%;
|
width: 100%;
|
||||||
font-size: 28rpx;
|
font-size: 28rpx;
|
||||||
|
|||||||
Reference in New Issue
Block a user