<template>
    <section>
        <!--工具条-->
        <el-col :span="24" class="toolbar" style="padding-bottom: 0px;">
            <el-form :inline="true" :model="filters">
                <el-col :span="3">
                    <el-form-item>
                        <el-select v-model="filters.companyId" clearable filterable :placeholder="$t('basic.chooseComp')">
                            <el-option v-for="item in companies" :key="item.id" :label="item.companyName" :value="item.id">
                            </el-option>
                        </el-select>
                    </el-form-item>
                </el-col>
                <el-form-item>
                    <el-input v-model="filters.keyName" :placeholder="$t('msg.keySearch')"></el-input>
                </el-form-item>
                <el-form-item>
                    <el-button type="primary" @click="getMoulds">{{$t('base.query')}}</el-button>
                </el-form-item>
                <el-form-item style="float: right;">
                    <el-upload ref="upload" action="customize" :show-file-list="false" :http-request="uploadFile" :limit="1">
                        <el-button type="primary" :loading="uploading">{{$t('base.imput')}}</el-button>
                    </el-upload>
                </el-form-item>
                <el-form-item style="float: right;">
                    <el-button type="primary" @click="showAllocation">{{$t('base.add')}}</el-button>
                </el-form-item>
            </el-form>
        </el-col>

        <!--列表-->
        <el-table :data="allocations" :height="tableHeight" highlight-current-row v-loading="listLoading" style="width: 100%;">
            <el-table-column type="index" width="60"></el-table-column>
            <el-table-column prop="equipmentNo" :label="$t('basic.equipmentNo')" width="130" sortable></el-table-column>
            <el-table-column prop="hillNumber" :label="$t('mold.hillNumber')" width="80" align="center" sortable></el-table-column>
            <el-table-column prop="useLife" :label="$t('basic.useLife')" width="100" align="center" sortable>
                <template slot-scope="scope">{{scope.row.useLife}}{{$t('basic.year')}}</template>
            </el-table-column>
            <el-table-column prop="useLife" :label="$t('basic.diffTime')" width="100" align="center" sortable>
                <template slot-scope="scope">{{scope.row.diffTime}}</template>
            </el-table-column>
            <el-table-column prop="modelName" :label="$t('mold.modelName')" sortable></el-table-column>
            <el-table-column prop="modelNo" :label="$t('mold.moldNo')" width="120" align="center" sortable></el-table-column>
            <el-table-column prop="companyName" :label="$t('basic.compName')" sortable></el-table-column>
            <el-table-column prop="agent" :label="$t('basic.agent')" width="120" sortable></el-table-column>
            <el-table-column :label="$t('basic.equipmentState')" align="center" width="120" sortable>
                <template slot-scope="scope">
                    <span v-if="scope.row.isUse == 0">{{$t('basic.state0')}}</span>
                    <span v-else>{{$t('basic.state1')}}</span>
                </template>
            </el-table-column>
            <el-table-column :label="$t('base.operate')" align="center" width="160">
                <template slot-scope="scope">
                    <el-button size="small" v-if="scope.row.modelNo != null" type="primary" @click="openEnable(scope.$index)">{{$t('basic.use')}}</el-button>
                    <!--  :disabled="scope.row.isUse == 1" -->
                    <el-button size="small" :style="scope.row.modelNo!=null?'':'float:right;margin-right:6px'" @click="showEdit(scope.$index, scope.row, scope.row.isUse == 1)">{{$t('base.edit')}}</el-button>
                </template>
            </el-table-column>
        </el-table>

        <!--工具条-->
        <el-col :span="24" class="toolbar">
            <el-pagination
                @size-change="handleSizeChange"
                @current-change="handleCurrentChange"
                :page-sizes="[20 , 50 , 80 , 100]"
                :page-size="20"
                layout="total, sizes, prev, pager, next"
                :total="total"
                style="float:right;"
            ></el-pagination>
        </el-col>

        <!--新增界面-->
        <el-dialog :title="$t('basic.addYM')" v-if="addFormVisible" :visible.sync="addFormVisible" :close-on-click-modal="false" customClass="customWidth">
            <el-form :model="newAllocation" label-width="130px" :rules="formRules" ref="newAllocation">
                <el-form-item :label="$t('basic.equipmentNo')" prop="equipmentNo">
                    <el-input v-model="newAllocation.equipmentNo" autocomplete="off" :placeholder="$t('basic.inputequipmentNo')" style="width:505px;"></el-input>
                </el-form-item>
                <el-form-item :label="$t('project.company')" prop="belongCompanyId">
                    <el-select v-model="newAllocation.belongCompanyId" filterable clearable :placeholder="$t('project.inputCompany')" style="width:505px;">
                        <el-option v-for="item in companies" :key="item.id" :label="item.companyName" :value="item.id"></el-option>
                    </el-select>
                </el-form-item>
                <el-form-item :label="$t('basic.useLife')" prop="useLife">
                    <el-input v-model.number="newAllocation.useLife" type="age" autocomplete="off" :placeholder="$t('basic.inputUseLife')" style="width:505px;"></el-input>
                </el-form-item>
                <el-form-item :label="$t('basic.agent')" prop="agent">
                    <el-input v-model="newAllocation.agent" autocomplete="off" :placeholder="$t('basic.inputAgent')" style="width:505px;"></el-input>
                </el-form-item>
            </el-form>
            <div slot="footer" class="dialog-footer">
                <el-button @click.native="addFormVisible = false">{{$t('el.messagebox.cancel')}}</el-button>
                <el-button type="primary" @click="addMould()">{{$t('el.messagebox.confirm')}}</el-button>
            </div>
        </el-dialog>

        <!--修改界面-->
        <el-dialog :title="$t('basic.editYM')" v-if="editFormVisible" :visible.sync="editFormVisible" :close-on-click-modal="false" customClass="customWidth">
            <el-form :model="newAllocation" label-width="130px" :rules="formRules" ref="newAllocation">
                <el-form-item :label="$t('basic.equipmentNo')" prop="equipmentNo">
                    <el-input v-model="newAllocation.equipmentNo" autocomplete="off" :placeholder="$t('basic.inputequipmentNo')" style="width:505px;"></el-input>
                </el-form-item>
                <el-form-item :label="$t('project.company')" prop="belongCompanyId">
                    <el-select v-model="newAllocation.belongCompanyId" filterable clearable :placeholder="$t('project.inputCompany')"  style="width:505px;" :disabled="newAllocation.usage">
                        <el-option v-for="item in companies" :key="item.id" :label="item.companyName" :value="item.id"></el-option>
                    </el-select>
                </el-form-item>
                <el-form-item :label="$t('basic.useLife')" prop="useLife">
                    <el-input v-model.number="newAllocation.useLife" type="age" autocomplete="off" :placeholder="$t('basic.inputUseLife')" style="width:505px;"></el-input>
                </el-form-item>
                <el-form-item :label="$t('basic.agent')" prop="agent">
                    <el-input v-model="newAllocation.agent" autocomplete="off" :placeholder="$t('basic.inputAgent')" style="width:505px;"></el-input>
                </el-form-item>
            </el-form>
            <div slot="footer" class="dialog-footer">
                <el-button @click.native="editFormVisible = false">{{$t('el.messagebox.cancel')}}</el-button>
                <el-button type="primary" @click="editMould(newAllocation.id)">{{$t('el.messagebox.confirm')}}</el-button>
            </div>
        </el-dialog>

        <!-- 启用弹窗 -->
        <el-dialog :title="$t('base.use')" :visible.sync="operateDialogVisible" width="400px">
            <el-form label-width="100px" :rules="formRules" :inline="true" class="demo-form-inline">
                <!-- <el-form-item label="某个参数">
                    <el-input autocomplete="off" placeholder="填了也不会发生什么"></el-input>
                </el-form-item> -->
            </el-form>
            <span slot="footer" class="dialog-footer">
                <el-button @click="operateDialogVisible = false">{{$t('el.messagebox.cancel')}}</el-button>
                <el-button type="primary" @click="enable">{{$t('base.use')}}</el-button>
            </span>
        </el-dialog>
    </section>
