<template>
  <div class="processApproval">
    <div class="left-card">
      <div class="top">
        <div class="commons-title title">流程标题</div>
        <!-- <SendSubscribe
          ref="makeDom"
          v-if="flowForm.flowKey == 'subscribe_flow'"
        ></SendSubscribe>
        <SendPurchase
          ref="makeDom"
          v-else-if="flowForm.flowKey == 'purchase_flow'"
          :queryData="queryData.data"
        ></SendPurchase> -->
      </div>
      <div class="bottom">
        <div class="commons-title title">处理意见</div>
        <el-form :model="flowForm" :rules="flowRules" ref="flowFormDom">
          <el-form-item prop="remark" label-width="0px" label="">
            <el-input
              type="textarea"
              placeholder="请输入"
              v-model="flowForm.remark"
            >
            </el-input>
          </el-form-item>
          <el-form-item>
            <el-button @click="handleSubmit"> ceshi </el-button>
          </el-form-item>
        </el-form>
      </div>
    </div>
    <div class="right-card">
      <el-tabs v-model="activeName" class="demo-tabs" @tab-click="handleClick">
        <el-tab-pane label="审批记录" name="first">
          <ul class="flow-chart">
            <li v-for="item in recordList" :key="item.id">
              <div class="left-icon">
                <i class="iconfont icon-iconm_daick"></i>
                <i class="iconfont icon-iconm_daohzj right-btm-status"></i>
              </div>
              <div class="right-conetnt">
                <div class="name">
                  发起人:{{ item.processedUser }}
                  <!-- <span>2022-11-11 00:00:00</span> -->
                </div>
                <div class="remark">
                  <div class="label">{{ item.nodeName }}</div>
                  {{ item.remark }}
                </div>
              </div>
              <div class="line"></div>
            </li>
          </ul>
        </el-tab-pane>
        <el-tab-pane label="决策辅助" name="second">决策辅助</el-tab-pane>
      </el-tabs>
    </div>
    <el-dialog title="下一处理人" width="400" v-model="dialogVisible">
      <el-form :model="flowForm">
        <el-form-item prop="remark" label="处理人">
          <el-select
            v-model="flowForm.handleUserId"
            placeholder="请选择"
            filterable
            style="width: 100%"
          >
            <el-option
              v-for="item in nextHandleUser"
              :label="item.name"
              :value="item.id"
            >
            </el-option>
          </el-select>
        </el-form-item>
        <el-form-item>
          <div style="width: 100%; text-align: center">
            <el-button type="primary" @click="handleSelectUser">提交 </el-button>
          </div>
        </el-form-item>
      </el-form>
    </el-dialog>
  </div>
</template>



<script setup>
import { useRouter, useRoute } from "vue-router";
// //申购发起
// import SendSubscribe from "@/components/WDLY/process/SendSubscribe";
// //采购发起
// import SendPurchase from "@/components/WDLY/process/SendPurchase";
//请款发起
import SendFunds from "@/components/WDLY/process/SendFunds";
//退货
import ReturnGood from "@/components/WDLY/process/ReturnGood";
// 消息提示
import { ElMessage, ElMessageBox } from "element-plus";
const router = useRouter();
const route = useRoute();
// tab切换逻辑
const activeName = ref("first");
const handleClick = (tab, event) => {
};
// 意见表单
const flowForm = reactive({
  flowKey: "",
  handleUserId: "",
  remark: "",
  data: {},
});
const flowRules = reactive({
  remark: [{ required: true, message: "请输入处理意见", trigger: "blur" }],
});
//组件实例
const { proxy } = getCurrentInstance();
const makeDom = ref(null);
const flowFormDom = ref(null);
let dialogVisible = ref(false);
const nextHandleUser = ref([]);
const handleSelectUser = () => {
  if (!flowForm.handleUserId) {
    return ElMessage({
      message: "请选择下一节点处理人!",
      type: "info",
    });
  }
  handleSubmit();
};

