This commit is contained in:
姚宇浩 2024-10-18 15:22:29 +08:00
commit d22211dcff
9 changed files with 881 additions and 483 deletions

BIN
dist.zip Normal file

Binary file not shown.

View File

@ -3,7 +3,7 @@ import { ElMessage } from "element-plus";
import tools from "@/utils/tools"; import tools from "@/utils/tools";
import router from "../router"; import router from "../router";
// axios.defaults.baseURL = 'https://jzzf.longyou.gov.cn:998/' axios.defaults.baseURL = 'https://jzzf.longyou.gov.cn:998/'
axios.defaults.timeout = 120000; axios.defaults.timeout = 120000;
// HTTP request 拦截器 // HTTP request 拦截器
@ -38,7 +38,6 @@ axios.interceptors.response.use(
const name = eqPos > -1 ? cookie.substr(0, eqPos) : cookie; const name = eqPos > -1 ? cookie.substr(0, eqPos) : cookie;
document.cookie = name + "=;expires=Thu, 01 Jan 1970 00:00:00 GMT; path=/;"; document.cookie = name + "=;expires=Thu, 01 Jan 1970 00:00:00 GMT; path=/;";
} }
router.replace({ router.replace({
path: "/guide", path: "/guide",
}); });

View File

@ -1,387 +1,392 @@
<template> <template>
<div class="dialogPage"> <div class="dialogPage">
<el-dialog <el-dialog
v-model="dialogShow" v-model="dialogShow"
width="80vw" width="80vw"
heigth="600px" heigth="600px"
:show-close="false" :show-close="false"
center center
:close-on-click-modal="false" :close-on-click-modal="false"
:close-on-press-escape="false" :close-on-press-escape="false"
> >
<template #header="{ close, titleId, titleClass }"> <template #header="{ close, titleId, titleClass }">
<div class="my-header"> <div class="my-header">
<el-icon size="26" color="#fff" @click="closeDialog"> <el-icon size="26" color="#fff" @click="closeDialog">
<CircleCloseFilled /> <CircleCloseFilled />
</el-icon> </el-icon>
</div> </div>
</template> </template>
<div class="tabelPart"> <div class="tabelPart">
<div class="bo"> <div class="bo">
<div class="title"> <div class="title">
<div class="title_top"> <div class="title_top">
<img
src="@/assets/images/table_l.png"
alt=""
style="margin-right: 10px"
/>
<div class="name">{{ title }}</div>
<img
src="@/assets/images/table_r.png"
alt=""
style="margin-left: 10px"
/>
</div>
<img <img
class="title_botton" src="@/assets/images/table_l.png"
src="@/assets/images/table_c.png"
alt="" alt=""
style="margin-right: 10px"
/>
<div class="name">{{ title }}</div>
<img
src="@/assets/images/table_r.png"
alt=""
style="margin-left: 10px"
/> />
</div> </div>
</div> <img
<div style="width: 100%; height: calc(100% - 110px)" > class="title_botton"
<div style="border: 1px solid #5284b0"> src="@/assets/images/table_c.png"
<el-table alt=""
:data="data.tableData" />
height='500px'
:header-cell-style="{ background: 'rgba(0, 143, 205, 0.63)' }"
@row-click="handleRowClick"
stripe
>
<template v-for="item in data.columns" :key="item.label">
<el-table-column
v-if="item.type === 'slot'"
:label="item.label"
:property="item.property"
:width="item.width || ''"
:align="item.align || 'center'"
>
<template #default="scope">
</template>
</el-table-column>
<el-table-column
v-else
:property="item.property"
:label="item.label"
:show-overflow-tooltip="false"
:width="item.width || ''"
:align="item.align || 'center'"
/>
</template>
</el-table>
</div>
</div> </div>
</div> </div>
</el-dialog> <div style="width: 100%; height: calc(100% - 110px)">
</div> <div style="border: 1px solid #5284b0">
</template> <el-table
<script setup> :data="data.tableData"
import { height="500px"
onMounted, :header-cell-style="{ background: 'rgba(0, 143, 205, 0.63)' }"
onBeforeMount, @row-click="handleRowClick"
reactive, stripe
ref, >
onBeforeUnmount, <template v-for="item in data.columns" :key="item.label">
defineProps, <el-table-column
watch, v-if="item.type === 'slot'"
nextTick, :label="item.label"
} from "vue"; :property="item.property"
import { CircleCloseFilled } from "@element-plus/icons-vue"; :width="item.width || ''"
import { useRouter, useRoute } from "vue-router"; :align="item.align || 'center'"
import { ElMessage } from "element-plus"; >
import http from "@/utils/request.js"; <template #default="scope"> </template>
</el-table-column>
const router = useRouter(); <el-table-column
const routers = useRoute(); v-else
const props = defineProps({ :property="item.property"
dialogShow: { :label="item.label"
type: Boolean, :show-overflow-tooltip="false"
default: () => { :width="item.width || ''"
return false; :align="item.align || 'center'"
}, />
}, </template>
columns: { </el-table>
type: Array, </div>
default: () => { </div>
return []; </div>
}, </el-dialog>
}, </div>
typeId: { </template>
type: Array, <script setup>
default: () => { import {
return []; onMounted,
}, onBeforeMount,
}, reactive,
ref,
tableData: { onBeforeUnmount,
type: Object, defineProps,
default: () => { watch,
return []; nextTick,
}, } from "vue";
}, import { CircleCloseFilled } from "@element-plus/icons-vue";
title: { import { useRouter, useRoute } from "vue-router";
type: String, import { ElMessage } from "element-plus";
default: () => { import http from "@/utils/request.js";
return "";
},
},
});
const emit = defineEmits(["close",'showList']);
const handleRowClick = (row, column, event) => {
emit("showList", row);
};
//
const dialogShow = ref();
const data = reactive({
title: "",
columns: [],
tableData: [],
});
const router = useRouter();
const gridData = []; const routers = useRoute();
// const props = defineProps({
// dialogShow: {
watch( type: Boolean,
() => props.dialogShow, default: () => {
(newVal, oldVal) => { return false;
dialogShow.value = newVal; },
},
columns: {
type: Array,
default: () => {
return [];
},
},
typeId: {
type: Array,
default: () => {
return [];
},
},
} tableData: {
); type: Object,
watch( default: () => {
() => props.tableData, return [];
(newVal, oldVal) => { },
},
} title: {
); type: String,
default: () => {
// 使 return "";
onMounted(() => { },
dialogShow.value = props.dialogShow; },
data.title = props.title; });
data.columns = props.columns; const emit = defineEmits(["close", "showList"]);
});
const handleRowClick = (row, column, event) => {
const closeDialog = () => { emit("showList", row);
dialogShow.value = false; };
emit("close");
}; //
</script> const dialogShow = ref();
const data = reactive({
<style lang="scss" scoped> title: "",
:deep(.el-dialog) { columns: [],
--el-dialog-bg-color: none; tableData: [],
--el-dialog-width: 76% !important; });
const gridData = [];
//
//
watch(
() => props.dialogShow,
(newVal, oldVal) => {
dialogShow.value = newVal;
} }
);
.my-header { watch(
() => props.tableData,
(newVal, oldVal) => {
data.tableData = props.tableData;
data.tableData = data.tableData.map(item => {
if (item.sendTime) {
const [date, time] = item.sendTime.split('T'); //
item.sendTime = `${date} ${time.slice(0, 5)}`; //
}
return item;
});
console.log(555, props.tableData);
}
);
// 使
onMounted(() => {
dialogShow.value = props.dialogShow;
data.title = props.title;
data.columns = props.columns;
data.tableData = props.tableData;
});
const closeDialog = () => {
dialogShow.value = false;
emit("close");
};
</script>
<style lang="scss" scoped>
:deep(.el-dialog) {
--el-dialog-bg-color: none;
--el-dialog-width: 76% !important;
}
.my-header {
display: flex;
flex-direction: row-reverse;
}
// .backgroundVirtual {
// position: absolute;
// top: 0;
// width: 100%;
// height: 79px;
// box-shadow: inset 0px 0px 55px 0px rgba(173, 221, 255, 1);
// z-index: 99;
// }
.tabelPart {
height: 600px;
padding: 16px 110px 32px 110px;
background: linear-gradient(
270deg,
rgba(0, 77, 131, 0.69) 0%,
rgba(0, 51, 83, 0.77) 50%,
rgba(0, 77, 131, 0.74) 100%
),
radial-gradient(
66% 40% at 50% 0%,
rgba(1, 150, 243, 0.55) 0%,
rgba(0, 116, 255, 0) 100%
);
box-shadow: inset 0px 0px 56px 0px rgba(100, 191, 255, 0.5);
border: 2px solid;
border-image: linear-gradient(
180deg,
rgba(21, 150, 255, 1),
rgba(0, 157, 227, 0)
)
2 2;
.tabelHead {
color: #fff;
display: flex; display: flex;
flex-direction: row-reverse; align-items: center;
} font-size: 18px;
// .backgroundVirtual { justify-content: space-between;
// position: absolute; margin-bottom: 10px;
// top: 0; margin-top: 46px;
// width: 100%; img {
// height: 79px; width: 36px;
// box-shadow: inset 0px 0px 55px 0px rgba(173, 221, 255, 1); height: 36px;
// z-index: 99; }
// }
.tabelPart { // &div:nth-last-child(1){
height: 600px; // display: flex;
padding: 16px 110px 32px 110px; // align-items: center;
background: linear-gradient( // }
270deg, .status {
rgba(0, 77, 131, 0.69) 0%,
rgba(0, 51, 83, 0.77) 50%,
rgba(0, 77, 131, 0.74) 100%
),
radial-gradient(
66% 40% at 50% 0%,
rgba(1, 150, 243, 0.55) 0%,
rgba(0, 116, 255, 0) 100%
);
box-shadow: inset 0px 0px 56px 0px rgba(100, 191, 255, 0.5);
border: 2px solid;
border-image: linear-gradient(
180deg,
rgba(21, 150, 255, 1),
rgba(0, 157, 227, 0)
)
2 2;
.tabelHead {
color: #fff;
display: flex; display: flex;
align-items: center; align-items: center;
font-size: 18px; position: relative;
justify-content: space-between; cursor: pointer;
margin-bottom: 10px; .statusMessage {
margin-top: 46px;
img {
width: 36px;
height: 36px;
}
// &div:nth-last-child(1){
// display: flex;
// align-items: center;
// }
.status {
display: flex; display: flex;
align-items: center; align-items: center;
position: relative; }
cursor: pointer;
.statusMessage { .lampBox {
width: 270px;
height: 146px;
position: absolute;
top: 40px;
right: -6px;
background-image: url(@/assets/sy-table/popk.png);
background-repeat: no-repeat;
background-size: 100% 100%;
z-index: 999;
.lampTitle {
text-align: center;
// padding-top: 33px;
margin: 28px 0 32px 0;
font-size: 16px;
font-weight: 500;
font-family: PingFangSC, PingFang SC;
color: #ffffff;
line-height: 22px;
letter-spacing: 1px;
}
.lampBtn {
display: flex; display: flex;
align-items: center; align-items: center;
}
.lampBox {
width: 270px;
height: 146px;
position: absolute;
top: 40px;
right: -6px;
background-image: url(@/assets/sy-table/popk.png);
background-repeat: no-repeat;
background-size: 100% 100%;
z-index: 999;
.lampTitle {
text-align: center;
// padding-top: 33px;
margin: 28px 0 32px 0;
font-size: 16px;
font-weight: 500;
font-family: PingFangSC, PingFang SC;
color: #ffffff;
line-height: 22px;
letter-spacing: 1px;
}
.lampBtn {
display: flex;
align-items: center;
justify-content: center;
.confirm {
width: 82.5px;
height: 30.5px;
line-height: 30.5px;
text-align: center;
background-image: url(@/assets/sy-table/btn1.png);
background-repeat: no-repeat;
background-size: 100% 100%;
margin-right: 9px;
}
.cancel {
width: 82.5px;
height: 30.5px;
line-height: 30.5px;
text-align: center;
background-image: url(@/assets/sy-table/btn2.png);
background-repeat: no-repeat;
background-size: 100% 100%;
}
}
}
}
}
.lampMessage {
font-size: 16px;
font-weight: 600;
font-family: PingFangSC, PingFang SC;
letter-spacing: 1px;
color: #ff5959;
width: 100%;
display: flex;
justify-content: flex-end;
margin-top: 17px;
z-index: 10;
}
.bo {
width: 100%;
display: flex;
.title {
margin: 10px auto;
display: flex;
flex-direction: column;
&_top {
display: flex;
align-items: end;
justify-content: center; justify-content: center;
.confirm {
img { width: 82.5px;
height: 33px; height: 30.5px;
width: 33px; line-height: 30.5px;
}
.name {
font-family: PangMenZhengDao, PangMenZhengDao;
font-weight: 600;
font-size: 33px;
color: #ffffff;
line-height: 38px;
text-align: center; text-align: center;
font-style: normal; background-image: url(@/assets/sy-table/btn1.png);
letter-spacing: 2px; background-repeat: no-repeat;
background: linear-gradient(180deg, #ffffff 0%, #51ffef 100%); background-size: 100% 100%;
-webkit-background-clip: text; margin-right: 9px;
/*将设置的背景颜色限制在文字中*/ }
-webkit-text-fill-color: transparent; .cancel {
/*给文字设置成透明*/ width: 82.5px;
height: 30.5px;
line-height: 30.5px;
text-align: center;
background-image: url(@/assets/sy-table/btn2.png);
background-repeat: no-repeat;
background-size: 100% 100%;
} }
}
&_botton {
margin-top: 5px;
height: 19px;
} }
} }
} }
.progressGreen {
width: 181px;
height: 15px;
margin: 0 auto;
border-radius: 6px;
background: linear-gradient(358deg, #21eda8 0%, #8bffcd 100%);
}
.progressYellow {
width: 181px;
height: 15px;
border: 2px solid #ffe1a5;
margin: 0 auto;
border-radius: 6px;
}
:deep(.el-table) {
--el-table-bg-color: none;
--el-table-tr-bg-color: none;
--el-table-header-bg-color: none;
background: none;
border: none;
--el-table-text-color: #fff;
--el-table-header-text-color: #fff;
--el-table-border-color: none !important;
font-size: 16px;
}
:deep(
.el-table--striped
.el-table__body
tr.el-table__row--striped
td.el-table__cell
) {
background: #2f4b74;
}
:deep(.el-table .el-table__cell) {
padding: 18px 0;
}
// :deep(.el-table th) {
// text-align: center;
// }
} }
</style> .lampMessage {
font-size: 16px;
font-weight: 600;
font-family: PingFangSC, PingFang SC;
letter-spacing: 1px;
color: #ff5959;
width: 100%;
display: flex;
justify-content: flex-end;
margin-top: 17px;
z-index: 10;
}
.bo {
width: 100%;
display: flex;
.title {
margin: 10px auto;
display: flex;
flex-direction: column;
&_top {
display: flex;
align-items: end;
justify-content: center;
img {
height: 33px;
width: 33px;
}
.name {
font-family: PangMenZhengDao, PangMenZhengDao;
font-weight: 600;
font-size: 33px;
color: #ffffff;
line-height: 38px;
text-align: center;
font-style: normal;
letter-spacing: 2px;
background: linear-gradient(180deg, #ffffff 0%, #51ffef 100%);
-webkit-background-clip: text;
/*将设置的背景颜色限制在文字中*/
-webkit-text-fill-color: transparent;
/*给文字设置成透明*/
}
}
&_botton {
margin-top: 5px;
height: 19px;
}
}
}
.progressGreen {
width: 181px;
height: 15px;
margin: 0 auto;
border-radius: 6px;
background: linear-gradient(358deg, #21eda8 0%, #8bffcd 100%);
}
.progressYellow {
width: 181px;
height: 15px;
border: 2px solid #ffe1a5;
margin: 0 auto;
border-radius: 6px;
}
:deep(.el-table) {
--el-table-bg-color: none;
--el-table-tr-bg-color: none;
--el-table-header-bg-color: none;
background: none;
border: none;
--el-table-text-color: #fff;
--el-table-header-text-color: #fff;
--el-table-border-color: none !important;
font-size: 16px;
}
:deep(
.el-table--striped
.el-table__body
tr.el-table__row--striped
td.el-table__cell
) {
background: #2f4b74;
}
:deep(.el-table .el-table__cell) {
padding: 18px 0;
}
// :deep(.el-table th) {
// text-align: center;
// }
}
</style>

View File

@ -49,28 +49,47 @@
" "
> >
<div class="item"> <div class="item">
<div class="item_title">概况模型</div> <div class="item_title">
<div class="yd_title">
<span>概况模型</span>
<div class="semi-circle-shadow"></div>
<div class="animate-border">
<i></i>
<i></i>
</div>
</div>
</div>
<div class="item_content">{{ data.content.bz }}</div> <div class="item_content">{{ data.content.bz }}</div>
</div> </div>
<div class="item" style="margin-top: 20px"> <div class="item" style="margin-top: 20px">
<div class="item_title">详情描述</div> <div class="item_title">
<div class="yd_title">
<span>详情描述</span>
<div class="semi-circle-shadow"></div>
<div class="animate-border">
<i></i>
<i></i>
</div>
</div>
</div>
<div class="item_content item_contents"> <div class="item_content item_contents">
<div class="item_content_item"> <div class="item_content_item">
<div class="item_content_item_title">输入</div> <div class="item_content_item_title">输入:</div>
<div <div
class="item_content_item_content" class="item_content_item_content"
v-html="formatContent(data.content.srsj)" v-html="formatContent(data.content.srsj)"
></div> ></div>
</div> </div>
<div class="item_content_item"> <div class="item_content_item">
<div class="item_content_item_title">对比逻辑</div> <div class="item_content_item_title">对比逻辑:</div>
<div <div
class="item_content_item_content" class="item_content_item_content"
v-html="formatContent(data.content.bdlj)" v-html="formatContent(data.content.bdlj)"
></div> ></div>
</div> </div>
<div class="item_content_item"> <div class="item_content_item">
<div class="item_content_item_title">输出</div> <div class="item_content_item_title">输出:</div>
<div <div
class="item_content_item_content" class="item_content_item_content"
v-html="formatContent(data.content.scjg)" v-html="formatContent(data.content.scjg)"
@ -284,10 +303,15 @@ const handle = (current) => {
margin-bottom: 20px; margin-bottom: 20px;
box-sizing: border-box; box-sizing: border-box;
.item_content_item_title { .item_content_item_title {
width: 100px;
height: 30px;
line-height: 30px;
text-align: center;
background-color: #3287d2;
font-weight: 600; font-weight: 600;
font-size: 17px; font-size: 17px;
width: 100px;
margin-right: 10px; margin-right: 10px;
padding: 0 8px;
} }
.item_content_item_content { .item_content_item_content {
width: calc(100% - 110px); width: calc(100% - 110px);
@ -304,4 +328,168 @@ const handle = (current) => {
display: none; /* Chrome Safari */ display: none; /* Chrome Safari */
} }
} }
.yd_title {
box-sizing: border-box;
width: 98%;
height: 31px;
position: relative;
overflow: hidden;
display: flex;
align-items: center;
justify-content: space-between;
span {
font-size: 23px;
font-weight: 500;
font-family: titleNore;
margin-left: 20px;
color: #fff;
position: relative;
z-index: 1;
width: 500px;
overflow: hidden; /* 超出一行文字自动隐藏 */
text-overflow: ellipsis; /*文字隐藏后添加省略号*/
white-space: nowrap;
}
/* 利用伪元素和两个i元素产生4条线 */
.animate-border {
position: absolute;
top: 0px;
width: 100%;
height: 100%;
&::before,
&::after {
content: "";
position: absolute;
width: 100%;
height: 2px;
}
i {
position: absolute;
display: inline-block;
height: 100%;
width: 2px;
}
&::before {
top: 0;
left: -100%;
background-image: linear-gradient(
90deg,
transparent,
#03e9f4,
transparent
);
animation: one 4s linear infinite;
}
i:nth-child(1) {
top: -100%;
right: 0;
background-image: linear-gradient(
180deg,
transparent,
#03e9f4,
transparent
);
/* 动画名称 动画持续时间 动画渲染函数 动画延迟时间 动画执行次数 */
animation: two 4s linear 1s infinite;
}
&::after {
bottom: 0;
right: -100%;
background-image: linear-gradient(
-90deg,
transparent,
#03e9f4,
transparent
);
animation: three 4s linear 2s infinite;
}
i:nth-child(2) {
bottom: -100%;
left: 0;
background-image: linear-gradient(
360deg,
transparent,
#03e9f4,
transparent
);
animation: four 4s linear 3s infinite;
}
}
.semi-circle-shadow {
position: absolute;
bottom: -5px;
left: -24px;
width: 22%;
height: 20px;
background: radial-gradient(
circle,
rgba(37, 127, 173, 1) 0%,
rgba(37, 127, 173, 0) 70%
);
border-radius: 50%;
z-index: 0;
}
}
.yd_title::before {
content: "";
width: 4px;
height: 4px;
background-color: rgba(0, 229, 255, 1);
border-radius: 50%;
position: absolute;
left: 0;
margin-left: 3px;
z-index: 2;
}
.yd_title::after {
content: "";
width: 90%;
height: 1px;
background: linear-gradient(to right, #257fad, rgba(37, 127, 173, 0));
position: absolute;
bottom: 0;
left: 0;
z-index: 0;
}
@keyframes one {
0% {
left: -100%;
}
50%,
100% {
left: 100%;
}
}
@keyframes two {
0% {
top: -100%;
}
50%,
100% {
top: 100%;
}
}
@keyframes three {
0% {
right: -100%;
}
50%,
100% {
right: 100%;
}
}
@keyframes four {
0% {
bottom: -100%;
}
50%,
100% {
bottom: 100%;
}
}
</style> </style>

View File

@ -32,12 +32,13 @@ const getOption = () => {
data.option = { data.option = {
tooltip: { tooltip: {
trigger: "axis", trigger: "axis",
formatter: "{b0}<br />{a1}:{c1} <br />{a3}:{c3}", formatter: "{b0}<br />{a1}:{c1}",
// formatter: "{b0}<br />{a1}:{c1} <br />{a3}:{c3}",
}, },
legend: { legend: {
data: ["招生数", "报名数"], data: ["招生数", "报名数"],
top: "6%", top: "6%",
right: "35%", // right: "35%",
textStyle: { textStyle: {
fontSize: 16, fontSize: 16,
color: "#ffffff", color: "#ffffff",
@ -125,7 +126,7 @@ const getOption = () => {
symbolPosition: "end", symbolPosition: "end",
data: data.zss, data: data.zss,
symbol: "diamond", symbol: "diamond",
symbolOffset: ["-65%", "-50%"], symbolOffset: ["0%", "-50%"],
symbolSize: [20, 10], symbolSize: [20, 10],
itemStyle: { itemStyle: {
borderColor: "#2fffa4", borderColor: "#2fffa4",
@ -160,49 +161,49 @@ const getOption = () => {
}, },
}, },
}, },
{ // {
z: 2, // z: 2,
name: "上部1", // name: "1",
type: "pictorialBar", // type: "pictorialBar",
symbolPosition: "end", // symbolPosition: "end",
data: data.bms, // data: data.bms,
symbol: "diamond", // symbol: "diamond",
symbolOffset: ["62%", "-50%"], // symbolOffset: ["62%", "-50%"],
symbolSize: [20, 10], // symbolSize: [20, 10],
itemStyle: { // itemStyle: {
borderColor: "#32ffee", // borderColor: "#32ffee",
color: "rgba(23, 237, 255, 1)", // color: "rgba(23, 237, 255, 1)",
}, // },
}, // },
{ // {
z: 2, // z: 2,
name: "报名数", // name: "",
type: "bar", // type: "bar",
barGap: 0.3 /*多个并排柱子设置柱子之间的间距*/, // barGap: 0.3 /**/,
data: data.bms, // data: data.bms,
barWidth: "30%", // barWidth: "30%",
label: { // label: {
show: true, // show: true,
color: "#ffffff", // color: "#ffffff",
position: "top", // position: "top",
}, // },
itemStyle: { // itemStyle: {
color: { // color: {
type: "linear", // type: "linear",
x: 0, // x: 0,
x2: 1, // x2: 1,
y: 0, // y: 0,
y2: 0, // y2: 0,
colorStops: [ // colorStops: [
{ offset: 0, color: "rgba(23, 237, 255, .7)" }, // { offset: 0, color: "rgba(23, 237, 255, .7)" },
{ offset: 0.5, color: "rgba(23, 237, 255, .7)" }, // { offset: 0.5, color: "rgba(23, 237, 255, .7)" },
{ offset: 0.5, color: "rgba(23, 237, 255, .3)" }, // { offset: 0.5, color: "rgba(23, 237, 255, .3)" },
{ offset: 1, color: "rgba(23, 237, 255, .5)" }, // { offset: 1, color: "rgba(23, 237, 255, .5)" },
], // ],
}, // },
}, // },
}, // },
{ {
type: "bar", type: "bar",
xAxisIndex: 1, xAxisIndex: 1,

View File

@ -12,63 +12,179 @@
<div class="line" v-if="chooseTitle == item.id"></div> <div class="line" v-if="chooseTitle == item.id"></div>
</div> </div>
</div> </div>
<div class="select" v-if="chooseTitle != '1'"> <div v-if="chooseTitle == '1'">
<div class="select_item"> <el-table
<el-input :data="data.tableData"
v-model="search.name" stripe
style="width: 100%" border
placeholder="姓名查询" max-height="80vh"
clearable style="width: 100%"
class="input-with-select" >
> <el-table-column prop="index" label="序号" width="50" />
<template #append> <el-table-column prop="xm" label="姓名" width="60" />
<el-button :icon="Search" @click="searchT('name')" /> <el-table-column prop="sfzhm" label="身份证" />
</template> <el-table-column prop="jzzh" label="救助证号" />
</el-input> <el-table-column prop="sjhm" label="联系电话" />
</div> <el-table-column prop="xzjd" label="乡镇(街道)" />
<div class="select_item"> <el-table-column prop="csq" label="村社" />
<el-date-picker <el-table-column prop="dz" label="地址" />
style="width: 100%" <el-table-column prop="jzrq" label="救助日期" />
v-model="search.date" </el-table>
type="date" <div class="pagePart">
placeholder="选择时间" <el-pagination
format="YYYY-MM-DD" size="small"
value-format="YYYY-MM-DD" :pager-count="5"
@change="searchT('date')" class="mt-4"
background
layout="prev, pager, next"
:page-size="data.pagination.pageSize"
:total="data.pagination.total"
:current-page="data.pagination.current"
@current-change="handlePagination"
/>
</div>
</div>
<div v-if="chooseTitle == '2'">
<div class="select">
<div class="select_item">
<el-input
v-model="search1.name"
style="width: 100%"
placeholder="姓名查询"
clearable
class="input-with-select"
>
<template #append>
<el-button :icon="Search" @click="searchT('name')" />
</template>
</el-input>
</div>
<div class="select_item">
<el-date-picker
style="width: 100%"
v-model="search1.date"
type="date"
placeholder="选择时间"
format="YYYY-MM-DD"
value-format="YYYY-MM-DD"
@change="searchT('date')"
/>
</div>
</div>
<el-table
:data="data.tableData1"
stripe
border
max-height="74vh"
style="width: 100%"
>
<el-table-column prop="index" label="序号" width="50" />
<el-table-column prop="ahap0016" label="申请人" width="70" />
<el-table-column prop="ahap0015" label="身份证" />
<el-table-column prop="ahax0003" label="救助证号" />
<el-table-column prop="ahax0004" label="申请救助" />
<el-table-column prop="ahax0011" label="银行账号" />
<el-table-column prop="azdf0005" label="家庭总人口" width="50" />
<el-table-column prop="azdf0011" label="手机号码" />
<el-table-column prop="bhax0003" label="用电户号" />
<el-table-column prop="bhax0004" label="减免地址" />
<el-table-column prop="bhax0005" label="低保类别" />
<el-table-column prop="bhax0008" label="致贫原因" />
<el-table-column prop="bhax0009" label="是否申请电力减免" />
<el-table-column prop="bhax0011" label="水费户号" />
<el-table-column prop="bhax0012" label="燃气户号" />
<el-table-column prop="bhax0013" label="有线电视户号" />
<el-table-column prop="bhax0033" label="救助日期" />
<el-table-column prop="bhax0035" label="低保类型" />
</el-table>
<div class="pagePart">
<el-pagination
size="small"
class="mt-4"
background
layout="prev, pager, next"
:pager-count="5"
:page-size="data.pagination1.pageSize"
:total="data.pagination1.total"
:current-page="data.pagination1.current"
@current-change="handlePagination1"
/>
</div>
</div>
<div v-if="chooseTitle == '3'">
<div class="select">
<div class="select_item">
<el-input
v-model="search1.name"
style="width: 100%"
placeholder="姓名查询"
clearable
class="input-with-select"
>
<template #append>
<el-button :icon="Search" @click="searchT1('name')" />
</template>
</el-input>
</div>
<div class="select_item">
<el-date-picker
style="width: 100%"
v-model="search1.date"
type="date"
placeholder="选择时间"
format="YYYY-MM-DD"
value-format="YYYY-MM-DD"
@change="searchT1('date')"
/>
</div>
</div>
<el-table
:data="data.tableData"
stripe
border
max-height="80vh"
style="width: 100%"
>
<el-table-column prop="index" label="序号" width="50" />
<el-table-column prop="xm" label="姓名" width="60" />
<el-table-column prop="sfzhm" label="身份证" />
<el-table-column prop="jzzh" label="救助证号" />
<el-table-column prop="sjhm" label="联系电话" />
<el-table-column prop="xzjd" label="乡镇(街道)" />
<el-table-column prop="csq" label="村社" />
<el-table-column prop="dz" label="地址" />
<el-table-column prop="jzrq" label="救助日期" />
</el-table>
<div class="pagePart">
<el-pagination
size="small"
class="mt-4"
background
layout="prev, pager, next"
:page-size="data.pagination.pageSize"
:total="data.pagination.total"
:current-page="data.pagination.current"
@current-change="handlePagination"
/> />
</div> </div>
</div> </div>
<el-table
:data="data.tableData"
stripe
border
max-height="100vh"
style="width: 100%"
>
<el-table-column prop="index" label="序号" width="50" />
<el-table-column prop="xm" label="姓名" width="60" />
<el-table-column prop="sfzhm" label="身份证" />
<el-table-column prop="jzzh" label="救助证号" />
<el-table-column prop="sjhm" label="联系电话" />
<el-table-column prop="xzjd" label="乡镇(街道)" />
<el-table-column prop="csq" label="村社" />
<el-table-column prop="dz" label="地址" />
<el-table-column prop="jzrq" label="救助日期" />
<!-- <el-table-column prop="nl" label="年龄" width="60" /> -->
<!-- <el-table-column prop="bq" label="人口标签" /> -->
</el-table>
</div> </div>
</template> </template>
<script setup> <script setup>
import { onMounted, ref, reactive } from "vue"; import { onMounted, ref, reactive } from "vue";
import { useRouter, useRoute } from "vue-router"; import { useRouter, useRoute } from "vue-router";
import { ElMessage } from "element-plus";
import http from "@/utils/request.js"; import http from "@/utils/request.js";
import { Search } from "@element-plus/icons-vue"; import { Search } from "@element-plus/icons-vue";
const router = useRouter(); const router = useRouter();
const routers = useRoute(); const routers = useRoute();
const chooseTitle = ref(1); const chooseTitle = ref(1);
const search = reactive({ const search1 = reactive({
name: "",
date: "",
});
const search2 = reactive({
name: "", name: "",
date: "", date: "",
}); });
@ -88,11 +204,17 @@ const titleList = reactive([
}, },
]); ]);
const data = reactive({ const data = reactive({
code: "",
xh: "", xh: "",
bm: "", bm: "",
pagination: { pagination: {
current: 1, current: 1,
pageSize: 200, pageSize: 20,
total: 0,
},
pagination1: {
current: 1,
pageSize: 20,
total: 0, total: 0,
}, },
columns: [ columns: [
@ -121,6 +243,7 @@ const data = reactive({
}, },
], ],
tableData: [], tableData: [],
tableData1: [],
}); });
// //
@ -136,42 +259,115 @@ const throttle = (func, limit) => {
const searchT = (val) => { const searchT = (val) => {
console.log(val); console.log(val);
if (val == "name") { if (val == "name") {
console.log(search); getRegisteredDB();
} else { } else {
if (search.date == null) { if (search1.date == null) {
throttle(getDate, 50); search1.date = "";
throttle(getRegisteredDB, 50);
} else { } else {
getRegisteredDB();
console.log(search); console.log(search);
} }
} }
}; };
const searchT1 = (val) => {
// console.log(val);
// if (val == "name") {
// getRegisteredDB();
// } else {
// if (search1.date == null) {
// throttle(getDate, 50);
// } else {
// console.log(search);
// }
// }
};
const onTypel = (val) => { const onTypel = (val) => {
console.log("选择",val);
chooseTitle.value = val.id; chooseTitle.value = val.id;
if (val.id == 1) { if (val.id == 1) {
personDetails();
}else{ } else if (val.id == 2) {
data.tableData = [] data.tableData = [];
getRegisteredDB();
} else if (val.id == 3) {
data.tableData = [];
} }
}; };
const getDate = () => { const getDate = () => {
console.log("未选择时间"); console.log("未选择时间");
}; };
const personDetails = () => {
http.get(`/api/ggfwyth/pg/wxsbmRyxx/${data.xh}/${data.bm}`).then((res) => {
if (res.code == 200) {
// console.log(res.data);
data.tableData = res.data;
} else {
ElMessage.warning({
message: res.message,
});
}
});
};
const getRegisteredDB = () => {
http
.get(
`/api/ggfwyth/pg/zcdbry?size=${data.pagination1.pageSize}&page=${data.pagination1.current}&name=${search1.name}&jzrq=${search1.date}`
)
.then((res) => {
if (res.code == 200) {
// console.log(res.data);
data.tableData1 = res.data;
data.pagination1.total = res.count;
const currentPage = data.pagination1.current; //
const pageSize = data.pagination1.pageSize; //
data.tableData1 = res.data.map((item) => {
// bhax0033
if (item.bhax0033) {
item.bhax0033 = item.bhax0033.split("T")[0]; //
}
return item;
});
// index
res.data.forEach((item, index) => {
item.index = index + 1 + (currentPage - 1) * pageSize;
});
} else {
ElMessage.warning({
message: res.message,
});
router.replace({
path: "/error/403",
});
}
});
};
const personDetails = () => {
http
.get(
`/api/ggfwyth/pg/wxsbmRyxx/${data.xh}/${data.bm}?size=${data.pagination.pageSize}&page=${data.pagination.current}`
)
.then((res) => {
if (res.code == 200) {
// console.log(res.data);
data.tableData = res.data;
data.pagination.total = res.count;
const currentPage = data.pagination.current; //
const pageSize = data.pagination.pageSize; //
// index
res.data.forEach((item, index) => {
item.index = index + 1 + (currentPage - 1) * pageSize;
});
} else {
ElMessage.warning({
message: res.message,
});
router.replace({
path: "/error/403",
});
}
});
};
const handlePagination = (currentPage) => {
data.pagination.current = currentPage;
personDetails();
};
const handlePagination1 = (currentPage) => {
data.pagination1.current = currentPage;
getRegisteredDB();
};
onMounted(() => { onMounted(() => {
// data.tableData = JSON.parse(routers.query.personDetails); // data.tableData = JSON.parse(routers.query.personDetails);
data.xh = routers.query.xh; data.xh = routers.query.xh;
@ -228,6 +424,13 @@ onMounted(() => {
} }
} }
} }
.pagePart {
height: 40px;
display: flex;
align-items: center;
justify-content: center;
margin-top: 8px;
}
:deep(.el-input-group__append button.el-button) { :deep(.el-input-group__append button.el-button) {
background-color: #0091ff; background-color: #0091ff;
color: #fff; color: #fff;

View File

@ -448,7 +448,7 @@ const push = reactive({
columns: [ columns: [
{ {
label: "序号", label: "序号",
property: "xm", property: "index",
width: "90", width: "90",
}, },
{ {

View File

@ -721,6 +721,8 @@ onMounted(() => {});
margin-top: 40px; margin-top: 40px;
display: flex; display: flex;
justify-content: space-around; justify-content: space-around;
// position: absolute;
&_item { &_item {
width: 45%; width: 45%;
display: flex; display: flex;

View File

@ -15,8 +15,8 @@ export default defineConfig({
// 第一个代理 // 第一个代理
"/api": { "/api": {
// 匹配到啥来进行方向代理 // 匹配到啥来进行方向代理
target: "http://10.0.0.7:8095/", //刘进 // target: "http://10.0.0.7:8095/", //刘进
// target: "https://jzzf.longyou.gov.cn:998/", //线上 target: "https://jzzf.longyou.gov.cn:998/", //线上
// target: "http://220.191.238.50:996/", //线上 // target: "http://220.191.238.50:996/", //线上
// target: "https://zzdyyfb.dsjj.qz.gov.cn/web/mgop/gov-open/zj/2002428903/reserved/", //线上 // target: "https://zzdyyfb.dsjj.qz.gov.cn/web/mgop/gov-open/zj/2002428903/reserved/", //线上
changeOrigin: true, //是否支持跨域 changeOrigin: true, //是否支持跨域