vue

<template>
  <div>
    <el-dialog  v-model="labelPosition"  :visible.sync="dialogVisible" title="核心企业大期信息" :callValid="callValid" :api="api" :formRules="formRules" :form="form"
           width="950px"   :closeOnClickModal="false" :editModel="editModel" class="demo-form-inline"  ref="form">
    <div class="filter-container" align="center">
     <el-form :inline="true" ref="form" :model="form" :label-position="labelPosition" :rules="rules">
        <el-row >
            <div align="left">
                <el-form-item label="核心企业" prop="coreEnterpriseId"  label-width="150px"> 
                  <select-core-enterprise :disabled="flag" v-model="form.coreEnterpriseId"  style="width: 200px" class="filter-item"></select-core-enterprise>
                </el-form-item>

                <el-form-item label="无异议函" label-width="120px"></el-form-item>
                <el-form-item >
                <span v-if="editModel==='C'">
                    <file-upload :uploadApi="upapi" v-on:onUpload="addUpload" :fileID="fileId"  downloadApi='321' ></file-upload>
                </span>

                  <span v-else-if="editModel==='E'||editModel==='V'" >
                    
                    <span>
                      <span v-if="editModel==='V'">
                          <span v-if="letterFileId !== undefined && letterFileId !==''">
                          <el-button class="filter-item margin-l-20"  type="primary" icon="el-icon-download"  size="small" 
                          @click="showDown(form,form.letterFileId)">下载查看
                           </el-button></span>
                           <span v-else>
                             <span >暂未上传</span>
                             </span>
                      </span>

                      <span v-else-if="editModel==='E'">
                          <file-upload :uploadApi="upapi" :editModel="editModel" :fileID="letterFileId" v-on:onUpload="editAddUpload"  downloadApi='321' ></file-upload>
                      </span>

                    </span>
                  </span>
                </el-form-item>
              <el-form-item label="金融机构" prop="financialInstitutionsId" label-width="150px">
                  <select-financial :disabled="flag" v-model="form.financialInstitutionsId"  style="width: 200px" class="filter-item"></select-financial>
                </el-form-item>

                <el-form-item label="期数设置" prop="periods" label-width="120px">
                    </el-form-item>

                  <el-form-item prop="periodsSmall" label-width="50px">
                    <el-input class="filter-item" type="text" :disabled="isEditDisable"  v-model="periodsSmall" style="width:70px" ></el-input>
                  </el-form-item>

                  <el-form-item >
                    <el-col class="line">--</el-col>
                  </el-form-item>

                  <el-form-item prop="periodsLarge" label-width="50px">
                    <el-input class="filter-item" type="text" :disabled="isEditDisable" v-model="periodsLarge" style="width:70px" ></el-input>
                  </el-form-item>
                
            </div>
            <div align="left">
              <el-form-item label="大期名称" prop="bigPeriodsName" label-width="150px">
                  <el-col :span="4">
                  <el-input class="filter-item" type="text" :disabled="isEditDisable" style="width: 200px"  v-model="form.bigPeriodsName" ></el-input>
                  </el-col>
                </el-form-item>
            </div>
        </el-row>
            
          <el-row style="text-align: right;">
            <el-form-item >
              <el-button type="primary" v-if="editModel=='E'" class="filter-item margin-l-20" @click="batchDel" icon="el-icon-minus">删除费用科目</el-button>

              <el-button class="filter-item margin-l-20" v-if="editModel=='E'"  @click="showAdd" type="primary" icon="el-icon-plus">添加费用科目</el-button>
            </el-form-item>
          </el-row>
              <el-row  v-show="editModel!='C'&&editModel!='CY'">
              <el-col>
                <template>
                    <el-table :header-cell-style="{background:'WhiteSmoke'}" :data="tableDatas" :api="costSubjectApi" :queryParas="queryParas" :loadCount.sync="loadCount"
                   :row-class-name="tableRowClassName" :showPage=false :operateColLayout="operateColLayout" border :selectedRows.sync="selectedRows" ref="dataTable" @selection-change="delHandleSelectionChange">
                      <el-table-column v-if="editModel=='E'" width="55"  type="selection" >
                      </el-table-column>
                      <el-table-column label="费用名称">
                        <template slot-scope="scope">
                          <span hidden style="margin-left: 10px">{{ scope.row.id }}</span>
                          <span style="margin-left: 10px;" >{{ scope.row.name }}</span>
                        </template>
                      </el-table-column>
                      <el-table-column label="收款公司" width="415">
                        <template slot-scope="scope">
                          <select-biz-collection-company v-if="editModel==='E'" v-model="scope.row.companyIds"></select-biz-collection-company>
                          <span v-else style="text-align:center;display:block; ">
                            {{ scope.row.companyName }}
                          </span>
                        </template>
                      </el-table-column>
                      <el-table-column label="协议" width="330">
                        <template slot-scope="scope">
                          <span v-if="scope.row.agreementFlag ===1" > 
                            <span v-if="editModel === 'E'">
                              <span>
                                <div class="dataUplad">
                                  <append-file-upload  :uploadApi="upapi" v-on:onUpload="idInfo" v-on:idInfo="handleEdit(scope.row.subjectNameId)" downloadApi='321' >
                                  </append-file-upload></div>

                                <div class="dataUplad">
                                  <add-upload  :uploadApi="upapi" v-on:onDataUpload="uploadIdInfo"  v-on:onSubjectId="handleUpload(scope.row.subjectNameId)"   downloadApi='321' >
                                  </add-upload>
                                </div>
                              </span>
                            <span>
                              <div class="dataUplad" style="margin : 0px 0px 15px 5px;">
                              <el-button  size="small" type="primary"  @click="dialogFormVisible = down,downLook(scope.row.subjectNameId)" icon="el-icon-download">查看下载</el-button>
                              </div></span>
                            </span>
                          <span v-else style="text-align:center; width:100%;display:block; ">
                            <el-button type="primary" size="small"  @click="dialogFormVisible = down,downLook(scope.row.id)" icon="el-icon-download">查看下载</el-button>
                          </span>
                          </span>
                          <span v-else-if="scope.row.agreementFlag === 0" style="text-align:center; width:100%;display:block; ">
                            <span v-if="editModel!=='V'">
                              <span style="text-align:center; width:100%;display:block; ">
                              <data-upload :uploadApi="upapi" :index="scope.row.index" :subjectNameId="scope.row.subjectNameId"  v-on:onDataUpload="uploadIdInfo" 
                                v-on:onSubjectId="handleUpload(scope.row.subjectNameId)"   downloadApi='321' >
                              </data-upload></span>
                            </span>
                            <span v-else>暂未上传
                            </span>

                          </span >
                          <span v-else-if="scope.row.agreementFlag === undefined"></span>
                            
                        </template>
                      </el-table-column>
                      </el-table>
                </template>
              </el-col>
            </el-row>
            &nbsp;
          <div>
            <el-button v-if="editModel!=='V'" type="primary" @click="save">保 存</el-button>
            <span v-if="editModel=='V'">
              <el-button @click="dialogVisible = false">关 闭</el-button>
            </span>
            <!-- <span v-else-if="editModel === 'C'">
              <el-button @click="dialogVisible = false,cancel()">取 消</el-button>
            </span> -->
            <span v-else>
              <el-button @click="dialogVisible = false,resetForm('form')">取 消</el-button>
            </span>
          </div>

            </el-form>
        </div>
    </el-dialog>
    <costSubject-edit :visible.sync="showDetail1" v-on:onSaved="handleFilter" :form="item" :bigPeriodsName='form.bigPeriodsName' 
     :financialInstitutionsId='form.financialInstitutionsId' :coreEnterpriseId='form.coreEnterpriseId' :editModel="editModel1" :anc="item"></costSubject-edit>

    <el-dialog title="已上传协议文件信息列表"  :visible.sync="dialogFormVisible" :closeOnClickModal="false" >
      <el-row  v-show="editModel!='C'&&editModel!='CY'">
        <el-col>
          <template>
              <el-table v-loading="loading" element-loading-text="下载中···" element-loading-spinner="el-icon-loading" element-loading-background="rgba(255, 255, 255, 255)"
               :header-cell-style="{background:'WhiteSmoke'}" :data="agreementTableDatas" :api="costSubjectApi" :showPage=false  border :operateColLayout="operateColLayout" :loadCount.sync="loadCount"
               :queryParas="queryParas" :selectedRows.sync="selectedRowsInfo" @selection-change="handleSelectionChange">
               <el-table-column type="selection"  width="55">
               </el-table-column>
              <el-table-column label="协议名称">
                <template slot-scope="scope">
                  <span style="margin-left: 10px">{{ scope.row.fileName }}</span>
                  <span hidden style="margin-left: 10px">{{ scope.row.agreementFileId }}</span>
                </template>
              </el-table-column>
              <el-table-column label="上传时间">
                <template slot-scope="scope">
                  <span style="margin-left: 10px">
                    {{ scope.row.uploadTime }}
                  </span>
                </template>
              </el-table-column>
              </el-table>
          </template>
        </el-col>
      </el-row>
      <div slot="footer" class="dialog-footer" style="text-align:center; width:100%;display:block; ">
        <el-button  @click="downFile()">下载</el-button>
      </div>
    </el-dialog>

  </div>
