提交 63aa2301 authored 作者: zgy's avatar zgy

修改商品管理

上级 422ed863
package com.platform.controller;
import com.platform.entity.TbCfItemDescEntity;
import com.platform.service.TbCfItemDescService;
import com.platform.utils.PageUtils;
import com.platform.utils.Query;
import com.platform.utils.R;
import org.apache.shiro.authz.annotation.RequiresPermissions;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.ResponseBody;
import java.util.List;
import java.util.Map;
/**
* Controller
*
* @author lipengjun
* @date 2019-12-23 14:28:47
*/
@Controller
@RequestMapping("tbcfitemdesc")
public class TbCfItemDescController {
@Autowired
private TbCfItemDescService tbCfItemDescService;
/**
* 查看列表
*/
@RequestMapping("/list")
@RequiresPermissions("tbcfitemdesc:list")
@ResponseBody
public R list(@RequestParam Map<String, Object> params) {
//查询列表数据
Query query = new Query(params);
List<TbCfItemDescEntity> tbCfItemDescList = tbCfItemDescService.queryList(query);
int total = tbCfItemDescService.queryTotal(query);
PageUtils pageUtil = new PageUtils(tbCfItemDescList, total, query.getLimit(), query.getPage());
return R.ok().put("page", pageUtil);
}
/**
* 查看信息
*/
@RequestMapping("/info/{itemId}")
@RequiresPermissions("tbcfitemdesc:info")
@ResponseBody
public R info(@PathVariable("itemId") String itemId) {
TbCfItemDescEntity tbCfItemDesc = tbCfItemDescService.queryObject(itemId);
return R.ok().put("tbCfItemDesc", tbCfItemDesc);
}
/**
* 保存
*/
@RequestMapping("/save")
@RequiresPermissions("tbcfitemdesc:save")
@ResponseBody
public R save(@RequestBody TbCfItemDescEntity tbCfItemDesc) {
tbCfItemDescService.save(tbCfItemDesc);
return R.ok();
}
/**
* 修改
*/
@RequestMapping("/update")
@RequiresPermissions("tbcfitemdesc:update")
@ResponseBody
public R update(@RequestBody TbCfItemDescEntity tbCfItemDesc) {
tbCfItemDescService.update(tbCfItemDesc);
return R.ok();
}
/**
* 删除
*/
@RequestMapping("/delete")
@RequiresPermissions("tbcfitemdesc:delete")
@ResponseBody
public R delete(@RequestBody String[] itemIds) {
tbCfItemDescService.deleteBatch(itemIds);
return R.ok();
}
/**
* 查看所有列表
*/
@RequestMapping("/queryAll")
@ResponseBody
public R queryAll(@RequestParam Map<String, Object> params) {
List<TbCfItemDescEntity> list = tbCfItemDescService.queryList(params);
return R.ok().put("list", list);
}
}
...@@ -92,9 +92,8 @@ public class TbCfStationItemController extends ApiBaseAction { ...@@ -92,9 +92,8 @@ public class TbCfStationItemController extends ApiBaseAction {
@RequestMapping("/save") @RequestMapping("/save")
@RequiresPermissions("tbcfstationitem:save") @RequiresPermissions("tbcfstationitem:save")
@ResponseBody @ResponseBody
public R save(@RequestBody TbCfStationItemEntity tbCfStationItem) { public R save(@RequestBody TbCfStationItemEntity tbCfStationItem, String itemDesc) {
tbCfStationItemService.save(tbCfStationItem); tbCfStationItemService.save(tbCfStationItem, itemDesc);
return R.ok(); return R.ok();
} }
...@@ -104,8 +103,8 @@ public class TbCfStationItemController extends ApiBaseAction { ...@@ -104,8 +103,8 @@ public class TbCfStationItemController extends ApiBaseAction {
@RequestMapping("/update") @RequestMapping("/update")
@RequiresPermissions("tbcfstationitem:update") @RequiresPermissions("tbcfstationitem:update")
@ResponseBody @ResponseBody
public R update(@RequestBody TbCfStationItemEntity tbCfStationItem) { public R update(@RequestBody TbCfStationItemEntity tbCfStationItem, String itemDesc) {
tbCfStationItemService.update(tbCfStationItem); tbCfStationItemService.update(tbCfStationItem, itemDesc);
return R.ok(); return R.ok();
} }
...@@ -156,6 +155,13 @@ public class TbCfStationItemController extends ApiBaseAction { ...@@ -156,6 +155,13 @@ public class TbCfStationItemController extends ApiBaseAction {
return R.ok().put("descripiton", descripiton); return R.ok().put("descripiton", descripiton);
} }
/**
* 修改商品状态
*
* @param status
* @param itemIds
* @return
*/
@RequestMapping("/changeItemStatus") @RequestMapping("/changeItemStatus")
@RequiresPermissions("tbcfstationitem:changeItemStatus") @RequiresPermissions("tbcfstationitem:changeItemStatus")
@ResponseBody @ResponseBody
......
package com.platform.dao;
import com.platform.entity.TbCfItemDescEntity;
import org.apache.ibatis.annotations.Param;
/**
* Dao
*
* @author lipengjun
* @date 2019-12-23 14:28:47
*/
public interface TbCfItemDescDao extends BaseDao<TbCfItemDescEntity> {
int changeItemDescStatus(@Param("status") Integer status, @Param("itemIds") String[] itemIds);
}
package com.platform.entity;
import java.io.Serializable;
import java.util.Date;
/**
* 实体
* 表名 tb_cf_item_desc
*
* @author lipengjun
* @date 2019-12-23 14:28:47
*/
public class TbCfItemDescEntity implements Serializable {
private static final long serialVersionUID = 1L;
/**
* 商品ID
*/
private String itemId;
/**
* 商品描述
*/
private String itemDesc;
/**
* 删除标志
*/
private Integer delFlag;
/**
* 创建时间
*/
private Date createTime;
/**
* 更新时间
*/
private Date updateTime;
/**
* 设置:商品ID
*/
public void setItemId(String itemId) {
this.itemId = itemId;
}
/**
* 获取:商品ID
*/
public String getItemId() {
return itemId;
}
/**
* 设置:商品描述
*/
public void setItemDesc(String itemDesc) {
this.itemDesc = itemDesc;
}
/**
* 获取:商品描述
*/
public String getItemDesc() {
return itemDesc;
}
/**
* 设置:删除标志
*/
public void setDelFlag(Integer delFlag) {
this.delFlag = delFlag;
}
/**
* 获取:删除标志
*/
public Integer getDelFlag() {
return delFlag;
}
/**
* 设置:创建时间
*/
public void setCreateTime(Date createTime) {
this.createTime = createTime;
}
/**
* 获取:创建时间
*/
public Date getCreateTime() {
return createTime;
}
/**
* 设置:更新时间
*/
public void setUpdateTime(Date updateTime) {
this.updateTime = updateTime;
}
/**
* 获取:更新时间
*/
public Date getUpdateTime() {
return updateTime;
}
}
...@@ -8,6 +8,15 @@ public class TbCfStationItemEntityExtends extends TbCfStationItemEntity implemen ...@@ -8,6 +8,15 @@ public class TbCfStationItemEntityExtends extends TbCfStationItemEntity implemen
private String dname; private String dname;
private String title; private String title;
private String goodtype; private String goodtype;
private String itemDesc;
public String getItemDesc() {
return itemDesc;
}
public void setItemDesc(String itemDesc) {
this.itemDesc = itemDesc;
}
public String getDname() { public String getDname() {
return dname; return dname;
......
package com.platform.service;
import com.platform.entity.TbCfItemDescEntity;
import java.util.List;
import java.util.Map;
/**
* Service接口
*
* @author lipengjun
* @date 2019-12-23 14:28:47
*/
public interface TbCfItemDescService {
/**
* 根据主键查询实体
*
* @param id 主键
* @return 实体
*/
TbCfItemDescEntity queryObject(String itemId);
/**
* 分页查询
*
* @param map 参数
* @return list
*/
List<TbCfItemDescEntity> queryList(Map<String, Object> map);
/**
* 分页统计总数
*
* @param map 参数
* @return 总数
*/
int queryTotal(Map<String, Object> map);
/**
* 保存实体
*
* @param tbCfItemDesc 实体
* @return 保存条数
*/
int save(TbCfItemDescEntity tbCfItemDesc);
/**
* 根据主键更新实体
*
* @param tbCfItemDesc 实体
* @return 更新条数
*/
int update(TbCfItemDescEntity tbCfItemDesc);
/**
* 根据主键删除
*
* @param itemId
* @return 删除条数
*/
int delete(String itemId);
/**
* 根据主键批量删除
*
* @param itemIds
* @return 删除条数
*/
int deleteBatch(String[] itemIds);
}
...@@ -44,7 +44,7 @@ public interface TbCfStationItemService { ...@@ -44,7 +44,7 @@ public interface TbCfStationItemService {
* @param tbCfStationItem 实体 * @param tbCfStationItem 实体
* @return 保存条数 * @return 保存条数
*/ */
int save(TbCfStationItemEntity tbCfStationItem); void save(TbCfStationItemEntity tbCfStationItem,String itemDesc);
/** /**
* 根据主键更新实体 * 根据主键更新实体
...@@ -52,7 +52,7 @@ public interface TbCfStationItemService { ...@@ -52,7 +52,7 @@ public interface TbCfStationItemService {
* @param tbCfStationItem 实体 * @param tbCfStationItem 实体
* @return 更新条数 * @return 更新条数
*/ */
int update(TbCfStationItemEntity tbCfStationItem); void update(TbCfStationItemEntity tbCfStationItem, String itemDesc);
/** /**
* 根据主键删除 * 根据主键删除
...@@ -60,7 +60,7 @@ public interface TbCfStationItemService { ...@@ -60,7 +60,7 @@ public interface TbCfStationItemService {
* @param itemId * @param itemId
* @return 删除条数 * @return 删除条数
*/ */
int delete(String itemId); void delete(String itemId);
/** /**
* 根据主键批量删除 * 根据主键批量删除
...@@ -68,7 +68,7 @@ public interface TbCfStationItemService { ...@@ -68,7 +68,7 @@ public interface TbCfStationItemService {
* @param itemIds * @param itemIds
* @return 删除条数 * @return 删除条数
*/ */
int deleteBatch(String[] itemIds); void deleteBatch(String[] itemIds);
/** /**
* 修改商品状态 * 修改商品状态
...@@ -76,5 +76,5 @@ public interface TbCfStationItemService { ...@@ -76,5 +76,5 @@ public interface TbCfStationItemService {
* @param itemIds * @param itemIds
* @return * @return
*/ */
int changeItemStatus(Integer status,String[] itemIds); void changeItemStatus(Integer status,String[] itemIds);
} }
package com.platform.service.impl;
import com.platform.dao.TbCfItemDescDao;
import com.platform.entity.TbCfItemDescEntity;
import com.platform.service.TbCfItemDescService;
import com.platform.utils.IdUtil;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.util.List;
import java.util.Map;
/**
* Service实现类
*
* @author lipengjun
* @date 2019-12-23 14:28:47
*/
@Service("tbCfItemDescService")
public class TbCfItemDescServiceImpl implements TbCfItemDescService {
@Autowired
private TbCfItemDescDao tbCfItemDescDao;
@Override
public TbCfItemDescEntity queryObject(String itemId) {
return tbCfItemDescDao.queryObject(itemId);
}
@Override
public List<TbCfItemDescEntity> queryList(Map<String, Object> map) {
return tbCfItemDescDao.queryList(map);
}
@Override
public int queryTotal(Map<String, Object> map) {
return tbCfItemDescDao.queryTotal(map);
}
@Override
public int save(TbCfItemDescEntity tbCfItemDesc) {
tbCfItemDesc.setItemId(IdUtil.createIdbyUUID());
return tbCfItemDescDao.save(tbCfItemDesc);
}
@Override
public int update(TbCfItemDescEntity tbCfItemDesc) {
return tbCfItemDescDao.update(tbCfItemDesc);
}
@Override
public int delete(String itemId) {
return tbCfItemDescDao.delete(itemId);
}
@Override
public int deleteBatch(String[] itemIds) {
return tbCfItemDescDao.deleteBatch(itemIds);
}
}
package com.platform.service.impl; package com.platform.service.impl;
import com.platform.dao.TbCfItemDescDao;
import com.platform.dao.TbCfStationItemDao; import com.platform.dao.TbCfStationItemDao;
import com.platform.entity.TbCfItemDescEntity;
import com.platform.entity.TbCfStationItemEntity; import com.platform.entity.TbCfStationItemEntity;
import com.platform.service.TbCfStationItemService; import com.platform.service.TbCfStationItemService;
import com.platform.utils.IdUtil; import com.platform.utils.IdUtil;
import com.platform.utils.util.StringUtil;
import org.apache.commons.lang.StringUtils;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
...@@ -22,6 +26,9 @@ public class TbCfStationItemServiceImpl implements TbCfStationItemService { ...@@ -22,6 +26,9 @@ public class TbCfStationItemServiceImpl implements TbCfStationItemService {
@Autowired @Autowired
private TbCfStationItemDao tbCfStationItemDao; private TbCfStationItemDao tbCfStationItemDao;
@Autowired
private TbCfItemDescDao tbCfItemDescDao;
@Override @Override
public TbCfStationItemEntity queryObject(String itemId) { public TbCfStationItemEntity queryObject(String itemId) {
return tbCfStationItemDao.queryObject(itemId); return tbCfStationItemDao.queryObject(itemId);
...@@ -38,30 +45,48 @@ public class TbCfStationItemServiceImpl implements TbCfStationItemService { ...@@ -38,30 +45,48 @@ public class TbCfStationItemServiceImpl implements TbCfStationItemService {
} }
@Override @Override
public int save(TbCfStationItemEntity tbCfStationItem) { public void save(TbCfStationItemEntity tbCfStationItem, String itemDesc) {
tbCfStationItem.setItemId(IdUtil.createIdbyUUID()); String itemId = IdUtil.createIdbyUUID();
tbCfStationItem.setItemId(itemId);
tbCfStationItem.setCreateTime(new Date()); tbCfStationItem.setCreateTime(new Date());
tbCfStationItem.setItemNum(0L); tbCfStationItem.setItemNum(0L);
return tbCfStationItemDao.save(tbCfStationItem); TbCfItemDescEntity itemDescEntity = new TbCfItemDescEntity();
itemDescEntity.setItemId(itemId);
itemDescEntity.setCreateTime(new Date());
itemDescEntity.setUpdateTime(new Date());
itemDescEntity.setItemDesc(itemDesc);
itemDescEntity.setDelFlag(1);
tbCfStationItemDao.save(tbCfStationItem);
tbCfItemDescDao.save(itemDescEntity);
} }
@Override @Override
public int update(TbCfStationItemEntity tbCfStationItem) { public void update(TbCfStationItemEntity tbCfStationItem, String itemDesc) {
return tbCfStationItemDao.update(tbCfStationItem); TbCfItemDescEntity itemDescEntity = tbCfItemDescDao.queryObject(tbCfStationItem.getItemId());
if (itemDescEntity != null) {
itemDescEntity.setUpdateTime(new Date());
itemDescEntity.setItemDesc(itemDesc);
tbCfItemDescDao.update(itemDescEntity);
}
tbCfStationItemDao.update(tbCfStationItem);
} }
@Override @Override
public int delete(String itemId) { public void delete(String itemId) {
return tbCfStationItemDao.delete(itemId); tbCfStationItemDao.delete(itemId);
tbCfItemDescDao.delete(itemId);
} }
@Override @Override
public int deleteBatch(String[] itemIds) { public void deleteBatch(String[] itemIds) {
return tbCfStationItemDao.deleteBatch(itemIds); tbCfStationItemDao.deleteBatch(itemIds);
tbCfItemDescDao.deleteBatch(itemIds);
} }
@Override @Override
public int changeItemStatus(Integer status, String[] itemIds) { public void changeItemStatus(Integer status, String[] itemIds) {
return tbCfStationItemDao.changeItemStatus(status, itemIds); tbCfStationItemDao.changeItemStatus(status, itemIds);
tbCfItemDescDao.changeItemDescStatus(status, itemIds);
} }
} }
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.platform.dao.TbCfItemDescDao">
<resultMap type="com.platform.entity.TbCfItemDescEntity" id="tbCfItemDescMap">
<result property="itemId" column="item_id"/>
<result property="itemDesc" column="item_desc"/>
<result property="delFlag" column="del_flag"/>
<result property="createTime" column="create_time"/>
<result property="updateTime" column="update_time"/>
</resultMap>
<select id="queryObject" resultType="com.platform.entity.TbCfItemDescEntity">
select
`item_id`,
`item_desc`,
`del_flag`,
`create_time`,
`update_time`
from tb_cf_item_desc
where item_id = #{id}
</select>
<select id="queryList" resultType="com.platform.entity.TbCfItemDescEntity">
select
`item_id`,
`item_desc`,
`del_flag`,
`create_time`,
`update_time`
from tb_cf_item_desc
WHERE 1=1
<if test="name != null and name.trim() != ''">
AND name LIKE concat('%',#{name},'%')
</if>
<choose>
<when test="sidx != null and sidx.trim() != ''">
order by ${sidx} ${order}
</when>
<otherwise>
order by item_id desc
</otherwise>
</choose>
<if test="offset != null and limit != null">
limit #{offset}, #{limit}
</if>
</select>
<select id="queryTotal" resultType="int">
select count(*) from tb_cf_item_desc
WHERE 1=1
<if test="name != null and name.trim() != ''">
AND name LIKE concat('%',#{name},'%')
</if>
</select>
<insert id="save" parameterType="com.platform.entity.TbCfItemDescEntity">
insert into tb_cf_item_desc(
`item_id`,
`item_desc`,
`del_flag`,
`create_time`,
`update_time`)
values(
#{itemId},
#{itemDesc},
#{delFlag},
#{createTime},
#{updateTime})
</insert>
<update id="update" parameterType="com.platform.entity.TbCfItemDescEntity">
update tb_cf_item_desc
<set>
<if test="itemDesc != null">`item_desc` = #{itemDesc},</if>
<if test="delFlag != null">`del_flag` = #{delFlag},</if>
<if test="createTime != null">`create_time` = #{createTime},</if>
<if test="updateTime != null">`update_time` = #{updateTime}</if>
</set>
where item_id = #{itemId}
</update>
<delete id="delete">
delete from tb_cf_item_desc where item_id = #{value}
</delete>
<delete id="deleteBatch">
delete from tb_cf_item_desc where item_id in
<foreach item="itemId" collection="array" open="(" separator="," close=")">
#{itemId}
</foreach>
</delete>
<update id="changeItemDescStatus">
update tb_cf_item_desc set del_flag=#{status} where item_id in
<foreach item="itemId" collection="itemIds" open="(" separator="," close=")">
#{itemId}
</foreach>
</update>
</mapper>
\ No newline at end of file
...@@ -25,9 +25,9 @@ ...@@ -25,9 +25,9 @@
<result property="itemDescritionId" column="item_descrition_id"/> <result property="itemDescritionId" column="item_descrition_id"/>
</resultMap> </resultMap>
<select id="queryObject" resultType="com.platform.entity.TbCfStationItemEntity"> <select id="queryObject" resultType="com.platform.entity.TbCfStationItemEntityExtends">
select select
`item_id`, i.item_id,
`item_code`, `item_code`,
`item_name`, `item_name`,
`item_brief`, `item_brief`,
...@@ -43,11 +43,12 @@ ...@@ -43,11 +43,12 @@
`platform_code`, `platform_code`,
`platform_name`, `platform_name`,
`enable_flag`, `enable_flag`,
`create_time`, i.create_time,
`item_categorytwo`, `item_categorytwo`,
`item_descrition_id` `item_descrition_id`,
from tb_cf_station_item item_desc itemDesc
where item_id = #{id} from tb_cf_station_item i left join tb_cf_item_desc d on i.item_id=d.item_id
where i.item_id = #{id}
</select> </select>
<select id="queryList" resultType="com.platform.entity.TbCfStationItemEntityExtends"> <select id="queryList" resultType="com.platform.entity.TbCfStationItemEntityExtends">
...@@ -60,7 +61,7 @@ ...@@ -60,7 +61,7 @@
i.item_price, i.item_price,
i.item_url, i.item_url,
i.item_img, i.item_img,
i.item_count, i.item_count,
i.item_num, i.item_num,
i.platform_code, i.platform_code,
i.platform_name, i.platform_name,
...@@ -85,6 +86,9 @@ ...@@ -85,6 +86,9 @@
<if test="code != null and code.trim() != ''"> <if test="code != null and code.trim() != ''">
AND item_code=#{code} AND item_code=#{code}
</if> </if>
<if test="status != null and status.trim() != ''">
AND enable_flag=#{status}
</if>
<choose> <choose>
<when test="sidx != null and sidx.trim() != ''"> <when test="sidx != null and sidx.trim() != ''">
order by ${sidx} ${order} order by ${sidx} ${order}
...@@ -108,6 +112,9 @@ ...@@ -108,6 +112,9 @@
<if test="code != null and code.trim() != ''"> <if test="code != null and code.trim() != ''">
AND item_code=#{code} AND item_code=#{code}
</if> </if>
<if test="status != null and status.trim() != ''">
AND enable_flag=#{status}
</if>
</select> </select>
<insert id="save" parameterType="com.platform.entity.TbCfStationItemEntity"> <insert id="save" parameterType="com.platform.entity.TbCfStationItemEntity">
......
...@@ -4,6 +4,80 @@ ...@@ -4,6 +4,80 @@
<title>站点商品</title> <title>站点商品</title>
#parse("sys/header.html") #parse("sys/header.html")
<style> <style>
ul>li{
list-style: none;
}
.container{
width:800px;
color:#515a6e;
margin-left:0;
}
.container p{
line-height: auto;
padding-bottom:10px;
}
/* .container .title{border-bottom: 1px solid #f3f3f3;} */
.container .title>span:first-child{
padding-right: 80px;
}
/* 表单内容 */
.container .form-wrapper{
width:100%;
border: 1px solid #eee;
padding:5px;
}
.container .form-wrapper>h4{border-bottom: 1px solid #eee;padding:6px;}
.container .form-wrapper>ul{list-style: none;}
.container .form-wrapper>ul>li{
padding:10px;
}
.container .form-wrapper .f-select{
width:80px;
border-radius: 2px;
outline: none;
margin-right:50px;
}
.container option {
background: white;
border:white;
}
.container textarea{
vertical-align: top;
margin-right: 20px;
}
.slide-enter-active, .slide-leave-active {
transition: all 0.6s ease;
}
.slide-enter, .slide-leave-active {
transform: translate3d(50px, 0, 0);
opacity: 0;
}
/* 预览 */
.container .form-prev{
padding:5px;
}
.container .form-prev>h4{
border-top: 1px solid #eee;padding:6px;
}
.container .prev-li{
display: flex;
justify-content: start;
}
.ivu-tag{padding:2px 8px;}
.container .prev-li>div{
margin-left:5px;
display: flex;
flex-direction: column;
justify-content: space-between;
align-items: center;
margin-right: 30px;
/* width:100px; */
}
.container .prev-del{
height:25px;
transform: translateY(20px);
line-height: 50%;
}
.ui-jqgrid .ui-jqgrid-bdiv { .ui-jqgrid .ui-jqgrid-bdiv {
height: auto !important; height: auto !important;
} }
...@@ -11,51 +85,97 @@ ...@@ -11,51 +85,97 @@
.ivu-row { .ivu-row {
margin: 5px; margin: 5px;
position: relative; position: relative;
margin-left: 0; margin-left: 15px;
margin-right: 0; margin-right: 0;
height: auto; height: auto;
zoom: 1; zoom: 1;
display: block; display: block;
padding: 8px 0; padding: 15px 0;
}
.second {
margin-top: 15px;
margin-left: 15px;
}
.querydatas {
margin-left: 5px;
}
.query {
float: right;
margin-right: 200px;
} }
</style> </style>
</head> </head>
<body> <body>
<div id="rrapp" v-cloak > <div id="rrapp" v-cloak>
<div v-show="showList"> <div v-show="showList">
<Row :gutter="16"> <Row :gutter="16">
<div class="search-group"> <div class="first">
<i-col span="4"> <div class="querydatas">
<i-input v-model="q.code" @on-enter="query" placeholder="商品编号"> <div class="search-group">
<span slot="prepend">商品编号:</span> &nbsp;&nbsp;&nbsp;&nbsp;
<span>
商品编号:
<i-input v-model="q.code" @on-enter="query" placeholder="商品编号" style="width:160px">
</i-input> </i-input>
</i-col> </span>
<i-col span="4"> &nbsp;&nbsp;&nbsp;&nbsp;
<i-input v-model="q.name" @on-enter="query" placeholder="商品名称"> <span>
<span slot="prepend">商品名称:</span> 商品名称:
<i-input v-model="q.name" @on-enter="query" placeholder="商品名称" style="width:160px">
</i-input> </i-input>
</i-col> </span>
<i-button @click="query" type="primary"><i class="fa fa-search"></i>查询</i-button> &nbsp;&nbsp;&nbsp;&nbsp;
<i-button @click="reloadSearch" type="primary"><i class="fa fa-refresh"></i>重置</i-button> <span>
商品状态:
<i-select v-model="q.status" @on-enter="query" placeholder="商品状态" style="width:160px">
<i-option value="1">在线销售</i-option>
<i-option value="2">已下架</i-option>
<i-option value="0">已删除</i-option>
</i-select>
</span>
</div>
<div class="query">
<i-button @click="query" type="primary"><i class="fa fa-search"></i>查询</i-button>
&nbsp;&nbsp;&nbsp;&nbsp;
<i-button @click="reloadSearch" type="primary"><i class="fa fa-refresh"></i>重置</i-button>
</div>
</div>
</div> </div>
<div class="buttons-group"> <br/>
#if($shiro.hasPermission("tbcfstationitem:save")) <hr/>
<i-button type="info" @click="add"><i class="fa fa-plus"></i>&nbsp;新增</i-button> <div class="second">
#end <div class="buttons-group">
#if($shiro.hasPermission("tbcfstationitem:update")) #if($shiro.hasPermission("tbcfstationitem:save"))
<i-button type="warning" @click="update"><i class="fa fa-pencil-square-o"></i>&nbsp;修改</i-button> <i-button type="info" @click="add"><i class="fa fa-plus"></i>&nbsp;新增</i-button>
#end #end
#if($shiro.hasPermission("tbcfstationitem:changeItemStatus")) #if($shiro.hasPermission("tbcfstationitem:update"))
<i-button type="success" @click="changeItemStatus(1)"><i class="fa fa-arrow-up"></i>&nbsp;上架 <i-button type="warning" @click="update"><i class="fa fa-pencil-square-o"></i>&nbsp;修改</i-button>
</i-button> #end
#end #if($shiro.hasPermission("tbcfstationitem:changeItemStatus"))
#if($shiro.hasPermission("tbcfstationitem:changeItemStatus")) <i-button type="success" @click="changeItemStatus(1)"><i class="fa fa-arrow-up"></i>&nbsp;上架
<i-button type="warning" @click="changeItemStatus(2)"><i class="fa fa-arrow-down"></i>&nbsp;下架 </i-button>
</i-button> #end
#end #if($shiro.hasPermission("tbcfstationitem:changeItemStatus"))
#if($shiro.hasPermission("tbcfstationitem:delete")) <i-button type="warning" @click="changeItemStatus(2)"><i class="fa fa-arrow-down"></i>&nbsp;下架
<i-button type="error" @click="changeItemStatus(0)"><i class="fa fa-trash-o"></i>&nbsp;删除</i-button> </i-button>
#end #end
<!-- #if($shiro.hasPermission("tbcfstationitem:import"))
<i-button type="primary" @click="import"><i class="fa fa-chevron-up"></i>&nbsp;导入
</i-button>
#end
#if($shiro.hasPermission("tbcfstationitem:export"))
<i-button type="info" @click="export"><i class="fa fa-chevron-down"></i>&nbsp;导出
</i-button>
#end-->
#if($shiro.hasPermission("tbcfstationitem:delete"))
<i-button type="error" @click="changeItemStatus(0)"><i class="fa fa-trash-o"></i>&nbsp;删除</i-button>
#end
</div>
</div> </div>
</Row> </Row>
<table id="jqGrid"></table> <table id="jqGrid"></table>
...@@ -63,22 +183,27 @@ ...@@ -63,22 +183,27 @@
<Card v-show="!showList"> <Card v-show="!showList">
<p slot="title">{{title}}</p> <p slot="title">{{title}}</p>
<i-form ref="formValidate" :model="tbCfStationItem" :rules="ruleValidate" :label-width="80"> <i-form ref="formValidate" :model="tbCfStationItem" :rules="ruleValidate" :label-width="80">
<Form-item label="商品编号" prop="itemCode"> <Form-item label="商品编号" prop="itemCode" style="width: 800px">
<i-input v-model="tbCfStationItem.itemCode" placeholder="商品编号"/> <i-input v-model="tbCfStationItem.itemCode" placeholder="商品编号"/>
</Form-item> </Form-item>
<Form-item label="商品名称" prop="itemName"> <Form-item label="商品名称" prop="itemName" style="width: 800px">
<i-input v-model="tbCfStationItem.itemName" placeholder="商品名字"/> <i-input v-model="tbCfStationItem.itemName" placeholder="商品名字"/>
</Form-item> </Form-item>
<Form-item label="商品标题" prop="itemBrief"> <Form-item label="商品标题" prop="itemBrief" style="width: 800px">
<i-input v-model="tbCfStationItem.itemBrief" placeholder="商品标题简介"/> <i-input v-model="tbCfStationItem.itemBrief" placeholder="商品标题"/>
</Form-item> </Form-item>
<!-- <Form-item label="商品链接" prop="itemUrl"> <!-- <Form-item label="商品链接" prop="itemUrl">
<i-input v-model="tbCfStationItem.itemUrl" placeholder="商品链接"/> <i-input v-model="tbCfStationItem.itemUrl" placeholder="商品链接"/>
</Form-item>--> </Form-item>-->
<Form-item label="商品价格" prop="itemPrice"> <Form-item label="商品标签" prop="itemTags" style="width: 800px">
<i-input v-model="tbCfStationItem.itemTags" placeholder="商品标签"/>
</Form-item>
<Form-item label="商品价格" prop="itemPrice" style="width: 800px">
<i-input v-model="tbCfStationItem.itemPrice" placeholder="商品价格"/> <i-input v-model="tbCfStationItem.itemPrice" placeholder="商品价格"/>
</Form-item> </Form-item>
<Form-item label="商品库存" prop="item_count" style="width: 800px">
<i-input v-model="tbCfStationItem.itemCount" placeholder="商品库存"/>
</Form-item>
<Form-item label="商品图片" prop="itemImg"> <Form-item label="商品图片" prop="itemImg">
<!-- <i-input v-model="xPicture.pictureUrl" placeholder="图片地址"/> --> <!-- <i-input v-model="xPicture.pictureUrl" placeholder="图片地址"/> -->
<upload <upload
...@@ -97,43 +222,98 @@ ...@@ -97,43 +222,98 @@
</div> </div>
</div> </div>
</Form-item> </Form-item>
<!-- <Form-item label="商品一级分类" prop="itemCategory" style="width: 800px">
<Form-item label="商品图片" prop="itemImg">
<img v-bind:src="tbCfStationItem.itemImg" style="width:200px;height:200px;" v-show="!!tbCfStationItem.itemImg"/>
<input type="file" placeholder="商品图片" @change="tirggerFile($event)"/>
</Form-item>
-->
<!--<Form-item label="所属平台" prop="platformCode">
<i-input v-model="tbCfStationItem.platformCode" placeholder="所属平台"/>
</Form-item>
<Form-item label="平台名" prop="platformName">
<i-input v-model="tbCfStationItem.platformName" placeholder="平台名"/>
</Form-item>-->
<Form-item label="状态" prop="enableFlag">
<i-input v-model="tbCfStationItem.enableFlag" placeholder="状态"/>
</Form-item>
<Form-item label="商品一级分类" prop="itemCategory">
<i-select placeholder="请选择" v-model="tbCfStationItem.itemCategory" @on-change="changeGoodstype"> <i-select placeholder="请选择" v-model="tbCfStationItem.itemCategory" @on-change="changeGoodstype">
<i-option v-for="(el,i) in Goodstype" :key='i' <i-option v-for="(el,i) in Goodstype" :key='i'
:value="el.goodstypeId">{{el.goodstypeTitle}} :value="el.goodstypeId">{{el.goodstypeTitle}}
</i-option> </i-option>
</i-select> </i-select>
</Form-item> </Form-item>
<Form-item label="商品二级分类" prop="itemCategorytwo"> <Form-item label="商品二级分类" prop="itemCategorytwo" style="width: 800px">
<i-select placeholder="请选择" v-model="tbCfStationItem.itemCategorytwo" @on-change="changeGoodstype2"> <i-select placeholder="请选择" v-model="tbCfStationItem.itemCategorytwo" @on-change="changeGoodstype2">
<i-option v-for="(el,i) in Goodstype2" :key='i' <i-option v-for="(el,i) in Goodstype2" :key='i'
:value="el.goodstwotypeId">{{el.goodstwotypeTitle}} :value="el.goodstwotypeId">{{el.goodstwotypeTitle}}
</i-option> </i-option>
</i-select> </i-select>
</Form-item> </Form-item>
<Form-item label="商品品名" prop="itemDescritionId"> <Form-item label="商品品名" prop="itemDescritionId" style="width: 800px">
<i-select placeholder="请选择" v-model="tbCfStationItem.itemDescritionId"> <i-select placeholder="请选择" v-model="tbCfStationItem.itemDescritionId">
<i-option v-for="(el,i) in Goodstype3" :key='i' <i-option v-for="(el,i) in Goodstype3" :key='i'
:value="el.descripitionId">{{el.descripitionName}} :value="el.descripitionId">{{el.descripitionName}}
</i-option> </i-option>
</i-select> </i-select>
</Form-item> </Form-item>
<Card class="container">
<!-- 标头 -->
<p class="title">
<span><i style="color: red;">*</i>多属性</span>
<i-switch size="large" v-model="putaway">
<Icon type="md-checkmark"></Icon>
<Icon type="md-close"></Icon>
</i-switch>
<span>立即上架</span>
</p>
<!-- 选项 -->
<section class="form-wrapper">
<h4>选项</h4>
<transition-group tag="ul" name="slide">
<li v-for="(el,i) in attrItem" :key="i">
<h6>选项{{i+1}}</h6>
<label>属性</label>
<select class="f-select" v-model="el.selected">
<option v-for="(option,index) in el.option">{{option}}</option>
</select>
<textarea @input="handleChangeContent" v-model="el.content" cols="60" rows="2" placeholder="请用逗号隔开各个选项"></textarea>
<!-- <i-button type="error" @click="delAttr(i)">删除</i-button> -->
<i-button type="error" @click="confirmDel(i)">删除</i-button>
</li>
</transition-group>
<i-button
style="margin-left:10px;margin-bottom:10px;margin-top:10px;"
type="success"
@click="addAttr"
>新增其它选项</i-button>
<!-- 预览 -->
<section class="form-prev">
<h4>预览</h4>
<transition-group tag="ul" name="slide">
<li class="prev-li" v-for="(el,i) in prevItem" :key="i">
<div class="prev-attr">
<span>{{el.skuStrName}}</span>
<Tag size="large" color="geekblue">{{el.skuStrCombination}}</Tagsize="medium">
</div>
<div class="prev-price">
<span>价格</span>
<i-input v-model='el.price' size="small" placeholder="USD" />
</div>
<div class="prev-count">
<span>数量</span>
<i-input v-model='el.num' size="small" type="number" placeholder="0" />
</div>
<i-button class="prev-del" type="warning"@click="del(i)" >删除</i-button>
</li>
</transition-group>
</section>
<i-button style="margin-left:10px;" type="primary" @click='save'>保存</i-button>
</section>
</Card>
<!-- 删除警告 -->
<Modal
v-model="alertShow"
@on-ok="delAttr">
<p>确认删除此属性</p>
</Modal>
<br/>
<br/>
<Form-item label="商品描述" prop="itemDesc">
<!-- <script id="Detail" name="tbCfVersion.versionDetail"type="text/plain">${pd.COLLSORT_DETAILS}</script>-->
<textarea id="itemDesc" style="width: 800px;height: 600px;"></textarea>
</Form-item>
<Form-item> <Form-item>
<i-button type="primary" @click="handleSubmit('formValidate')">提交</i-button> <i-button type="primary" @click="handleSubmit('formValidate')">提交</i-button>
<i-button type="warning" @click="reload" style="margin-left: 8px"/> <i-button type="warning" @click="reload" style="margin-left: 8px"/>
...@@ -142,8 +322,20 @@ ...@@ -142,8 +322,20 @@
</Form-item> </Form-item>
</i-form> </i-form>
</Card> </Card>
</div> </div>
<script src="${rc.contextPath}/js/sys/tbcfstationitem.js?_${date.systemTime}"></script> <script src="${rc.contextPath}/js/sys/tbcfstationitem.js?_${date.systemTime}"></script>
<script type="text/javascript">
var content = UE.getEditor('itemDesc');
UE.Editor.prototype._bkGetActionUrl = UE.Editor.prototype.getActionUrl;
UE.Editor.prototype.getActionUrl = function (action) {
if (action == 'uploadimage' || action == 'uploadscrawl' || action == 'uploadimage') {
return '${rc.contextPath}/api/osstest/uploaditemimage';
} else {
return this._bkGetActionUrl.call(this, action);
}
};
</script>
</body> </body>
</html> </html>
\ No newline at end of file
...@@ -6,7 +6,7 @@ $(function () { ...@@ -6,7 +6,7 @@ $(function () {
{label: '商品图片', name: 'itemImg', index: 'item_img', width: 35, formatter: imageFormat}, {label: '商品图片', name: 'itemImg', index: 'item_img', width: 35, formatter: imageFormat},
{label: '商品编号', name: 'itemCode', index: 'item_code', width: 60}, {label: '商品编号', name: 'itemCode', index: 'item_code', width: 60},
{label: '商品名称', name: 'itemName', index: 'item_name', width: 160}, {label: '商品名称', name: 'itemName', index: 'item_name', width: 160},
/* {label: '商品标题', name: 'itemBrief', index: 'item_brief', width: 120},*/ /* {label: '商品标题', name: 'itemBrief', index: 'item_brief', width: 120},*/
/*{label: '商品链接', name: 'itemUrl', index: 'item_url', width: 80,formatter:linkFormat},*/ /*{label: '商品链接', name: 'itemUrl', index: 'item_url', width: 80,formatter:linkFormat},*/
{label: '商品价格', name: 'itemPrice', index: 'item_price', width: 45}, {label: '商品价格', name: 'itemPrice', index: 'item_price', width: 45},
{label: '库存', name: 'itemCount', index: 'item_count', width: 45}, {label: '库存', name: 'itemCount', index: 'item_count', width: 45},
...@@ -16,9 +16,9 @@ $(function () { ...@@ -16,9 +16,9 @@ $(function () {
{label: '商品一级分类', name: 'goodtype', index: 'goodtype', width: 80}, {label: '商品一级分类', name: 'goodtype', index: 'goodtype', width: 80},
{label: '商品二级分类', name: 'title', index: 'title', width: 80}, {label: '商品二级分类', name: 'title', index: 'title', width: 80},
{label: '商品品名', name: 'dname', index: 'itemDescritionId', width: 80}, {label: '商品品名', name: 'dname', index: 'itemDescritionId', width: 80},
{label: '状态', name: 'enableFlag', index: 'enable_flag', width: 60, formatter: itemStatusFormat}, {label: '状态', name: 'enableFlag', index: 'enable_flag', width: 60, formatter: itemStatusFormat},
{label: '创建日期', name: 'createTime', index: 'create_time', width: 80} {label: '创建日期', name: 'createTime', index: 'create_time', width: 80}
] ]
}); });
}); });
...@@ -38,8 +38,21 @@ let vm = new Vue({ ...@@ -38,8 +38,21 @@ let vm = new Vue({
] ]
}, },
q: { q: {
name: '' name: '',
} code: '',
status: ''
},
alertShow:false,//警告弹窗
attrItem:[{
selected:'尺寸',
option:['颜色','尺寸','长度'],
content:''
}],//属性设置
prevItem:[],//组合数组
delIndex:null,
putaway:false//是否立即上架
}, },
methods: { methods: {
//获取一级分类 //获取一级分类
...@@ -81,6 +94,9 @@ let vm = new Vue({ ...@@ -81,6 +94,9 @@ let vm = new Vue({
vm.showList = false; vm.showList = false;
vm.title = "新增"; vm.title = "新增";
vm.tbCfStationItem = {}; vm.tbCfStationItem = {};
this.uploadList.length = 0;
// vm.tbCfStationItem.itemImg = "";
UE.getEditor('itemDesc').setContent("");
}, },
update: function (event) { update: function (event) {
let itemId = getSelectedRow("#jqGrid"); let itemId = getSelectedRow("#jqGrid");
...@@ -94,7 +110,10 @@ let vm = new Vue({ ...@@ -94,7 +110,10 @@ let vm = new Vue({
}, },
saveOrUpdate: function (event) { saveOrUpdate: function (event) {
vm.tbCfStationItem.itemImg = vm.uploadList[0]; vm.tbCfStationItem.itemImg = vm.uploadList[0];
let url = vm.tbCfStationItem.itemId == null ? "../tbcfstationitem/save" : "../tbcfstationitem/update"; vm.tbCfStationItem.itemDesc = encodeURI(UE.getEditor('itemDesc').getContent()); // 富文本取值
let itemDesc = vm.tbCfStationItem.itemDesc.replace(/&nbsp;/g, " ");
let url = vm.tbCfStationItem.itemId == null ? "../tbcfstationitem/save?itemDesc=" + itemDesc : "../tbcfstationitem/update?itemDesc=" + itemDesc;
Ajax.request({ Ajax.request({
url: url, url: url,
params: JSON.stringify(vm.tbCfStationItem), params: JSON.stringify(vm.tbCfStationItem),
...@@ -151,14 +170,34 @@ let vm = new Vue({ ...@@ -151,14 +170,34 @@ let vm = new Vue({
successCallback: function (r) { successCallback: function (r) {
vm.tbCfStationItem = r.tbCfStationItem; vm.tbCfStationItem = r.tbCfStationItem;
vm.uploadList[0] = vm.tbCfStationItem.itemImg; vm.uploadList[0] = vm.tbCfStationItem.itemImg;
let itemDesc = vm.tbCfStationItem.itemDesc;
UE.getEditor('itemDesc').setContent(itemDesc);
if (itemDesc == null || itemDesc == '') {
UE.getEditor('itemDesc').setContent("");
}
} }
}); });
},
import: function () {
let itemIds = getSelectedRows("#jqGrid");
if (itemIds == null) {
return;
}
},
export: function () {
let itemIds = getSelectedRows("#jqGrid");
if (itemIds == null) {
return;
}
}, },
reload: function (event) { reload: function (event) {
vm.showList = true; vm.showList = true;
let page = $("#jqGrid").jqGrid('getGridParam', 'page'); let page = $("#jqGrid").jqGrid('getGridParam', 'page');
$("#jqGrid").jqGrid('setGridParam', { $("#jqGrid").jqGrid('setGridParam', {
postData: {'name': vm.q.name,'code':vm.q.code}, postData: {'name': vm.q.name.trim(), 'code': vm.q.code.trim(), 'status': vm.q.status.trim()},
page: page page: page
}).trigger("reloadGrid"); }).trigger("reloadGrid");
vm.handleReset('formValidate'); vm.handleReset('formValidate');
...@@ -166,7 +205,8 @@ let vm = new Vue({ ...@@ -166,7 +205,8 @@ let vm = new Vue({
reloadSearch: function () { reloadSearch: function () {
vm.q = { vm.q = {
name: '', name: '',
code: '' code: '',
status: ''
}; };
vm.reload(); vm.reload();
}, },
...@@ -274,6 +314,94 @@ let vm = new Vue({ ...@@ -274,6 +314,94 @@ let vm = new Vue({
} }
}, },
/* 添加属性 */
addAttr(){
if(this.attrItem.length>2){
this.$Message.info('最多添加三种属性');
}else{
this.attrItem.push({selected:'颜色',option:['颜色','尺寸','长度'],content:''})
}
},
/* 删除属性 */
delAttr(){
let arr=new Array();
this.attrItem.map((item,index)=>{
if(this.delIndex!==index){
arr.push(item)
}
})
this.delIndex = null
this.attrItem = arr
this.handleChangeContent()
},
/* 删除单条组合 */
del(i){
let arr=new Array();
this.prevItem.map((item,index)=>{
if(i!==index){
arr.push(item)
}
})
this.prevItem = arr
},
/* 确定删除 */
confirmDel(i){
this.delIndex = i
this.alertShow = true
},
/* 计算所有规格的组合 */
handleChangeContent(){
/* 笛卡尔乘积 */
function product(arr) {
const result = arr.reduce((accArr, currentArr) => {
let result = []
currentArr.forEach(c => {
if (accArr.length) {
accArr.forEach(a => {
result.push(a.concat(c))
})
} else {
result.push([c])
}
})
return result
}, [])
return result.map(arr => arr.join('/'))
}
this.prevItem = []
let contentArr = [] // 属性通过','分割后的数组
this.attrItem.map(item=>{
let formatter = []
item.content.split(',').map(item_c=>{
if(item_c==='')return
formatter.push(item_c)
})
contentArr.push({size:formatter,name:item.selected})
})
let skuStrName='' //sku组合名
let skuArr = []
contentArr.forEach((item_a,index_a)=>{
skuStrName+=item_a.name+'/'
skuArr.push(item_a.size)
})
skuStrName=skuStrName.slice(0,skuStrName.length-1)
product(skuArr).forEach(item=>{
this.prevItem.push({
skuStrName:skuStrName,
skuStrCombination:item,
price:null,
num:0
})
})
},
/* 保存 */
save(){
console.log(this.prevItem) //sku组合数组
console.log(this.putaway) //是否立即上架
}
/** ******************************************************************************************** */ /** ******************************************************************************************** */
}, },
......
...@@ -24,6 +24,12 @@ ...@@ -24,6 +24,12 @@
<yunpian-version>1.2.7</yunpian-version> <yunpian-version>1.2.7</yunpian-version>
</properties> </properties>
<dependencies> <dependencies>
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>javax.servlet-api</artifactId>
<version>3.1.0</version>
<scope>compile</scope>
</dependency>
<dependency> <dependency>
<groupId>com.yunpian.sdk</groupId> <groupId>com.yunpian.sdk</groupId>
<artifactId>yunpian-java-sdk</artifactId> <artifactId>yunpian-java-sdk</artifactId>
......
...@@ -34,7 +34,6 @@ import java.util.Map; ...@@ -34,7 +34,6 @@ import java.util.Map;
* 导出EXCEL功能包主类 * 导出EXCEL功能包主类
* 使用POI进行EXCEL导出的功能类。 * 使用POI进行EXCEL导出的功能类。
* 目前简单处理,未设置内存优化。 数据量偏大,出现性能问题时再处理。 * 目前简单处理,未设置内存优化。 数据量偏大,出现性能问题时再处理。
*
*/ */
public class ExcelExport { public class ExcelExport {
...@@ -177,6 +176,7 @@ public class ExcelExport { ...@@ -177,6 +176,7 @@ public class ExcelExport {
obj.add(new BigDecimal("123456789123456789.1234")); obj.add(new BigDecimal("123456789123456789.1234"));
obj.add(true); obj.add(true);
list1.add(obj.toArray()); list1.add(obj.toArray());
String[] header = new String[]{"身份证号", "日期", "时间", "整型", "长整", "浮点", String[] header = new String[]{"身份证号", "日期", "时间", "整型", "长整", "浮点",
......
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论