复数图片上传bug

This commit is contained in:
mactj 2021-01-20 15:28:25 +08:00
parent 2f84db9e31
commit e19b458211
16 changed files with 246 additions and 117 deletions

View File

@ -8,6 +8,7 @@ import java.util.Arrays;
import com.itextpdf.styledxmlparser.jsoup.nodes.Document;
import com.ruoyi.common.utils.StringUtils;
import com.ruoyi.winery.domain.goods.GoodsMain;
import com.ruoyi.winery.utils.RichTextUtil;
import lombok.RequiredArgsConstructor;
import org.springframework.security.access.prepost.PreAuthorize;
@ -63,6 +64,7 @@ public class AppMerchantController extends BaseController {
if (StringUtils.isNotBlank(appMerchant.getMchDesc())){
lqw.eq(AppMerchant::getMchDesc ,appMerchant.getMchDesc());
}
lqw.orderByAsc(AppMerchant::getSort);
List<AppMerchant> list = iAppMerchantService.list(lqw);
return getDataTable(list);
}

View File

@ -86,6 +86,8 @@ public class GoodsMainController extends BaseController {
if (StringUtils.isNotBlank(goodsMain.getGoodsImg())) {
lqw.eq(GoodsMain::getGoodsImg, goodsMain.getGoodsImg());
}
lqw.orderByAsc(GoodsMain::getSort);
List<GoodsMain> list = iWineryGoodsService.list(lqw);
return getDataTable(list);
}
@ -119,7 +121,7 @@ public class GoodsMainController extends BaseController {
@Log(title = "商品信息", businessType = BusinessType.INSERT)
@PostMapping
public AjaxResult add(UsernamePasswordAuthenticationToken token, @RequestBody GoodsMain goodsMain) {
goodsMain.setDeptId(getDeptId());
// goodsMain.setDeptId(getDeptId());
goodsMain.setCreateBy(getUsername());
String richText = goodsMain.getGoodsDesc();
if (richText != null && StringUtils.isNotEmpty(richText)) {

View File

@ -52,6 +52,10 @@ private static final long serialVersionUID=1L;
@Excel(name = "封面图")
private String faceImage;
/** 置顶图 */
@Excel(name = "置顶图")
private String topImage;
/** 奖项信息 */
@Excel(name = "奖项信息")
private String award;
@ -71,4 +75,9 @@ private static final long serialVersionUID=1L;
/** 更新时间 */
private Date updateTime;
/**
* 排序
*/
private Integer sort;
}

View File

@ -95,4 +95,10 @@ private static final long serialVersionUID=1L;
* 状态
*/
private Integer state;
/**
* 排序
*/
private Integer sort;
}

View File

@ -3,7 +3,7 @@
.header-image {
width: 100%;
height: 200px;
height: 273px;
z-index: -1;
position: absolute;
top: 0;
@ -61,7 +61,7 @@
</style>
<template>
<image class="header-image" :src="imageDefine.HOME_TITLE_IMAGE" />
<image class="header-image" :src="imageDefine.MY_HEADER" />
<div class="container" style="margin: 10px 10px 80px 10px;">
@ -69,19 +69,30 @@
<div class="user-info">
<van-image round width="90rpx" height="90rpx" :src="user.userInfo.avatarUrl" />
<div class="user-info-msg">
<span style="font-size: 18px;">{{user.mobile}}</span>
<span style="font-size: 12px;">{{user.userInfo.nickName}}</span>
<span style="font-size: 18px;font-weight: bold;">{{user.userInfo.nickName}}</span>
<span style="font-size: 12px;">{{user.mobile}}</span>
</div>
</div>
<div class="header-grid-body-top">
<div style="display: flex;">
<span>{{user.userInfo.nickName}} </span>
<van-tag round type="primary">标签</van-tag>
<!-- <div class="header-grid-body-top">-->
<!-- <div style="display: flex;">-->
<!-- <span>{{user.userInfo.nickName}} </span>-->
<!-- <van-tag round type="primary">标签</van-tag>-->
</div>
</div>
<div class="header-grid-body-bottom">
<!-- </div>-->
<!-- </div>-->
<!-- <div class="header-grid-body-bottom">-->
<!-- <van-grid column-num="3" border="{{ false }}" style="margin-top: 15px;">-->
<!-- <van-grid-item use-slot v-for=" (item, index) in navDefine.MY_MENU1" @tap="onNavItem(item)">-->
<!-- <van-image round width="90rpx" height="90rpx" :src="item.icon" />-->
<!-- <span style="margin-top: 10px;">{{item.name}} </span>-->
<!-- </van-grid-item>-->
<!-- </van-grid>-->
<!-- </div>-->
<div class="grid-body">
<span style="margin:25px 10px 15px 10px;font-weight: bold;">我的订单</span>
<van-divider />
<van-grid column-num="3" border="{{ false }}" style="margin-top: 15px;">
<van-grid-item use-slot v-for=" (item, index) in navDefine.MY_MENU1" @tap="onNavItem(item)">
<van-image round width="90rpx" height="90rpx" :src="item.icon" />
@ -92,6 +103,7 @@
<div class="grid-body">
<span style="margin:25px 10px 15px 10px;font-weight: bold;">常用功能</span>
<van-divider />
<van-grid column-num="3" border="{{ false }}" style="margin-top: 15px;">
<van-grid-item use-slot v-for=" (item, index) in navDefine.MY_MENU2" @tap="onNavItem(item)">
<van-image round width="90rpx" height="90rpx" :src="item.icon" />
@ -100,15 +112,15 @@
</van-grid>
</div>
<div class="grid-body">
<span style="margin:25px 10px 15px 10px;font-weight: bold;">更多推荐</span>
<van-grid column-num="3" border="{{ false }}" style="margin-top: 15px;">
<van-grid-item use-slot v-for=" (item, index) in navDefine.MY_MENU3" @tap="onNavItem(item)">
<van-image round width="90rpx" height="90rpx" :src="item.icon" />
<span style="margin-top: 10px;">{{item.name}} </span>
</van-grid-item>
</van-grid>
</div>
<!-- <div class="grid-body">-->
<!-- <span style="margin:25px 10px 15px 10px;font-weight: bold;">更多推荐</span>-->
<!-- <van-grid column-num="3" border="{{ false }}" style="margin-top: 15px;">-->
<!-- <van-grid-item use-slot v-for=" (item, index) in navDefine.MY_MENU3" @tap="onNavItem(item)">-->
<!-- <van-image round width="90rpx" height="90rpx" :src="item.icon" />-->
<!-- <span style="margin-top: 10px;">{{item.name}} </span>-->
<!-- </van-grid-item>-->
<!-- </van-grid>-->
<!-- </div>-->
<div style="margin-top: 100px;" />

View File

@ -11,43 +11,50 @@ module.exports.parseImage = parseImage;
<van-nav-bar
title="福利购"
/>
<view style="margin: 10px 10px 80px 10px;">
<view class="contianer" style="margin: 10px 16px 80px 16px;">
<van-image class="banner" :src="navDefine.HOME_BANNER.image" />
<van-image class="banner" :src="imageDefine.SHOPPING_BANNER" width="686rpx"
height="96px" />
<div style="margin-top: 20px;">
<van-row gutter="20">
<van-col span="8" style="font-weight: bold;font-size: 20px;">精选推荐</van-col>
<van-col offset="10" span="6">
<div>
<van-icon name="shopping-cart-o" color="#1989fa" />
<div @tap="onShppingCar">
<van-icon name="shopping-cart-o" color="#940D46" />
<span style="margin-left: 5px;">购物车</span>
</div>
</van-col>
</van-row>
</div>
<div style="display: flex;flex-wrap: wrap;">
<div style="display: flex;flex-wrap: wrap;margin-bottom: 10px;">
<div class="filter-button" v-for="(item,index) in filterButtons">
<van-button round size="small" :color="currentFilter.dictLabel === item.dictLabel ? '#7232dd' : '#7232dd' "
:plain="currentFilter.dictLabel === item.dictLabel ? false : true" @tap="onFilterBtn(item)">{{item.dictLabel}}
<van-button round size="small" :color="currentFilter.dictLabel === item.dictLabel ? '#940D46' : '#940D46' "
:plain="currentFilter.dictLabel === item.dictLabel ? false : true" @tap="onFilterBtn(item)">
{{item.dictLabel}}
</van-button>
</div>
</div>
<view v-for="(item, index) in records" :key="index"
style="margin-top: 10px;border: #fafafa 1px solid; border-radius: 10px;">
style="margin-top: 10px;border: #fafafa 1px solid; border-radius: 10px;background-color: white;">
<van-card
:title="item.goodsName"
:desc="item.goodsAlias"
:price="item.goodsPrice"
:thumb="filters.parseImage(item.goodsFaceImg)"
@tap="onItem(item)"
>
<!-- <view slot="num" style="float:right;">-->
<!-- <div>{{'已优惠¥xx元'}}</div>-->
<!-- </view>-->
<view slot="num" style="display: flex; justify-content: space-between;align-items: center;">
<span style="color: #999;">{{item.goodsAlias}}</span>
<van-image :src="imageDefine.LIST_BAG" width="30px" height="30px" />
</view>
</van-card>
@ -68,6 +75,7 @@ import mallApis from '../../../apis/mallApis'
import defaultMix from '../../../mixins/defaultMix'
import { goodsDetailPage } from '../../../store/constant/nav/pages'
import xiao4rApis from '../../../apis/xiao4rApis'
import { navDefine } from '../../../store/constant/navDefine'
wepy.component({
store,
@ -97,17 +105,30 @@ wepy.component({
appManager.navigateTo(goodsDetailPage + `?id=${item.id}`)
},
onShppingCar() {
appManager.navigateTo(navDefine.SHOPPING_CAR_LIST)
},
onFilterBtn(item) {
this.currentFilter = item
this.init(false)
},
async init() {
async init(isFirst = true) {
this.isInit = false
if (isFirst) {
const dict = await xiao4rApis.getDicts('goods_type')
this.filterButtons = dict.data
}
const req = await mallApis.getGoodsList()
let body = {}
if (this.currentFilter.dictLabel !== '全部') {
body.goodsType = this.currentFilter.dictValue
}
const req = await mallApis.getGoodsList(body)
this.records = req.rows
@ -136,8 +157,7 @@ wepy.component({
border: #eeeeee 1px solid;
border-radius: 25px;
margin-top: 15px;
width: 100%;
height: 80px;
}
.filter-button {

View File

@ -36,7 +36,7 @@ module.exports.parseImage = parseImage;
<van-cell :title="goodsItems.goodsName" value="内容能显示多长" label="描述信息描述信息描述信息描述信息描述信息描述信息描述信息描述信息"
border="{{ false }}" />
<van-cell title="选择下单" is-link @tap="onShowSpec" />
<van-cell title="立即下单" is-link @tap="onShowSpec" />
<div style="margin: 10px 15px;">
<span>商品详情</span>
@ -72,7 +72,7 @@ module.exports.parseImage = parseImage;
<van-col offset="1" span="8">
<div style="display: flex; flex-direction: column;">
<span>购买数量</span>
<span style="font-size: 12px; color: #cccccc;">剩余:xx</span>
<span style="font-size: 12px; color: #cccccc;">剩余:{{goodsItem.goodsStock}}</span>
</div>
</van-col>
<van-col offset="7" span="8">

View File

@ -40,12 +40,6 @@
<van-loading wx:if="{{ !isInit }}" style="margin-top: 20px;"></van-loading>
<view wx:else>
<div style="display: flex;align-items: center;justify-content: start;width: 100%;margin-left: 10px;">
<van-image :src="imageDefine.ADDRESS_ADD_IMAGE" width="60rpx" height="60rpx" @tap="onAdd" />
<span style="margin-left: 10px;">添加收货地址</span>
</div>
<div v-if="records.length < 1" style="display: flex;flex-direction: column;align-items: center;width: 100%;">
<van-empty description="您还没有添加收货地址" />
@ -91,6 +85,11 @@
</div>
</div>
<van-button round type="info" size="large" @tap="onAdd" style="margin-top: 20px;">+ 新建收获地址</van-button>
</view>
</div>

View File

@ -1,6 +1,5 @@
import { imgbaseUrl, sysImgBaseUrl } from '../../baseDefine'
export const imageDefine = {
SYS_IMG_BASE_URL: sysImgBaseUrl,
TAP_BAR_ICON1_OFF: imgbaseUrl + 'nav/1.png',
@ -16,6 +15,10 @@ export const imageDefine = {
HOME_WINE_LAB: imgbaseUrl + 'icon/home_wine_lab.png',
HOME_NOTICE_ICON: imgbaseUrl + 'icon/home_wine.png',
ADDRESS_ADD_IMAGE: imgbaseUrl + 'add.png',
WINERY_HEADER: imgbaseUrl + 'winery/winery-header.png'
WINERY_HEADER: imgbaseUrl + 'winery/winery-header.png',
SHOPPING_BANNER: imgbaseUrl + 'shopping/list-banner.png',
LIST_BAG: imgbaseUrl + 'shopping/list-bag.png',
MY_HEADER: imgbaseUrl + 'my/header.png',
BBS_BG: imgbaseUrl + 'bbs/bg.gif'
}

View File

@ -90,8 +90,8 @@
.van-card__price {
display: inline-block;
font-weight: 700;
color: #ee0a24;
color: var(--card-price-color, #ee0a24);
color: #98002E;
color: var(--card-price-color, #98002E);
font-size: 12px;
font-size: var(--card-price-font-size, 12px)
}

View File

@ -2,4 +2,5 @@
ENV = 'production'
# 若依管理系统/生产环境
# VUE_APP_BASE_API = 'https://mall.xiao4r.com/api'
VUE_APP_BASE_API = '/prod-api'

View File

@ -17,6 +17,7 @@
:limit="5"
:file-list="fileList"
:on-exceed="handleExceed"
:on-change="handleChange"
list-type="picture">
<el-button size="small" type="primary">点击上传</el-button>
@ -46,10 +47,8 @@ export default {
default: "",
},
},
filters: {
image(value) {
return process.env.VUE_APP_BASE_API + "/common/file?fileName=" + value
}
watch: {
},
computed: {
@ -87,6 +86,7 @@ export default {
},
handleRemove(file, fileList) {
let temp = fileList.map(x => {
console.log(x)
return x.response.fileName
})
@ -101,11 +101,14 @@ export default {
message: "超出上传数量限制",
type: 'error'
})
},
handleChange(file, fileList) {
},
setFileList(list) {
this.fileList = list
}
},
watch: {},
}
};
</script>

View File

@ -1,12 +1,13 @@
import Vue from 'vue'
import {imageBaseUrl} from "@/settings";
Vue.filter('getImageForKey', val => {
return "https://winery-1257413599.cos.ap-beijing.myqcloud.com/" + val
return imageBaseUrl + val
})
Vue.filter('getImage200', val => {
return "https://winery-1257413599.cos.ap-beijing.myqcloud.com/" + val + "?imageMogr2/thumbnail/!200x200r/|imageMogr2/gravity/center/crop/200x200/interlace/0"
return imageBaseUrl + val + "?imageMogr2/thumbnail/!200x200r/|imageMogr2/gravity/center/crop/200x200/interlace/0"
})

View File

@ -1,4 +1,7 @@
module.exports = {
imageBaseUrl: 'https://winery-1257413599.cos.ap-beijing.myqcloud.com/',
title: '酒庄管理系统',
/**

View File

@ -105,8 +105,9 @@
<el-table v-loading="loading" :data="goodsList" @selection-change="handleSelectionChange">
<el-table-column type="selection" width="55" align="center"/>
<el-table-column label="商品ID" align="center" prop="id" v-if="false"/>
<el-table-column label="商户名称" align="center" prop="deptId" :formatter="deptFormat" width="100px"/>
<el-table-column label="商品名称" align="center" prop="goodsName"/>
<el-table-column label="商户名称" align="center" prop="deptId" :formatter="deptFormat" width="100px"/>
<el-table-column label="排序" align="center" prop="sort"/>
<el-table-column label="商品简称" align="center" prop="goodsAlias"/>
<el-table-column label="商品价格" align="center" prop="goodsPrice"/>
<el-table-column label="商品库存" align="center" prop="goodsStock"/>
@ -179,6 +180,10 @@
<el-form-item label="商品简称" prop="goodsAlias">
<el-input v-model="form.goodsAlias" placeholder="请输入商品简称"/>
</el-form-item>
<el-form-item label="排序" prop="sort">
<el-input type="number" v-model="form.sort" placeholder="请输入排序(升序)"/>
</el-form-item>
<el-form-item label="商品价格" prop="goodsPrice">
<el-input type="number" v-model="form.goodsPrice" placeholder="请输入商品价格"/>
</el-form-item>
@ -191,7 +196,7 @@
<!-- <el-input v-model="form.goodsFaceImg" placeholder="请输入商品封面" />-->
</el-form-item>
<el-form-item label="商品图片" prop="goodsImg">
<upload-image-multiple :value="form.goodsImg" @input="inputGoodsImg"/>
<upload-image-multiple id="multipleImg" ref="multipleImg" :value="form.goodsImg" @input="inputGoodsImg"/>
<!-- <el-input v-model="form.goodsImg" placeholder="请输入商品图片"/>-->
</el-form-item>
<el-form-item label="状态" prop="state">
@ -254,6 +259,8 @@ import Editor from '@/components/Editor/index';
import {listSpec} from "@/api/goods/goods_spec";
import {getDept, listDept} from "@/api/system/dept";
import {selectDictLabel} from "@/utils/ruoyi";
import * as settings from "@/settings";
import {imageBaseUrl} from "@/settings";
export default {
name: "GoodsMain",
@ -304,7 +311,8 @@ export default {
goodsPrice: undefined,
goodsStock: undefined,
deptId: undefined,
state: 0
state: undefined,
sort: undefined
},
//
form: {},
@ -359,10 +367,15 @@ export default {
//
deptFormat(row, column) {
if (this.deptOptions.length < 1) {
return ''
}
return this.deptOptions.filter(x => x.deptId === row.deptId)[0].deptName
const dept = this.deptOptions.filter(x => x.deptId === row.deptId)[0]
return dept.deptName
},
/** 查询商品信息列表 */
getList() {
@ -397,7 +410,8 @@ export default {
updateBy: undefined,
updateTime: undefined,
state: 0,
remark: undefined
remark: undefined,
sort: 10
};
this.resetForm("form");
},
@ -432,6 +446,33 @@ export default {
this.open = true;
this.title = "修改商品信息";
this.$nextTick(() => {
const imageList = this.form.goodsImg.split(',')
const fileList = []
this.$refs.multipleImg.setFileList(fileList)
imageList.forEach(x => {
fileList.push({
name: x,
url: imageBaseUrl + x,
response: {
msg: "操作成功",
fileName: x,
code: 200,
url: imageBaseUrl + x,
}
})
})
this.$refs.multipleImg.setFileList(fileList)
})
listSpec({
pageNum: 1,
pageSize: 999

View File

@ -51,7 +51,8 @@
size="mini"
@click="handleAdd"
v-hasPermi="['winery:merchant:add']"
>新增</el-button>
>新增
</el-button>
</el-col>
<el-col :span="1.5">
<el-button
@ -61,7 +62,8 @@
:disabled="single"
@click="handleUpdate"
v-hasPermi="['winery:merchant:edit']"
>修改</el-button>
>修改
</el-button>
</el-col>
<el-col :span="1.5">
<el-button
@ -71,7 +73,8 @@
:disabled="multiple"
@click="handleDelete"
v-hasPermi="['winery:merchant:remove']"
>删除</el-button>
>删除
</el-button>
</el-col>
<el-col :span="1.5">
<el-button
@ -80,7 +83,8 @@
size="mini"
@click="handleExport"
v-hasPermi="['winery:merchant:export']"
>导出</el-button>
>导出
</el-button>
</el-col>
<right-toolbar :showSearch.sync="showSearch" @queryTable="getList"></right-toolbar>
</el-row>
@ -89,10 +93,12 @@
<el-table-column type="selection" width="55" align="center"/>
<el-table-column label="ID" align="center" prop="id" v-if="false"/>
<el-table-column label="商户名称" align="center" prop="mchName"/>
<el-table-column label="排序" align="center" prop="sort"/>
<el-table-column label="副标题" align="center" prop="subtitle"/>
<el-table-column label="图标" align="center" prop="avatar">
<template slot-scope="scope">
<el-image :src="'https://winery-1257413599.cos.ap-beijing.myqcloud.com/' + scope.row.avatar" style="width: 60px; height: 60px"/>
<el-image :src="scope.row.avatar | getImageForKey"
style="width: 60px; height: 60px"/>
</template>
</el-table-column>
<!--<el-table-column label="介绍" align="center" prop="mchDesc" />-->
@ -104,14 +110,16 @@
icon="el-icon-edit"
@click="handleUpdate(scope.row)"
v-hasPermi="['winery:merchant:edit']"
>修改</el-button>
>修改
</el-button>
<el-button
size="mini"
type="text"
icon="el-icon-delete"
@click="handleDelete(scope.row)"
v-hasPermi="['winery:merchant:remove']"
>删除</el-button>
>删除
</el-button>
</template>
</el-table-column>
</el-table>
@ -130,6 +138,9 @@
<el-form-item label="商户名称" prop="mchName">
<el-input v-model="form.mchName" placeholder="请输入商户名称"/>
</el-form-item>
<el-form-item label="排序" prop="sort">
<el-input type="number" v-model="form.sort" placeholder="请输入排序(升序)"/>
</el-form-item>
<el-form-item label="副标题" prop="subtitle">
<el-input v-model="form.subtitle" placeholder="请输入副标题"/>
</el-form-item>
@ -137,9 +148,12 @@
<uploadImage v-model="form.avatar"/>
</el-form-item>
<el-form-item label="封面图" prop="faceImage">
<el-form-item label="封面图" prop="faceImage">
<uploadImage v-model="form.faceImage"/>
</el-form-item>
<el-form-item label="内容置顶图" prop="topImage">
<uploadImage v-model="form.topImage"/>
</el-form-item>
<el-form-item label="获奖信息" prop="award">
<el-input v-model="form.award" placeholder="获奖信息(多条使用英文逗号分割)"/>
@ -158,15 +172,27 @@
</template>
<script>
import { listMerchant, getMerchant, delMerchant, addMerchant, updateMerchant, exportMerchant } from "@/api/winery/merchant";
import {
listMerchant,
getMerchant,
delMerchant,
addMerchant,
updateMerchant,
exportMerchant
} from "@/api/winery/merchant";
import UploadImage from '@/components/UploadImage';
import Editor from '@/components/Editor';
import CommonMixin from "@/mixin/common";
export default {
name: "Merchant",
components: {
Editor,
UploadImage
},
mixins: {
CommonMixin
},
data() {
return {
//
@ -196,13 +222,14 @@ export default {
avatar: undefined,
mchDesc: undefined,
award: undefined,
faceImage:undefined
faceImage: undefined,
topImage: undefined,
sort: undefined
},
//
form: {},
//
rules: {
}
rules: {}
};
},
created() {