parent
							
								
									172a957b3d
								
							
						
					
					
						commit
						593f41cb41
					
				@ -0,0 +1,354 @@
 | 
				
			||||
<template>
 | 
				
			||||
  <!-- 集团三月滚动计划查询 -->
 | 
				
			||||
  <el-container>
 | 
				
			||||
    <el-header style="width: 100%">
 | 
				
			||||
      <el-form ref="requestForm" :model="request" label-width="60px">
 | 
				
			||||
        <el-row>
 | 
				
			||||
          <el-col :span="4">
 | 
				
			||||
            <el-form-item label="计划期:">
 | 
				
			||||
              <el-date-picker
 | 
				
			||||
                v-model="request.date"
 | 
				
			||||
                type="daterange"
 | 
				
			||||
                format="yyyy/MM/dd"
 | 
				
			||||
                :unlink-panels="true"
 | 
				
			||||
                range-separator="~"
 | 
				
			||||
                start-placeholder=""
 | 
				
			||||
                end-placeholder=""
 | 
				
			||||
              >
 | 
				
			||||
              </el-date-picker>
 | 
				
			||||
            </el-form-item>
 | 
				
			||||
          </el-col>
 | 
				
			||||
          <el-col :span="4">
 | 
				
			||||
            <el-form-item label="状态:">
 | 
				
			||||
              <el-select v-model="request.Zt" placeholder="状态" clearable>
 | 
				
			||||
                <el-option
 | 
				
			||||
                  v-for="item in statusOptions"
 | 
				
			||||
                  :key="item.value"
 | 
				
			||||
                  :label="item.label"
 | 
				
			||||
                  :value="item.value"
 | 
				
			||||
                >
 | 
				
			||||
                </el-option>
 | 
				
			||||
              </el-select>
 | 
				
			||||
            </el-form-item>
 | 
				
			||||
          </el-col>
 | 
				
			||||
          <el-col :span="16" style="text-align: right">
 | 
				
			||||
            <el-button type="primary" @click="initList()">查询</el-button>
 | 
				
			||||
          </el-col>
 | 
				
			||||
        </el-row>
 | 
				
			||||
      </el-form>
 | 
				
			||||
    </el-header>
 | 
				
			||||
    <el-container style="padding-top: 10px">
 | 
				
			||||
      <el-container>
 | 
				
			||||
        <el-main>
 | 
				
			||||
          <div class="mytable">
 | 
				
			||||
            <vxe-grid
 | 
				
			||||
              id="id"
 | 
				
			||||
              ref="tableRef"
 | 
				
			||||
              border
 | 
				
			||||
              resizable
 | 
				
			||||
              keep-source
 | 
				
			||||
              :height="height"
 | 
				
			||||
              :auto-resize="true"
 | 
				
			||||
              :columns="tableColumn"
 | 
				
			||||
              :data="list"
 | 
				
			||||
              :custom-config="{ storage: true }"
 | 
				
			||||
              :scroll-y="{ enabled: true }"
 | 
				
			||||
              highlight-hover-row
 | 
				
			||||
            >
 | 
				
			||||
              <template #Zt_default="{ row }">
 | 
				
			||||
                <div v-for="(item, index) in statusOptions" :key="index">
 | 
				
			||||
                  <div v-if="row.zt === item.value">{{ item.label }}</div>
 | 
				
			||||
                </div>
 | 
				
			||||
              </template>
 | 
				
			||||
            </vxe-grid>
 | 
				
			||||
          </div>
 | 
				
			||||
        </el-main>
 | 
				
			||||
      </el-container>
 | 
				
			||||
    </el-container>
 | 
				
			||||
  </el-container>
 | 
				
			||||
</template>
 | 
				
			||||
 | 
				
			||||
<script>
 | 
				
			||||
import { getList } from "@/api/jhzx/jtsyWH";
 | 
				
			||||
