<template>
  <div id="index">
    <el-row>
      <el-col :span="24" class="main animate__animated animate__backInRight" v-loading="loading">
        <div class="w_1200">
          <el-col :span="24" class="one">
            <el-collapse v-model="activeNames">
              <el-collapse-item title="科技频道" name="1" disabled>
                <el-row>
                  <el-col :span="24" class="course">
                    <el-col class="list" :span="8" :key="index" v-for="(item, index) in science">
                      <el-col :span="24"><el-image class="image" :src="src"></el-image></el-col>
                      <el-col :span="24" class="info">
                        <el-col :span="24" class="title textOver" :title="item.title">
                          <span>[{{ item.room_id }}]</span>{{ item.title }}
                        </el-col>
                        <el-col :span="24" class="other">
                          <el-col :span="12" class="textOver">信息来源：{{ item.origin }}</el-col>
                          <el-col :span="12" class="textOver">更新时间：{{ item.create_date }}</el-col>
                        </el-col>
                        <el-col :span="24" class="btn">
                          <el-button type="warning" size="small" @click="toLogin(item, '1')">管理进入</el-button>
                          <el-button type="primary" size="small" @click="toJump(item)" v-if="item.status == '1'">进入频道</el-button>
                        </el-col>
                      </el-col>
                    </el-col>
                  </el-col>
                </el-row>
              </el-collapse-item>
              <el-collapse-item title="培训问诊" name="2" disabled>
                <el-row>
                  <el-col :span="24" class="course">
                    <el-col class="list" :span="8" :key="index" v-for="(item, index) in trainLiat">
                      <el-col :span="24"><el-image class="image" :src="url"></el-image></el-col>
                      <el-col :span="24" class="info">
                        <el-col :span="24" class="title textOver" :title="item.title">
                          <span>[{{ item.room_id }}]</span>{{ item.title }}
                        </el-col>
                        <el-col :span="24" class="other">
                          <el-col :span="12" class="textOver">
                            <el-icon><LocationInformation /></el-icon>{{ item.province }}-{{ item.city }}
                          </el-col>
                          <el-col :span="12" class="textOver" :title="item.time">
                            <el-icon><Clock /></el-icon>{{ item.time }}
                          </el-col>
                        </el-col>
                        <el-col :span="24" class="btn">
                          <el-button type="warning" size="small" @click="toLogin(item, '2')">管理进入</el-button>
                          <el-button type="primary" size="small" @click="toJump1(item)" v-if="item.status == '1'">进入频道</el-button>
                        </el-col>
                      </el-col>
                    </el-col>
                  </el-col>
                </el-row>
              </el-collapse-item>
            </el-collapse>
          </el-col>
        </div>
      </el-col>
    </el-row>
    <cDialog :dialog="dialog" @handleClose="toClose">
      <template v-slot:info>
        <el-col :span="24" class="dialog_one" v-if="dialog.type == '1'">
          <cForm :span="24" :fields="fields" :form="form" :rules="rules" @save="toSave" submitText="提交登录"> </cForm>
        </el-col>
      </template>
    </cDialog>
  </div>
</template>

<script setup lang="ts">
// 基础
import type { Ref } from 'vue';
import { onMounted, ref, reactive } from 'vue';
import type { FormRules } from 'element-plus';
import { ElMessage } from 'element-plus';
// 接口
import { TrainStore } from '@common/src/stores/allAdmin/train';
import { ChannelStore } from '@common/src/stores/allAdmin/channel';
import { TokenStore } from '@common/src/stores/user/token'; // 解析
import type { IQueryResult } from '@/util/types.util';
const channel = ChannelStore();
const train = TrainStore();
const tokenAxiso = TokenStore();
// 加载中
const loading: Ref<any> = ref(false);
const activeNames: Ref<any> = ref(['1', '2']);
const science: Ref<any> = ref([]); // 科技频道
const trainLiat: Ref<any> = ref([]); // 培训问诊
const src: Ref<any> = ref('/src/assets/channel-1.jpg');
const url: Ref<any> = ref('/src/assets/channel-3.jpg');

// 弹框
const dialog: Ref<any> = ref({ type: '1', show: false, title: '信息管理' });
let form: Ref<any> = ref({});
// 表单
let fields: Ref<any[]> = ref([
  { label: '房间号', model: 'room_id', options: { disabled: true } },
  { label: '密码', model: 'password', type: 'password' }
]);
const rules = reactive<FormRules>({
  password: [{ required: true, message: '请输入账号密码', trigger: 'blur' }]
});

// 请求
onMounted(async () => {
  loading.value = true;
  search();
  loading.value = false;
});
const search = async () => {
  let res: IQueryResult;
  // 科技频道;
  res = await channel.query();
  if (res.errcode == 0) science.value = res.data as [];
  // 培训问诊
  res = await train.query();
  if (res.errcode == 0) {
    let data: any = res.data;
    for (const p1 of data) {
      if (!p1.start_time) p1.start_time = '暂无';
      if (!p1.end_time) p1.end_time = '暂无';
      p1.time = p1.start_time + '-' + p1.end_time;
    }
    trainLiat.value = data;
  }
};
const toLogin = (e, value) => {
  let object: any = { room_id: e.room_id, type: value };
  form.value = object;
  dialog.value = { title: '展会登录', show: true, type: '1' };
};
// 提交登录
const toSave = async (data) => {
  let res: IQueryResult;
  let type = data.type;
  delete data.type;
  if (type == '1') res = await channel.login(data);
  else if (type == '2') res = await train.login(data);
  if (res.errcode == '0') {
    ElMessage({ message: '登录成功', type: 'success' });
    localStorage.setItem('token', `${res.data}`);
    // 解析token跳转页面
    tokenView();
  } else {
    ElMessage({ message: `${res.errmsg}`, type: 'error' });
  }
};
const tokenView = async () => {
  let res: IQueryResult = await tokenAxiso.tokenInfo();
  if (res.errcode == '0') {
    // let user = res.data as any;
    let env = import.meta.env.VITE_APP_ENV;
    let path = '';
    if (env == 'development') path = 'http://localhost:8004/zkzxlive';
    else path = '/zkzxlive';
    window.open(path);
  }
};
// 弹框关闭
const toClose = () => {
  form.value = {};
  dialog.value = { title: '展会登录', show: false, type: '1' };
};
const toJump = (e) => {
  console.log(e);
};
const toJump1 = (e) => {
  console.log(e);
};
</script>
<style scoped lang="scss">
.main {
  min-height: 500px;
}
.w_1200 {
  width: 1200px;
  margin: 0 auto;
}
::v-deep .el-collapse-item.is-disabled .el-collapse-item__header {
  color: rgb(0, 0, 0);
  font-size: 16px;
  font-weight: 700;
  padding: 0px 10px;
}
.course {
  display: flex;
  flex-direction: row;
  flex-wrap: wrap;
}
.list {
  max-width: 32.5%;
  border: 1px solid #ccc;
  margin: 0 15px 10px 0;
  border-radius: 10px;
  .image {
    height: 260px;
    border-radius: 10px 10px 0px 0px;
  }
  .info {
    padding: 5px 10px 10px 10px;
    .title {
      font-size: 16px;
      font-weight: 700;
      padding: 0 0 5px 0;
    }
    .other {
      display: flex;
      font-size: 14px;
      padding: 0 0 5px 0;
    }
    .btn {
      text-align: center;
    }
  }
}
.list:nth-child(3n) {
  margin: 0 0 10px 0;
}
.list .info .title span:first-child {
  color: red;
}
.textOver {
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}
</style>
