一些修改

This commit is contained in:
mactj 2021-01-20 10:39:13 +08:00
parent 51d6220271
commit 2e09cd299b
7 changed files with 112 additions and 62 deletions

View File

@ -116,6 +116,7 @@ public class GoodsMainController extends BaseController {
@PostMapping @PostMapping
public AjaxResult add(UsernamePasswordAuthenticationToken token, @RequestBody GoodsMain goodsMain) { public AjaxResult add(UsernamePasswordAuthenticationToken token, @RequestBody GoodsMain goodsMain) {
goodsMain.setDeptId(getDeptId()); goodsMain.setDeptId(getDeptId());
goodsMain.setCreateBy(getUsername());
String richText = goodsMain.getGoodsDesc(); String richText = goodsMain.getGoodsDesc();
if (richText != null && StringUtils.isNotEmpty(richText)) { if (richText != null && StringUtils.isNotEmpty(richText)) {
Document doc = RichTextUtil.setImgStyle(richText, "width: 100%"); Document doc = RichTextUtil.setImgStyle(richText, "width: 100%");

View File

@ -48,6 +48,14 @@ private static final long serialVersionUID=1L;
@Excel(name = "图标") @Excel(name = "图标")
private String avatar; private String avatar;
/** 封面图 */
@Excel(name = "封面图")
private String faceImage;
/** 奖项信息 */
@Excel(name = "奖项信息")
private String award;
/** 介绍 */ /** 介绍 */
@Excel(name = "介绍") @Excel(name = "介绍")
private String mchDesc; private String mchDesc;

View File

@ -56,6 +56,9 @@ private static final long serialVersionUID=1L;
@Excel(name = "关联规格") @Excel(name = "关联规格")
private String goodsSpec; private String goodsSpec;
@Excel(name = "库存")
private String goodsStock;
/** 商品说明 */ /** 商品说明 */
@Excel(name = "商品说明") @Excel(name = "商品说明")
private String goodsDesc; private String goodsDesc;

View File

@ -69,38 +69,21 @@ module.exports.parseImage = parseImage;
</wxs> </wxs>
<template> <template>
<van-nav-bar
bind:click-left="onBack"
border="{{false}}"
fixed
z-index="100"
custom-style="background:#AC1630;color:#FFF;"
>
<van-icon name="arrow-left" slot="left" color="#fff" />
<span style="color: #fff;" slot="title">了解酒庄</span>
</van-nav-bar>
<div class="bg" />
<div class="container" style="margin-top: 66px;">
<nav-bar title="酒庄信息" />
<van-loading v-if="!wineryItem" style="margin-top: 20px;" />
<div v-else style="margin-bottom: 80px;">
<image :src="filters.parseImage(wineryItem.avatar)" style="width: 100%;height: 750rpx;" mode="aspectFit" />
<div style="margin: 10px 15px;display: flex;flex-direction: column;">
<div style="font-size: 20px;font-weight: bold;">{{wineryItem.mchName}}</div>
<div style="font-size: 14px;color: #999999;">{{wineryItem.subtitle}}</div>
<div style="display: flex;" v-for="(item,index) in wineryDefine.WINERY_LIST" @tap="onTap(item)"> <span style="margin-top: 20px;font-weight: bold;">酒庄简介</span>
<div class="winery-item-icon"> <div style="margin-top: 10px;width:100%;">
<van-image style="margin-top: 5px;" round width="50px" height="50px" :src="userInfo.avatarUrl" /> <rich-text :nodes="wineryItem.mchDesc" />
</div>
<div class="winery-item">
<div class="fxc" style="margin-left: 20px;">
<span style="font-size: 20px;font-weight: bold;">{{item.name}}</span>
<span style="color: #999;">{{item.desc}}</span>
</div> </div>
</div> </div>
<div class="winery-item-arrow">
<van-icon name="arrow" />
</div>
</div>
</div> </div>
</template> </template>
@ -110,6 +93,7 @@ import wepy from '@wepy/core'
import store from '@/store' import store from '@/store'
import { mapActions, mapState } from '@wepy/x' import { mapActions, mapState } from '@wepy/x'
import defaultMix from '../../mixins/defaultMix' import defaultMix from '../../mixins/defaultMix'
import merchanApis from '../../apis/merchanApis'
wepy.page({ wepy.page({
store, store,
@ -117,34 +101,21 @@ wepy.page({
mixins: [defaultMix], mixins: [defaultMix],
data: { data: {
pageIndex: 0 wineryItem: null
}, },
computed: { computed: {
...mapState({ ...mapState({
'imageDefine': state => state.imageDefine, 'imageDefine': state => state.imageDefine
'userInfo': state => state.user.userInfo,
'wineryDefine': state => state.wineryDefine
}) })
}, },
methods: { methods: {
...mapActions([ ...mapActions([]),
'setUserAction'
]),
handleViewTap() {
console.log('handleVieTap clicked')
},
onTap(item) {
console.log(item)
},
onBack() {
wx.navigateBack()
},
async init(id) { async init(id) {
merchanApis.getMerchantInfo(id).then(r => {
this.wineryItem = r.data
})
} }
}, },

View File

@ -153,6 +153,8 @@ import store from '@/store'
import { mapActions, mapState } from '@wepy/x' import { mapActions, mapState } from '@wepy/x'
import defaultMix from '../../mixins/defaultMix' import defaultMix from '../../mixins/defaultMix'
import merchanApis from '../../apis/merchanApis' import merchanApis from '../../apis/merchanApis'
import appManager from '../../appManager'
import { wineryDetailPage } from '../../store/constant/nav/pages'
wepy.page({ wepy.page({
store, store,
@ -180,7 +182,7 @@ wepy.page({
console.log('handleVieTap clicked') console.log('handleVieTap clicked')
}, },
onTap(item) { onTap(item) {
console.log(item) appManager.navigateTo(wineryDetailPage + '?id=' + item.id)
}, },
onBack() { onBack() {
wx.navigateBack() wx.navigateBack()

View File

@ -1,6 +1,18 @@
<template> <template>
<div class="app-container"> <div class="app-container">
<el-form :model="queryParams" ref="queryForm" :inline="true" v-show="showSearch" label-width="68px"> <el-form :model="queryParams" ref="queryForm" :inline="true" v-show="showSearch" label-width="68px">
<el-form-item label="商品类型" prop="goodsType">
<el-select v-model="queryParams.deptId" placeholder="请选择商品商户" clearable size="small">
<el-option
v-for="dict in goodsTypeOptions"
:key="dict.dictValue"
:label="dict.dictLabel"
:value="dict.dictValue"
/>
</el-select>
</el-form-item>
<el-form-item label="商品名称" prop="goodsName"> <el-form-item label="商品名称" prop="goodsName">
<el-input <el-input
v-model="queryParams.goodsName" v-model="queryParams.goodsName"
@ -93,9 +105,13 @@
<el-table v-loading="loading" :data="goodsList" @selection-change="handleSelectionChange"> <el-table v-loading="loading" :data="goodsList" @selection-change="handleSelectionChange">
<el-table-column type="selection" width="55" align="center"/> <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="商品ID" align="center" prop="id" v-if="false"/>
<el-table-column label="商户名称" align="center" prop="deptId" :formatter="mchFormat" width="100px"/>
<el-table-column label="商品名称" align="center" prop="goodsName"/> <el-table-column label="商品名称" align="center" prop="goodsName"/>
<el-table-column label="商品简称" align="center" prop="goodsAlias"/> <el-table-column label="商品简称" align="center" prop="goodsAlias"/>
<el-table-column label="商品价格" align="center" prop="goodsPrice"/>
<el-table-column label="商品库存" align="center" prop="goodsStock"/>
<el-table-column label="商品类型" align="center" prop="goodsType" :formatter="goodsTypeFormat" width="100px"/> <el-table-column label="商品类型" align="center" prop="goodsType" :formatter="goodsTypeFormat" width="100px"/>
<!-- <el-table-column label="关联规格" align="center" prop="goodsSpec"/>--> <!-- <el-table-column label="关联规格" align="center" prop="goodsSpec"/>-->
<!-- <el-table-column label="商品说明" align="center" prop="goodsDesc"/>--> <!-- <el-table-column label="商品说明" align="center" prop="goodsDesc"/>-->
<el-table-column label="商品封面" align="center" prop="goodsFaceImg"> <el-table-column label="商品封面" align="center" prop="goodsFaceImg">
@ -146,6 +162,17 @@
<el-dialog :title="title" :visible.sync="open" width="1000px" append-to-body> <el-dialog :title="title" :visible.sync="open" width="1000px" append-to-body>
<el-form ref="form" :model="form" :rules="rules" label-width="80px"> <el-form ref="form" :model="form" :rules="rules" label-width="80px">
<el-form-item label="商户" prop="deptId">
<el-select v-model="form.deptId" placeholder="请选择商户">
<el-option
v-for="dict in mchOptions"
:key="dict.dictValue"
:label="dict.dictLabel"
:value="dict.dictValue"
/>
</el-select>
</el-form-item>
<el-form-item label="商品名称" prop="goodsName"> <el-form-item label="商品名称" prop="goodsName">
<el-input v-model="form.goodsName" placeholder="请输入商品名称"/> <el-input v-model="form.goodsName" placeholder="请输入商品名称"/>
</el-form-item> </el-form-item>
@ -155,6 +182,10 @@
<el-form-item label="商品价格" prop="goodsPrice"> <el-form-item label="商品价格" prop="goodsPrice">
<el-input type="number" v-model="form.goodsPrice" placeholder="请输入商品价格"/> <el-input type="number" v-model="form.goodsPrice" placeholder="请输入商品价格"/>
</el-form-item> </el-form-item>
<el-form-item label="库存" prop="goodsStock">
<el-input type="number" v-model="form.goodsStock" placeholder="请输入商品库存"/>
</el-form-item>
<el-form-item label="商品封面" prop="goodsFaceImg"> <el-form-item label="商品封面" prop="goodsFaceImg">
<upload-image :value="form.goodsFaceImg" @input="inputGoodsFaceImg"/> <upload-image :value="form.goodsFaceImg" @input="inputGoodsFaceImg"/>
<!-- <el-input v-model="form.goodsFaceImg" placeholder="请输入商品封面" />--> <!-- <el-input v-model="form.goodsFaceImg" placeholder="请输入商品封面" />-->
@ -166,22 +197,29 @@
<el-form-item label="状态" prop="state"> <el-form-item label="状态" prop="state">
<el-radio-group v-model="form.state"> <el-radio-group v-model="form.state">
<el-radio v-for="(dict, index) in stateOptions" :key="index" :label="parseInt(dict.dictValue)">{{dict.dictLabel}}</el-radio> <el-radio v-for="(dict, index) in stateOptions" :key="index" :label="parseInt(dict.dictValue)">
{{dict.dictLabel}}
</el-radio>
</el-radio-group> </el-radio-group>
</el-form-item> </el-form-item>
<el-form-item label="商品类型" prop="goodsType"> <el-form-item label="商品类型" prop="goodsType">
<el-select v-model="form.goodsType" placeholder="请选择商品类型"> <el-select v-model="form.goodsType" placeholder="请选择商品类型">
<el-option label="请选择字典生成" value=""/> <el-option
v-for="dict in goodsTypeOptions"
:key="dict.dictValue"
:label="dict.dictLabel"
:value="dict.dictValue"
/>
</el-select> </el-select>
</el-form-item> </el-form-item>
<el-form-item label="关联规格" prop="goodsSpec"> <!-- <el-form-item label="关联规格" prop="goodsSpec">-->
<!-- <el-input v-model="form.goodsSpec" type="textarea" placeholder="请输入内容"/>--> <!-- &lt;!&ndash; <el-input v-model="form.goodsSpec" type="textarea" placeholder="请输入内容"/>&ndash;&gt;-->
<el-transfer v-model="selectedSpecData" :data="specData" filterable <!-- <el-transfer v-model="selectedSpecData" :data="specData" filterable-->
:titles="['商品列表','已关联商品']" <!-- :titles="['商品列表','已关联商品']"-->
:button-texts="['取消关联', '关联商品']" <!-- :button-texts="['取消关联', '关联商品']"-->
@change="handleChangeSpec" <!-- @change="handleChangeSpec"-->
></el-transfer> <!-- ></el-transfer>-->
</el-form-item> <!-- </el-form-item>-->
<el-form-item label="商品说明" prop="goodsDesc"> <el-form-item label="商品说明" prop="goodsDesc">
<!-- <el-input v-model="form.goodsDesc" placeholder="请输入商品说明"/>--> <!-- <el-input v-model="form.goodsDesc" placeholder="请输入商品说明"/>-->
<editor :value="form.goodsDesc" :height="400" :min-height="400" @on-change="onChangeGoodsDesc"/> <editor :value="form.goodsDesc" :height="400" :min-height="400" @on-change="onChangeGoodsDesc"/>
@ -249,6 +287,8 @@ export default {
stateOptions: [], stateOptions: [],
// //
goodsTypeOptions: [], goodsTypeOptions: [],
//
mchOptions: [],
// //
queryParams: { queryParams: {
pageNum: 1, pageNum: 1,
@ -261,7 +301,8 @@ export default {
goodsFaceImg: undefined, goodsFaceImg: undefined,
goodsImg: undefined, goodsImg: undefined,
goodsPrice: undefined, goodsPrice: undefined,
state: undefined goodsStock: undefined,
state: 0
}, },
// //
form: {}, form: {},
@ -289,6 +330,10 @@ export default {
this.getDicts("goods_type").then(response => { this.getDicts("goods_type").then(response => {
this.goodsTypeOptions = response.data; this.goodsTypeOptions = response.data;
}); });
this.getDicts("merchant_dept").then(response => {
this.mchOptions = response.data;
});
}, },
methods: { methods: {
inputGoodsFaceImg(fileName) { inputGoodsFaceImg(fileName) {
@ -307,6 +352,11 @@ export default {
goodsTypeFormat(row, column) { goodsTypeFormat(row, column) {
return this.selectDictLabel(this.goodsTypeOptions, row.goodsType); return this.selectDictLabel(this.goodsTypeOptions, row.goodsType);
}, },
//
mchFormat(row, column) {
return this.selectDictLabel(this.mchOptions, row.deptId);
},
/** 查询商品信息列表 */ /** 查询商品信息列表 */
getList() { getList() {
this.loading = true; this.loading = true;
@ -329,6 +379,7 @@ export default {
goodsAlias: undefined, goodsAlias: undefined,
goodsType: undefined, goodsType: undefined,
goodsSpec: undefined, goodsSpec: undefined,
goodsStock: undefined,
goodsDesc: undefined, goodsDesc: undefined,
goodsFaceImg: undefined, goodsFaceImg: undefined,
goodsImg: undefined, goodsImg: undefined,
@ -337,6 +388,7 @@ export default {
createTime: undefined, createTime: undefined,
updateBy: undefined, updateBy: undefined,
updateTime: undefined, updateTime: undefined,
state: 0,
remark: undefined remark: undefined
}; };
this.resetForm("form"); this.resetForm("form");

View File

@ -136,6 +136,15 @@
<el-form-item label="图标" prop="avatar"> <el-form-item label="图标" prop="avatar">
<uploadImage v-model="form.avatar"/> <uploadImage v-model="form.avatar"/>
</el-form-item> </el-form-item>
<el-form-item label="封面大图" prop="faceImage">
<uploadImage v-model="form.faceImage"/>
</el-form-item>
<el-form-item label="获奖信息" prop="award">
<el-input v-model="form.award" placeholder="获奖信息(多条使用英文逗号分割)" />
</el-form-item>
<el-form-item label="介绍" prop="mchDesc"> <el-form-item label="介绍" prop="mchDesc">
<editor :value="form.mchDesc" :height="400" :min-height="400" @on-change="onChangeNewsBody"/> <editor :value="form.mchDesc" :height="400" :min-height="400" @on-change="onChangeNewsBody"/>
</el-form-item> </el-form-item>
@ -186,6 +195,8 @@ export default {
subtitle: undefined, subtitle: undefined,
avatar: undefined, avatar: undefined,
mchDesc: undefined, mchDesc: undefined,
award: undefined,
faceImage:undefined
}, },
// //
form: {}, form: {},
@ -221,7 +232,9 @@ export default {
avatar: undefined, avatar: undefined,
mchDesc: undefined, mchDesc: undefined,
createTime: undefined, createTime: undefined,
updateTime: undefined updateTime: undefined,
award: undefined,
faceImage:undefined
}; };
this.resetForm("form"); this.resetForm("form");
}, },