export default {
 | 
				
			||||
  name: "jtsyCX",
 | 
				
			||||
  data() {
 | 
				
			||||
    return {
 | 
				
			||||
      request: {
 | 
				
			||||
        date: "",
 | 
				
			||||
        Zt: "",
 | 
				
			||||
      },
 | 
				
			||||
      list: [],
 | 
				
			||||
      height: "500px",
 | 
				
			||||
      tableColumn: [
 | 
				
			||||
        {
 | 
				
			||||
          type: "seq",
 | 
				
			||||
          width: "50",
 | 
				
			||||
          title: "序号",
 | 
				
			||||
          align: "center",
 | 
				
			||||
          fixed: "left",
 | 
				
			||||
        },
 | 
				
			||||
        {
 | 
				
			||||
          field: "dcCh",
 | 
				
			||||
          title: "船号",
 | 
				
			||||
          align: "center",
 | 
				
			||||
          filters: [
 | 
				
			||||
            {
 | 
				
			||||
              data: {
 | 
				
			||||
                checks: [],
 | 
				
			||||
                sVal: "",
 | 
				
			||||
                sMenu: "",
 | 
				
			||||
                fType1: "",
 | 
				
			||||
                fVal1: "",
 | 
				
			||||
                fMode: "and",
 | 
				
			||||
                fType2: "",
 | 
				
			||||
                fVal2: "",
 | 
				
			||||
              },
 | 
				
			||||
            },
 | 
				
			||||
          ],
 | 
				
			||||
          filterRender: { name: "FilterCombination" },
 | 
				
			||||
        },
 | 
				
			||||
        {
 | 
				
			||||
          field: "dcPl",
 | 
				
			||||
          title: "批量",
 | 
				
			||||
          align: "center",
 | 
				
			||||
          filters: [
 | 
				
			||||
            {
 | 
				
			||||
              data: {
 | 
				
			||||
                checks: [],
 | 
				
			||||
                sVal: "",
 | 
				
			||||
                sMenu: "",
 | 
				
			||||
                fType1: "",
 | 
				
			||||
                fVal1: "",
 | 
				
			||||
                fMode: "and",
 | 
				
			||||
                fType2: "",
 | 
				
			||||
                fVal2: "",
 | 
				
			||||
              },
 | 
				
			||||
            },
 | 
				
			||||
          ],
 | 
				
			||||
          filterRender: { name: "FilterCombination" },
 | 
				
			||||
        },
 | 
				
			||||
        {
 | 
				
			||||
          field: "dcFd",
 | 
				
			||||
          title: "分段",
 | 
				
			||||
          align: "center",
 | 
				
			||||
          filters: [
 | 
				
			||||
            {
 | 
				
			||||
              data: {
 | 
				
			||||
                checks: [],
 | 
				
			||||
                sVal: "",
 | 
				
			||||
                sMenu: "",
 | 
				
			||||
                fType1: "",
 | 
				
			||||
                fVal1: "",
 | 
				
			||||
                fMode: "and",
 | 
				
			||||
                fType2: "",
 | 
				
			||||
                fVal2: "",
 | 
				
			||||
              },
 | 
				
			||||
            },
 | 
				
			||||
          ],
 | 
				
			||||
          filterRender: { name: "FilterCombination" },
 | 
				
			||||
        },
 | 
				
			||||
        {
 | 
				
			||||
          field: "jhrq",
 | 
				
			||||
          title: "计划期",
 | 
				
			||||
          align: "center",
 | 
				
			||||
          filters: [
 | 
				
			||||
            {
 | 
				
			||||
              data: {
 | 
				
			||||
                checks: [],
 | 
				
			||||
                sVal: "",
 | 
				
			||||
                sMenu: "",
 | 
				
			||||
                fType1: "",
 | 
				
			||||
                fVal1: "",
 | 
				
			||||
                fMode: "and",
 | 
				
			||||
                fType2: "",
 | 
				
			||||
                fVal2: "",
 | 
				
			||||
              },
 | 
				
			||||
            },
 | 
				
			||||
          ],
 | 
				
			||||
          filterRender: { name: "FilterCombination" },
 | 
				
			||||
        },
 | 
				
			||||
        {
 | 
				
			||||
          field: "bz",
 | 
				
			||||
          title: "备注",
 | 
				
			||||
          align: "center",
 | 
				
			||||
          filters: [
 | 
				
			||||
            {
 | 
				
			||||
              data: {
 | 
				
			||||
                checks: [],
 | 
				
			||||
                sVal: "",
 | 
				
			||||
                sMenu: "",
 | 
				
			||||
                fType1: "",
 | 
				
			||||
                fVal1: "",
 | 
				
			||||
                fMode: "and",
 | 
				
			||||
                fType2: "",
 | 
				
			||||
                fVal2: "",
 | 
				
			||||
              },
 | 
				
			||||
            },
 | 
				
			||||
          ],
 | 
				
			||||
          filterRender: { name: "FilterCombination" },
 | 
				
			||||
        },
 | 
				
			||||
        {
 | 
				
			||||
          field: "bzy",
 | 
				
			||||
          title: "编制人",
 | 
				
			||||
          align: "center",
 | 
				
			||||
          filters: [
 | 
				
			||||
            {
 | 
				
			||||
              data: {
 | 
				
			||||
                checks: [],
 | 
				
			||||
                sVal: "",
 | 
				
			||||
                sMenu: "",
 | 
				
			||||
                fType1: "",
 | 
				
			||||
                fVal1: "",
 | 
				
			||||
                fMode: "and",
 | 
				
			||||
                fType2: "",
 | 
				
			||||
                fVal2: "",
 | 
				
			||||
              },
 | 
				
			||||
            },
 | 
				
			||||
          ],
 | 
				
			||||
          filterRender: { name: "FilterCombination" },
 | 
				
			||||
        },
 | 
				
			||||
        {
 | 
				
			||||
          field: "bzrq",
 | 
				
			||||
          title: "编制日期",
 | 
				
			||||
          align: "center",
 | 
				
			||||
          filters: [
 | 
				
			||||
            {
 | 
				
			||||
              data: {
 | 
				
			||||
                checks: [],
 | 
				
			||||
                sVal: "",
 | 
				
			||||
                sMenu: "",
 | 
				
			||||
                fType1: "",
 | 
				
			||||
                fVal1: "",
 | 
				
			||||
                fMode: "and",
 | 
				
			||||
                fType2: "",
 | 
				
			||||
                fVal2: "",
 | 
				
			||||
              },
 | 
				
			||||
            },
 | 
				
			||||
          ],
 | 
				
			||||
          filterRender: { name: "FilterCombination" },
 | 
				
			||||
        },
 | 
				
			||||
        {
 | 
				
			||||
          field: "zt",
 | 
				
			||||
          title: "状态",
 | 
				
			||||
          align: "center",
 | 
				
			||||
          slots: { default: "Zt_default" },
 | 
				
			||||
          filters: [
 | 
				
			||||
            {
 | 
				
			||||
              data: {
 | 
				
			||||
                checks: [],
 | 
				
			||||
                sVal: "",
 | 
				
			||||
                sMenu: "",
 | 
				
			||||
                fType1: "",
 | 
				
			||||
                fVal1: "",
 | 
				
			||||
                fMode: "and",
 | 
				
			||||
                fType2: "",
 | 
				
			||||
                fVal2: "",
 | 
				
			||||
              },
 | 
				
			||||
            },
 | 
				
			||||
          ],
 | 
				
			||||
          filterRender: { name: "FilterCombination" },
 | 
				
			||||
        },
 | 
				
			||||
      ],
 | 
				
			||||
      statusOptions: [
 | 
				
			||||
        {
 | 
				
			||||
          value: "0",
 | 
				
			||||
          label: "未审核",
 | 
				
			||||
        },
 | 
				
			||||
        {
 | 
				
			||||
          value: "1",
 | 
				
			||||
          label: "已审核",
 | 
				
			||||
        },
 | 
				
			||||
      ],
 | 
				
			||||
    };
 | 
				
			||||
  },
 | 
				
			||||
  created() {
 | 
				
			||||
    window.addEventListener("resize", this.getHeight);
 | 
				
			||||
    this.getHeight();
 | 
				
			||||
    this.initList();
 | 
				
			||||
  },
 | 
				
			||||
  methods: {
 | 
				
			||||
    // 获取列表接口
 | 
				
			||||
    initList() {
 | 
				
			||||
      let params = {
 | 
				
			||||
        Zt: this.request.Zt,
 | 
				
			||||
        jhrq: "",
 | 
				
			||||
      };
 | 
				
			||||
      if (this.request.date && this.request.date.length > 0) {
 | 
				
			||||
        params.jhrq =
 | 
				
			||||
          this.request.date[0].toLocaleDateString() +
 | 
				
			||||
          "~" +
 | 
				
			||||
          this.request.date[1].toLocaleDateString();
 | 
				
			||||
      } else {
 | 
				
			||||
        params.jhrq = "";
 | 
				
			||||
      }
 | 
				
			||||
      getList(params).then((res) => {
 | 
				
			||||
        if (res.success) {
 | 
				
			||||
          this.list = res.data;
 | 
				
			||||
          this.checkedList = [];
 | 
				
			||||
        }
 | 
				
			||||
      });
 | 
				
			||||
    },
 | 
				
			||||
    getHeight() {
 | 
				
			||||
      this.height = window.innerHeight - 160;
 | 
				
			||||
    },
 | 
				
			||||
  },
 | 
				
			||||
};
 | 
				
			||||
