first commit

This commit is contained in:
PC-202306242200\Administrator
2026-03-31 10:53:43 +08:00
commit f529129c93
770 changed files with 86065 additions and 0 deletions

246
pageInvest/shop/affirm.vue Normal file
View File

@@ -0,0 +1,246 @@
<template>
<view class="p30">
<view style="height: 20rpx"></view>
<view style="background-color: #ffffff; padding: 20rpx; border-radius: 10rpx; font-size: 30rpx; display: flex">
<image style="width: 220rpx; height: 220rpx; border-radius: 16rpx" :src="shop.cover" mode="aspectFill"></image>
<view style="padding: 20rpx">
<view style="color: #232323">{{ shop.name }}</view>
<view style="height: 20rpx"></view>
<view>
<text>单价</text>
<text style="color: crimson">{{ shop.currentPrice }}</text>
</view>
<view style="height: 20rpx"></view>
<view>
<text>总价</text>
<text style="color: crimson">{{ shop.currentPrice * dataFrom.num }}</text>
</view>
</view>
</view>
<view style="height: 20rpx"></view>
<view style="background-color: #ffffff; padding: 20rpx; border-radius: 10rpx; font-size: 30rpx; display: flex; align-items: center; justify-content: space-between">
<view class="u-flex">
<view>购买数量</view>
<view style="width: 10rpx"></view>
</view>
<view><up-number-box v-model="dataFrom.num" inputWidth="100rpx" @change="changenum"></up-number-box></view>
</view>
<!-- <view
@click="toAddress"
v-if="shop.purposeType != 1"
style="
background-color: #ffffff;
padding: 20rpx;
border-radius: 10rpx;
font-size: 30rpx;
display: flex;
align-items: center;
justify-content: space-between;
margin-top: 30rpx;
"
>
<view class="u-flex" v-if="!addData">
<view>请先选择收货地址</view>
</view>
<view class="address-a" v-else @click="toAddress">
<view class="top">
<view class="top-a">
<view>{{ addData.realName }}</view>
<view>{{ addData.phone }}</view>
</view>
<view class="top-b">{{ addData.province }} {{ addData.city }} {{ addData.district }} {{ addData.detail }}</view>
</view>
</view>
</view> -->
<!-- <view
style="background-color: #ffffff; padding: 20rpx; border-radius: 10rpx; font-size: 30rpx; margin-top: 30rpx"
v-if="shop.purposeType == 2 || (shop.purposeType == 3 && shop.salePrice == 2980)"
>
<view style="font-weight: 700">温馨提示{{ shop.purposeType == 2 ? `${shop.itemType == 7 ? '20' : shop.itemType == 20 ? '5' : ''}台包安装` : '' }}</view>
<view style="height: 20rpx"></view>
<view>套包安装内容仅限50米实际电缆小于50米的以实际安装必要长度为准差值米数不以任何形式赠送或返还;超出50米的超出部分按100元/米补足超出的费用</view>
</view> -->
<view style="background-color: #ffffff; padding: 20rpx; border-radius: 10rpx; font-size: 30rpx; margin-top: 30rpx">
<view style="font-weight: 700">购买须知</view>
<view style="height: 20rpx"></view>
<view style="color: #dd6161">付款成功后立即生效并投入生产安装不支持退款退货</view>
<view style="height: 20rpx"></view>
<view style="display: flex; align-items: center; justify-content: space-between">
<view style="display: flex">
<view>阅读并同意:</view>
<navigator url="/pages/protocol/buy?id=14" style="color: dodgerblue" open-type="navigate">
<text>充电桩购销合同</text>
</navigator>
</view>
<view>
<up-text v-if="policy.is_buy == 1" text="已同意" type="primary"></up-text>
<up-text v-else text="未同意" type="error"></up-text>
</view>
</view>
<view style="height: 20rpx"></view>
<view style="display: flex; align-items: center; justify-content: space-between">
<view style="display: flex">
<view>阅读并同意:</view>
<navigator url="/pages/protocol/trusteeship?id=13" style="color: dodgerblue" open-type="navigate">
<text>充电桩托管协议</text>
</navigator>
</view>
<view>
<up-text v-if="policy.is_trusteeship == 1" text="已同意" type="primary"></up-text>
<up-text v-else text="未同意" type="error"></up-text>
</view>
</view>
</view>
<view style="display: flex; justify-content: center; margin-top: 80rpx">
<view class="affirm_btn" @click="add">确认订单</view>
</view>
</view>
</template>
<script setup>
import { ref, computed } from 'vue';
import { addGoodsOrders } from '@/api/api.js';
import { shopInfo } from '@/api/api.js';
import { onLoad } from '@dcloudio/uni-app';
let dataFrom = ref({
num: 1
});
let shop = ref({});
let policy = ref({
is_trusteeship: 0,
is_buy: 0
});
let address = ref({});
let addData = ref(null);
let typeTrue = computed(() => {
var a = false;
if (
(shop.value.purposeType == 2 && dataFrom.value.num == 20 && shop.value.itemType == 7) ||
(shop.value.purposeType == 2 && dataFrom.value.num == 5 && shop.value.itemType == 20)
) {
a = true;
}
return a;
});
onLoad(async (options) => {
let _res = await shopInfo({
goodId: options.id
});
shop.value = _res;
uni.$on('buy', (e) => {
policy.value.is_buy = e;
});
uni.$on('trusteeship', (e) => {
policy.value.is_trusteeship = e;
});
uni.$on('address', (e) => {
addData.value = e;
address.value = {
takeName: e.realName,
takePhone: e.phone,
takeAddress: `${e.province}${e.city}${e.district}${e.detail}`
};
});
});
let changenum = (e) => {
console.log(e);
};
let toAddress = () => {
uni.navigateTo({
url: '/pages/address/list?type=1'
});
};
let add = async () => {
// if (!address.value.takeName && shop.value.purposeType != 1) return uni.showToast({ title: '请先选择收货地址', icon: 'none' });
if (!policy.value.is_buy) return uni.showToast({ title: '请阅读并同意《充电桩购销合同》', icon: 'none' });
if (!policy.value.is_trusteeship) return uni.showToast({ title: '请阅读并同意《充电桩托管协议》', icon: 'none' });
let _res = await addGoodsOrders({
num: dataFrom.value.num,
goodsId: shop.value.id
// ...address.value
});
uni.redirectTo({
url: `/pageInvest/shop/pay?id=${_res.id}&amount=${_res.payMoney}&type=1&num=${_res.num}&goodsId=${shop.value.id}`
});
};
</script>
<style scoped lang="scss">
.affirm_btn {
width: 650rpx;
height: 78rpx;
background: #4874e5;
border-radius: 12rpx;
display: flex;
align-items: center;
justify-content: center;
font-weight: bold;
font-size: 24rpx;
color: #ffffff;
}
.address-a {
.top {
padding: 40rpx;
.top-a {
display: flex;
align-items: center;
justify-content: space-between;
font-size: 30rpx;
font-weight: bold;
color: #222222;
margin-bottom: 45rpx;
}
.top-b {
font-size: 30rpx;
font-weight: bold;
color: #999999;
}
}
.bottom {
padding: 35rpx;
display: flex;
align-items: center;
justify-content: space-between;
.bottom-che {
display: flex;
align-items: center;
image {
width: 32rpx;
height: 32rpx;
margin-right: 10rpx;
}
font-size: 24rpx;
font-weight: bold;
color: #222222;
}
.bottom-r {
font-size: 26rpx;
font-weight: bold;
color: #999999;
display: flex;
align-items: center;
}
}
}
</style>