<template>
  <zj-tab-page ref="tabPage" :defaultActives="[{ key: 'list', label: $route.meta.title + '-列表', essential: true }]">
    <template slot-scope="{ activeKey, data }">
      <div
        :style="{
          width: '100%',
          height: activeKey == 'list' ? '100%' : '0px',
          overflow: 'hidden'
        }"
      >
        <template-page
          ref="pageRef"
          :get-list="getList"
          :table-attributes="tableAttributes"
          :table-events="tableEvents"
          :options-evens-group="optionsEvensGroup"
          :moreParameters="moreParameters"
          :column-parsing="columnParsing"
          :operationColumnWidth="180"
          :operation="operation()"
        >
        </template-page>
      </div>
      <div
        v-if="activeKey == 'view'"
        :style="{
          width: '100%',
          height: '100%',
          overflow: 'hidden'
        }"
      >
        <template-page
          ref="pageRef2"
          :operationColumnWidth="180"
          :table-attributes="tableAttributes2"
          :table-events="tableEvents2"
          :get-list="getList2"
          :exportList="exportList2"
          :options-evens-group="optionsEvensGroup2"
          :operation="operation2()"
          :moreParameters="moreParameters2"
          expCode="exp2"
        >
        </template-page>
      </div>
    </template>
  </zj-tab-page>
</template>