</script>
 | 
				
			||||
<style lang="scss" scoped>
 | 
				
			||||
.el-header {
 | 
				
			||||
  margin: 0;
 | 
				
			||||
  padding: 5px 0;
 | 
				
			||||
  height: auto;
 | 
				
			||||
}
 | 
				
			||||
.el-container {
 | 
				
			||||
  padding: 0;
 | 
				
			||||
  margin: 0;
 | 
				
			||||
}
 | 
				
			||||
.el-main {
 | 
				
			||||
  padding: 0;
 | 
				
			||||
}
 | 
				
			||||
.el-col {
 | 
				
			||||
  padding: 0;
 | 
				
			||||
}
 | 
				
			||||
.el-aside {
 | 
				
			||||
  background: #fff;
 | 
				
			||||
  padding: 0;
 | 
				
			||||
}
 | 
				
			||||
.el-container {
 | 
				
			||||
  padding: 0;
 | 
				
			||||
}
 | 
				
			||||
.el-row {
 | 
				
			||||
  margin-bottom: 5px;
 | 
				
			||||
}
 | 
				
			||||
.el-row:last-child {
 | 
				
			||||
  margin-bottom: 0;
 | 
				
			||||
}
 | 
				
			||||
.tableStyles {
 | 
				
			||||
  background: #0a76a4;
 | 
				
			||||
}
 | 
				
			||||
.my-dropdown {
 | 
				
			||||
  width: 450px;
 | 
				
			||||
  height: 250px;
 | 
				
			||||
  background-color: #fff;
 | 
				
			||||
  border: 1px solid #dcdfe6;
 | 
				
			||||
  box-shadow: 0 0 6px 2px rgba(0, 0, 0, 0.1);
 | 
				
			||||
  font-size: 12px;
 | 
				
			||||
}
 | 
				
			||||
::v-deep .mytable .vxe-input {
 | 
				
			||||
  display: flex !important;
 | 
				
			||||
}
 | 
				
			||||
.upload-demo {
 | 
				
			||||
  display: inline-flex;
 | 
				
			||||
  margin-right: 10px;
 | 
				
			||||
}
 | 
				
			||||
::v-deep .el-upload-list {
 | 
				
			||||
  display: none !important;
 | 
				
			||||
}
 | 
				
			||||
::v-deep .el-form-item {
 | 
				
			||||
  margin-bottom: 0px !important;
 | 
				
			||||
}
 | 
				
			||||
::v-deep .el-date-editor.el-input__inner {
 | 
				
			||||
  width: auto !important;
 | 
				
			||||
}
 | 
				
			||||
</style>
 | 
				
			||||
@ -0,0 +1,539 @@
 | 
				
			||||
