Compare commits
13 Commits
main
...
feature/is
| Author | SHA1 | Date |
|---|---|---|
|
|
dfd438844c | |
|
|
167a24f7d3 | |
|
|
c7ebc4d5a3 | |
|
|
38d425cfab | |
|
|
23304eccab | |
|
|
260c9d7edc | |
|
|
c90c654dc7 | |
|
|
7d91c52204 | |
|
|
3f3486de07 | |
|
|
86461227a8 | |
|
|
ed16a3314f | |
|
|
ce4344124c | |
|
|
15a39d8763 |
|
|
@ -14,6 +14,7 @@ ENV = development
|
||||||
VITE_API_URL = http://123.60.153.169:8104/api/tenant
|
VITE_API_URL = http://123.60.153.169:8104/api/tenant
|
||||||
VITE_API_WS = ws://123.60.153.169:8104/api/websocket
|
VITE_API_WS = ws://123.60.153.169:8104/api/websocket
|
||||||
VITE_API_WPSADDIN = http://123.60.153.169:8101/wpsaddin/
|
VITE_API_WPSADDIN = http://123.60.153.169:8101/wpsaddin/
|
||||||
|
VITE_API_CANKAO = https://cankao.cs.com.cn/apih5
|
||||||
|
|
||||||
# VITE_API_URL = https://test.smartjinrui.cn/api/tenant
|
# VITE_API_URL = https://test.smartjinrui.cn/api/tenant
|
||||||
# VITE_API_WS = wss://test.smartjinrui.cn/api/websocket
|
# VITE_API_WS = wss://test.smartjinrui.cn/api/websocket
|
||||||
|
|
@ -26,6 +27,7 @@ VITE_API_WPSADDIN = http://123.60.153.169:8101/wpsaddin/
|
||||||
# VITE_API_URL = http://10.127.2.206:8104/api/tenant
|
# VITE_API_URL = http://10.127.2.206:8104/api/tenant
|
||||||
# VITE_API_WS = ws://10.127.2.206:8104/api/websocket
|
# VITE_API_WS = ws://10.127.2.206:8104/api/websocket
|
||||||
# VITE_API_WPSADDIN =http://10.127.2.206:8104/wpsaddin/
|
# VITE_API_WPSADDIN =http://10.127.2.206:8104/wpsaddin/
|
||||||
|
# VITE_API_CANKAO = https://cankao.cs.com.cn/apih5
|
||||||
|
|
||||||
# VITE_API_URL = https://aicaibao.cs.com.cn/api/tenant
|
# VITE_API_URL = https://aicaibao.cs.com.cn/api/tenant
|
||||||
# VITE_API_WS = wss://aicaibao.cs.com.cn/api/websocket
|
# VITE_API_WS = wss://aicaibao.cs.com.cn/api/websocket
|
||||||
|
|
|
||||||
|
|
@ -5,15 +5,19 @@ ENV = production
|
||||||
# VITE_API_URL = http://123.60.153.169:8104/api/tenant
|
# VITE_API_URL = http://123.60.153.169:8104/api/tenant
|
||||||
# VITE_API_WS = ws://123.60.153.169:8104/api/websocket
|
# VITE_API_WS = ws://123.60.153.169:8104/api/websocket
|
||||||
# VITE_API_WPSADDIN = http://123.60.153.169:8101/wpsaddin/
|
# VITE_API_WPSADDIN = http://123.60.153.169:8101/wpsaddin/
|
||||||
|
# VITE_API_CANKAO = https://cankao.cs.com.cn/apih5
|
||||||
|
|
||||||
VITE_API_URL = https://aicaibao.cs.com.cn/api/tenant
|
VITE_API_URL = https://aicaibao.cs.com.cn/api/tenant
|
||||||
VITE_API_WS = wss://aicaibao.cs.com.cn/api/websocket
|
VITE_API_WS = wss://aicaibao.cs.com.cn/api/websocket
|
||||||
VITE_API_WPSADDIN = https://aicaibao.cs.com.cn/wpsaddin/
|
VITE_API_WPSADDIN = https://aicaibao.cs.com.cn/wpsaddin/
|
||||||
|
VITE_API_CANKAO = https://cankao.cs.com.cn/apih5
|
||||||
|
|
||||||
# VITE_API_URL = https://test.smartjinrui.cn/api/tenant
|
# VITE_API_URL = https://test.smartjinrui.cn/api/tenant
|
||||||
# VITE_API_WS = wss://test.smartjinrui.cn/api/websocket
|
# VITE_API_WS = wss://test.smartjinrui.cn/api/websocket
|
||||||
# VITE_API_WPSADDIN =https://test.smartjinrui.cn/wpsaddin/
|
# VITE_API_WPSADDIN =https://test.smartjinrui.cn/wpsaddin/
|
||||||
|
# VITE_API_CANKAO = https://cankao.cs.com.cn/apih5
|
||||||
|
|
||||||
# VITE_API_URL = http://10.127.2.206:8104/api/tenant
|
# VITE_API_URL = http://10.127.2.206:8104/api/tenant
|
||||||
# VITE_API_WS = ws://10.127.2.206:8104/api/websocket
|
# VITE_API_WS = ws://10.127.2.206:8104/api/websocket
|
||||||
# VITE_API_WPSADDIN =http://10.127.2.206:8104/wpsaddin/
|
# VITE_API_WPSADDIN =http://10.127.2.206:8104/wpsaddin/
|
||||||
|
# VITE_API_CANKAO = https://cankao.cs.com.cn/apih5
|
||||||
|
|
@ -7,6 +7,7 @@
|
||||||
"scripts": {
|
"scripts": {
|
||||||
"dev": "vite",
|
"dev": "vite",
|
||||||
"build": "vite build",
|
"build": "vite build",
|
||||||
|
"prview": "vite preview",
|
||||||
"lint-fix": "eslint --fix --ext .js --ext .jsx --ext .vue src/"
|
"lint-fix": "eslint --fix --ext .js --ext .jsx --ext .vue src/"
|
||||||
},
|
},
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
|
|
|
||||||
|
|
@ -0,0 +1,33 @@
|
||||||
|
import request from '/@/utils/requestCankao';
|
||||||
|
|
||||||
|
// 登录
|
||||||
|
export const login = (data: any) => {
|
||||||
|
return request({
|
||||||
|
url: '/common/tenantLogin',
|
||||||
|
method: 'post',
|
||||||
|
data,
|
||||||
|
});
|
||||||
|
};
|
||||||
|
|
||||||
|
// 编辑精选接口
|
||||||
|
export const editTopNews = (data: any) => {
|
||||||
|
return request({
|
||||||
|
url: '/news/list/published',
|
||||||
|
method: 'post',
|
||||||
|
data,
|
||||||
|
});
|
||||||
|
};
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 获取文章详情
|
||||||
|
* @param data
|
||||||
|
* @id * 文章id number
|
||||||
|
* @returns
|
||||||
|
*/
|
||||||
|
export const fetchArticleDetail = (data: any) => {
|
||||||
|
return request({
|
||||||
|
url: `/news/detail/${data.id}`,
|
||||||
|
method: 'get',
|
||||||
|
data,
|
||||||
|
});
|
||||||
|
};
|
||||||
|
|
@ -7,10 +7,10 @@
|
||||||
|
|
||||||
<el-select v-model="headFilter.reportType" placeholder="请选择类型" size="default" style="width: 160px"
|
<el-select v-model="headFilter.reportType" placeholder="请选择类型" size="default" style="width: 160px"
|
||||||
@change="handleChange">
|
@change="handleChange">
|
||||||
<el-option v-if="headFilter.year != 2025" label="年报" :value="0" />
|
<el-option v-if="headFilter.year != 2026" label="年报" :value="0" />
|
||||||
<el-option label="半年报" :value="1" />
|
<el-option label="半年报" :value="1" />
|
||||||
<el-option label="一季报" :value="2" />
|
<el-option label="一季报" :value="2" />
|
||||||
<el-option v-if="headFilter.year != 2026" label="三季报" :value="3" />
|
<el-option label="三季报" :value="3" />
|
||||||
</el-select>
|
</el-select>
|
||||||
|
|
||||||
<el-select v-model="headFilter.type" placeholder="披露" size="default" style="width: 160px" @change="handleChange"
|
<el-select v-model="headFilter.type" placeholder="披露" size="default" style="width: 160px" @change="handleChange"
|
||||||
|
|
@ -54,9 +54,9 @@ const handleChange = () => {
|
||||||
}, 100);
|
}, 100);
|
||||||
};
|
};
|
||||||
|
|
||||||
// 临时方法 ---- 重置2025年为一季报
|
// 临时方法 ---- 重置2026年为一季报
|
||||||
const handleChange2 = (value: any) => {
|
const handleChange2 = (value: any) => {
|
||||||
if (value == 2025) {
|
if (value == 2026) {
|
||||||
const reportType = [2]; //2025年有的报表类型 0年报、1半年报、2一季报、3三季报
|
const reportType = [2]; //2025年有的报表类型 0年报、1半年报、2一季报、3三季报
|
||||||
if (!reportType.includes(headFilter.value.reportType)) {
|
if (!reportType.includes(headFilter.value.reportType)) {
|
||||||
headFilter.value.reportType = 2;
|
headFilter.value.reportType = 2;
|
||||||
|
|
|
||||||
|
|
@ -18,7 +18,7 @@
|
||||||
<el-option label="一季报" value="2"></el-option>
|
<el-option label="一季报" value="2"></el-option>
|
||||||
<el-option label="半年报" value="1"></el-option>
|
<el-option label="半年报" value="1"></el-option>
|
||||||
<el-option label="三季报" value="3"></el-option>
|
<el-option label="三季报" value="3"></el-option>
|
||||||
<el-option label="年报" value="0"></el-option>
|
<el-option v-if="queryFrom.year != '2026'" label="年报" value="0"></el-option>
|
||||||
<el-option label="日常公告" value="5"></el-option>
|
<el-option label="日常公告" value="5"></el-option>
|
||||||
</el-select>
|
</el-select>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
|
|
|
||||||
|
|
@ -9,7 +9,9 @@
|
||||||
<el-form label-position="top" class="formthis" ref="formRef" :model="queryFrom" :rules="rules">
|
<el-form label-position="top" class="formthis" ref="formRef" :model="queryFrom" :rules="rules">
|
||||||
<el-form-item label="文件年份" style="width: 100%" prop="year">
|
<el-form-item label="文件年份" style="width: 100%" prop="year">
|
||||||
<el-select v-model="queryFrom.year" placeholder="请选择年份" style="width: 100%">
|
<el-select v-model="queryFrom.year" placeholder="请选择年份" style="width: 100%">
|
||||||
<el-option :label="item.label" :value="item.value" v-for="(item, index) in YEAR" :key="index"></el-option>
|
<template v-for="(item, index) in YEAR" :key="index">
|
||||||
|
<el-option v-if="item.value != '2026'" :label="item.label" :value="item.value"></el-option>
|
||||||
|
</template>
|
||||||
</el-select>
|
</el-select>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
|
|
||||||
|
|
@ -54,11 +56,10 @@
|
||||||
marginTop: '20px',
|
marginTop: '20px',
|
||||||
}"
|
}"
|
||||||
class="upload"
|
class="upload"
|
||||||
:maxSize="maxSize"
|
:typeKua="true"
|
||||||
@handleAvatarSuccess="handleAvatarSuccess"
|
@handleAvatarSuccess="handleAvatarSuccess"
|
||||||
@onProgress="onUploadProgress"
|
@onProgress="onUploadProgress"
|
||||||
@onChange="onUploadChange"
|
@onChange="onUploadChange"
|
||||||
@onFileChange="onFileChange"
|
|
||||||
/>
|
/>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
<div
|
<div
|
||||||
|
|
@ -90,11 +91,10 @@
|
||||||
marginTop: '20px',
|
marginTop: '20px',
|
||||||
}"
|
}"
|
||||||
class="upload"
|
class="upload"
|
||||||
:maxSize="maxSize2"
|
:typeKua="true"
|
||||||
@handleAvatarSuccess="handleAvatarSuccess2"
|
@handleAvatarSuccess="handleAvatarSuccess2"
|
||||||
@onProgress="onUploadProgress2"
|
@onProgress="onUploadProgress2"
|
||||||
@onChange="onUploadChange2"
|
@onChange="onUploadChange2"
|
||||||
@onFileChange="onFileChange2"
|
|
||||||
/>
|
/>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
<div
|
<div
|
||||||
|
|
@ -173,10 +173,6 @@ const fileName = ref('');
|
||||||
const fileName2 = ref('');
|
const fileName2 = ref('');
|
||||||
const canSubmit = ref(true);
|
const canSubmit = ref(true);
|
||||||
const canSubmit2 = ref(true);
|
const canSubmit2 = ref(true);
|
||||||
const uploadedFile = ref(null); // 文件1
|
|
||||||
const uploadedFile2 = ref(null); // 文件2
|
|
||||||
const maxSize = ref(0); // 文件大小限制,单位M,0表示不限制
|
|
||||||
const maxSize2 = ref(0);
|
|
||||||
|
|
||||||
const reportTypeList = ref([
|
const reportTypeList = ref([
|
||||||
// {
|
// {
|
||||||
|
|
@ -305,7 +301,6 @@ function changeReportType(type) {
|
||||||
// value: '5',
|
// value: '5',
|
||||||
// },
|
// },
|
||||||
];
|
];
|
||||||
maxSize.value = 10;
|
|
||||||
} else {
|
} else {
|
||||||
reportTypeList2.value = [
|
reportTypeList2.value = [
|
||||||
{
|
{
|
||||||
|
|
@ -313,7 +308,6 @@ function changeReportType(type) {
|
||||||
value: '7',
|
value: '7',
|
||||||
},
|
},
|
||||||
];
|
];
|
||||||
maxSize.value = 0;
|
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
if (queryFrom.value.reportType2 == 7) {
|
if (queryFrom.value.reportType2 == 7) {
|
||||||
|
|
@ -335,7 +329,6 @@ function changeReportType(type) {
|
||||||
// value: '5',
|
// value: '5',
|
||||||
// },
|
// },
|
||||||
];
|
];
|
||||||
maxSize2.value = 10;
|
|
||||||
} else {
|
} else {
|
||||||
reportTypeList.value = [
|
reportTypeList.value = [
|
||||||
{
|
{
|
||||||
|
|
@ -343,7 +336,6 @@ function changeReportType(type) {
|
||||||
value: '7',
|
value: '7',
|
||||||
},
|
},
|
||||||
];
|
];
|
||||||
maxSize2.value = 0;
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
@ -352,10 +344,6 @@ function onUploadChange(name: string) {
|
||||||
fileName.value = name;
|
fileName.value = name;
|
||||||
}
|
}
|
||||||
|
|
||||||
function onFileChange(file: File) {
|
|
||||||
uploadedFile.value = file;
|
|
||||||
}
|
|
||||||
|
|
||||||
function onUploadProgress(percent: number) {
|
function onUploadProgress(percent: number) {
|
||||||
canSubmit.value = false;
|
canSubmit.value = false;
|
||||||
uploadPercent.value = Number(percent).toFixed(2);
|
uploadPercent.value = Number(percent).toFixed(2);
|
||||||
|
|
@ -376,10 +364,6 @@ function onUploadChange2(name: string) {
|
||||||
fileName2.value = name;
|
fileName2.value = name;
|
||||||
}
|
}
|
||||||
|
|
||||||
function onFileChange2(file: File) {
|
|
||||||
uploadedFile2.value = file;
|
|
||||||
}
|
|
||||||
|
|
||||||
function onUploadProgress2(percent: number) {
|
function onUploadProgress2(percent: number) {
|
||||||
canSubmit2.value = false;
|
canSubmit2.value = false;
|
||||||
uploadPercent2.value = Number(percent).toFixed(2);
|
uploadPercent2.value = Number(percent).toFixed(2);
|
||||||
|
|
@ -401,7 +385,6 @@ async function submit() {
|
||||||
if (loading.value) {
|
if (loading.value) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
console.log('🚀 ~ submit ~ queryFrom.value.filePath:', queryFrom.value.filePath);
|
|
||||||
|
|
||||||
if (!fileName.value) {
|
if (!fileName.value) {
|
||||||
ElMessage.error('请先上传文件');
|
ElMessage.error('请先上传文件');
|
||||||
|
|
@ -423,20 +406,6 @@ async function submit() {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
// 审计报告文件大小校验(10M)
|
|
||||||
if (queryFrom.value.reportType == 7) {
|
|
||||||
if (uploadedFile.value && uploadedFile.value.size > 10 * 1024 * 1024) {
|
|
||||||
ElMessage.error('审计报告文件大小不能超过10M');
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
if (queryFrom.value.reportType2 == 7) {
|
|
||||||
if (uploadedFile2.value && uploadedFile2.value.size > 10 * 1024 * 1024) {
|
|
||||||
ElMessage.error('审计报告文件大小不能超过10M');
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
await formRef.value.validate();
|
await formRef.value.validate();
|
||||||
loading.value = true;
|
loading.value = true;
|
||||||
let subArr = [
|
let subArr = [
|
||||||
|
|
@ -511,8 +480,6 @@ async function hideModal() {
|
||||||
|
|
||||||
uploadPercent.value = null;
|
uploadPercent.value = null;
|
||||||
dialogVisible.value = false;
|
dialogVisible.value = false;
|
||||||
maxSize.value = 0;
|
|
||||||
maxSize2.value = 0;
|
|
||||||
|
|
||||||
reportTypeList.value = [
|
reportTypeList.value = [
|
||||||
// {
|
// {
|
||||||
|
|
|
||||||
|
|
@ -18,7 +18,7 @@
|
||||||
<el-option label="一季报" value="2"></el-option>
|
<el-option label="一季报" value="2"></el-option>
|
||||||
<el-option label="半年报" value="1"></el-option>
|
<el-option label="半年报" value="1"></el-option>
|
||||||
<el-option label="三季报" value="3"></el-option>
|
<el-option label="三季报" value="3"></el-option>
|
||||||
<el-option label="年报" value="0"></el-option>
|
<el-option v-if="queryFrom.year != '2026'" label="年报" value="0"></el-option>
|
||||||
<el-option label="日常公告" value="5" v-if="textCheckSwitch == 1"></el-option>
|
<el-option label="日常公告" value="5" v-if="textCheckSwitch == 1"></el-option>
|
||||||
</el-select>
|
</el-select>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
|
|
|
||||||
|
|
@ -50,12 +50,12 @@ const props = defineProps({
|
||||||
model: {
|
model: {
|
||||||
type: Object,
|
type: Object,
|
||||||
},
|
},
|
||||||
maxSize: {
|
typeKua: {
|
||||||
type: Number,
|
type: Boolean,
|
||||||
default: 10,
|
default: () => false,
|
||||||
},
|
}
|
||||||
});
|
});
|
||||||
const emit = defineEmits(['handleAvatarSuccess', 'onProgress', 'onChange', 'onFileChange']);
|
const emit = defineEmits(['handleAvatarSuccess', 'onProgress', 'onChange']);
|
||||||
const uploadData = ref({});
|
const uploadData = ref({});
|
||||||
|
|
||||||
const uploadHeader = ref({
|
const uploadHeader = ref({
|
||||||
|
|
@ -148,13 +148,10 @@ async function onBeforeUpload(res) {
|
||||||
ElMessage.error('请上传PDF或docx文件');
|
ElMessage.error('请上传PDF或docx文件');
|
||||||
}
|
}
|
||||||
|
|
||||||
// 文件大小校验(仅当 maxSize > 0 时限制)
|
// 限制10M大小
|
||||||
if (props.maxSize > 0) {
|
if (props.typeKua && res.size > 10 * 1024 * 1024) {
|
||||||
const maxSizeBytes = props.maxSize * 1024 * 1024;
|
canGo = false;
|
||||||
if (res.size > maxSizeBytes) {
|
ElMessage.error('文件大小不能超过10M');
|
||||||
canGo = false;
|
|
||||||
ElMessage.error(`文件大小不能超过${props.maxSize}M`);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// let { code, data } = await getWordFlag({});
|
// let { code, data } = await getWordFlag({});
|
||||||
|
|
@ -193,7 +190,6 @@ function onChange(res) {
|
||||||
} else {
|
} else {
|
||||||
showView.value = true;
|
showView.value = true;
|
||||||
}
|
}
|
||||||
emit('onFileChange', res.raw);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
function onProgress(res) {
|
function onProgress(res) {
|
||||||
|
|
|
||||||
|
|
@ -8,11 +8,11 @@
|
||||||
<img :src="iconBack" class="back_icon" />
|
<img :src="iconBack" class="back_icon" />
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div v-if="route.path !== '/detail' || route.path == '/detailKua'" class="r_logo">
|
<router-link to="/home" v-if="route.path !== '/detail' || route.path == '/detailKua'" class="r_logo">
|
||||||
<img :src="logo_hol" class="logo" />
|
<img :src="logo_hol" class="logo" />
|
||||||
<div class="line"></div>
|
<div class="line"></div>
|
||||||
<text>中证智能财保</text>
|
<span class="text">中证智能财保</span>
|
||||||
</div>
|
</router-link>
|
||||||
<div>
|
<div>
|
||||||
<span class="route_name" v-if="detailName && route.path == '/detail'" :key="route.path"> {{ detailName }}</span>
|
<span class="route_name" v-if="detailName && route.path == '/detail'" :key="route.path"> {{ detailName }}</span>
|
||||||
</div>
|
</div>
|
||||||
|
|
@ -269,6 +269,7 @@ onBeforeRouteUpdate((to) => {
|
||||||
display: flex;
|
display: flex;
|
||||||
align-items: center;
|
align-items: center;
|
||||||
margin-left: 20px;
|
margin-left: 20px;
|
||||||
|
text-decoration: none;
|
||||||
|
|
||||||
.logo {
|
.logo {
|
||||||
width: 140px;
|
width: 140px;
|
||||||
|
|
@ -283,7 +284,7 @@ onBeforeRouteUpdate((to) => {
|
||||||
margin-right: 12px;
|
margin-right: 12px;
|
||||||
}
|
}
|
||||||
|
|
||||||
text {
|
.text {
|
||||||
color: #000000;
|
color: #000000;
|
||||||
font-family: 'Noto Sans CJK SC';
|
font-family: 'Noto Sans CJK SC';
|
||||||
font-size: 18px;
|
font-size: 18px;
|
||||||
|
|
@ -292,6 +293,7 @@ onBeforeRouteUpdate((to) => {
|
||||||
line-height: 26px;
|
line-height: 26px;
|
||||||
letter-spacing: 0.56px;
|
letter-spacing: 0.56px;
|
||||||
white-space: nowrap;
|
white-space: nowrap;
|
||||||
|
text-decoration: none;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -577,7 +577,7 @@ onMounted(() => {
|
||||||
redirect: '/example',
|
redirect: '/example',
|
||||||
// component: () => import('/@/views/example/index.vue'),
|
// component: () => import('/@/views/example/index.vue'),
|
||||||
meta: {
|
meta: {
|
||||||
title: '相关材料',
|
title: '产品文档',
|
||||||
},
|
},
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -87,7 +87,68 @@ export const dynamicRoutes: Array<RouteRecordRaw> = [
|
||||||
// icon: 'iconfont icon-shouye',
|
// icon: 'iconfont icon-shouye',
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
path: '/realtimeInfo',
|
||||||
|
name: 'realtimeInfo',
|
||||||
|
component: () => import('/@/views/pages/cankao/index.vue'),
|
||||||
|
meta: {
|
||||||
|
title: '海外资讯',
|
||||||
|
isLink: '',
|
||||||
|
isHide: true,
|
||||||
|
isKeepAlive: true,
|
||||||
|
isAffix: false,
|
||||||
|
isIframe: false,
|
||||||
|
roles: [
|
||||||
|
'admin',
|
||||||
|
'common',
|
||||||
|
'subCommon',
|
||||||
|
'subCenter',
|
||||||
|
'Director',
|
||||||
|
'CSRC',
|
||||||
|
'QJJG',
|
||||||
|
'DFJG',
|
||||||
|
'JYS',
|
||||||
|
'QJJGC',
|
||||||
|
'DFJGC',
|
||||||
|
'JYSC',
|
||||||
|
'operate',
|
||||||
|
'Bank',
|
||||||
|
'SubBank',
|
||||||
|
],
|
||||||
|
// icon: 'iconfont icon-shouye',
|
||||||
|
},
|
||||||
|
},
|
||||||
|
{
|
||||||
|
path: '/indexPC',
|
||||||
|
name: 'indexPC',
|
||||||
|
component: () => import('/@/views/pages/cankao/indexPC.vue'),
|
||||||
|
meta: {
|
||||||
|
title: '海外资讯',
|
||||||
|
isLink: '',
|
||||||
|
isHide: true,
|
||||||
|
isKeepAlive: false,
|
||||||
|
isAffix: false,
|
||||||
|
isIframe: false,
|
||||||
|
roles: [
|
||||||
|
'admin',
|
||||||
|
'common',
|
||||||
|
'subCommon',
|
||||||
|
'subCenter',
|
||||||
|
'Director',
|
||||||
|
'CSRC',
|
||||||
|
'QJJG',
|
||||||
|
'DFJG',
|
||||||
|
'JYS',
|
||||||
|
'QJJGC',
|
||||||
|
'DFJGC',
|
||||||
|
'JYSC',
|
||||||
|
'operate',
|
||||||
|
'Bank',
|
||||||
|
'SubBank',
|
||||||
|
],
|
||||||
|
// icon: 'iconfont icon-shouye',
|
||||||
|
},
|
||||||
|
},
|
||||||
{
|
{
|
||||||
path: '/caixun',
|
path: '/caixun',
|
||||||
name: 'caixun',
|
name: 'caixun',
|
||||||
|
|
|
||||||
|
|
@ -62,7 +62,7 @@ export const useDashboard = defineStore('dashboard', {
|
||||||
daterange: '',
|
daterange: '',
|
||||||
headFilter: {
|
headFilter: {
|
||||||
year: '2025',
|
year: '2025',
|
||||||
reportType: 1,
|
reportType: 0,
|
||||||
type: type,
|
type: type,
|
||||||
},
|
},
|
||||||
firstFilter: {
|
firstFilter: {
|
||||||
|
|
|
||||||
|
|
@ -0,0 +1,90 @@
|
||||||
|
import axios, { AxiosInstance } from 'axios';
|
||||||
|
import { ElMessage, ElMessageBox } from 'element-plus';
|
||||||
|
import { Session } from '/@/utils/storage';
|
||||||
|
import qs from 'qs';
|
||||||
|
import Cookies from 'js-cookie';
|
||||||
|
|
||||||
|
// 配置新建一个 axios 实例
|
||||||
|
const service: AxiosInstance = axios.create({
|
||||||
|
baseURL: import.meta.env.VITE_API_CANKAO,
|
||||||
|
timeout: 50000,
|
||||||
|
headers: { 'Content-Type': 'application/json' },
|
||||||
|
paramsSerializer: {
|
||||||
|
serialize(params) {
|
||||||
|
return qs.stringify(params, { allowDots: true });
|
||||||
|
},
|
||||||
|
},
|
||||||
|
});
|
||||||
|
|
||||||
|
// 添加请求拦截器
|
||||||
|
service.interceptors.request.use(
|
||||||
|
(config) => {
|
||||||
|
config.headers!['auth-token'] = window.token;
|
||||||
|
// config.headers!['auth-token'] = `${Cookies.get('token')}`;
|
||||||
|
// config.headers!['auth-token'] = `${Session.get('token')}`;
|
||||||
|
if (window.phone) {
|
||||||
|
config.headers!['phone'] = window.phone;
|
||||||
|
} else {
|
||||||
|
config.headers!['phone'] = window.username;
|
||||||
|
}
|
||||||
|
// 在发送请求之前做些什么 token
|
||||||
|
// if (Session.get('token')) {
|
||||||
|
// config.headers!['auth-token'] = window.token;
|
||||||
|
// // config.headers!['auth-token'] = `${Cookies.get('token')}`;
|
||||||
|
// // config.headers!['auth-token'] = `${Session.get('token')}`;
|
||||||
|
// config.headers!['phone'] = window.phone;
|
||||||
|
// }
|
||||||
|
return config;
|
||||||
|
},
|
||||||
|
(error) => {
|
||||||
|
// 对请求错误做些什么
|
||||||
|
return Promise.reject(error);
|
||||||
|
}
|
||||||
|
);
|
||||||
|
|
||||||
|
// 添加响应拦截器
|
||||||
|
service.interceptors.response.use(
|
||||||
|
(response) => {
|
||||||
|
// 对响应数据做点什么
|
||||||
|
const res = response.data;
|
||||||
|
if (res.code && res.code !== 200) {
|
||||||
|
// `token` 过期或者账号已在别处登录
|
||||||
|
// if (res.code === 401 || res.code === 402 || res.code === 4001) {
|
||||||
|
// Session.clear(); // 清除浏览器全部临时缓存
|
||||||
|
// window.location.href = '/'; // 去登录页
|
||||||
|
// ElMessageBox.alert('登录已过期,请重新登录', '提示', {})
|
||||||
|
// .then(() => {})
|
||||||
|
// .catch(() => {});
|
||||||
|
// } else {
|
||||||
|
// ElMessage.error(res.msg);
|
||||||
|
// }
|
||||||
|
return Promise.reject(service.interceptors.response);
|
||||||
|
} else {
|
||||||
|
return res;
|
||||||
|
}
|
||||||
|
},
|
||||||
|
(error) => {
|
||||||
|
console.log('🚀 ~ error:', error);
|
||||||
|
// 对响应错误做点什么
|
||||||
|
if (error.message.indexOf('timeout') != -1) {
|
||||||
|
ElMessage.error('网络超时');
|
||||||
|
} else if (error.message == 'Network Error') {
|
||||||
|
ElMessage.error('网络连接错误');
|
||||||
|
} else if (error.message.indexOf('token') != -1) {
|
||||||
|
Session.clear(); // 清除浏览器全部临时缓存
|
||||||
|
window.location.href = '/'; // 去登录页
|
||||||
|
} else {
|
||||||
|
if (error.response.data) {
|
||||||
|
ElMessage.error(error.response.statusText);
|
||||||
|
} else {
|
||||||
|
Session.clear(); // 清除浏览器全部临时缓存
|
||||||
|
window.location.href = '/'; // 去登录页
|
||||||
|
ElMessage.error('接口路径找不到');
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return Promise.reject(error);
|
||||||
|
}
|
||||||
|
);
|
||||||
|
|
||||||
|
// 导出 axios 实例
|
||||||
|
export default service;
|
||||||
|
|
@ -1,18 +1,22 @@
|
||||||
<template>
|
<template>
|
||||||
<div class="container">
|
<div class="container">
|
||||||
<div class="r_logo">
|
<div class="r_logo">
|
||||||
<img :src="logo_hol" class="logo" />
|
<router-link to="/home" class="home-link">
|
||||||
<div class="line"></div>
|
<img :src="logo_hol" class="logo" />
|
||||||
<text>中证智能财保</text>
|
<div class="line"></div>
|
||||||
|
<text>中证智能财保</text>
|
||||||
|
</router-link>
|
||||||
|
|
||||||
<div class="top_menu">
|
<div class="top_menu">
|
||||||
<div class="item" @click="goLogout">
|
<div :class="['item', { 'login-item': isLogin }]" @click="goLogout">
|
||||||
<text>产品</text>
|
<text>产品</text>
|
||||||
<!-- <div class="bottom_line"></div> -->
|
|
||||||
</div>
|
</div>
|
||||||
<div class="item">
|
<div :class="['item active', { 'login-item': isLogin }]">
|
||||||
<text>相关材料</text>
|
<text>产品文档</text>
|
||||||
<div class="bottom_line"></div>
|
<div v-if="!isLogin" class="bottom_line"></div>
|
||||||
|
</div>
|
||||||
|
<div v-if="!isLogin" class="top_right" @click="goLogin">
|
||||||
|
<text>登录</text>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
@ -24,7 +28,12 @@
|
||||||
<div class="img">
|
<div class="img">
|
||||||
<img :src="item.img" alt="" />
|
<img :src="item.img" alt="" />
|
||||||
</div>
|
</div>
|
||||||
<div class="text">{{ item.name }}</div>
|
<div class="name">
|
||||||
|
<div class="text">{{ item.name }}</div>
|
||||||
|
<el-tooltip content="点击下载">
|
||||||
|
<el-button :icon="Download" size="mini" circle @click.stop="handleDownload(item)" />
|
||||||
|
</el-tooltip>
|
||||||
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
@ -39,7 +48,7 @@
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
<script setup>
|
<script setup>
|
||||||
import { ref } from 'vue';
|
import { ref, computed } from 'vue';
|
||||||
import logo_hol from '/@/assets/logo_hol.png';
|
import logo_hol from '/@/assets/logo_hol.png';
|
||||||
import example1 from '/@/assets/images/example_1.png';
|
import example1 from '/@/assets/images/example_1.png';
|
||||||
import example2 from '/@/assets/images/example_2.png';
|
import example2 from '/@/assets/images/example_2.png';
|
||||||
|
|
@ -48,6 +57,8 @@ import example4 from '/@/assets/images/example_4.png';
|
||||||
import example5 from '/@/assets/images/example_5.png';
|
import example5 from '/@/assets/images/example_5.png';
|
||||||
import Detail from './detail/index.vue';
|
import Detail from './detail/index.vue';
|
||||||
import router from '/@/router';
|
import router from '/@/router';
|
||||||
|
import { Download } from '@element-plus/icons-vue';
|
||||||
|
import { Session } from '/@/utils/storage';
|
||||||
|
|
||||||
const data = ref([
|
const data = ref([
|
||||||
{
|
{
|
||||||
|
|
@ -117,6 +128,10 @@ const vidoeUrl = ref();
|
||||||
const title = ref('');
|
const title = ref('');
|
||||||
const poster = ref('');
|
const poster = ref('');
|
||||||
|
|
||||||
|
const isLogin = computed(() => {
|
||||||
|
return !!Session.get('token');
|
||||||
|
});
|
||||||
|
|
||||||
const open = (item) => {
|
const open = (item) => {
|
||||||
if (item.type === 'pdf') {
|
if (item.type === 'pdf') {
|
||||||
openPdf(item);
|
openPdf(item);
|
||||||
|
|
@ -150,25 +165,81 @@ const handleClose = () => {
|
||||||
const goLogout = () => {
|
const goLogout = () => {
|
||||||
router.push('/login');
|
router.push('/login');
|
||||||
};
|
};
|
||||||
|
|
||||||
|
// 点击下载
|
||||||
|
const handleDownload = async (item) => {
|
||||||
|
if (!item || !item.url) {
|
||||||
|
console.warn('下载失败:缺少 URL 或数据格式不正确', item);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
const downloadUrl = item.url.trim();
|
||||||
|
if (!downloadUrl) {
|
||||||
|
console.warn('下载失败:URL 为空值');
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
try {
|
||||||
|
const response = await fetch(downloadUrl);
|
||||||
|
if (!response.ok) {
|
||||||
|
throw new Error(`下载失败,状态码:${response.status}`);
|
||||||
|
}
|
||||||
|
|
||||||
|
const blob = await response.blob();
|
||||||
|
const urlObj = window.URL.createObjectURL(blob);
|
||||||
|
|
||||||
|
const fileExt = (() => {
|
||||||
|
const urlPath = new URL(downloadUrl).pathname;
|
||||||
|
const part = urlPath.split('.').pop() || '';
|
||||||
|
return part.toLowerCase();
|
||||||
|
})();
|
||||||
|
|
||||||
|
const safeName = (item.name || 'download').replace(/\s+/g, '_').replace(/[\\/:*?"<>|]+/g, '');
|
||||||
|
|
||||||
|
const fileName = fileExt ? `${safeName}.${fileExt}` : safeName;
|
||||||
|
|
||||||
|
const a = document.createElement('a');
|
||||||
|
a.href = urlObj;
|
||||||
|
a.download = fileName;
|
||||||
|
a.style.display = 'none';
|
||||||
|
document.body.appendChild(a);
|
||||||
|
a.click();
|
||||||
|
document.body.removeChild(a);
|
||||||
|
window.URL.revokeObjectURL(urlObj);
|
||||||
|
} catch (error) {
|
||||||
|
console.error('下载异常:', error);
|
||||||
|
}
|
||||||
|
};
|
||||||
|
// 跳转登录
|
||||||
|
function goLogin() {
|
||||||
|
router.push('/loginReal');
|
||||||
|
}
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
<style scoped lang="scss">
|
<style scoped lang="scss">
|
||||||
.container {
|
.container {
|
||||||
background: url('/@/assets/images/bk_charts.png') no-repeat center top;
|
|
||||||
background-size: cover;
|
|
||||||
width: 100%;
|
width: 100%;
|
||||||
height: 100vh;
|
height: 100vh;
|
||||||
overflow: auto !important;
|
overflow: auto !important;
|
||||||
|
background: url('/@/assets/images/bk_charts1.png') #f5f7fd no-repeat center 56px;
|
||||||
|
background-size: 100% auto;
|
||||||
}
|
}
|
||||||
|
|
||||||
.r_logo {
|
.r_logo {
|
||||||
display: flex;
|
display: flex;
|
||||||
|
justify-content: space-between;
|
||||||
align-items: center;
|
align-items: center;
|
||||||
background-color: #fff;
|
background-color: #fff;
|
||||||
height: 64px;
|
height: 56px;
|
||||||
padding: 0 32px;
|
padding-left: 20px;
|
||||||
border-bottom: 1px solid var(--next-border-color-light);
|
border-bottom: 1px solid var(--next-border-color-light);
|
||||||
|
|
||||||
|
.home-link {
|
||||||
|
display: flex;
|
||||||
|
align-items: center;
|
||||||
|
text-decoration: none;
|
||||||
|
}
|
||||||
|
|
||||||
.logo {
|
.logo {
|
||||||
width: 140px;
|
width: 140px;
|
||||||
height: 32px;
|
height: 32px;
|
||||||
|
|
@ -230,8 +301,14 @@ const goLogout = () => {
|
||||||
height: 144px;
|
height: 144px;
|
||||||
}
|
}
|
||||||
|
|
||||||
.text {
|
.name {
|
||||||
|
display: flex;
|
||||||
|
justify-content: space-between;
|
||||||
|
align-items: center;
|
||||||
padding: 8px 12px;
|
padding: 8px 12px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.text {
|
||||||
font-size: 14px;
|
font-size: 14px;
|
||||||
color: rgba(0, 0, 0, 0.85);
|
color: rgba(0, 0, 0, 0.85);
|
||||||
white-space: nowrap;
|
white-space: nowrap;
|
||||||
|
|
@ -295,10 +372,8 @@ const goLogout = () => {
|
||||||
|
|
||||||
.top_menu {
|
.top_menu {
|
||||||
height: 100%;
|
height: 100%;
|
||||||
margin-left: 50px;
|
|
||||||
display: flex;
|
display: flex;
|
||||||
gap: 50px;
|
align-items: center;
|
||||||
margin-left: 100px;
|
|
||||||
|
|
||||||
.item {
|
.item {
|
||||||
height: 100%;
|
height: 100%;
|
||||||
|
|
@ -306,6 +381,30 @@ const goLogout = () => {
|
||||||
display: flex;
|
display: flex;
|
||||||
align-items: center;
|
align-items: center;
|
||||||
cursor: pointer;
|
cursor: pointer;
|
||||||
|
margin-right: 50px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.login-item {
|
||||||
|
display: flex;
|
||||||
|
text-align: center;
|
||||||
|
justify-content: center;
|
||||||
|
margin-right: 20px;
|
||||||
|
text {
|
||||||
|
font-size: 16px;
|
||||||
|
color: #000000;
|
||||||
|
letter-spacing: 0;
|
||||||
|
line-height: 24px;
|
||||||
|
font-weight: 400;
|
||||||
|
cursor: pointer;
|
||||||
|
min-width: 60px;
|
||||||
|
white-space: nowrap;
|
||||||
|
}
|
||||||
|
|
||||||
|
&.active {
|
||||||
|
text {
|
||||||
|
color: #007aff;
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
.bottom_line {
|
.bottom_line {
|
||||||
|
|
@ -315,5 +414,49 @@ const goLogout = () => {
|
||||||
position: absolute;
|
position: absolute;
|
||||||
bottom: 0;
|
bottom: 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
.top_right {
|
||||||
|
display: flex;
|
||||||
|
text-align: center;
|
||||||
|
justify-content: center;
|
||||||
|
align-items: center;
|
||||||
|
width: 86px;
|
||||||
|
height: 100%;
|
||||||
|
background: #0779ff;
|
||||||
|
cursor: pointer;
|
||||||
|
|
||||||
|
text {
|
||||||
|
font-family: PingFangSC, PingFang SC;
|
||||||
|
font-weight: 400;
|
||||||
|
font-size: 14px;
|
||||||
|
color: #ffffff;
|
||||||
|
line-height: 20px;
|
||||||
|
text-align: left;
|
||||||
|
font-style: normal;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
.r_menu {
|
||||||
|
display: flex;
|
||||||
|
margin-right: 30px;
|
||||||
|
|
||||||
|
.menu_item {
|
||||||
|
font-size: 16px;
|
||||||
|
color: #000000;
|
||||||
|
letter-spacing: 0;
|
||||||
|
line-height: 24px;
|
||||||
|
font-weight: 400;
|
||||||
|
margin-right: 20px;
|
||||||
|
cursor: pointer;
|
||||||
|
min-width: 60px;
|
||||||
|
white-space: nowrap;
|
||||||
|
display: flex;
|
||||||
|
text-align: center;
|
||||||
|
justify-content: center;
|
||||||
|
}
|
||||||
|
|
||||||
|
.active {
|
||||||
|
color: #007aff;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
</style>
|
</style>
|
||||||
|
|
|
||||||
|
|
@ -217,7 +217,8 @@ onUnmounted(() => {
|
||||||
min-width: 1400px;
|
min-width: 1400px;
|
||||||
min-height: calc(100vh - 56px);
|
min-height: calc(100vh - 56px);
|
||||||
margin: 0 auto;
|
margin: 0 auto;
|
||||||
background: url('/@/assets/images/bk_charts.png') no-repeat center 0;
|
background: url('/@/assets/images/bk_charts1.png') #f5f7fd no-repeat center 0;
|
||||||
|
background-size: 100% auto;
|
||||||
}
|
}
|
||||||
|
|
||||||
.main {
|
.main {
|
||||||
|
|
|
||||||
|
|
@ -216,7 +216,8 @@ onMounted(() => {
|
||||||
min-width: 1400px;
|
min-width: 1400px;
|
||||||
min-height: calc(100vh - 56px);
|
min-height: calc(100vh - 56px);
|
||||||
margin: 0 auto;
|
margin: 0 auto;
|
||||||
background: url('/@/assets/images/bk_charts.png') no-repeat center 0;
|
background: url('/@/assets/images/bk_charts1.png') #f5f7fd no-repeat center 0;
|
||||||
|
background-size: 100% auto;
|
||||||
}
|
}
|
||||||
|
|
||||||
.main {
|
.main {
|
||||||
|
|
|
||||||
|
|
@ -164,7 +164,9 @@ onMounted(() => {
|
||||||
min-width: 1400px;
|
min-width: 1400px;
|
||||||
min-height: calc(100vh - 56px);
|
min-height: calc(100vh - 56px);
|
||||||
margin: 0 auto;
|
margin: 0 auto;
|
||||||
background: url('/@/assets/images/bk_charts.png') no-repeat center 0;
|
// background: url('/@/assets/images/bk_charts.png') no-repeat center 0;
|
||||||
|
background: url('/@/assets/images/bk_charts1.png') #f5f7fd no-repeat center 0;
|
||||||
|
background-size: 100% auto;
|
||||||
}
|
}
|
||||||
|
|
||||||
.main {
|
.main {
|
||||||
|
|
|
||||||
|
|
@ -173,7 +173,8 @@ onMounted(() => {
|
||||||
min-width: 1400px;
|
min-width: 1400px;
|
||||||
min-height: calc(100vh - 56px);
|
min-height: calc(100vh - 56px);
|
||||||
margin: 0 auto;
|
margin: 0 auto;
|
||||||
background: url('/@/assets/images/bk_charts.png') no-repeat center 0;
|
background: url('/@/assets/images/bk_charts1.png') #f5f7fd no-repeat center 0;
|
||||||
|
background-size: 100% auto;
|
||||||
}
|
}
|
||||||
|
|
||||||
.main {
|
.main {
|
||||||
|
|
|
||||||
|
|
@ -44,7 +44,7 @@ onMounted(() => {
|
||||||
<style scoped lang="scss">
|
<style scoped lang="scss">
|
||||||
.list {
|
.list {
|
||||||
width: 100%;
|
width: 100%;
|
||||||
// height: 100%;
|
height: 100%;
|
||||||
padding-right: 30px;
|
padding-right: 30px;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -1,12 +1,15 @@
|
||||||
<template>
|
<template>
|
||||||
<div class="all" v-show="hadRole">
|
<div class="all" v-show="hadRole">
|
||||||
<el-image :src="topBg" mode="widthFix" class="topbg" v-if="isCommon" />
|
|
||||||
<el-image :src="topBgJg" mode="widthFix" class="topbg" v-else />
|
|
||||||
|
|
||||||
<!-- :class="{ 'scale-down': isScaleDown }" -->
|
<!-- :class="{ 'scale-down': isScaleDown }" -->
|
||||||
<!-- height: isCommon ? '80vh' : '90vh' -->
|
<!-- height: isCommon ? '80vh' : '90vh' -->
|
||||||
<div class="content" :style="{ top: isCommon ? '20vh' : '16vh' }">
|
<div class="content">
|
||||||
<div class="top" v-if="isCommon" :class="{ 'scale-down': isScaleDown }">
|
<div>
|
||||||
|
<el-breadcrumb separator="/" class="font16">
|
||||||
|
<el-breadcrumb-item :to="{ path: '/home' }">首页</el-breadcrumb-item>
|
||||||
|
<el-breadcrumb-item>智能财讯</el-breadcrumb-item>
|
||||||
|
</el-breadcrumb>
|
||||||
|
</div>
|
||||||
|
<div class="top" v-if="isCommon">
|
||||||
<div class="top_left">
|
<div class="top_left">
|
||||||
<el-image :src="logo" mode="widthFix" class="logo" />
|
<el-image :src="logo" mode="widthFix" class="logo" />
|
||||||
<div class="sub_info">
|
<div class="sub_info">
|
||||||
|
|
@ -37,7 +40,7 @@
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<!-- maxHeight: isCommon ? '70vh' : '90vh' -->
|
<!-- maxHeight: isCommon ? '70vh' : '90vh' -->
|
||||||
<div class="page_content" :class="{ 'scale-down': isScaleDown }" :style="{ marginTop: isScaleDown ? '0px' : '0px' }">
|
<div class="page_content">
|
||||||
<div class="left">
|
<div class="left">
|
||||||
<div class="r_list_big_title" v-if="!isCommon">
|
<div class="r_list_big_title" v-if="!isCommon">
|
||||||
<text class="list_big_title">智能财讯</text>
|
<text class="list_big_title">智能财讯</text>
|
||||||
|
|
@ -48,7 +51,7 @@
|
||||||
|
|
||||||
<el-input
|
<el-input
|
||||||
v-if="!isCommon"
|
v-if="!isCommon"
|
||||||
:style="{ marginTop: isCommon ? '0px' : '40px' }"
|
:style="{ margin: '40px 0 20px 0' }"
|
||||||
:prefix-icon="Search"
|
:prefix-icon="Search"
|
||||||
placeholder="请输入公司证券代码或公司简称搜索"
|
placeholder="请输入公司证券代码或公司简称搜索"
|
||||||
class="input"
|
class="input"
|
||||||
|
|
@ -59,36 +62,29 @@
|
||||||
@keyup.enter="sreachLeft"
|
@keyup.enter="sreachLeft"
|
||||||
/>
|
/>
|
||||||
|
|
||||||
<div v-loading="loadingLeft" style="margin-top: 30px">
|
<div v-loading="loadingLeft" class="r_list-box">
|
||||||
<div class="r_list">
|
<div class="r_list">
|
||||||
<CaixunList
|
<CaixunList v-if="caixunList.length > 0" :data="caixunList" @openQrDialog="openQrDialog"> </CaixunList>
|
||||||
v-if="caixunList.length > 0"
|
|
||||||
:data="caixunList"
|
|
||||||
:style="{ marginTop: isCommon ? '0px' : '0px' }"
|
|
||||||
@openQrDialog="openQrDialog"
|
|
||||||
>
|
|
||||||
</CaixunList>
|
|
||||||
<div v-else class="r_empty">
|
<div v-else class="r_empty">
|
||||||
<el-image :src="emptyImg" class="empty"></el-image>
|
<el-image :src="emptyImg" class="empty"></el-image>
|
||||||
<text class="empty_text">无搜索结果</text>
|
<text class="empty_text">无搜索结果</text>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
<div class="pagination" v-if="caixunList.length > 0">
|
||||||
|
<el-pagination
|
||||||
<div class="pagination" v-if="caixunList.length > 0">
|
style="width: 100%"
|
||||||
<el-pagination
|
background
|
||||||
style="width: 100%"
|
layout="slot, ->,prev, pager, next, jumper"
|
||||||
background
|
:page-sizes="[10, 20, 50, 100]"
|
||||||
layout="slot, ->,prev, pager, next, jumper"
|
v-model:page-size="leftForm.size"
|
||||||
:page-sizes="[10, 20, 50, 100]"
|
:total="leftForm.total"
|
||||||
v-model:page-size="leftForm.size"
|
v-model:current-page="leftForm.page"
|
||||||
:total="leftForm.total"
|
@current-change="currentChangeLeft"
|
||||||
v-model:current-page="leftForm.page"
|
@size-change="sizeChangeLeft"
|
||||||
@current-change="currentChangeLeft"
|
>
|
||||||
@size-change="sizeChangeLeft"
|
<div style="font-size: 14px; color: rgba(0, 0, 0, 0.6)">共 {{ leftForm.total }} 项数据</div>
|
||||||
>
|
</el-pagination>
|
||||||
<div style="font-size: 14px; color: rgba(0, 0, 0, 0.6)">共 {{ leftForm.total }} 项数据</div>
|
</div>
|
||||||
</el-pagination>
|
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
|
@ -100,15 +96,15 @@
|
||||||
<div class="line"></div>
|
<div class="line"></div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div class="right_tabs">
|
<!-- <div class="right_tabs">
|
||||||
<div :class="['tab_item', { active: tabIndex === 0 }]" @click="tabIndexChange(0)">H5</div>
|
<div :class="['tab_item', { active: tabIndex === 0 }]" @click="tabIndexChange(0)">H5</div>
|
||||||
|
|
||||||
<div :class="['tab_item', { active: tabIndex === 1 }]" @click="tabIndexChange(1)">视频</div>
|
<div :class="['tab_item', { active: tabIndex === 1 }]" @click="tabIndexChange(1)">视频</div>
|
||||||
</div>
|
</div> -->
|
||||||
|
|
||||||
<el-input
|
<el-input
|
||||||
v-if="!isCommon"
|
v-if="!isCommon"
|
||||||
:style="{ marginTop: isCommon ? '0px' : '20px' }"
|
:style="{ marginTop: '40px' }"
|
||||||
:prefix-icon="Search"
|
:prefix-icon="Search"
|
||||||
placeholder="请输入公司证券代码或公司简称搜索"
|
placeholder="请输入公司证券代码或公司简称搜索"
|
||||||
class="input"
|
class="input"
|
||||||
|
|
@ -118,10 +114,10 @@
|
||||||
@keyup.enter="sreachRight"
|
@keyup.enter="sreachRight"
|
||||||
/>
|
/>
|
||||||
|
|
||||||
<div v-loading="loadingRight">
|
<div v-loading="loadingRight" class="right_list_box">
|
||||||
<div
|
<div
|
||||||
v-if="rightList.length > 0"
|
v-if="rightList.length > 0"
|
||||||
style="gap: 10px; margin-top: 20px; display: flex; flex-direction: column; height: 53vh; overflow-y: auto; padding-right: 10px"
|
style="flex: 1 1 0;gap: 10px; margin-top: 20px; display: flex; flex-direction: column; height: 100%; overflow-y: auto; padding-right: 10px"
|
||||||
>
|
>
|
||||||
<div v-for="(item, index) in rightList" :key="index" class="right_item">
|
<div v-for="(item, index) in rightList" :key="index" class="right_item">
|
||||||
<div style="display: flex">
|
<div style="display: flex">
|
||||||
|
|
@ -139,24 +135,24 @@
|
||||||
<el-image :src="emptyImg" class="empty"></el-image>
|
<el-image :src="emptyImg" class="empty"></el-image>
|
||||||
<text class="empty_text">请联系中证报经营老师生成企业的可视化财讯</text>
|
<text class="empty_text">请联系中证报经营老师生成企业的可视化财讯</text>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
|
||||||
|
|
||||||
<div class="pagination" style="height: 40px">
|
<div class="pagination" style="height: 40px">
|
||||||
<el-pagination
|
<el-pagination
|
||||||
v-if="rightForm.total > 10"
|
v-if="rightForm.total > 10"
|
||||||
style="width: 100%"
|
style="width: 100%"
|
||||||
background
|
background
|
||||||
layout="slot, ->,prev, pager, next"
|
layout="slot, ->,prev, pager, next"
|
||||||
small
|
small
|
||||||
pager-count="3"
|
pager-count="3"
|
||||||
v-model:page-size="rightForm.size"
|
v-model:page-size="rightForm.size"
|
||||||
:total="rightForm.total"
|
:total="rightForm.total"
|
||||||
v-model:current-page="rightForm.page"
|
v-model:current-page="rightForm.page"
|
||||||
@current-change="currentChangeRight"
|
@current-change="currentChangeRight"
|
||||||
@size-change="sizeChangeRight"
|
@size-change="sizeChangeRight"
|
||||||
>
|
>
|
||||||
<div style="font-size: 14px; color: rgba(0, 0, 0, 0.6)" v-if="rightForm.total < 10000">共 {{ rightForm.total }} 项数据</div>
|
<div style="font-size: 14px; color: rgba(0, 0, 0, 0.6)" v-if="rightForm.total < 10000">共 {{ rightForm.total }} 项数据</div>
|
||||||
</el-pagination>
|
</el-pagination>
|
||||||
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
@ -177,8 +173,6 @@
|
||||||
import { ref, onMounted, nextTick, computed, onUnmounted, reactive } from 'vue';
|
import { ref, onMounted, nextTick, computed, onUnmounted, reactive } from 'vue';
|
||||||
import { Session } from '/@/utils/storage';
|
import { Session } from '/@/utils/storage';
|
||||||
import { NextLoading } from '/@/utils/loading';
|
import { NextLoading } from '/@/utils/loading';
|
||||||
import topBg from '../../../assets/caixun/home_bg_qiye.png';
|
|
||||||
import topBgJg from '../../../assets/caixun/home_bg_jianguan.png';
|
|
||||||
import logo from '../../../assets/caixun/company_logo.png';
|
import logo from '../../../assets/caixun/company_logo.png';
|
||||||
import { Search } from '@element-plus/icons-vue';
|
import { Search } from '@element-plus/icons-vue';
|
||||||
import CaixunList from './components/CaixunList.vue';
|
import CaixunList from './components/CaixunList.vue';
|
||||||
|
|
@ -207,7 +201,7 @@ const handleResize = () => {
|
||||||
isScaleDown.value = window.innerWidth < SCALE_THRESHOLD;
|
isScaleDown.value = window.innerWidth < SCALE_THRESHOLD;
|
||||||
};
|
};
|
||||||
|
|
||||||
const isCommon = ref(Session.get('roleName') == 'common' || Session.get('roleName') == 'subCommon');
|
const isCommon = ref(Session.get('roleName') == 'common' && Session.get('roleName') == 'subCommon');
|
||||||
const tabIndex = ref(0);
|
const tabIndex = ref(0);
|
||||||
const info = ref({
|
const info = ref({
|
||||||
company_name: Session.get('userData')?.companySimpleName,
|
company_name: Session.get('userData')?.companySimpleName,
|
||||||
|
|
@ -398,7 +392,7 @@ onMounted(() => {
|
||||||
|
|
||||||
getLeftList();
|
getLeftList();
|
||||||
getRightList();
|
getRightList();
|
||||||
getRightTotal();
|
// getRightTotal();
|
||||||
if (
|
if (
|
||||||
(Session.get('roleName') == 'common' || Session.get('roleName') == 'subCommon') &&
|
(Session.get('roleName') == 'common' || Session.get('roleName') == 'subCommon') &&
|
||||||
(!Session.get('userData').smartInfoSwitch || (Session.get('userData').smartInfoSwitch && Session.get('userData').smartInfoSwitch == 0))
|
(!Session.get('userData').smartInfoSwitch || (Session.get('userData').smartInfoSwitch && Session.get('userData').smartInfoSwitch == 0))
|
||||||
|
|
@ -414,50 +408,40 @@ onUnmounted(() => {
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
<style scoped lang="scss">
|
<style scoped lang="scss">
|
||||||
$maxWidth: 2000px;
|
|
||||||
|
|
||||||
/* 缩小状态 */
|
|
||||||
.scale-down {
|
|
||||||
/* 缩放内容 */
|
|
||||||
transform: scale(var(--scale-ratio, 0.9));
|
|
||||||
/* 计算缩放后的偏移量,使内容居中 */
|
|
||||||
transform-origin: top center;
|
|
||||||
/* 调整容器宽度,避免边缘被截断 */
|
|
||||||
width: calc(1 / var(--scale-ratio, 0.9) * 100%);
|
|
||||||
margin: 0 auto;
|
|
||||||
}
|
|
||||||
|
|
||||||
.all {
|
.all {
|
||||||
width: 100vw;
|
|
||||||
height: 100vh;
|
|
||||||
background: #f5f7fd;
|
|
||||||
overflow: hidden;
|
|
||||||
}
|
|
||||||
|
|
||||||
.topbg {
|
|
||||||
width: 100%;
|
width: 100%;
|
||||||
height: auto;
|
min-width: 950px;
|
||||||
|
height: calc(100vh - 60px);
|
||||||
|
min-height: 600px;
|
||||||
|
overflow: hidden;
|
||||||
|
background: url('/@/assets/images/bk_charts1.png') #f5f7fd no-repeat center 0;
|
||||||
|
background-size: 100% auto;
|
||||||
|
// padding-bottom: 24px;
|
||||||
|
padding: 24px 32px;
|
||||||
|
box-sizing: border-box;
|
||||||
}
|
}
|
||||||
|
|
||||||
.content {
|
.content {
|
||||||
display: flex;
|
display: flex;
|
||||||
|
box-sizing: border-box;
|
||||||
flex-direction: column;
|
flex-direction: column;
|
||||||
position: fixed;
|
height: 100%;
|
||||||
left: 50%;
|
overflow: auto;
|
||||||
transform: translate(-50%, 0);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
.top {
|
.top {
|
||||||
width: 80vw;
|
// width: 80vw;
|
||||||
min-width: 1200px;
|
width: 100%;
|
||||||
max-width: $maxWidth;
|
// height: 117px;
|
||||||
height: 117px;
|
|
||||||
background: linear-gradient(180deg, #e7effa 0%, #fafbfb 100%);
|
background: linear-gradient(180deg, #e7effa 0%, #fafbfb 100%);
|
||||||
box-shadow: 0px 2px 12px 0px rgba(186, 193, 205, 0.5), inset 0px 1px 0px 0px rgba(255, 255, 255, 0.5);
|
box-shadow: 0px 2px 12px 0px rgba(186, 193, 205, 0.5), inset 0px 1px 0px 0px rgba(255, 255, 255, 0.5);
|
||||||
border-radius: 8px;
|
border-radius: 8px;
|
||||||
display: flex;
|
display: flex;
|
||||||
justify-content: space-between;
|
justify-content: space-between;
|
||||||
align-items: center;
|
align-items: center;
|
||||||
|
padding: 20px 0;
|
||||||
|
box-sizing: border-box;
|
||||||
|
margin-top: 20px;
|
||||||
|
|
||||||
.top_left {
|
.top_left {
|
||||||
display: flex;
|
display: flex;
|
||||||
|
|
@ -466,11 +450,10 @@ $maxWidth: 2000px;
|
||||||
}
|
}
|
||||||
|
|
||||||
.logo {
|
.logo {
|
||||||
width: 118px;
|
width: 90px;
|
||||||
height: 118px;
|
height: 90px;
|
||||||
background: #e46713;
|
background: #e46713;
|
||||||
margin-left: 30px;
|
margin-left: 30px;
|
||||||
margin-top: -20px;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
.sub_info {
|
.sub_info {
|
||||||
|
|
@ -552,19 +535,23 @@ $maxWidth: 2000px;
|
||||||
}
|
}
|
||||||
|
|
||||||
.page_content {
|
.page_content {
|
||||||
width: 80vw;
|
width: 100%;
|
||||||
max-width: $maxWidth;
|
height: 100%;
|
||||||
min-width: 1200px;
|
flex: 1 1 0;
|
||||||
display: flex;
|
display: flex;
|
||||||
gap: 15px;
|
gap: 15px;
|
||||||
margin-top: 15px;
|
margin-top: 20px;
|
||||||
|
overflow: hidden;
|
||||||
|
|
||||||
.left {
|
.left {
|
||||||
width: 70%;
|
width: 70%;
|
||||||
|
height: 100%;
|
||||||
border-radius: 10px;
|
border-radius: 10px;
|
||||||
padding: 30px 30px;
|
padding: 30px 30px;
|
||||||
padding-bottom: 0;
|
|
||||||
background-color: white;
|
background-color: white;
|
||||||
|
box-sizing: border-box;
|
||||||
|
display: flex;
|
||||||
|
flex-direction: column;
|
||||||
}
|
}
|
||||||
|
|
||||||
.input {
|
.input {
|
||||||
|
|
@ -581,11 +568,16 @@ $maxWidth: 2000px;
|
||||||
font-style: normal;
|
font-style: normal;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
.r_list-box {
|
||||||
|
flex: 1 1 0;
|
||||||
|
height: 100%;
|
||||||
|
display: flex;
|
||||||
|
flex-direction: column;
|
||||||
|
}
|
||||||
|
|
||||||
.r_list {
|
.r_list {
|
||||||
// height: 57vh;
|
flex: 1 1 0;
|
||||||
// overflow: auto;
|
overflow-y: auto;
|
||||||
max-height: 55vh;
|
|
||||||
overflow-y: scroll;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
.pagination {
|
.pagination {
|
||||||
|
|
@ -600,9 +592,18 @@ $maxWidth: 2000px;
|
||||||
|
|
||||||
.right {
|
.right {
|
||||||
width: 30%;
|
width: 30%;
|
||||||
|
height: 100%;
|
||||||
background-color: white;
|
background-color: white;
|
||||||
border-radius: 10px;
|
border-radius: 10px;
|
||||||
flex: 1;
|
display: flex;
|
||||||
|
flex-direction: column;
|
||||||
|
|
||||||
|
.right_list_box {
|
||||||
|
flex: 1 1 0;
|
||||||
|
height: 100%;
|
||||||
|
display: flex;
|
||||||
|
flex-direction: column;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
.r_line {
|
.r_line {
|
||||||
|
|
@ -623,6 +624,7 @@ $maxWidth: 2000px;
|
||||||
|
|
||||||
.r_list_big_title {
|
.r_list_big_title {
|
||||||
height: 50px;
|
height: 50px;
|
||||||
|
flex: 0 0 50px;
|
||||||
}
|
}
|
||||||
|
|
||||||
.list_big_title {
|
.list_big_title {
|
||||||
|
|
|
||||||
|
|
@ -0,0 +1,405 @@
|
||||||
|
<template>
|
||||||
|
<div class="pc_all">
|
||||||
|
<div class="content">
|
||||||
|
<div class="mb24">
|
||||||
|
<el-breadcrumb separator="/" class="font16">
|
||||||
|
<el-breadcrumb-item :to="{ path: '/home' }">首页</el-breadcrumb-item>
|
||||||
|
<el-breadcrumb-item>海外资讯</el-breadcrumb-item>
|
||||||
|
</el-breadcrumb>
|
||||||
|
</div>
|
||||||
|
<div class="top_title">
|
||||||
|
<text class="pageTitle">编辑<text class="strong">精选</text></text>
|
||||||
|
|
||||||
|
<div class="r_input">
|
||||||
|
<input
|
||||||
|
v-model="form.keyword"
|
||||||
|
placeholder="请输入搜索内容"
|
||||||
|
class="input"
|
||||||
|
@keyup.enter="getNewsList"
|
||||||
|
@clear="getNewsList"
|
||||||
|
@blur="getNewsList"
|
||||||
|
/>
|
||||||
|
<div class="input_button" @click="getNewsList">搜索</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="line"></div>
|
||||||
|
|
||||||
|
<div class="r_list">
|
||||||
|
<div class="list_item" v-for="(item, index) in newsList" :key="index">
|
||||||
|
<div class="list_item_content">
|
||||||
|
<text class="item_title" @click="goDetail(item)" v-html="item.title"></text>
|
||||||
|
<text class="item_summary" v-html="item.summary"></text>
|
||||||
|
|
||||||
|
<div class="item_bottom">
|
||||||
|
<div>
|
||||||
|
<text class="time">中国证券报</text>
|
||||||
|
<text class="time" style="margin-left: 15px">{{ formatTime(item.time) }}</text>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="pagination" style="width: 100%; display: flex; justify-content: flex-end" v-if="newsList && newsList.length > 0">
|
||||||
|
<el-pagination
|
||||||
|
popper-class="popper-style"
|
||||||
|
background
|
||||||
|
v-model:current-page="currentPage"
|
||||||
|
:page-size="form.size"
|
||||||
|
layout="total, sizes, prev, pager, next, jumper"
|
||||||
|
:total="form.total"
|
||||||
|
@current-change="currentChange"
|
||||||
|
@size-change="sizeChange"
|
||||||
|
>
|
||||||
|
</el-pagination>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<script setup lang="ts">
|
||||||
|
import { ref, onMounted, onUnmounted, reactive } from 'vue';
|
||||||
|
import { editTopNews } from '/@/api/cankao';
|
||||||
|
import { useRoute, useRouter } from 'vue-router';
|
||||||
|
|
||||||
|
const pageSizes = ref([10, 20, 30, 40]);
|
||||||
|
const form = reactive({
|
||||||
|
keyword: '',
|
||||||
|
page: 1,
|
||||||
|
size: 10,
|
||||||
|
total: 10,
|
||||||
|
});
|
||||||
|
const currentPage = ref(form.page);
|
||||||
|
|
||||||
|
const route = useRoute();
|
||||||
|
const router = useRouter();
|
||||||
|
|
||||||
|
const pageType = ref(4);
|
||||||
|
const newsList = ref([]);
|
||||||
|
|
||||||
|
function formatTime(timestamp) {
|
||||||
|
const date = new Date(Number(timestamp).toString().length === 10 ? timestamp * 1000 : timestamp);
|
||||||
|
return (
|
||||||
|
[date.getFullYear(), (date.getMonth() + 1).toString().padStart(2, '0'), date.getDate().toString().padStart(2, '0')].join('-') +
|
||||||
|
' ' +
|
||||||
|
[date.getHours().toString().padStart(2, '0'), date.getMinutes().toString().padStart(2, '0'), date.getSeconds().toString().padStart(2, '0')].join(
|
||||||
|
':'
|
||||||
|
)
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
async function getNewsList() {
|
||||||
|
// 编辑精选
|
||||||
|
let { code, data } = await editTopNews({
|
||||||
|
...form,
|
||||||
|
});
|
||||||
|
if (code == 200) {
|
||||||
|
newsList.value = data.list;
|
||||||
|
form.total = data.total;
|
||||||
|
data.list.forEach((item) => {
|
||||||
|
item._title_ = item.title;
|
||||||
|
item.summary = item.summary.replace(form.keyword, "<span style='color: #007aff'>" + form.keyword + '</span>');
|
||||||
|
item.title = item.title.replace(form.keyword, "<span style='color: #007aff'>" + form.keyword + '</span>');
|
||||||
|
});
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
function goDetail(item) {
|
||||||
|
let id = null;
|
||||||
|
if (pageType.value != 4) {
|
||||||
|
id = item.news_id;
|
||||||
|
} else {
|
||||||
|
id = item.id;
|
||||||
|
}
|
||||||
|
|
||||||
|
router.push({
|
||||||
|
path: '/indexPC',
|
||||||
|
query: {
|
||||||
|
id: id,
|
||||||
|
type: pageType.value,
|
||||||
|
},
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
function currentChange(page) {
|
||||||
|
form.page = page;
|
||||||
|
getNewsList();
|
||||||
|
}
|
||||||
|
|
||||||
|
function sizeChange(size) {
|
||||||
|
form.page = 1;
|
||||||
|
currentPage.value = 1;
|
||||||
|
form.size = size;
|
||||||
|
getNewsList();
|
||||||
|
}
|
||||||
|
|
||||||
|
onMounted(() => {
|
||||||
|
getNewsList();
|
||||||
|
});
|
||||||
|
</script>
|
||||||
|
<style scoped lang="scss">
|
||||||
|
.pc_all {
|
||||||
|
background: #f5f7fd;
|
||||||
|
width: 100vw;
|
||||||
|
min-height: 100vh;
|
||||||
|
display: flex;
|
||||||
|
flex-direction: column;
|
||||||
|
// align-items: center;
|
||||||
|
}
|
||||||
|
|
||||||
|
.content {
|
||||||
|
background-color: white;
|
||||||
|
// width: 55vw;
|
||||||
|
width: 100vw;
|
||||||
|
min-height: 100vh;
|
||||||
|
padding: 24px 32px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.top_title {
|
||||||
|
display: flex;
|
||||||
|
align-items: center;
|
||||||
|
|
||||||
|
.pageTitle {
|
||||||
|
font-family: AlibabaPuHuiTiM;
|
||||||
|
font-size: 26px;
|
||||||
|
color: #1a1a1a;
|
||||||
|
font-weight: bold;
|
||||||
|
|
||||||
|
.strong {
|
||||||
|
color: #007aff;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
.title_icon {
|
||||||
|
width: 90px;
|
||||||
|
height: 25px;
|
||||||
|
margin-left: 10px;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
.line {
|
||||||
|
width: 100%;
|
||||||
|
height: 1px;
|
||||||
|
background-color: #f0f0f0;
|
||||||
|
margin-top: 25px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.r_list {
|
||||||
|
display: flex;
|
||||||
|
flex-direction: column;
|
||||||
|
}
|
||||||
|
|
||||||
|
.list_item {
|
||||||
|
display: flex;
|
||||||
|
min-height: 100px;
|
||||||
|
padding: 15px 0;
|
||||||
|
border-bottom: 1px solid #f6f6f6;
|
||||||
|
margin-top: 15px;
|
||||||
|
|
||||||
|
.r_list_item_num {
|
||||||
|
width: 50px;
|
||||||
|
|
||||||
|
display: flex;
|
||||||
|
text-align: center;
|
||||||
|
}
|
||||||
|
|
||||||
|
.list_item_num {
|
||||||
|
margin-top: 5px;
|
||||||
|
width: 20px;
|
||||||
|
height: 20px;
|
||||||
|
|
||||||
|
display: flex;
|
||||||
|
text-align: center;
|
||||||
|
justify-content: center;
|
||||||
|
align-items: center;
|
||||||
|
|
||||||
|
font-family: PingFangSC, PingFang SC;
|
||||||
|
font-weight: 500;
|
||||||
|
font-size: 18px;
|
||||||
|
color: #ffffff;
|
||||||
|
padding-bottom: 2.5px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.num1 {
|
||||||
|
background: linear-gradient(168deg, #ffb505 0%, #fdcf1b 100%);
|
||||||
|
border-radius: 3px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.num2 {
|
||||||
|
background: linear-gradient(169deg, #a9c3e3 0%, #92b2e0 100%);
|
||||||
|
border-radius: 3px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.num3 {
|
||||||
|
background: linear-gradient(169deg, #f2996e 0%, #f77741 100%);
|
||||||
|
border-radius: 3px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.nol_num {
|
||||||
|
font-family: PingFangSC, PingFang SC;
|
||||||
|
font-weight: 500;
|
||||||
|
font-size: 20px;
|
||||||
|
color: #93a2b3;
|
||||||
|
line-height: 28px;
|
||||||
|
text-align: left;
|
||||||
|
font-style: normal;
|
||||||
|
}
|
||||||
|
|
||||||
|
.list_item_content {
|
||||||
|
display: flex;
|
||||||
|
flex-direction: column;
|
||||||
|
|
||||||
|
flex: 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
.item_title:hover {
|
||||||
|
color: #007aff;
|
||||||
|
}
|
||||||
|
|
||||||
|
.item_title {
|
||||||
|
font-family: PingFangSC, PingFang SC;
|
||||||
|
font-weight: bold;
|
||||||
|
font-size: 20px;
|
||||||
|
color: #1a1a1a;
|
||||||
|
cursor: pointer;
|
||||||
|
}
|
||||||
|
|
||||||
|
.item_summary {
|
||||||
|
font-family: 'Microsoft YaHei', 'PingFangSC', 'PingFang SC';
|
||||||
|
font-weight: normal;
|
||||||
|
font-size: 16px;
|
||||||
|
color: #333333;
|
||||||
|
margin-top: 10px;
|
||||||
|
|
||||||
|
/* 必须:限制内容不溢出容器 */
|
||||||
|
overflow: hidden;
|
||||||
|
/* 必须:超出部分显示省略号 */
|
||||||
|
text-overflow: ellipsis;
|
||||||
|
/* 必须:将元素设置为webkit弹性盒模型(用于控制行数) */
|
||||||
|
display: -webkit-box;
|
||||||
|
/* 关键:限制显示的行数(这里设为2行) */
|
||||||
|
-webkit-line-clamp: 2;
|
||||||
|
/* 必须:设置弹性盒的排列方向为垂直(让文本换行) */
|
||||||
|
-webkit-box-orient: vertical;
|
||||||
|
|
||||||
|
/* 可选:调整行高和容器高度,确保刚好容纳2行文本 */
|
||||||
|
line-height: 1.5;
|
||||||
|
/* 行高 */
|
||||||
|
max-height: 3em;
|
||||||
|
/* 2行总高度 = 行高 × 2(1.5×2=3) */
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
.item_bottom {
|
||||||
|
display: flex;
|
||||||
|
justify-content: space-between;
|
||||||
|
margin-top: 15px;
|
||||||
|
margin-bottom: 5px;
|
||||||
|
|
||||||
|
.time {
|
||||||
|
font-family: PingFangSC, PingFang SC;
|
||||||
|
font-weight: 400;
|
||||||
|
font-size: 14px;
|
||||||
|
color: #919191;
|
||||||
|
line-height: 20px;
|
||||||
|
text-align: left;
|
||||||
|
font-style: normal;
|
||||||
|
}
|
||||||
|
|
||||||
|
.score {
|
||||||
|
font-family: PingFangSC, PingFang SC;
|
||||||
|
font-weight: 600;
|
||||||
|
font-size: 18px;
|
||||||
|
color: #ffa800;
|
||||||
|
line-height: 25px;
|
||||||
|
text-align: right;
|
||||||
|
font-style: normal;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
.search_btn {
|
||||||
|
border: none;
|
||||||
|
display: flex;
|
||||||
|
width: 56px;
|
||||||
|
height: 44px;
|
||||||
|
padding: 8px 15px;
|
||||||
|
justify-content: center;
|
||||||
|
align-items: center;
|
||||||
|
gap: 10px;
|
||||||
|
flex-shrink: 0;
|
||||||
|
border-radius: 8px;
|
||||||
|
background: #007aff;
|
||||||
|
margin-right: 5px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.input {
|
||||||
|
border: none;
|
||||||
|
flex: 1;
|
||||||
|
margin-left: 10px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.input_button {
|
||||||
|
display: flex;
|
||||||
|
width: 140px;
|
||||||
|
height: 100%;
|
||||||
|
// padding: 8px 15px;
|
||||||
|
justify-content: center;
|
||||||
|
align-items: center;
|
||||||
|
gap: 10px;
|
||||||
|
flex-shrink: 0;
|
||||||
|
border-radius: 0 10px 10px 0;
|
||||||
|
background: #007aff;
|
||||||
|
|
||||||
|
color: white;
|
||||||
|
font-family: PingFangSC, PingFang SC;
|
||||||
|
font-weight: 400;
|
||||||
|
font-size: 18px;
|
||||||
|
color: #ffffff;
|
||||||
|
line-height: 25px;
|
||||||
|
text-align: left;
|
||||||
|
font-style: normal;
|
||||||
|
cursor: pointer;
|
||||||
|
}
|
||||||
|
|
||||||
|
.r_input {
|
||||||
|
background-color: white;
|
||||||
|
border-radius: 10px;
|
||||||
|
border: 1px solid #e3e3e3;
|
||||||
|
flex: 1;
|
||||||
|
height: 52px;
|
||||||
|
display: flex;
|
||||||
|
align-items: center;
|
||||||
|
margin-left: 30px;
|
||||||
|
margin-top: 3px;
|
||||||
|
|
||||||
|
:deep(.input::placeholder) {
|
||||||
|
color: #ccc;
|
||||||
|
font-family: 'PingFang SC';
|
||||||
|
font-size: 16px;
|
||||||
|
font-style: normal;
|
||||||
|
font-weight: 400;
|
||||||
|
line-height: normal;
|
||||||
|
}
|
||||||
|
|
||||||
|
:deep(.el-input__wrapper) {
|
||||||
|
box-shadow: 0 0 0 #fff;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
.pagination {
|
||||||
|
margin-top: 24px;
|
||||||
|
width: 100%;
|
||||||
|
display: flex;
|
||||||
|
text-align: center;
|
||||||
|
justify-content: center;
|
||||||
|
align-items: center;
|
||||||
|
// :deep(.el-pager li){
|
||||||
|
// border: 1px solid #ccc;
|
||||||
|
// background: transparent;
|
||||||
|
// }
|
||||||
|
}
|
||||||
|
|
||||||
|
:deep(.el-select-dropdown__item.is-selected) {
|
||||||
|
color: #007aff;
|
||||||
|
}
|
||||||
|
</style>
|
||||||
|
|
@ -0,0 +1,301 @@
|
||||||
|
<template>
|
||||||
|
<div class="pc_all">
|
||||||
|
<!-- <PageTop></PageTop> -->
|
||||||
|
|
||||||
|
<div class="content">
|
||||||
|
<!-- <div class="top" @click="goBack">
|
||||||
|
<el-icon><ArrowLeft /></el-icon>
|
||||||
|
<text>返回列表</text>
|
||||||
|
</div>
|
||||||
|
<div class="line"></div> -->
|
||||||
|
|
||||||
|
<div class="mb30">
|
||||||
|
<el-breadcrumb separator="/" class="font16">
|
||||||
|
<el-breadcrumb-item :to="{ path: '/home' }">首页</el-breadcrumb-item>
|
||||||
|
<el-breadcrumb-item :to="{ path: '/realtimeInfo' }">海外资讯</el-breadcrumb-item>
|
||||||
|
<el-breadcrumb-item>{{ infoData?.title }}</el-breadcrumb-item>
|
||||||
|
</el-breadcrumb>
|
||||||
|
</div>
|
||||||
|
<div class="title">
|
||||||
|
{{ infoData?.title }}
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="sub_title">
|
||||||
|
<text class="srouse"> {{ infoData?.tag }}</text>
|
||||||
|
<text class="time"> {{ infoData?.publishTime }}</text>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="abstract" v-if="infoData?.summary">
|
||||||
|
{{ infoData?.summary }}
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<!-- 两个标签 start -->
|
||||||
|
<div class="r_tag_two">
|
||||||
|
<div style="display: flex" v-if="infoData?.industryLabels && infoData?.industryLabels.length > 0">
|
||||||
|
<text class="tag_title">行业分类:</text>
|
||||||
|
<div class="r_tags">
|
||||||
|
<div class="tag" style="background-color: #fff9ec; color: #ffb100" v-for="(item, index) in infoData?.industryLabels" :key="index">
|
||||||
|
{{ item }}
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div style="display: flex" v-if="infoData?.conceptLabels && infoData?.conceptLabels.length > 0">
|
||||||
|
<text class="tag_title">概念标签:</text>
|
||||||
|
<div class="r_tags">
|
||||||
|
<div class="tag" style="background-color: #f5f8fe; color: #007aff" v-for="(item, index) in infoData?.conceptLabels" :key="index">
|
||||||
|
{{ item }}
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<!-- 两个标签 end -->
|
||||||
|
|
||||||
|
<div class="text" v-html="infoData.content" style="white-space: pre-wrap"></div>
|
||||||
|
<!-- <div class="text">
|
||||||
|
<text >{{ infoData.content }}</text>
|
||||||
|
</div> -->
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<script setup lang="ts">
|
||||||
|
import { onMounted, ref } from 'vue';
|
||||||
|
import { fetchArticleDetail } from '/@/api/cankao';
|
||||||
|
import { Session } from '/@/utils/storage';
|
||||||
|
import { useRoute, useRouter } from 'vue-router';
|
||||||
|
import { ArrowLeft } from '@element-plus/icons-vue';
|
||||||
|
|
||||||
|
const router = useRouter();
|
||||||
|
const route = useRoute();
|
||||||
|
|
||||||
|
function goBack() {
|
||||||
|
// uni.navigateBack();
|
||||||
|
|
||||||
|
// router.back();
|
||||||
|
router.push({
|
||||||
|
path: '/realtimeInfo',
|
||||||
|
});
|
||||||
|
// uni.navigateTo({
|
||||||
|
// url: '/pages/realtimeInfo/pc/index?type=' + type.value,
|
||||||
|
// });
|
||||||
|
}
|
||||||
|
|
||||||
|
const type = ref(0);
|
||||||
|
const infoData = ref({});
|
||||||
|
onMounted(async () => {
|
||||||
|
console.log('🚀 ~ router:', route.query.type);
|
||||||
|
if (route.query.type) {
|
||||||
|
type.value = route.query.type;
|
||||||
|
}
|
||||||
|
|
||||||
|
// uni.showLoading();
|
||||||
|
const res = await fetchArticleDetail({
|
||||||
|
id: route.query?.id,
|
||||||
|
});
|
||||||
|
console.log('🚀 ~ res:', res);
|
||||||
|
// uni.hideLoading();
|
||||||
|
if (res.code === 200) {
|
||||||
|
infoData.value = res.data;
|
||||||
|
window.document.title = res.data.title;
|
||||||
|
}
|
||||||
|
});
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<style lang="scss" scoped>
|
||||||
|
.pc_all {
|
||||||
|
background: #f5f7fd;
|
||||||
|
width: 100vw;
|
||||||
|
min-height: 100vh;
|
||||||
|
display: flex;
|
||||||
|
flex-direction: column;
|
||||||
|
align-items: center;
|
||||||
|
}
|
||||||
|
|
||||||
|
.content {
|
||||||
|
background-color: white;
|
||||||
|
width: 100%;
|
||||||
|
// min-width: 1200px;
|
||||||
|
min-height: 100vh;
|
||||||
|
padding: 24px 32px;
|
||||||
|
background-color: #fff;
|
||||||
|
box-sizing: border-box;
|
||||||
|
}
|
||||||
|
|
||||||
|
.page_top {
|
||||||
|
width: 100vw;
|
||||||
|
height: 60px;
|
||||||
|
background-color: white;
|
||||||
|
margin-bottom: 15px;
|
||||||
|
box-shadow: 0 2.5px 1px rgba($color: #6d6d6d, $alpha: 0.1);
|
||||||
|
display: flex;
|
||||||
|
justify-content: center;
|
||||||
|
align-items: center;
|
||||||
|
|
||||||
|
.logo {
|
||||||
|
width: 95px;
|
||||||
|
height: 25px;
|
||||||
|
margin-right: 25px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.r_menu {
|
||||||
|
width: 55vw;
|
||||||
|
min-width: 1250px;
|
||||||
|
height: 100%;
|
||||||
|
display: flex;
|
||||||
|
align-items: center;
|
||||||
|
}
|
||||||
|
|
||||||
|
.r_menu_item {
|
||||||
|
display: flex;
|
||||||
|
flex-direction: column;
|
||||||
|
height: 100%;
|
||||||
|
position: relative;
|
||||||
|
justify-content: center;
|
||||||
|
align-items: center;
|
||||||
|
}
|
||||||
|
|
||||||
|
.menu_item {
|
||||||
|
font-family: PingFangSC, PingFang SC;
|
||||||
|
font-weight: bold;
|
||||||
|
font-size: 16px;
|
||||||
|
color: #1a1a1a;
|
||||||
|
}
|
||||||
|
|
||||||
|
.line {
|
||||||
|
width: 64px;
|
||||||
|
height: 4px;
|
||||||
|
background: #007aff;
|
||||||
|
position: absolute;
|
||||||
|
bottom: 0;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
.top {
|
||||||
|
width: 100%;
|
||||||
|
height: 60px;
|
||||||
|
display: flex;
|
||||||
|
flex-direction: row;
|
||||||
|
align-items: center;
|
||||||
|
justify-content: flex-start;
|
||||||
|
// padding-left: 15px;
|
||||||
|
|
||||||
|
.icon_back {
|
||||||
|
width: 17px;
|
||||||
|
height: 19px;
|
||||||
|
}
|
||||||
|
|
||||||
|
text {
|
||||||
|
font-family: PingFangSC, PingFang SC;
|
||||||
|
font-weight: normal;
|
||||||
|
font-size: 19px;
|
||||||
|
color: #919191;
|
||||||
|
text-align: left;
|
||||||
|
font-style: normal;
|
||||||
|
margin-left: 5px;
|
||||||
|
cursor: pointer;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
.line {
|
||||||
|
width: 100%;
|
||||||
|
height: 4px;
|
||||||
|
background: #f0f0f0;
|
||||||
|
margin-bottom: 20px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.title {
|
||||||
|
font-family: PingFangSC, PingFang SC;
|
||||||
|
font-weight: bold;
|
||||||
|
font-size: 24px;
|
||||||
|
color: #1a1a1a;
|
||||||
|
margin-top: 12px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.sub_title {
|
||||||
|
display: flex;
|
||||||
|
justify-content: space-between;
|
||||||
|
margin-top: 5px;
|
||||||
|
|
||||||
|
.srouse {
|
||||||
|
font-family: PingFangSC, PingFang SC;
|
||||||
|
font-weight: 400;
|
||||||
|
font-size: 16px;
|
||||||
|
color: #919191;
|
||||||
|
}
|
||||||
|
|
||||||
|
.time {
|
||||||
|
font-family: PingFangSC, PingFang SC;
|
||||||
|
font-weight: 400;
|
||||||
|
font-size: 16px;
|
||||||
|
color: #919191;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
.abstract {
|
||||||
|
font-family: 'Microsoft YaHei', 'PingFangSC', 'PingFang SC';
|
||||||
|
font-weight: 400;
|
||||||
|
font-size: 16px;
|
||||||
|
color: #666666;
|
||||||
|
line-height: 26px;
|
||||||
|
text-align: left;
|
||||||
|
font-style: normal;
|
||||||
|
|
||||||
|
background: #f5f8fe;
|
||||||
|
border: 1px solid #e3ecfd;
|
||||||
|
|
||||||
|
padding: 15px;
|
||||||
|
border-radius: 10px;
|
||||||
|
|
||||||
|
margin-top: 25px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.r_tag_two {
|
||||||
|
display: flex;
|
||||||
|
margin-top: 20px;
|
||||||
|
justify-content: space-between;
|
||||||
|
}
|
||||||
|
|
||||||
|
.r_tags {
|
||||||
|
display: flex;
|
||||||
|
gap: 10px;
|
||||||
|
|
||||||
|
.tag {
|
||||||
|
font-family: PingFangSC, PingFang SC;
|
||||||
|
font-weight: 400;
|
||||||
|
font-size: 13px;
|
||||||
|
color: #ffb100;
|
||||||
|
line-height: 18px;
|
||||||
|
text-align: left;
|
||||||
|
font-style: normal;
|
||||||
|
|
||||||
|
padding: 2.5px 10px;
|
||||||
|
border-radius: 5px;
|
||||||
|
|
||||||
|
white-space: nowrap;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
.tag_title {
|
||||||
|
font-family: PingFangSC, PingFang SC;
|
||||||
|
font-weight: 400;
|
||||||
|
font-size: 14px;
|
||||||
|
color: #999999;
|
||||||
|
line-height: 20px;
|
||||||
|
text-align: left;
|
||||||
|
font-style: normal;
|
||||||
|
|
||||||
|
white-space: nowrap;
|
||||||
|
}
|
||||||
|
|
||||||
|
.text {
|
||||||
|
font-family: 'Microsoft YaHei', 'PingFangSC', 'PingFang SC';
|
||||||
|
font-weight: 400;
|
||||||
|
font-size: 16px;
|
||||||
|
color: #333;
|
||||||
|
line-height: 28px;
|
||||||
|
text-align: left;
|
||||||
|
font-style: normal;
|
||||||
|
margin-top: 35px;
|
||||||
|
}
|
||||||
|
</style>
|
||||||
|
|
@ -1,7 +1,7 @@
|
||||||
<template>
|
<template>
|
||||||
<el-tabs v-model="fileType" class="demo-tabs" @tab-click="handleTabClick">
|
<el-tabs v-model="fileType" class="demo-tabs" @tab-click="handleTabClick">
|
||||||
<el-tab-pane label="单文件检校" :name="0"></el-tab-pane>
|
<el-tab-pane label="单文件检校" :name="0"></el-tab-pane>
|
||||||
<el-tab-pane label="跨文件检校(公测)" :name="1"></el-tab-pane>
|
<!-- <el-tab-pane label="跨文件检校(公测)" :name="1"></el-tab-pane> -->
|
||||||
</el-tabs>
|
</el-tabs>
|
||||||
|
|
||||||
<TableComponents
|
<TableComponents
|
||||||
|
|
|
||||||
|
|
@ -1,5 +1,11 @@
|
||||||
<template>
|
<template>
|
||||||
<div class="all" v-loading="loading">
|
<div class="all" v-loading="loading">
|
||||||
|
<div class="breadcrumb">
|
||||||
|
<el-breadcrumb separator="/" class="font16">
|
||||||
|
<el-breadcrumb-item :to="{ path: '/home' }">首页</el-breadcrumb-item>
|
||||||
|
<el-breadcrumb-item>业务看板</el-breadcrumb-item>
|
||||||
|
</el-breadcrumb>
|
||||||
|
</div>
|
||||||
<div class="tabs">
|
<div class="tabs">
|
||||||
<div
|
<div
|
||||||
v-for="item in tabList"
|
v-for="item in tabList"
|
||||||
|
|
@ -526,7 +532,8 @@ $minWidth: 68.75rem;
|
||||||
$contentWidth: 85vw;
|
$contentWidth: 85vw;
|
||||||
|
|
||||||
.all {
|
.all {
|
||||||
background-color: #f5f7fd;
|
background: url('/@/assets/images/bk_charts1.png') #f5f7fd no-repeat center 0;
|
||||||
|
background-size: 100% auto;
|
||||||
min-height: 100vh;
|
min-height: 100vh;
|
||||||
display: flex;
|
display: flex;
|
||||||
flex-direction: column;
|
flex-direction: column;
|
||||||
|
|
@ -538,6 +545,14 @@ $contentWidth: 85vw;
|
||||||
overflow: auto;
|
overflow: auto;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
.breadcrumb {
|
||||||
|
width: $contentWidth;
|
||||||
|
min-width: $minWidth;
|
||||||
|
display: flex;
|
||||||
|
justify-content: flex-start;
|
||||||
|
gap: 20px;
|
||||||
|
}
|
||||||
|
|
||||||
.tabs {
|
.tabs {
|
||||||
width: $contentWidth;
|
width: $contentWidth;
|
||||||
min-width: $minWidth;
|
min-width: $minWidth;
|
||||||
|
|
|
||||||
|
|
@ -124,7 +124,8 @@ onUnmounted(() => {
|
||||||
min-width: 1400px;
|
min-width: 1400px;
|
||||||
min-height: calc(100vh - 56px);
|
min-height: calc(100vh - 56px);
|
||||||
margin: 0 auto;
|
margin: 0 auto;
|
||||||
background: url('/@/assets/images/bk_charts.png') no-repeat center 0;
|
background: url('/@/assets/images/bk_charts1.png') #f5f7fd no-repeat center 0;
|
||||||
|
background-size: 100% auto;
|
||||||
box-sizing: border-box;
|
box-sizing: border-box;
|
||||||
}
|
}
|
||||||
.w1400 {
|
.w1400 {
|
||||||
|
|
|
||||||
|
|
@ -1,5 +1,11 @@
|
||||||
<template>
|
<template>
|
||||||
<div class="container">
|
<div class="container">
|
||||||
|
<div class="mb20">
|
||||||
|
<el-breadcrumb separator="/" class="font16">
|
||||||
|
<el-breadcrumb-item :to="{ path: '/home' }">首页</el-breadcrumb-item>
|
||||||
|
<el-breadcrumb-item>智能信披库</el-breadcrumb-item>
|
||||||
|
</el-breadcrumb>
|
||||||
|
</div>
|
||||||
<div class="nav-box-wrap">
|
<div class="nav-box-wrap">
|
||||||
<div class="nav-box">
|
<div class="nav-box">
|
||||||
<template v-for="item in navList" :key="item.index">
|
<template v-for="item in navList" :key="item.index">
|
||||||
|
|
@ -22,7 +28,11 @@
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
<div class="setup-btn">
|
<div class="setup-btn">
|
||||||
<el-button size="default" type="primary" @click="dialogVisible = true">设置关注公司</el-button>
|
<ZButton btn-width="111px" @btnClick="dialogVisible = true">
|
||||||
|
<div class="btn_content">
|
||||||
|
<text>设置关注公司</text>
|
||||||
|
</div>
|
||||||
|
</ZButton>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
@ -81,6 +91,7 @@
|
||||||
remote
|
remote
|
||||||
placeholder="公司简称、证券代码"
|
placeholder="公司简称、证券代码"
|
||||||
size="large"
|
size="large"
|
||||||
|
clearable
|
||||||
:remote-method="searchCompanyFn"
|
:remote-method="searchCompanyFn"
|
||||||
@change="handleQueryData"
|
@change="handleQueryData"
|
||||||
/>
|
/>
|
||||||
|
|
@ -397,14 +408,10 @@
|
||||||
placeholder="公司简称、证券代码"
|
placeholder="公司简称、证券代码"
|
||||||
style="width: 176px"
|
style="width: 176px"
|
||||||
size="default"
|
size="default"
|
||||||
v-model="dialogFilterOpt.company"
|
:suffix-icon="Search"
|
||||||
|
v-model="dialogFilterOpt.keyword"
|
||||||
@keyup.enter="handleDialogSelect"
|
@keyup.enter="handleDialogSelect"
|
||||||
>
|
>
|
||||||
<template #suffix>
|
|
||||||
<el-icon class="el-input__icon">
|
|
||||||
<Search />
|
|
||||||
</el-icon>
|
|
||||||
</template>
|
|
||||||
</el-input>
|
</el-input>
|
||||||
</div>
|
</div>
|
||||||
<div>
|
<div>
|
||||||
|
|
@ -465,7 +472,7 @@
|
||||||
@confirm="handleDevFavCompany(scope.row.id)"
|
@confirm="handleDevFavCompany(scope.row.id)"
|
||||||
>
|
>
|
||||||
<template #reference>
|
<template #reference>
|
||||||
<el-button size="defaultt" text type="danger">删除</el-button>
|
<el-button text style="color: #409eff">删除</el-button>
|
||||||
</template>
|
</template>
|
||||||
</el-popconfirm>
|
</el-popconfirm>
|
||||||
</template>
|
</template>
|
||||||
|
|
@ -508,6 +515,7 @@ import { useRouter, useRoute } from 'vue-router';
|
||||||
import icon_choose from '/@/assets/icon_choose.png';
|
import icon_choose from '/@/assets/icon_choose.png';
|
||||||
import { doMaiDian, searchCompany } from '/@/api/api';
|
import { doMaiDian, searchCompany } from '/@/api/api';
|
||||||
import { getDictList } from '/@/api/api';
|
import { getDictList } from '/@/api/api';
|
||||||
|
import ZButton from '/@/components/ZButton/index.vue';
|
||||||
|
|
||||||
const route = useRoute();
|
const route = useRoute();
|
||||||
const router = useRouter();
|
const router = useRouter();
|
||||||
|
|
@ -1095,9 +1103,10 @@ onMounted(async () => {
|
||||||
.container {
|
.container {
|
||||||
width: 100%;
|
width: 100%;
|
||||||
margin: 0 auto;
|
margin: 0 auto;
|
||||||
background: url('/@/assets/images/bk_charts1.png') no-repeat center 0;
|
background: url('/@/assets/images/bk_charts1.png') #f5f7fd no-repeat center 0;
|
||||||
|
background-size: 100% auto;
|
||||||
// padding-bottom: 24px;
|
// padding-bottom: 24px;
|
||||||
padding: 32px;
|
padding: 20px 32px 32px;
|
||||||
min-height: calc(100vh - 56px);
|
min-height: calc(100vh - 56px);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -1372,9 +1381,9 @@ onMounted(async () => {
|
||||||
box-shadow: 0 0 0px rgba(0, 0, 0, 0.1);
|
box-shadow: 0 0 0px rgba(0, 0, 0, 0.1);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
:deep(.el-input__wrapper) {
|
// :deep(.el-input__wrapper) {
|
||||||
padding-right: 2px;
|
// padding-right: 2px;
|
||||||
}
|
// }
|
||||||
|
|
||||||
:deep(.el-select--large .el-select__wrapper) {
|
:deep(.el-select--large .el-select__wrapper) {
|
||||||
min-height: 32px;
|
min-height: 32px;
|
||||||
|
|
@ -1435,4 +1444,18 @@ onMounted(async () => {
|
||||||
:deep(.el-select__placeholder.is-transparent) {
|
:deep(.el-select__placeholder.is-transparent) {
|
||||||
color: #ccc;
|
color: #ccc;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
.btn_content {
|
||||||
|
display: flex;
|
||||||
|
align-items: center;
|
||||||
|
|
||||||
|
text {
|
||||||
|
color: #ffffff;
|
||||||
|
text-align: center;
|
||||||
|
font-size: 14px;
|
||||||
|
font-style: normal;
|
||||||
|
font-weight: 500;
|
||||||
|
line-height: 18.2px;
|
||||||
|
}
|
||||||
|
}
|
||||||
</style>
|
</style>
|
||||||
|
|
|
||||||
|
|
@ -2,7 +2,12 @@
|
||||||
<div>
|
<div>
|
||||||
<Esign :signUrl="signUrl" v-if="!isSign"></Esign>
|
<Esign :signUrl="signUrl" v-if="!isSign"></Esign>
|
||||||
<div class="container" v-else>
|
<div class="container" v-else>
|
||||||
<text class="big_title"> 文件签署管理 </text>
|
<div class="mb20">
|
||||||
|
<el-breadcrumb separator="/" class="font16">
|
||||||
|
<el-breadcrumb-item :to="{ path: '/home' }">首页</el-breadcrumb-item>
|
||||||
|
<el-breadcrumb-item>电子签</el-breadcrumb-item>
|
||||||
|
</el-breadcrumb>
|
||||||
|
</div>
|
||||||
|
|
||||||
<div class="table_bk">
|
<div class="table_bk">
|
||||||
<el-form class="el_form" style="width: 100%; display: flex; justify-content: space-between" @submit.native.prevent>
|
<el-form class="el_form" style="width: 100%; display: flex; justify-content: space-between" @submit.native.prevent>
|
||||||
|
|
@ -344,8 +349,9 @@ onMounted(async () => {
|
||||||
width: 100%;
|
width: 100%;
|
||||||
min-height: calc(100vh - 56px);
|
min-height: calc(100vh - 56px);
|
||||||
margin: 0 auto;
|
margin: 0 auto;
|
||||||
background: url('/@/assets/images/bk_charts.png') no-repeat center 0;
|
padding: 24px 32px;
|
||||||
padding: 30px 11%;
|
background: url('/@/assets/images/bk_charts1.png') #f5f7fd no-repeat center 0;
|
||||||
|
background-size: 100% auto;
|
||||||
}
|
}
|
||||||
|
|
||||||
.big_title {
|
.big_title {
|
||||||
|
|
|
||||||
|
|
@ -9,20 +9,22 @@
|
||||||
<div class="line"></div>
|
<div class="line"></div>
|
||||||
<text>中证智能财保</text>
|
<text>中证智能财保</text>
|
||||||
</div>
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="h100 flex">
|
||||||
<div class="top_menu">
|
<div class="top_menu">
|
||||||
<div class="item">
|
<div class="item">
|
||||||
<text>产品</text>
|
<text>产品</text>
|
||||||
<div class="bottom_line"></div>
|
<div class="bottom_line"></div>
|
||||||
</div>
|
</div>
|
||||||
<div class="item" @click="goExample">
|
<div class="item" @click="goExample">
|
||||||
<text>相关材料</text>
|
<text>产品文档</text>
|
||||||
<!-- <div class="bottom_line"></div> -->
|
<!-- <div class="bottom_line"></div> -->
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
<div class="top_right" @click="goLogin">
|
||||||
|
<text>登录</text>
|
||||||
<div class="top_right" @click="goLogin">
|
</div>
|
||||||
<text>登录</text>
|
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<!-- 顶部 end -->
|
<!-- 顶部 end -->
|
||||||
|
|
@ -42,17 +44,16 @@
|
||||||
</el-carousel-item>
|
</el-carousel-item>
|
||||||
</el-carousel>
|
</el-carousel>
|
||||||
|
|
||||||
<div :style="{ width: '100vw', height: '15px', backgroundColor: tabIndex == 0 ? 'white' : '#F7F8FA' }">
|
<div :style="{ width: '100vw', height: '15px', backgroundColor: tabIndex == 0 ? 'white' : '#F7F8FA' }"></div>
|
||||||
</div>
|
|
||||||
<div class="tab" :style="{ backgroundColor: tabIndex == 0 ? '#fff' : '#F7F8FA' }">
|
<div class="tab" :style="{ backgroundColor: tabIndex == 0 ? '#fff' : '#F7F8FA' }">
|
||||||
<div class="tab_item" @click="tabIndex = 0">
|
<!-- <div class="tab_item" @click="tabIndex = 0">
|
||||||
<div style="height: 100%; display: flex; align-items: center">
|
<div style="height: 100%; display: flex; align-items: center">
|
||||||
<img v-if="tabIndex == 0" src="../../../assets/logout/box_time_press.png" />
|
<img v-if="tabIndex == 0" src="../../../assets/logout/box_time_press.png" />
|
||||||
<img v-else src="../../../assets/logout/box_time_normal.png" />
|
<img v-else src="../../../assets/logout/box_time_normal.png" />
|
||||||
<text :class="{ active: tabIndex == 0 }">定期报告</text>
|
<text :class="{ active: tabIndex == 0 }">定期报告</text>
|
||||||
</div>
|
</div>
|
||||||
<div class="tab_bottom_line" v-if="tabIndex == 0"></div>
|
<div class="tab_bottom_line" v-if="tabIndex == 0"></div>
|
||||||
</div>
|
</div> -->
|
||||||
<div class="tab_item" @click="tabIndex = 1">
|
<div class="tab_item" @click="tabIndex = 1">
|
||||||
<div style="height: 100%; display: flex; align-items: center">
|
<div style="height: 100%; display: flex; align-items: center">
|
||||||
<img v-if="tabIndex == 1" src="../../../assets/logout/news_normal_press.png" />
|
<img v-if="tabIndex == 1" src="../../../assets/logout/news_normal_press.png" />
|
||||||
|
|
@ -63,12 +64,10 @@
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div class="r_list" :class="{ 'scale-down': isScaleDown }"
|
<div class="r_list" :class="{ 'scale-down': isScaleDown }" :style="{ backgroundColor: tabIndex == 0 ? '#fff' : '#F7F8FA' }">
|
||||||
:style="{ backgroundColor: tabIndex == 0 ? '#fff' : '#F7F8FA' }">
|
<!-- <Dingqibaogao v-if="tabIndex == 0" :data="dingqiList" :total="total"
|
||||||
<Dingqibaogao v-if="tabIndex == 0" :data="dingqiList" :total="total"
|
@getData="getLogoutReportPageFn"> </Dingqibaogao> -->
|
||||||
@getData="getLogoutReportPageFn"> </Dingqibaogao>
|
<Yuqingkanban v-if="tabIndex == 1" :data="yuqingkanban" :total="total" @getData="getLogoutYqPageFn"> </Yuqingkanban>
|
||||||
<Yuqingkanban v-if="tabIndex == 1" :data="yuqingkanban" :total="total" @getData="getLogoutYqPageFn">
|
|
||||||
</Yuqingkanban>
|
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
@ -109,7 +108,7 @@ const handleResize = () => {
|
||||||
isScaleDown.value = window.innerWidth < SCALE_THRESHOLD;
|
isScaleDown.value = window.innerWidth < SCALE_THRESHOLD;
|
||||||
};
|
};
|
||||||
|
|
||||||
function getData() { }
|
function getData() {}
|
||||||
|
|
||||||
const bannerList = ref([
|
const bannerList = ref([
|
||||||
{
|
{
|
||||||
|
|
@ -261,8 +260,8 @@ onUnmounted(() => {
|
||||||
display: flex;
|
display: flex;
|
||||||
align-items: center;
|
align-items: center;
|
||||||
background-color: #fff;
|
background-color: #fff;
|
||||||
height: 64px;
|
height: 56px;
|
||||||
padding: 0 0 0 32px;
|
padding: 0 0 0 20px;
|
||||||
border-bottom: 1px solid var(--next-border-color-light);
|
border-bottom: 1px solid var(--next-border-color-light);
|
||||||
justify-content: space-between;
|
justify-content: space-between;
|
||||||
|
|
||||||
|
|
@ -325,10 +324,9 @@ onUnmounted(() => {
|
||||||
|
|
||||||
.top_menu {
|
.top_menu {
|
||||||
height: 100%;
|
height: 100%;
|
||||||
margin-left: 50px;
|
margin-right: 50px;
|
||||||
display: flex;
|
display: flex;
|
||||||
gap: 50px;
|
gap: 50px;
|
||||||
margin-left: 100px;
|
|
||||||
|
|
||||||
.item {
|
.item {
|
||||||
height: 100%;
|
height: 100%;
|
||||||
|
|
|
||||||
|
|
@ -1,36 +1,37 @@
|
||||||
<template>
|
<template>
|
||||||
<div class="all" :class="{ 'scale-down': isScaleDown }">
|
<div class="container">
|
||||||
<img src="../../../assets/homenew/web_bg.png" class="web_bg scale-1" />
|
<div class="all" :class="{ 'scale-down': isScaleDown }">
|
||||||
|
<!-- <img src="../../../assets/homenew/web_bg.png" class="web_bg scale-1" /> -->
|
||||||
|
<div class="left">
|
||||||
|
<div class="content_nol">
|
||||||
|
<Title title="企业舆情" />
|
||||||
|
|
||||||
<div class="left">
|
<div class="yuqing">
|
||||||
<div
|
<div class="yuqing_left">
|
||||||
class="r_esg"
|
<text class="yqleft_title">舆情服务</text>
|
||||||
v-if="
|
<text class="yqleft_content">中证智能财保舆情服务为企业提供负面舆情信息、竞对舆情、行业板块舆情信息。</text>
|
||||||
Session.get('roleName') == 'common' ||
|
<text class="yqleft_button" @click="goYuqing">点击进入</text>
|
||||||
Session.get('roleName') == 'subCommon' ||
|
</div>
|
||||||
Session.get('roleName') == 'subCenter' ||
|
|
||||||
Session.get('roleName') == 'operate' ||
|
|
||||||
Session.get('roleName') == 'Director' ||
|
|
||||||
Session.get('roleName') == 'Bank' ||
|
|
||||||
Session.get('roleName') == 'SubBank'
|
|
||||||
"
|
|
||||||
>
|
|
||||||
<img src="../../../assets/homenew/ESGbanner_pic.png" class="esg_bg" />
|
|
||||||
|
|
||||||
<div class="esg_content">
|
<div class="yuqing_right">
|
||||||
<div>
|
<template v-if="yqList && yqList.length > 0">
|
||||||
<text class="esg_title blue">ESG服务</text>
|
<div class="yqright_item" v-for="(item, index) in yqList" :key="index">
|
||||||
<text class="esg_title">重磅推出</text>
|
<div @click="clickYuqing(item)" style="display: flex; align-items: center">
|
||||||
|
<img src="../../../assets/homenew/tag_blue.png" />
|
||||||
|
<text class="yqright_title">{{ item.subject }}</text>
|
||||||
|
</div>
|
||||||
|
<text class="yqright_time">{{ item.postTime }}</text>
|
||||||
|
</div>
|
||||||
|
</template>
|
||||||
|
<div v-else class="empty" style="margin-top: 40px">
|
||||||
|
<img src="../../../assets/homenew/nonews_icon.png" class="icon_empty" />
|
||||||
|
<text class="empty_text">暂无最新信息</text>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<text class="esg_sub_title">
|
|
||||||
中证智能财保ESG数字服务作为一个创新的数字化工具,采用与国际接轨的算法逻辑,为企业提供360°ESG综合服务。企业通过平台的
|
|
||||||
ESG“自评”“自检”和“自诊断”的功能模块,可以了解自身ESG综合表现情况,获得较为全面的诊断报告。
|
|
||||||
</text>
|
|
||||||
<div class="esg_button" @click="goEsg">点击进入</div>
|
|
||||||
</div>
|
</div>
|
||||||
</div>
|
|
||||||
|
|
||||||
<!-- <div class="content_nol"
|
<!-- <div class="content_nol"
|
||||||
v-if="Session.get('roleName') == 'operate' || Session.get('roleName') == 'subCenter' || Session.get('roleName') == 'Director'">
|
v-if="Session.get('roleName') == 'operate' || Session.get('roleName') == 'subCenter' || Session.get('roleName') == 'Director'">
|
||||||
<Title title="经营支持" />
|
<Title title="经营支持" />
|
||||||
<MenuItem title="业务看板" name="kanban" :item="{
|
<MenuItem title="业务看板" name="kanban" :item="{
|
||||||
|
|
@ -41,138 +42,144 @@
|
||||||
}" style="margin-top: 20px" />
|
}" style="margin-top: 20px" />
|
||||||
</div> -->
|
</div> -->
|
||||||
|
|
||||||
<div class="content_nol">
|
<div class="content_nol">
|
||||||
<Title title="信息披露" />
|
<Title title="信息披露" />
|
||||||
|
|
||||||
<div class="menus">
|
<div class="menus">
|
||||||
<div style="display: flex; align-items: center; margin-top: 20px">
|
<div style="display: flex; align-items: center; margin-top: 20px">
|
||||||
<div v-for="(item, index) in menuStepList">
|
<div v-for="(item, index) in menuStepList" :key="index">
|
||||||
<TopWithArrow :title="item.title" :index="index" :size="menuStepList.length" />
|
<TopWithArrow :title="item.title" :index="index" :size="menuStepList.length" />
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<div style="display: flex; gap: 10px; margin-top: 15px">
|
|
||||||
<div v-for="(item, index) in menuItem" class="menu_items">
|
|
||||||
<MenuItem :title="item.title" :name="item.name" :index="index" :supported="item.supported" :item="item" />
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<div class="content_nol">
|
|
||||||
<Title title="企业舆情" />
|
|
||||||
|
|
||||||
<div class="yuqing">
|
|
||||||
<div class="yuqing_left">
|
|
||||||
<text class="yqleft_title">舆情服务</text>
|
|
||||||
<text class="yqleft_content">中证智能财保舆情服务为企业提供负面舆情信息、竞对舆情、行业板块舆情信息。</text>
|
|
||||||
<text class="yqleft_button" @click="goYuqing">点击进入</text>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<div class="yuqing_right">
|
|
||||||
<div v-if="yqList && yqList.length > 0" class="yqright_item" v-for="(item, index) in yqList" :key="index">
|
|
||||||
<div @click="clickYuqing(item)" style="display: flex; align-items: center">
|
|
||||||
<img src="../../../assets/homenew/tag_blue.png" />
|
|
||||||
<text class="yqright_title">{{ item.subject }}</text>
|
|
||||||
</div>
|
</div>
|
||||||
<text class="yqright_time">{{ item.postTime }}</text>
|
|
||||||
</div>
|
</div>
|
||||||
<div v-else class="empty" style="margin-top: 40px">
|
<div style="display: flex; gap: 10px; margin-top: 15px">
|
||||||
<img src="../../../assets/homenew/nonews_icon.png" class="icon_empty" />
|
<div v-for="(item, index) in menuItem" class="menu_items" :key="index">
|
||||||
<text class="empty_text">暂无最新信息</text>
|
<MenuItem :title="item.title" :name="item.name" :index="index" :supported="item.supported" :item="item" />
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="content_nol">
|
||||||
|
<Title title="ESG评测" />
|
||||||
|
|
||||||
|
<div
|
||||||
|
class="r_esg"
|
||||||
|
v-if="
|
||||||
|
Session.get('roleName') == 'common' ||
|
||||||
|
Session.get('roleName') == 'subCommon' ||
|
||||||
|
Session.get('roleName') == 'subCenter' ||
|
||||||
|
Session.get('roleName') == 'operate' ||
|
||||||
|
Session.get('roleName') == 'Director' ||
|
||||||
|
Session.get('roleName') == 'Bank' ||
|
||||||
|
Session.get('roleName') == 'SubBank'
|
||||||
|
"
|
||||||
|
>
|
||||||
|
<img src="../../../assets/homenew/ESGbanner_pic.png" class="esg_bg" />
|
||||||
|
|
||||||
|
<div class="esg_content">
|
||||||
|
<div>
|
||||||
|
<text class="esg_title blue">ESG自评测</text>
|
||||||
|
<text class="esg_title">重磅推出</text>
|
||||||
|
</div>
|
||||||
|
<text class="esg_sub_title">
|
||||||
|
中证智能财保ESG数字服务作为一个创新的数字化工具,采用与国际接轨的算法逻辑,为企业提供360°ESG综合服务。企业通过平台的
|
||||||
|
ESG“自评”“自检”和“自诊断”的功能模块,可以了解自身ESG综合表现情况,获得较为全面的诊断报告。
|
||||||
|
</text>
|
||||||
|
<div class="esg_button" @click="goEsg">点击进入</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
|
||||||
|
|
||||||
<div class="right">
|
<div class="right">
|
||||||
<div
|
<div
|
||||||
class="content_nol"
|
class="content_nol"
|
||||||
v-if="Session.get('roleName') == 'operate' || Session.get('roleName') == 'subCenter' || Session.get('roleName') == 'Director'"
|
v-if="Session.get('roleName') == 'operate' || Session.get('roleName') == 'subCenter' || Session.get('roleName') == 'Director'"
|
||||||
>
|
>
|
||||||
<Title title="经营支持" />
|
<Title title="经营支持" />
|
||||||
<MenuItem
|
<MenuItem
|
||||||
title="业务看板"
|
title="业务看板"
|
||||||
name="kanban"
|
name="kanban"
|
||||||
:item="{
|
:item="{
|
||||||
title: '业务看板',
|
title: '业务看板',
|
||||||
name: 'kanban',
|
name: 'kanban',
|
||||||
supported: true,
|
supported: true,
|
||||||
routePath:
|
routePath:
|
||||||
Session.get('roleName') == 'Director' || Session.get('roleName') == 'subCenter' || Session.get('roleName') == 'operate'
|
Session.get('roleName') == 'Director' || Session.get('roleName') == 'subCenter' || Session.get('roleName') == 'operate'
|
||||||
? '/dashboardNew'
|
? '/dashboardNew'
|
||||||
: '/dashboard',
|
: '/dashboard',
|
||||||
}"
|
}"
|
||||||
isBig
|
isBig
|
||||||
style="margin-top: 20px"
|
style="margin-top: 36px"
|
||||||
/>
|
/>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div
|
<div
|
||||||
v-if="
|
v-if="
|
||||||
Session.get('roleName') == 'common' ||
|
Session.get('roleName') == 'common' ||
|
||||||
Session.get('roleName') == 'subCommon' ||
|
Session.get('roleName') == 'subCommon' ||
|
||||||
Session.get('roleName') == 'Director' ||
|
Session.get('roleName') == 'Director' ||
|
||||||
Session.get('roleName') == 'subCenter' ||
|
Session.get('roleName') == 'subCenter' ||
|
||||||
Session.get('roleName') == 'operate'
|
Session.get('roleName') == 'operate'
|
||||||
"
|
"
|
||||||
style="max-width: 300px; margin-top: 20px; margin-bottom: 20px; box-shadow: 0px 0px 10px 0px rgba(0, 0, 0, 0.1)"
|
style="max-width: 300px; margin-top: 20px; margin-bottom: 20px; box-shadow: 0px 0px 10px 0px rgba(0, 0, 0, 0.1)"
|
||||||
>
|
>
|
||||||
<moudle title="海外行情" @jumpUrl="jumpHaiwaiUrl" v-if="Session.get('userData').accountType != 1" paddingBottom="0px">
|
<moudle title="海外资讯" @jumpUrl="jumpHaiwaiUrl" v-if="Session.get('userData').accountType != 1" paddingBottom="0px">
|
||||||
<RankList
|
<RankList
|
||||||
:newsList="newsList"
|
:newsList="newsList"
|
||||||
:needExp="false"
|
:needExp="false"
|
||||||
style="margin-top: 15px"
|
style="margin-top: 15px"
|
||||||
:titleSize="'13px'"
|
:titleSize="'13px'"
|
||||||
:timeSize="'12px'"
|
:timeSize="'12px'"
|
||||||
:tagWidth="'8px'"
|
:tagWidth="'8px'"
|
||||||
:tagSize="'10px'"
|
:tagSize="'10px'"
|
||||||
:tagScale="0.8"
|
:tagScale="0.8"
|
||||||
></RankList>
|
></RankList>
|
||||||
</moudle>
|
</moudle>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div class="r_msg">
|
<div class="r_msg">
|
||||||
<Title title="消息通知" />
|
<Title title="消息通知" />
|
||||||
|
|
||||||
<div v-if="msgList && msgList.length > 0" style="display: flex; flex-direction: column; justify-content: space-between">
|
<div v-if="msgList && msgList.length > 0" style="display: flex; flex-direction: column; justify-content: space-between">
|
||||||
<div class="r_msg_item">
|
<div class="r_msg_item">
|
||||||
<MsgView
|
<MsgView
|
||||||
:item="item"
|
:item="item"
|
||||||
v-for="(item, index) in msgList"
|
v-for="(item, index) in msgList"
|
||||||
:index="index"
|
:index="index"
|
||||||
:key="index"
|
:key="index"
|
||||||
@delMsg="delMsg"
|
@delMsg="delMsg"
|
||||||
:class="[index == 0 && msgAnimPlay ? 'anim' : '']"
|
:class="[index == 0 && msgAnimPlay ? 'anim' : '']"
|
||||||
>
|
>
|
||||||
</MsgView>
|
</MsgView>
|
||||||
</div>
|
</div>
|
||||||
<div class="msg_bottom">
|
<div class="msg_bottom">
|
||||||
<text class="msg_clear" @click="msgClearAll">一键清除</text>
|
<text class="msg_clear" @click="msgClearAll">一键清除</text>
|
||||||
<div class="r_page">
|
<div class="r_page">
|
||||||
<img v-if="msgDataRequst.page == 1" src="../../../assets/homenew/arrow_square_left_disable.png" class="page_icon" />
|
<img v-if="msgDataRequst.page == 1" src="../../../assets/homenew/arrow_square_left_disable.png" class="page_icon" />
|
||||||
<img v-else src="../../../assets/homenew/arrow_square_left_normal.png" @click="doPage(0)" class="page_icon" />
|
<img v-else src="../../../assets/homenew/arrow_square_left_normal.png" @click="doPage(0)" class="page_icon" />
|
||||||
<text>{{ msgDataRequst.page }}/{{ msgDataRequst.maxPage }}</text>
|
<text>{{ msgDataRequst.page }}/{{ msgDataRequst.maxPage }}</text>
|
||||||
|
|
||||||
<img
|
<img
|
||||||
v-if="msgDataRequst.maxPage == msgDataRequst.page"
|
v-if="msgDataRequst.maxPage == msgDataRequst.page"
|
||||||
src="../../../assets/homenew/arrow_square_left_disable.png"
|
src="../../../assets/homenew/arrow_square_left_disable.png"
|
||||||
style="transform: rotate(180deg)"
|
style="transform: rotate(180deg)"
|
||||||
@click="doPage(1)"
|
@click="doPage(1)"
|
||||||
class="page_icon"
|
class="page_icon"
|
||||||
/>
|
/>
|
||||||
<img v-else src="../../../assets/homenew/arrow_square_right_normal.png" @click="doPage(1)" class="page_icon" />
|
<img v-else src="../../../assets/homenew/arrow_square_right_normal.png" @click="doPage(1)" class="page_icon" />
|
||||||
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
<div v-else class="empty">
|
||||||
|
<img src="../../../assets/homenew/nonews_icon.png" class="icon_empty" />
|
||||||
|
<text class="empty_text">暂无消息通知</text>
|
||||||
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div v-else class="empty">
|
|
||||||
<img src="../../../assets/homenew/nonews_icon.png" class="icon_empty" />
|
|
||||||
<text class="empty_text">暂无消息通知</text>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<div>
|
<!-- <div>
|
||||||
<img src="../../../assets/homenew/advertisement_pic_2.png" class="right_ad" />
|
<img src="../../../assets/homenew/advertisement_pic_2.png" class="right_ad" />
|
||||||
|
</div> -->
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
@ -499,11 +506,13 @@ function jumpHaiwaiUrl() {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
getCankaoUrl({}).then((res) => {
|
// getCankaoUrl({}).then((res) => {
|
||||||
if (res.code == 200) {
|
// if (res.code == 200) {
|
||||||
window.open(res.data);
|
// window.open(res.data);
|
||||||
}
|
// }
|
||||||
});
|
// });
|
||||||
|
|
||||||
|
router.push('/realtimeInfo')
|
||||||
}
|
}
|
||||||
|
|
||||||
const newsList = ref([]);
|
const newsList = ref([]);
|
||||||
|
|
@ -569,24 +578,33 @@ onUnmounted(() => {
|
||||||
/* 计算缩放后的偏移量,使内容居中 */
|
/* 计算缩放后的偏移量,使内容居中 */
|
||||||
transform-origin: top center;
|
transform-origin: top center;
|
||||||
/* 调整容器宽度,避免边缘被截断 */
|
/* 调整容器宽度,避免边缘被截断 */
|
||||||
width: calc(1 / var(--scale-ratio, 0.8) * 100%);
|
// width: calc(1 / var(--scale-ratio, 0.8) * 100%);
|
||||||
margin: 0 auto;
|
margin: 0 auto;
|
||||||
}
|
}
|
||||||
|
|
||||||
.scale-1 {
|
.scale-1 {
|
||||||
/* 缩放内容 */
|
/* 缩放内容 */
|
||||||
transform: scale(1.5);
|
transform: scale(1);
|
||||||
/* 计算缩放后的偏移量,使内容居中 */
|
/* 计算缩放后的偏移量,使内容居中 */
|
||||||
/* 调整容器宽度,避免边缘被截断 */
|
/* 调整容器宽度,避免边缘被截断 */
|
||||||
margin: 0 auto;
|
margin: 0 auto;
|
||||||
width: 100vw;
|
width: 100vw;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
.container {
|
||||||
|
width: 100%;
|
||||||
|
background: url('/@/assets/homenew/web_bg.png') #f9fbff no-repeat center 0;
|
||||||
|
background-size: 100% auto;
|
||||||
|
}
|
||||||
|
|
||||||
.all {
|
.all {
|
||||||
display: flex;
|
display: flex;
|
||||||
position: relative;
|
position: relative;
|
||||||
text-align: center;
|
text-align: center;
|
||||||
justify-content: center;
|
justify-content: center;
|
||||||
|
padding-bottom: 20px;
|
||||||
|
// background: url('/@/assets/homenew/web_bg.png') #f9fbff no-repeat center 0;
|
||||||
|
// background-size: 100% auto;
|
||||||
|
|
||||||
.left {
|
.left {
|
||||||
display: flex;
|
display: flex;
|
||||||
|
|
@ -799,6 +817,7 @@ onUnmounted(() => {
|
||||||
box-shadow: 0 0 20px rgba($color: #000000, $alpha: 0.1);
|
box-shadow: 0 0 20px rgba($color: #000000, $alpha: 0.1);
|
||||||
border-radius: 10px;
|
border-radius: 10px;
|
||||||
margin-top: 20px;
|
margin-top: 20px;
|
||||||
|
background-color: #fff;
|
||||||
|
|
||||||
.yuqing_left {
|
.yuqing_left {
|
||||||
width: 574px;
|
width: 574px;
|
||||||
|
|
|
||||||
|
|
@ -1,7 +1,12 @@
|
||||||
<template>
|
<template>
|
||||||
<div class="container">
|
<div class="container">
|
||||||
<div class="head">
|
<div class="head">
|
||||||
<div class="main-title">财报检校(试验)</div>
|
<div class="mb20">
|
||||||
|
<el-breadcrumb separator="/" class="font16">
|
||||||
|
<el-breadcrumb-item :to="{ path: '/home' }">首页</el-breadcrumb-item>
|
||||||
|
<el-breadcrumb-item>智能检校</el-breadcrumb-item>
|
||||||
|
</el-breadcrumb>
|
||||||
|
</div>
|
||||||
<div class="sub-title">仅供试验使用,此处的财报分析不计入业务看板统计</div>
|
<div class="sub-title">仅供试验使用,此处的财报分析不计入业务看板统计</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="main">
|
<div class="main">
|
||||||
|
|
@ -769,6 +774,9 @@ async function reSendFile(row) {
|
||||||
<style lang="scss" scoped>
|
<style lang="scss" scoped>
|
||||||
.container {
|
.container {
|
||||||
width: 100%;
|
width: 100%;
|
||||||
|
margin: 0 auto;
|
||||||
|
background: url('/@/assets/images/bk_charts1.png') #f5f7fd no-repeat center 0;
|
||||||
|
background-size: 100% auto;
|
||||||
}
|
}
|
||||||
|
|
||||||
:deep(.el-form-item--large .el-form-item__label) {
|
:deep(.el-form-item--large .el-form-item__label) {
|
||||||
|
|
@ -818,9 +826,10 @@ async function reSendFile(row) {
|
||||||
width: 100%;
|
width: 100%;
|
||||||
min-height: calc(100vh - 65px);
|
min-height: calc(100vh - 65px);
|
||||||
margin: 0 auto;
|
margin: 0 auto;
|
||||||
background: url('/@/assets/images/bk_charts.png') no-repeat center 0;
|
// background: url('/@/assets/images/bk_charts.png') no-repeat center 0;
|
||||||
// padding-bottom: 24px;
|
// padding-bottom: 24px;
|
||||||
padding: 24px;
|
padding: 24px 32px;
|
||||||
|
box-sizing: border-box;
|
||||||
|
|
||||||
.main-title {
|
.main-title {
|
||||||
font-family: 'Alip-SemiBold';
|
font-family: 'Alip-SemiBold';
|
||||||
|
|
|
||||||
|
|
@ -1,6 +1,12 @@
|
||||||
<template>
|
<template>
|
||||||
<div class="container">
|
<div class="container">
|
||||||
<div class="w1400">
|
<div class="">
|
||||||
|
<div class="">
|
||||||
|
<el-breadcrumb separator="/" class="font16">
|
||||||
|
<el-breadcrumb-item :to="{ path: '/home' }">首页</el-breadcrumb-item>
|
||||||
|
<el-breadcrumb-item>智能检校</el-breadcrumb-item>
|
||||||
|
</el-breadcrumb>
|
||||||
|
</div>
|
||||||
<!-- 时间滑动 start -->
|
<!-- 时间滑动 start -->
|
||||||
<Slide v-if="historyData.length > 0" :data="historyData" @doDetail="goDetail" />
|
<Slide v-if="historyData.length > 0" :data="historyData" @doDetail="goDetail" />
|
||||||
<!-- 时间滑动 end -->
|
<!-- 时间滑动 end -->
|
||||||
|
|
@ -702,7 +708,9 @@ onUnmounted(() => {
|
||||||
min-width: 1400px;
|
min-width: 1400px;
|
||||||
min-height: calc(100vh - 56px);
|
min-height: calc(100vh - 56px);
|
||||||
margin: 0 auto;
|
margin: 0 auto;
|
||||||
background: url('/@/assets/images/bk_charts.png') no-repeat center 0;
|
background: url('/@/assets/images/bk_charts1.png') #f5f7fd no-repeat center 0;
|
||||||
|
background-size: 100% auto;
|
||||||
|
padding: 24px 32px;
|
||||||
}
|
}
|
||||||
|
|
||||||
:deep(.el-form-item--large .el-form-item__label) {
|
:deep(.el-form-item--large .el-form-item__label) {
|
||||||
|
|
@ -715,7 +723,6 @@ onUnmounted(() => {
|
||||||
box-shadow: 0 12px 32px -2px rgba(206, 208, 211, 0.8);
|
box-shadow: 0 12px 32px -2px rgba(206, 208, 211, 0.8);
|
||||||
border-radius: 0 4px 4px 4px;
|
border-radius: 0 4px 4px 4px;
|
||||||
padding: 0 24px 24px;
|
padding: 0 24px 24px;
|
||||||
margin: 24px 0;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
.btn_content {
|
.btn_content {
|
||||||
|
|
|
||||||
|
|
@ -1,9 +1,22 @@
|
||||||
<template>
|
<template>
|
||||||
<div class="container" v-show="hadRole">
|
<div class="container" v-show="hadRole">
|
||||||
<div class="bk"></div>
|
|
||||||
<div :class="{ 'scale-down': isScaleDown }">
|
<div :class="{ 'scale-down': isScaleDown }">
|
||||||
<div class="r_title">
|
<div class="r_title">
|
||||||
<text class="title">企业舆情</text>
|
<div class="mb30">
|
||||||
|
<el-breadcrumb separator="/" class="font16">
|
||||||
|
<el-breadcrumb-item :to="{ path: '/home' }">首页</el-breadcrumb-item>
|
||||||
|
<el-breadcrumb-item v-permissions="['common', 'subCommon']">企业舆情</el-breadcrumb-item>
|
||||||
|
<el-breadcrumb-item
|
||||||
|
v-permissions="['Director', 'subCenter', 'operate', 'Director', 'Bank', 'SubBank', 'QJJG', 'QJJGC', 'JYS', 'JYSC', 'DFJG', 'DFJGC']"
|
||||||
|
:to="{ path: '/yuqingFLS' }"
|
||||||
|
>企业舆情</el-breadcrumb-item
|
||||||
|
>
|
||||||
|
<el-breadcrumb-item
|
||||||
|
v-permissions="['Director', 'subCenter', 'operate', 'Director', 'Bank', 'SubBank', 'QJJG', 'QJJGC', 'JYS', 'JYSC', 'DFJG', 'DFJGC']"
|
||||||
|
>企业舆情详情</el-breadcrumb-item
|
||||||
|
>
|
||||||
|
</el-breadcrumb>
|
||||||
|
</div>
|
||||||
<div class="r_input">
|
<div class="r_input">
|
||||||
<input
|
<input
|
||||||
v-if="form.pageType == 0"
|
v-if="form.pageType == 0"
|
||||||
|
|
@ -109,11 +122,11 @@
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="right">
|
<div class="right">
|
||||||
<moudle title="海外行情" @jumpUrl="jumpHaiwaiUrl" v-if="Session.get('userData').accountType != 1" paddingBottom="0px">
|
<!-- <moudle title="海外资讯" @jumpUrl="jumpHaiwaiUrl" v-if="Session.get('userData').accountType != 1" paddingBottom="0px">
|
||||||
<RankList :newsList="newsList" :needExp="false" style="margin-top: 15px"></RankList>
|
<RankList :newsList="newsList" :needExp="false" style="margin-top: 15px"></RankList>
|
||||||
</moudle>
|
</moudle> -->
|
||||||
|
|
||||||
<moudle title="概念题材" :type="2" :companyId="companyId" :style="{ marginTop: Session.get('userData').accountType != 1 ? '30px' : '0px' }">
|
<moudle title="概念题材" :type="2" :companyId="companyId" :style="{ marginTop: Session.get('userData').accountType != 1 ? '0' : '0px' }">
|
||||||
<wordcloud :data="cloudWordList" style="margin-top: 20px"></wordcloud>
|
<wordcloud :data="cloudWordList" style="margin-top: 20px"></wordcloud>
|
||||||
</moudle>
|
</moudle>
|
||||||
|
|
||||||
|
|
@ -154,6 +167,8 @@ import icon_4 from '/@/assets/yuqingNew/icon_4.png';
|
||||||
import { useRoute } from 'vue-router';
|
import { useRoute } from 'vue-router';
|
||||||
import { Session } from '/@/utils/storage';
|
import { Session } from '/@/utils/storage';
|
||||||
import RankList from './component/RankList.vue'; // 路径根据实际调整
|
import RankList from './component/RankList.vue'; // 路径根据实际调整
|
||||||
|
import JSON5 from 'json5';
|
||||||
|
import router from '/@/router';
|
||||||
|
|
||||||
// 定义需要缩小的分辨率阈值,例如小于1024px时缩小
|
// 定义需要缩小的分辨率阈值,例如小于1024px时缩小
|
||||||
const SCALE_THRESHOLD = 1480;
|
const SCALE_THRESHOLD = 1480;
|
||||||
|
|
@ -377,7 +392,6 @@ async function getWangkuangJinduiFn() {
|
||||||
jingduiList.value = data;
|
jingduiList.value = data;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
import JSON5 from 'json5';
|
|
||||||
// 舆情首页-词云
|
// 舆情首页-词云
|
||||||
const cloudWordList = ref([]);
|
const cloudWordList = ref([]);
|
||||||
async function getWangkuangCloudWordFn() {
|
async function getWangkuangCloudWordFn() {
|
||||||
|
|
@ -457,11 +471,13 @@ function jumpHaiwaiUrl() {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
getCankaoUrl({}).then((res) => {
|
// getCankaoUrl({}).then((res) => {
|
||||||
if (res.code == 200) {
|
// if (res.code == 200) {
|
||||||
window.open(res.data);
|
// window.open(res.data);
|
||||||
}
|
// }
|
||||||
});
|
// });
|
||||||
|
|
||||||
|
router.push('/realtimeInfo')
|
||||||
}
|
}
|
||||||
|
|
||||||
const hadRole = ref(true);
|
const hadRole = ref(true);
|
||||||
|
|
@ -537,20 +553,9 @@ $list_max_width: 1400px;
|
||||||
justify-content: center;
|
justify-content: center;
|
||||||
flex-direction: column;
|
flex-direction: column;
|
||||||
align-items: center;
|
align-items: center;
|
||||||
padding-top: 60px;
|
padding-top: 24px;
|
||||||
}
|
background: url('/@/assets/images/bk_charts1.png') #f5f7fd no-repeat center 0;
|
||||||
|
background-size: 100% auto;
|
||||||
.bk {
|
|
||||||
width: 100%;
|
|
||||||
background: url('/@/assets/yuqingNew/home_bg.png') no-repeat center 0;
|
|
||||||
height: 300px;
|
|
||||||
display: flex;
|
|
||||||
flex-direction: column;
|
|
||||||
text-align: center;
|
|
||||||
justify-content: center;
|
|
||||||
align-items: center;
|
|
||||||
position: absolute;
|
|
||||||
top: 0;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
.r_input {
|
.r_input {
|
||||||
|
|
|
||||||
|
|
@ -1,33 +1,39 @@
|
||||||
<template>
|
<template>
|
||||||
<div class="all" v-loading="loading">
|
<div class="container">
|
||||||
<div class="bk">
|
<div class="mb20">
|
||||||
<text class="title">企业舆情</text>
|
<el-breadcrumb separator="/" class="font16">
|
||||||
<div class="r_input">
|
<el-breadcrumb-item :to="{ path: '/home' }">首页</el-breadcrumb-item>
|
||||||
<el-dropdown trigger="click" @command="handleCommand" style="margin-left: 15px">
|
<el-breadcrumb-item>企业舆情</el-breadcrumb-item>
|
||||||
<div class="el-dropdown-link" style="cursor: pointer">
|
</el-breadcrumb>
|
||||||
<span class="select_text">{{ form.pageType == 0 ? '企业' : '资讯' }}</span>
|
</div>
|
||||||
<el-icon size="12" color="#1A1A1A">
|
<div ref="boxRef" class="all" v-loading="loading">
|
||||||
<ArrowDown />
|
<div class="bk">
|
||||||
</el-icon>
|
<div class="r_input">
|
||||||
</div>
|
<el-dropdown trigger="click" @command="handleCommand" style="margin-left: 15px">
|
||||||
<template #dropdown>
|
<div class="el-dropdown-link" style="cursor: pointer">
|
||||||
<el-dropdown-menu>
|
<span class="select_text">{{ form.pageType == 0 ? '企业' : '资讯' }}</span>
|
||||||
<el-dropdown-item :command="1"> 资讯</el-dropdown-item>
|
<el-icon size="12" color="#1A1A1A">
|
||||||
<el-dropdown-item :command="0"> 企业</el-dropdown-item>
|
<ArrowDown />
|
||||||
</el-dropdown-menu>
|
</el-icon>
|
||||||
</template>
|
</div>
|
||||||
</el-dropdown>
|
<template #dropdown>
|
||||||
|
<el-dropdown-menu>
|
||||||
|
<el-dropdown-item :command="1"> 资讯</el-dropdown-item>
|
||||||
|
<el-dropdown-item :command="0"> 企业</el-dropdown-item>
|
||||||
|
</el-dropdown-menu>
|
||||||
|
</template>
|
||||||
|
</el-dropdown>
|
||||||
|
|
||||||
<div class="line"></div>
|
<div class="line"></div>
|
||||||
|
|
||||||
<input
|
<input
|
||||||
v-model="form.companyName"
|
v-model="form.companyName"
|
||||||
:placeholder="form.pageType == 0 ? '请输入企业名称 / 简称 / 证券编码' : '请输入关键词搜索'"
|
:placeholder="form.pageType == 0 ? '请输入企业名称 / 简称 / 证券编码' : '请输入关键词搜索'"
|
||||||
@keyup.enter="doSreach"
|
@keyup.enter="doSreach"
|
||||||
class="input"
|
class="input"
|
||||||
/>
|
/>
|
||||||
|
|
||||||
<!-- <el-autocomplete
|
<!-- <el-autocomplete
|
||||||
v-else
|
v-else
|
||||||
class="autocomplete"
|
class="autocomplete"
|
||||||
style="flex: 1; box-shadow: 0 0 0"
|
style="flex: 1; box-shadow: 0 0 0"
|
||||||
|
|
@ -42,81 +48,83 @@
|
||||||
</template>
|
</template>
|
||||||
</el-autocomplete> -->
|
</el-autocomplete> -->
|
||||||
|
|
||||||
<div class="input_button" @click="doSreach">
|
<div class="input_button" @click="doSreach">
|
||||||
<el-icon color="white" size="18">
|
<el-icon color="white" size="18">
|
||||||
<Search />
|
<Search />
|
||||||
</el-icon>
|
</el-icon>
|
||||||
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
|
||||||
|
|
||||||
<!-- 企业列表 start -->
|
<!-- 企业列表 start -->
|
||||||
<div style="min-height: 50vh" v-if="form.pageType == 0">
|
<div style="min-height: 50vh" v-if="form.pageType == 0">
|
||||||
<div class="list">
|
<div class="list">
|
||||||
<div
|
<div
|
||||||
v-if="list && list.length > 0"
|
v-if="list && list.length > 0"
|
||||||
class="list_item"
|
class="list_item"
|
||||||
v-for="(item, index) in list"
|
v-for="(item, index) in list"
|
||||||
:key="index"
|
:key="index"
|
||||||
@mouseenter="mouseEnter(index)"
|
@mouseenter="mouseEnter(index)"
|
||||||
@mouseleave="mouseLeave(index)"
|
@mouseleave="mouseLeave(index)"
|
||||||
@click="goDetail(item)"
|
@click="goDetail(item)"
|
||||||
:class="{ hover: item.isHovered }"
|
:class="{ hover: item.isHovered }"
|
||||||
>
|
:style="{ width: styleWidth + 'px', height: styleHeight + 'px' }"
|
||||||
<div>
|
>
|
||||||
<div class="r_list_title" style="height: 25px">
|
<div>
|
||||||
<div
|
<div class="r_list_title" style="height: 25px">
|
||||||
class="list_title"
|
<div
|
||||||
:style="{ marginTop: !item.secCode && !item.companySimpleName && item.companyName.length > 12 ? '15px' : '0px' }"
|
class="list_title"
|
||||||
>
|
:style="{ marginTop: !item.secCode && !item.companySimpleName && item.companyName.length > 12 ? '15px' : '0px' }"
|
||||||
{{ !item.secCode && !item.companySimpleName ? item.companyName : item.companySimpleName }}
|
>
|
||||||
|
{{ !item.secCode && !item.companySimpleName ? item.companyName : item.companySimpleName }}
|
||||||
|
</div>
|
||||||
|
<div class="list_code" v-if="item.secCode">{{ item.secCode }}</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="list_code" v-if="item.secCode">{{ item.secCode }}</div>
|
<div class="company_name" v-if="item.secCode || item.companySimpleName">{{ item.companyName }}</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="company_name" v-if="item.secCode || item.companySimpleName">{{ item.companyName }}</div>
|
<div class="btn_detail">
|
||||||
</div>
|
<text :style="{ color: item.isHovered ? '#007AFF' : '#1A1A1A' }">查看详情</text>
|
||||||
<div class="btn_detail">
|
<div style="width: 10px; display: flex; justify-content: flex-start">
|
||||||
<text :style="{ color: item.isHovered ? '#007AFF' : '#1A1A1A' }">查看详情</text>
|
<el-icon size="14" color="#007AFF" v-if="item.isHovered">
|
||||||
<div style="width: 10px; display: flex; justify-content: flex-start">
|
<ArrowRight />
|
||||||
<el-icon size="14" color="#007AFF" v-if="item.isHovered">
|
</el-icon>
|
||||||
<ArrowRight />
|
</div>
|
||||||
</el-icon>
|
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
<div v-else style="width: 100%; height: 100%; display: flex; text-align: center; justify-content: center; align-items: center">
|
||||||
<div v-else style="width: 100%; height: 100%; display: flex; text-align: center; justify-content: center; align-items: center">
|
<div class="r_empty">
|
||||||
<div class="r_empty">
|
<el-image :src="emptyImg" class="empty"></el-image>
|
||||||
<el-image :src="emptyImg" class="empty"></el-image>
|
<text class="empty_text">暂无内容</text>
|
||||||
<text class="empty_text">暂无内容</text>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
|
||||||
|
|
||||||
<el-pagination
|
<el-pagination
|
||||||
v-if="form.pageType == 0"
|
v-if="form.pageType == 0"
|
||||||
background
|
background
|
||||||
style="margin-top: 24px"
|
style="margin-top: 24px"
|
||||||
class="page"
|
class="page"
|
||||||
layout="slot, ->,prev, pager, next, jumper"
|
layout="slot, ->,prev, pager, next, jumper"
|
||||||
:page-sizes="[10, 20, 50, 100]"
|
:page-sizes="[10, 20, 50, 100]"
|
||||||
v-model:page-size="form.size"
|
v-model:page-size="form.size"
|
||||||
:total="total"
|
:total="total"
|
||||||
@current-change="currentChange"
|
@current-change="currentChange"
|
||||||
@size-change="sizeChange"
|
@size-change="sizeChange"
|
||||||
>
|
>
|
||||||
<div style="font-size: 14px; color: rgba(0, 0, 0, 0.6)">共 {{ total }} 项数据</div>
|
<div style="font-size: 14px; color: rgba(0, 0, 0, 0.6)">共 {{ total }} 项数据</div>
|
||||||
</el-pagination>
|
</el-pagination>
|
||||||
<!-- 企业列表 end -->
|
<!-- 企业列表 end -->
|
||||||
|
|
||||||
<div v-if="form.pageType == 1">
|
<div v-if="form.pageType == 1">
|
||||||
<ZxList ref="zxListRef"></ZxList>
|
<ZxList ref="zxListRef"></ZxList>
|
||||||
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
<script setup>
|
<script setup>
|
||||||
import { ref, reactive, onMounted } from 'vue';
|
import { ref, reactive, onMounted, computed } from 'vue';
|
||||||
import { useRouter } from 'vue-router';
|
import { useRouter } from 'vue-router';
|
||||||
import { getYqcompanyList, getYqCheck } from '/@/api/api';
|
import { getYqcompanyList, getYqCheck } from '/@/api/api';
|
||||||
import { ElMessage } from 'element-plus';
|
import { ElMessage } from 'element-plus';
|
||||||
|
|
@ -237,20 +245,62 @@ function handleCommand(value) {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// 计算样式宽高
|
||||||
|
const boxRef = ref(null);
|
||||||
|
const style = reactive({
|
||||||
|
width: 285,
|
||||||
|
height: 162,
|
||||||
|
margin: 20,
|
||||||
|
});
|
||||||
|
|
||||||
|
const styleWidth = computed(() => {
|
||||||
|
console.log('output >>>>> boxRef.value?.clientWidth >= 1440',boxRef.value?.clientWidth);
|
||||||
|
|
||||||
|
if (boxRef.value?.clientWidth >= 1080) {
|
||||||
|
const width = (boxRef.value?.clientWidth - 3 * style.margin) / 4;
|
||||||
|
style.width = width;
|
||||||
|
}
|
||||||
|
|
||||||
|
return Math.floor(style.width);
|
||||||
|
});
|
||||||
|
|
||||||
|
const styleHeight = computed(() => {
|
||||||
|
if (boxRef.value?.clientWidth >= 1080) {
|
||||||
|
const width = (boxRef.value?.clientWidth - 3 * style.margin) / 4;
|
||||||
|
style.height = (width / 285) * 162;
|
||||||
|
}
|
||||||
|
|
||||||
|
return Math.floor(style.height);
|
||||||
|
});
|
||||||
|
|
||||||
// 页面加载时
|
// 页面加载时
|
||||||
onMounted(() => {
|
onMounted(() => {
|
||||||
// NextLoading.done();
|
// NextLoading.done();
|
||||||
getData();
|
getData();
|
||||||
|
window.addEventListener('resize', () => {
|
||||||
|
style.width = 285;
|
||||||
|
style.height = 162;
|
||||||
|
});
|
||||||
});
|
});
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
<style scoped lang="scss">
|
<style scoped lang="scss">
|
||||||
@import url('/@/theme/page/page.scss');
|
@import url('/@/theme/page/page.scss');
|
||||||
|
|
||||||
|
.container {
|
||||||
|
width: 100%;
|
||||||
|
margin: 0 auto;
|
||||||
|
background: url('/@/assets/images/bk_charts1.png') #f5f7fd no-repeat center 0;
|
||||||
|
background-size: 100% auto;
|
||||||
|
// padding-bottom: 24px;
|
||||||
|
padding: 20px 32px 32px;
|
||||||
|
min-height: calc(100vh - 56px);
|
||||||
|
box-sizing: border-box;
|
||||||
|
}
|
||||||
|
|
||||||
.all {
|
.all {
|
||||||
width: 100vw;
|
// width: 100vw;
|
||||||
height: 100vh;
|
min-height: 100vh;
|
||||||
background-color: #f2f3f5;
|
|
||||||
display: flex;
|
display: flex;
|
||||||
flex-direction: column;
|
flex-direction: column;
|
||||||
text-align: center;
|
text-align: center;
|
||||||
|
|
@ -259,8 +309,7 @@ onMounted(() => {
|
||||||
|
|
||||||
.bk {
|
.bk {
|
||||||
width: 100%;
|
width: 100%;
|
||||||
background: url('/@/assets/images/bk_charts.png') no-repeat center 0;
|
// height: 140px;
|
||||||
height: 200px;
|
|
||||||
display: flex;
|
display: flex;
|
||||||
flex-direction: column;
|
flex-direction: column;
|
||||||
text-align: center;
|
text-align: center;
|
||||||
|
|
@ -356,16 +405,19 @@ input::placeholder {
|
||||||
}
|
}
|
||||||
|
|
||||||
.page {
|
.page {
|
||||||
max-width: calc(285px * 4 + 20px * 3);
|
// max-width: calc(285px * 4 + 20px * 3);
|
||||||
width: calc(285px * 4 + 20px * 3);
|
// width: calc(285px * 4 + 20px * 3);
|
||||||
|
width: 100%;
|
||||||
|
padding: 0 40px;
|
||||||
}
|
}
|
||||||
|
|
||||||
.list {
|
.list {
|
||||||
display: flex;
|
display: flex;
|
||||||
flex-wrap: wrap;
|
flex-wrap: wrap;
|
||||||
gap: 20px;
|
gap: 20px;
|
||||||
max-width: calc(285px * 4 + 20px * 3);
|
// max-width: calc(285px * 4 + 20px * 3);
|
||||||
width: calc(285px * 4 + 20px * 3);
|
// width: calc(285px * 4 + 20px * 3);
|
||||||
|
padding: 30px 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
.list_item {
|
.list_item {
|
||||||
|
|
@ -373,8 +425,8 @@ input::placeholder {
|
||||||
flex-direction: column;
|
flex-direction: column;
|
||||||
background: url('/@/assets/yuqingNew/card_bg.png') no-repeat center 0;
|
background: url('/@/assets/yuqingNew/card_bg.png') no-repeat center 0;
|
||||||
background-size: 100% 100%;
|
background-size: 100% 100%;
|
||||||
width: 285px;
|
// width: 285px;
|
||||||
height: 162px;
|
// height: 162px;
|
||||||
padding: 20px 30px;
|
padding: 20px 30px;
|
||||||
gap: 15px;
|
gap: 15px;
|
||||||
box-shadow: 0 0 10px rgba($color: #515151, $alpha: 0.2);
|
box-shadow: 0 0 10px rgba($color: #515151, $alpha: 0.2);
|
||||||
|
|
@ -435,7 +487,7 @@ input::placeholder {
|
||||||
text-align: left;
|
text-align: left;
|
||||||
font-style: normal;
|
font-style: normal;
|
||||||
|
|
||||||
width: 237px;
|
width: 100%;
|
||||||
height: 32px;
|
height: 32px;
|
||||||
color: #5f6063;
|
color: #5f6063;
|
||||||
background: #ffffff;
|
background: #ffffff;
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue