package com.mortals.xhx.common.formdesign.component;

import cn.hutool.core.util.IdUtil;
import com.google.common.collect.Lists;
import com.mortals.xhx.common.code.ComponentEnum;
import com.mortals.xhx.common.formdesign.ColumnsItem;
import com.mortals.xhx.common.formdesign.DesignComponent;
import com.mortals.xhx.common.formdesign.ListItem;
import com.mortals.xhx.common.formdesign.OptionsItem;
import com.mortals.xhx.common.pdu.gen.component.ComponentCons;
import org.springframework.util.ObjectUtils;

import java.util.ArrayList;
import java.util.List;
import java.util.stream.Collectors;

/**
 * 动态表格组件
 *
 * @author: zxfei
 * @date: 2021/10/26 10:35
 * @description:
 **/
public class DesignDynamicTableComponent extends DesignComponent {

    public DesignDynamicTableComponent(String type) {
        super(type);
    }

    @Override
    public ListItem buildDefaultComponent(ComponentCons cons) {
        ListItem listItem = new ListItem();
        listItem.setId(cons.getVal());
        listItem.set_id(cons.getVal());
        listItem.setCompType("dynamicTable");
        listItem.setEle("dynamic-table");
        listItem.setCompName("动态表格");
        listItem.setLayout("dynamicItem");
        listItem.setCompIcon("table");
        listItem.setLabelWidth(0);
        listItem.setShowLabel(false);
        listItem.setConfig(true);
        listItem.setButtonAdd(true);
        listItem.setButtonDel(true);
        listItem.setShowIndex(true);
        listItem.setVisible(true);
        listItem.setMultiCheck(false);
        listItem.setShowSummary(false);
        listItem.setSumText("合计");
        listItem.setSummaryText("元");

        if (!ObjectUtils.isEmpty(cons.getColList())) {
            //动态生成列元素
            List<ColumnsItem> columnsItemList = cons.getColList().stream().map(item -> {
                ColumnsItem columnsItem = new ColumnsItem();
                if (item.getColType().equals(ComponentEnum.INPUT.getValue())) {
                    //创建输入框出初始值
                    columnsItem.setId(item.getVal());
                    columnsItem.set_id(item.getVal());
                    columnsItem.setCompType("input");
                    columnsItem.setCompName("单行文本");
                    columnsItem.setCompIcon("input");
                    columnsItem.setViewType("text");
                    columnsItem.setEle("el-input");
                    columnsItem.setConfig(true);
                    columnsItem.setShowLabel(true);
                    columnsItem.setLabel(item.getLabel());
                    columnsItem.setLabelWidth(120);
                    columnsItem.setPlaceholder("请输入" + item.getLabel());
                    columnsItem.setRequired(false);
                    columnsItem.setMaxLength(50);
                    columnsItem.setGutter(15);
                    columnsItem.setSpan(24);
                    columnsItem.setWidth("100%");
                    columnsItem.setClearable(true);
                    columnsItem.setDisabled(false);
                    columnsItem.setReadonly(false);
                    columnsItem.setStatus("normal");
                    columnsItem.setPrefixIcon("");
                    columnsItem.setSuffixIcon("");
                    columnsItem.setValue("");
                    columnsItem.setRules(Lists.newArrayList());
                    columnsItem.setRulesType("default");
                    columnsItem.setAppend("");
                    columnsItem.setPrepend("");
                    columnsItem.setLayout("colItem");
                }else if(item.getColType().equals(ComponentEnum.TEXTAREA.getValue())){
                    columnsItem.setId(item.getVal());
                    columnsItem.set_id(item.getVal());
                    columnsItem.setCompType("textarea");
                    columnsItem.setEle("el-input");
                    columnsItem.setCompName("多行文本");
                    columnsItem.setCompIcon("textarea");
                    columnsItem.setViewType("text");
                    columnsItem.setType("textarea");
                    columnsItem.setConfig(true);
                    columnsItem.setShowLabel(true);
                    columnsItem.setLabel(item.getLabel());
                    columnsItem.setLabelWidth(120);
                    columnsItem.setPlaceholder("请输入" + item.getLabel());
                    columnsItem.setRequired(false);
                    columnsItem.setMaxLength(200);
                    columnsItem.setShowWordLimit(true);
                    columnsItem.setGutter(15);
                    columnsItem.setSpan(24);
                    columnsItem.setClearable(true);
                    columnsItem.setDisabled(false);
                    columnsItem.setReadonly(false);
                    columnsItem.setRows(4);
                    columnsItem.setStatus("normal");
                    columnsItem.setValue("");     //设置默认值
                    columnsItem.setRules(Lists.newArrayList());
                    columnsItem.setRuleError("该字段不能为空");
                    columnsItem.setRulesType("default");
                    columnsItem.setLayout("colItem");
                }else if(item.getColType().equals(ComponentEnum.DATE.getValue())){
                    columnsItem.setId(item.getVal());
                    columnsItem.set_id(item.getVal());
                    columnsItem.setCompType("date");
                    columnsItem.setEle("el-date-picker");
                    columnsItem.setCompName("日期");
                    columnsItem.setCompIcon("date");
                    columnsItem.setViewType("text");
                    columnsItem.setConfig(true);
                    columnsItem.setShowLabel(true);
                    columnsItem.setLabel(item.getLabel());
                    columnsItem.setLabelWidth(120);
                    columnsItem.setType("date");
                    columnsItem.setPlaceholder("请选择" + item.getLabel());
                    columnsItem.setRequired(false);
                    columnsItem.setMaxLength(50);
                    columnsItem.setGutter(15);
                    columnsItem.setSpan(12);
                    columnsItem.setValue("");
                    columnsItem.setClearable(true);
                    columnsItem.setDisabled(false);
                    columnsItem.setReadonly(false);
//                    columnsItem.setRangeSeparator("-");
//                    columnsItem.setFormat("yyyy-MM-dd");
//                    columnsItem.setValueFormat("yyyy-MM-dd");
                    columnsItem.setRangeSeparator(" ");
                    columnsItem.setFormat("yyyy 年 MM 月 dd 日");
                    columnsItem.setValueFormat("yyyy 年 MM 月 dd 日");
                    columnsItem.setStartPlaceholder("开始日期");
                    columnsItem.setEndPlaceholder("结束日期");
                    columnsItem.setLayout("colItem");
                }
                return columnsItem;
            }).collect(Collectors.toList());
            listItem.setColumns(columnsItemList);
        }
        return listItem;
    }


    @Override
    public String getType() {
        return ComponentEnum.DYNAMIC_TABLE.getValue();
    }
}
