修改大屏样式

main
junhong 1 week ago
parent 0f08e70255
commit cefc6083f4
  1. 6
      folder-alias.json
  2. 4
      src/App.vue
  3. 2
      src/components/ParentView/index.vue
  4. 21
      src/components/prompt/index.vue
  5. 1
      src/layout/components/AppMain.vue
  6. 4
      src/layout/index.vue
  7. 6
      src/store/modules/settings.js
  8. 49
      src/utils/vctgo.js
  9. 85
      src/views/large-screen/index.vue

@ -34,5 +34,11 @@
},
"src/views/sitePersonnel/work-attendance": {
"description": "考勤记录"
},
"src/views/constructionScheduling/progress-alert": {
"description": "进度预警"
},
"src/views/constructionScheduling/progress-monitoring": {
"description": "进度监控"
}
}

@ -1,12 +1,12 @@
<template>
<router-view />
<promptfrom></promptfrom>
</template>
<script setup>
import useSettingsStore from '@/store/modules/settings'
import { handleThemeStyle } from '@/utils/theme'
import promptfrom from "@/components/prompt/index";
onMounted(() => {
nextTick(() => {
//

@ -1,3 +1,5 @@
<template >
<router-view />
</template>
<script setup>
</script>

@ -8,6 +8,7 @@ import {
} from "./api";
import { ElNotification } from "element-plus";
const { proxy } = getCurrentInstance();
import useUserStore from "@/store/modules/settings";
const notify = ref({});
const router = useRouter();
const state = reactive({
@ -15,8 +16,10 @@ const state = reactive({
arr: [],
});
onMounted(() => {
if(!useUserStore().promptShow) return
iengineerlogList().then((res) => {
if (res.code == 200) {
useUserStore().setpromptShow(false)
res.data.list.map((item) => {
setTimeout(() => {
notify.value[item.id] = ElNotification({
@ -32,6 +35,11 @@ onMounted(() => {
item.planName +
"的计划已滞后" + "需要您查看。"
),
h(
"p",
{},
"预警时间为"+item.createTime
),
h(
"p",
{
@ -64,25 +72,14 @@ onMounted(() => {
})
// proxy.$getsystemdict('purpose_expenses').then((res) => {
// if (res.length > 0) {
// }
// })
});
const change = (item) => {
let formData = new FormData();
formData.append("id", item.id);
formData.append("status", 0);
let filenull = new File([""], "", { type: "" });
formData.append("file", filenull);
edit(formData).then((res) => {
if (res.code == 200) {
notify.value[item.id].close();
}
});
};
</script>

@ -22,7 +22,6 @@ const routeName = ref(route.meta.title);
watch(() => route.meta.title, (newTitle) => {
routeName.value = newTitle;
});
defineProps({
height: {
type: String,

@ -6,12 +6,12 @@
<template v-else>
<LeftRight></LeftRight>
</template>
<promptfrom></promptfrom>
</div>
</template>
<script setup>
import promptfrom from "../components/prompt/index";
import useSettingsStore from '@/store/modules/settings'
import LeftRight from './components/LeftRight.vue'
import UpDown from './components/UpDown.vue'

@ -18,9 +18,13 @@ const useSettingsStore = defineStore(
tagsView: storageSetting.tagsView === undefined ? tagsView : storageSetting.tagsView,
fixedHeader: storageSetting.fixedHeader === undefined ? fixedHeader : storageSetting.fixedHeader,
sidebarLogo: storageSetting.sidebarLogo === undefined ? sidebarLogo : storageSetting.sidebarLogo,
dynamicTitle: storageSetting.dynamicTitle === undefined ? dynamicTitle : storageSetting.dynamicTitle
dynamicTitle: storageSetting.dynamicTitle === undefined ? dynamicTitle : storageSetting.dynamicTitle,
promptShow:true,
}),
actions: {
setpromptShow(promptShow) {
this.promptShow = promptShow
},
// 修改布局设置
changeSetting(data) {
const { key, value } = data

@ -0,0 +1,49 @@
export function retryAndRepeatRequest(requestFn, maxRetries = 3, retryDelay = 1000, interval = 300000) {
let retries = 0; // 当前重试次数
let isRunning = true; // 控制是否继续执行
// 内部重试逻辑
async function attemptRequest() {
try {
const res = await requestFn(); // 调用请求函数
// 检查请求是否成功
if (res.code == 200) {
// console.log("Request succeeded:", res);
// 如果请求成功,处理数据并设置定时器每隔指定时间重新发起请求
setTimeout(() => {
if (isRunning) {
attemptRequest();
}
}, interval);
} else {
throw new Error(`Request failed with code ${res.code}`);
}
} catch (error) {
console.error(`Attempt failed: ${error.message}`);
retries++;
if (retries <= maxRetries) {
console.log(`Retrying in ${retryDelay / 1000} seconds...`);
setTimeout(attemptRequest, retryDelay);
} else {
console.error(`Request failed after ${maxRetries} attempts: ${error.message}`);
isRunning = false; // 停止后续执行
}
}
}
// 启动第一次请求
attemptRequest();
// 提供一个停止函数
return {
stop: () => {
isRunning = false;
console.log("Request loop stopped.");
}
};
}

@ -165,7 +165,7 @@
<div v-else class="boxcontent"
style="display: grid;grid-template-columns: 1fr 1fr ;grid-gap: .75rem;padding: 1.5625rem 1.3125rem;">
<div class="yj-box" v-for="item, index in state.warnList.slice(0, 2)" :key="index">
<img v-if="index==0" class="jgbj" src="../../assets/images/jglv.png" alt="">
<img v-if="index == 0" class="jgbj" src="../../assets/images/jglv.png" alt="">
<img v-else class="jgbj" src="../../assets/images/jgred.png" alt="">
<div style="text-align: center;font-size: .875rem;">{{ item.planName }}</div>
<div>开始时间{{ item.startTime }}</div>
@ -177,7 +177,7 @@
</el-progress>
</div>
</div>
<div>备注当前计划进度已滞后</div>
<div>备注{{ item.warnInfo ? item.warnInfo : '-' }}</div>
</div>
</div>
</div>
@ -251,10 +251,11 @@
{{ item.startSwingTime }}
</div>
<div>{{ item.imageType == 1 ? '内部人员' : item.imageType == 2 ? '访客' : '-' }}</div>
<div>
<div
:style="{ color: item.maskState == 2 ? '#FF0A0A' : item.maskState == 3 ? '#00E287' : '#fff' }">
{{ item.maskState == 3 ? '带口罩' : item.maskState == 2 ? '没带口罩' : '未识别' }}
</div>
<div :style="{ color: item.overTemp ? 'red' : 'green' }">
<div :style="{ color: item.overTemp ? '#FF0A0A' : '#00E287' }">
{{ item.overTemp ? '是' : '否' }}
</div>
</div>
@ -285,14 +286,17 @@
</div>
</div>
</div>
<promptfrom></promptfrom>
</div>
</template>
<script setup>
import promptfrom from "../../components/prompt/index";
import { ref, onMounted, reactive, nextTick } from 'vue'
import { echartsZhu, echartsBing } from "./echartsOptions";
import { echart } from "../../echarts";
import { stausList } from './options'
import { getRecordPage, iengineerlogList, iuserworkerType, iresourcescheduleList, vehiclestat, statistics, dataOverview, iwarnlist } from './api'
import { retryAndRepeatRequest } from "@/utils/vctgo";
import { getRecordPage, iengineerlogList, iuserworkerType, iresourcescheduleList, vehiclestat, statistics, dataOverview, iwarnlist } from './api'
const { proxy } = getCurrentInstance();
const tableTrue = ref(false);
const router = useRouter();
@ -320,6 +324,7 @@ const state = reactive({
imageType: 1,
openType: 43,
startSwingTime: "2025-05-13 02:17:55",
maskState: 3,
}, {
"id": 17,
"personId": 21059,
@ -339,6 +344,7 @@ const state = reactive({
imageType: 2,
openType: 42,
startSwingTime: "2025-05-13 02:17:55",
maskState: 2
}, {
"id": 17,
"personId": 21059,
@ -445,17 +451,44 @@ const state = reactive({
"list": 0,
"ysg": 0,
gcjd: ""
}
},
requestController: null
})
onUnmounted(() => {
if (state.requestController) state.requestController.stop();
});
onMounted(async () => {
await getDataOverview()
await getIresourceschedule()
await getIuserworkerType()
await engineeringLog()
await getQuerywarn()
await getStatistics()
await getVehiclestat()
// await accessControl()
if (state.requestController) {
state.requestController.stop();
state.requestController = null
}
async function requestFn() {
await getDataOverview()
await getIresourceschedule()
await getIuserworkerType()
await engineeringLog()
await getQuerywarn()
await getStatistics()
// await accessControl()
const res = await getVehiclestat();
if (res.code == 200) {
nextTick(() => {
let car = state.echart({
id: 'car',
grid: state.echartsBing({
total: res.data.personal + res.data.aotomobile,
data: [
{ value: res.data.personal, name: '施工机械数' },
{ value: res.data.aotomobile, name: '运输车辆数' }
]
}),
});
})
}
return res;
}
state.requestController = retryAndRepeatRequest(requestFn, 3, 30000, 300000);
state.loading = false
})
function Jump() {
@ -479,23 +512,15 @@ function getStatistics() {
})
}
function getVehiclestat() {
vehiclestat().then((res) => {
if (res.code == 200) {
nextTick(() => {
let car = state.echart({
id: 'car',
grid: state.echartsBing({
total: res.data.personal + res.data.aotomobile,
data: [
{ value: res.data.personal, name: '施工机械数' },
{ value: res.data.aotomobile, name: '运输车辆数' }
]
}),
});
return new Promise((resolve) => {
vehiclestat().then((res) => {
if (res.code == 200) {
resolve(res)
}
})
})
}
})
}
function getIresourceschedule() {
iresourcescheduleList().then((res) => {
@ -527,7 +552,7 @@ function getQuerywarn(params) {
state.warnList = res.data.list
}
})
}
//

Loading…
Cancel
Save