| @ -1,470 +1,521 @@ | |||||
| <template> | <template> | ||||
| <view class="page"> | |||||
| <navbar/> | |||||
| <view class="user"> | |||||
| <uv-checkbox-group shape="circle" v-model="checkboxValue"> | |||||
| <uv-swipe-action> | |||||
| <view v-for="(item, index) in list.records" :key="index"> | |||||
| <view style="margin-top: 20rpx;"></view> | |||||
| <uv-swipe-action-item :options="options" @click="delCart(item, index)"> | |||||
| <view class="item"> | |||||
| <view class="checkbox"> | |||||
| <uv-checkbox :name="item.goodsId" activeColor="#FA5A0A" size="40rpx" | |||||
| icon-size="35rpx"></uv-checkbox> | |||||
| </view> | |||||
| <image class="image" | |||||
| :src="item.pic || 'https://img95.699pic.com/photo/50058/1378.jpg_wh860.jpg'" | |||||
| mode=""></image> | |||||
| <view class="info"> | |||||
| <view class="title"> | |||||
| <view>{{ item.name }}</view> | |||||
| <view> | |||||
| <uv-number-box v-model="item.num" | |||||
| @change="e => valChange(item, e)"></uv-number-box> | |||||
| </view> | |||||
| </view> | |||||
| <view class="unit" @click="toggleDropdown(item)"> | |||||
| 规格:{{ item.title }} | |||||
| <uv-icon name="arrow-down"></uv-icon> | |||||
| </view> | |||||
| <view class="price"> | |||||
| ¥ | |||||
| <text>{{ item.price }}</text> | |||||
| 元 | |||||
| </view> | |||||
| </view> | |||||
| </view> | |||||
| </uv-swipe-action-item> | |||||
| </view> | |||||
| </uv-swipe-action> | |||||
| </uv-checkbox-group> | |||||
| <view class="action"> | |||||
| <view class="icon"> | |||||
| <image src="/static/image/cart/1.png" mode=""></image> | |||||
| <view class="num">{{ checkboxValue.length }}</view> | |||||
| </view> | |||||
| <view class="price"> | |||||
| <view class="count"> | |||||
| 合计 | |||||
| <view> | |||||
| ¥ | |||||
| <text>{{ totalPrice }}</text> | |||||
| </view> | |||||
| </view> | |||||
| <view class="text"> | |||||
| 共{{ checkboxValue.length }}件,已享受更低优惠 | |||||
| </view> | |||||
| </view> | |||||
| <view class="btn" @click="goCleaning">去结算</view> | |||||
| </view> | |||||
| </view> | |||||
| <!-- 地址弹框 --> | |||||
| <uv-popup ref="addressPopup" :round="30"> | |||||
| <addressList ref="addressList" height="60vh" @select="selectAddress"/> | |||||
| </uv-popup> | |||||
| <tabber select="3"/> | |||||
| </view> | |||||
| <view class="page"> | |||||
| <navbar /> | |||||
| <view class="user"> | |||||
| <uv-checkbox-group shape="circle" v-model="checkboxValue"> | |||||
| <uv-swipe-action> | |||||
| <view v-for="(item, index) in list.records" :key="index"> | |||||
| <view style="margin-top: 20rpx;"></view> | |||||
| <uv-swipe-action-item :options="options" @click="delCart(item, index)"> | |||||
| <view class="item"> | |||||
| <view class="checkbox"> | |||||
| <uv-checkbox :name="item.goodsId" activeColor="#FA5A0A" size="40rpx" | |||||
| icon-size="35rpx"></uv-checkbox> | |||||
| </view> | |||||
| <image class="image" | |||||
| :src="item.pic || 'https://img95.699pic.com/photo/50058/1378.jpg_wh860.jpg'" | |||||
| mode=""></image> | |||||
| <view class="info"> | |||||
| <view class="title"> | |||||
| <view>{{ item.name }}</view> | |||||
| <view> | |||||
| <uv-number-box v-model="item.num" | |||||
| @change="e => valChange(item, e)"></uv-number-box> | |||||
| </view> | |||||
| </view> | |||||
| <view class="unit" @click="toggleDropdown(item)"> | |||||
| 规格:{{ item.title }} | |||||
| <uv-icon name="arrow-down"></uv-icon> | |||||
| </view> | |||||
| <view class="price"> | |||||
| ¥ | |||||
| <text>{{ item.price }}</text> | |||||
| 元 | |||||
| </view> | |||||
| </view> | |||||
| </view> | |||||
| </uv-swipe-action-item> | |||||
| </view> | |||||
| </uv-swipe-action> | |||||
| </uv-checkbox-group> | |||||
| <view class="action"> | |||||
| <view class="icon"> | |||||
| <image src="/static/image/cart/1.png" mode=""></image> | |||||
| <view class="num">{{ checkboxValue.length }}</view> | |||||
| </view> | |||||
| <view class="price"> | |||||
| <view class="count"> | |||||
| 合计 | |||||
| <view> | |||||
| ¥ | |||||
| <text>{{ totalPrice }}</text> | |||||
| </view> | |||||
| </view> | |||||
| <view class="text"> | |||||
| 共{{ checkboxValue.length }}件,已享受更低优惠 | |||||
| </view> | |||||
| </view> | |||||
| <view class="btn" @click="goCleaning">去结算</view> | |||||
| </view> | |||||
| </view> | |||||
| <!-- 地址弹框 --> | |||||
| <uv-popup ref="addressPopup" :round="30"> | |||||
| <addressList ref="addressList" height="60vh" @select="selectAddress" /> | |||||
| </uv-popup> | |||||
| <!-- 规格 --> | |||||
| <uv-popup ref="skuPopup" :round="30" closeable> | |||||
| <view class="submit-unit"> | |||||
| <view class="title"> | |||||
| 规格选择 | |||||
| </view> | |||||
| <view class="list"> | |||||
| <view :class="{act : unitIndex == index}" v-for="(item, index) in skuList" | |||||
| @click="selectUnit(item, index)" :key="index"> | |||||
| {{ item.title }} | |||||
| </view> | |||||
| </view> | |||||
| </view> | |||||
| </uv-popup> | |||||
| <tabber select="3" /> | |||||
| </view> | |||||
| </template> | </template> | ||||
| <script> | <script> | ||||
| import tabber from '@/components/base/tabbar.vue' | |||||
| import addressList from '@/components/address/addressList.vue' | |||||
| export default { | |||||
| components: { | |||||
| tabber, | |||||
| addressList, | |||||
| }, | |||||
| data() { | |||||
| return { | |||||
| queryParams: { | |||||
| pageNo: 1, | |||||
| pageSize: 10, | |||||
| }, | |||||
| list: [], | |||||
| addressTotal: 0, | |||||
| address: { | |||||
| name: '请选择联系人', | |||||
| addressDetail: '' | |||||
| }, | |||||
| skuList: [], | |||||
| editSkuForm: { | |||||
| id: '', //购物车id | |||||
| goodsId: '', //商品id | |||||
| skuId: '', //规格id | |||||
| }, | |||||
| value: 0, | |||||
| checkboxValue: [], | |||||
| options: [{ | |||||
| text: '删除', | |||||
| style: { | |||||
| backgroundColor: '#FA5A0A' | |||||
| } | |||||
| },], | |||||
| } | |||||
| }, | |||||
| computed: { | |||||
| totalPrice() { | |||||
| if (!this.checkboxValue.length) { | |||||
| return 0 | |||||
| } | |||||
| let price = 0 | |||||
| this.list.records.forEach(n => { | |||||
| if (this.checkboxValue.includes(n.id)) { | |||||
| price += n.price * n.num | |||||
| } | |||||
| }) | |||||
| return price | |||||
| }, | |||||
| }, | |||||
| onShow() { | |||||
| this.getData() | |||||
| this.getAddressListA() | |||||
| }, | |||||
| //滚动到屏幕底部 | |||||
| onReachBottom() { | |||||
| if (this.queryParams.pageSize < this.list.total) { | |||||
| this.queryParams.pageSize += 10 | |||||
| this.getData() | |||||
| } | |||||
| }, | |||||
| methods: { | |||||
| // 修改商品规格弹框 | |||||
| toggleDropdown(item) { | |||||
| this.editSkuForm.id = item.id | |||||
| this.editSkuForm.goodsId = item.goodsId | |||||
| // 根据商品id获取规格 | |||||
| this.$api('goodsSku', { | |||||
| id: item.goodsId | |||||
| }, res => { | |||||
| if (res.code == 200) { | |||||
| this.skuList = res.result | |||||
| // 打开规格下拉框待完善 TODO | |||||
| } | |||||
| }) | |||||
| }, | |||||
| // 规格下拉框选中后的回调 | |||||
| changeCartProductSku(e) { | |||||
| console.log(e, "e"); | |||||
| this.editSkuForm.skuId = e.aaa //TODO | |||||
| return | |||||
| this.$api('editSku', this.editSkuForm, res => { | |||||
| if (res.code == 200) { | |||||
| this.getData() | |||||
| } | |||||
| }) | |||||
| }, | |||||
| // 去结算按钮 | |||||
| goCleaning() { | |||||
| if (this.checkboxValue.length < 1) { | |||||
| uni.showToast({ | |||||
| title: "请勾选商品", | |||||
| icon: 'none' | |||||
| }) | |||||
| return | |||||
| } | |||||
| // 打开地址弹框 | |||||
| this.$refs.addressPopup.open('bottom') | |||||
| }, | |||||
| // 选择地址 | |||||
| selectAddress(e) { | |||||
| this.address = e | |||||
| this.$refs.addressPopup.close() | |||||
| this.ordersPay() | |||||
| }, | |||||
| //商品下单 | |||||
| ordersPay() { | |||||
| var self = this | |||||
| var deleteCartIds = this.checkboxValue.join(",") //待删除的购物车id | |||||
| let data = [] | |||||
| let records = this.list.records | |||||
| for (var i = 0; i < records.length; i++) { | |||||
| if (this.checkboxValue.includes(records[i].goodsId)) { | |||||
| data.push({ | |||||
| id: records[i].goodsId, //商品id | |||||
| skuId: records[i].skuId, //规格id | |||||
| addressId: this.address.id, //地址id | |||||
| sku: records[i].title, //规格 | |||||
| num: records[i].num, | |||||
| }) | |||||
| } | |||||
| } | |||||
| this.$api('orderCreate', { | |||||
| req: JSON.stringify(data) | |||||
| }, res => { | |||||
| if (res.code == 200) { | |||||
| let form = { | |||||
| id: res.result.id | |||||
| } | |||||
| this.$api('orderPay', form, res => { | |||||
| if (res.code == 200) { | |||||
| uni.requestPayment({ | |||||
| provider: 'wxpay', // 服务提提供商 | |||||
| timeStamp: res.result.timeStamp, // 时间戳 | |||||
| nonceStr: res.result.nonceStr, // 随机字符串 | |||||
| package: res.result.packageValue, | |||||
| signType: res.result.signType, // 签名算法 | |||||
| paySign: res.result.paySign, // 签名 | |||||
| success: function (res) { | |||||
| console.log('支付成功', res); | |||||
| // 清除购物车数据 | |||||
| self.$api('cartDel', { | |||||
| id: deleteCartIds | |||||
| }, res => { | |||||
| if (res.code == 200) { | |||||
| self.getData() | |||||
| } | |||||
| }) | |||||
| uni.redirectTo({ | |||||
| url: '/pages/index/order' | |||||
| }) | |||||
| }, | |||||
| fail: function (err) { | |||||
| console.log('支付失败', err); | |||||
| // self.$refs.confirmationPopup.close() | |||||
| uni.showToast({ | |||||
| icon: 'none', | |||||
| title: "支付失败" | |||||
| }) | |||||
| } | |||||
| }); | |||||
| } | |||||
| }) | |||||
| } | |||||
| }) | |||||
| }, | |||||
| // 修改购物车里面商品的规格 | |||||
| unitChange(item, e) { | |||||
| // TODO 查询商品规格 | |||||
| // this.$api('goodsOne', this.queryParams, res => { | |||||
| // if (res.code == 200) { | |||||
| // this.list = res.result | |||||
| // } | |||||
| // }) | |||||
| }, | |||||
| // 获取地址列表 | |||||
| getAddressListA() { | |||||
| this.$refs.addressList.getAddressList().then(res => { | |||||
| this.addressTotal = res.total | |||||
| if (this.addressTotal != 0) { | |||||
| this.address = res.records[0] | |||||
| } | |||||
| }) | |||||
| }, | |||||
| valChange(item, e) { | |||||
| console.log(e.value); | |||||
| this.$api('cartNum', { | |||||
| id: item.id, | |||||
| num: e.value, | |||||
| }) | |||||
| }, | |||||
| // 购物车分页 | |||||
| getData() { | |||||
| this.$api('cartPage', this.queryParams, res => { | |||||
| if (res.code == 200) { | |||||
| this.list = res.result | |||||
| } | |||||
| }) | |||||
| }, | |||||
| // 删除购物车 | |||||
| delCart(item, index) { | |||||
| this.$api('cartDel', { | |||||
| id: item.id | |||||
| }, res => { | |||||
| if (res.code == 200) { | |||||
| this.getData() | |||||
| uni.showToast({ | |||||
| title: '删除成功', | |||||
| }); | |||||
| } | |||||
| }) | |||||
| }, | |||||
| } | |||||
| } | |||||
| import tabber from '@/components/base/tabbar.vue' | |||||
| import addressList from '@/components/address/addressList.vue' | |||||
| export default { | |||||
| components: { | |||||
| tabber, | |||||
| addressList, | |||||
| }, | |||||
| data() { | |||||
| return { | |||||
| queryParams: { | |||||
| pageNo: 1, | |||||
| pageSize: 10, | |||||
| }, | |||||
| list: [], | |||||
| addressTotal: 0, | |||||
| address: { | |||||
| name: '请选择联系人', | |||||
| addressDetail: '' | |||||
| }, | |||||
| skuList: [], | |||||
| editSkuForm: { | |||||
| id: '', //购物车id | |||||
| goodsId: '', //商品id | |||||
| skuId: '', //规格id | |||||
| }, | |||||
| value: 0, | |||||
| checkboxValue: [], | |||||
| options: [{ | |||||
| text: '删除', | |||||
| style: { | |||||
| backgroundColor: '#FA5A0A' | |||||
| } | |||||
| }, ], | |||||
| unit: {}, | |||||
| unitIndex: 0, | |||||
| } | |||||
| }, | |||||
| computed: { | |||||
| totalPrice() { | |||||
| if (!this.checkboxValue.length) { | |||||
| return 0 | |||||
| } | |||||
| let price = 0 | |||||
| this.list.records.forEach(n => { | |||||
| if (this.checkboxValue.includes(n.id)) { | |||||
| price += n.price * n.num | |||||
| } | |||||
| }) | |||||
| return price | |||||
| }, | |||||
| }, | |||||
| onShow() { | |||||
| this.getData() | |||||
| this.getAddressListA() | |||||
| }, | |||||
| //滚动到屏幕底部 | |||||
| onReachBottom() { | |||||
| if (this.queryParams.pageSize < this.list.total) { | |||||
| this.queryParams.pageSize += 10 | |||||
| this.getData() | |||||
| } | |||||
| }, | |||||
| methods: { | |||||
| // 修改商品规格弹框 | |||||
| toggleDropdown(item) { | |||||
| this.editSkuForm.id = item.id | |||||
| this.editSkuForm.goodsId = item.goodsId | |||||
| // 根据商品id获取规格 | |||||
| this.$api('goodsSku', { | |||||
| id: item.goodsId | |||||
| }, res => { | |||||
| if (res.code == 200) { | |||||
| this.skuList = res.result | |||||
| // 打开规格弹框 | |||||
| this.$refs.skuPopup.open('bottom') | |||||
| } | |||||
| }) | |||||
| }, | |||||
| // 选择规格 | |||||
| selectUnit(item, index) { | |||||
| this.unit = item | |||||
| this.unitIndex = index | |||||
| this.editSkuForm.skuId = item.id | |||||
| this.$api('editSku', this.editSkuForm, res => { | |||||
| if (res.code == 200) { | |||||
| this.$refs.skuPopup.close() | |||||
| this.getData() | |||||
| } | |||||
| }) | |||||
| }, | |||||
| // 去结算按钮 | |||||
| goCleaning() { | |||||
| if (this.checkboxValue.length < 1) { | |||||
| uni.showToast({ | |||||
| title: "请勾选商品", | |||||
| icon: 'none' | |||||
| }) | |||||
| return | |||||
| } | |||||
| // 打开地址弹框 | |||||
| this.$refs.addressPopup.open('bottom') | |||||
| }, | |||||
| // 选择地址 | |||||
| selectAddress(e) { | |||||
| this.address = e | |||||
| this.$refs.addressPopup.close() | |||||
| this.ordersPay() | |||||
| }, | |||||
| //商品下单 | |||||
| ordersPay() { | |||||
| var self = this | |||||
| var deleteCartIds = this.checkboxValue.join(",") //待删除的购物车id | |||||
| let data = [] | |||||
| let records = this.list.records | |||||
| for (var i = 0; i < records.length; i++) { | |||||
| if (this.checkboxValue.includes(records[i].goodsId)) { | |||||
| data.push({ | |||||
| id: records[i].goodsId, //商品id | |||||
| skuId: records[i].skuId, //规格id | |||||
| addressId: this.address.id, //地址id | |||||
| sku: records[i].title, //规格 | |||||
| num: records[i].num, | |||||
| }) | |||||
| } | |||||
| } | |||||
| this.$api('orderCreate', { | |||||
| req: JSON.stringify(data) | |||||
| }, res => { | |||||
| if (res.code == 200) { | |||||
| let form = { | |||||
| id: res.result.id | |||||
| } | |||||
| this.$api('orderPay', form, res => { | |||||
| if (res.code == 200) { | |||||
| uni.requestPayment({ | |||||
| provider: 'wxpay', // 服务提提供商 | |||||
| timeStamp: res.result.timeStamp, // 时间戳 | |||||
| nonceStr: res.result.nonceStr, // 随机字符串 | |||||
| package: res.result.packageValue, | |||||
| signType: res.result.signType, // 签名算法 | |||||
| paySign: res.result.paySign, // 签名 | |||||
| success: function(res) { | |||||
| console.log('支付成功', res); | |||||
| // 清除购物车数据 | |||||
| self.$api('cartDel', { | |||||
| id: deleteCartIds | |||||
| }, res => { | |||||
| if (res.code == 200) { | |||||
| self.getData() | |||||
| } | |||||
| }) | |||||
| uni.redirectTo({ | |||||
| url: '/pages/index/order' | |||||
| }) | |||||
| }, | |||||
| fail: function(err) { | |||||
| console.log('支付失败', err); | |||||
| // self.$refs.confirmationPopup.close() | |||||
| uni.showToast({ | |||||
| icon: 'none', | |||||
| title: "支付失败" | |||||
| }) | |||||
| } | |||||
| }); | |||||
| } | |||||
| }) | |||||
| } | |||||
| }) | |||||
| }, | |||||
| // 修改购物车里面商品的规格 | |||||
| unitChange(item, e) { | |||||
| // TODO 查询商品规格 | |||||
| // this.$api('goodsOne', this.queryParams, res => { | |||||
| // if (res.code == 200) { | |||||
| // this.list = res.result | |||||
| // } | |||||
| // }) | |||||
| }, | |||||
| // 获取地址列表 | |||||
| getAddressListA() { | |||||
| this.$refs.addressList.getAddressList().then(res => { | |||||
| this.addressTotal = res.total | |||||
| if (this.addressTotal != 0) { | |||||
| this.address = res.records[0] | |||||
| } | |||||
| }) | |||||
| }, | |||||
| valChange(item, e) { | |||||
| console.log(e.value); | |||||
| this.$api('cartNum', { | |||||
| id: item.id, | |||||
| num: e.value, | |||||
| }) | |||||
| }, | |||||
| // 购物车分页 | |||||
| getData() { | |||||
| this.$api('cartPage', this.queryParams, res => { | |||||
| if (res.code == 200) { | |||||
| this.list = res.result | |||||
| } | |||||
| }) | |||||
| }, | |||||
| // 删除购物车 | |||||
| delCart(item, index) { | |||||
| this.$api('cartDel', { | |||||
| id: item.id | |||||
| }, res => { | |||||
| if (res.code == 200) { | |||||
| this.getData() | |||||
| uni.showToast({ | |||||
| title: '删除成功', | |||||
| }); | |||||
| } | |||||
| }) | |||||
| }, | |||||
| } | |||||
| } | |||||
| </script> | </script> | ||||
| <style scoped lang="scss"> | <style scoped lang="scss"> | ||||
| .page { | |||||
| /deep/ .uv-swipe-action { | |||||
| width: 100%; | |||||
| } | |||||
| } | |||||
| .user { | |||||
| .item { | |||||
| background-color: #fff; | |||||
| display: flex; | |||||
| padding: 30rpx; | |||||
| .checkbox { | |||||
| display: flex; | |||||
| justify-content: center; | |||||
| align-items: center; | |||||
| } | |||||
| .image { | |||||
| width: 200rpx; | |||||
| height: 200rpx; | |||||
| border-radius: 20rpx; | |||||
| } | |||||
| .info { | |||||
| flex: 1; | |||||
| .title { | |||||
| display: flex; | |||||
| padding: 10rpx 20rpx; | |||||
| justify-content: space-between; | |||||
| } | |||||
| .unit { | |||||
| font-size: 24rpx; | |||||
| padding: 10rpx 20rpx; | |||||
| color: #717171; | |||||
| display: flex; | |||||
| align-items: center; | |||||
| } | |||||
| .price { | |||||
| color: $uni-color; | |||||
| font-size: 28rpx; | |||||
| padding: 10rpx 20rpx; | |||||
| text { | |||||
| font-size: 36rpx; | |||||
| font-weight: 900; | |||||
| } | |||||
| } | |||||
| } | |||||
| } | |||||
| .action { | |||||
| width: 700rpx; | |||||
| position: fixed; | |||||
| bottom: 220rpx; | |||||
| left: 25rpx; | |||||
| background-color: #fff; | |||||
| height: 100rpx; | |||||
| border-radius: 50rpx; | |||||
| box-shadow: 0 0 6rpx 6rpx #00000010; | |||||
| display: flex; | |||||
| justify-content: center; | |||||
| align-items: center; | |||||
| overflow: hidden; | |||||
| .icon { | |||||
| position: relative; | |||||
| width: 80rpx; | |||||
| height: 80rpx; | |||||
| margin: 0 20rpx; | |||||
| image { | |||||
| width: 80rpx; | |||||
| height: 80rpx; | |||||
| } | |||||
| .num { | |||||
| position: absolute; | |||||
| right: 10rpx; | |||||
| top: 0rpx; | |||||
| background-color: $uni-color; | |||||
| color: #fff; | |||||
| font-size: 18rpx; | |||||
| border-radius: 50%; | |||||
| height: 30rpx; | |||||
| width: 30rpx; | |||||
| display: flex; | |||||
| justify-content: center; | |||||
| align-items: center; | |||||
| } | |||||
| } | |||||
| .price { | |||||
| .count { | |||||
| display: flex; | |||||
| font-size: 26rpx; | |||||
| align-items: center; | |||||
| view { | |||||
| color: $uni-color; | |||||
| margin-left: 10rpx; | |||||
| text { | |||||
| font-size: 32rpx; | |||||
| font-weight: 900; | |||||
| } | |||||
| } | |||||
| } | |||||
| .text { | |||||
| font-size: 20rpx; | |||||
| color: #717171; | |||||
| } | |||||
| } | |||||
| .btn { | |||||
| margin-left: auto; | |||||
| background-color: $uni-color; | |||||
| height: 100%; | |||||
| padding: 0 50rpx; | |||||
| color: #fff; | |||||
| display: flex; | |||||
| justify-content: center; | |||||
| align-items: center; | |||||
| } | |||||
| } | |||||
| } | |||||
| .example-body { | |||||
| padding: 12px; | |||||
| background-color: #FFFFFF; | |||||
| } | |||||
| .result-box { | |||||
| text-align: center; | |||||
| padding: 20px 0px; | |||||
| font-size: 16px; | |||||
| } | |||||
| .text { | |||||
| font-size: 12px; | |||||
| color: #666; | |||||
| margin-top: 5px; | |||||
| } | |||||
| .uni-px-5 { | |||||
| padding-left: 10px; | |||||
| padding-right: 10px; | |||||
| } | |||||
| .uni-pb-5 { | |||||
| padding-bottom: 10px; | |||||
| } | |||||
| .page { | |||||
| /deep/ .uv-swipe-action { | |||||
| width: 100%; | |||||
| } | |||||
| } | |||||
| .user { | |||||
| .item { | |||||
| background-color: #fff; | |||||
| display: flex; | |||||
| padding: 30rpx; | |||||
| .checkbox { | |||||
| display: flex; | |||||
| justify-content: center; | |||||
| align-items: center; | |||||
| } | |||||
| .image { | |||||
| width: 200rpx; | |||||
| height: 200rpx; | |||||
| border-radius: 20rpx; | |||||
| } | |||||
| .info { | |||||
| flex: 1; | |||||
| .title { | |||||
| display: flex; | |||||
| padding: 10rpx 20rpx; | |||||
| justify-content: space-between; | |||||
| } | |||||
| .unit { | |||||
| font-size: 24rpx; | |||||
| padding: 10rpx 20rpx; | |||||
| color: #717171; | |||||
| display: flex; | |||||
| align-items: center; | |||||
| } | |||||
| .price { | |||||
| color: $uni-color; | |||||
| font-size: 28rpx; | |||||
| padding: 10rpx 20rpx; | |||||
| text { | |||||
| font-size: 36rpx; | |||||
| font-weight: 900; | |||||
| } | |||||
| } | |||||
| } | |||||
| } | |||||
| .action { | |||||
| width: 700rpx; | |||||
| position: fixed; | |||||
| bottom: 220rpx; | |||||
| left: 25rpx; | |||||
| background-color: #fff; | |||||
| height: 100rpx; | |||||
| border-radius: 50rpx; | |||||
| box-shadow: 0 0 6rpx 6rpx #00000010; | |||||
| display: flex; | |||||
| justify-content: center; | |||||
| align-items: center; | |||||
| overflow: hidden; | |||||
| .icon { | |||||
| position: relative; | |||||
| width: 80rpx; | |||||
| height: 80rpx; | |||||
| margin: 0 20rpx; | |||||
| image { | |||||
| width: 80rpx; | |||||
| height: 80rpx; | |||||
| } | |||||
| .num { | |||||
| position: absolute; | |||||
| right: 10rpx; | |||||
| top: 0rpx; | |||||
| background-color: $uni-color; | |||||
| color: #fff; | |||||
| font-size: 18rpx; | |||||
| border-radius: 50%; | |||||
| height: 30rpx; | |||||
| width: 30rpx; | |||||
| display: flex; | |||||
| justify-content: center; | |||||
| align-items: center; | |||||
| } | |||||
| } | |||||
| .price { | |||||
| .count { | |||||
| display: flex; | |||||
| font-size: 26rpx; | |||||
| align-items: center; | |||||
| view { | |||||
| color: $uni-color; | |||||
| margin-left: 10rpx; | |||||
| text { | |||||
| font-size: 32rpx; | |||||
| font-weight: 900; | |||||
| } | |||||
| } | |||||
| } | |||||
| .text { | |||||
| font-size: 20rpx; | |||||
| color: #717171; | |||||
| } | |||||
| } | |||||
| .btn { | |||||
| margin-left: auto; | |||||
| background-color: $uni-color; | |||||
| height: 100%; | |||||
| padding: 0 50rpx; | |||||
| color: #fff; | |||||
| display: flex; | |||||
| justify-content: center; | |||||
| align-items: center; | |||||
| } | |||||
| } | |||||
| } | |||||
| .example-body { | |||||
| padding: 12px; | |||||
| background-color: #FFFFFF; | |||||
| } | |||||
| .result-box { | |||||
| text-align: center; | |||||
| padding: 20px 0px; | |||||
| font-size: 16px; | |||||
| } | |||||
| .text { | |||||
| font-size: 12px; | |||||
| color: #666; | |||||
| margin-top: 5px; | |||||
| } | |||||
| .uni-px-5 { | |||||
| padding-left: 10px; | |||||
| padding-right: 10px; | |||||
| } | |||||
| .uni-pb-5 { | |||||
| padding-bottom: 10px; | |||||
| } | |||||
| .submit-unit { | |||||
| padding: 30rpx; | |||||
| background-color: #fff; | |||||
| .title { | |||||
| font-size: 28rpx; | |||||
| font-weight: 600; | |||||
| } | |||||
| .list { | |||||
| display: flex; | |||||
| flex-wrap: wrap; | |||||
| font-size: 22rpx; | |||||
| .act { | |||||
| color: $uni-color; | |||||
| border: 1px solid $uni-color; | |||||
| background-color: #F9E7DE; | |||||
| } | |||||
| view { | |||||
| border-radius: 15rpx; | |||||
| width: 320rpx; | |||||
| background-color: #F3F3F3; | |||||
| border: 1px solid #F3F3F3; | |||||
| margin: 10rpx; | |||||
| display: flex; | |||||
| justify-content: center; | |||||
| padding: 15rpx 0; | |||||
| } | |||||
| } | |||||
| } | |||||
| </style> | </style> | ||||