<template>
 | 
				
			||||
  <!-- 线表计划查询 -->
 | 
				
			||||
  <div class="container-chart">
 | 
				
			||||
    <el-header style="width: 100%">
 | 
				
			||||
      <el-form ref="requestForm" :model="request" label-width="45px">
 | 
				
			||||
        <el-row>
 | 
				
			||||
          <el-col :span="4">
 | 
				
			||||
            <el-form-item label="船号:">
 | 
				
			||||
              <el-select v-model="request.dcCh" placeholder="船号" clearable>
 | 
				
			||||
                <el-option
 | 
				
			||||
                  v-for="item in ShipNoList"
 | 
				
			||||
                  :key="item.cbbm"
 | 
				
			||||
                  :label="item.cbbm"
 | 
				
			||||
                  :value="item.cbbm"
 | 
				
			||||
                >
 | 
				
			||||
                </el-option>
 | 
				
			||||
              </el-select>
 | 
				
			||||
            </el-form-item>
 | 
				
			||||
          </el-col>
 | 
				
			||||
          <el-col :span="4">
 | 
				
			||||
            <el-form-item label="状态:">
 | 
				
			||||
              <el-select v-model="request.Zt" placeholder="状态" clearable>
 | 
				
			||||
                <el-option
 | 
				
			||||
                  v-for="item in statusOptions"
 | 
				
			||||
                  :key="item.value"
 | 
				
			||||
                  :label="item.label"
 | 
				
			||||
                  :value="item.value"
 | 
				
			||||
                >
 | 
				
			||||
                </el-option>
 | 
				
			||||
              </el-select>
 | 
				
			||||
            </el-form-item>
 | 
				
			||||
          </el-col>
 | 
				
			||||
          <el-col :span="4">
 | 
				
			||||
            <el-form-item label="年份:">
 | 
				
			||||
              <div style="display: flex">
 | 
				
			||||
                <el-date-picker
 | 
				
			||||
                  v-model="nrStart"
 | 
				
			||||
                  type="year"
 | 
				
			||||
                  value-format="yyyy"
 | 
				
			||||
                  placeholder=""
 | 
				
			||||
                >
 | 
				
			||||
                </el-date-picker>
 | 
				
			||||
                <div class="distance">~</div>
 | 
				
			||||
                <el-date-picker
 | 
				
			||||
                  v-model="nrEnd"
 | 
				
			||||
                  type="year"
 | 
				
			||||
                  value-format="yyyy"
 | 
				
			||||
                  placeholder=""
 | 
				
			||||
                >
 | 
				
			||||
                </el-date-picker>
 | 
				
			||||
              </div>
 | 
				
			||||
            </el-form-item>
 | 
				
			||||
          </el-col>
 | 
				
			||||
          <el-col :span="12" style="text-align: right">
 | 
				
			||||
            <el-button type="primary" @click="initList()">查询</el-button>
 | 
				
			||||
          </el-col>
 | 
				
			||||
        </el-row>
 | 
				
			||||
      </el-form>
 | 
				
			||||
    </el-header>
 | 
				
			||||
    <el-container>
 | 
				
			||||
      <el-main>
 | 
				
			||||
        <vxe-table
 | 
				
			||||
          class="mytable-style"
 | 
				
			||||
          border
 | 
				
			||||
          resizable
 | 
				
			||||
          show-footer
 | 
				
			||||
          ref="tableRef"
 | 
				
			||||
          :max-height="height"
 | 
				
			||||
          :header-cell-class-name="headerCellClassName"
 | 
				
			||||
          :cell-class-name="cellClassName"
 | 
				
			||||
          :footer-method="footerMethod"
 | 
				
			||||
          :footer-cell-class-name="footerCellClassName"
 | 
				
			||||
          :data="arrList"
 | 
				
			||||
          @checkbox-all="selectAllEvent"
 | 
				
			||||
          @checkbox-change="selectChangeEvent"
 | 
				
			||||
        >
 | 
				
			||||
          <vxe-column type="seq" width="80" :resizable="false" show-overflow>
 | 
				
			||||
            <template #header>
 | 
				
			||||
              <div class="first-col">
 | 
				
			||||
                <div class="first-col-top">年份</div>
 | 
				
			||||
                <div class="first-col-bottom">产品</div>
 | 
				
			||||
              </div>
 | 
				
			||||
            </template>
 | 
				
			||||
            <template #default="{ row, rowIndex }">
 | 
				
			||||
              {{ leftColumn[rowIndex].column }}
 | 
				
			||||
            </template>
 | 
				
			||||
          </vxe-column>
 | 
				
			||||
          <vxe-colgroup
 | 
				
			||||
            v-for="(item, index) in topColumn"
 | 
				
			||||
            :key="index"
 | 
				
			||||
            :title="item.year"
 | 
				
			||||
          >
 | 
				
			||||
            <vxe-column
 | 
				
			||||
              v-for="(em, eindex) in item.months"
 | 
				
			||||
              :key="eindex"
 | 
				
			||||
              :field="em.field"
 | 
				
			||||
              :title="em.title !== '合计' ? em.title + '月' : em.title"
 | 
				
			||||
              :width="70"
 | 
				
			||||
            >
 | 
				
			||||
            </vxe-column>
 | 
				
			||||
          </vxe-colgroup>
 | 
				
			||||
        </vxe-table>
 | 
				
			||||
      </el-main>
 | 
				
			||||
    </el-container>
 | 
				
			||||
  </div>
 | 
				
			||||
</template>
 | 
				
			||||
 | 
				
			||||
<script>
 | 
				
			||||
import { getList, tj, save, upload } from "@/api/jhzx/xbjhWH";
 | 
				
			||||
import { getCzxx } from "@/api/jhzx/qfxq";
 | 
				
			||||
