You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
141 lines
4.0 KiB
141 lines
4.0 KiB
<!--
|
|
* 首页
|
|
*
|
|
-->
|
|
<template>
|
|
<!-- 协议弹框 -->
|
|
<AgreementModal v-if="showAgreementModal" @confirm="handleAgreementConfirm" @cancel="handleAgreementCancel" />
|
|
|
|
<!-- 顶部用户信息-->
|
|
<a-row>
|
|
<HomeHeader />
|
|
</a-row>
|
|
<!--下方左右布局-->
|
|
<a-row :gutter="[10, 10]">
|
|
<!--左侧-->
|
|
<a-col :span="16">
|
|
<a-row :gutter="[10, 10]">
|
|
<!--公告信息
|
|
<a-col :span="12">
|
|
<HomeNotice title="公告" :noticeTypeId="1" />
|
|
</a-col>-->
|
|
<!--企业动态-->
|
|
<a-col :span="24">
|
|
<HomeNotice title="通知" :noticeTypeId="2" />
|
|
</a-col>
|
|
<!--各类报表-->
|
|
<!-- <a-col :span="6">
|
|
<Gauge :percent="saleTargetPercent" />
|
|
</a-col> -->
|
|
|
|
<!-- <a-col :span="12">
|
|
<Category />
|
|
</a-col>-->
|
|
</a-row>
|
|
</a-col>
|
|
<!--右侧-->
|
|
<a-col :span="8">
|
|
<a-row :gutter="[10, 10]">
|
|
<!--快捷入口-->
|
|
<!-- <a-col :span="24">
|
|
<HomeQuickEntry />
|
|
</a-col> -->
|
|
<!--关注公众号
|
|
<a-col :span="24">
|
|
<OfficialAccountCard />
|
|
</a-col>-->
|
|
<a-col :span="24">
|
|
<ToBeDoneCard />
|
|
</a-col>
|
|
<!--更新日志
|
|
<a-col :span="24">
|
|
<ChangelogCard />
|
|
</a-col>-->
|
|
</a-row>
|
|
</a-col>
|
|
<!-- <AdModal/>-->
|
|
</a-row>
|
|
</template>
|
|
<script setup>
|
|
import { computed, ref, onMounted } from 'vue';
|
|
import { message } from 'ant-design-vue';
|
|
import { useUserStore } from '/@/store/modules/system/user';
|
|
import HomeHeader from './home-header.vue';
|
|
import HomeNotice from './home-notice.vue';
|
|
import OfficialAccountCard from './components/official-account-card.vue';
|
|
import ToBeDoneCard from './components/to-be-done-card/home-to-be-done.vue';
|
|
import ChangelogCard from './components/changelog-card.vue';
|
|
import Category from './components/echarts/category.vue';
|
|
import Pie from './components/echarts/pie.vue';
|
|
import Gradient from './components/echarts/gradient.vue';
|
|
import AgreementModal from './components/agreement-modal.vue';
|
|
import { letterApi } from '/@/api/business/letter/letter-api';
|
|
// import AdModal from './ad-modal.vue';
|
|
|
|
const showAgreementModal = ref(false);
|
|
const userStore = useUserStore();
|
|
|
|
// 检查是否需要显示协议弹框
|
|
onMounted(() => {
|
|
checkAgreementStatus();
|
|
});
|
|
|
|
// 检查协议状态
|
|
function checkAgreementStatus() {
|
|
// 从登录接口返回的数据中获取agreementSignFlag字段
|
|
// 如果为true,表示已同意协议,不需要显示弹框
|
|
// 如果为false或不存在,需要显示弹框
|
|
const agreementSigned = userStore.agreementSignFlag;
|
|
showAgreementModal.value = !agreementSigned;
|
|
|
|
console.log('协议状态检查:', 'agreementSignFlag =', agreementSigned, '显示弹框 =', showAgreementModal.value);
|
|
}
|
|
|
|
// 协议确认 - 签署承诺书
|
|
async function handleAgreementConfirm() {
|
|
try {
|
|
|
|
await letterApi.add();
|
|
message.success('承诺书签署成功');
|
|
showAgreementModal.value = false;
|
|
|
|
// 更新本地协议状态
|
|
userStore.agreementSignFlag = true;
|
|
|
|
//console.log('承诺书签署完成,用户ID:', userStore.employeeId);
|
|
} catch (error) {
|
|
message.error('承诺书签署失败,请重新登录');
|
|
console.error('承诺书签署失败:', error);
|
|
|
|
// 签署失败,退出登录
|
|
userStore.logout();
|
|
|
|
// 延迟跳转到登录页
|
|
setTimeout(() => {
|
|
window.location.href = '/login';
|
|
}, 1500);
|
|
}
|
|
}
|
|
|
|
// 协议取消
|
|
function handleAgreementCancel() {
|
|
message.warning('您需要同意平台协议才能使用系统');
|
|
showAgreementModal.value = false;
|
|
|
|
// 可以在这里添加退出登录逻辑
|
|
userStore.logout();
|
|
|
|
// 延迟跳转到登录页
|
|
setTimeout(() => {
|
|
window.location.href = '/login';
|
|
}, 1500);
|
|
}
|
|
|
|
// 业绩完成百分比
|
|
const saleTargetPercent = computed(() => {
|
|
return 75;
|
|
});
|
|
</script>
|
|
<style lang="less" scoped>
|
|
@import './index.less';
|
|
</style>
|
|
|