<script>
import TemplatePage from '@/components/template/template-page-1.vue'
import import_mixin from '@/components/template/import_mixin.js'
import operation_mixin from '@/components/template/operation_mixin.js'
import {
  dailySummaryReduceCountList,
  dailySummaryIncrDecrCostList,
  dailySummaryIncrDecrCostImport,
  dailySummaryIncrDecrCostListExport,
  dailySummaryReduceBatchDo,
  dailySummaryReduceBatchDel,
  dailySummaryReduceCountDelete,
  dailySummaryReduceCountDo
} from '@/api/increaseAndDecreaseExpense'
import { commonTemplateDownload } from '@/api/common.js'
export default {
  components: { TemplatePage },
  mixins: [import_mixin, operation_mixin],
  data() {
    return {
      // 表格属性
      tableAttributes: {
        // 启用勾选列
        selectColumn: true
      },
      // 表格事件
      tableEvents: {
        'selection-change': this.selectionChange
      },
      // 勾选选中行
      recordSelected: [],
      // 表格属性
      tableAttributes2: {
        // 启用勾选列
        selectColumn: true
      },
      // 表格事件
      tableEvents2: {
        'selection-change': this.selectionChange2
      },
      // 勾选选中行
      recordSelected2: [],
      // 表单
      formData: {},
      importBatchNo: ''
    }
  },
  computed: {
    // 更多参数
    moreParameters() {
      return [
        {
          name: '工单类型',
          key: 'doStatus',
          value: '',
          conditions: [
            {
              label: '全部',
              value: ''
            },
            {
              label: '未执行',
              value: '2'
            },
            {
              label: '已执行',
              value: '1'
            }
          ]
        }
      ]
    },
    moreParameters2() {
      return [
        {
          name: '工单类型',
          key: 'doStatus',
          value: '',
          conditions: [
            {
              label: '全部',
              value: ''
            },
            {
              label: '未执行',
              value: '2'
            },
            {
              label: '已执行',
              value: '1'
            }
          ]
        }
      ]
    },
    optionsEvensGroup() {
      return [
        [
          [
            this.optionsEvensAuth('import', ({ moduleName }) => {
              return {
                name: moduleName,
                render: () => {
                  return this.importButton(dailySummaryIncrDecrCostImport, moduleName)
                }
              }
            })
          ]
        ],
        [
          [
            this.optionsEvensAuth('template', {
              click: () => {
                commonTemplateDownload({ name: '增减费用模板(新).xlsx' }, `增减费用模板(新)`)
                  .then(res => {
                    this.$message({
                      message: '下载成功',
                      type: 'success'
                    })
                  })
                  .catch(err => {
                    this.$message.error('下载失败')
                  })
              }
            })
          ]
        ]
      ]
    },
    //
    optionsEvensGroup2() {
      return [
        [
          [
            this.optionsEvensAuth('batchExecute2', {
              click: () => {
                if (this.recordSelected2.length === 0) {
                  this.$message.warning('请勾选')
                  return
                }
                dailySummaryReduceBatchDo({
                  ids: this.recordSelected2.map(item => item.id).join(',')
                }).then(res => {
                  this.$message({ type: 'success', message: '设置成功!' })
                  this.$refs.pageRef2.refreshList()
                })
              }
            })
          ],
          [
            this.optionsEvensAuth('batchDel2', {
              click: () => {
                if (this.recordSelected2.length === 0) {
                  this.$message.warning('请勾选')
                  return
                }
                dailySummaryReduceBatchDel({
                  ids: this.recordSelected2.map(item => item.id).join(',')
                }).then(res => {
                  this.$message({ type: 'success', message: '删除成功!' })
                  this.$refs.pageRef2.refreshList()
                })
              }
            })
          ]
        ]
      ]
    },
    formItems() {
      return []
    }
  },
  methods: {
    // 列表请求函数
    getList(p, cb) {
      var pam = JSON.parse(JSON.stringify(p))
      try {
        if (pam.doStatus) {
          pam.params.push({ param: 'a.do_status', compare: '=', value: pam.doStatus })
        }
        cb && cb(pam)
        return dailySummaryReduceCountList(pam)
      } catch (err) {}
    },
    getList2(p, cb) {
      var pam = JSON.parse(JSON.stringify(p))
      try {
        if (pam.doStatus) {
          pam.params.push({ param: 'a.do_status', compare: '=', value: pam.doStatus })
        }
        pam.params.push({ param: 'a.import_batch_no', compare: '=', value: this.importBatchNo })
        cb && cb(pam)
        return dailySummaryIncrDecrCostList(pam)
      } catch (err) {}
    },
    // 列表导出函数
    exportList2: dailySummaryIncrDecrCostListExport,
    // 表格列解析渲染数据更改
    columnParsing(item, defaultData) {
      return defaultData
    },
    // 监听勾选变化
    selectionChange(data) {
      this.recordSelected = data
    },
    selectionChange2(data) {
      this.recordSelected2 = data
    },
    operation() {
      return this.operationBtn({
        view: {
          click: ({ row, index, column }) => {
            this.importBatchNo = row.importBatchNo
            this.$refs.tabPage.addTab({
              // 对应显示的模块
              activeKey: 'view',
              // 唯一标识
              key: 'view',
              // 页签名称
              label: `明细-批次号：${this.importBatchNo}`,
              // 打开时事件
              triggerEvent: () => {},
              // 关闭时事件
              closeEvent: () => {}
            })
          }
        },
        execute: {
          conditions: ({ row, index, column }) => {
            return row.doStatus == '2'
          },
          prompt: '确定执行吗？',
          click: ({ row, index, column }) => {
            dailySummaryReduceCountDo({ importBatchNo: row.importBatchNo }).then(res => {
              this.$message({ type: 'success', message: '执行成功!' })
              this.$refs.pageRef.refreshList()
            })
          }
        },
        coverImport: {
          import: true,
          conditions: ({ row, index, column }) => {
            return row.doStatus == '2'
          },
          click: ({ row, index, column, file }) => {
            var formdata = new FormData()
            formdata.append('file', file)
            formdata.append('importBatchNo', row.importBatchNo)
            dailySummaryIncrDecrCostImport({ formdata })
              .then(res => {
                this.$refs.pageRef.refreshList()
                this.$message({
                  type: 'success',
                  message: '导入成功!'
                })
              })
              .catch(err => {
                this.$message({
                  type: 'error',
                  message: err.message || '导入失败'
                })
              })
          }
        },
        del: {
          prompt: '确定删除吗？',
          conditions: ({ row, index, column }) => {
            return row.doStatus == '2'
          },
          click: ({ row, index, column }) => {
            dailySummaryReduceCountDelete({ importBatchNo: row.importBatchNo }).then(res => {
              this.$message({ type: 'success', message: '删除成功!' })
              this.$refs.pageRef.refreshList()
            })
          }
        }
      })
    },
    operation2() {
      return this.operationBtn({
        execute2: {
          conditions: ({ row, index, column }) => {
            return row.doStatus == '2'
          },
          prompt: '确定执行吗？',
          click: ({ row, index, column }) => {
            dailySummaryReduceBatchDo({ ids: row.id }).then(res => {
              this.$message({ type: 'success', message: '设置成功!' })
              this.$refs.pageRef2.refreshList()
            })
          }
        },
        del2: {
          conditions: ({ row, index, column }) => {
            return row.doStatus == '2'
          },
          prompt: '确定删除吗？',
          click: ({ row, index, column }) => {
            dailySummaryReduceBatchDel({ ids: row.id }).then(res => {
              this.$message({ type: 'success', message: '删除成功!' })
              this.$refs.pageRef2.refreshList()
            })
          }
        }
      })
    }
  }
}
</script>

<style lang="scss" scoped></style>