export default {
 | 
				
			||||
  name: "xbjhWH",
 | 
				
			||||
  data() {
 | 
				
			||||
    return {
 | 
				
			||||
      request: {
 | 
				
			||||
        dcCh: "",
 | 
				
			||||
        Zt: "",
 | 
				
			||||
        nf: "",
 | 
				
			||||
      },
 | 
				
			||||
      nrStart: "",
 | 
				
			||||
      nrEnd: "",
 | 
				
			||||
      height: "500px",
 | 
				
			||||
      tableData: [],
 | 
				
			||||
      fileList: [],
 | 
				
			||||
      checkedList: {},
 | 
				
			||||
      statusOptions: [
 | 
				
			||||
        {
 | 
				
			||||
          value: "0",
 | 
				
			||||
          label: "编辑",
 | 
				
			||||
        },
 | 
				
			||||
        {
 | 
				
			||||
          value: "1",
 | 
				
			||||
          label: "提交",
 | 
				
			||||
        },
 | 
				
			||||
        {
 | 
				
			||||
          value: "2",
 | 
				
			||||
          label: "审核",
 | 
				
			||||
        },
 | 
				
			||||
      ],
 | 
				
			||||
      ShipNoList: [], //船号
 | 
				
			||||
      leftColumn: [], //存放左侧列
 | 
				
			||||
      topColumn: [], //存放顶部列
 | 
				
			||||
      arrList: [], //存放data
 | 
				
			||||
      indexes: [],
 | 
				
			||||
    };
 | 
				
			||||
  },
 | 
				
			||||
  created() {
 | 
				
			||||
    window.addEventListener("resize", this.getHeight);
 | 
				
			||||
    this.initList(); //获取数据
 | 
				
			||||
    this.getCzxx();
 | 
				
			||||
    this.getHeight();
 | 
				
			||||
  },
 | 
				
			||||
  methods: {
 | 
				
			||||
    // 格式转换
 | 
				
			||||
    getTableList(data) {
 | 
				
			||||
      this.tableData = data;
 | 
				
			||||
      this.leftColumn = []; //左侧列数据
 | 
				
			||||
      this.topColumn = []; //顶部列数据
 | 
				
			||||
      this.arrList = []; //data数据
 | 
				
			||||
      var objeckList = {};
 | 
				
			||||
      var sumArr = [];
 | 
				
			||||
      var yearArr = [];
 | 
				
			||||
      Object.keys(this.tableData).forEach((item, index) => {
 | 
				
			||||
        objeckList[item] = {};
 | 
				
			||||
        sumArr[item] = [];
 | 
				
			||||
        this.indexes[index] = item;
 | 
				
			||||
        // 获取左侧列
 | 
				
			||||
        this.leftColumn.push({
 | 
				
			||||
          column: item,
 | 
				
			||||
        });
 | 
				
			||||
        this.tableData[item].forEach((em, eindex) => {
 | 
				
			||||
          //  获取顶部列
 | 
				
			||||
          let yearIndex = yearArr.findIndex((yearEm) => {
 | 
				
			||||
            if (yearEm instanceof Object) {
 | 
				
			||||
              return yearEm.year == em.nf;
 | 
				
			||||
            }
 | 
				
			||||
          });
 | 
				
			||||
 | 
				
			||||
          if (yearIndex == -1) {
 | 
				
			||||
            yearArr.push({
 | 
				
			||||
              year: em.nf,
 | 
				
			||||
              months: [
 | 
				
			||||
                {
 | 
				
			||||
                  title: em.yf,
 | 
				
			||||
                  field: "cl" + em.nf + em.yf,
 | 
				
			||||
                  zl: em.zl,
 | 
				
			||||
                },
 | 
				
			||||
              ],
 | 
				
			||||
            });
 | 
				
			||||
          } else {
 | 
				
			||||
            let monthIndex = yearArr[yearIndex].months.findIndex((monthEm) => {
 | 
				
			||||
              if (monthEm instanceof Object) {
 | 
				
			||||
                return monthEm.title == em.yf;
 | 
				
			||||
              }
 | 
				
			||||
            });
 | 
				
			||||
            if (monthIndex == -1) {
 | 
				
			||||
              yearArr[yearIndex].months.push({
 | 
				
			||||
                title: em.yf,
 | 
				
			||||
                field: "cl" + em.nf + em.yf,
 | 
				
			||||
                zl: em.zl,
 | 
				
			||||
              });
 | 
				
			||||
            }
 | 
				
			||||
          }
 | 
				
			||||
        });
 | 
				
			||||
      });
 | 
				
			||||
      yearArr.forEach((item, index) => {
 | 
				
			||||
        item.months.push({
 | 
				
			||||
          title: "合计",
 | 
				
			||||
          field: "cltotal" + item.year,
 | 
				
			||||
        });
 | 
				
			||||
      });
 | 
				
			||||
      this.topColumn = yearArr; //顶部数据
 | 
				
			||||
      // 获取和
 | 
				
			||||
      for (let i in this.tableData) {
 | 
				
			||||
        for (let v in this.tableData[i]) {
 | 
				
			||||
          if (sumArr[i][this.tableData[i][v].nf] >= 0) {
 | 
				
			||||
            sumArr[i][this.tableData[i][v].nf] += this.tableData[i][v].zl;
 | 
				
			||||
          } else {
 | 
				
			||||
            sumArr[i][this.tableData[i][v].nf] = this.tableData[i][v].zl;
 | 
				
			||||
          }
 | 
				
			||||
        }
 | 
				
			||||
      }
 | 
				
			||||
 | 
				
			||||
      // 获取data数据
 | 
				
			||||
      for (let i in this.tableData) {
 | 
				
			||||
        for (let v in this.tableData[i]) {
 | 
				
			||||
          objeckList[i][
 | 
				
			||||
            "cl" + this.tableData[i][v].nf + this.tableData[i][v].yf
 | 
				
			||||
          ] = this.tableData[i][v].zl;
 | 
				
			||||
          objeckList[i]["cltotal" + this.tableData[i][v].nf] =
 | 
				
			||||
            sumArr[i][this.tableData[i][v].nf];
 | 
				
			||||
        }
 | 
				
			||||
      }
 | 
				
			||||
      this.arrList = Object.values(objeckList); //data数据
 | 
				
			||||
    },
 | 
				
			||||
 | 
				
			||||
    // 上传excel
 | 
				
			||||
    actionUpload(file) {
 | 
				
			||||
      const formData = new FormData();
 | 
				
			||||
      formData.append("file", file.file);
 | 
				
			||||
      upload(formData).then((res) => {
 | 
				
			||||
        if (res.success) {
 | 
				
			||||
          this.checkedList = {};
 | 
				
			||||
          this.getTableList(res.data);
 | 
				
			||||
          this.$message.success("导入成功!");
 | 
				
			||||
        }
 | 
				
			||||
      });
 | 
				
			||||
    },
 | 
				
			||||
    // 全选
 | 
				
			||||
    selectAllEvent({ checked }) {
 | 
				
			||||
      // const records = this.$refs.tableRef.getCheckboxRecords();
 | 
				
			||||
      // this.checkedList = records;
 | 
				
			||||
      if (checked) {
 | 
				
			||||
        this.checkedList = JSON.parse(JSON.stringify(this.tableData));
 | 
				
			||||
      } else {
 | 
				
			||||
        this.checkedList = {};
 | 
				
			||||
      }
 | 
				
			||||
    },
 | 
				
			||||
    // 单选
 | 
				
			||||
    selectChangeEvent({ checked, row, rowIndex }) {
 | 
				
			||||
      // const records = this.$refs.tableRef.getCheckboxRecords();
 | 
				
			||||
      // this.checkedList = records;
 | 
				
			||||
      if (checked) {
 | 
				
			||||
        this.checkedList[this.indexes[rowIndex]] =
 | 
				
			||||
          this.tableData[this.indexes[rowIndex]];
 | 
				
			||||
      } else {
 | 
				
			||||
        delete this.checkedList[this.indexes[rowIndex]];
 | 
				
			||||
      }
 | 
				
			||||
    },
 | 
				
			||||
    // 获取船号接口
 | 
				
			||||
    getCzxx() {
 | 
				
			||||
      getCzxx().then((res) => {
 | 
				
			||||
        if (res.success) {
 | 
				
			||||
          this.ShipNoList = res.data;
 | 
				
			||||
        }
 | 
				
			||||
      });
 | 
				
			||||
    },
 | 
				
			||||
    // 获取列表接口
 | 
				
			||||
    initList() {
 | 
				
			||||
      let params = {
 | 
				
			||||
        dcCh: this.request.dcCh,
 | 
				
			||||
        Zt: this.request.Zt,
 | 
				
			||||
        nf: "",
 | 
				
			||||
      };
 | 
				
			||||
      if (this.nrStart && this.nrEnd) {
 | 
				
			||||
        params.nf = this.nrStart + "~" + this.nrEnd;
 | 
				
			||||
      } else if (
 | 
				
			||||
        (this.nrStart && !this.nrEnd) ||
 | 
				
			||||
        (!this.nrStart && this.nrEnd)
 | 
				
			||||
      ) {
 | 
				
			||||
        this.$message.warning("请选择年份范围");
 | 
				
			||||
        return;
 | 
				
			||||
      } else {
 | 
				
			||||
        this.request.nf = "";
 | 
				
			||||
      }
 | 
				
			||||
      // if()
 | 
				
			||||
      getList(params).then((res) => {
 | 
				
			||||
        if (res.success) {
 | 
				
			||||
          this.checkedList = {};
 | 
				
			||||
          this.getTableList(res.data);
 | 
				
			||||
        }
 | 
				
			||||
      });
 | 
				
			||||
    },
 | 
				
			||||
    // 表尾列求和
 | 
				
			||||
    total(list, field) {
 | 
				
			||||
      let count = 0;
 | 
				
			||||
      list.forEach((item) => {
 | 
				
			||||
        if (item !== "dcCh" && item !== "zt") {
 | 
				
			||||
          count += Number(item[field]);
 | 
				
			||||
        }
 | 
				
			||||
      });
 | 
				
			||||
      return count;
 | 
				
			||||
    },
 | 
				
			||||
    footerMethod({ columns, data }) {
 | 
				
			||||
      const totalList = []; //合计
 | 
				
			||||
      columns.forEach((column) => {
 | 
				
			||||
        if (["checkbox"].includes(column.property)) {
 | 
				
			||||
          return "合并了";
 | 
				
			||||
        }
 | 
				
			||||
        var totalData = null;
 | 
				
			||||
        totalData = this.total(data, column.property);
 | 
				
			||||
        totalList.push(totalData);
 | 
				
			||||
      });
 | 
				
			||||
      totalList[0] = "合计";
 | 
				
			||||
      return [totalList];
 | 
				
			||||
    },
 | 
				
			||||
    // 头部header css
 | 
				
			||||
    headerCellClassName({ column, $rowIndex }) {
 | 
				
			||||
      if ($rowIndex == 0) {
 | 
				
			||||
        return "row-gre-header";
 | 
				
			||||
      } else {
 | 
				
			||||
        if (column.field === "total1" || column.field === "total2") {
 | 
				
			||||
          return "row-gre-total-header";
 | 
				
			||||
        } else {
 | 
				
			||||
          return "row-gre-header";
 | 
				
			||||
        }
 | 
				
			||||
      }
 | 
				
			||||
    },
 | 
				
			||||
    // 指定列css
 | 
				
			||||
    cellClassName({ column }) {
 | 
				
			||||
      if (column.field === "total1" || column.field === "total2") {
 | 
				
			||||
        return "col-gre-total-col";
 | 
				
			||||
      } else {
 | 
				
			||||
        return "col-gre-col";
 | 
				
			||||
      }
 | 
				
			||||
    },
 | 
				
			||||
    // 尾部合计css
 | 
				
			||||
    footerCellClassName({ $rowIndex }) {
 | 
				
			||||
      if ($rowIndex === 0) {
 | 
				
			||||
        return "row-end-gre";
 | 
				
			||||
      }
 | 
				
			||||
    },
 | 
				
			||||
    // 操作
 | 
				
			||||
    async toolbarButtonClickEvent(code) {
 | 
				
			||||
      switch (code) {
 | 
				
			||||
        case "submit":
 | 
				
			||||
          if (!JSON.stringify(this.checkedList) =="{}") {
 | 
				
			||||
            this.$confirm("是否确认提交选择的数据?", "提示", {
 | 
				
			||||
              confirmButtonText: "确定",
 | 
				
			||||
              cancelButtonText: "取消",
 | 
				
			||||
              type: "warning",
 | 
				
			||||
            })
 | 
				
			||||
              .then(() => {
 | 
				
			||||
                tj(this.checkedList).then((res) => {
 | 
				
			||||
                  if (res.success) {
 | 
				
			||||
                    const xTable = this.$refs.tableRef;
 | 
				
			||||
                    xTable.loadData(this.initList());
 | 
				
			||||
                    this.$message.success("提交成功!");
 | 
				
			||||
                  }
 | 
				
			||||
                });
 | 
				
			||||
              })
 | 
				
			||||
              .catch(() => {});
 | 
				
			||||
          } else {
 | 
				
			||||
            this.$message.warning("请选择数据!");
 | 
				
			||||
          }
 | 
				
			||||
          break;
 | 
				
			||||
        case "save":
 | 
				
			||||
          if (JSON.stringify(this.checkedList) =="{}") {
 | 
				
			||||
            this.$confirm("是否确认保存选择的数据?", "提示", {
 | 
				
			||||
              confirmButtonText: "确定",
 | 
				
			||||
              cancelButtonText: "取消",
 | 
				
			||||
              type: "warning",
 | 
				
			||||
            })
 | 
				
			||||
              .then(() => {
 | 
				
			||||
                save(this.checkedList).then((res) => {
 | 
				
			||||
                  if (res.success) {
 | 
				
			||||
                    const xTable = this.$refs.tableRef;
 | 
				
			||||
                    xTable.loadData(this.initList());
 | 
				
			||||
                    this.$message.success("保存成功!");
 | 
				
			||||
                  }
 | 
				
			||||
                });
 | 
				
			||||
              })
 | 
				
			||||
              .catch(() => {});
 | 
				
			||||
          } else {
 | 
				
			||||
            this.$message.warning("请选择数据!");
 | 
				
			||||
          }
 | 
				
			||||
          break;
 | 
				
			||||
        default:
 | 
				
			||||
          break;
 | 
				
			||||
      }
 | 
				
			||||
    },
 | 
				
			||||
    getHeight() {
 | 
				
			||||
      this.height = window.innerHeight - 160;
 | 
				
			||||
    },
 | 
				
			||||
  },
 | 
				
			||||
};
 | 
				
			||||
