mirror of
https://gitee.com/niucloud-team/javashop.git
synced 2026-04-25 11:18:23 +00:00
商城插件更新
This commit is contained in:
parent
0acb40ddd4
commit
ecb1212a2b
@ -42,7 +42,7 @@
|
||||
</el-form-item>
|
||||
|
||||
<el-form-item prop="address">
|
||||
<el-input v-model.trim="formData.address" clearable :placeholder="t('addressPlaceholder')" class="input-width"/>
|
||||
<el-input v-model.trim="formData.address" clearable :placeholder="t('addressPlaceholder')" @input="areaChange()" class="input-width"/>
|
||||
</el-form-item>
|
||||
|
||||
<el-form-item>
|
||||
@ -326,7 +326,8 @@ const areaChange = debounce(() => {
|
||||
const address = [
|
||||
formData.province_id ? provinceRef.value.states.selectedLabel : '',
|
||||
formData.city_id ? cityRef.value.states.selectedLabel : '',
|
||||
formData.district_id ? districtRef.value.states.selectedLabel : ''
|
||||
formData.district_id ? districtRef.value.states.selectedLabel : '',
|
||||
formData.address
|
||||
]
|
||||
|
||||
addressToLatLng({ mapKey, address: address.join('') }).then(({ message, result }) => {
|
||||
|
||||
@ -1,63 +1,63 @@
|
||||
<template>
|
||||
<div class="main-container">
|
||||
<div class="main-container">
|
||||
<el-card class="card !border-none mb-[15px]" shadow="never">
|
||||
<el-page-header :content="id ? t('updateStore') : t('addStore')" :icon="ArrowLeft" @back="back" />
|
||||
</el-card>
|
||||
<el-card class="box-card !border-none" shadow="never" v-loading="loading">
|
||||
<el-form :model="formData" label-width="140px" ref="formRef" :rules="formRules" class="page-form">
|
||||
<el-form-item :label="t('storeName')" prop="store_name">
|
||||
<el-input v-model.trim="formData.store_name" clearable :placeholder="t('storeNamePlaceholder')"
|
||||
class="input-width" />
|
||||
</el-form-item>
|
||||
<el-form-item :label="t('storeDesc')">
|
||||
<el-input v-model.trim="formData.store_desc" type="textarea" rows="4" clearable
|
||||
:placeholder="t('storeDescPlaceholder')" class="input-width" />
|
||||
</el-form-item>
|
||||
<el-form-item :label="t('storeLogo')">
|
||||
<upload-image v-model="formData.store_logo" />
|
||||
</el-form-item>
|
||||
<el-form-item :label="t('storeMobile')" prop="store_mobile">
|
||||
<el-input v-model.trim="formData.store_mobile" clearable :placeholder="t('storeMobilePlaceholder')"
|
||||
class="input-width" @keyup="filterNumber($event)"
|
||||
@blur="formData.store_mobile = $event.target.value" />
|
||||
</el-form-item>
|
||||
<el-form-item :label="t('tradeTime')" prop="trade_time">
|
||||
<div>
|
||||
<el-input v-model.trim="formData.trade_time" clearable :placeholder="t('tradeTimePlaceholder')"
|
||||
class="input-width" />
|
||||
<p class="text-[12px] text-[#999]">{{ t('tradeTimeTips') }}</p>
|
||||
</div>
|
||||
</el-form-item>
|
||||
<el-form-item :label="t('storeAddress')" prop="address_area">
|
||||
<el-select v-model="formData.province_id" value-key="id" clearable class="w-[200px]" ref="provinceRef">
|
||||
<el-option :label="t('provincePlaceholder')" :value="0"/>
|
||||
<el-option v-for="(item, index) in areaList.province" :key="index" :label="item.name" :value="item.id"/>
|
||||
</el-select>
|
||||
<el-select v-model="formData.city_id" value-key="id" clearable class="w-[200px] ml-3" ref="cityRef">
|
||||
<el-option :label="t('cityPlaceholder')" :value="0"/>
|
||||
<el-option v-for="(item, index) in areaList.city " :key="index" :label="item.name" :value="item.id"/>
|
||||
</el-select>
|
||||
<el-select v-model="formData.district_id" value-key="id" clearable class="w-[200px] ml-3" ref="districtRef">
|
||||
<el-option :label="t('districtPlaceholder')" :value="0"/>
|
||||
<el-option v-for="(item, index) in areaList.district " :key="index" :label="item.name" :value="item.id"/>
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
<el-form-item prop="address">
|
||||
<el-input v-model.trim="formData.address" clearable :placeholder="t('addressPlaceholder')" class="input-width"/>
|
||||
</el-form-item>
|
||||
<el-card class="box-card !border-none" shadow="never" v-loading="loading">
|
||||
<el-form :model="formData" label-width="140px" ref="formRef" :rules="formRules" class="page-form">
|
||||
<el-form-item :label="t('storeName')" prop="store_name">
|
||||
<el-input v-model.trim="formData.store_name" clearable :placeholder="t('storeNamePlaceholder')"
|
||||
class="input-width" />
|
||||
</el-form-item>
|
||||
<el-form-item :label="t('storeDesc')">
|
||||
<el-input v-model.trim="formData.store_desc" type="textarea" rows="4" clearable
|
||||
:placeholder="t('storeDescPlaceholder')" class="input-width" />
|
||||
</el-form-item>
|
||||
<el-form-item :label="t('storeLogo')">
|
||||
<upload-image v-model="formData.store_logo" />
|
||||
</el-form-item>
|
||||
<el-form-item :label="t('storeMobile')" prop="store_mobile">
|
||||
<el-input v-model.trim="formData.store_mobile" clearable :placeholder="t('storeMobilePlaceholder')"
|
||||
class="input-width" @keyup="filterNumber($event)"
|
||||
@blur="formData.store_mobile = $event.target.value" />
|
||||
</el-form-item>
|
||||
<el-form-item :label="t('tradeTime')" prop="trade_time">
|
||||
<div>
|
||||
<el-input v-model.trim="formData.trade_time" clearable :placeholder="t('tradeTimePlaceholder')"
|
||||
class="input-width" />
|
||||
<p class="text-[12px] text-[#999]">{{ t('tradeTimeTips') }}</p>
|
||||
</div>
|
||||
</el-form-item>
|
||||
<el-form-item :label="t('storeAddress')" prop="address_area">
|
||||
<el-select v-model="formData.province_id" value-key="id" clearable class="w-[200px]" ref="provinceRef">
|
||||
<el-option :label="t('provincePlaceholder')" :value="0"/>
|
||||
<el-option v-for="(item, index) in areaList.province" :key="index" :label="item.name" :value="item.id"/>
|
||||
</el-select>
|
||||
<el-select v-model="formData.city_id" value-key="id" clearable class="w-[200px] ml-3" ref="cityRef">
|
||||
<el-option :label="t('cityPlaceholder')" :value="0"/>
|
||||
<el-option v-for="(item, index) in areaList.city " :key="index" :label="item.name" :value="item.id"/>
|
||||
</el-select>
|
||||
<el-select v-model="formData.district_id" value-key="id" clearable class="w-[200px] ml-3" ref="districtRef">
|
||||
<el-option :label="t('districtPlaceholder')" :value="0"/>
|
||||
<el-option v-for="(item, index) in areaList.district " :key="index" :label="item.name" :value="item.id"/>
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
<el-form-item prop="address">
|
||||
<el-input v-model.trim="formData.address" clearable :placeholder="t('addressPlaceholder')" @input="areaChange()" class="input-width"/>
|
||||
</el-form-item>
|
||||
|
||||
<el-form-item>
|
||||
<div id="container" class="w-[800px] h-[520px] relative" v-loading="mapLoading"></div>
|
||||
</el-form-item>
|
||||
</el-form>
|
||||
</el-card>
|
||||
<div class="fixed-footer-wrap">
|
||||
<div class="fixed-footer !z-[9999]">
|
||||
<el-button type="primary" @click="onSave(formRef)">{{ t('save') }}</el-button>
|
||||
<el-button @click="back()">{{ t('cancel') }}</el-button>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<el-form-item>
|
||||
<div id="container" class="w-[800px] h-[520px] relative" v-loading="mapLoading"></div>
|
||||
</el-form-item>
|
||||
</el-form>
|
||||
</el-card>
|
||||
<div class="fixed-footer-wrap">
|
||||
<div class="fixed-footer !z-[9999]">
|
||||
<el-button type="primary" @click="onSave(formRef)">{{ t('save') }}</el-button>
|
||||
<el-button @click="back()">{{ t('cancel') }}</el-button>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script lang="ts" setup>
|
||||
@ -112,7 +112,7 @@ onMounted(() => {
|
||||
})
|
||||
|
||||
/**
|
||||
* 初始化地图
|
||||
* 初始化地图
|
||||
*/
|
||||
let map: any
|
||||
let marker: any
|
||||
@ -172,8 +172,8 @@ const latLngChange = (lat: number, lng: number) => {
|
||||
}
|
||||
|
||||
/**
|
||||
* 表单数据
|
||||
*/
|
||||
* 表单数据
|
||||
*/
|
||||
const initialFormData = {
|
||||
store_id: 0,
|
||||
store_name: '',
|
||||
@ -276,7 +276,7 @@ watch(() => formData.province_id, (nval) => {
|
||||
})
|
||||
|
||||
/**
|
||||
* 获取区
|
||||
* 获取区
|
||||
*/
|
||||
watch(() => formData.city_id, (nval) => {
|
||||
if (nval) {
|
||||
@ -316,7 +316,8 @@ const areaChange = debounce(() => {
|
||||
const address = [
|
||||
formData.province_id ? provinceRef.value.states.selectedLabel : '',
|
||||
formData.city_id ? cityRef.value.states.selectedLabel : '',
|
||||
formData.district_id ? districtRef.value.states.selectedLabel : ''
|
||||
formData.district_id ? districtRef.value.states.selectedLabel : '',
|
||||
formData.address
|
||||
]
|
||||
|
||||
addressToLatLng({ mapKey, address: address.join('') }).then(({ message, result }) => {
|
||||
@ -350,7 +351,7 @@ watch(() => storeArea.province_id, (nval) => {
|
||||
})
|
||||
|
||||
/**
|
||||
* 地图点选获取区
|
||||
* 地图点选获取区
|
||||
*/
|
||||
watch(() => storeArea.city_id, (nval) => {
|
||||
if (nval) {
|
||||
@ -379,8 +380,8 @@ const onSave = async (formEl: FormInstance | undefined) => {
|
||||
|
||||
const data = formData
|
||||
formData.province_name = formData.province_id ? provinceRef.value.states.selectedLabel : '',
|
||||
formData.city_name = formData.city_id ? cityRef.value.states.selectedLabel : '',
|
||||
formData.district_name = formData.district_id ? districtRef.value.states.selectedLabel : ''
|
||||
formData.city_name = formData.city_id ? cityRef.value.states.selectedLabel : '',
|
||||
formData.district_name = formData.district_id ? districtRef.value.states.selectedLabel : ''
|
||||
const address = [
|
||||
data.province_id ? provinceRef.value.states.selectedLabel : '',
|
||||
data.city_id ? cityRef.value.states.selectedLabel : '',
|
||||
|
||||
Binary file not shown.
@ -47,12 +47,12 @@ public class ShopOrderDeliveryController {
|
||||
}
|
||||
|
||||
@GetMapping("/delivery/package")
|
||||
public Result<ShopOrderDeliveryInfoVo> getOrderPackage(Integer id, String mobile) {
|
||||
public Result<ShopOrderDeliveryInfoVo> getOrderPackage(@RequestParam(name = "id") Integer id, @RequestParam(name = "mobile") String mobile) {
|
||||
return Result.success(shopOrderDeliveryService.getDeliveryPackage(id, mobile));
|
||||
}
|
||||
|
||||
@GetMapping("'delivery/package/list")
|
||||
public Result<List<ShopOrderDeliveryListVo>> getDeliveryPackageList(Integer orderId) {
|
||||
public Result<List<ShopOrderDeliveryListVo>> getDeliveryPackageList(@RequestParam(name = "order_id") Integer orderId) {
|
||||
|
||||
return Result.success(shopOrderDeliveryService.getDeliveryPackageList(orderId));
|
||||
}
|
||||
|
||||
@ -800,13 +800,6 @@ public class ShopGoodsServiceImpl implements IShopGoodsService {
|
||||
Integer page = pageParam.getPage();
|
||||
Integer limit = pageParam.getLimit();
|
||||
|
||||
// 查询已选的
|
||||
if (ObjectUtil.isNotEmpty(searchParam.getSkuIds())) {
|
||||
List<Integer> goodsIds = shopGoodsSkuMapper.selectList(new QueryWrapper<ShopGoodsSku>().in("sku_id", searchParam.getSkuIds()).groupBy("goods_id").select("sku_id"))
|
||||
.stream().map(i -> i.getSkuId()).collect(Collectors.toList());
|
||||
if (goodsIds.size() > 0 && ObjectUtil.isEmpty(searchParam.getGoodsIds())) searchParam.setGoodsIds(goodsIds);
|
||||
}
|
||||
|
||||
MPJQueryWrapper<ShopGoods> queryWrapper = new MPJQueryWrapper<>();
|
||||
queryWrapper.setAlias("g")
|
||||
.innerJoin("?_shop_goods_sku gs ON g.goods_id = gs.goods_id AND gs.is_default = 1".replace("?_", GlobalConfig.tablePrefix));
|
||||
|
||||
@ -198,6 +198,9 @@ public class ShopCartServiceImpl implements IShopCartService {
|
||||
res.setPromotionMoney(data.getPromotionMoney());
|
||||
res.setGoodsMoney(data.getGoodsMoney());
|
||||
res.setOrderMoney(data.getGoodsMoney().subtract(data.getPromotionMoney()));
|
||||
if (res.getOrderMoney().compareTo(BigDecimal.ZERO) < 0) {
|
||||
res.setOrderMoney(BigDecimal.ZERO);
|
||||
}
|
||||
List<ShopCartCalculateVo.Goods> goodsList = data.getGoodsList();
|
||||
List<ShopCartCalculateResVo.Goods> matchList = new ArrayList<>();
|
||||
for (ShopCartCalculateVo.Goods goods : goodsList) {
|
||||
|
||||
@ -352,7 +352,7 @@ public class GoodsServiceImpl implements IGoodsService {
|
||||
JSONObject memberPriceConfig = ObjectUtil.isNotEmpty(item.getMemberPrice()) ? JSONUtil.parseObj(item.getMemberPrice()) : new JSONObject();
|
||||
skuVo.setMemberPrice(calculateMemberPrice(memberLevel, goods.getMemberDiscount(), memberPriceConfig, item.getPrice()));
|
||||
} else {
|
||||
skuVo.setMemberPrice(sku.getPrice());
|
||||
skuVo.setMemberPrice(item.getPrice());
|
||||
}
|
||||
skuListVo.add(skuVo);
|
||||
}
|
||||
|
||||
@ -280,11 +280,11 @@ public class CoreManjianServiceImpl extends ServiceImpl<ShopManjianMapper, ShopM
|
||||
}
|
||||
if (rule.getBool("is_give_point")) {
|
||||
rule.put("point", rule.getBigDecimal("point", BigDecimal.ZERO).multiply(new BigDecimal(cycleNum)));
|
||||
gift.put("point", rule.getBigDecimal("point", BigDecimal.ZERO).multiply(new BigDecimal(cycleNum)));
|
||||
gift.put("point", rule.getBigDecimal("point"));
|
||||
}
|
||||
if (rule.getBool("is_give_balance")) {
|
||||
rule.put("balance", rule.getBigDecimal("balance", BigDecimal.ZERO).multiply(new BigDecimal(cycleNum)));
|
||||
gift.put("balance", rule.getBigDecimal("balance", BigDecimal.ZERO).multiply(new BigDecimal(cycleNum)));
|
||||
gift.put("balance", rule.getBigDecimal("balance"));
|
||||
}
|
||||
if (rule.getBool("is_give_coupon")) {
|
||||
JSONArray giftCoupon = rule.getJSONArray("coupon");
|
||||
@ -300,9 +300,7 @@ public class CoreManjianServiceImpl extends ServiceImpl<ShopManjianMapper, ShopM
|
||||
} else {
|
||||
coupon.put("coupon_name", "满" + couponManjian.getMinConditionMoney() + "元减" + couponManjian.getPrice() + "元券");
|
||||
}
|
||||
if (couponManjian.getRemainCount() > 0 && couponManjian.getLimitCount() > couponManjian.getReceiveCount()) {
|
||||
updatedGiftCoupon.add(coupon);
|
||||
}
|
||||
updatedGiftCoupon.add(coupon);
|
||||
}
|
||||
}
|
||||
rule.put("coupon", updatedGiftCoupon);
|
||||
|
||||
@ -243,7 +243,7 @@ public class CoreOrderBatchDeliveryServiceImpl implements ICoreOrderBatchDeliver
|
||||
|
||||
Integer itemExpressCompanyId = 0;
|
||||
OrderDeliveryTypeEnum deliveryType = OrderDeliveryTypeEnum.NONE_EXPRESS;
|
||||
if (row.getCompanyName().equals("无需物流")) {
|
||||
if (!row.getCompanyName().equals("无需物流")) {
|
||||
deliveryType = OrderDeliveryTypeEnum.EXPRESS;
|
||||
if (!companyMap.containsKey(row.getCompanyName())) {
|
||||
throw new RuntimeException("物流公司不存在");
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
@ -65,7 +65,7 @@
|
||||
</view>
|
||||
</template>
|
||||
</view>
|
||||
<view v-if="item.manjian_info && Object.keys(item.manjian_info).length && item.manjian_info.is_show" class="flex items-center mt-[8rpx] mb-[auto]" @click.stop="manjianOpenFn(item.manjian_info)">
|
||||
<view v-if="item.manjian_info && Object.keys(item.manjian_info).length && item.manjian_info.is_join" class="flex items-center mt-[8rpx] mb-[auto]" @click.stop="manjianOpenFn(item.manjian_info)">
|
||||
<view class="bg-[var(--primary-color-light)] text-[var(--primary-color)] rounded-[6rpx] text-[20rpx] flex items-center justify-center w-[88rpx] h-[36rpx] mr-[6rpx]">满减送</view>
|
||||
<text class="text-[22rpx] text-[#999]">{{item.manjian_info.manjian_name}}</text>
|
||||
</view>
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user