<template>
  <div class="L-public-main" id="L-size-main">
    <div class="L-main">
      <header id="L-header">
        <el-form :inline="true" :model="formInline" size="small" class="demo-form-inline" ref="queryFrom">
          <el-col :span="22">
            <el-form-item label="政策文件:" prop="name">
              <el-input v-model.trim="formInline.name" placeholder="请输入内容"></el-input>
            </el-form-item>
            <el-form-item label="发文单位:" prop="enterUnit">
              <el-input v-model.trim="formInline.enterUnit" placeholder="请输入内容"></el-input>
            </el-form-item>
            <el-form-item label="政策等级:" prop="policyLevel">
              <el-select class="ignoreElement" v-model="formInline.policyLevel" placeholder="请选择">
                <el-option
                  v-for="dict in dict.type.policy_grade"
                  :key="dict.value"
                  :label="dict.label"
                  :value="dict.value">
                </el-option>
                <!-- <el-option
                  label="省级"
                  value="0">
                </el-option>
                <el-option
                  label="市级"
                  value="1">
                </el-option> -->
              </el-select>
            </el-form-item>
            <!-- <el-form-item label="发文时间:" prop="projectYear">
              <el-date-picker
                class="ignoreElement"
                v-model="formInline.projectYear"
                format="yyyy-MM-dd"
                value-format="yyyy-MM-dd"
                type="daterange"
                placeholder="选择发文时间">
              </el-date-picker>
            </el-form-item> -->
            <el-form-item>
              <el-button size="mini" @click="resetQuery('queryFrom')">重置</el-button>
              <el-button size="mini" type="primary" @click="handleQuery('queryFrom')">查询</el-button>
            </el-form-item>
          </el-col>
          <el-col :span="2">
            <!-- <el-button type="primary" class="import-btn" icon="icon iconfont icon-jc-shangchuan" size="mini" @click="importBtn">新增发文</el-button> -->
            <el-button v-if="userType !== '01'" type="primary" class="import-btn" icon="el-icon-plus" size="mini" @click="importBtn">新增发文</el-button>
          </el-col>
        </el-form>
      </header>
      <section>
        <el-table v-loading="loading" :data="tableData" :row-class-name="tableRowClassName" :height="tabHeader" :max-height="tabHeader">
          <el-table-column label="政策文件名称" width="500px" prop="name" />
          <!-- <el-table-column label="关联项目" width="450px" prop="joinProject">
            <template slot-scope="scope">
              <div class="project-name" @click="goToProject(scope.row.joinProject)">
                <dict-tag :options="dict.type.jjh_project_type" :value="scope.row.joinProject"/>
              </div>
            </template>
          </el-table-column> -->
          <el-table-column label="发文单位" prop="enterUnit" />
          <el-table-column label="政策等级" prop="policyLevel">
            <template slot-scope="scope">
              <dict-tag :options="dict.type.policy_grade" :value="scope.row.policyLevel"/>
            </template>
          </el-table-column>
          <el-table-column label="发文时间" prop="enterTime" />
          <el-table-column label="上传用户" prop="createBy" />
          <el-table-column label="上传时间" prop="createTime" width="180px" />
          <el-table-column label="操作" prop="userId" class-name="table-operation" width="180px">
            <template slot-scope="scope">
              <span class="look-info" @click="goInfo(scope.row)">查看详情</span>
              <span class="edit-info" @click="editInfo(scope.row)" v-if="userType !== '01'">编辑</span>
              <span class="del-info" @click="delInfo(scope.row)" v-if="userType !== '01'">删除</span>
            </template>
          </el-table-column>
        </el-table>
        <my-pagination 
          id="L-pagination"
          :total="total"
          :page="pagination.current"
          :limit="pagination.size"
          @pagination="getPagination"
          :current-page.sync="pagination.current" 
        ></my-pagination>
      </section>
    </div>
    <my-dialog :title="title" @close="importClose" @confirm="confirm" ref="importProject" closeText="关闭" :myclass="true">
      <el-form :model="addFrom" size="small" ref="importFrom" label-width="120px" :rules="rules" class="newArticle">
        <el-row :gutter="20">
          <el-col :span="12">
            <el-form-item label="政策文件名称:" class="importFormItem" prop="name">
              <el-input v-model.trim="addFrom.name" placeholder="请输入内容"></el-input>
            </el-form-item>
          </el-col>
          <el-col :span="12">
            <el-form-item label="政策等级:" class="importFormItem" prop="policyLevel">
              <!-- <el-input v-model.trim="addFrom.policyLevel" placeholder="请输入内容"></el-input> -->
              <el-select class="ignoreElement" v-model="addFrom.policyLevel" placeholder="请选择">
                <el-option
                  v-for="dict in dict.type.policy_grade"
                  :key="dict.value"
                  :label="dict.label"
                  :value="dict.value">
                </el-option>
              </el-select>
            </el-form-item>
          </el-col>
        </el-row>
        <el-row :gutter="20">
          <el-col :span="12">
            <el-form-item label="发文单位:" class="importFormItem" prop="enterUnit">
              <el-input v-model.trim="addFrom.enterUnit" placeholder="请输入内容"></el-input>
            </el-form-item>
          </el-col>
          <el-col :span="12">
            <el-form-item label="发文时间:" class="importFormItem" prop="enterTime">
              <el-date-picker
                v-model="addFrom.enterTime"
                format="yyyy-MM-dd"
                value-format="yyyy-MM-dd"
                type="date"
                placeholder="选择发文时间">
              </el-date-picker>
            </el-form-item>
          </el-col>
        </el-row>
        <!-- <el-row :gutter="20">
          <el-col :span="12">
            <el-form-item label="关联项目:" class="importFormItem" prop="joinProject">
              <el-select v-model="addFrom.joinProject" placeholder="请选择">
                <el-option
                  v-for="dict in dict.type.jjh_project_type"
                  :key="dict.value"
                  :label="dict.label"
                  :value="dict.value">
                </el-option>
              </el-select>
            </el-form-item>
          </el-col>
        </el-row> -->
        <el-row>
          <el-col :span="24">
            <el-form-item label="发文内容:" class="importFormItem" prop="enterContent">
              <myEditor v-if="openEditor" :height="200" v-model="addFrom.enterContent"></myEditor>
            </el-form-item>
          </el-col>
        </el-row>
      </el-form>
    </my-dialog>
    <el-dialog
      title="查看详情" 
      :visible.sync="infoVisible"
      :close-on-click-modal="false"
      :close-on-press-escape="false"
      @close="infoClose"
      custom-class="info-dialog"
      append-to-body
    >
      <div class="info-content">
        <div class="info-title">{{ addFrom.name }}</div>
        <div class="info-content-top">
          <div>发布人:{{ addFrom.createBy }}</div>
          <div>发布时间:{{ addFrom.enterTime }}</div>
          <div>发文单位:{{ addFrom.enterUnit }}</div>
          <div style="display: flex;align-items: center;">政策等级:<dict-tag :options="dict.type.policy_grade" :value="addFrom.policyLevel"/></div>
        </div>
        <div v-html="addFrom.enterContent" class="info-content-content"></div>
      </div>
      <div slot="footer" class="dialog-footer">
        <el-form size="small">
          <el-form-item class="dialog-from-item">
            <el-button size="mini" @click="infoClose">关闭</el-button>
          </el-form-item>
        </el-form>
      </div>
    </el-dialog>
  </div>
