/* eslint-disable */
import React, {PureComponent, Fragment, Component} from 'react';
// import crypto from 'crypto';
// import fs from 'fs';
import { connect } from 'dva';
import moment from 'moment';
import {Card, Form, Input, Radio, Button, Modal, Select, Upload, Icon, Spin} from 'antd';
import PageHeaderWrapper from '@/components/PageHeaderWrapper';
// import * as qiniu from 'qiniu-js'
// import uuid from 'js-uuid';
import styles from './ProductSpuAddOrUpdate.less';
import ProductAttrSelectFormItem from "../../components/Product/ProductAttrSelectFormItem";
import ProductSkuAddOrUpdateTable from "../../components/Product/ProductSkuAddOrUpdateTable";
// import {fileGetQiniuToken} from "../../services/admin";
import PicturesWall from "../../components/Image/PicturesWall";
const FormItem = Form.Item;
const RadioGroup = Radio.Group;
const Option = Select.Option;
// roleList
@connect(({ productAttrList, productSpuAddOrUpdate, }) => ({
// list: productSpuList.list.spus,
// loading: loading.models.productSpuList,
productAttrList,
productSpuAddOrUpdate,
allAttrTree: productAttrList.tree,
loading: productSpuAddOrUpdate.loading,
spu: productSpuAddOrUpdate.spu,
attrTree: productSpuAddOrUpdate.attrTree,
skus: productSpuAddOrUpdate.skus,
}))
@Form.create()
class ProductSpuAddOrUpdate extends Component {
state = {
// modalVisible: false,
modalType: 'add', //add update
// initValues: {},
};
componentDidMount() {
const { dispatch } = this.props;
const that = this;
// 判断是否是更新
const params = new URLSearchParams(this.props.location.search);
if (params.get("id")) {
let id = params.get("id");
this.setState({
modalType: 'update',
id: id,
})
dispatch({
type: 'productSpuAddOrUpdate/info',
payload: parseInt(id),
callback: function (data) {
that.refs.picturesWall.setUrls(data.picUrls); // TODO 后续找找,有没更合适的做法
}
})
}
// 获得规格列表
dispatch({
type: 'productAttrList/tree',
payload: {
name: '',
pageNo: 0,
pageSize: 10,
},
});
// 重置表单
dispatch({
type: 'productSpuAddOrUpdate/clear',
})
}
handleAddAttr = e => {
// alert('你猜');
const { dispatch } = this.props;
dispatch({
type: 'productSpuAddOrUpdate/addAttr',
payload: {
},
});
};
handleSubmit = e => {
e.preventDefault();
const { skus, dispatch } = this.props;
const { modalType, id } = this.state;
// 获得图片
let picUrls = this.refs.picturesWall.getUrls(); // TODO 芋艿,后续找找其他做法
if (picUrls.length === 0) {
alert('请必须上传一张图片!');
return;
}
// 生成 skuStr 格式
let skuStr = []; // 因为提交是字符串格式
for (let i in skus) {
let sku = skus[i];
if (!sku.price || !sku.quantity) {
continue;
}
let newAttr = {
attrs: [],
price: sku.price * 100,
quantity: sku.quantity,
}
for (let j in sku.attrs) {
newAttr.attrs.push(sku.attrs[j].id);
}
skuStr.push(newAttr);
}
if (skuStr.length === 0) {
alert('请设置商品规格!');
return;
}
// debugger;
this.props.form.validateFields((err, values) => {
// debugger;
if (!err) {
if (modalType === 'add') {
dispatch({
type: 'productSpuAddOrUpdate/add',
payload: {
body: {
...values,
picUrls: picUrls.join(','),
skuStr: JSON.stringify(skuStr)
}
},
});
} else if (modalType === 'update') {
dispatch({
type: 'productSpuAddOrUpdate/update',
payload: {
body: {
...values,
id,
picUrls: picUrls.join(','),
skuStr: JSON.stringify(skuStr)
}
},
});
}
}
});
// console.log(fields);
};
render() {
// debugger;
const { form, skus, attrTree, allAttrTree, loading, spu, dispatch } = this.props;
// const that = this;
// 添加规格
// debugger;
let attrTreeHTML = [];
if (attrTree && attrTree.length > 0) {
// 已选择的的规格集合
let selectedAttrIds = new Set();
for (let i in attrTree) {
let attr = attrTree[i];
selectedAttrIds.add(attr.id);
}
// 创建每个规格下拉框的 HTML
for (let i in attrTree) {
let attr = attrTree[i];
let itemProps = {
attr: attr,
allAttrTree: allAttrTree,
dispatch: dispatch,
selectedAttrIds: selectedAttrIds,
index: i // 位置。不然无法正确修改 Model 指定位置的数据
};
attrTreeHTML.push();
}
}
// 规格明细
let productSkuProps = {
attrTree: attrTree,
skus: skus,
dispatch: dispatch,
};
// console.log(productSkuProps);
return (
);
}
}
export default ProductSpuAddOrUpdate;