</template>
<style>
  .dataUplad{float: left}
  .el-checkbox__inner {
    display: inline-block;
    position: relative;
    border: 1px solid #dcdfe6;
    border-radius: 2px;
    -webkit-box-sizing: border-box;
    box-sizing: border-box;
    width: 22px;
    height: 22px;
    background-color: #fff;
    z-index: 1;
    -webkit-transition: border-color .25s cubic-bezier(.71,-.46,.29,1.46),background-color .25s cubic-bezier(.71,-.46,.29,1.46);
    transition: border-color .25s cubic-bezier(.71,-.46,.29,1.46),background-color .25s cubic-bezier(.71,-.46,.29,1.46);
  }
.el-checkbox__inner::after {
    -webkit-box-sizing: content-box;
    box-sizing: content-box;
    content: "";
    border: 1px solid #fff;
    border-left: 0;
    border-top: 0;
    height: 13px;
    left: 10px;
    position: absolute;
    top: 1px;
    -webkit-transform: rotate(45deg) scaleY(0);
    transform: rotate(45deg) scaleY(0);
    width: 3px;
    -webkit-transition: -webkit-transform .15s ease-in .05s;
    transition: -webkit-transform .15s ease-in .05s;
    transition: transform .15s ease-in .05s;
    transition: transform .15s ease-in .05s,-webkit-transform .15s ease-in .05s;
    -webkit-transform-origin: center;
    transform-origin: center;
}
</style>