</script>
 | 
				
			||||
 | 
				
			||||
<style scoped>
 | 
				
			||||
.first-col {
 | 
				
			||||
  position: relative;
 | 
				
			||||
  height: 20px;
 | 
				
			||||
}
 | 
				
			||||
.first-col:before {
 | 
				
			||||
  content: "";
 | 
				
			||||
  position: absolute;
 | 
				
			||||
  left: -18px !important;
 | 
				
			||||
  top: 9px !important;
 | 
				
			||||
  width: 95px;
 | 
				
			||||
  height: 1px;
 | 
				
			||||
  -webkit-transform: rotate(37deg);
 | 
				
			||||
  transform: rotate(34deg);
 | 
				
			||||
  background-color: #000;
 | 
				
			||||
}
 | 
				
			||||
.first-col .first-col-top {
 | 
				
			||||
  position: absolute;
 | 
				
			||||
  right: 4px;
 | 
				
			||||
  top: -10px;
 | 
				
			||||
}
 | 
				
			||||
.first-col .first-col-bottom {
 | 
				
			||||
  position: absolute;
 | 
				
			||||
  left: 4px;
 | 
				
			||||
  bottom: -10px;
 | 
				
			||||
}
 | 
				
			||||
.my-filter {
 | 
				
			||||
  margin: 10px;
 | 
				
			||||
}
 | 
				
			||||
