<template>
    <div class="balanceSheetData">
        <div class="box">
            <div class="box-top">
                <el-form
                    style="overflow: hidden;"
                    :style="filterForm.show ? null : { height: '0px' }"
                    size="mini"
                    label-width="70px"
                >
                    <el-row>
                        <el-col :span="6">
                             <el-form-item label="排产日期">
                                <zj-timegran-date
                                    v-model="filterForm.data.clock"
                                    style="width: 100%;"
                                    :type="'daterange'"
                                    :oneFoo="getTableData"
                                    :custom ="1"
                                ></zj-timegran-date>
                            </el-form-item>
                        </el-col>
                        <el-col :span="4">
                           <el-form-item label="编号">
                                <el-input
                                    v-model="filterForm.data.Gmid"
                                    style="width: 100%;"
                                    refcous="true"
                                    ></el-input>
                            </el-form-item>
                        </el-col>
                        <el-col :span="5">
                           <el-form-item label="钢种">
                            <el-select
                            filterable clearable
                            collapse-tags
                            v-model="filterForm.data.grades"
                            multiple
                            placeholder=""
                            style="width: 100%;"
                            >
                            <el-option
                            v-for="item of nameObj.grades.arr"
                            :key="item.id"
                            :value="item.name"
                            :label="item.name"
                            ></el-option>
                            </el-select>
                            </el-form-item>
                        </el-col>
                        <el-col :span="5">
                           <el-form-item label="规格">
                            <el-select
                            filterable clearable
                            collapse-tags
                            v-model="filterForm.data.specifications"
                            multiple
                            placeholder=""
                            style="width: 100%;"
                            >
                            <el-option
                            v-for="item of nameObj.specifications.arr"
                            :key="item.id"
                            :value="item.name"
                            :label="item.name"
                            ></el-option>
                            </el-select>
                            </el-form-item>
                        </el-col>
                    </el-row>
                </el-form>
               <div class="box-top-gjl">
                        <el-button
                            class="button"
                            type="primary"
                            size="mini"
                            icon="el-icon-plus"
                            v-privilege="activeMenu + 'ADD'"
                            @click="but_addNBJH()"
                        >新增内部计划</el-button>
                        <el-button
                            class="button"
                            type="primary"
                            size="mini"
                            icon="el-icon-plus"
                            v-privilege="activeMenu + 'ADD'"
                            @click="but_add(1)"
                        >新增子计划</el-button>
                    <div style="float:right; text-align: right;">
                        <el-radio-group v-model="radio" @change="radioChange()">
                            <el-radio :label="0">
                                展开编辑
                            </el-radio>
                            <el-radio :label="1">
                                取消展开
                            </el-radio>
                         </el-radio-group>
                        <el-button
                        type="danger"
                        size="mini"
                        icon="el-icon-add-outline"
                        @click="edit_plural()"
                       >强制修改</el-button>
                        <el-button
                        type="primary"
                        size="mini"
                        icon="el-icon-search"
                        v-privilege="activeMenu + 'QUERY'"
                        @click="getTableData(1)"
                        >查询</el-button>
                        <el-button
                        type="primary"
                        size="mini"
                        icon="el-icon-add-outline"
                        @click="but_edit_plural()"
                    >保存</el-button>
                    <el-button
                        type="primary"
                        size="mini"
                        icon="el-icon-add-outline"
                        @click="issue()"
                    >下发</el-button>
                    <el-button
                        type="primary"
                        size="mini"
                        icon="el-icon-add-outline"
                        @click="offissue()"
                    >取消下发</el-button>
                    <el-button
                        class="button"
                        type="danger"
                        size="mini"
                        icon="el-icon-delete"
                        @click="but_del_plural()"
                    >删除</el-button>
                    <el-button
                    size="mini"
                    :icon="filterForm.show ? 'el-icon-caret-top' : 'el-icon-caret-bottom'"
                    :title="filterForm.show ? '收起搜索区' : '展开搜索区'"
                    @click="filterForm.show = !filterForm.show;
                    $nextTick(() => {
                        singleTableHeight = getRoleHeight($refs['boxBottom']) - 45;
                    }
                    );"
                    >{{ filterForm.show ? '收起' : '展开' }}</el-button>
                    </div>
                </div>
            </div>
            <div class="box-bottom" ref="boxBottom">
                <div class="table-box" ref="table_box">
                    <div class="table-left" :style="{ width: leftTableWidth + 'px' }" v-if="leftTableShow">
                        <el-form
                            size="mini"
                            ref="dialog_form_arr_1"
                            label-width="0px"
                            :model="tableFormDataObj"
                        >
                            <el-table stripe
                                id="singleTable1"
                                ref="singleTable1"
                                :data="leftTableData"
                                v-loading="leftTableLoading"
                                style="width: 100%;"
                                :height="singleTableHeight"
                                border
                                size="mini"
                                highlight-current-row
                                show-summary
                                :summary-method="getSummaries"
                                @current-change="getTableDetailData"
                                @selection-change="handleSelectionChangeAsleft"
                                @row-click="openDetails"
                            >
                           <el-table-column
                            sortable
                            type="selection"
                            width="40"
                            align="center"
                            :selectable="checkboxTLeft"
                            fixed="left"
                            class-name="cnspicuous"
                        ></el-table-column>
                        <el-table-column
                           sortable
                            prop="id"
                            label="编号"
                            align="center"
                            fixed="left"
                            width="135px"
                            :show-overflow-tooltip="true"
                        ></el-table-column>
                        <el-table-column
                           sortable
                            prop="jhTime"
                            label="排产日期"
                            width="97px"
                            :show-overflow-tooltip="true"
                        ></el-table-column>
                        <el-table-column
                        sortable
                            prop="tag"
                            label="应急标识"
                            align="center"
                            fixed="left"
                            width="88px"
                            :show-overflow-tooltip="true"
                        >
                         <template slot-scope="scope">
                                <span
                                    :style="{color: nameObj.tag.obj[scope.row.tag] ? nameObj.tag.obj[scope.row.tag].color : ''}"
                                >{{ nameObj.tag.obj[scope.row.tag] ? nameObj.tag.obj[scope.row.tag].name : scope.row.tag }}</span>
                        </template>
                        </el-table-column>
                        <el-table-column
                           sortable
                            prop="deliveryDate"
                            label="交货日期"
                            align="center"
                            width="80px"
                            :show-overflow-tooltip="true"
                        ></el-table-column>
                        <el-table-column
                                prop="grades"
                                label="钢种"
                                align="center"
                                width="71px"
                                :show-overflow-tooltip="true"
                                >
                                </el-table-column>
                            <!-- <el-table-column
                                sortable
                                    prop="iateralArea"
                                    label="断面"
                                    min-width="100px"
                                    :show-overflow-tooltip="true"
                                >
                                </el-table-column>
                              <el-table-column
                                sortable
                                    prop="dimension"
                                    label="截面尺寸"
                                    min-width="100px"
                                    :show-overflow-tooltip="true"
                                >
                                </el-table-column> -->
                                <el-table-column
                                sortable
                                    prop="specifications"
                                    label="规格"
                                    align="center"
                                    min-width="84px"
                                    :show-overflow-tooltip="true"
                                >
                                </el-table-column>
                                 <el-table-column
                                    sortable
                                    prop="lengths"
                                    label="长度"
                                    align="center"
                                    min-width="72px"
                                    :show-overflow-tooltip="true"
                                ></el-table-column>
                                <el-table-column
                                sortable
                                    prop="planweight"
                                    label="计划量"
                                    align="center"
                                    width="80px"
                                    :show-overflow-tooltip="true"
                                >
                                </el-table-column>
                                <el-table-column
                                sortable
                                    prop="kxf_weight"
                                    label="可下发量"
                                    align="center"
                                    min-width="80px"
                                    :show-overflow-tooltip="true"
                                >
                                </el-table-column>
                                <el-table-column
                                sortable
                                    prop="yxf_weight"
                                    label="已下发量"
                                    align="center"
                                    min-width="80px"
                                    :show-overflow-tooltip="true"
                                >
                                </el-table-column>
                            </el-table>
                        </el-form>
                    </div>
                    <div class="table-tuodong" :style="{ height: singleTableHeight + 'px' }"
                        @mousedown="tableTDMousedown"
                    ></div>
                    <div class="table-right" :style="{ 'margin-left': (leftTableWidth + 7) + 'px' }">
                        <el-form
                            size="mini"
                            ref="dialog_form_arr_2"
                            label-width="0px"
                            :model="rightTableObj"
                        >
                            <el-table stripe
                                id="singleTable2"
                                ref="singleTable2"
                                :data="rightTableData"
                                v-loading="tableLoading"
                                style="width: 100%;"
                                :height="singleTableHeight"
                                border
                                size="mini"
                                highlight-current-row
                                show-summary
                                :summary-method="getSummaries"
                                @selection-change="handleSelectionChange"
                                :row-class-name="tableRowClassName"
                                @cell-click="cellClick"
                            >
                            <el-table-column
                                sortable
                                type="selection"
                                width="40"
                                align="center"
                                :selectable='checkboxT'
                                fixed="left"
                                class-name="cnspicuous"
                            ></el-table-column>
                                <el-table-column
                                sortable
                                    prop="roundid"
                                    label="编号"
                                    fixed="left"
                                    min-width="143px"
                                    v-model="filterForm.data.sqno"
                                    :show-overflow-tooltip="true"
                                ></el-table-column>
                                <el-table-column
                                   sortable
                                    prop="describe"
                                    align="center"
                                    label="轮次描述"
                                    min-width="160px"
                                    :show-overflow-tooltip="true"
                                >
                                <template slot-scope="scope">
                                <el-form-item
                                 :prop="scope.row.seq + '.describe'"
                                 v-if=" !isCheck && scope.row.isSelection && scope.row.state !== '3'"
                                 :rules="tableFormRules.describe"
                                >
                                    <el-input
                                    style="width: 100%;"
                                    v-model="rightTableObj[scope.row.seq].describe"
                                    @keydown.native="keyDown" :id="scope.$index + scope.column.id"
                                    refcous="true"
                                    ></el-input>
                                </el-form-item>
                                <span v-else>{{scope.row.describe}}</span>
                                </template>
                                </el-table-column>
                                <el-table-column
                                    sortable
                                    prop="may"
                                    align="center"
                                    label="排产日期"
                                    min-width="134px"
                                    :show-overflow-tooltip="true"
                                >
                                <template slot-scope="scope">
                                <el-form-item
                                 :prop="scope.row.seq + '.may'"
                                 v-if=" !isCheck && scope.row.isSelection && scope.row.state !== '3'"
                                 :rules="tableFormRules.may"
                                >
                                <el-date-picker
                                    value-format="yyyy-MM-dd"
                                    type="date"
                                    v-model="rightTableObj[scope.row.seq].may"
                                    placeholder=""
                                    style="width: 100%;"
                                    @keydown.native="keyDown"
                                ></el-date-picker>
                                <!-- <zj-timegran-date
                                    v
                                    :id="scope.$index + scope.column.id"
                                    style="width: 100%;"
                                    :timegranId="'DAY'"
                                ></zj-timegran-date> -->
                                </el-form-item>
                                <span v-else>{{scope.row.may}}</span>
                                </template>
                                </el-table-column>
                                <el-table-column
                                sortable
                                    prop="state"
                                    align="center"
                                    label="状态"
                                    min-width="70px"
                                    :show-overflow-tooltip="true"
                                >
                                <template slot-scope="scope">
                                <span
                                    :style="{color: nameObj.state.obj[scope.row.state] ? nameObj.state.obj[scope.row.state].color : ''}"
                                >{{ nameObj.state.obj[scope.row.state] ? nameObj.state.obj[scope.row.state].name : scope.row.state }}</span>
                                 </template>
                                </el-table-column>
                                <el-table-column
                                sortable
                                    prop="grades"
                                    label="钢种"
                                    min-width="126px"
                                    :show-overflow-tooltip="true"
                                >
                                <template slot-scope="scope">
                                    <el-form-item
                                    :prop="scope.row.seq + '.grades'"
                                    v-if=" !isCheck && scope.row.isSelection && scope.row.state !== '3'"
                                    :rules="tableFormRules.grades"
                                  >
                                    <el-select
                                    allow-create
                                    filterable
                                    clearable
                                    v-model="rightTableObj[scope.row.seq].grades"
                                    @keydown.native="keyDown" :id="scope.$index + scope.column.id"
                                    placeholder=""
                                    >
                                    <el-option
                                    v-for="item of nameObj.grades.arr"
                                    :key="item.id"
                                    :value="item.name"
                                    :label="item.name"
                                    ></el-option>
                                    </el-select>
                                </el-form-item>
                                <span v-else>{{ nameObj.grades.obj[scope.row.grades] ?  nameObj.grades.obj[scope.row.grades].name : scope.row.grades }}</span>
                                </template>
                                </el-table-column>
                                <el-table-column
                                sortable
                                    prop="specifications"
                                    label="规格"
                                    align="center"
                                    min-width="109px"
                                    :show-overflow-tooltip="true"
                                >
                                <template slot-scope="scope">
                                <el-form-item
                                 :prop="scope.row.seq + '.specifications'"
                                 v-if=" !isCheck && scope.row.isSelection && scope.row.state !== '3'"
                                 :rules="tableFormRules.specifications"
                                >
                                    <el-select
                                    allow-create
                                    filterable
                                    clearable
                                    v-model="rightTableObj[scope.row.seq].specifications"
                                    @keydown.native="keyDown" :id="scope.$index + scope.column.id"
                                    placeholder=""
                                    >
                                    <el-option
                                    v-for="item of nameObj.specifications.arr"
                                    :key="item.id"
                                    :value="item.name"
                                    :label="item.name"
                                    ></el-option>
                                    </el-select>
                                </el-form-item>
                                <span v-else>{{ nameObj.specifications.obj[scope.row.specifications] ? nameObj.specifications.obj[scope.row.specifications].name : scope.row.specifications }}</span>
                               </template>
                                </el-table-column>
                                <el-table-column
                                    sortable
                                    prop="lengths"
                                    label="长度"
                                    align="center"
                                    min-width="100px"
                                    :show-overflow-tooltip="true"
                                >
                                <template slot-scope="scope">
                                 <el-form-item
                                 :prop="scope.row.seq + '.lengths'"
                                 v-if=" !isCheck && scope.row.isSelection && scope.row.state !== '3'"
                                 :rules="tableFormRules.lengths"
                                >
                                    <el-input
                                    style="width: 100%;"
                                    @keydown.native="keyDown" :id="scope.$index + scope.column.id"
                                    v-model="rightTableObj[scope.row.seq].lengths"
                                    refcous="true"
                                    ></el-input>
                                </el-form-item>
                                <span v-else>{{scope.row.lengths}}</span>
                                </template>
                                </el-table-column>
                                <el-table-column
                                sortable
                                    prop="planWeight"
                                    label="计划量"
                                    align="center"
                                    min-width="75px"
                                    :show-overflow-tooltip="true"
                                >
                                <template slot-scope="scope">
                                <el-form-item
                                 :prop="scope.row.seq + '.planWeight'"
                                 v-if=" !isCheck && scope.row.isSelection && scope.row.state !== '3'"
                                  :rules="tableFormRules.planWeight"
                                >
                                    <el-input
                                    style="width: 100%;"
                                    v-model="rightTableObj[scope.row.seq].planWeight"
                                    @keydown.native="keyDown" :id="scope.$index + scope.column.id"
                                    refcous="true"
                                    ></el-input>
                                </el-form-item>
                                <span v-else>{{scope.row.planWeight}}</span>
                            </template>
                                </el-table-column>
                                <!-- <el-table-column
                                sortable
                                    prop="iateralArea"
                                    label="断面"
                                    min-width="100px"
                                    :show-overflow-tooltip="true"
                                >
                                <template slot-scope="scope">
                                <el-form-item
                                 :prop="scope.row.seq + '.iateralArea'"
                                 v-if=" !isCheck && scope.row.isSelection && scope.row.state !== '2'"
                                  :rules="tableFormRules.iateralArea"
                                >
                               <el-select
                                    allow-create
                                    filterable
                                    clearable
                                    v-model="rightTableObj[scope.row.seq].iateralArea"
                                    @keydown.native="keyDown" :id="scope.$index + scope.column.id"
                                    placeholder=""
                                    >
                                    <el-option
                                    v-for="item of nameObj.iateralArea.arr"
                                    :key="item.id"
                                    :value="item.name"
                                    :label="item.name"
                                    ></el-option>
                                    </el-select>
                                </el-form-item>
                                <span v-else>{{ nameObj.iateralArea.obj[scope.row.iateralArea] ? nameObj.iateralArea.obj[scope.row.iateralArea].name : scope.row.iateralArea }}</span>
                               </template>
                                </el-table-column> -->
                                <!-- <el-table-column
                                sortable
                                    prop="dimension"
                                    label="截面尺寸"
                                    min-width="100px"
                                    :show-overflow-tooltip="true"
                                >
                                <template slot-scope="scope">
                                <el-form-item
                                 :prop="scope.row.seq + '.dimension'"
                                 v-if=" !isCheck && scope.row.isSelection && scope.row.state !== '2'"
                                  :rules="tableFormRules.dimension"
                                >
                                    <el-select
                                    allow-create
                                    filterable
                                    clearable
                                    v-model="rightTableObj[scope.row.seq].dimension"
                                    @keydown.native="keyDown" :id="scope.$index + scope.column.id"
                                    placeholder=""
                                    >
                                    <el-option
                                    v-for="item of nameObj.dimension.arr"
                                    :key="item.id"
                                    :value="item.name"
                                    :label="item.name"
                                    ></el-option>
                                    </el-select>
                                </el-form-item>
                                <span v-else>{{ nameObj.dimension.obj[scope.row.dimension] ? nameObj.dimension.obj[scope.row.dimension].name : scope.row.dimension }}</span>
                               </template>
                                </el-table-column> -->
                                <el-table-column
                                sortable
                                    prop="transportType"
                                    label="运输方式"
                                    min-width="100px"
                                    :show-overflow-tooltip="true"
                                >
                                <template slot-scope="scope">
                                     <el-form-item
                                     :prop="scope.row.seq + '.transportType'"
                                     v-if=" !isCheck && scope.row.isSelection && scope.row.state !== '3'"
                                     :rules="tableFormRules.transportType"
                                  >
                                    <el-select
                                    allow-create
                                    filterable
                                    clearable
                                    v-model="rightTableObj[scope.row.seq].transportType"
                                    @keydown.native="keyDown" :id="scope.$index + scope.column.id"
                                    placeholder=""
                                    >
                                    <el-option
                                    v-for="item of nameObj.transportType.arr"
                                    :key="item.id"
                                    :value="item.name"
                                    :label="item.name"
                                    ></el-option>
                                    </el-select>
                                </el-form-item>
                                <span v-else>{{ nameObj.transportType.obj[scope.row.transportType] ? nameObj.transportType.obj[scope.row.transportType].name : scope.row.transportType }}</span>
                                </template>
                                </el-table-column>
                                <el-table-column
                                sortable
                                    prop="chemicalStandard"
                                    label="化学成份执行标准"
                                    align="center"
                                    min-width="126px"
                                    :show-overflow-tooltip="true"
                                >
                                <template slot-scope="scope">
                                   <el-form-item
                                   :prop="scope.row.seq + '.chemicalStandard'"
                                   v-if=" !isCheck && scope.row.isSelection && scope.row.state !== '3'"
                                    :rules="tableFormRules.chemicalStandard"
                                  >
                                    <el-select
                                    allow-create
                                    clearable
                                    v-model="rightTableObj[scope.row.seq].chemicalStandard"
                                    @keydown.native="keyDown" :id="scope.$index + scope.column.id"
                                    placeholder=""

                                    >
                                    <el-option
                                    v-for="item of nameObj.chemicalStandard.arr"
                                    :key="item.id"
                                    :value="item.name"
                                    :label="item.name"
                                    ></el-option>
                                    </el-select>
                                </el-form-item>
                                 <span v-else>{{ nameObj.chemicalStandard.obj[scope.row.chemicalStandard] ? nameObj.chemicalStandard.obj[scope.row.chemicalStandard].name : scope.row.chemicalStandard }}</span>
                                </template>
                                </el-table-column>
                                <el-table-column
                                sortable
                                    prop="issuedTime"
                                    align="center"
                                    label="下发时间"
                                    min-width="130px"
                                    :show-overflow-tooltip="true"
                                ></el-table-column>
                                <el-table-column
                                sortable
                                    prop="createman"
                                    label="创建人"
                                    align="center"
                                    min-width="76px"
                                    :show-overflow-tooltip="true"
                                ></el-table-column>
                                <el-table-column
                                sortable
                                    prop="createtime"
                                    label="创建时间"
                                    align="center"
                                    min-width="130px"
                                    :show-overflow-tooltip="true"
                                ></el-table-column>
                                <el-table-column
                                sortable
                                    prop="updateman"
                                    label="修改人"
                                    align="center"
                                    min-width="76px"
                                    :show-overflow-tooltip="true"
                                ></el-table-column>
                                <el-table-column
                                sortable
                                    prop="updatetime"
                                    label="修改时间"
                                    min-width="130px"
                                    :show-overflow-tooltip="true"
                                ></el-table-column>
                                <el-table-column
                                sortable
                                    prop="memo"
                                    label="备注"
                                    align="center"
                                    min-width="100px"
                                    :show-overflow-tooltip="true"
                                >
                                <template slot-scope="scope">
                                 <el-form-item
                                 :prop="scope.row.seq + '.memo'"
                                 v-if=" !isCheck && scope.row.isSelection && scope.row.state !== '3'"
                                  :rules="tableFormRules.memo"
                                >
                                    <el-input
                                    style="width: 100%;"
                                    v-model="rightTableObj[scope.row.seq].memo"
                                    @keydown.native="keyDown" :id="scope.$index + scope.column.id"
                                    refcous="true"
                                    ></el-input>
                                </el-form-item>
                                <span v-else>{{scope.row.memo}}</span>
                                </template>
                                </el-table-column>
                                <el-table-column
                                    prop="roundid"
                                    label="轮次序号"
                                    min-width="100px"
                                    :show-overflow-tooltip="true"
                                    v-if="filterForm.data.show"
                                ></el-table-column>
                                <el-table-column
                                    prop="parentid"
                                    label="父级id"
                                    min-width="100px"
                                    :show-overflow-tooltip="true"
                                    v-if="filterForm.data.show"
                                ></el-table-column>
                                <el-table-column
                                    prop="workprocType"
                                    label="工序类别"
                                    min-width="100px"
                                    :show-overflow-tooltip="true"
                                     v-if="filterForm.data.show"
                                ></el-table-column>
                            </el-table>
                        </el-form>
                    </div>
                </div>
                <el-row>
                        <el-col :span="10" v-if="leftTableShow">
                <el-pagination
                    layout="total, sizes, prev, pager, next, jumper"
                    :total="total1"
                    :page-sizes="[10, 20, 50, 100, 500, 1000]"
                    :page-size="pageSize1"
                    :current-page.sync="pageNum1"
                    @size-change="LftetableSizeChange"
                    @current-change="getTableData"
                    style="text-align: left;margin-top: 10px;"
                ></el-pagination>
                    </el-col>
                    <el-col :span="14">
                  <el-pagination
                    layout="total, sizes, prev, pager, next, jumper"
                    :total="total"
                    :page-sizes="[10, 20, 50, 100, 500, 1000]"
                    :page-size="pageSize"
                    :current-page.sync="pageNum"
                    @size-change="tableSizeChange"
                    @current-change="chageMethod()"
                    style="text-align: right;margin-top: 10px;"
                ></el-pagination>
                       </el-col>
                </el-row>
            </div>
        </div>
        <el-dialog
        title="内部计划 新增"
        :visible.sync="dialog.editorBox.show"
         width="600px"
        :close-on-click-modal="false"
        :show-close="!loading"
        >
     <div>
         <el-form
          ref="dialog_form"
         :model="dialog.editorBox.form.data"
         :rules="dialog.editorBox.form.rules"
         size="mini"
         label-width="95px"
         >
        <el-row>
            <el-col :span="12">
                  <el-form-item
                    label="排产日期"
                    prop="may"
                    :rules="dialog.editorBox.form.may"
                    >
                    <zj-timegran-date
                    v-model="dialog.editorBox.form.data.may"
                    style="width: 100%;"
                    :timegranId="'DAY'"
                    :oneFoo="getTableData"
                    ></zj-timegran-date>
                </el-form-item>
            </el-col>
            <el-col :span="12">
            <el-form-item
                 label="计划量"
                >
               <el-input
                clearable
                style="width: 100%;"
                v-model="dialog.editorBox.form.data.planWeight"
               >
               </el-input>
                </el-form-item>
            </el-col>
        </el-row>
         </el-form>
     </div>
        <span
        slot="footer"
        class="dialog-footer"
            >
        <el-button
        @click="dialog.editorBox.show = false"
        :loading="loading"
        >取 消</el-button>
        <el-button
        type="primary"
        @click="dataSave"
        :loading="loading"
        >保 存</el-button>
    </span>
        </el-dialog>
     <zj-formulaEditor :equationEditing="dialog.equationEditing"></zj-formulaEditor>
    </div>
