律师系统前端
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.

142 lines
4.0 KiB

4 months ago
<!--
* 首页
*
-->
<template>
3 months ago
<!-- 协议弹框 -->
<AgreementModal v-if="showAgreementModal" @confirm="handleAgreementConfirm" @cancel="handleAgreementCancel" />
4 months ago
<!-- 顶部用户信息-->
<a-row>
<HomeHeader />
</a-row>
<!--下方左右布局-->
<a-row :gutter="[10, 10]">
<!--左侧-->
<a-col :span="16">
<a-row :gutter="[10, 10]">
<!--公告信息
4 months ago
<a-col :span="12">
<HomeNotice title="公告" :noticeTypeId="1" />
</a-col>-->
4 months ago
<!--企业动态-->
<a-col :span="24">
4 months ago
<HomeNotice title="通知" :noticeTypeId="2" />
</a-col>
<!--各类报表-->
<!-- <a-col :span="6">
<Gauge :percent="saleTargetPercent" />
</a-col> -->
<!-- <a-col :span="12">
4 months ago
<Category />
</a-col>-->
4 months ago
</a-row>
</a-col>
<!--右侧-->
<a-col :span="8">
<a-row :gutter="[10, 10]">
<!--快捷入口-->
<!-- <a-col :span="24">
<HomeQuickEntry />
</a-col> -->
<!--关注公众号
4 months ago
<a-col :span="24">
<OfficialAccountCard />
</a-col>-->
<a-col :span="24">
<ToBeDoneCard />
4 months ago
</a-col>
<!--更新日志
4 months ago
<a-col :span="24">
<ChangelogCard />
</a-col>-->
4 months ago
</a-row>
</a-col>
<!-- <AdModal/>-->
</a-row>
</template>
<script setup>
3 months ago
import { computed, ref, onMounted } from 'vue';
import { message } from 'ant-design-vue';
import { useUserStore } from '/@/store/modules/system/user';
4 months ago
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';
3 months ago
import AgreementModal from './components/agreement-modal.vue';
import { letterApi } from '/@/api/business/letter/letter-api';
4 months ago
// import AdModal from './ad-modal.vue';
3 months ago
const showAgreementModal = ref(false);
const userStore = useUserStore();
4 months ago
3 months ago
// 检查是否需要显示协议弹框
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;
});
4 months ago
</script>
<style lang="less" scoped>
@import './index.less';
</style>