<template>
  <anji-crud ref="listPage" :option="crudOption">
    <template v-slot:pageSection>

    </template>
  </anji-crud>
</template>
<script>
import {
  reportShareDeleteBatch,
  reportShareDetail,
  reportShareList,
  reportShareDelay, reportShareAdd
} from "@/api/reportShare";
export default {
  name: "Report",
  components: {
    anjiCrud: require("@/components/AnjiPlus/anji-crud/anji-crud").default,
  },
  data() {
    return {
      crudOption: {
        // 使用菜单做为页面标题
        title: '报表分享',
        // 详情页中输入框左边文字宽度
        labelWidth: '120px',
        // 查询表单条件
        queryFormFields: [
          {
            inputType: "input",
            label: "分享编码",
            field: "shareCode"
          },
          {
            inputType: "input",
            label: "报表编码",
            field: "reportCode"
          },
          {
            inputType: "anji-select",
            anjiSelectOption: {
              dictCode: "SHARE_VAILD"
            },
            label: "分享类型",
            field: "shareValidType"
          },
        ],
        // 表头按钮
        tableButtons: [
          {
            label: "删除",
            type: "danger",
            permission: "reportShareManage:delete",
            icon: "el-icon-delete",
            plain: false,
            click: () => {
              return this.$refs.listPage.handleDeleteBatch();
            }
          }
        ],
        // 表格行按钮
        rowButtons: [
          {
            label: "复制url",
            click: this.copyUrlPath
          },
          {
            label: "删除",
            permission: "reportShareManage:delete",
            click: row => {
              return this.$refs.listPage.handleDeleteBatch(row);
            }
          },
          {
            label: "延期1天",
            permission: "reportShareManage:shareDelay",
            click: this.shareDelay_1
          },
          {
            label: "延期1周",
            permission: "reportShareManage:shareDelay",
            click: this.shareDelay_7
          },
          {
            label: "延期1月",
            permission: "reportShareManage:shareDelay",
            click: this.shareDelay_30
          },
        ],
        // 操作按钮
        buttons: {
          query: {
            api: reportShareList,
            permission: 'ReportShare:query',
            sort: "create_time",
            order: "DESC"
          },
          queryByPrimarykey: {
            api: reportShareDetail,
            permission: 'ReportShare:detail'
          },
          delete: {
            api: reportShareDeleteBatch,
            permission: 'ReportShare:delete'
          },
          rowButtonsWidth: 150 // row自定义按钮表格宽度
        },
        // 表格列
        columns: [
          {
            label: '',
            field: 'id',
            primaryKey: true, // 根据主键查询详情或者根据主键删除时, 主键的
            tableHide: true, // 表格中不显示
            editHide: true, // 编辑弹框中不显示
          },
          {
            label: '报表编码',//报表编码
            placeholder: '',
            field: 'reportCode',
            editField: 'reportCode',
            inputType: 'input',
            rules: [
              { min: 1, max: 50, message: '不超过50个字符', trigger: 'blur' }
            ],
            disabled: false,
          },
          {
            label: '分享编码',//分享编码，系统生成，默认UUID
            placeholder: '',
            field: 'shareCode',
            editField: 'shareCode',
            inputType: 'input',
            rules: [
              { min: 1, max: 50, message: '不超过50个字符', trigger: 'blur' }
            ],
            disabled: false,
          },
          {
            label: '分享类型',//分享有效期类型，DIC_NAME=SHARE_VAILD
            placeholder: '',
            field: 'shareValidType',
            fieldTableRowRenderer: row => {
              return this.getDictLabelByCode("SHARE_VAILD", row["shareValidType"]);
            },
            editField: 'shareValidType',
            inputType: 'input',
            rules: [
            ],
            disabled: false,
          },
          {
            label: '分享过期时间',//分享有效期
            placeholder: '',
            field: 'shareValidTime',
            editField: 'shareValidTime',
            inputType: 'input',
            rules: [
            ],
            disabled: false,
          },
          {
            label: '分享token',//分享token
            placeholder: '',
            field: 'shareToken',
            editField: 'shareToken',
            tableHide: true,
            inputType: 'input',
            rules: [
              { min: 1, max: 255, message: '不超过255个字符', trigger: 'blur' }
            ],
            disabled: false,
          },
          {
            label: '分享url',//分享url
            placeholder: '',
            field: 'shareUrl',
            editField: 'shareUrl',
            inputType: 'input',
            rules: [
              { min: 1, max: 100, message: '不超过100个字符', trigger: 'blur' }
            ],
            disabled: false,
          },
          {
            label: '分享码',
            placeholder: '',
            field: 'sharePassword',
            editField: 'sharePassword',
            inputType: 'input',
            rules: [
            ],
            disabled: false,
          },
        ],
        // 弹出框表单对应的值有改动时
        // formData 整个表单，通过编辑打开弹出框，根据主键查询数据时，fieldName, fieldVal, fieldExtend为空
        // fieldName 触发修改的input name
        // fieldVal input最新值
        // fieldExtend 对于select型的扩展值
        formChange: (formData, fieldName, fieldVal, fieldExtend) => {

        }
      },

      // 复制
      copyVisible: false,
      rowData: {}
    };
  },

  created() {},
  methods: {
    handleOpenDialog1() {
      alert("自定义按钮1点击事件");
    },

    shareDelay_1(val) {
      this.shareDelay(val.id, 1)
    },
    shareDelay_7(val) {
      this.shareDelay(val.id, 7)
    },
    shareDelay_30(val) {
      this.shareDelay(val.id, 30)
    },

    async shareDelay(shareId, shareValidType) {
      const param = {}
      param['id'] = shareId
      param['shareValidType'] = shareValidType
      const {code} = await reportShareDelay(param);
      if (code != "200") return;
      this.$message({
        message: "延期成功！",
        type: "success"
      });
      this.$refs.listPage.handleQueryForm("query");
    },

    copyUrlPath(val) {
      this.copyToClip(val.shareUrl);
      this.$message({
        message: "已将url路径复制至剪切板！",
        type: "success"
      });
    },

    copyToClip(content, message) {
      let aux = document.createElement("input");
      aux.setAttribute("value", content);
      document.body.appendChild(aux);
      aux.select();
      document.execCommand("copy");
      document.body.removeChild(aux);
    }
  }
};
</script>
