/*
* 商品管理——待审核商品
* */
import { connect } from 'dva/index';
import React, { Component, Fragment } from 'react';
import { Form, Spin } from 'antd';
import Link from 'umi/link';
import {
failTip,
sucTip,
list_com_page_size_10,
dragSldTableColumn,
getTableNum,
sldComLanguage,
sldPopConfirm,
dateFormat,
sldHandlePaginationData,
sldtbaleOpeBtnText,
sldIconBtn,
formItemLayoutModal,
getSldListGoodsImg80,
list_com_page_more,
sldLlineRtextAddGoodsAddMargin,
quillEscapeToHtml,
} from '@/utils/utils';
import global from '@/global.less';
import styles from './product.less';
import StandardTable from '@/components/StandardTable';
import Search from '@/components/Search/Search';
import SldModal from '@/components/SldModal/SldModal';
let pageSize = list_com_page_size_10;
@connect(({ product }) => ({
product,
}))
@Form.create()
export default class GoodsCheckLists extends Component {
constructor(props) {
super(props);
this.state = {
search_height:0,
modal_width:700,
modalVisibleDetail: false,
initLoading: false,
submiting: false,
show_foot: false,
modalVisible: false,//是否显示规格弹框
data: {},//列表数据
selectedRows: [],
selectedRowKeys: [],//selectedRows的key
title: `${sldComLanguage('商品规格')}`,
type: 'add',//'add'新增 'edit'编辑
params: { pageSize: pageSize },//搜索条件
search_data: [{
type: 'input',
label: `${sldComLanguage('商品名称')}`,
name: 'goodsName',
placeholder: `${sldComLanguage('请输入商品名称')}`,
},{
type: 'input',
label: `${sldComLanguage('商品货号')}`,
name: 'goodsCode',
placeholder: `${sldComLanguage('请输入商品货号')}`,
},{
type: 'input',
label: `${sldComLanguage('条形码')}`,
name: 'barCode',
placeholder: `${sldComLanguage('请输入商品条形码')}`,
},{
type: 'tree_select',
label: `${sldComLanguage('店铺分类')}`,
name: 'StoreCategoryId',
placeholder: `${sldComLanguage('请选择店铺分类')}`,
data: [],
},/*{
type: 'select',
label: `${sldComLanguage('商品类型')}`,
name: 'isVirtualGoods',
placeholder: `${sldComLanguage('请选择商品类型')}`,
sel_data: [
{ key: '', name: `${sldComLanguage('全部')}` },
{ key: 1, name: `${sldComLanguage('实物商品')}` },
{ key: 2, name: `${sldComLanguage('虚拟商品')}` },
],
},*/ {
type: 'select',
label: `${sldComLanguage('审核状态')}`,
name: 'auditState',
placeholder: `${sldComLanguage('请选择会员状态')}`,
sel_data: [
{ key: '', name: `${sldComLanguage('全部')}`},
{ key: '2', name: `${sldComLanguage('待审核')}` },
{ key: '4', name: `${sldComLanguage('审核拒绝')}` },
],
}],
view_spec_data: [{
type: 'scroll_table',
name: '',
label: ``,
width: 740,
content: '',
data: [],
columns: this.goods_spec_columns,
rowKey: 'productId',
}],//查看规格
formValues: {},//搜索条件
addData:[{
type: 'select',
label: `${sldComLanguage('顶部版式')}`,
name: 'topTemplateId',
placeholder: `${sldComLanguage('请选择顶部关联版式')}`,
sel_data: [],
sele_key: 'templateId',
sele_name: 'templateName',
diy: true,
},{
type: 'select',
label: `${sldComLanguage('底部版式')}`,
name: 'bottomTemplateId',
placeholder: `${sldComLanguage('请选择底部关联版式')}`,
sel_data: [],
sele_key: 'templateId',
sele_name: 'templateName',
diy: true,
}],//设置关联版式的数据
operateData: [],
columns: [
{
title: ' ',
align: 'center',
width: 30,
render: (text, record, index) => getTableNum(this.state.params, pageSize, index),
},
{
title: `${sldComLanguage('商品信息')}`,
dataIndex: 'mainImage',
align: 'center',
width: 250,
render: (text, record) => {
return
{/*{record.isVirtualGoods == 2&&
虚拟}*/}
{getSldListGoodsImg80(text)}
{record.goodsName}
{record.categoryPath}
;
},
},
{
title: `${sldComLanguage('店铺分类')}`,
dataIndex: 'innerLabelList',
align: 'center',
render: (text, record, index) => {
return
{text!=undefined&&text.length>0
?
{text.map((item,index)=>{
return
{quillEscapeToHtml(quillEscapeToHtml(item))}
})}
:'--'
}
;
},
},
{
title: `${sldComLanguage('商品价格')}`,
dataIndex: 'goodsMoney',
align: 'center',
},
// {
// title: `${sldComLanguage('商品库存')}`,
// dataIndex: 'goodsStock',
// align: 'center',
// render: (text, record, index) => {
// return {text};
// },
// },
{
title: `${sldComLanguage('是否推荐')}`,
dataIndex: 'storeIsRecommend',
align: 'center',
render: (text, record) => {
return text==1?`${sldComLanguage('推荐')}`:`${sldComLanguage('不推荐')}`
},
},
{
title: `${sldComLanguage('审核状态')}`,
dataIndex: 'stateValue',
align: 'center',
},
{
title: `${sldComLanguage('拒绝理由')}`,
dataIndex: 'auditReason',
align: 'center',
render: (text, record) =>{
return (text?text:'')+(record.auditComment?(','+record.auditComment):'')
}
},
{
title: `${sldComLanguage('操作')}`,
align: 'center',
width: 100,
render: (text, record) => (
{sldtbaleOpeBtnText(`${sldComLanguage('查看规格')}`, () => this.viewSpec(record))}
{sldtbaleOpeBtnText(`${sldComLanguage('编辑')}`, () => null)}
),
},
]
};
}
goods_spec_columns = [
{
title: ' ',
dataIndex: 'productId',
align: 'center',
width: 30,
render: (text, record, index) => {
return index + 1;
},
},
{
title: `${sldComLanguage('商品规格')}`,
dataIndex: 'specValues',
align: 'center',
width: 200,
render: (text, record, index) => {
return {text}
;
},
},
// {
// title: `${sldComLanguage('价格(元)')}`,
// dataIndex: 'productPrice',
// align: 'center',
// width: 110,
// },
// {
// title: `${sldComLanguage('库存')}`,
// dataIndex: 'productStock',
// align: 'center',
// width: 100,
// render: (text, record, index) => {
// return {text};
// },
// },
{
title: `${sldComLanguage('货号')}`,
dataIndex: 'productCode',
align: 'center',
width: 150,
render: (text) => {
return text?text:'--';
},
},
{
title: `${sldComLanguage('条形码')}`,
dataIndex: 'barCode',
align: 'center',
width: 150,
render: (text) => {
return text?text:'--';
},
},
];
componentDidMount() {
this.get_list({pageSize})
this.getTemplateList();
this.getStoreCat();//获取店铺分类
this.resize();
window.addEventListener('resize', this.resize);
}
componentWillUnmount() {
window.removeEventListener('resize', this.resize);
}
resize = () =>{
const {search_height} = this.state;
if(this.refs.search_part!=undefined){
if(this.refs.search_part.clientHeight != search_height){
this.setState({search_height:this.refs.search_part.clientHeight})
}
}
}
//获取店铺分类
getStoreCat = () => {
const { dispatch } = this.props;
let { search_data } = this.state;
let dis_type = 'product/get_store_category_list';
let payload = { pageSize: list_com_page_more };
dispatch({
type: dis_type,
payload: payload,
callback: (res) => {
if (res.state == 200) {
let tmp_data = search_data.filter(item => item.name == 'StoreCategoryId')[0];
for (let i in res.data) {
res.data[i].key = res.data[i].innerLabelId;
res.data[i].value = res.data[i].innerLabelId;
res.data[i].title = res.data[i].innerLabelName;
if (res.data[i].children != null && res.data[i].children.length > 0) {
res.data[i].children.map(item => {
item.key = item.innerLabelId;
item.value = item.innerLabelId;
item.title = item.innerLabelName;
});
}
}
tmp_data.data = res.data;
this.setState({ search_data });
}
},
});
};
//设置关联版式
setTemplate = () => {
let { addData} = this.state;
this.setState({
operateData: JSON.parse(JSON.stringify(addData)),
title:`${sldComLanguage('设置关联版式')}`,
modal_width: 500,
modalVisible: true,
type: 'template',
show_foot: true,
})
}
sldHandleConfirm = (val) => {
const { selectedRowKeys } = this.state;
val.goodsIds = selectedRowKeys.join(',');
if(val.topTemplateId == undefined&&val.bottomTemplateId == undefined){
failTip(`${sldComLanguage('请至少选择一个模版')}`);
return false;
}
this.operateGoods(val,'template');
};
// 查看规格
viewSpec = (val) => {
let { view_spec_data,operateData } = this.state;
operateData = JSON.parse(JSON.stringify(view_spec_data));
operateData[0].columns = this.goods_spec_columns;
operateData[0].data = val.productList;
this.setState({
modalVisible: true,
show_foot:false,
title:`${sldComLanguage('查看规格')}`,
modal_width:760,
operateData
});
};
//商品操作
operateGoods = (id, type) => {
this.setState({submiting:true});
const { params } = this.state;
const { dispatch } = this.props;
let param_data = {};
let dis_type = '';
if (type == 'lockup') {
dis_type = 'product/lockup_goods';
param_data = id;
} else if (type == 'recommend') {
dis_type = 'product/set_goods_recommend';
param_data = id
} else if (type == 'del') {
dis_type = 'product/del_goods';
param_data = id
} else if (type == 'template') {
dis_type = 'product/set_related_template';
param_data = id
}
dispatch({
type: dis_type,
payload: param_data,
callback: (res) => {
this.setState({submiting:false});
if (res.state == 200) {
sucTip(res.msg);
this.get_list(params);
this.setState({
selectedRows: [],
selectedRowKeys: [],
modalVisible:false
})
} else {
failTip(res.msg);
}
},
});
};
//获取数据列表
get_list = (params) => {
this.setState({ initLoading: true });
const { dispatch } = this.props;
dispatch({
type: 'product/get_goods_lists',
payload: { ...params, state: 2 },
callback: (res) => {
this.setState({ initLoading: false });
if (res.state == 200) {
if (res.data.length == 0 && this.state.params.current > 1) {
params.current = params.current - 1;
this.get_list(params);
} else {
this.setState({
data: res.data,
});
}
}
},
});
};
//获取关联版式列表
getTemplateList = () => {
const { dispatch } = this.props;
let {addData} = this.state;
dispatch({
type: 'product/get_related_template_lists',
payload: { pageSize: list_com_page_more },
callback: (res) => {
this.setState({ initLoading: false });
if (res.state == 200) {
let topData = res.data.list.filter(item=>item.templatePosition == 1);
let bottomData = res.data.list.filter(item=>item.templatePosition == 2);
for(let i in addData){
if(addData[i].name == 'topTemplateId'){
addData[i].sel_data = topData;
}else{
addData[i].sel_data = bottomData;
}
}
this.setState({addData})
}
},
});
};
handleSelectRows = (rows, rowkeys) => {
this.setState({
selectedRows: rows,
selectedRowKeys: rowkeys,
});
};
handleTablePagination = (pagination, filtersArg, sorter, type = 'main') => {
const { formValues } = this.state;
if (type == 'main') {
const params = sldHandlePaginationData(pagination, filtersArg, sorter, formValues);
pageSize = params.pageSize;
this.setState({ params });
this.get_list(params);
}
};
//表格拖动
resizeTable = (index, size, type, data) => {
let datas = dragSldTableColumn(index, size, data);
this.setState({ [type]: datas });
};
//搜索事件
search = (data) => {
const values = { ...data };
//时间处理
if (values.search_create_time) {
values.startTime = values.search_create_time[0] ? values.search_create_time[0].format(dateFormat)+' 00:00:00' : '';
values.endTime = values.search_create_time[1] ? values.search_create_time[1].format(dateFormat)+' 23:59:59' : '';
values.search_create_time = '';
}
for (let i in values) {
if (values[i] == '') {
delete values[i];
}
}
this.setState({
formValues: values,
params: { pageSize: pageSize }
});
this.get_list({ pageSize: pageSize, ...values });
};
//搜索重置事件
seaReset = () => {
//搜索条件置为空
this.setState({
formValues: {},
params: { pageSize: pageSize }
});
this.get_list({ pageSize: pageSize });
};
sldHandleCancle = () => {
this.setState({ modalVisible: false });
};
//搜索点击
moreSearchToggle = () => {
const {search_height} = this.state;
if(this.refs.search_part!=undefined){
if(this.refs.search_part.clientHeight != search_height){
this.setState({search_height:this.refs.search_part.clientHeight})
}
}
}
render() {
const { selectedRows, selectedRowKeys, search_data, columns, initLoading, data, modalVisible,operateData,title,modal_width,show_foot,submiting, search_height } = this.state;
return (
{sldLlineRtextAddGoodsAddMargin('#69A2F2', `${sldComLanguage('待审核商品')}`, 0, 0, 10)}
this.moreSearchToggle()}
seaSubmit={(data) => this.search(data)} seaReset={() => this.seaReset()}/>
{/*公共功能条-start*/}
{selectedRowKeys.length == 0 ? sldIconBtn(() => {
failTip(`${sldComLanguage('请先选中数据')}`);
//确认删除选中的商品吗?
}, `${sldComLanguage('删除')}`, 7, 0, 15, 15, 3, 'piliangshanchu', '#F21414') : sldPopConfirm('leftBottom', `${sldComLanguage('确认删除选中的商品吗?')}`, () => this.operateGoods({goodsIds:selectedRowKeys.join(',')}, 'del'), `${sldComLanguage('确定')}`, `${sldComLanguage('取消')}`, sldIconBtn(null, `${sldComLanguage('删除')}`, 7, 0, 15, 15, 3, 'piliangshanchu', '#F21414'), 0, 0, '#F21414')}
{selectedRowKeys.length == 0 ? sldIconBtn(() => {
failTip(`${sldComLanguage('请先选中数据')}`);
//确认将选中的商品设置为推荐商品吗?
}, `${sldComLanguage('设置推荐')}`, 7, 0, 15, 15, 3, 'nav-tuijian', '#ffa70f') : sldPopConfirm('leftBottom', `${sldComLanguage('确认将选中的商品设置为推荐商品吗?')}`, () => this.operateGoods({goodsIds:selectedRowKeys.join(','),isRecommend:1}, 'recommend'), `${sldComLanguage('确定')}`, `${sldComLanguage('取消')}`, sldIconBtn(null, `${sldComLanguage('设置推荐')}`, 7, 0, 15, 15, 3, 'nav-tuijian', '#ffa70f'), 0, 0, '#ffa70f')}
{selectedRowKeys.length == 0 ? sldIconBtn(() => {
failTip(`${sldComLanguage('请先选中数据')}`);
//确认将选中的商品取消推荐吗?
}, `${sldComLanguage('取消推荐')}`, 7, 0, 15, 15, 3, 'quxiaotuijian2', '#0f419c') : sldPopConfirm('leftBottom', `${sldComLanguage('确认将选中的商品取消推荐吗?')}`, () => this.operateGoods({goodsIds:selectedRowKeys.join(','),isRecommend:0}, 'recommend'), `${sldComLanguage('确定')}`, `${sldComLanguage('取消')}`, sldIconBtn(null, `${sldComLanguage('取消推荐')}`, 7, 0, 15, 15, 3, 'quxiaotuijian2', '#0f419c'), 0, 0, '#0f419c')}
{selectedRowKeys.length == 0
? sldIconBtn(() => {
failTip(`${sldComLanguage('请先选中数据')}`);
//确认为选中的商品设置关联版式吗?
}, `${sldComLanguage('设置关联版式')}`, 7, 0, 14, 14, 3, 'glsz', '#0c93f2')
: sldIconBtn(() => this.setTemplate(), `${sldComLanguage('设置关联版式')}`, 7, 0, 14, 14, 3, 'glsz', '#0c93f2')}
{/*公共功能条-end*/}
{/*标准表格-start*/}
this.handleTablePagination(pagination, filtersArg, sorter, 'main')}
onSldHandleSeleRow={this.onSldHandleSeleRow}
resizeTable={(index, size) => this.resizeTable(index, size, 'columns', columns)}
isColumnResize={true}
/>
{/*标准表格-end*/}
{ /*新增/编辑对话框-start*/}
this.sldHandleConfirm(val)}
sldHandleCancle={this.sldHandleCancle}
formItemLayoutModal={formItemLayoutModal}
content={operateData}
show_foot={show_foot}
/>
{ /*新增/编辑对话框-end*/}
);
}
}