const handleResult = (res) => {
  if (res !== null && res.success) {
    skipPage();
  } else {
    dialogVisible.value = true;
    nextHandleUser.value = res.userList;
  }
};
// 提交逻辑
const handleSubmit = async () => {
  try {
    // 调用发起组件的提交事件
    const flag = await makeDom.value.handleSubmit();
    if (flag) {
      flowFormDom.value.validate((vaild) => {
        if (vaild) {
          const data = { ...makeDom.value.submitData };
          if (flowForm.flowKey == "subscribe_flow") {
            data.subscribeDetailList = data.subscribeDetailList.map((x) => ({
              bussinessId: x.bussinessId,
              count: x.count,
              remark: x.remark,
            }));
            const victoriatouristJson = {
              planArrivalTime: data.planArrivalTime,
              receiptWarehouseId: data.receiptWarehouseId,
            };
            data.victoriatouristJson = JSON.stringify(victoriatouristJson);
          } else if (flowForm.flowKey == "purchase_flow") {
            data.purchaseDetailList = data.purchaseDetailList.map((x) => ({
              bussinessId: x.bussinessId,
              subscribeDetailId: x.id,
              count: x.count,
              price: x.price,
              amount: x.amount,
            }));
            const victoriatouristJson = {
              isAgreement: data.isAgreement,
              paymentMethod: data.paymentMethod,
              otherFeeList: data.otherFeeList,
            };
            data.victoriatouristJson = JSON.stringify(victoriatouristJson);
          } else if (flowForm.flowKey == "30") {
          } else if (flowForm.flowKey == "40") {
          }
          proxy
            .post("/flowProcess/initiate", {
              ...flowForm,
              data,
            })
            .then((res) => {
              handleResult(res);
            });
        }
      });
    }
  } catch (err) {
    console.log("数据未填完整!", err);
  }
};
// 页面跳转
const skipPage = () => {
  ElMessage({
    message: "操作成功!",
    type: "success",
  });
  if (flowForm.flowKey == "subscribe_flow") {
    router.replace({
      path: "/WDLY/purchaseManage/subscribe_wdly",
    });
  } else if (flowForm.flowKey == "purchase_flow") {
    router.replace({
      path: "/WDLY/purchaseManage/purchase_wdly",
    });
  } else if (flowForm.flowKey == "30") {
    router.replace({
      path: "/finance/fundManage/funds",
    });
  }
};

let queryData = reactive({
  data: {},
});
// 记录
const recordList = ref([]);
const getRecords = () => {
  proxy
    .post("/flowExample/getFlowNode", {
      flowKey: flowForm.flowKey,
    })
    .then((res) => {
      recordList.value = res;
    });
};

onMounted(() => {
  queryData.data = { ...route.query };
  flowForm.flowKey = route.query.flowKey;
  getRecords();
});
</script>

  <style lang="scss" scoped>
.processApproval {
  display: flex;
  justify-content: space-between;
  margin-top: 20px;
  padding: 0 20px;
  height: calc(100vh - 130px);
  .left-card {
    background: #fff;
    border-radius: 4px;
    padding: 20px;
    flex: 1;
    margin-right: 20px;
    display: flex;
    flex-direction: column;
    .top {
      flex: 1;
      overflow-y: auto;
      background: #fff;
    }
    .bottom {
      height: 155px;
      background: #fff;
    }
  }
  .right-card {
    background: #fff;
    border-radius: 4px;
    padding: 0 20px 20px;
    width: 400px;
    box-sizing: border-box;
    .flow-chart {
      overflow: auto;
      padding: 0;
      margin: 0;
      li {
        margin: 0;
        padding: 0 0 20px;
        list-style: none;
        display: flex;
        justify-content: space-between;
        position: relative;
        .right-conetnt {
          flex: 1;
          .name {
            font-size: 12px;
            color: #333;
            margin-bottom: 10px;
            span {
              color: #999;
              float: right;
            }
          }
          .remark {
            padding: 10px;
            color: #666666;
            font-size: 12px;
            background: #f1f1f1;
            border-radius: 2px;
            .label {
              color: #39c55a;
              margin-bottom: 10px;
            }
          }
        }
        .left-icon {
          width: 40px;
          height: 40px;
          text-align: center;
          line-height: 40px;
          background: #0084ff;
          border-radius: 10px;
          color: #fff;
          font-size: 20px;
          position: relative;
          margin-right: 27px;
          z-index: 2;
          .right-btm-status {
            position: absolute;
            bottom: 0px;
            right: -10px;
            height: 20px;
            width: 20px;
            line-height: 16px;
            border-radius: 10px;
            background: #39c55a;
            border: 2px solid #fff;
            font-size: 12px;
            box-sizing: border-box;
          }
        }
      }
      li::before {
        content: "";
        position: absolute;
        top: 0;
        left: 20px;
        width: 2px;
        height: 100%;
        background: #ddd;
        z-index: 1;
      }
      li:last-child::before {
        display: none;
      }
    }
  }
}
</style>