</template>

<script>
    import util from "../../common/js/util";
    export default {
        data() {
            const msg = (rule, value, callback) => {
                if (!value) {
                    switch(rule.field) {
                        case "equipmentNo":
                            return callback(new Error(this.$t('basic.inputequipmentNo')));
                            break;
                        case "useLife":
                            return callback(new Error(this.$t('basic.inputUseLife')));
                            break;
                        case "belongCompanyId":
                            return callback(new Error(this.$t('project.inputCompany')));
                            break;
                        case "agent":
                            return callback(new Error(this.$t('basic.inputAgent')));
                            break;
                        default:
                            callback();
                    } 
                } else {
                    callback();
                }
            };
            return {
                allocations: [],
                companies: {},
                newAllocation: {
                    equipmentNo: "", //设备编号
                    useLife: "", //使用年限
                    equipmentName: "", //设备名称
                    id: "", //设备id
                    belongCompanyId: "", //所属公司ID
                    agent: "", //代理商
                    usage: true //是否可以修改公司
                },
                filters: {
                    keyName: "",
                    companyId: ""
                },
                formRules: {
                    equipmentNo: [
                        { required: true, validator: msg , trigger: "blur" }
                    ],
                    useLife: [
                        { required: true, validator: msg },
                        { type: 'number', message: this.$t('basic.inputUseLifeNum')}
                        // message: '使用年限必须为数字值'
                    ],
                    belongCompanyId: [
                        { required: true, validator: msg , trigger: ["blur", "change"] }
                    ],
                    agent: [
                        { required: true, validator: msg , trigger: "blur" }
                    ]
                },

                listLoading: false,
                addLoading: false,
                editLoading: false,
                uploading: false,

                total: 0,
                page: 1,
                size: 20,
                tableHeight: 0,

                addFormVisible: false,
                editFormVisible: false,
                operateDialogVisible: false,
                activeIndex: 0
            };
        },
        methods: {
            getMsg() {
                //获取公司下拉列表
                this.http.post( this.port.base.getCompanys, {},
                res => {
                    if (res.code == "ok") {
                        this.companies = res.data;
                    } else {
                        this.$message({
                            message: res.msg,
                            type: "error"
                        });
                    }
                },
                error => {
                    this.$message({
                        message: error,
                        type: "error"
                    });
                });
            },

            //分页
            handleCurrentChange(val) {
                this.page = val;
                this.getMoulds();
            },

            handleSizeChange(val) {
                this.size = val;
                this.getMoulds();
            },

            //读取云模盒信息
            getMoulds() {
                this.listLoading = true;
                this.http.post(this.port.base.mouldeList,{
                    pageNum: this.page,
                    pageSize: this.size,
                    keyName: this.filters.keyName,
                    companyId: this.filters.companyId
                },
                res => {
                    this.listLoading = false;
                    if (res.code == "ok") {
                        var list = res.data.list
                        for(var i in list){
                            if(list[i].endTime == null){
                                list[i].diffTime = "";
                            } else {
                                list[i].diffTime = util.formatDate.dateDiff(
                                    // util.formatDate.format(new Date(list[i].endTime), 'yyyy-MM-dd'), 
                                    list[i].endTime,
                                    util.formatDate.format(new Date(new Date()), 'yyyy-MM-dd')
                                );
                            }
                        }
                        this.allocations = list;
                        this.total = res.data.total;
                    } else {
                        this.$message({
                            message: res.msg,
                            type: "error"
                        });
                    }
                },
                error => {
                    this.listLoading = false;
                    this.$message({
                        message: error,
                        type: "error"
                    });
                });
            },

            //添加界面
            showAllocation() {
                this.addFormVisible = true;
                this.newAllocation = {
                    id: "",
                    useLife: "",
                    equipmentNo: "",
                    belongCompanyId: "",
                    agent: ""
                };
            },
           
            //添加模具
            addMould() {
                this.$refs.newAllocation.validate(valid => {
                    if (valid) {
                    this.addLoading = true;
                    this.http.post(
                        this.port.base.editMould,
                        {
                            equipmentNo: this.newAllocation.equipmentNo,
                            belongCompanyId: this.newAllocation.belongCompanyId,
                            useLife: this.newAllocation.useLife,
                            agent: this.newAllocation.agent
                        },
                        res => {
                            this.addLoading = false;
                            if (res.code == "ok") {
                                this.addFormVisible = false;
                                this.$message({
                                    message: this.$t('prompt.success2'),
                                    type: "success"
                                });
                                this.getMoulds();
                            } else {
                                this.$message({
                                    message: res.msg,
                                    type: "error"
                                });
                            }
                        },
                        error => {
                            this.addLoading = false;
                            this.addFormVisible = false;
                            this.$message({
                                message: error,
                                type: "error"
                            });
                        }
                    );
                    }
                });
            },

             //修改界面
            showEdit(index, row, usageBoolean) {
                this.editFormVisible = true;
                this.newAllocation = {
                    id: row.id,
                    useLife: row.useLife,
                    equipmentNo: row.equipmentNo,
                    belongCompanyId: row.belongCompanyId,
                    agent: row.agent,
                    usage: usageBoolean
                };
            },

            //编辑模具
            editMould() {
                this.$refs.newAllocation.validate(valid => {
                    if (valid) {
                        this.editLoading = true;
                        this.http.post( this.port.base.editMould, {
                            id: this.newAllocation.id,
                            equipmentNo: this.newAllocation.equipmentNo,
                            equipmentName: this.newAllocation.equipmentName,
                            belongCompanyId: this.newAllocation.belongCompanyId,
                            useLife: this.newAllocation.useLife,
                            agent: this.newAllocation.agent
                        },
                        res => {
                            this.editLoading = false;
                            if (res.code == "ok") {
                                this.editFormVisible = false;
                                this.$message({
                                    message: this.$t('prompt.success'),
                                    type: "success"
                                });
                                this.getMoulds();
                            } else {
                                this.$message({
                                    message: res.msg,
                                    type: "error"
                                });
                            }
                        },
                        error => {
                            this.editLoading = false;
                            this.editFormVisible = false;
                            this.$message({
                                message: error,
                                type: "error"
                            });
                        });
                    }
                });
            },

            //打开启用窗口
            openEnable(index) {
                this.operateDialogVisible = true;
                this.activeIndex = index;
            },

            //启用设备
            enable() {
                if(this.allocations[this.activeIndex].belongCompanyId == null){
                    this.$message({
                        message: this.$t("basic.inputBlongComp"),
                        type: "error"
                    });
                }else{
                    this.operateDialogVisible = false;
                    this.allocations[this.activeIndex].isUse = 1;
                    this.http.post( this.port.base.enableMould, {
                        id: this.allocations[this.activeIndex].id,
                        isUse: 1
                    },
                    res => {
                        if (res.code == "ok") {
                            this.$message({
                                message: this.$t("basic.inUse"),
                                type: "success"
                            });
                            this.getMoulds();
                        } else {
                            this.$message({
                                message: res.msg,
                                type: "error"
                            });
                        }
                    },
                    error => {
                        this.$message({
                            message: error,
                            type: "error"
                        });
                    });
                }
            },

            //导入云模盒
            uploadFile(params) {
                var fileObj = params.file;
                var form = new FormData();
                form.append("file", fileObj);
                this.uploading = true;
                this.http.uploadFile( this.port.base.importMouldEquipmentExcel,  form,
                res => {
                    this.uploading = false;
                    this.$refs.upload.clearFiles();
                    if (res.code == "ok") {
                        this.$message({
                            message: this.$t("prompt.success4"),
                            type: "success"
                        });
                        this.getMoulds();
                    } else {
                        this.$message({
                            message: res.msg,
                            type: "error"
                        });
                    }
                },
                error => {
                    this.uploading = false;
                    this.$refs.upload.clearFiles();
                    this.$message({
                        message: error,
                        type: "error"
                    });
                });
            }
        },
        created() {
            let height = window.innerHeight;
            this.tableHeight = height - 210;
            const that = this;
            window.onresize = function temp() {
                that.tableHeight = window.innerHeight - 210;    
            };
        },
        mounted() {
            this.getMsg();
            //获取模具列表
            this.getMoulds();
        }
    };
</script>

<style scoped>
    .download {
        color: #fff;
        text-decoration: none;
    }
</style>