.page-left {
 | 
				
			||||
  position: absolute;
 | 
				
			||||
  left: 10px;
 | 
				
			||||
  top: 50%;
 | 
				
			||||
  transform: translateY(-50%);
 | 
				
			||||
  z-index: 10;
 | 
				
			||||
}
 | 
				
			||||
::v-deep .vxe-table--render-default .vxe-cell {
 | 
				
			||||
  text-align: center !important;
 | 
				
			||||
}
 | 
				
			||||
/* 尾部 */
 | 
				
			||||
::v-deep.mytable-style .row-end-gre {
 | 
				
			||||
  background-color: #9ed3a4;
 | 
				
			||||
  color: #000;
 | 
				
			||||
  font-weight: bold;
 | 
				
			||||
}
 | 
				
			||||
/* 列 */
 | 
				
			||||
::v-deep.mytable-style.vxe-table .vxe-body--column.col-gre-total-col {
 | 
				
			||||
  background-color: #9ed3a4;
 | 
				
			||||
  color: #000;
 | 
				
			||||
}
 | 
				
			||||
::v-deep.mytable-style.vxe-table .vxe-body--column.col-gre-col {
 | 
				
			||||
  background-color: #cce8cf;
 | 
				
			||||
  color: #000;
 | 
				
			||||
}
 | 
				
			||||
