<style lang="less">
@import '~@assets/less/common.less';
</style>
<template>
  <div class="search">
    <a-card>
      <!-- 搜索重置 -->
      <div class="table-page-search-wrapper">
        <a-form layout="inline" @keyup.enter.native="handleSearch">
          <a-row :gutter="24">
            <a-col :md="6" :sm="8">
              <a-form-item label="任务名称" prop="name">
                <a-input type="text" v-model="searchForm.name" placeholder="请输入" clearable />
              </a-form-item>
            </a-col>
            <a-col :md="6" :sm="8">
              <a-form-item label="所属流程" prop="defname">
                <a-input type="text" v-model="searchForm.defname" placeholder="请输入" clearable />
              </a-form-item>
            </a-col>
            <span style="float: left;overflow: hidden;" class="table-page-search-submitButtons">
              <a-col :md="6" :sm="12">
                <a-button @click="handleSearch" type="primary" icon="search">搜索</a-button>
                <a-button @click="handleReset" style="margin-left: 10px;">重置</a-button>
              </a-col>
            </span>
          </a-row>
        </a-form>
      </div>

      <!-- 表 -->
      <a-row>
        <!--:scroll="scroll+150"  :scroll="scroll" -->
        <a-table
          bordered
          :loading="loading"
          rowKey="id"
          :dataSource="data"
          :pagination="ipagination"
          @change="handleTableChange"
          ref="table"
        >
          <a-table-column title="#" :width="50" align="center">
            <template slot-scope="t, r, i">
              <span> {{ i + 1 }} </span>
            </template>
          </a-table-column>
          <a-table-column title="任务名称" dataIndex="name" :width="100" align="center">
            <template slot-scope="t, r, i">
              <span> {{ t }} </span>
            </template>
          </a-table-column>
          <a-table-column title="所属流程" dataIndex="processName" :width="100" align="center">
            <template slot-scope="t, r, i">
              <span> {{ t }} </span>
            </template>
          </a-table-column>
          <!-- <a-table-column title="业务信息" dataIndex="description" :width="100" align="center">
            <template slot-scope="t, r, i">
              <span> {{ t }} </span>
            </template>
          </a-table-column> -->
          <a-table-column title="委托代办人" dataIndex="owner" :width="100" align="center">
            <template slot-scope="t, r, i">
              <span> {{ t }} </span>
            </template>
          </a-table-column>
          <a-table-column title="流程发起人" dataIndex="applyer" :width="100" align="center">
            <template slot-scope="t, r, i">
              <span> {{ t }} </span>
            </template>
          </a-table-column>
          <!-- <a-table-column
            title="优先级"
            dataIndex="priority"
            :width="80"
            align="center"
            key="priority"
            :sorter="(a, b) => a.priority - b.priority"
          >
            <template slot-scope="t">
              <span v-if="t == 0" style="color: green;"> 普通 </span>
              <span v-else-if="t == 1" style="color: orange;"> 重要 </span>
              <span v-else-if="t == 2" style="color: red;"> 紧急 </span>
              <span v-else style="color: #999;"> 无 </span>
            </template>
          </a-table-column> -->

          <!-- 审批操作 -->
          <a-table-column title="结果" dataIndex="deleteReason" :width="100" align="center">
            <template slot-scope="t, r, i">
              <template v-if="r.deleteReason == '审批通过'">
                <!-- <a-tag color="#87d068">{{ t }}</a-tag> -->
                <!-- <a-tag color="#87d068">通过</a-tag> -->
                <a style="color: #87d068;">已通过</a>
              </template>
              <template v-else>
                <!-- <a-tag color="#b7b7a4">{{ t }}</a-tag> -->
                <a style="color: red;">已驳回</a>

                <!-- <a-tag color="#b7b7a4">驳回</a-tag> -->
              </template>
            </template>
          </a-table-column>
          <a-table-column title="审批意见" dataIndex="comment" :width="100" align="center">
            <template slot-scope="t">
              <j-ellipsis :value="t" :length="6" />
            </template>
          </a-table-column>
          <!-- <a-table-column
            title="耗时"
            dataIndex="duration"
            :width="60"
            align="center"
            key="duration"
            :sorter="(a, b) => a.duration - b.duration"
          >
            <template slot-scope="t">
              <span> {{ millsToTime(t) }} </span>
            </template>
          </a-table-column> -->
          <a-table-column title="创建时间" dataIndex="createTime" :width="130" align="center">
            <template slot-scope="t">
              <span> {{ t }} </span>
            </template>
          </a-table-column>
          <a-table-column title="操作" dataIndex="action" align="center" :width="150">
            <template slot-scope="t, r, i">
              <a href="javascript:void(0);" @click="detail(r)">详情</a>
              <a-divider type="vertical" />
              <a href="javascript:void(0);" @click="history(r)" style="color:gray">审批历史</a>
              <a-divider type="vertical" />
              <!-- <a-popconfirm title="确定删除吗?" @confirm="() => remove(r)">
                <a style="color: red;">删除</a>
              </a-popconfirm> -->
            </template>
          </a-table-column>
        </a-table>
      </a-row>
    </a-card>

    <!--审批历史-->
    <a-modal title="审批历史" v-model="modalLsVisible" :mask-closable="false" :width="'80%'" :footer="null">
      <div v-if="modalLsVisible">
        <component :is="historicDetail" :procInstId="procInstId"></component>
      </div>
    </a-modal>
    <!--流程表单-->
    <a-modal :title="lcModa.title" v-model="lcModa.visible" :footer="null" :maskClosable="false" width="80%">
      <component
        :disabled="lcModa.disabled"
        v-if="lcModa.visible"
        :is="lcModa.formComponent"
        :processData="lcModa.processData"
        :isNew="lcModa.isNew"
        @close=";(lcModa.visible = false), (lcModa.disabled = false)"
      ></component>
    </a-modal>
    
    <!-- 项目管理整合 打开合同页面 -->
  <outerForm-check ref="outerFormCheck" @refreshData="handleSearch" ></outerForm-check>
  </div>
