Compare commits

...

2 Commits

Author SHA1 Message Date
姜玉琦 e9e2a003aa Merge branch 'dev_xd' of http://62.234.3.186:3000/jiangyq/YZProjectCloud into dev_xd 2025-06-30 18:01:33 +08:00
姜玉琦 19d7c2ed82 提交代码 2025-06-30 18:01:24 +08:00
8 changed files with 1350 additions and 6 deletions

View File

@ -312,6 +312,9 @@ export default {
case 102:
this.$router.push("/labor");
break;
case 401:
this.$router.push("/qualityCheck");
break;
case 501:
this.$router.push("/photography");
break;

View File

@ -111,6 +111,12 @@ const routes = [
meta: { nav: 310 },
component: () => import(/* webpackChunkName: "safetyCheck" */ "../views/safety/aiWarning.vue"),
},
{
path: "/qualityCheck",
name: "qualityCheck",
meta: { nav: 401 },
component: () => import(/* webpackChunkName: "qualityCheck" */ "../views/quality/qualityCheck.vue"),
},
{
path: "/photography",
name: "photography",

View File

@ -0,0 +1,285 @@
<template>
<MyDialog v-if="show" v-model="show" width="60vw" height="75vh" class="safety-check-dialog">
<template slot="title">{{ title }}</template>
<div class="head-title-tab" style="padding: 10px 0px;">
<div :class="nav == 6 ? 'head-nav active' : 'head-nav'" @click="doNav(6)">{{ counts[0] }}</div>
<div :class="nav == 3 ? 'head-nav active' : 'head-nav'" @click="doNav(3)">{{ counts[1] }}</div>
<div :class="nav == 7 ? 'head-nav active' : 'head-nav'" @click="doNav(7)">{{ counts[2] }}</div>
<div :class="nav == 4 ? 'head-nav active' : 'head-nav'" @click="doNav(4)">{{ counts[3] }}</div>
<div :class="nav == 5 ? 'head-nav active' : 'head-nav'" @click="doNav(5)">{{ counts[4] }}</div>
</div>
<div class="scroll data-list" :key="dataKey">
<div v-if="rows.length == 0" style="text-align: center;" class="div-no-data">
<img src="images/nodata.png" style="width: 120px;" />
<div style="text-align: center;font-size: 12px;color:#888;">暂无数据</div>
</div>
<div v-for="(it, idx) in rows" :key="idx" class="data-item">
<div class="left-image">
<div class="left-header">
<span class="sp-nav" :class="it.imgSel == 0 ? 'active' : ''" @click="it.imgSel = 0">整改前</span>
<span class="sp-nav" :class="it.imgSel == 1 ? 'active' : ''" v-if="it.checkState == 4" @click="it.imgSel = 1"></span>
</div>
<el-image class="img-sm" fit="scale-down" :src="it.smarkUrl" v-if="it.imgSel == 0" :preview-src-list="[it.smarkUrl]"></el-image>
<el-image class="img-sm" fit="scale-down" :src="it.marksPicture" v-if="it.imgSel == 1" :preview-src-list="[it.marksPicture]"></el-image>
</div>
<div class="right-data">
<el-col :span="12">
<span class="sp-label">隐串类型:</span>
<span class="sp-value">{{ getDict(it.dangerType) }}</span>
</el-col>
<el-col :span="12">
<span class="sp-label">提交时间:</span>
<span class="sp-value">{{ it.createTime }}</span>
</el-col>
<el-col :span="12">
<span class="sp-label">提交人:</span>
<span class="sp-value">{{ it.createUser }}</span>
</el-col>
<el-col :span="12">
<span class="sp-label">整改人:</span>
<span class="sp-value">{{ it.lordSentUser }}</span>
</el-col>
<el-col :span="12">
<span class="sp-label">抄送人:</span>
<span class="sp-value">{{ it.copySendUser }}</span>
</el-col>
<el-col :span="12">
<span class="sp-label">截止时间:</span>
<span class="sp-value">{{ it.nickedTime }}</span>
</el-col>
<el-col :span="24">
<span class="sp-label">隐患描述:</span>
<span class="sp-value">{{ it.workParts }}</span>
</el-col>
<el-col :span="24">
<span class="sp-label">整改要求:</span>
<span class="sp-value">{{ it.changeInfo }}</span>
</el-col>
</div>
</div>
</div>
<el-pagination
v-if="rows.length > 0"
layout="total,prev, pager, next"
@current-change="handleCurrentChange"
:total="total"
:page-size="pageSize"
:current-page.sync="pageNum"
class="bg-pagination"
></el-pagination>
</MyDialog>
</template>
<script>
export default {
data() {
return {
show: false,
title: '质量隐患排查',
prjInfo: {},
nav: 6,
problemType: null,
counts: [],
pageNum: 0,
pageSize: 10,
total: 0,
rows: [],
dataKey: 0,
dangerTypeDict: [],
}
},
methods: {
handleCurrentChange(n) {
this.pageNum = n
this.loadData()
},
getDict(n) {
let tmps = this.dangerTypeDict.filter((d) => d.value == n)
return tmps.length > 0 ? tmps[0].label : ''
},
doNav(n) {
this.nav = n
this.loadData()
},
showDialog(prj, n, dangerTypeDict) {
this.dangerTypeDict = dangerTypeDict
this.problemType = n == 0 ? null : n
this.prjInfo = prj
this.title = ['安全隐患排查', '日常巡检', '周检', '月检', '专项检查'][n]
this.pageNum = 0
this.show = true
this.getCount(n)
this.loadData()
},
getCount(n) {
let postData = {
projectId: this.prjInfo.id,
comId: this.prjInfo.comId,
infoType: 1,
}
if (n > 0) {
postData.problemType = n
}
this.$api.safety.listCountForBG(postData).then((d) => {
this.counts = d.data.filter((it) => it.projectName != 'a').map((it) => it.id)
})
},
loadData() {
let postData = {
projectId: this.prjInfo.id,
comId: this.prjInfo.comId,
infoType: 1,
pageNum: this.pageNum,
pageSize: this.pageSize,
problemType: this.problemType,
projectName: this.nav,
}
this.$api.safety.listForBG(postData).then((d) => {
this.total = d.total
this.rows = (d.rows || []).map((it) => {
it.imgSel = 0
return it
})
this.dataKey++
})
},
},
}
</script>
<style lang="less">
.safety-check-dialog {
.popup-project-introduction-min {
transform: translateY(20%);
}
.bg-pagination {
margin-top: 5px;
}
.data-list {
max-height: calc(75vh - 150px);
overflow-y: auto;
.div-no-data {
margin-top: 10vh;
}
.data-item {
display: flex;
background: #060f239d;
padding: 10px;
border: solid 1px #cccccc33;
margin-top: 20px;
&:first-child {
margin-top: 0;
}
.left-image {
width: 160px;
box-shadow: 1px 1px 10px 1px #ffffff3b;
.left-header {
margin-bottom: 8px;
background: #fff;
.sp-nav {
display: inline-block;
width: 50%;
line-height: 30px;
text-align: center;
background: #fff;
color: #5b84eb;
cursor: pointer;
&.active {
color: #fff;
background: #5b84eb;
}
}
}
.el-image {
width: 160px;
height: 100px;
}
}
.right-data {
flex-grow: 1;
padding: 0px 20px;
line-height: 30px;
.sp-label {
color: #8bffd2;
}
}
}
}
}
@media (min-width: 1921px) and (max-width: 2560px) {
.safety-check-dialog {
.bg-pagination {
margin-top: 5px;
* {
font-size: 20px !important;
}
button,
li {
height: 28px !important;
line-height: 28px !important;
}
}
.data-list {
max-height: calc(75vh - 180px);
.data-item {
.right-data {
font-size: 18px;
.sp-label {
color: #8bffd2;
}
}
}
}
}
}
@media (min-width: 2561px) {
.safety-check-dialog {
.bg-pagination {
margin-top: 15px;
* {
font-size: 24px !important;
}
button,
li {
height: 32px !important;
line-height: 32px !important;
}
}
.data-list {
max-height: calc(75vh - 180px);
.data-item {
.right-data {
font-size: 24px;
.sp-label {
color: #8bffd2;
}
}
}
}
}
}
</style>

File diff suppressed because it is too large Load Diff

View File

@ -483,7 +483,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
<select id="groupByDangerType" parameterType="SmzSspProblemmodify" resultMap="SmzSspProblemmodifyResult">
SELECT
a.cnt id,
ifNull(a.cnt,0) as id,
b.cnt comId,
dic.dict_value nickedInfo,
dic.dict_label danger_type
@ -524,5 +524,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
GROUP BY
dic.dict_value
) b ON b.dict_value = dic.dict_value
where 1=1
<if test="infoType != null "> and dic.remark = #{infoType}</if>
</select>
</mapper>

View File

@ -102,7 +102,11 @@ public class WXAttendanceController extends BaseController {
}
Map<String, Object> data = new HashMap<>();
data.put("list",list);
data.put("user",Math.floorDiv(list.stream().mapToInt((u) -> Integer.valueOf(String.valueOf(u.get("total")))).sum(),list.size()));
if(list.size()>0){
data.put("user",Math.floorDiv(list.stream().mapToInt((u) -> Integer.valueOf(String.valueOf(u.get("total")))).sum(),list.size()));
}else{
data.put("user",0);
}
return AjaxResult.success(data);
}

View File

@ -37,4 +37,8 @@
<view class="wxlogin_btn">
<button open-type="getPhoneNumber" bindgetphonenumber="getPhoneNumber">手机号快捷登录</button>
</view>
<view class="login_foot">
仅限特定人群登录
</view>
</view>

View File

@ -15,18 +15,18 @@ page {
}
.login_title {
height: 158rpx;
line-height: 158rpx;
height: 125rpx;
line-height: 125rpx;
color: #DDDDDD;
font-size: 40rpx;
font-weight: bold;
text-align: center;
word-spacing: 30rpx;
background: url("https://xiangguan.sxyanzhu.com/profile/static/yanzhu_title.png") no-repeat left/100% 100%;
margin-bottom: 50px;
margin-bottom: 68px;
}
.login_title image{
height: 148rpx;
height: 125rpx;
}
.login_bg {
@ -113,6 +113,14 @@ page {
height: 100rpx;
}
.login_foot{
position: fixed;
width: 84%;
bottom: 50px;
text-align: center;
color: aquamarine;
}
.loadings{
margin-top: 15%;
text-align: center;