From ce66b28fd4463c905ead497b8f2d4e439cc42ff2 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=88=98=E4=BD=B3=E5=AE=87?= <17601616548@163.com> Date: Thu, 26 Sep 2024 01:48:09 +0800 Subject: [PATCH] =?UTF-8?q?=E8=AF=A6=E6=83=85=E9=80=BB=E8=BE=91=E8=B7=91?= =?UTF-8?q?=E9=80=9A=EF=BC=8C=E9=A2=84=E7=BA=A6=E6=97=B6=E9=97=B4+?= =?UTF-8?q?=E9=80=89=E6=8B=A9=E5=8C=BB=E7=94=9F+=E6=8A=A5=E5=91=8A?= =?UTF-8?q?=E6=9F=A5=E8=AF=A2+=E6=8A=A5=E5=91=8A=E8=AF=A6=E6=83=85?= =?UTF-8?q?=E9=A1=B5=E9=9D=A2=E6=8E=A5=E5=8F=A3=E5=AE=8C=E6=88=90?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- h5/pages.json | 76 +- h5/pages/main/bgcx/bgcx.vue | 235 +++ h5/pages/main/bgcx/bgdb/bgdb.vue | 49 + h5/pages/main/bgcx/bgjd/bgjd.vue | 49 + h5/pages/main/bgcx/ckbg/ckbg.vue | 505 ++++++ h5/pages/main/bgcx/qsfx/qsfx.vue | 49 + h5/pages/main/combo/combo.vue | 1454 +++++++++-------- h5/pages/main/index/index.vue | 3 +- h5/pages/main/optionalProject/choose.vue | 10 +- h5/pages/main/optionalProject/combo.vue | 709 ++++++++ .../main/optionalProject/optionalDetails.vue | 144 +- .../main/optionalProject/optionalProject.vue | 203 ++- h5/pages/main/optionalProject/selectType.vue | 6 +- h5/pages/main/selectDoctor/selectDoctor.vue | 121 ++ h5/pages/main/yytjsj/yytjsj.vue | 265 +++ h5/static/assets/slices/avatar.png | Bin 0 -> 93580 bytes h5/static/assets/slices/bgdb.png | Bin 0 -> 19547 bytes h5/static/assets/slices/bgjd.png | Bin 0 -> 20316 bytes h5/static/assets/slices/xsfx.png | Bin 0 -> 20762 bytes h5/store/index.js | 25 +- 20 files changed, 3114 insertions(+), 789 deletions(-) create mode 100755 h5/pages/main/bgcx/bgcx.vue create mode 100755 h5/pages/main/bgcx/bgdb/bgdb.vue create mode 100755 h5/pages/main/bgcx/bgjd/bgjd.vue create mode 100755 h5/pages/main/bgcx/ckbg/ckbg.vue create mode 100755 h5/pages/main/bgcx/qsfx/qsfx.vue create mode 100644 h5/pages/main/optionalProject/combo.vue create mode 100755 h5/pages/main/selectDoctor/selectDoctor.vue create mode 100755 h5/pages/main/yytjsj/yytjsj.vue create mode 100755 h5/static/assets/slices/avatar.png create mode 100755 h5/static/assets/slices/bgdb.png create mode 100755 h5/static/assets/slices/bgjd.png create mode 100755 h5/static/assets/slices/xsfx.png diff --git a/h5/pages.json b/h5/pages.json index c260ceb..d42f5a2 100644 --- a/h5/pages.json +++ b/h5/pages.json @@ -90,27 +90,73 @@ } }, { - "path" : "pages/main/order/CheckPay", - "style" : - { - "navigationBarTitleText" : "", - "enablePullDownRefresh" : false + "path": "pages/main/order/CheckPay", + "style": { + "navigationBarTitleText": "", + "enablePullDownRefresh": false + } + }, + { + "path": "pages/main/optionalProject/choose", + "style": { + "navigationBarTitleText": "团检预约", + "enablePullDownRefresh": false + } + }, + { + "path": "pages/main/optionalProject/selectType", + "style": { + "navigationBarTitleText": "团检预约", + "enablePullDownRefresh": false + } + }, + { + "path": "pages/main/optionalProject/combo", + "style": { + "navigationBarTitleText": "套餐列表", + "enablePullDownRefresh": false + } + }, + { + "path": "pages/main/bgcx/bgcx", + "style": { + "navigationBarTitleText": "报告查询" } }, { - "path" : "pages/main/optionalProject/choose", - "style" : - { - "navigationBarTitleText" : "团检预约", - "enablePullDownRefresh" : false + "path": "pages/main/bgcx/bgjd/bgjd", + "style": { + "navigationBarTitleText": "报告解读" + } + }, + { + "path": "pages/main/bgcx/bgdb/bgdb", + "style": { + "navigationBarTitleText": "报告对比" + } + }, + { + "path": "pages/main/bgcx/ckbg/ckbg", + "style": { + "navigationBarTitleText": "查看报告" } }, { - "path" : "pages/main/optionalProject/selectType", - "style" : - { - "navigationBarTitleText" : "团检预约", - "enablePullDownRefresh" : false + "path": "pages/main/bgcx/qsfx/qsfx", + "style": { + "navigationBarTitleText": "趋势分析" + } + }, + { + "path": "pages/main/selectDoctor/selectDoctor", + "style": { + "navigationBarTitleText": "选择医生" + } + }, + { + "path": "pages/main/yytjsj/yytjsj", + "style": { + "navigationBarTitleText": "体检预约" } } ], diff --git a/h5/pages/main/bgcx/bgcx.vue b/h5/pages/main/bgcx/bgcx.vue new file mode 100755 index 0000000..e17be6c --- /dev/null +++ b/h5/pages/main/bgcx/bgcx.vue @@ -0,0 +1,235 @@ + + + diff --git a/h5/pages/main/bgcx/bgdb/bgdb.vue b/h5/pages/main/bgcx/bgdb/bgdb.vue new file mode 100755 index 0000000..dd2f9db --- /dev/null +++ b/h5/pages/main/bgcx/bgdb/bgdb.vue @@ -0,0 +1,49 @@ + + + \ No newline at end of file diff --git a/h5/pages/main/bgcx/bgjd/bgjd.vue b/h5/pages/main/bgcx/bgjd/bgjd.vue new file mode 100755 index 0000000..dd2f9db --- /dev/null +++ b/h5/pages/main/bgcx/bgjd/bgjd.vue @@ -0,0 +1,49 @@ + + + \ No newline at end of file diff --git a/h5/pages/main/bgcx/ckbg/ckbg.vue b/h5/pages/main/bgcx/ckbg/ckbg.vue new file mode 100755 index 0000000..a372e07 --- /dev/null +++ b/h5/pages/main/bgcx/ckbg/ckbg.vue @@ -0,0 +1,505 @@ + + + diff --git a/h5/pages/main/bgcx/qsfx/qsfx.vue b/h5/pages/main/bgcx/qsfx/qsfx.vue new file mode 100755 index 0000000..dd2f9db --- /dev/null +++ b/h5/pages/main/bgcx/qsfx/qsfx.vue @@ -0,0 +1,49 @@ + + + \ No newline at end of file diff --git a/h5/pages/main/combo/combo.vue b/h5/pages/main/combo/combo.vue index 3334947..9fe8e2c 100644 --- a/h5/pages/main/combo/combo.vue +++ b/h5/pages/main/combo/combo.vue @@ -1,709 +1,755 @@ \ No newline at end of file +.select_done_wrapper { + color: #ffffff; + background: #239ea3; + width: calc(100% - 60rpx); + margin: 50rpx auto 0; + height: 50rpx; + line-height: 50rpx; + text-align: center; + border-radius: 6rpx; +} + +.select_group_item_wrapper { + padding: 10rpx 20rpx; + border: 1rpx solid #239ea3; + font-size: 22rpx; + margin: 20rpx 20rpx 0 0; + border-radius: 6rpx; + color: #239ea3; +} + +.select_group_item_wrapper.active { + color: #ffffff; + background: #239ea3; +} + +.select_group_line_wrapper { + display: flex; + align-items: center; + flex-wrap: wrap; +} + +.select_group_title_wrapper { + font-size: 30rpx; + font-weight: bold; +} + +.select_group_wrapper { + margin: 20rpx; +} + +.list_wrapper { + padding-top: 30rpx; + height: calc(100vh - 100rpx - 10rpx - 70rpx - 80rpx - 30rpx - 30rpx); + width: 750rpx; + overflow-y: auto; + padding-bottom: 30rpx; + margin: 0 auto; + overflow-x: hidden; + -ms-overflow-style: none; + scrollbar-width: none; + overflow: -moz-scrollbars-none; + overflow-y: scroll; +} + +.list_wrapper::-webkit-scrollbar { + display: none; +} + +.combo_line_wrapper { + width: 710rpx; + height: 1rpx; + background: #e1ecee; + margin: 15rpx auto 0; +} + +.combo_pick_button_wrapper { + width: 160rpx; + height: 60rpx; + background: #e1ecee; + border-radius: 30rpx; + font-weight: 400; + font-size: 28rpx; + color: #239ea3; + text-align: center; + line-height: 60rpx; +} + +.combo_buy_button_wrapper { + width: 160rpx; + height: 60rpx; + background: #239ea3; + border-radius: 30rpx; + font-weight: 400; + font-size: 28rpx; + color: #ffffff; + text-align: center; + line-height: 60rpx; + margin-left: 32rpx; + margin-right: 20rpx; +} + +.combo_button_wrapper { + display: flex; + align-items: center; + justify-content: end; + margin-top: 27rpx; +} + +.combo_count_wrapper { + font-weight: 500; + font-size: 18rpx; + color: #8b8b8b; + line-height: 1; +} + +.combo_original_price_wrapper { + font-weight: 500; + font-size: 18rpx; + color: #8b8b8b; + line-height: 1; + text-decoration-line: line-through; + margin-left: 10rpx; +} + +.combo_true_price_wrapper { + font-weight: 500; + font-size: 18rpx; + color: #ec3d15; + line-height: 1; +} + +.combo_true_price_number_wrapper { + font-size: 38rpx; +} + +.combo_price_wrapper { + display: flex; + align-items: end; + justify-content: space-between; + margin-top: 21rpx; +} + +.combo_price_box_wrapper { + display: flex; + align-items: end; +} + +.combo_wrapper { + height: 307rpx; + width: 750rpx; + margin: 0 auto; +} + +.combo_tags_wrapper { + display: flex; + align-items: center; + margin-top: 13rpx; +} + +.combo_desc_wrapper { + font-weight: 500; + font-size: 20rpx; + color: #8b8b8b; + line-height: 1; + margin-top: 18rpx; +} + +.combo_tag_wrapper { + padding-left: 13rpx; + padding-right: 13rpx; + height: 30rpx; + line-height: 30rpx; + border-radius: 5rpx; + font-weight: 400; + font-size: 18rpx; + color: #47abd8; + margin-right: 8rpx; +} + +.combo_name_wrapper { + font-weight: 400; + font-size: 32rpx; + color: #0e0e0e; + line-height: 1; +} + +.combo_content_wrapper { + margin-left: 30rpx; + width: calc(750rpx - 190rpx - 30rpx - 20rpx - 55rpx); +} + +.combo_info_wrapper { + display: flex; + align-items: center; + width: 750rpx; + margin: 0 auto; +} + +.combo_cover_wrapper { + width: 190rpx; + height: 190rpx; + margin-left: 20rpx; +} + +.combo_cover_wrapper image { + width: 190rpx; + height: 190rpx; + display: block; + object-fit: contain; +} + +.select_item_line_wrapper { + position: absolute; + width: 95rpx; + height: 10rpx; + background: linear-gradient(to bottom, #ffffff00, #1b9a9f); + border-radius: 5rpx; + bottom: 0; + left: 50%; + transform: translateX(calc(-50% - 8px)); + opacity: 0; +} + +.select_wrapper { + display: flex; + align-items: center; + justify-content: space-between; + width: 750rpx; + height: 80rpx; + background: #f1f7f7; + box-shadow: 0rpx -1rpx 1rpx 0rpx rgba(0, 0, 0, 0.1); + margin: 0 auto; +} + +.select_item_icon_wrapper { + width: 18rpx; + height: 9rpx; + margin-left: 9rpx; + filter: grayscale(100%); +} + +.select_item_icon_wrapper image { + width: 18rpx; + height: 9rpx; + display: block; + object-fit: contain; +} + +.select_item_icon2_wrapper { + width: 26rpx; + height: 23rpx; + margin-left: 7rpx; +} + +.select_item_icon2_wrapper image { + width: 26rpx; + height: 23rpx; + display: block; + object-fit: contain; +} + +.select_item_name_wrapper { + font-weight: 400; + font-size: 26rpx; + color: #2f2f2f; + line-height: 1; +} + +.select_item_wrapper { + width: 25%; + display: flex; + align-items: center; + justify-content: center; + position: relative; + height: 80rpx; +} + +.select_item_wrapper.active .select_item_name_wrapper { + color: #239ea3; + font-weight: bold; +} + +.select_item_wrapper.active .select_item_icon_wrapper { + filter: grayscale(0%); +} + +.select_item_wrapper.active .select_item_line_wrapper { + opacity: 1; +} + +.doctor_name_wrapper { + font-weight: 400; + font-size: 24rpx; + line-height: 1; + color: #ffffff; + border-bottom: 1rpx solid #ffffff; +} + +.doctor_tip_wrapper { + font-weight: 400; + font-size: 22rpx; + line-height: 1; + color: #ffffff; +} + +.doctor_wrapper { + display: flex; + align-items: center; + width: 710rpx; + height: 70rpx; + background: #28b7c1; + border-radius: 15rpx 15rpx 0rpx 0rpx; + padding-left: 24rpx; + margin: 10rpx auto 0; +} + +.user_choose_wrapper { + width: 50rpx; + height: 50rpx; + margin-left: 30rpx; +} + +.user_choose_wrapper image { + width: 50rpx; + height: 50rpx; + display: block; + object-fit: contain; +} + +.user_title_wrapper { + font-weight: 400; + font-size: 28rpx; + color: #239ea3; + line-height: 1; +} + +.user_name_wrapper { + font-weight: 400; + font-size: 28rpx; + color: #0d0d0d; + line-height: 1; +} + +.user_wrapper { + height: 80rpx; + padding-left: 40rpx; + padding-right: 20rpx; + background: #ffffff; + border-radius: 40rpx 0 0 40rpx; + display: flex; + align-items: center; + justify-content: center; +} + +.header_wrapper { + display: flex; + align-items: center; + justify-content: space-between; + width: 750rpx; + height: 100rpx; + background: #d8edf2; + margin: 0 auto; +} + +.hospital_wrapper { + display: flex; + align-items: center; + width: 50%; +} + +.hospital_icon_wrapper { + width: 48rpx; + height: 48rpx; + margin-left: 20rpx; +} + +.hospital_icon_wrapper image { + width: 48rpx; + height: 48rpx; + display: block; + object-fit: contain; +} + +.hospital_name_wrapper { + font-weight: 400; + font-size: 28rpx; + color: #484747; + margin-left: 9rpx; + line-height: 1; +} + +.hospital_select_wrapper { + width: 24rpx; + height: 14rpx; + margin-left: 19rpx; +} + +.hospital_select_wrapper image { + width: 24rpx; + height: 14rpx; + display: block; + object-fit: contain; +} + diff --git a/h5/pages/main/index/index.vue b/h5/pages/main/index/index.vue index 28ad8cd..3e9cbb4 100644 --- a/h5/pages/main/index/index.vue +++ b/h5/pages/main/index/index.vue @@ -24,7 +24,8 @@ const getUserInfo = async () => { const response = await $api('UserInfo') $response(response, () => { - $store.user = response.data.info + // $store.user = response.data.info + $store.setUser(response.data.info); }) } const switch_arr = [ diff --git a/h5/pages/main/optionalProject/choose.vue b/h5/pages/main/optionalProject/choose.vue index 95e1113..99db269 100644 --- a/h5/pages/main/optionalProject/choose.vue +++ b/h5/pages/main/optionalProject/choose.vue @@ -41,7 +41,6 @@ const choosePersonClick = async (info) => { popup.value.open("bottom"); } if (response.data.unit.length == 1) { - // selectUnit(response.data.unit[0]); getGroupCombo(response.data.unit[0]); } }); @@ -59,12 +58,13 @@ const getGroupCombo = async (info) => { let data = response.data.unit[0]; $store.setGroupInfo(data); if (!data.items.length && data.tongshou_xiane > 0) { - // 跳转到选择类似上 + // 跳转到选择类似上 uni.navigateTo({ url: "/pages/main/optionalProject/selectType" }); } else { + // 跳转到团检自选 uni.navigateTo({ url: "/pages/main/optionalProject/optionalDetails?groupId=" + @@ -74,12 +74,6 @@ const getGroupCombo = async (info) => { } }); }; -const selectUnit = async (info) => { - popup.value.close(); - uni.navigateTo({ - url: "/pages/main/optionalProject/optionalDetails?groupId=" + info.group_id, - }); -}; onShow(() => { if (!!config_ref.value) { diff --git a/h5/pages/main/optionalProject/combo.vue b/h5/pages/main/optionalProject/combo.vue new file mode 100644 index 0000000..7ba98b8 --- /dev/null +++ b/h5/pages/main/optionalProject/combo.vue @@ -0,0 +1,709 @@ + + + \ No newline at end of file diff --git a/h5/pages/main/optionalProject/optionalDetails.vue b/h5/pages/main/optionalProject/optionalDetails.vue index 8a55f5d..283e36f 100644 --- a/h5/pages/main/optionalProject/optionalDetails.vue +++ b/h5/pages/main/optionalProject/optionalDetails.vue @@ -10,6 +10,8 @@ import { onShow } from "@dcloudio/uni-app"; import { useStore } from "@/store"; const $store = useStore(); +// groupId + let comboInfo = ref({}); // 套餐详情 let selectIds = ref([]); // 选中自选ID let itemsInfo = ref({}); // 自选项目详情 @@ -20,6 +22,8 @@ let tabIndex = ref(0); // 标签索引 let totalPrice = ref(0); // 总折扣价格 let patientInfo = ref({}); // 就诊人信息 (包括套餐) let groupInfo = ref({}); // 团检信息 +let items = ref([]); // 团检/个检 套餐列表 +let status = ref(0); // 1个检套餐 2个检自选 3团检套餐 4团检自选 const $props = defineProps({ comboId: { @@ -34,14 +38,47 @@ const $props = defineProps({ type: String, default: "", }, + itemIds: { + type: String, + default: "", + }, }); const mountedAction = async () => { selectIds.value = $props.itemIds?.split(",") || []; console.log($store.user); comboId.value = $props.comboId || ""; - personId.value = $props.personId || ""; + personId.value = $store.getUser().person_id || ""; groupId.value = $props.groupId || ""; + // 团检空项目 - 套餐列表 - 套餐详情 - 自选 - 弹剩余额度提醒 - 团检详情 + // | + // 自选 - 弹推荐套餐/剩余额度提醒 - 团检详情 + + // 团检有项目 - 团检详情 - 自选 - 团检详情 + + // comboId && person_id + // 个检 - 套餐列表 - 套餐详情 - 自选 - 个检详情 + // | + // 自选 - 弹推荐套餐 - 个检详情 + + if (groupId.value) { + if (comboId.value) { + // 团检套餐 + status.value = 3; + } else { + // 团检自选 + status.value = 4; + } + } else { + if (comboId.value) { + // 个检套餐 + status.value = 1; + } else { + // 个检自选 + status.value = 2; + } + } + console.log(status.value, "1个检套餐 2个检自选 3团检套餐 4团检自选"); uni.showLoading({ title: "加载中", }); @@ -60,9 +97,9 @@ const getBuyInfo = async () => { const response = await $api("BuyInfo", obj); $response(response, () => { uni.hideLoading(); - if (groupId.value) { + if (groupId.value && response.data.group_info.length) { + // 团检 groupInfo.value = response.data.group_info[0]; - return; } comboInfo.value = response.data.combo_info; itemsInfo.value = response.data.items_info; @@ -71,13 +108,13 @@ const getBuyInfo = async () => { }; const addCombo = () => { - const itemIds = selectIds.value.length > 0 ? selectIds.value.join(",") : ""; + let itemIds = $props.itemIds?$props.itemIds:""; + let query = "?comboId=" + comboId.value + "&itemIds=" + itemIds; + if (groupId.value) { + query += "&groupId=" + groupId.value; + } uni.navigateTo({ - url: - "/pages/main/optionalProject/optionalProject?comboId=" + - comboId.value + - "&itemIds=" + - itemIds, + url: "/pages/main/optionalProject/optionalProject?" + query, }); }; @@ -106,8 +143,10 @@ onShow(() => { - + + { " /> - + {{ val }} @@ -157,9 +196,10 @@ onShow(() => { + 适用人群: {{ comboInfo.crowd_name }} @@ -169,39 +209,55 @@ onShow(() => { {{ comboInfo.hospital_name }} - + + - + 您好, - {{groupInfo.name}} + {{ groupId?groupInfo.name:$store.getUser().name }} - + + 单位名称: {{ groupInfo.group_name }} 部门名称: - {{ groupInfo.group_name }} + {{ groupInfo.bumen_name }} - + 套餐名称: {{ groupInfo.combo_name }} + + 体检额度: + {{ groupInfo.tongshou_xiane }} + 套餐内容 + 自选内容 { class="mt-20rpx bg-#fff py-40rpx px-14rpx box-border flex-col flex" > - + + + 套餐项目({{ comboInfo?.items?.length }}项) + + 检查项目 + 检查指标意义 + + + + + {{ val.keshi_name }}({{ val.children.length }}) + + + {{ v.name }} + {{ + v.desc || "-" + }} + + + + + + 套餐项目({{ comboInfo.items?.length }}项)套餐项目({{ groupInfo?.items?.length }}项) { > 检查指标意义 - + diff --git a/h5/pages/main/optionalProject/optionalProject.vue b/h5/pages/main/optionalProject/optionalProject.vue index a5133f5..0898f7e 100644 --- a/h5/pages/main/optionalProject/optionalProject.vue +++ b/h5/pages/main/optionalProject/optionalProject.vue @@ -20,6 +20,14 @@ const $props = defineProps({ type: String, default: "", }, + personId: { + type: String, + default: "", + }, + groupId: { + type: String, + default: "", + }, }); const $store = useStore(); @@ -38,12 +46,19 @@ let totalOriginalPrice = ref(0); // 总原始价格 let total = ref(0); // 总项目数 let comboId = ref(""); // 套餐id let recommendPackageList = ref([]); // 推荐套餐列表 -let popup = ref(null); +let popup = ref(null); // 推荐套餐弹窗 +let popupTip = ref(null); // 剩余额度提示弹窗 +let groupLength = ref(0); // 团检自带的套餐数量 +let status = ref(0); // 1个检套餐 2个检自选 3团检套餐 4团检自选 +let personId = ref(""); // 就诊人ID +let groupId = ref(""); // 团检id +let losePrice = ref(0); // 剩余金额 +// let query = ref(""); // 参数 const getComboRecommend = async () => { // 获取推荐套餐 const response = await $api("ComboRecommend", { - person_id: $store.save_info.user_id || 1, + person_id: personId.value, item_ids: selectIds.value, }); $response(response, () => { @@ -79,12 +94,18 @@ const getBuyInfo = async () => { let obj = { item_ids: selectIds.value, hospital: $store.save_info.hospital, + person_id: personId.value, + group_id: groupId.value, + combo_id: comboId.value, }; if (comboId.value) { obj.combo_id = comboId.value; } const response = await $api("BuyInfo", obj); $response(response, () => { + groupLength.value = response.data.group_info + ? response.data.group_info?.length + : 0; packagePrice.value = response.data.combo_info.price; packageOriginalPrice.value = response.data.combo_info.original_price; optionalPrice.value = response.data.items_info.price; @@ -92,49 +113,138 @@ const getBuyInfo = async () => { totalPrice.value = response.data.true_price; totalOriginalPrice.value = response.data.original_price; total.value = response.data.pay_item_count; + losePrice.value = response.data.lose_price; uni.hideLoading(); }); }; const confirm = async () => { - const itemIds = selectIds.value.length > 0 ? selectIds.value.join(",") : ""; // 确定 - if (comboId.value) { - // 增加自选 - uni.navigateBack({ - delta: 2, - success: () => { - let time = setTimeout(() => { - uni.navigateTo({ - url: - "/pages/main/optionalProject/optionalDetails?comboId=" + - comboId.value + - "&itemIds=" + - itemIds, - }); - clearTimeout(time); - }, 500); - }, - }); - } else { - // 自选 + // status 1个检套餐 2个检自选 3团检套餐 4团检自选 + if (status.value == 3) { + // 团检套餐 + // query.value = "?groupId=" + + // groupId.value + + // "&itemIds=" + + // itemIds + + // "&comboId=" + + // comboId.value; + } + if (status.value == 4) { + // 团检自选 + // query.value = "?groupId=" + groupId.value + "&itemIds=" + itemIds; + if (!groupLength.value) { + // 团检项目为空的话需要弹推荐套餐 + getComboRecommend(); + return; + } + } + + if (status.value == 1) { + // 个检套餐 + // query.value = "?itemIds=" + itemIds + "&comboId=" + comboId.value; + } + + if (status.value == 2) { + // 个检自选 + // query.value = "?itemIds=" + itemIds + "&personId=" + personId.value; if (!selectIds.value.length) { uni.$lu.toast("请选择项目"); return; } // 自选触发推荐套餐 getComboRecommend(); + return; } + toDetails(); +}; + +const toDetails = (state) => { + // 去详情页 + if (losePrice.value > 0 && !state) { + popupTip.value.open("center"); // 弹剩余额度提醒 + return; + } + const itemIds = selectIds.value.length > 0 ? selectIds.value.join(",") : ""; + let query = "?comboId=" + comboId.value + "&itemIds=" + itemIds; + if (groupId.value) { + query += "&groupId=" + groupId.value; + } + console.log($props.comboId || $props.itemIds ? 2 : 1); + let delta = 0; + if(groupId.value){ + if(groupLength.value){ + delta = 2; + }else{ + if($props.comboId || $props.itemIds){ + delta = 2; + }else{ + delta = 1; + } + } + }else{ + if($props.comboId || $props.itemIds){ + delta = 2; + }else{ + delta = 1; + } + } + uni.navigateBack({ + delta: delta, + success: () => { + let time = setTimeout( + () => { + clearTimeout(time); + uni.navigateTo({ + url: "/pages/main/optionalProject/optionalDetails" + query, + }); + }, + delta == 2 ? 800 : 500 + ); + }, + }); +}; + +const buy = async (item) => { + if (item) { + comboId.value = item.combo_id; + await getBuyInfo(); + } + const itemIds = selectIds.value.length > 0 ? selectIds.value.join(",") : ""; + // 预约套餐 + popup.value.close(); // 关闭推荐套餐弹窗 + toDetails(); }; const mountedAction = async () => { - selectIds.value = $props.itemIds?.split(",") || []; - comboId.value = $props.comboId ? $props.comboId : ""; + selectIds.value = $props.itemIds ? $props.itemIds.split(",") : []; + comboId.value = $props.comboId || ""; + personId.value = $store.getUser().person_id || ""; + groupId.value = $props.groupId || ""; + + if (groupId.value) { + if (comboId.value) { + // 团检套餐 + status.value = 3; + } else { + // 团检自选 + status.value = 4; + } + } else { + if (comboId.value) { + // 个检套餐 + status.value = 1; + } else { + // 个检自选 + status.value = 2; + } + } + + console.log(status.value, "1个检套餐 2个检自选 3团检套餐 4团检自选"); + await getAllItems(); // 获取全部项目 // await getComboRecommend(); - if (comboId.value) { - getBuyInfo(); // 获取购买信息 - } + getBuyInfo(); // 获取购买信息 }; const config_ref = ref(null); @@ -157,6 +267,33 @@ onShow(() => { + + + 您还剩余 + {{ losePrice }} + 元体检额度尚未使用,确认提交后剩余体检额度将无法使用! + + + + + + @@ -176,6 +313,7 @@ onShow(() => { > {