This commit is contained in:
姚宇浩 2024-10-17 16:41:44 +08:00
commit 9f296b008d
12 changed files with 191 additions and 142 deletions

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 拦截器

View File

@ -92,13 +92,10 @@ const emit = defineEmits(["close"]);
const cameraShow = ref(); const cameraShow = ref();
const data = reactive({ const data = reactive({
title: "摄像头", title: "摄像头",
// columns: [],
// tableData: [],
}); });
// const gridData = []; const dp = ref(null);
const num = ref(false); const num = ref(false);
const hlsUriSslNow = ref(""); const hlsUriSslNow = ref("");
const dp = ref(null);
const attachmentLink = ref(""); const attachmentLink = ref("");
const options = { const options = {
@ -124,6 +121,11 @@ watch(
} }
} }
); );
const maskName = (name) => {
// '*'
return name[0] + "*".repeat(name.length - 2) + name[name.length - 1];
};
const initializeVideo = () => { const initializeVideo = () => {
if (hlsUriSslNow.value === "") { if (hlsUriSslNow.value === "") {
num.value = false; num.value = false;
@ -132,7 +134,7 @@ const initializeVideo = () => {
} }
cameraShow.value = props.cameraShow; cameraShow.value = props.cameraShow;
hlsUriSslNow.value = props.hlsUriSsl; hlsUriSslNow.value = props.hlsUriSsl;
data.title = props.sxtnames; data.title = maskName(props.sxtnames);
attachmentLink.value = hlsUriSslNow.value; attachmentLink.value = hlsUriSslNow.value;
if (num.value) { if (num.value) {
@ -175,7 +177,6 @@ const insertVideo = () => {
// console.log(":", videoElement); // console.log(":", videoElement);
}; };
const loadVideo = () => { const loadVideo = () => {
if (dp.value) { if (dp.value) {
// console.log("video.js"); // console.log("video.js");

View File

@ -102,6 +102,10 @@ const data = reactive({
const num = ref(false); const num = ref(false);
const hlsUriSslNow = ref(""); const hlsUriSslNow = ref("");
const gridData = []; const gridData = [];
const maskName = (name) => {
// '*'
return name[0] + "*".repeat(name.length - 2) + name[name.length - 1];
};
// //
watch( watch(
() => props.cameraShow, () => props.cameraShow,
@ -115,7 +119,7 @@ watch(
// if (hlsUriSslNow.value != "" && props.hlsUriSsl != hlsUriSslNow.value) // if (hlsUriSslNow.value != "" && props.hlsUriSsl != hlsUriSslNow.value)
cameraShow.value = newVal; cameraShow.value = newVal;
hlsUriSslNow.value = props.hlsUriSsl; hlsUriSslNow.value = props.hlsUriSsl;
data.title = props.sxtname; data.title = maskName(props.sxtname);
attachmentLink.value = hlsUriSslNow.value; attachmentLink.value = hlsUriSslNow.value;
dp.value = null; dp.value = null;
@ -132,6 +136,7 @@ watch(
} }
} }
); );
const insertVideo = () => { const insertVideo = () => {
const videoElement = document.createElement("video"); const videoElement = document.createElement("video");
videoElement.id = "videoPlayer"; videoElement.id = "videoPlayer";

View File

@ -116,7 +116,9 @@
</template> </template>
</el-table> </el-table>
</div> </div>
<div class="lampMessage">工作日早上8:30自动推送浙政钉</div> <div class="lampMessage">
每周或每月第一个工作日自动推送浙政钉通知
</div>
</div> </div>
</div> </div>
</el-dialog> </el-dialog>
@ -193,7 +195,7 @@ const handleRowClick = (row, column, event) => {
const clicked = ref(false); const clicked = ref(false);
const lampBox = ref(null); const lampBox = ref(null);
const escalation = () => { const escalation = () => {
if (data.xq.deng !== 0) { if (data.xq.deng != 0) {
clicked.value = true; clicked.value = true;
} }
console.log(clicked.value); console.log(clicked.value);
@ -267,11 +269,31 @@ watch(
data.title = props.tableData.title; data.title = props.tableData.title;
data.columns = props.tableData.columns; data.columns = props.tableData.columns;
data.tableData.length = 0; data.tableData.length = 0;
function maskName(name) {
if (name.length === 2) {
// *
return name[0] + "*";
} else if (name.length > 2) {
//
return name[0] + "*".repeat(name.length - 2) + name[name.length - 1];
}
return name;
}
function maskYwfzr(ywfzr) {
// 使
return ywfzr.replace(
/([^,]+)/g,(match, name) => `${maskName(name.trim())}`
);
}
if (props.tableData.data.wxs.length > 0) { if (props.tableData.data.wxs.length > 0) {
props.tableData.data.wxs.forEach((item, index) => { props.tableData.data.wxs.forEach((item, index) => {
let obj = { let obj = {
deng: 2, deng: 2,
bzlx: item.bzlx, bzlx: item.bzlx,
qtbm: item.qtbm,
zrks: item.zrks,
ywfzr: maskYwfzr(item.ywfzr),
fgldsj: item.fgldsj.replace(/^(\d{3})\d{4}(\d{4})$/, "$1****$2"),
}; };
data.tableData.push(obj); data.tableData.push(obj);
}); });
@ -282,6 +304,11 @@ watch(
let obj = { let obj = {
deng: 1, deng: 1,
bzlx: item.bzlx, bzlx: item.bzlx,
qtbm: item.qtbm,
zrks: item.zrks,
ywfzr: maskYwfzr(item.ywfzr),
// fgldsj: item.fgldsj,
fgldsj: item.fgldsj.replace(/^(\d{3})\d{4}(\d{4})$/, "$1****$2"),
}; };
data.tableData.push(obj); data.tableData.push(obj);
}); });

View File

@ -54,24 +54,27 @@
</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>
<div class="item_content"> <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 class="item_content_item_content"> <div
{{ data.content.srsj }} class="item_content_item_content"
</div> v-html="formatContent(data.content.srsj)"
></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 class="item_content_item_content"> <div
{{ data.content.bdlj }} class="item_content_item_content"
</div> v-html="formatContent(data.content.bdlj)"
></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 class="item_content_item_content"> <div
{{ data.content.scjg }} class="item_content_item_content"
</div> v-html="formatContent(data.content.scjg)"
></div>
</div> </div>
</div> </div>
</div> </div>
@ -80,7 +83,7 @@
</el-dialog> </el-dialog>
</div> </div>
</template> </template>
<script setup> <script setup>
import { import {
onMounted, onMounted,
reactive, reactive,
@ -129,7 +132,10 @@ const data = reactive({
title: "", title: "",
content: {}, content: {},
}); });
const formatContent = (content) => {
// \n <br>
return content.replace(/\n/g, "<br>");
};
// //
watch( watch(
() => props.dialogShow, () => props.dialogShow,
@ -158,7 +164,7 @@ const handle = (current) => {
emit("handle", current); emit("handle", current);
}; };
</script> </script>
<style lang="scss" scoped> <style lang="scss" scoped>
:deep(.el-dialog) { :deep(.el-dialog) {
--el-dialog-bg-color: none; --el-dialog-bg-color: none;
--el-dialog-width: 50% !important; --el-dialog-width: 50% !important;
@ -251,8 +257,8 @@ const handle = (current) => {
width: 100%; width: 100%;
.item_title { .item_title {
font-family: PingFangSC, PingFang SC; font-family: PingFangSC, PingFang SC;
font-weight: 500; font-weight: 600;
font-size: 16px; font-size: 18px;
color: #ffffff; color: #ffffff;
line-height: 22px; line-height: 22px;
letter-spacing: 3px; letter-spacing: 3px;
@ -270,12 +276,16 @@ const handle = (current) => {
letter-spacing: 3px; letter-spacing: 3px;
color: #ffffff; color: #ffffff;
line-height: 22px; line-height: 22px;
height: 144px;
overflow-y: auto;
.item_content_item { .item_content_item {
width: 100%; width: 100%;
display: flex; display: flex;
margin-bottom: 20px; margin-bottom: 20px;
box-sizing: border-box; box-sizing: border-box;
.item_content_item_title { .item_content_item_title {
font-weight: 600;
font-size: 17px;
width: 100px; width: 100px;
margin-right: 10px; margin-right: 10px;
} }
@ -287,6 +297,11 @@ const handle = (current) => {
margin-bottom: 0px; margin-bottom: 0px;
} }
} }
.item_contents {
height: 360px;
}
::-webkit-scrollbar {
display: none; /* Chrome Safari */
}
} }
</style> </style>

View File

@ -212,6 +212,7 @@ watch(
data.list = props.list; data.list = props.list;
data.list2 = props.list2; data.list2 = props.list2;
data.year = props.year; data.year = props.year;
data.bg = [];
data.year.forEach(() => { data.year.forEach(() => {
data.bg.push(0); data.bg.push(0);
}); });

View File

@ -125,34 +125,34 @@ const getOption = () => {
padding: [3, -3, 3, -3], padding: [3, -3, 3, -3],
// //
formatter: function (params) { formatter: function (params) {
return `{b|${params.value}%}{a|${params.name}}`; return `{a|${params.value}%}{a|${params.name}}`;
}, },
// //
rich: { rich: {
// a // a
a: { a: {
// //
padding: [-14, 10, 40, -70], padding: [10, 0, 30, -60],
// //
fontSize: "12px", fontSize: "15px",
// //
fontFamily: "MicrosoftYaHei", fontFamily: "MicrosoftYaHei",
// //
color: "#fff", color: "#fff",
}, },
// b // b
b: { // b: {
// // //
padding: [0, 10, 55, -70], // padding: [0, 10, 55, -70],
// // //
fontSize: "15px", // fontSize: "15px",
// // //
fontFamily: "MicrosoftYaHei-Bold, MicrosoftYaHei", // fontFamily: "MicrosoftYaHei-Bold, MicrosoftYaHei",
// // //
fontWeight: "bold", // fontWeight: "bold",
// // //
color: "#fff", // color: "#fff",
}, // },
}, },
}, },
// label: { // label: {
@ -166,9 +166,11 @@ const getOption = () => {
// padding: [0, -80], // padding: [0, -80],
// }, // },
labelLine: { labelLine: {
show: false,
normal: { normal: {
length: 40, // 线 length: 40, // 线
length2: 40, length2: 40,
align: 'right',
// lineStyle: { // lineStyle: {
// color: "white", // 线 // color: "white", // 线
// }, // },

View File

@ -301,7 +301,7 @@ const getOption = () => {
color: "#fff", color: "#fff",
fontSize: 16, fontSize: 16,
formatter: function (value) { formatter: function (value) {
return value.length > 3 ? value.slice(0, 2) + "..." : value; return value.length > 4 ? value.slice(0, 6) + "..." : value;
}, },
}, },
}, },

View File

@ -2,7 +2,7 @@
<div ref="chart" style="width: 100%; height: 90%"></div> <div ref="chart" style="width: 100%; height: 90%"></div>
</template> </template>
<script setup > <script setup>
import { onMounted, reactive, ref, onBeforeMount, defineProps } from "vue"; import { onMounted, reactive, ref, onBeforeMount, defineProps } from "vue";
// echarts // echarts
import * as echarts from "echarts"; import * as echarts from "echarts";
@ -25,26 +25,59 @@ const data = reactive({
option: {}, option: {},
bg: [], bg: [],
}); });
const data1 = [
"大街乡",
"社阳乡",
"牧尘畲族乡",
"庙下乡",
"溪口镇",
"罗家乡",
"模环乡",
"横山镇",
"石佛乡",
"詹家镇",
"塔石镇",
"小男孩镇",
"湖镇镇",
"东华街道",
"龙洲街道",
];
const data2 = [
"862772",
"672917",
"302810",
"294100",
"109310",
"91023",
"81232",
"71273",
"69173",
"51861",
"49184",
"31740",
"21307",
"21307",
"20000",
];
const chart = ref(); // DOM const chart = ref(); // DOM
const getOption = () => { const getOption = () => {
data.option = { data.option = {
tooltip: { tooltip: {
trigger: "axis", trigger: "axis",
formatter: "{b0}<br />{a1}:{c1} <br />{a3}:{c3} ", formatter: "{b}<br />{a1}:{c1} <br />{a}:{c} ",
}, },
legend: { legend: {
data: ["育龄妇女", "婴幼儿"], data: ["育龄妇女", "婴幼儿"],
top: "6%", top: "4%",
right: "11%", // right: "1%",
textStyle: { textStyle: {
fontSize: 16, fontSize: 16,
color: "#ffffff", color: "#ffffff",
}, },
}, },
grid: { grid: {
top: "23%", top: "10%",
left: "1%", left: "1%",
right: "10%", right: "10%",
bottom: "0%", bottom: "0%",
@ -61,12 +94,12 @@ const getOption = () => {
fontSize: 16, fontSize: 16,
}, },
}, },
data: data.year, // data: data1,
}, },
{ {
axisTick: false, axisTick: false,
type: "value", type: "value",
data: data.year, // data: data1,
axisLabel: { axisLabel: {
show: false, show: false,
}, },
@ -89,6 +122,7 @@ const getOption = () => {
fontSize: 16, fontSize: 16,
}, },
}, },
data: data1,
}, },
{ {
type: "category", type: "category",
@ -102,7 +136,7 @@ const getOption = () => {
}, },
}, },
axisLine: { axisLine: {
show: false, show: false,
lineStyle: { lineStyle: {
type: "dotted", type: "dotted",
}, },
@ -112,25 +146,11 @@ const getOption = () => {
fontSize: 16, fontSize: 16,
fontFamily: "MicrosoftYaHei", fontFamily: "MicrosoftYaHei",
color: "#ffffff", color: "#ffffff",
lineHeight: 19, lineHeight: 10,
}, },
}, },
], ],
series: [ series: [
// {
// z: 1,
// name: "1",
// type: "pictorialBar",
// symbolPosition: "end",
// data: data.zgffrc,
// symbol: "diamond",
// symbolOffset: ["-60%", "-50%"],
// symbolSize: [17, 10],
// itemStyle: {
// borderColor: "#2fffa4",
// color: "rgba(142, 187, 255, 1)",
// },
// },
{ {
z: 1, z: 1,
name: "育龄妇女", name: "育龄妇女",
@ -141,23 +161,11 @@ const getOption = () => {
label: { label: {
show: true, show: true,
color: "#ffffff", color: "#ffffff",
position: "top", position: "right",
formatter: function (data) { formatter: function (data) {
return data.value + "万"; return data.value + "万";
}, },
}, },
// itemStyle: {
// color: new echarts.graphic.LinearGradient(0, 0, 0, 1, [
// {
// offset: 0,
// color: "rgba(142, 187, 255, 1)",
// },
// {
// offset: 1,
// color: "rgba(142, 187, 255, 0.20)",
// },
// ]),
// },
itemStyle: { itemStyle: {
color: { color: {
type: "linear", type: "linear",
@ -166,28 +174,12 @@ const getOption = () => {
y: 0, y: 0,
y2: 0, y2: 0,
colorStops: [ colorStops: [
{ offset: 0, color: "rgba(142, 187, 255, .7)" }, { offset: 0, color: "rgba(141, 186, 253, 0.2)" },
{ offset: 0.5, color: "rgba(142, 187, 255, .7)" }, { offset: 1, color: "rgba(141, 186, 253, 0.7)" },
{ offset: 0.5, color: "rgba(142, 187, 255, .3)" },
{ offset: 1, color: "rgba(142, 187, 255, .5)" },
], ],
}, },
}, },
}, },
// {
// z: 2,
// name: "1",
// type: "pictorialBar",
// symbolPosition: "end",
// data: data.cxffrc,
// symbol: "diamond",
// symbolOffset: ["62%", "-50%"],
// symbolSize: [17, 10],
// itemStyle: {
// borderColor: "#32ffee",
// color: "rgba(23, 237, 255, 1)",
// },
// },
{ {
z: 2, z: 2,
name: "婴幼儿", name: "婴幼儿",
@ -198,24 +190,12 @@ const getOption = () => {
label: { label: {
show: true, show: true,
color: "#ffffff", color: "#ffffff",
position: "top", position: "right",
formatter: function (data) { formatter: function (data) {
return data.value + "万"; return data.value + "万";
}, },
}, },
// itemStyle: { itemStyle: {
// color: new echarts.graphic.LinearGradient(0, 0, 0, 1, [
// {
// offset: 0,
// color: "rgba(23, 237, 255, 1)",
// },
// {
// offset: 1,
// color: "rgba(23, 237, 255, 0.20)",
// },
// ]),
// },
itemStyle: {
color: { color: {
type: "linear", type: "linear",
x: 0, x: 0,
@ -223,10 +203,8 @@ const getOption = () => {
y: 0, y: 0,
y2: 0, y2: 0,
colorStops: [ colorStops: [
{ offset: 0, color: "rgba(23, 237, 255, .7)" }, { offset: 0, color: "rgba(24, 234, 254, 0.2)" },
{ offset: 0.5, color: "rgba(23, 237, 255, .7)" }, { offset: 1, color: "rgba(24, 234, 254, 0.7)" },
{ offset: 0.5, color: "rgba(23, 237, 255, .3)" },
{ offset: 1, color: "rgba(23, 237, 255, .5)" },
], ],
}, },
}, },
@ -235,11 +213,12 @@ const getOption = () => {
// type: "bar", // type: "bar",
// xAxisIndex: 1, // xAxisIndex: 1,
// yAxisIndex: 1, // yAxisIndex: 1,
// barGap: 3,
// barWidth: 50,
// itemStyle: { // itemStyle: {
// color: "rgba(221, 242, 255, 0.1)", // color: "rgba(221, 242, 255, 0.1)",
// }, // },
// data: data.bg.map(() => 100), // data: data.bg.map(() => 10),
// barWidth: 50,
// }, // },
], ],
}; };
@ -261,12 +240,11 @@ onBeforeMount(() => {
data.cxffrc.push((item.cxffrc / 10000).toFixed(0)); data.cxffrc.push((item.cxffrc / 10000).toFixed(0));
data.bg.push(""); data.bg.push("");
}); });
// console.log(data.zgffrc,data.cxffrc); console.log(data.zgffrc,data.cxffrc);
getOption(); getOption();
setChart(); setChart();
}, 600); }, 600);
}); });
</script> </script>
<style scoped> <style scoped></style>
</style>

View File

@ -457,6 +457,21 @@ const tableType = reactive({
label: "服务内容", label: "服务内容",
property: "bzlx", property: "bzlx",
}, },
{
label: "牵头单位",
property: "qtbm",
}, {
label: "业务科室",
property: "zrks",
}, {
label: "负责人",
property: "ywfzr",
}, {
label: "联系电话",
property: "fgldsj",
},
{ {
label: "结果", label: "结果",
property: "deng", property: "deng",

View File

@ -341,7 +341,7 @@ const data = reactive({
img: icon6, img: icon6,
visible: false, visible: false,
son: [ son: [
{ {
id: "0", id: "0",
name: "概况", name: "概况",
}, },
@ -558,7 +558,8 @@ const tapshow = (parentId, childId) => {
parentId.name == "弱有所扶" || parentId.name == "弱有所扶" ||
parentId.name == "学有所教" || parentId.name == "学有所教" ||
parentId.name == "老有所养" || parentId.name == "老有所养" ||
parentId.name == "病有所医" || parentId.name == "住有所居") parentId.name == "病有所医"||
parentId.name == "住有所居")
) { ) {
gaikuang(parentId.name); gaikuang(parentId.name);
} else { } else {

View File

@ -45,7 +45,7 @@
src="@/assets/images/hygiene/jt.png" src="@/assets/images/hygiene/jt.png"
class="right5_center" class="right5_center"
/> />
<div class="right5_bottom">{{ data.mz.mjzrc }}</div> <div class="right5_bottom">{{ data.mz.mjzrc }} <span></span> </div>
</div> </div>
</div> </div>
<div class="item5"> <div class="item5">
@ -56,7 +56,7 @@
src="@/assets/images/hygiene/jt.png" src="@/assets/images/hygiene/jt.png"
class="right5_center" class="right5_center"
/> />
<div class="right5_bottom">{{ data.mz.zyrs }}</div> <div class="right5_bottom">{{ data.mz.zyrs }}<span></span></div>
</div> </div>
</div> </div>
</div> </div>
@ -70,7 +70,7 @@
src="@/assets/images/hygiene/jt.png" src="@/assets/images/hygiene/jt.png"
class="right5_center" class="right5_center"
/> />
<div class="right5_bottom">{{ data.mz.zyrs }}</div> <div class="right5_bottom">{{ data.mz.zyrs }}<span></span></div>
</div> </div>
</div> </div>
<div class="item5"> <div class="item5">
@ -81,7 +81,7 @@
src="@/assets/images/hygiene/jt.png" src="@/assets/images/hygiene/jt.png"
class="right5_center" class="right5_center"
/> />
<div class="right5_bottom">{{ data.mz.zyrs }}</div> <div class="right5_bottom">{{ data.mz.zyrs }}<span></span></div>
</div> </div>
</div> </div>
</div> </div>
@ -139,10 +139,10 @@ const data = reactive({
jtysqyl: "49.37", jtysqyl: "49.37",
}, // }, //
jsbgl: [], // jsbgl: [], //
fyglrs: {}, // // fyglrs: {}, //
jktj: {}, //65 // jktj: {}, //65
jkhd: [], // // jkhd: [], //
lxbx: {}, // // lxbx: {}, //
}); });
const showEchart = ref(false); const showEchart = ref(false);
@ -152,12 +152,12 @@ const getData = async () => {
data.medicalInsurance = res.data.medicalInsurance; data.medicalInsurance = res.data.medicalInsurance;
data.lmb = res.data.lmb; data.lmb = res.data.lmb;
data.mz = res.data.mz; data.mz = res.data.mz;
// data.jkda = res.data.jkda; data.jkda = res.data.jkda;
data.jsbgl = res.data.jsbgl; data.jsbgl = res.data.jsbgl;
data.fyglrs = res.data.fyglrs; // data.fyglrs = res.data.fyglrs;
data.jktj = res.data.jktj; // data.jktj = res.data.jktj;
data.jkhd = res.data.jkhd; // data.jkhd = res.data.jkhd;
data.lxbx = res.data.lxbx; // data.lxbx = res.data.lxbx;
showEchart.value = true; showEchart.value = true;
} }
}); });
@ -516,7 +516,7 @@ onMounted(() => {});
background-size: 100% 100%; background-size: 100% 100%;
} }
.center_top { .center_top {
width: 95%; width: 98%;
// height: 150px; // height: 150px;
display: flex; display: flex;
flex-direction: column; flex-direction: column;
@ -531,9 +531,10 @@ onMounted(() => {});
.item5 { .item5 {
display: flex; display: flex;
align-items: center; align-items: center;
width: 233px; width: 242px;
height: 140px; height: 140px;
background: rgba(255, 255, 255, 0.1); background: rgba(255, 255, 255, 0.1);
padding-left: 8px;
// opacity: 0.37; // opacity: 0.37;
.left5 { .left5 {
@ -568,6 +569,9 @@ onMounted(() => {});
rgba(255, 255, 255, 0) 0%, rgba(255, 255, 255, 0) 0%,
#3976a1 100% #3976a1 100%
); );
span{
font-size: 15px;
}
} }
} }
} }
@ -1114,7 +1118,7 @@ onMounted(() => {});
margin-top: 15px; margin-top: 15px;
margin-bottom: 10px; margin-bottom: 10px;
} }
.font { // .font {
font-size: 18px !important; // font-size: 18px !important;
} // }
</style> </style>