</template>

<script>
import { zCheckNumber1 } from '~/utils/validator.js';
import timegranDate from '~/components/zg/timegranDate.vue';
import formulaEditor from '~/components/zg/formulaEditor.vue';
import {formatDate, XtcommonSummaries} from '@/utils/util.js';
export default {
    name: 'balanceSheetData',
    components: {
        'zj-timegran-date': timegranDate,
        'zj-formulaEditor': formulaEditor
    },
    data () {
        return {
            activeMenu: '',
            isCheck: false, // 是否为审核人
            radio: '1',
            leftTableShow: true,
            filterForm: {
                show: true,
                data: {
                    id: '',
                    Gmid: '',
                    timegranid: '',
                    clock: '',
                    workprocid: '',
                    workprocType: '',
                    workproc_type: '',
                    energyid: '',
                    propertyid: '',
                    itemid: '',
                    itemname: '',
                    itemdesc: '',
                    may: '',
                    canissue: '',
                    weightMonth: '',
                    issue: '',
                    yxf_weight: '',
                    kxf_weight: '',
                    describe: '',
                    state: '',
                    grades: '',
                    specifications: '',
                    lengths: '',
                    chemicalStandard: '',
                    surfaceStandard: '',
                    transportType: '',
                    parentid: '',
                    purpose: '',
                    sqno: '',
                    show: false
                }
            },
             rules: {
                },
            pageNum: 1,
            pageSize: 20,
            total: 0,
            pageNum1: 1,
            pageSize1: 20,
            total1: 0,
            singleTableHeight: 100,
            leftTableData: [],
            leftTableLoading: false,
            leftTableWidth: 550,
            difference: 0,
             rightTableData: [],
            rightTableObj: {
            },
            leftData: {
            },
            multipleSelection: [],
            multipleSelectionAscLeft: [],
            tableFormDataObj: {},
            tableFormRules: {
                planWeight: [
                    { required: true, message: '该项不能为空', trigger: 'change' },
                    { validator: zCheckNumber1, trigger: 'change' }
                ],
                grades: [
                    { required: true, message: '该项不能为空', trigger: 'change' }
                ],
                specifications: [
                    { required: true, message: '该项不能为空', trigger: 'change' }
                ],
                transportType: [
                    { required: true, message: '该项不能为空', trigger: 'change' }
                ],
                purpose: [
                    { required: true, message: '该项不能为空', trigger: 'change' }
                ],
                chemicalStandard: [
                    { required: true, message: '该项不能为空', trigger: 'change' }
                ]
            },
            nameObj: {
                timegranid: {
                    obj: {},
                    arr: []
                },
                workprocid: {
                    obj: {
                        'AT2005': {
                            id: 'AT2005',
                          name: '一高线'
                         },
                         'AT2006': {
                             id: 'AT2006',
                           name: '二高线'
                        }
                         },
                    arr: [{
                        id: 'AT2005',
                        name: '一高线'
                        },
                        {
                        id: 'AT2006',
                        name: '二高线'
                       }]
                },
                lengthTimeswidth: {
                    obj: {},
                    arr: []
                },
                dimension: {
                    obj: {},
                    arr: []
                },
                iateralArea: {
                    obj: {},
                    arr: []
                },
                energyid: {
                    obj: {},
                    arr: []
                },
                propertyid: {
                    obj: {},
                    arr: []
                },
                unit: {
                    obj: {},
                    arr: []
                },
                state: {
                    obj: {
                        '0': {
                            name: '已编制',
                            color: '#7a7a7a'
                        },
                        '1': {
                            name: '已下发',
                            color: 'rgb(28, 111, 217)'
                        },
                        '2': {
                            name: '已接收',
                            color: 'red'
                        },
                    arr: [
                        {
                            id: '0',
                            name: '已编制'
                        },
                        {
                            id: '1',
                            name: '已下发'
                        },
                        {
                            id: '2',
                            name: '已接收'
                        }
                    ]
                    }
                },
                grades: {
                    obj: {},
                    arr: []
                },
                specifications: {
                    obj: {},
                    arr: []
                },
                transportType: {
                    obj: {'0': {name: '火运'}, '1': {name: '汽运'}},
                    arr: [
                        {
                            id: '0',
                            name: '火运'
                        },
                        {
                            id: '1',
                            name: '汽运'
                        }
                    ]
                },
                chemicalStandard: {
                    obj: {},
                    arr: []
                },
                purpose: {
                    obj: {
                        '0': {name: '标准件'},
                        '1': {name: '铁丝'}
                    },
                    arr: [
                        {
                            id: '0',
                            name: '标准件'
                        },
                        {
                            id: '1',
                            name: '铁丝'
                        }
                    ]
                }
            },
            loading: false,
            tableLoading: false,
            dialog: {
                fRow: null,
                editorBox: {
                    show: false,
                    type: '',
                    form: {
                        default: {
                            workprocid: ''
                        },
                        data: {
                            itemid: '',
                            materialid: '',
                            workprocid: '',
                            unitid: '',
                            seqno: '',
                            mes_prodline: '',
                            code: '',
                            digits: '',
                            may: '',
                            canissue: '',
                            weightMonth: '',
                            issue: '',
                            yxf_weight: '',
                            kxf_weight: '',
                            describe: '',
                            state: '',
                            grades: '',
                            specifications: '',
                            lengths: '',
                            chemicalStandard: '',
                            surfaceStandard: '',
                            transportType: '',
                            workprocType: '',
                            purpose: '',
                            planWeight: ''
                        },
                         rules: {
                            planWeight: [
                                { required: true, message: '该项不能为空', trigger: 'change' },
                                { validator: zCheckNumber1, trigger: 'change' }
                            ],
                            grades: [
                                { required: true, message: '该项不能为空', trigger: 'change' }
                            ],
                            specifications: [
                                { required: true, message: '该项不能为空', trigger: 'change' }
                            ],
                            transportType: [
                                { required: true, message: '该项不能为空', trigger: 'change' }
                            ],
                            purpose: [
                                { required: true, message: '该项不能为空', trigger: 'change' }
                            ],
                            chemicalStandard: [
                                { required: true, message: '该项不能为空', trigger: 'change' }
                            ],
                            may: [
                                { required: true, message: '该项不能为空', trigger: 'change' }
                            ],
                            workprocid: [
                                { required: true, message: '该项不能为空', trigger: 'change' }
                            ]
                        }
                    }
                }
            }
        }
    },
    created () {
        this.activeMenu = window.localStorage.getItem('activeMenu');
    },
    mounted () {
        let that = this;
        window.PEDataObj = {
            // 将数据绑定到window上，供main页面使用
            vm: that,
            // tableArr：用于导出成Excel的表格的信息
            tableArr: [
                {
                    name: '左表格',
                    id: 'singleTable1'
                },
                {
                    name: '右表格',
                    id: 'singleTable2'
                }
            ]
        };
        // 接收路由参数
         if (that.$route.query.workproc_type) {
            that.filterForm.data.workproc_type = that.$route.query.workproc_type;
        }
        that.$nextTick(() => {
            // 立即获取的height有一定偏差，通过setTimeout延迟来解决
            setTimeout(() => {
                that.singleTableHeight = that.getRoleHeight(that.$refs['boxBottom']) - 45;
            }, 1);
        });
        that.getTimeGranData();
        that.getEnergyIdData();
        that.getPropertyIdData();
        that.getGrades();
        that.getStandards();
        that.getUnitIdData();
        that.getiateralArea();
        that.getdimension();
        that.getlengthTimesWidth();
    },
    methods: {
        //  计算树区域高度
        getRoleHeight (dom) {
            return window.innerHeight - dom.offsetTop;
        },
        // 自定义的表格合计方法：只给指定列进行合计
        getSummaries (param) {
            const prop = ['kxf_weight', 'planweight', 'yxf_weight', 'planWeight']; // 合计列绑定的prop
            return XtcommonSummaries(param, prop);
        },
        // 获取时间粒度(平衡表数据维护)
        getTimeGranData () {
            let that = this
            let url = 'pass/ems/v1/tcmdatasourcetimegrans/getTimegranRmBalanceValue';
            that.axios.get(url)
                .then(function (res) {
                    if (res.code === '0') {
                        let arr = [];
                        let obj = {};
                        for (let item of res.data) {
                            arr.push({
                                id: item.ID,
                                name: item.NAME
                            })
                            obj[item.ID] = item.NAME;
                            that.filterForm.data.timegranid = that.filterForm.data.timegranid ? that.filterForm.data.timegranid : item.ID;
                        }
                        that.nameObj.timegranid.arr = arr;
                        that.nameObj.timegranid.obj = obj;
                    } else {
                        that.$message.error(res.message);
                    }
                });
        },
        checkboxT (row, index) {
            if (row.state === '3' && !this.isCheck) {
                return false;
            } else {
                return true;
            }
        },
        checkboxTLeft (row, index) {
           return true;
        },
        // 获取能介(平衡表)
        getEnergyIdData () {
            let that = this
            let url = 'pass/ems/v1/trmenergys/selectNameAndId/?isbalance=1';
            that.axios.get(url)
                .then(function (res) {
                    if (res.code === '0') {
                        let arr = [];
                        let obj = {};
                        for (let item of res.data) {
                            arr.push({
                                id: item.id,
                                name: item.name
                            })
                            obj[item.id] = item.name;
                        }
                        that.nameObj.energyid.arr = arr;
                        that.nameObj.energyid.obj = obj;
                    } else {
                        that.$message.error(res.message);
                    }
                });
        },
        // 获取高度和宽度
        getlengthTimesWidth () {
            let that = this
            let url = 'pass/ems/v1/emsprodplanrounds/getbasespecbillet';
            that.axios.get(url)
                .then(function (res) {
                    if (res.code === '0') {
                        let arr = [];
                        let obj = {};
                        for (let item of res.data) {
                            arr.push({
                                id: item.id,
                                name: item.specifications
                            })
                        }
                        that.nameObj.specifications.arr = arr;
                        that.nameObj.specifications.obj = obj;
                    } else {
                        that.$message.error(res.message);
                    }
                });
        },
        // 获取截面尺寸
        getdimension () {
            let that = this
            let url = 'pass/ems/v1/emsprodplanrounds/getdimension';
            that.axios.get(url)
                .then(function (res) {
                    if (res.code === '0') {
                        let arr = [];
                        let obj = {};
                        for (let item of res.data) {
                            arr.push({
                                id: item.id,
                                name: item.dimension
                            })
                        }
                        that.nameObj.dimension.arr = arr;
                        that.nameObj.dimension.obj = obj;
                        console.log(that.nameObj.dimension);
                    } else {
                        that.$message.error(res.message);
                    }
                });
        },
        // 获取断面
        getiateralArea () {
            let that = this
            let url = 'pass/ems/v1/emsprodplanrounds/getiateralArea';
            that.axios.get(url)
                .then(function (res) {
                    if (res.code === '0') {
                        let arr = [];
                        let obj = {};
                        for (let item of res.data) {
                            arr.push({
                                id: item.id,
                                name: item.iateralArea
                            })
                        }
                        that.nameObj.iateralArea.arr = arr;
                        that.nameObj.iateralArea.obj = obj;
                    } else {
                        that.$message.error(res.message);
                    }
                });
        },
        // 获取属性
        getPropertyIdData () {
            let that = this
            let url = 'pass/ems/v1/trmenergypropertys/getidandname/';
            that.axios.get(url)
                .then(function (res) {
                    if (res.code === '0') {
                        let arr = [];
                        let obj = {};
                        for (let item of res.data) {
                            arr.push({
                                id: item.id,
                                name: item.name
                            })
                            obj[item.id] = item.name;
                        }
                        that.nameObj.propertyid.arr = arr;
                        that.nameObj.propertyid.obj = obj;
                    } else {
                        that.$message.error(res.message);
                    }
                });
        },
        // 获取标准计量单位
        getUnitIdData () {
            let that = this
            let url = 'pass/ems/v1/trmunits/getIdAndName';
            that.axios.get(url)
                .then(function (res) {
                    if (res.code === '0') {
                        let arr = [];
                        let obj = {};
                        for (let item of res.data) {
                            arr.push({
                                id: item.id,
                                name: item.name
                            })
                            obj[item.id] = item.name;
                            if (item.name === '吨') {
                                that.nameObj.unit.defaults = that.nameObj.unit.defaults ? that.nameObj.unit.defaults : item.id;
                            }
                        }
                        that.nameObj.unit.arr = arr;
                        that.nameObj.unit.obj = obj;
                    } else {
                        that.$message.error(res.message);
                    }
                });
        },
        // 获取表格中的数据
        getTableData (pageNum1) {
            let that = this,
                params = {
                   workprocType: that.filterForm.data.workproc_type,
                   startTime: that.filterForm.data.clock[0],
                   endTime: that.filterForm.data.clock[1],
                   id: that.filterForm.data.Gmid,
                   grades: that.filterForm.data.grades.join(','),
                   specifications: that.filterForm.data.specifications.join(',')
                };
            that.pageNum1 = pageNum1 || that.pageNum1;
            that.leftTableLoading = true;
            let url = 'pass/ems/v1/emsgmpcjhs/getGmDates/?pageNum=' + that.pageNum1 + '&pageSize=' + that.pageSize1;
            that.axios.get(url, {
                params: params
            })
                .then(function (res) {
                    if (res.code === '0') {
                        let arr = [];
                        for (let i = 0; i < res.data.list.length; i++) {
                             let item = res.data.list[i];
                            arr.push({
                                seq: i,
                                id: item.ID,
                                jhTime: item.JHTIME,
                                state: item.STATE,
                                grades: item.GRADES,
                                specifications: item.SPECIFICATIONS,
                                lengths: item.LENGTHS,
                                chemicalStandard: item.CHEMICALSTANDARD,
                                surfacestandard: item.SURFACESTANDARD,
                                workprocType: item.WORKPROCTYPE,
                                iateralArea: item.IATERALAREA,
                                lengthTimesWidth: item.LENGTHTIMESWIDTH,
                                transportType: item.TRANSPORTTYPE,
                                receivetime: item.RECEIVETIME,
                                createman: item.CREATEMAN,
                                createtime: item.CREATETIME,
                                updateman: item.UPDATEMAN,
                                purpose: item.PURPOSE,
                                updatetime: item.UPDATETIME,
                                deliveryDate: item.DELIVERYDATE,
                                memo: item.MEMO,
                                planweight: item.PLANWEIGHT,
                                dimension: item.DIMENSION,
                                kxf_weight: item.PLANWEIGHT - item.YXF_WEIGHT,
                                yxf_weight: item.YXF_WEIGHT,
                                tag: item.TAG ? item.TAG : '0'
                            })
                        }
                        that.leftTableData = arr;
                        that.total1 = res.data.total;
                        that.dialog.fRow = null;
                    } else {
                        that.$message.error(res.message);
                    }
                    that.leftTableLoading = false;
                }).catch(function () {
                    that.leftTableLoading = false;
                });
        },
        //切换查询方法
        chageMethod(){
            let that = this;
            if (that.leftTableShow == true){
               that.getTableDetailDatas(that.pageNum);
            } else {
               that.getTableDetailAsRadio(that.pageNum) 
            }
        },
        // 改变表格显示条数
        tableSizeChange (val) {
            let that = this;
            that.pageSize = val;
            that.chageMethod();
        },
        LftetableSizeChange (val) {
            let that = this;
            that.pageSize1 = val;
            that.getTableData(1);
        },
        // 点击查询
        getTableDetailData (row) {
            let that = this;
            if (row) {
            that.tableLoading = true;
            let url = 'pass/ems/v1/emsprodplanrounds/';
            that.axios.get(url, {
                params: {parentid: row.id}
            })
            .then(function (res) {
                if (res.code === '0') {
                let arr = [];
            for (let i = 0; i < res.data.list.length; i++) {
                let item = res.data.list[i];
                    arr.push({
                    seq: i,
                    parentid: item.parentid,
                    may: item.may,
                    roundid: item.id,
                    describe: item.describe,
                    state: item.state,
                    grades: item.grades,
                    planWeight: item.planWeight,
                    specifications: item.specifications,
                    transportType: item.transportType,
                    purpose: item.purpose,
                    chemicalStandard: item.chemicalStandard,
                    memo: item.memo,
                    issuedTime: item.issuedTime,
                    createman: item.createman,
                    createtime: item.createtime,
                    updateman: item.updateman,
                    updatetime: item.updatetime,
                    sqno: item.sqno,
                    workprocType: item.workprocType,
                    lengthTimesWidth: item.lengthTimesWidth,
                    dimension: item.dimension,
                    iateralArea: item.iateralArea,
                    lengths: item.lengths
                 });
                    }
                    that.rightTableData = arr;
                    that.total = res.data.total;
                    } else {
                        that.$message.error(res.message);
                    }
                    that.tableLoading = false;
                    }).catch(function () {
                    that.tableLoading = false;
            });
            }
        },
        getTableDetailDatas (pageNum, type) {
            let that = this;
            let params = {};
            if (type === 'Add') {
            params = {
            parentid: that.multipleSelectionAscLeft[0].id
           };
            } else {
            params = {
            parentid: that.rightTableData[0].parentid,
            workprocType: that.filterForm.data.workproc_type
          };
            }
            that.pageNum = pageNum || that.pageNum;
            that.tableLoading = true;
            let url = 'pass/ems/v1/emsprodplanrounds/?pageNum=' + that.pageNum + '&pageSize=' + that.pageSize;
            that.axios.get(url, {
                params: params
            })
            .then(function (res) {
                if (res.code === '0') {
                let arr = [];
            for (let i = 0; i < res.data.list.length; i++) {
                let item = res.data.list[i];
                    arr.push({
                    seq: i,
                    parentid: item.parentid,
                    may: item.may,
                    roundid: item.id,
                    describe: item.describe,
                    state: item.state,
                    grades: item.grades,
                    planWeight: item.planWeight,
                    specifications: item.specifications,
                    transportType: item.transportType,
                    purpose: item.purpose,
                    chemicalStandard: item.chemicalStandard,
                    memo: item.memo,
                    issuedTime: item.issuedTime,
                    createman: item.createman,
                    createtime: item.createtime,
                    updateman: item.updateman,
                    sqno: item.sqno,
                    updatetime: item.updatetime,
                    workprocType: item.workprocType,
                    lengthTimesWidth: item.lengthTimesWidth,
                    dimension: item.dimension,
                    iateralArea: item.iateralArea,
                    lengths: item.lengths
                 });
                    }
                    that.rightTableData = arr;
                    that.total = res.data.total;
                    } else {
                        that.$message.error(res.message);
                    }
                    that.tableLoading = false;
                    }).catch(function () {
                    that.tableLoading = false;
            });
        },
        //展开自动查询
        getTableDetailAsRadio(pageNum){
            let that = this;
            let ids = [];
            that.leftTableData.forEach((element) => {
                ids.push(element.id);
            });
           that.pageNum = pageNum || that.pageNum;
           let url = 'pass/ems/v1/emsprodplanrounds/getTableDetailAsRadio/?pageNum=' + that.pageNum + '&pageSize=' + that.pageSize;
           that.axios.get(url, {
               params: {
                   id: ids.join(',')
               }
           }).then(function (res) {
               if (res.code == '0') {
                           let arr = [];
            for (let i = 0; i < res.data.list.length; i++) {
                let item = res.data.list[i];
                    arr.push({
                    seq: i,
                    parentid: item.parentid,
                    may: item.may,
                    roundid: item.id,
                    describe: item.describe,
                    state: item.state,
                    grades: item.grades,
                    planWeight: item.planWeight,
                    specifications: item.specifications,
                    transportType: item.transportType,
                    purpose: item.purpose,
                    chemicalStandard: item.chemicalStandard,
                    memo: item.memo,
                    issuedTime: item.issuedTime,
                    createman: item.createman,
                    createtime: item.createtime,
                    updateman: item.updateman,
                    deliveryDate: item.deliveryDate,
                    sqno: item.sqno,
                    updatetime: item.updatetime,
                    workprocType: item.workprocType,
                    auditState: item.auditState
                 });
                    }
                    that.rightTableData = arr;
                    that.total = res.data.total;
                    } else {
                        that.$message.error(res.message);
                    }
                    that.tableLoading = false;
                    }).catch(function () {
                    that.tableLoading = false;
           });
        },
        jsDifference () {
            let that = this;
            let fV = that.dialog.fRow.apportvalue,
                zV = 0;
            let xId = that.dialog.fRow.itemid + '-' + that.dialog.fRow.timegranid + '-' + that.dialog.fRow.clock;
            if (that.tableFormDataObj[xId]) {
                fV = that.tableFormDataObj[xId].apportvalue;
            }
            for (let item of that.rightTableObj.tableData) {
                zV = that.floatComputed(zV, item.apportvalue, '+');
            }
            that.difference = +that.floatComputed(fV, zV, '-').toFixed(3);
        },
        upTableFormDataObj () {
            // 更新右侧表格编辑模式绑定的数据
            let that = this;
            let fRow = that.dialog.fRow;
            if (fRow) {
                if (!fRow.tableFormDataArr || !fRow.isSelection) {
                    // 当前选中行被勾选时不更新tableFormDataObj
                    fRow.tableFormDataArr = JSON.parse(JSON.stringify(fRow.childrenArr));
                }
                if (fRow.isSelection) {
                    that.rightTableObj.tableData = fRow.tableFormDataArr;
                } else {
                    that.rightTableObj.tableData = fRow.childrenArr;
                }
                that.jsDifference();
            }
        },
        // 左边菜单选中
        handleSelectionChangeAsleft (val) {
            let that = this;
            let tableFormDataObj = {};
            let arr = [];
            for (let item of val) {
                arr.push(item.seq);
            }
            this.seqArr = arr.sort(sortNumber);
            for (let item of that.leftTableData) {
                item.isSelection = false;
            }
            for (let item of val) {
                let obj = {};
                let xId = item.seq;
                if (that.tableFormDataObj[xId]) {
                    // 如果已存在该数据则使用该数据
                    tableFormDataObj[xId] = that.tableFormDataObj[xId];
                } else {
                    // 负责则从对应行中获取行内原数据
                    for (let key in item) {
                        obj[key] = item[key];
                    }
                    tableFormDataObj[xId] = obj;
                }
                item.isSelection = true;
            }
            that.tableFormDataObj = tableFormDataObj;
            that.multipleSelectionAscLeft = val;
        },
        // 右边菜单选中
        handleSelectionChange (val) {
            let that = this;
            let rightTableObj = {};
            let arr = [];
            for (let item of val) {
                arr.push(item.seq);
            }
            this.seqArr = arr.sort(sortNumber);
            for (let item of that.rightTableData) {
                item.isSelection = false;
            }
            for (let item of val) {
                let obj = {};
                let xId = item.seq;
                if (that.rightTableObj[xId]) {
                    // 如果已存在该数据则使用该数据
                    rightTableObj[xId] = that.rightTableObj[xId];
                } else {
                    // 负责则从对应行中获取行内原数据
                    for (let key in item) {
                        obj[key] = item[key];
                    }
                    item.realvalue = (!isNaN(Number(item.apportvalue)) && !isNaN(Number(item.wastage))) ? Number(item.apportvalue) + Number(item.wastage) - Number(item.secondVal) : item.realvalue;
                    rightTableObj[xId] = obj;
                }
                item.isSelection = true;
            }
            for (let item of that.rightTableData) {
                if (item.isSelection === false) {
                    item.realvalue = (!isNaN(Number(item.apportvalue)) && !isNaN(Number(item.wastage))) ? Number(item.apportvalue) + Number(item.wastage) - Number(item.secondVal) : item.realvalue;
                }
            }
            that.rightTableObj = rightTableObj;
            that.multipleSelection = val;
        },
        but_edit_plural () {
            let that = this;
            if (that.multipleSelection.length > 0) {
                that.$refs['dialog_form_arr_2'].validate((valid) => {
                    if (valid) {
                        let SubmitData = [];
                        for (let key in that.rightTableObj) {
                            SubmitData.push({
                                parentid: that.rightTableObj[key].parentid,
                                may: that.rightTableObj[key].may,
                                describe: that.rightTableObj[key].describe,
                                state: that.rightTableObj[key].state,
                                grades: that.rightTableObj[key].grades,
                                planWeight: that.rightTableObj[key].planWeight,
                                specifications: that.rightTableObj[key].specifications,
                                transportType: that.rightTableObj[key].transportType,
                                workprocType: that.rightTableObj[key].workprocType,
                                purpose: that.rightTableObj[key].purpose,
                                chemicalStandard: that.rightTableObj[key].chemicalStandard,
                                memo: that.rightTableObj[key].memo,
                                id: that.rightTableObj[key].roundid,
                                sqno: that.rightTableObj[key].sqno,
                                createman: that.rightTableObj[key].createman,
                                createtime: that.rightTableObj[key].createtime,
                                lengthTimesWidth: that.rightTableObj[key].lengthTimesWidth,
                                dimension: that.rightTableObj[key].dimension,
                                iateralArea: that.rightTableObj[key].iateralArea,
                                lengths: that.rightTableObj[key].lengths
                            });
                        }
                        that.loading = true;
                        that.axios.put('pass/ems/v1/emsprodplanrounds/batchUpdate', SubmitData)
                            .then(function (res) {
                                if (res.code === '0') {
                                    that.$message({
                                        message: '保存成功',
                                        type: 'success'
                                    });
                                     that.chageMethod();
                                     that.getStandards();
                                } else {
                                    that.$message.error(res.message);
                                }
                                that.loading = false;
                            }).catch(function () {
                                that.loading = false;
                            });
                        } else {
                        }
                });
            } else {
                this.$message.error('至少要选择一条数据');
            }
        },
        edit_plural () {
            let that = this;
            if (that.multipleSelection.length > 0) {
                        let SubmitData = [];
                        for (let key in that.rightTableObj) {
                            SubmitData.push({
                                parentid: that.rightTableObj[key].parentid,
                                may: that.rightTableObj[key].may,
                                describe: that.rightTableObj[key].describe,
                                state: that.rightTableObj[key].state,
                                grades: that.rightTableObj[key].grades,
                                planWeight: that.rightTableObj[key].planWeight,
                                specifications: that.rightTableObj[key].specifications,
                                transportType: that.rightTableObj[key].transportType,
                                workprocType: that.rightTableObj[key].workprocType,
                                purpose: that.rightTableObj[key].purpose,
                                chemicalStandard: that.rightTableObj[key].chemicalStandard,
                                memo: that.rightTableObj[key].memo,
                                id: that.rightTableObj[key].roundid,
                                sqno: that.rightTableObj[key].sqno,
                                createman: that.rightTableObj[key].createman,
                                createtime: that.rightTableObj[key].createtime,
                                lengthTimesWidth: that.rightTableObj[key].lengthTimesWidth,
                                dimension: that.rightTableObj[key].dimension,
                                iateralArea: that.rightTableObj[key].iateralArea,
                                lengths: that.rightTableObj[key].lengths,
                                issuedTime: that.rightTableObj[key].issuedTime,
                                updateman: that.rightTableObj[key].updateman,
                                updatetime: that.rightTableObj[key].updatetime
                            });
                        }
                                that.loading = true;
                                that.$confirm('确定要强制修改数据吗?', '提示', {
                                confirmButtonText: '确定',
                                cancelButtonText: '取消',
                                state: 'warning'
                                }).then(() => {
                                that.axios.put('pass/ems/v1/emsprodplanrounds/ForcedUpdate', SubmitData)
                                .then(function (res) {
                                if (res.code === '0') {
                                that.$message({
                                    message: '保存成功',
                                    type: 'success'
                                });
                                that.chageMethod();
                                } else {
                                that.$message.error(res.message);
                                }
                                that.loading = false;
                                }).catch(function () {
                                that.loading = false;
                                });
                                });
                        } else {
                            this.$message.error('至少要选择一条数据');
                        }
        },
        getGrades () {
            let that = this
            let url = 'pass/product/v1/emssteel/getGrades/?type=' + '型钢';

            that.axios.get(url)
                .then(function (res) {
                    if (res.code === '0') {
                        let arr = [];
                        let obj = {};
                        for (let item of res.data) {
                            arr.push({
                                id: item.id,
                                name: item.steelName
                            })
                        }
                        that.nameObj.grades.arr = arr;
                        that.nameObj.grades.obj = obj;
                    } else {
                        that.$message.error(res.message);
                    }
                });
        },
        getStandards () {
            let that = this
            let url = 'pass/product/v1/emsstandard/getStandards?type=线材';
            that.axios.get(url)
                .then(function (res) {
                    if (res.code === '0') {
                        let arr = [];
                        let obj = {};
                        for (let item of res.data) {
                            arr.push({
                                id: item.basecode,
                                name: item.basename
                            })
                        }
                        that.nameObj.chemicalStandard.arr = arr;
                        that.nameObj.chemicalStandard.obj = obj;
                    } else {
                        that.$message.error(res.message);
                    }
                });
        },
        issue () {
            let that = this;
            if (that.multipleSelection.length > 0) {
            that.$refs['dialog_form_arr_2'].validate((valid, obj) => {
            if (valid) {
                let SubmitData = [];
                for (let key in that.rightTableObj) {
                   SubmitData.push({
                        parentid: that.rightTableObj[key].parentid,
                        may: that.rightTableObj[key].may,
                        roundid: that.rightTableObj[key].roundid,
                        describe: that.rightTableObj[key].describe,
                        grades: that.rightTableObj[key].grades,
                        planWeight: that.rightTableObj[key].planWeight,
                        specifications: that.rightTableObj[key].specifications,
                        transportType: that.rightTableObj[key].transportType,
                        workprocType: that.rightTableObj[key].workprocType,
                        purpose: that.rightTableObj[key].purpose,
                        chemicalStandard: that.rightTableObj[key].chemicalStandard,
                        memo: that.rightTableObj[key].memo,
                        issuedTime: that.rightTableObj[key].issuedTime,
                        createman: that.rightTableObj[key].createman,
                        createtime: that.rightTableObj[key].createtime,
                        updateman: that.rightTableObj[key].updateman,
                        updatetime: that.rightTableObj[key].updatetime,
                        id: that.rightTableObj[key].roundid,
                        state: that.rightTableObj[key].state,
                        auditState: that.rightTableObj[key].auditState,
                        sqno: that.rightTableObj[key].sqno,
                        lengthTimesWidth: that.rightTableObj[key].lengthTimesWidth,
                        dimension: that.rightTableObj[key].dimension,
                        iateralArea: that.rightTableObj[key].iateralArea,
                        lengths: that.rightTableObj[key].lengths
                   });
                }
                that.loading = true;
                that.axios.post('pass/ems/v1/emsprodplanrounds/issue', SubmitData, {
                    contentType: 'application/json'
                })
                .then(function (res) {
                if (res.code === '0') {
                   that.$message({
                    message: '操作成功',
                    type: 'success'
                     });
                   that.getTableData();
                   that.chageMethod();
                } else {
                that.$message.error(res.message);
            }
                that.loading = false;
                }).catch(function () {
                 that.loading = false;
                });
            }
          });
             } else {
                  this.$message.error('至少要选择一条数据');
             }
        },
        offissue () {
            let that = this;
            if (that.multipleSelection.length > 0) {
            that.$refs['dialog_form_arr_2'].validate((valid, obj) => {
            if (valid) {
                let SubmitData = [];
                for (let key in that.rightTableObj) {
                   SubmitData.push({
                        parentid: that.rightTableObj[key].parentid,
                        may: that.rightTableObj[key].may,
                        roundid: that.rightTableObj[key].roundid,
                        describe: that.rightTableObj[key].describe,
                        grades: that.rightTableObj[key].grades,
                        planWeight: that.rightTableObj[key].planWeight,
                        specifications: that.rightTableObj[key].specifications,
                        transportType: that.rightTableObj[key].transportType,
                        workprocType: that.rightTableObj[key].workprocType,
                        purpose: that.rightTableObj[key].purpose,
                        chemicalStandard: that.rightTableObj[key].chemicalStandard,
                        memo: that.rightTableObj[key].memo,
                        issuedTime: that.rightTableObj[key].issuedTime,
                        createman: that.rightTableObj[key].createman,
                        createtime: that.rightTableObj[key].createtime,
                        updateman: that.rightTableObj[key].updateman,
                        updatetime: that.rightTableObj[key].updatetime,
                        id: that.rightTableObj[key].roundid,
                        state: that.rightTableObj[key].state,
                        sqno: that.rightTableObj[key].sqno,
                        lengthTimesWidth: that.rightTableObj[key].lengthTimesWidth,
                        dimension: that.rightTableObj[key].dimension,
                        iateralArea: that.rightTableObj[key].iateralArea,
                        lengths: that.rightTableObj[key].lengths
                   });
                }
                that.loading = true;
                that.axios.post('pass/ems/v1/emsprodplanrounds/offissue', SubmitData, {
                    contentType: 'application/json'
                })
                .then(function (res) {
                if (res.code === '0') {
                   that.$message({
                    message: '操作成功',
                    type: 'success'
                     });
                   that.getTableData();
                   that.chageMethod();
                } else {
                that.$message.error(res.message);
            }
                that.loading = false;
                }).catch(function () {
                 that.loading = false;
                });
            }
          });
             } else {
                  this.$message.error('至少要选择一条数据');
             }
        },
        but_del_plural () {
            let that = this;
            if (that.multipleSelection.length > 0) {
                let SubmitData = [];
                for (let key in that.rightTableObj) {
                   SubmitData.push({
                        id: that.rightTableObj[key].roundid,
                        state: that.rightTableObj[key].state,
                        parentid: that.rightTableObj[key].parentid
                   });
                }
                 that.$confirm('是否删除已选数据?', '提示', {
                    confirmButtonText: '确定',
                    cancelButtonText: '取消',
                    state: 'warning'
                }).then(() => {
                that.axios.post('pass/ems/v1/emsprodplanrounds/delete', SubmitData, {
                    contentType: 'application/json'
                })
                .then(function (res) {
                if (res.code === '0') {
                    that.$message({
                    message: '删除成功',
                    type: 'success'
                 });
                that.chageMethod();
                that.getTableData();
                that.dialog.editorBox.show = false;
                } else {
                that.$message.error(res.message);
                }
                that.loading = false;
                }).catch(function () {
                 that.loading = false;
                });
                });
             } else {
                  this.$message.error('至少要选择一条数据');
             }
        },
        dataSave () {
            let that = this;
            let SubmitData = {
                jhTime: that.dialog.editorBox.form.data.may,
                planWeight: that.dialog.editorBox.form.data.planWeight,
                workprocType: that.filterForm.data.workproc_type
            };
            that.$refs['dialog_form'].validate((valid) => {
               if (valid) {
                        that.loading = true;
                        that.axios.post('pass/ems/v1/emsgmpcjhs/addNbJH', SubmitData, {
                            contentType: 'application/json'
                        })
                            .then(function (res) {
                                if (res.code === '0') {
                                    that.$message({
                                        message: '新增成功',
                                        type: 'success'
                                    });
                                    that.dialog.editorBox.show = false;
                                    that.getTableData();
                                } else {
                                    that.$message.error(res.message);
                                }
                                that.loading = false;
                            }).catch(function () {
                                that.loading = false;
                            });
                }
            });
        },
        correctvalueUpFoo (row) {
            let that = this;
            // 防止数据为无效值
            if (row.correctvalue === '' || !isFinite(row.correctvalue)) {
                row.correctvalue = 0;
                row.apportvalue = row.actualvalue;
            } else {
                row.apportvalue = that.floatComputed(row.actualvalue, row.correctvalue, '+');
            }
            that.jsDifference();
        },
        apportvalueUpFoo (row) {
            let that = this;
            if (row.apportvalue === '' || !isFinite(row.apportvalue)) {
                row.correctvalue = 0;
                row.apportvalue = row.actualvalue;
            } else {
                row.correctvalue = that.floatComputed(row.apportvalue, row.actualvalue, '-');
            }
            that.jsDifference();
        },
        tableTDMousedown (e) {
            let that = this;
            let nowPageX = e.pageX,
                nowWidth = that.leftTableWidth,
                minWidth = 200,
                maxWidth = window.innerWidth - 200;
            that.$refs.table_box.style.userSelect = 'none';
            that.$refs.table_box.style.cursor = 'col-resize';
            that.$refs.table_box.onmousemove = function (e) {
                let bh = e.pageX - nowPageX;
                if (nowWidth + bh > maxWidth) {
                    that.leftTableWidth = maxWidth;
                } else if (nowWidth + bh < minWidth) {
                    that.leftTableWidth = minWidth;
                } else {
                    that.leftTableWidth = nowWidth + bh;
                }
            }
            that.$refs.table_box.onmouseup = function () {
                that.$refs.table_box.onmousemove = false;
                that.$refs.table_box.onmouseup = false;
                that.$refs.table_box.style.userSelect = '';
                that.$refs.table_box.style.cursor = ''
            }
        },
        // 对proportion的值进行处理，使其符合要求
        proportionFormat (row) {
            let that = this;
            if (row.proportion === '' || !isFinite(row.proportion)) {
                row.proportion = 0;
            }
        },
        // 重新计算，根据自定义的分配比例来自动调整最终值
        againCount () {
            let that = this;
            if (that.multipleSelection.length > 0) {
                for (let item of that.multipleSelection) {
                    let xId = item.itemid + '-' + item.timegranid + '-' + item.clock;
                    let objItem = that.tableFormDataObj[xId];
                    let bl = 0;
                    for (let dataObj of item.tableFormDataArr) {
                        bl = +that.floatComputed(bl, dataObj.proportion, '+');
                    }
                    if (bl !== 100) {
                        this.$message.error('所有比例之和不为100%，请调整比例后再执行计算。');
                        continue;
                    }
                    let sum = objItem.apportvalue;
                    for (let i = 0, ilength = item.tableFormDataArr.length; i < ilength; i++) {
                        if (i === (ilength - 1)) {
                            item.tableFormDataArr[i].apportvalue = sum;
                        } else {
                            let z = that.floatComputed(objItem.apportvalue, item.tableFormDataArr[i].proportion, '*');
                            item.tableFormDataArr[i].apportvalue = that.floatComputed(z, 100, '/');
                            sum = that.floatComputed(sum, item.tableFormDataArr[i].apportvalue, '-');
                        }
                        item.tableFormDataArr[i].correctvalue = that.floatComputed(item.tableFormDataArr[i].apportvalue, item.tableFormDataArr[i].actualvalue, '-');
                    }
                    that.jsDifference();
                }
            } else {
                this.$message.error('请勾选一条数据');
            }
        },
      but_add (type) {
          let that = this;
              let SubmitData = [];
              if(that.multipleSelectionAscLeft.length >0 ) {
                  for(let key in that.tableFormDataObj) {
                  SubmitData.push({
                        parentid: that.tableFormDataObj[key].id,
                        may: that.tableFormDataObj[key].jhTime,
                        describe: that.tableFormDataObj[key].describe,
                        state: that.tableFormDataObj[key].state,
                        grades: that.tableFormDataObj[key].grades,
                        specifications: that.tableFormDataObj[key].specifications,
                        transportType: that.tableFormDataObj[key].transportType,
                        workprocType: that.tableFormDataObj[key].workprocType,
                        purpose: that.tableFormDataObj[key].purpose,
                        chemicalStandard: that.tableFormDataObj[key].chemicalStandard,
                        memo: that.tableFormDataObj[key].memo,
                        createMan: that.tableFormDataObj[key].createman,
                        createTime: that.tableFormDataObj[key].createtime,
                        lengthTimesWidth: that.tableFormDataObj[key].lengthTimesWidth,
                        dimension: that.tableFormDataObj[key].dimension,
                        planweight: that.tableFormDataObj[key].planweight,
                        iateralArea: that.tableFormDataObj[key].iateralArea,
                        lengths: that.tableFormDataObj[key].lengths,
                        type: type
                  })
                  }
                    that.loading = true;
                    that.axios.post('pass/ems/v1/emsprodplanrounds/', SubmitData, {
                            contentType: 'application/json'
                        })
                            .then(function (res) {
                                if (res.code === '0') {
                                    that.$message({
                                        message: '新增成功',
                                        type: 'success'
                                    });
                                    that.dialog.editorBox.show = false;
                                    that.getTableDetailDatas(1, 'Add');
                                } else {
                                    that.$message.error(res.message);
                                }
                                that.loading = false;
                            }).catch(function () {
                                that.loading = false;
                    });
              } else {
                   this.$message.error('至少要选择一条数据');
              }
        },
        but_addNBJH () {
            let that = this;
            that.dialog.editorBox.form.data.planWeight = '';
            that.dialog.editorBox.show = true;
            setTimeout(() => {
               that.$refs['dialog_form'].clearValidate();
           }, 100);
        },
        getChildTable (row, expandedRows) {
            let that = this;
            if (!row.getTable) {
                let params = {
                        clock: row.clock,
                        energyid: row.energyid
                    };
                row.tableLoading = true;
                let url = 'pass/ems/v1/trmbalancevalues/getitem';
                that.axios.get(url, {
                    params: params
                })
                    .then(function (res) {
                        if (res.code === '0') {
                            let arr = [];
                            for (let item of res.data) {
                                arr.push({
                                    clock: item.CLOCK,
                                    itemname: item.ITEMNAME,
                                    timegranid: item.TIMEGRANID,
                                    apportvalue: item.APPORTVALUE
                                })
                            }
                            row.tableData = arr;
                            row.getTable = true;
                        } else {
                            that.$message.error(res.message);
                        }
                        row.tableLoading = false;
                    }).catch(function () {
                        row.tableLoading = false;
                    });
            }
        },
         radioChange(){
            let that = this;
            let leftwith = 0;
            let rightwith = 550;
            if(that.radio == 0){
                that.leftTableWidth = leftwith;
                that.leftTableShow = false;
                that.getTableDetailAsRadio(1);
            }
            if(that.radio == 1){
                that.leftTableWidth = rightwith;
                that.leftTableShow = true;
                that.rightTableData = [];
            }
        },
        keyDown (event1, disabledFlag) {
            let tdTarget = event1.target;
            let _this = this;
            while (tdTarget.tagName !== 'TD') {
                tdTarget = tdTarget.parentElement;
            }
            // 如果按下键盘下键或者回车键
            if (event.keyCode === 40 || event.keyCode === 13) {
                let index = parseInt(this.rowIndex);
                // index++;
                if (index !== this.seqArr[this.seqArr.length - 1]) {
                    for (let i = 0; i < this.seqArr.length; i++) {
                        if (index === this.seqArr[i]) {
                        index = this.seqArr[i + 1];
                        break;
                        }
                    }
                }
                this.editSetFlag = index + this.columnId;
                let id = '#' + this.editSetFlag;
                this.$nextTick(() => {
                    $(id).click();
                });
                console.log('下键')
            } else if (event.keyCode === 38) { // 键盘上键
                let index = parseInt(this.rowIndex);
                if (index !== this.seqArr[0]) {
                    for (let i = 0; i < this.seqArr.length; i++) {
                        if (index === this.seqArr[i]) {
                        index = this.seqArr[i - 1];
                        break;
                        }
                    }
                }
                console.log('上键')
                this.editSetFlag = index + this.columnId;
                let id = '#' + this.editSetFlag;
                this.$nextTick(() => {
                    $(id).click();
                });
            } else if (event.keyCode === 37) { // 键盘左键
                console.log('左键')
                $(tdTarget).prevAll().find('input:text').last().click();
            } else if (event.keyCode === 39) { // 键盘右键
                $(tdTarget).nextAll().find('input').eq(0).click();
                console.log('右键')
            }
        },
        cellClick (row, column, cell, event) {
            let _this = this;
            this.rowIndex = row.index;
            this.columnId = column.id;
            _this.editSetFlag = row.index + column.id;
            _this.focusTarget = event.target;
            while (_this.focusTarget.tagName !== 'TD') {
                _this.focusTarget = _this.focusTarget.parentElement;
            }
            _this.$nextTick(() => {
                let target = this.focusTarget;
                $(target).find('input').focus();
            });
        },
        tableRowClassName ({row, rowIndex}) {
            // 把每一行的索引放进row
            row.index = rowIndex;
        },
        openDetails (row) {
          let that = this;
          that.leftData = row;
        }
    }
}
function sortNumber (a, b) {
  return a - b
}
</script>

<style lang="less">
.balanceSheetData {
    min-width: 700px;
    height: 100%;
    .box {
        height: 100%;
        padding: 15px 15px 0 15px;
        .box-top {
            .el-form-item {
                margin-bottom: 7px;
            }
            .box-top-gjl {
                overflow: hidden;
                // margin-top: -7px;
                padding: 7px 0;
                border-top: 1px solid #ccc;
                // border-bottom: 1px solid #ccc;
                // margin-bottom: 6px;
            }
        }
        .table-box {
            .table-left {
                float: left;
                width: 550px;
            }
            .table-tuodong {
                float: left;
                width: 5px;
                margin: 0 1px 0 1px;
                cursor: col-resize;
            }
            .table-right {
                margin-left: 557px;
            }
        }
        .el-table .el-table__row {
            height: 35px;
        }
        .el-table__body .el-form-item--mini.el-form-item {
            margin: 0px;
            .error {
                overflow: hidden;
                color: #f56c6c;
                font-size: 12px;
                line-height: 1;
            }
        }
        // 隐藏全选按钮
        thead .el-table-column--selection .cell {
            display: none;
        }
    }
}
</style>