</template>

<script>
import { JeecgListMixin } from '@/mixins/JeecgListMixin'
import { activitiMixin } from '@/views/activiti/mixins/activitiMixin'
import {getEditorJumpUrl,getProjctManageUrl}from '../../../url.config'
import outerFormCheck from '../../share/modal/OuterFormCheck'
import { getAction } from '@/api/manage'
export default {
  name: 'done-manage',
  mixins: [activitiMixin, JeecgListMixin],
  components:{
    outerFormCheck
  },
  data() {
    return {
      openSearch: true,
      openTip: true,
      loading: true, // 表单加载状态
      selectCount: 0, // 多选计数
      selectList: [], // 多选数据
      searchForm: {
        // 搜索框对应data对象
        name: '',
        pageNumber: 1, // 当前页数
        pageSize: 10, // 页面大小
        sort: 'createTime', // 默认排序字段
        order: 'desc' // 默认排序方式
      },
      modalType: 0, // 添加或编辑标识
      modalVisible: false, // 添加或编辑显示
      modalTitle: '', // 添加或编辑标题
      form: {
        // 添加或编辑表单对象初始化数据
        reason: ''
      },
      formValidate: {
        // 表单验证规则
      },
      submitLoading: false, // 添加或编辑提交状态
      data: [], // 表数据
      total: 0, // 表数据总数
      deleteId: '',
      url: {
        doneList: '/actTask/doneList',
        deleteHistoricTask: '/actTask/deleteHistoric/',
        outformViewUrl:"/actBusiness/external/getViewUrl",
      },
      modalLsVisible: false,
      procInstId: '',
      lcModa: {
        title: '',
        disabled: false,
        visible: false,
        formComponent: null,
        isNew: false
      }
    }
  },
  mounted() {
    this.init()
  },
  methods: {
    loadData() {},
    init() {
      this.getDataList()
    },
    getDataList() {
      this.loading = true
      this.postFormAction(this.url.doneList, this.searchForm).then(res => {
        this.loading = false
        if (res.success) {
          this.data = res.result || []
        } else {
          this.$message.error(res.message)
        }
      })
    },
    handleSearch() {
      this.searchForm.pageNumber = 1
      this.searchForm.pageSize = 10
      this.getDataList()
    },
    handleReset() {
      this.searchForm = {}
      this.searchForm.pageNumber = 1
      this.searchForm.pageSize = 10
      // 重新加载数据
      this.getDataList()
    },
    handelCancel() {
      this.modalVisible = false
    },
    detail(r) {
      if (!r.routeName) {
        this.$message.warning('该流程信息未配置表单，请联系开发人员！')
        return
      }
      if (r.routeName.indexOf('外部表单') != -1||r.tableName.indexOf('外部表单') != -1) {
        //外部项目开发的表单
        //其他项目的表单流程
        //var id = r.tableId //项目管理合同数据id
        //打开MyIframe弹框
        //this.$refs.MyIframe.editorVisible = true
        //并传入地址参数
        //this.$refs.MyIframe.editorJumpUrlMy = getProjctManageUrl()+'/contract-process-view?id=' + id
        this.showOuterFormViewDlg(r.tableId, '查看业务流程：' + r.processName, r);
      } else if (r.routeName.indexOf('自定义') != -1) {
        //自定义的表单流程
        this.lcModa.disabled = true
        this.lcModa.title = '查看流程业务信息：' + r.processName
        let com = { component: () => import(`@/views/activiti/form/demoForm2`) }
        this.lcModa.formComponent = com.component
        this.lcModa.isNew = false
        this.lcModa.processData = r
        this.lcModa.visible = true
      } else {
        //固定的表单
        this.lcModa.disabled = true
        this.lcModa.title = '查看流程业务信息：' + r.processName
        this.lcModa.formComponent = this.getFormComponent(r.routeName).component
        this.lcModa.processData = r
        this.lcModa.isNew = false
        this.lcModa.visible = true
      }
    },
    history(v) {
      if (!v.procInstId) {
        this.$message.error('流程实例ID不存在')
        return
      }
      this.procInstId = v.procInstId
      this.modalLsVisible = true
    },
    remove(v) {
      this.postFormAction(this.url.deleteHistoricTask + v.id).then(res => {
        if (res.success) {
          this.$message.success('操作成功')
          this.getDataList()
        } else {
          this.$message.error(res.message)
        }
      })
    },
    handleTableChange(pagination, filters, sorter) {
      //分页、排序、筛选变化时触发
      //TODO 筛选
      if (Object.keys(sorter).length > 0) {
        this.isorter.column = sorter.field
        this.isorter.order = 'ascend' == sorter.order ? 'asc' : 'desc'
      }
      this.ipagination = pagination
      // this.loadData();
    },
    showOuterFormViewDlg(tableId, title, processData){
      getAction(this.url.outformViewUrl,{tableId:tableId}).then(res=>{
          if (res.success){
            var url = res.result.url;
            var param = res.result.param;
            url = url+"?"+this.jsonToUrlParam(param);

            this.$refs.outerFormCheck.openDialog(url, title, processData);
          }else{
              this.$message.error(res.message);
          }        
      });
    },
    jsonToUrlParam(query){
      var tmpArr = [];
      for (var i in query){
        var key = encodeURIComponent(i);
        var value = encodeURIComponent(query[i]);
        tmpArr.push(key+"="+value);
      }
      return tmpArr.join("&");
    },
  },
  watch: {}
}
</script>