/* header */
 | 
				
			||||
::v-deep.mytable-style.vxe-table .vxe-header--column.row-gre-header {
 | 
				
			||||
  background-color: #cce8cf;
 | 
				
			||||
  color: #000;
 | 
				
			||||
  font-weight: bold;
 | 
				
			||||
}
 | 
				
			||||
::v-deep.mytable-style.vxe-table .vxe-header--column.row-gre-total-header {
 | 
				
			||||
  background-color: #9ed3a4;
 | 
				
			||||
  color: #000;
 | 
				
			||||
  font-weight: bold;
 | 
				
			||||
}
 | 
				
			||||
/* header下边框 */
 | 
				
			||||
::v-deep.mytable-style.vxe-table
 | 
				
			||||
  .vxe-table--header-wrapper
 | 
				
			||||
  .vxe-table--header-border-line {
 | 
				
			||||
  border-bottom: 2px solid #000 !important;
 | 
				
			||||
}
 | 
				
			||||
/* border 颜色 */
 | 
				
			||||
::v-deep .vxe-table--render-default.border--full .vxe-body--column,
 | 
				
			||||
.vxe-table--render-default.border--full .vxe-footer--column,
 | 
				
			||||
.vxe-table--render-default.border--full .vxe-header--column {
 | 
				
			||||
  background-image: linear-gradient(#000, #000) !important;
 | 
				
			||||
}
 | 
				
			||||
::v-deep.vxe-table--render-default.border--full .vxe-body--column,
 | 
				
			||||
.vxe-table--render-default.border--full .vxe-footer--column,
 | 
				
			||||
.vxe-table--render-default.border--full .vxe-header--column {
 | 
				
			||||
  background-image: linear-gradient(#000, #000), linear-gradient(#000, #000) !important;
 | 
				
			||||
}
 | 
				
			||||
:v-deep.vxe-table--render-default.border--full .vxe-body--column,
 | 
				
			||||
.vxe-table--render-default.border--full .vxe-footer--column,
 | 
				
			||||
.vxe-table--render-default.border--full .vxe-header--column {
 | 
				
			||||
  background-image: linear-gradient(#000, #000), linear-gradient(#000, #000) !important;
 | 
				
			||||
}
 | 
				
			||||
::v-deep.vxe-table--render-default.border--full .vxe-body--column,
 | 
				
			||||
::v-deep.vxe-table--render-default.border--full .vxe-footer--column,
 | 
				
			||||
::v-deep.vxe-table--render-default.border--full .vxe-header--column {
 | 
				
			||||
  background-image: linear-gradient(#000, #000), linear-gradient(#000, #000) !important;
 | 
				
			||||
}
 | 
				
			||||
/* 尾部上边框 */
 | 
				
			||||
::v-deep.vxe-table--render-default .vxe-table--footer-wrapper {
 | 
				
			||||
  border-top: 2px solid #000 !important;
 | 
				
			||||
}
 | 
				
			||||
::v-deep.vxe-table--render-default .vxe-cell--checkbox .vxe-checkbox--icon {
 | 
				
			||||
  color: #000;
 | 
				
			||||
  font-weight: 400 !important;
 | 
				
			||||
}
 | 
				
			||||
.upload-demo {
 | 
				
			||||
  display: inline-flex;
 | 
				
			||||
  margin-right: 10px;
 | 
				
			||||
}
 | 
				
			||||
::v-deep .el-upload-list {
 | 
				
			||||
  display: none !important;
 | 
				
			||||
}
 | 
				
			||||
.el-main {
 | 
				
			||||
  padding: 0;
 | 
				
			||||
}
 | 
				
			||||
.el-container {
 | 
				
			||||
  padding-top: 5px;
 | 
				
			||||
  width: 100%;
 | 
				
			||||
  margin: 0;
 | 
				
			||||
}
 | 
				
			||||
.el-header {
 | 
				
			||||
  margin: 0;
 | 
				
			||||
  padding: 5px 0;
 | 
				
			||||
  height: auto;
 | 
				
			||||
}
 | 
				
			||||
.el-row {
 | 
				
			||||
  margin-bottom: 5px;
 | 
				
			||||
}
 | 
				
			||||
::v-deep .el-form-item {
 | 
				
			||||
  margin-bottom: 0px !important;
 | 
				
			||||
}
 | 
				
			||||
.distance {
 | 
				
			||||
  margin-left: 5px;
 | 
				
			||||
  margin-right: 5px;
 | 
				
			||||
}
 | 
				
			||||
</style>
 | 
				
			||||
											
												
													File diff suppressed because it is too large
													Load Diff
												
											
										
									
								
					Loading…
					
					
				
		Reference in new issue