</template>
<script>
import myPagination from "@/views/components/Pagination/index.vue"
import myDialog from "@/views/components/myDialog/index.vue"
import myEditor from "@/views/components/myEditor/index.vue"
import { getJPolicyFile, jPolicyFileNew, jPolicyFileChange, jPolicyFileId, jPolicyFileDel } from "@/api/jin_ji_hu/policyDocument"
export default {
  components:{myPagination, myDialog, myEditor},
  dicts: ['jjh_project_type', 'policy_grade'],
  data() {
    var now = new Date();
    return {
      userType: this.$store.state.user.userType,
      deptId: this.$store.state.user.deptId,
      now:now,
      total:0,
      pagination: {
        current:1,
        size:10,
      },
      loading:false,
      formInline: {
        name: '',
        enterUnit:"",
        policyLevel:"",
      },
      tableData:[],
      tabHeader: undefined,
      addFrom: {
        name:"",
        joinProject:"",
        enterUnit:"",
        policyLevel:"",
        enterTime: now,
      },
      rules:{
        name:[
          { required: true, message: '请填写政策文件名称', trigger: 'blur' }
        ],
        // joinProject:[
        //   { required: true, message: '请填写政策等级', trigger: 'blur' }
        // ],
        enterUnit:[
          { required: true, message: '请填写发文单位', trigger: 'blur' }
        ],
        policyLevel:[
          { required: true, message: '请选择政策等级', trigger: 'change' }
        ],
        enterTime:[
          { required: true, message: '请选择发文时间', trigger: 'change' }
        ],
      },
      title:"新增发文",
      infoVisible:false,
      openEditor:false,
    }
  },
  mounted() {
    this.cancalDebounce();
    window.addEventListener('resize', this.cancalDebounce);
    
    this.getList();
  },
  destroyed() {
    window.removeEventListener('resize', this.cancalDebounce);
  },
  methods:{
    // 列表获取
    getList(){
      this.loading = true;
      getJPolicyFile(this.pagination).then(res=>{
        this.loading = false;
        this.total = res.data.total;
        this.tableData = res.data.records;
      })
    },
    // 获取页码
    getPagination(pages) {
      this.pagination.current = pages.page;
      this.pagination.size = pages.limit;
      this.getList();
    },
    // 查询
    handleQuery() {
      this.pagination = {
        current: 1,
        size: 10
      }
      this.pagination = { ...this.pagination,...this.formInline };
      // console.log(this.pagination);
      // console.log(this.formInline);
      this.getList();
    },
    // 重置
    resetQuery(formName){
      this.$refs[formName].resetFields();
      this.pagination = {
        current: 1,
        size: 10
      }
      this.getList();
    },
    // 修改table背景色
    tableRowClassName({row, rowIndex}){
      if (rowIndex % 2 !== 0) {
        return 'evenNumber-row';
      }
      return '';
    },
    // 新增按钮
    importBtn(){
      this.title = "新增发文";
      this.$refs.importProject.open();
      this.openEditor = true;
    },
    // 关闭事件触发
    importClose(){
      this.$nextTick(()=>{
        this.openEditor = false;
        this.$refs.importFrom.resetFields();
        this.$refs.importProject.close();
        this.addFrom = {
          name:"",
          joinProject:"",
          enterUnit:"",
          policyLevel:"",
          enterTime:this.now,
        }
      })
    },
    // 关闭详情
    infoClose(){
      this.addFrom = {}
      this.infoVisible = false;
    },
    // 查看详情
    goInfo(row){
      jPolicyFileId(row.id).then((res=>{
        if(res.code == 200) {
          this.addFrom = res.data;
          this.infoVisible = true;
        }
      }))
    },
    // 编辑
    editInfo(row){
      this.title = "修改发文"
      jPolicyFileId(row.id).then((res)=>{
        if(res.code == 200) {
          this.openEditor = true;
          this.addFrom = res.data;
          this.addFrom.joinProject = this.addFrom.joinProject + ''
          this.$refs.importProject.open();
        }
      })
    },
    // 新增发文
    confirm(){
      this.$refs.importFrom.validate((valid) => {
        if (valid) {
          // console.log(this.addFrom);
          let id = this.addFrom.id ? this.addFrom.id : null;
          if(id) {
            jPolicyFileChange(this.addFrom).then((res)=>{
              if(res.code == 200) {
                this.getList();
                this.importClose();
                this.$message({
                  type: "success",
                  message: "修改成功!",
                });
              }
            })
          } else {
            jPolicyFileNew(this.addFrom).then((res)=>{
              if(res.code == 200) {
                this.getList();
                this.importClose();
                this.$message({
                  type: "success",
                  message: "新增成功!",
                });
              }
            })
          }
        } else {
          return false;
        }
      });
    },
    // 删除
    delInfo(row){
      this.$confirm("此操作将永久删除该数据, 是否继续?", "提示", {
        confirmButtonText: "确定",
        cancelButtonText: "取消",
        type: "warning",
      })
        .then(() => {
          jPolicyFileDel(row.id).then((res) => {
            this.getList();
            this.$message({
              type: "success",
              message: "删除成功!",
            });
          });
        })
        .catch(() => {
          this.$message({
            type: "info",
            message: "已取消删除",
          });
        });
    },
    // 去往项目库搜索
    goToProject(id){
      // this.$router.push({
      //   path: '/project/index',
      //   params: { projectId: id }
      // })
      this.$router.push({
        name: 'ProjectList',
        params: { projectId: id }
      })
    },
    // 屏幕尺寸变化
    cancalDebounce(){
      const element = document.getElementById('L-size-main'); // 通过元素的 ID 获取元素
      const header = document.getElementById('L-header'); // 通过元素的 ID 获取元素
      const pagination = document.getElementById('L-pagination'); // 通过元素的 ID 获取元素
      const elementHeight = element.offsetHeight;
      const headerHeight = header.offsetHeight;
      const paginationtHeight = pagination.offsetHeight;
      this.tabHeader = elementHeight - headerHeight - paginationtHeight - 140;
    }
  },
}
</script>
<style lang="scss" scoped>
::v-deep .info-dialog {
  margin-top: 15vh !important;
}
</style>