<script type="text/ecmascript-6">
import DataTable from '@/components/element/DataTable'
import AgainUpload from '@/components/element/AgainUpload'
import FileUpload from '@/components/element/FileUpload'
import DataUpload from '@/components/element/DataUpload'
import AppendFileUpload from '@/components/element/AppendFileUpload'
import BaseEdit from '@/pages/finance/financeBaseEditPage'
import AddUpload from '@/components/element/AddUpload'
import costSubjectEdit from '@/pages/finance/costSubjectEdit'
import SelectFinancial from '@/components/element/SelectFinancial'
import SelectCoreEnterprise from '@/components/element/SelectCoreEnterprise'
import SelectBizCollectionCompany from '@/components/element/SelectBizCollectionCompany'
import financeApi from '@/api/financeApi.js'
import httpConfig from '@/api/finance/httpConfig.js'
import { Message } from 'element-ui'
import qhyffsApi from '@/api/qhyffsApi'
import { downloadFromLocal } from '@/utils/download'
export default {
  extends: new BaseEdit('coreEnterpriseMaintenanceEdit'),
  data () {
    return {
      file: {},
      fileList: [],
      operateColLayout: '',
      queryParas: {
        absId: ''
      },
      agreementName: '',
      formLabelWidth: '120px',
      selectedRowsInfo: [],
      selectedRows: [],
      loadCount: 0,
      name: '',
      editModel1: 'V',
      showDetail1: false,
      item: {
      },
      agreementFileId: {},
      labelPosition: 'right',
      title: '核心企业大期信息',
      dialogFormVisible: false,
      fileIdInfo: '',
      uploadId: '',
      region: '',
      callValid: 0,
      fileId: '',
      tableDatas: [],
      companyIdAll: [],
      saveTableDatas: [],
      agreementTableDatas: [],
      downSubjectNameId: '',
      letterFileId: '',
      selectedOptions: [],
      subjectNameIdInfo: [],
      nameMaxlength: 20,
      codeMaxlength: 20,
      coreEnterpriseName: '',
      financialInstitutionsName: '',
      showPage: false,
      costSubjectApi: financeApi.costSubjectEditInfo,
      options: [],
      loading: false,
      periodsSmall: '',
      periodsLarge: '',
      Verification: 1,
      indexInfo: '',
      upapi: process.env.BASE_API + '/api/sys/file/upload',
      rules: {
        periods: [{
          required: true,
          // message: '请填写最小值',
          trigger: 'blur'
        }],
        bigPeriodsName: [{
          required: true,
          message: '请填写大期',
          trigger: 'blur'
        }],
        financialInstitutionsId: [{
          required: true,
          // message: '请选择金融机构',
          trigger: 'blur'
        }],
        coreEnterpriseId: [{
          required: true,
          // message: '请选择核心企业',
          trigger: 'blur'
        }]
      }
      // downloads: process.env.BASE_API + '/api/finance/biz/big/periods/maintain/agreement/update'
    }
  },
  components: {
    httpConfig,
    FileUpload,
    AddUpload,
    AgainUpload,
    DataTable,
    costSubjectEdit,
    SelectFinancial,
    Message,
    DataUpload,
    AppendFileUpload,
    SelectCoreEnterprise,
    SelectBizCollectionCompany
  },
  computed: {
    down: function () {
      return true
    },
    uploadApi: function () {
      return httpConfig.MID_FILE + ''
    },
    downloadApi: function () {
      return httpConfig.MID_FILE + ''
    },
    flag () {
      if (this.editModel === 'E') {
        return true
      } else if (this.editModel === 'V') {
        return true
      } else {
        return false
      }
    },
    api: function () {
      return financeApi.coreEnterpriseMaintenance
    }
  },
  watch: {
    dialogVisible: function (val) {
      if (val) {
        this.editModel === 'E' ? this.form.name : null
        this.editModel === 'E' ? this.form.code : null
      }
      if (this.editModel !== 'C') {
        if (this.editModel === 'E') {
          financeApi.costSubjectEditInfo.getValue({absId: this.form.id}).then(res => {
            if (res && res.data) {
              this.tableDatas = res.data.map(item => {
                item.companyIds = item.SubjectName.map(it => it.id)
                return item
              })
              let companyIds = this.tableDatas.map(item => {
                var companyIdAll = []
                for (var i = 0; i < item.companyIds.length; i++) {
                  companyIdAll[i] = {CompanyId: item.companyIds[i]}
                }
                return {bizFinancialSubjectsId: item.SubjectNameId, collectionCompanyIds: companyIdAll, subjectId: item.bizFinancialSubjectsId}
              })
              this.saveTableDatas = JSON.stringify(companyIds)
            }
          })
        } else {
          financeApi.coreEnterpriseMaintenanceEdit.getDetails({absId: this.form.id}).then(res => {
            if (res && res.data) {
              this.tableDatas = res.data
            }
          })
        }
      }
      // 根据ID找到对应的核心企业名称
      qhyffsApi.coreEnterprise.getList(null).then(response => {
        for (var i = 0; i < response.data.length; i++) {
          if (this.form.coreEnterpriseId === response.data[i].id) {
            this.coreEnterpriseName = response.data[i].coreEnterpriseName
          }
        }
      })
      // 根据ID找到对应的金融机构名称
      qhyffsApi.financial.getList(null).then(response => {
        for (var i = 0; i < response.data.length; i++) {
          if (this.form.financialInstitutionsId === response.data[i].id) {
            this.financialInstitutionsName = response.data[i].financialInstitutionsName
          }
        }
      })
      this.periodsSmall = this.form.periodsSmall
      this.periodsLarge = this.form.periodsLarge
      if (this.editModel === 'C') {
        this.letterFileId = ''
      } else {
        this.letterFileId = this.form.letterFileId
      }
    }
  },
  methods: {
    resetForm (formName) {
      this.$nextTick(() => {
        this.$refs[formName].clearValidate()
      })
      this.fileId = ''
    },
    // changeCellStyle ({row, column, rowIndex, columnIndex}) {
    //   // 第1列添加 red 类
    //   if (columnIndex === 0) {
    //     return 'red'
    //   }
    // },
    // 获取选中行
    tableRowClassName ({row, rowIndex}) {
      row.index = rowIndex
    },
    showDown: async function (data, fileUuid) {
      data.excludeFs = await this.getExcludeFs()
      this.item = Object.assign({}, data)
      downloadFromLocal(fileUuid)
    },
    downFile () {
      if (this.selectedRowsInfo.length === 0) {
        this.warning(`请勾选要下载的文件`)
        return
      }
      // this.openFullScreen()
      this.loading = true
      financeApi.costSubjectEditInfo.getDown({FileUuidList: JSON.stringify(this.agreementFileId)}).then(ress => {
        if (ress && ress.data) {
          this.success(`文件下载成功!`)
          downloadFromLocal(ress.data)
        } else {
          this.error(`文件下载失败!`)
        }
        this.loading = false // 关闭帷幕
      },
      res => {
        this.loading = false
      })
    },
    handleFilter () {
      if (this.form.id) {
        financeApi.costSubjectEditInfo.getValue({absId: this.form.id}).then(res => {
          if (res && res.data) {
            this.tableDatas = res.data.map(item => {
              item.companyIds = item.SubjectName.map(it => it.id)
              return item
            })
          }
        })
      }
    },
    // handleDataFilter () {
    //   if (this.form.id) {
    //     financeApi.costSubjectEditInfo.getValue({absId: this.form.id}).then(res => {
    //       if (res && res.data) {
    //         this.tableDatas.agreementFlag = res.data.map(item => {
    //           return item.agreementFlag
    //         })
    //       }
    //     })
    //   }
    // },
    handleSelectionChange (val) {
      for (var i = 0; i < val.length; i++) {
        this.selectedRowsInfo[i] = val[i].subjectNameId
      }
      this.agreementFileId = val.map(item => { return {FileUuid: item.agreementFileId} })
    },
    delHandleSelectionChange (val) {
      this.selectedRows = val
      for (var i = 0; i < val.length; i++) {
        this.subjectNameIdInfo[i] = val[i].subjectNameId
      }
    },
    //  编辑时,覆盖上传获取当前科目ID
    idInfo: function (row) {
      this.fileIdInfo = row
    },
    handleEdit: function (rowSubjectNameIds) {
      financeApi.costSubjectEditInfo.getCoverUpload({absRelationId: rowSubjectNameIds, fileUuid: this.fileIdInfo}).then(res => {
        if (res.data === true) {
          this.success(`覆盖上传成功!`)
        } else {
          this.error(`覆盖上传失败!`)
        }
      })
    },
    uploadIdInfo: function (fileInfo) {
      if (fileInfo.file !== null) {
        this.tableDatas.map(res => {
          if (res.index === fileInfo.index) {
            res.agreementFlag = 1
          }
        })
      }
      this.uploadId = fileInfo.file
      this.indexInfo = fileInfo.index
      this.rowSubjectNameIds = fileInfo.subjectNameId
    },
    // handleAddUpload: function (rowSubjectNameIds) {
    //   financeApi.costSubjectEditInfo.getFileUpload({absRelationId: this.rowSubjectNameIds, fileUuid: this.uploadId}).then(res => {
    //     if (res.data === true) {
    //       this.success(`文件追加上传成功!`)
    //     } else {
    //       this.error(`文件追加上传失败!`)
    //     }
    //   })
    // },
    handleUpload: function (rowSubjectNameIds) {
      financeApi.costSubjectEditInfo.getFileUpload({absRelationId: rowSubjectNameIds, fileUuid: this.uploadId}).then(res => {
        if (res.data === true) {
          this.success(`文件上传成功!`)
          // this.handleFilter()
        } else {
          this.error(`文件上传失败!`)
        }
      })
    },
    handleData: function () {
      this.handleFilter()
    },
    // 新增上传时传值
    addUpload: function (fileId) {
      this.fileId = fileId
    },
    editAddUpload: function (fileId) {
      this.fileId = fileId
      // this.handleFilter()
    },
    downLook: function (subjectNameId) {
      this.downSubjectNameId = subjectNameId
      financeApi.costSubjectEditInfo.getUpload({absRelationId: subjectNameId}).then(ress => {
        if (ress && ress.data) {
          this.agreementTableDatas = ress.data
        }
      })
    },
    batchDel: function () {
      if (this.selectedRows.length === 0) {
        this.warning(`请勾选要删除的数据`)
        return
      }
      let $this = this
      $this.confirmWarin('确认要删除选中行的数据吗', '询问', () => {
        financeApi.coreEnterpriseMaintenanceEdit.del($this.subjectNameIdInfo).then(res => {
          if (res && res.errcode === '0') {
            $this.success(`删除成功`)
            this.selectedRows = this.selectedRows.sort((a, b) => (b.index - a.index))
            for (let item of this.selectedRows) {
              this.tableDatas.splice(item.index, 1)
            }
            // financeApi.costSubjectEditInfo.getValue({absId: this.form.id}).then(res => {
            //   if (res && res.data) {
            //     this.tableDatas = res.data.map(item => {
            //       item.companyIds = item.SubjectName.map(it => it.id)
            //       return item
            //     })
            //   }
            // })
          } else {
            $this.error(`删除失败`)
          }
        })
      }, () => {

      })
    },
    blurFnNum: function (row) {
      // 验证修改金额必须为数字
      let reg = /^[0-9]*$/
      if (row.periodsSmall != null && !reg.test(row.periodsSmall)) {
        this.warning('期数最小值只能输入正整数')
        return false
      }
      if (row.periodsLarge != null && !reg.test(row.periodsLarge)) {
        this.warning('期数最大值只能输入正整数')
        return false
      }
      return true
    },
    // 保存数据
    save: function () {
      let $this = this
      this.callValid++
      if (!this.form || !this.form.coreEnterpriseId) {
        this.warning('请选择核心企业!')
        this.$refs.fwSel.focus()
        return
      } else if (!this.form || !this.form.financialInstitutionsId) {
        this.warning('请选择金融机构!')
        this.$refs.fwSel.focus()
        return
      } else if (!this.form || !this.periodsSmall) {
        this.warning('请填写期数最小值!')
        this.$refs.fwSel.focus()
        return
      } else if (!this.form || !this.periodsLarge) {
        this.warning('请填写期数最大值!')
        this.$refs.fwSel.focus()
        return
      } else if (!this.form || !this.form.bigPeriodsName) {
        this.warning('请输入大期名称!')
        this.$refs.fwSel.focus()
        return
      }
      if (parseInt(this.periodsSmall) > parseInt(this.periodsLarge)) {
        this.warning('期数的最小值【' + this.periodsSmall + '】不能大于最大值【' + this.periodsLarge + '】!')
        this.$refs.fwSel.focus()
        return
      }
      let period = {
        periodsSmall: this.periodsSmall,
        periodsLarge: this.periodsLarge
      }
      let f = this.blurFnNum(period)
      if (!f) return
      // 重置表单
      this.$refs['form'].clearValidate()
      // 新增数据的保存
      if ($this.editModel === 'C') {
        let forms = {
          coreEnterpriseId: this.form.coreEnterpriseId,
          financialInstitutionsId: this.form.financialInstitutionsId,
          periodsSmall: this.periodsSmall,
          periodsLarge: this.periodsLarge,
          letterFileId: this.fileId,
          bigPeriodsName: this.form.bigPeriodsName
        }
        financeApi.coreEnterpriseMaintenanceEdit.check(forms).then(res => {
          if (res.data === false) {
            this.warning('期数重叠,请重新输入!')
            return
          } else {
            // 校验期数漏期,并提示出来
            financeApi.coreEnterpriseMaintenanceEdit.addCheck(forms).then(res => {
              let exfrom = ''
              if (res.data) {
                for (var i = 0; i < res.data.length; i++) {
                  exfrom += res.data[i]
                }
              }
              if (exfrom.length > 0) {
                this.$confirm(`当前添加的大期区间存在遗漏,遗漏的区间是[${exfrom}],请确认是否保存?`, '提示', {
                  confirmButtonText: '确定',
                  cancelButtonText: '取消',
                  type: 'warning'
                }).then(() => {
                  $this.api.create(forms).then(res => {
                    if (res.data === true) {
                      this.form.letterFileId = ''
                      Message({
                        message: `新增${this.title}成功`,
                        type: 'success',
                        duration: 5 * 1000
                      })
                      $this.$emit('onSaved')
                      $this.dialogVisible = false
                    } else {
                      this.form.letterFileId = ''
                      Message({
                        message: `新增${this.title}失败`,
                        type: 'success',
                        duration: 5 * 1000
                      })
                      return
                    }
                  })
                }).catch(() => {
                  this.$message({
                    type: 'info',
                    message: '已取消保存'
                  })
                })
              } else {
                $this.api.create(forms).then(res => {
                  if (res.data === true) {
                    this.form.letterFileId = ''
                    Message({
                      message: `新增${this.title}成功`,
                      type: 'success',
                      duration: 5 * 1000
                    })
                    $this.$emit('onSaved')
                    $this.dialogVisible = false
                  } else {
                    this.form.letterFileId = ''
                    Message({
                      message: `新增${this.title}失败`,
                      type: 'success',
                      duration: 5 * 1000
                    })
                    return
                  }
                })
              }
            })
          }
          this.fileId = ''
        })
      } else if ($this.editModel === 'E') {
        if ($this.fileId === '') {
          $this.fileId = $this.form.letterFileId
        }
        // 编辑数据的保存
        financeApi.coreEnterpriseMaintenanceEdit.check({coreEnterpriseId: this.form.coreEnterpriseId, financialInstitutionsId: this.form.financialInstitutionsId, periodsSmall: this.periodsSmall, periodsLarge: this.periodsLarge, bigPeriodsId: this.form.id}).then(res => {
          if (res.data === false) {
            this.warning('期数重叠,请重新输入!')
            return
          } else {
            // 校验期数漏期,并提示出来
            financeApi.coreEnterpriseMaintenanceEdit.addCheck({coreEnterpriseId: this.form.coreEnterpriseId, financialInstitutionsId: this.form.financialInstitutionsId, periodsSmall: this.periodsSmall, periodsLarge: this.periodsLarge, bigPeriodsId: this.form.id}).then(res => {
              let exfrom = ''
              if (res.data) {
                for (var i = 0; i < res.data.length; i++) {
                  exfrom += res.data[i]
                }
              }
              if (exfrom.length > 0) {
                this.$confirm(`当前添加的大期区间存在遗漏,遗漏的区间是[${exfrom}],请确认是否保存?`, '提示', {
                  confirmButtonText: '确定',
                  cancelButtonText: '取消',
                  type: 'warning'
                }).then(() => {
                  let companyIds = this.tableDatas.map(item => {
                    var companyIdAll = []
                    for (var i = 0; i < item.companyIds.length; i++) {
                      companyIdAll[i] = {CompanyId: item.companyIds[i]}
                    }
                    return {bizFinancialSubjectsId: item.subjectNameId, collectionCompanyIds: companyIdAll, subjectId: item.bizFinancialSubjectsId}
                  })
                  this.saveTableDatas = JSON.stringify(companyIds)
                  this.api.updateData({coreEnterpriseId: this.form.coreEnterpriseId, financialInstitutionsId: this.form.financialInstitutionsId, bigPeriodsId: $this.form.id, periodsSmall: $this.periodsSmall, periodsLarge: $this.periodsLarge, bigPeriodsName: $this.form.bigPeriodsName, letterFileId: $this.fileId, ExpenseCompany: this.saveTableDatas}).then(res => {
                    if (res.data === false) {
                      Message({
                        message: `修改${$this.title}失败`,
                        type: 'error',
                        duration: 5 * 1000
                      })
                      return
                    } else {
                      Message({
                        message: `修改${$this.title}成功`,
                        type: 'success',
                        duration: 5 * 1000
                      })
                      $this.$emit('onSaved')
                      $this.dialogVisible = false
                    }
                  })
                }).catch(() => {
                  this.$message({
                    type: 'info',
                    message: '已取消保存'
                  })
                })
              } else {
                let companyIds = this.tableDatas.map(item => {
                  var companyIdAll = []
                  for (var i = 0; i < item.companyIds.length; i++) {
                    companyIdAll[i] = {CompanyId: item.companyIds[i]}
                  }
                  return {bizFinancialSubjectsId: item.subjectNameId, collectionCompanyIds: companyIdAll, subjectId: item.bizFinancialSubjectsId}
                })
                this.saveTableDatas = JSON.stringify(companyIds)
                this.api.updateData({coreEnterpriseId: this.form.coreEnterpriseId, financialInstitutionsId: this.form.financialInstitutionsId, bigPeriodsId: $this.form.id, periodsSmall: $this.periodsSmall, periodsLarge: $this.periodsLarge, bigPeriodsName: $this.form.bigPeriodsName, letterFileId: $this.fileId, ExpenseCompany: this.saveTableDatas}).then(res => {
                  if (res.data === false) {
                    Message({
                      message: `修改${$this.title}失败`,
                      type: 'error',
                      duration: 5 * 1000
                    })
                    return
                  } else {
                    Message({
                      message: `修改${$this.title}成功`,
                      type: 'success',
                      duration: 5 * 1000
                    })
                    $this.$emit('onSaved')
                    $this.dialogVisible = false
                  }
                })
              }
            })
          }
          this.fileId = ''
        })
      }
    },
    handleExceed (files, fileList) {
      this.$message.warning(`当前限制选择 1 个文件,本次选择了 ${files.length} 个文件,共选择了 ${files.length + fileList.length} 个文件`)
    },
    loadData () {
    },
    onSave () {
      this.$emit('onSave')
    },
    getExcludeFs () {
      let exfrom = []
      if (this.tableDatas.length > 0) {
        for (var i = 0; i < this.tableDatas.length; i++) {
          exfrom.push(this.tableDatas[i].name)
        }
      }
      return exfrom
    },
    showAdd: async function () {
      this.item = Object.assign({}, {
        bigPeriodsId: this.form.id,
        periodsSmall: this.form.periodsSmall,
        periodsLarge: this.form.periodsLarge,
        coreEnterpriseId: this.form.coreEnterpriseId,
        financialInstitutionsId: this.form.financialInstitutionsId,
        coreEnterpriseName: this.coreEnterpriseName,
        financialInstitutionsName: this.financialInstitutionsName,
        excludeFs: await this.getExcludeFs(),
        editable: '1',
        editModel: 'E'
      })
      this.editModel1 = 'E'
      this.showDetail1 = true
    }
  }
}
</script>

 

posted on 2019-06-26 21:38  小白菜好吃  阅读(271)  评论(0编辑  收藏  举报

导航