From e658a198bc5f31666e6ddc6af6779e9eefff8623 Mon Sep 17 00:00:00 2001 From: lion <120344285@qq.com> Date: Sat, 11 Oct 2025 15:48:36 +0800 Subject: [PATCH] =?UTF-8?q?=E5=AF=BC=E8=88=AA?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- common/config.js | 4 +- package_sub/pages/quality/quality.vue | 204 ++++++++++++++++++++++++-- 2 files changed, 191 insertions(+), 17 deletions(-) diff --git a/common/config.js b/common/config.js index 140a0ce..64e9970 100644 --- a/common/config.js +++ b/common/config.js @@ -1,7 +1,7 @@ const mode = process.env.NODE_ENV; // const mode = 'development'; -let ROOTPATH = 'https://sstt.ali251.langye.net'; //域名 -// let ROOTPATH = 'https://sstt.115.langye.net'; //域名 +// let ROOTPATH = 'https://sstt.ali251.langye.net'; //域名 +let ROOTPATH = 'https://sstt.115.langye.net'; //域名 switch (mode) { case 'development': // ROOTPATH = "https://sstt.ali251.langye.net" diff --git a/package_sub/pages/quality/quality.vue b/package_sub/pages/quality/quality.vue index ea1c423..8d7def7 100644 --- a/package_sub/pages/quality/quality.vue +++ b/package_sub/pages/quality/quality.vue @@ -29,19 +29,29 @@ - + - - - - + + + 回访 + {{ getCallbackLabel(select.has_quality_callbacks) }} + + + + 状态 + {{ getDeadLabel(select.is_dead) }} + + + - + - - - + + 产品类型 + {{ getProductTypeLabel(select.product_type_id) }} + + @@ -103,10 +113,17 @@ - 质控回访 + + 质控回访 + 去这里 + @@ -121,6 +138,34 @@ + + + + + + + 附近客户 @@ -153,6 +198,23 @@ export default { productTypeOptions: [ { label: '全部', value: 'all' } ], + // 底部弹出选择器相关 + showCallbackPicker: false, + showDeadPicker: false, + showProductTypePicker: false, + callbackPickerData: [ + { label: '全部', value: 'all' }, + { label: '无回访', value: 0 }, + { label: '有回访', value: 1 }, + ], + deadPickerData: [ + { label: '全部', value: 'all' }, + { label: '正常', value: 0 }, + { label: '死亡', value: 1 }, + ], + productTypePickerData: [ + { label: '全部', value: 'all' } + ], optionsStatus: [{ label: '全部', value: '' @@ -215,6 +277,7 @@ export default { this.productTypeOptions = [{ label: '全部', value: 'all' }].concat( (list || []).map(it => ({ label: it.name, value: it.id })) ) + this.productTypePickerData = this.productTypeOptions } catch (e) { // ignore } @@ -292,6 +355,66 @@ export default { uni.navigateTo({ url }) + }, + // 获取标签显示文本 + getCallbackLabel(value) { + const item = this.callbackPickerData.find(item => item.value === value) + return item ? item.label : '全部' + }, + getDeadLabel(value) { + const item = this.deadPickerData.find(item => item.value === value) + return item ? item.label : '全部' + }, + getProductTypeLabel(value) { + const item = this.productTypePickerData.find(item => item.value === value) + return item ? item.label : '全部' + }, + // 选择器确认回调 + onCallbackConfirm(e) { + const selectedItem = this.callbackPickerData[e[0]] + this.select.has_quality_callbacks = selectedItem.value + this.showCallbackPicker = false + }, + onDeadConfirm(e) { + const selectedItem = this.deadPickerData[e[0]] + this.select.is_dead = selectedItem.value + this.showDeadPicker = false + }, + onProductTypeConfirm(e) { + const selectedItem = this.productTypePickerData[e[0]] + this.select.product_type_id = selectedItem.value + this.showProductTypePicker = false + }, + // 打开地图导航 + openMapNavigation(customerAddress) { + const defaultAddr = this.defaultAddress(customerAddress) + const lat = defaultAddr.lat + const lng = defaultAddr.lng + + if (!lat || !lng) { + uni.showToast({ + icon: 'none', + title: '地址缺少经纬度信息,无法导航' + }) + return + } + + // 打开地图导航 + uni.openLocation({ + latitude: parseFloat(lat), + longitude: parseFloat(lng), + name: defaultAddr.address || '客户地址', + success: () => { + console.log('打开地图成功') + }, + fail: (err) => { + console.error('打开地图失败', err) + uni.showToast({ + icon: 'none', + title: '打开地图失败' + }) + } + }) } }, computed: { @@ -435,6 +558,41 @@ export default { margin-top: 20rpx; } +.picker-row { + display: flex; + justify-content: space-between; +} + +.picker-item { + width: 340rpx; + height: 70rpx; + background: #FFFFFF; + border: 2rpx solid #FAFBFC; + border-radius: 10rpx; + display: flex; + align-items: center; + justify-content: space-between; + padding: 0 20rpx; + box-sizing: border-box; +} + +.picker-item.full-width { + width: 100%; +} + +.picker-label { + font-size: 28rpx; + color: #333; + font-weight: 500; +} + +.picker-value { + font-size: 28rpx; + color: #666; + flex: 1; + text-align: center; +} + .nursing-list { margin-top: 10rpx; @@ -538,12 +696,20 @@ export default { color: #36596A; line-height: 40rpx; display: flex; + align-items: center; margin-top: 14rpx; .text { - + flex: 1; + margin-left: 10rpx; + } + + .nav-btn { margin-left: 10rpx; + padding: 8rpx; + border-radius: 50%; + background: rgba(20, 121, 255, 0.1); } } } @@ -587,6 +753,14 @@ export default { margin-top: 16rpx; padding-bottom: 26rpx; + .button-group { + width: 100%; + display: flex; + justify-content: space-between; + align-items: center; + padding: 0 20rpx; + } + .distance { align-items: center; display: flex; @@ -635,7 +809,7 @@ export default { .nearby-fab { position: fixed; right: 32rpx; - bottom: 120rpx; + bottom: 320rpx; width: 140rpx; height: 140rpx; background: #1479FF;