Commit 9be7af28 authored by lei's avatar lei

add:安全检查list接口、首页安全信息接口联调

parent f1d55a71
<!DOCTYPE html> <!DOCTYPE html>
<html lang="en"> <html lang="en">
<head>
<meta charset="UTF-8" />
<meta
name="viewport"
content="width=device-width, initial-scale=1.0"
/>
<title>商户检查页面</title>
<meta charset="UTF-8" />
<meta
http-equiv="X-UA-Compatible"
content="IE=edge"
/>
<meta
name="viewport"
content="width=device-width, initial-scale=1.0, user-scalable=no, minimum-scale=1.0, maximum-scale=1.0, viewprot-fit:cover"
/>
<title>高区安全“码”上查监管平台-首页</title>
<link
rel="stylesheet"
href="index.css"
/>
<script
type="text/javascript"
src="./sdk/includeHead.js"
></script>
</head>
<head> <body>
<meta charset="UTF-8"> <!-- 获取授权用户信息 本地token等操作 -->
<meta name="viewport" content="width=device-width, initial-scale=1.0"> <!-- <script type="text/javascript" src="sdk/jssdk2/index.js"></script> -->
<title>商户检查页面</title> <div
<meta charset="UTF-8"> id="app"
<meta http-equiv="X-UA-Compatible" content="IE=edge"> class="page_wrapper"
<meta name="viewport" >
content="width=device-width, initial-scale=1.0, user-scalable=no, minimum-scale=1.0, maximum-scale=1.0, viewprot-fit:cover"> <!-- 第二层:商户图标、名称、等级、场所类型和地址 -->
<title>高区安全“码”上查监管平台-首页</title> <div
<link rel="stylesheet" href="index.css" /> class="second-layer second-layer-zf"
<script type="text/javascript" src="./sdk/includeHead.js"></script> v-if="userInfo.userType!=='sj'"
>
<img
class="merchant-icon"
src="image/code/zhengfu_logo.png"
alt=""
/>
<div class="merchant-info welcome">
<p>欢迎您,{{userInfo.deptName}}<br />进入安全“码”上查</p>
<div class="user_tag">
<img
src="image/code/user.png"
alt=""
/>
<span>{{userInfo.roleName}}</span>
</div>
</div>
</div>
</head> <!-- 第二层:商户图标、名称、等级、场所类型和地址 -->
<div
class="second-layer-sj"
v-if="userInfo.userType=='sj'"
>
<div class="header">
<span>商家信息</span>
<div class="user_tag">
<img
src="image/code/user.png"
alt=""
/>
<span>商家</span>
</div>
</div>
<div class="bottom">
<div class="left">
<img
class="merchant-icon"
src="image/code/sj.png"
alt="商户图标"
/>
</div>
<div class="right">
<div class="merchant-info">
<div class="name-rank">
<span class="merchant-name">{{userInfo.unitName}}</span>
<span class="user-rank">安全等级:绿</span>
</div>
<div class="divider"></div>
<div class="type-address">
<p>场所类型:{{userInfo.smallPlaceTypeName}}</p>
<p>{{userInfo.businessAddress}}</p>
</div>
</div>
</div>
</div>
</div>
<!-- 第三层:统计信息 -->
<div class="third-layer">
<div class="stats-header">
<div class="stats-title">数据统计</div>
<!-- <van-cell-group> -->
<div
@click="showPopup('showPopup4completionDate')"
style="position: absolute; top: -0.08rem; right: 0.4rem"
>
<span class="formValue">{{showDate|formatterData}}</span
><van-icon name="arrow-down" />
</div>
<van-popup
v-model="showPopup4completionDate"
position="bottom"
>
<van-datetime-picker
v-model="selectedDate"
:min-date="minDate"
type="year-month"
title="选择年月"
@confirm="confirm4completionDate"
@cancel="showPopup4completionDate=false"
:formatter="needData"
/>
</van-popup>
<!-- </van-cell-group> -->
</div>
<div class="stats-content">
<div class="stat-item">
<div class="stat-value">{{userData.checkCount}}次</div>
<div class="stat-label">检查数</div>
</div>
<div class="stat-item">
<div class="stat-value">{{userData.checkSelfCount}}次</div>
<div class="stat-label">自查数</div>
</div>
<div class="stat-item">
<div class="stat-value">{{userData.hiddenCount}}处</div>
<div class="stat-label">隐患数</div>
</div>
<div class="stat-item">
<div class="stat-value">{{userData.hiddenNoReCount}}处</div>
<div class="stat-label">未整改</div>
</div>
</div>
</div>
<body> <!-- 第四层:检查专区 -->
<!-- 获取授权用户信息 本地token等操作 --> <div class="fourth-layer">
<!-- <script type="text/javascript" src="sdk/jssdk2/index.js"></script> --> <h2>检查专区</h2>
<div id="app" class="page_wrapper"> <div class="check-modules">
<!-- 第二层:商户图标、名称、等级、场所类型和地址 --> <div
<div class="second-layer second-layer-zf" v-if="userInfo.userType!=='sj'"> class="check-module"
<img class="merchant-icon" src="image/code/zhengfu_logo.png" alt=""> v-for="(item,index) in menuList"
<div class="merchant-info welcome"> :key="index"
<p>欢迎您,<br>进入安全“码”上查 </p> :class="item.className"
<div class="user_tag"> @click="scanCode(item.navTo)"
<img src="image/code/user.png" alt=""> >
<span>日常检查</span> <p>{{item.title}} <van-icon name="arrow" /></p>
</div> <p class="module-intro">{{item.remark}}</p>
</div> </div>
</div> </div>
</div>
</div>
<!-- 第二层:商户图标、名称、等级、场所类型和地址 --> </body>
<div class="second-layer-sj" v-if="userInfo.userType=='sj'"> </html>
<div class="header">
<span>商家信息</span>
<div class="user_tag">
<img src="image/code/user.png" alt="">
<span>商家</span>
</div>
</div>
<div class="bottom">
<div class="left">
<img class="merchant-icon" src="image/code/sj.png" alt="商户图标">
</div>
<div class="right">
<div class="merchant-info">
<div class="name-rank">
<span class="merchant-name">威海市宝威酒店有限公司</span>
<span class="user-rank">安全等级:绿</span>
</div>
<div class="divider"></div>
<div class="type-address">
<p>场所类型:小餐饮</p>
<p>山东省威海市环翠区恒瑞街35-6</p>
</div>
</div>
</div>
</div>
</div>
<!-- 第三层:统计信息 -->
<div class="third-layer">
<div class="stats-header">
<div class="stats-title">数据统计</div>
<!-- <van-cell-group> -->
<div @click="showPopup('showPopup4completionDate')" style="position: absolute;
top: -.08rem;
right: .4rem;"><span class="formValue">{{formattedDate}}</span><van-icon name="arrow-down" /></div>
<van-popup v-model="showPopup4completionDate" position="bottom">
<van-datetime-picker v-model="selectedDate" :min-date="minDate" type="year-month" title="选择年月"
@confirm="confirm4completionDate" @cancel="showPopup4completionDate=false" />
</van-popup>
<!-- </van-cell-group> -->
</div>
<div class="stats-content">
<div class="stat-item">
<div class="stat-value">75次</div>
<div class="stat-label">检查数</div>
</div>
<div class="stat-item">
<div class="stat-value">50次</div>
<div class="stat-label">自查数</div>
</div>
<div class="stat-item">
<div class="stat-value">10处</div>
<div class="stat-label">隐患数</div>
</div>
<div class="stat-item">
<div class="stat-value">5处</div>
<div class="stat-label">未整改</div>
</div>
</div>
</div>
<!-- 第四层:检查专区 -->
<div class="fourth-layer">
<h2>检查专区</h2>
<div class="check-modules">
<div class="check-module saoma" v-if="menuShowYN('saoma')" @click="scanCode">
<p>扫码检查 <van-icon name="arrow" /></p>
<p class="module-intro">扫码进行企业安全检查</p>
</div>
<div class="check-module jiancha" v-if="menuShowYN('jianchajilu')" @click="navTo('checkrecord')">
<p>检查记录 <van-icon name="arrow" /></p>
<p class="module-intro">查看商家检查自查记录</p>
</div>
<div class="check-module yinhuan" v-if="menuShowYN('yinhuanshenhe')" @click="navTo('yh-check')">
<p>隐患审核 <van-icon name="arrow" /></p>
<p class="module-intro">对整改隐患进行审核</p>
</div>
<div class="check-module yinhuan" v-if="menuShowYN('yinhuanzhenggai')" @click="navTo('yh-check')">
<p>隐患整改 <van-icon name="arrow" /></p>
<p class="module-intro">对隐患进行整改</p><!-- UI设计图没这个原型有 -->
</div>
<!-- <div class="check-module anquan" v-if="menuShowYN('anquanchangshi')" @click="navTo('check_list')">
<p>安全常识 <van-icon name="arrow" /></p>
<p class="module-intro">查看安全常识培训资料</p>
</div> -->
<div class="check-module shangjia" v-if="menuShowYN('shangjiaxinxi')" @click="navTo('shanghu_detail')">
<p>商家信息 <van-icon name="arrow" /></p>
<p class="module-intro">查看商家基础信息</p>
</div>
<div class="check-module zicha" v-if="menuShowYN('anquanzicha')" @click="navTo('checkrecord')">
<p>安全自查 <van-icon name="arrow" /></p>
<p class="module-intro">进行企业安全自查</p>
</div>
</div>
</div>
</div>
</body>
</html>
\ No newline at end of file
window.onload = function () { window.onload = function () {
// 在页面加载完成后执行 // 在页面加载完成后执行
// 执行你的代码 // 执行你的代码
const currentDate = gemhoUtil.getTargetDateYM(); const currentDate = gemhoUtil.getTargetDateYM()
new Vue({ new Vue({
el: '#app', el: '#app',
data() { data() {
return { return {
showPopup4completionDate: false, showPopup4completionDate: false,
// 控制日期选择器弹窗的显示与隐藏 // 控制日期选择器弹窗的显示与隐藏
showPicker: false, showPicker: false,
// 存储选择的日期 // 存储选择的日期
selectedDate: currentDate, // '', // gemhoUtil.formatDate(new Date(value)), selectedDate: currentDate, // '', // gemhoUtil.formatDate(new Date(value)),
// 日期选择的最小范围,这里设置为当前日期的前 10 年 //显示的日期
minDate: new Date(new Date().getFullYear() - 10, 0), showDate: currentDate,
// 日期选择的最大范围,这里设置为当前日期的后 10 年 // 日期选择的最小范围,这里设置为当前日期的前 10 年
maxDate: new Date(new Date().getFullYear() + 10, 11), minDate: new Date(new Date().getFullYear() - 10, 0),
checkModules: [{ // 日期选择的最大范围,这里设置为当前日期的后 10 年
intro: '提交检查反馈', maxDate: new Date(new Date().getFullYear() + 10, 11),
checkModules: [
}, {
{ intro: '提交检查反馈',
intro: '查看检查历史记录' },
}, {
{ intro: '查看检查历史记录',
intro: '提交检查反馈' },
}, {
{ intro: '提交检查反馈',
intro: '下载检查报告' },
}, {
{ intro: '下载检查报告',
intro: '查看隐患详情' },
}, {
{ intro: '查看隐患详情',
intro: '设置检查提醒' },
} {
], intro: '设置检查提醒',
userInfo: { },
userType: 'sj', // 登录用户type ],
userId: '1', // 登录用户id userInfo: {
userName: '张三', // 登录用户name userType: 'sj1', // 登录用户type
deptId: '1', // 登录用户部门id userId: '1', // 登录用户id
deptName: '部门1', // 登录用户部门name userName: '张三', // 登录用户name
role: 'dudao', deptId: '1', // 登录用户部门id
roleName: '督导', deptName: '部门1', // 登录用户部门name
}, // 登录用户type role: 'dudao',
}; roleName: '督导',
}, },
mounted() { // 登录用户type
// 在组件挂载后执行 defaultMenuList: [
// 调用你的方法 {
this.init(); className: 'saoma',
}, title: '扫码检查',
computed: { remark: '',
formattedDate() { navTo: false,
// 检查原始日期是否存在 },
console.log(this.selectedDate == null) {
if (this.selectedDate !== null) { className: 'jiancha',
// 使用 split 方法按 - 分割日期字符串 title: '检查记录',
const [year, month] = this.selectedDate.split('-'); remark: '',
// 拼接成目标格式 navTo: 'checkrecord',
return `${year}${month}日`; },
} {
return ''; className: 'yinhuan',
} title: '隐患审核',
}, remark: '',
methods: { navTo: 'yinhuanshenhe',
scanCode() { },
lightAppJssdk.device.scan({ {
success: function (data) { className: 'yinhuan',
// 获取到data为二维码的url路径,从这里取请求参数,商户id,在下面跳转本地系统路径 title: '隐患整改',
// alert('扫码成功'+JSON.stringify(data)) remark: '',
navTo: 'yinhuanzhenggai',
// location.href = 'shanghu_home.html' },
gemhoUtil.navigatePage(`src/_shanghu_home.html`) {
//成功回调 className: 'shangjia',
}, fail: function (data) { title: '商家信息',
//错误返回 remark: '',
alert('扫码失败') navTo: 'shanghu_detail',
} },
}); {
}, className: 'zicha',
navTo(url){ title: '安全自查',
// gemhoUtil.nav2asd(url) remark: '',
gemhoUtil.navigatePage(`src/_${url}.html`) navTo: 'checkrecord',
}, },
menuShowYN(menuName){ ],
return true // 修改默认菜单结构为最小化配置
var roleList = [] menuList: [],
// 初始化为空数组,等待接口数据填充
if(menuName=='saoma'){ userData: {
roleList = ['dudao', 'hangye', 'richang'] checkCount: 0, //检查数
} checkSelfCount: 0, //自查数
if(menuName=='jianchajilu'){ hiddenCount: 0, //隐患数
roleList = ['dudao', 'hangye', 'richang', 'shangjia'] hiddenNoReCount: 0, //未整改数
} },
}
if(menuName=='yinhuanshenhe'){ },
roleList = ['richang'] mounted() {
} // 在组件挂载后执行
// 调用你的方法
if(menuName=='shangjiaxinxi'){ this.init()
roleList = ['shangjia'] },
} computed: {},
if(menuName=='anquanchangshi'){ methods: {
roleList = ['shangjia'] scanCode(toData) {
} if (toData === false) {
if(menuName=='anquanzicha'){ lightAppJssdk.device.scan({
roleList = ['shangjia'] success: function (data) {
} // 获取到data为二维码的url路径,从这里取请求参数,商户id,在下面跳转本地系统路径
if(menuName=='yinhuanzhenggai'){ // alert('扫码成功'+JSON.stringify(data))
roleList = ['shangjia']
} // location.href = 'shanghu_home.html'
console.log(roleList.indexOf(this.userInfo.role) > -1) gemhoUtil.navigatePage(`src/_shanghu_home.html`)
return roleList.indexOf(this.userInfo.role) > -1 //成功回调
}, },
init() { fail: function (data) {
// 在组件挂载后执行 //错误返回
// 调用你的方法 alert('扫码失败')
}, },
showPopup() { })
this['showPopup4completionDate'] = true } else {
}, gemhoUtil.navigatePage(`src/_${toData}.html`)
confirm4completionDate(value) { }
console.log('value', value) },
this.selectedDate = gemhoUtil.getTargetDateYMByPara(value) navTo(url) {
this.showPopup4completionDate = false // gemhoUtil.nav2asd(url)
},
},
// 确认选择日期时的回调函数 init() {
onConfirm(value) { // 在组件挂载后执行
// 使用 toLocaleDateString 方法将日期对象格式化为本地日期字符串 // 调用你的方法
this.selectedDate = value.toLocaleDateString(); this.getUserInfo()
this.showPicker = false; this.getUserData()
}, },
// 取消选择日期时的回调函数 showPopup() {
onCancel() { this['showPopup4completionDate'] = true
this.showPicker = false; },
} confirm4completionDate(value) {
}, this.selectedDate = gemhoUtil.getTargetDateYMByPara(value)
}); this.showDate = gemhoUtil.getTargetDateYMByPara(value)
this.showPopup4completionDate = false
} this.getUserData()
},
// 格式化日期显示的函数,根据需要自定义
needData(type, val) {
if (type === 'year') {
return `${val}`
} else if (type === 'month') {
return `${val}`
}
return val
},
// 取消选择日期时的回调函数
onCancel() {
this.showPicker = false
},
getUserInfo() {
http.get('/gq/information/getAll/141 ').then((res) => {
if (res.code !== 200 && res.data == null) {
return
}
if (
res.data.roleDeptNameVo.roleName == '超级管理员' ||
res.data.roleDeptNameVo.roleName == '超级管理员'
) {
this.userInfo = {
userType: 'gl', // 登录用户type
userId: '1', // 登录用户id
userName: '张三', // 登录用户name
deptId: '1', // 登录用户部门id
deptName: res.data.roleDeptNameVo.deptName, // 登录用户部门name
role: 'dudao',
roleName: '督导人员',
}
} else if (res.data.roleDeptNameVo.roleName == '行业管理') {
this.userInfo = {
userType: 'gl', // 登录用户type
userId: '1', // 登录用户id
userName: '张三', // 登录用户name
deptId: '1', // 登录用户部门id
deptName: res.data.roleDeptNameVo.deptName, // 登录用户部门name
role: 'dudao',
roleName: '行业检查',
}
} else if (res.data.roleDeptNameVo.roleName == '街道主管') {
this.userInfo = {
userType: 'gl', // 登录用户type
userId: '1', // 登录用户id
userName: '张三', // 登录用户name
deptId: '1', // 登录用户部门id
deptName: res.data.roleDeptNameVo.deptName, // 登录用户部门name
role: 'dudao',
roleName: '行业检查',
}
} else if (res.data.roleDeptNameVo.roleName == '日常管理') {
this.userInfo = {
userType: 'gl', // 登录用户type
userId: '1', // 登录用户id
userName: '张三', // 登录用户name
deptId: '1', // 登录用户部门id
deptName: res.data.roleDeptNameVo.deptName, // 登录用户部门name
role: 'dudao',
roleName: '日常检查',
}
} else if (res.data.roleDeptNameVo.roleName == '商户') {
this.userInfo = {
userType: 'sj', // 登录用户type
userId: '1', // 登录用户id
userName: '张三', // 登录用户name
deptId: '1', // 登录用户部门id
deptName: res.data.roleDeptNameVo.deptName, // 登录用户部门name
businessAddress: res.data.merchantInfoNumVo.businessAddress, //
smallPlaceTypeName: res.data.merchantInfoNumVo.smallPlaceTypeName, //
unitName: res.data.merchantInfoNumVo.unitName, //
role: 'dudao',
roleName: '商家',
}
}
console.log(this.userInfo)
// 生成最终菜单列表
this.menuList = (res.data.modules || []).map((moduleItem) => ({
...(this.defaultMenuList.find(
(d) => d.title === moduleItem.title
) || {}),
...moduleItem,
remark: moduleItem.remark || '',
}))
})
},
// 获取用户数据的方法
getUserData() {
http
.get(
'/gq/checkRecord/merHomeStatistics?merId=1&date=' +
this.selectedDate
)
.then((res) => {
if (res.code == 200) {
this.userData = res.data
}
})
},
},
//过滤器
filters: {
//格式化日期显示的函数,根据需要自定义
formatterData(val) {
if (!val) return ''
const [year, month] = val.split('-')
return `${year}${month}月`
},
},
})
}
...@@ -2,101 +2,103 @@ ...@@ -2,101 +2,103 @@
* 请求拦截、相应拦截、错误统一处理 * 请求拦截、相应拦截、错误统一处理
*/ */
// 环境的切换 // 环境的切换
axios.defaults.baseURL = 'http://192.168.3.37:8036' axios.defaults.baseURL = 'http://192.168.2.16:8080'
axios.defaults.timeout = 50000 axios.defaults.timeout = 50000
// post请求头 // post请求头
// axios.defaults.headers.post['Content-Type'] = 'application/x-www-form-urlencoded;charset=UTF-8' // axios.defaults.headers.post['Content-Type'] = 'application/x-www-form-urlencoded;charset=UTF-8'
axios.defaults.headers.post['Content-Type'] = 'application/json' axios.defaults.headers.post['Content-Type'] = 'application/json'
axios.defaults.headers.common['systemId'] = '1' axios.defaults.headers.common['systemId'] = '1'
axios.defaults.headers.common['Authorization'] = localStorage.getItem('Authorization') axios.defaults.headers.common['Authorization'] =
localStorage.getItem('Authorization')
// 请求拦截器 // 请求拦截器
axios.interceptors.request.use(config => { axios.interceptors.request.use((config) => {
console.log('request拦截器', config) vant.Toast.loading({
vant.Toast.loading({ message: '加载中...',
message: '加载中...', forbidClick: true,
forbidClick: true, loadingType: 'spinner',
loadingType: 'spinner', })
}); return config
return config
}) })
// 响应拦截器 // 响应拦截器
axios.interceptors.response.use((res) => { axios.interceptors.response.use(
// 成功的响应数据 服务器的相关的数据返回来之后,响应拦截器能够检测到,可以做一些事 (res) => {
// 成功的响应数据 服务器的相关的数据返回来之后,响应拦截器能够检测到,可以做一些事
vant.Toast.clear()
return res;
}, (error) => {
// 响应失败的时候的回调函数
return Promise.reject(new Error(error))
})
vant.Toast.clear()
return res
},
(error) => {
// 响应失败的时候的回调函数
return Promise.reject(new Error(error))
}
)
var http = { var http = {
get: function(url, params) { get: function (url, params) {
return new Promise((resolve, reject) => { return new Promise((resolve, reject) => {
axios axios
.get(url, { .get(url, {
params: params params: params,
}) })
.then(res => { .then((res) => {
resolve(res.data) resolve(res.data)
}) })
.catch(err => { .catch((err) => {
reject(err.data) reject(err.data)
}) })
}) })
}, },
post: function(url, params) { post: function (url, params) {
return new Promise((resolve, reject) => { return new Promise((resolve, reject) => {
axios axios
.post(url, params) .post(url, params)
.then(res => { .then((res) => {
let response = res.data let response = res.data
console.log('res.statusCode', response) console.log('res.statusCode', response)
if (response.statusCode >= 300 || response.status >= 300) { if (response.statusCode >= 300 || response.status >= 300) {
// alert('系统发生错误') // alert('系统发生错误')
vant.Dialog.alert({ vant.Dialog.alert({
title: '信息提示', title: '信息提示',
message: response.message, message: response.message,
}) })
return return
} }
resolve(res.data) resolve(res.data)
}) })
.catch(err => { .catch((err) => {
reject(err.data) reject(err.data)
}) })
}) })
}, },
postFile: function(url, params) { postFile: function (url, params) {
return new Promise((resolve, reject) => { return new Promise((resolve, reject) => {
axios({ axios({
url, url,
method: 'post', method: 'post',
data: params, data: params,
headers: { headers: {
'Content-Type': 'application/json', // 'multipart/form-data;', 'Content-Type': 'application/json', // 'multipart/form-data;',
'Authorization': localStorage.getItem('Authorization') Authorization: localStorage.getItem('Authorization'),
}, },
}).then(res => { })
let response = res.data .then((res) => {
console.log('res.statusCode', response) let response = res.data
if (response.statusCode >= 300 || response.status >= 300) { console.log('res.statusCode', response)
// alert('系统发生错误') if (response.statusCode >= 300 || response.status >= 300) {
vant.Dialog.alert({ // alert('系统发生错误')
title: '信息提示', vant.Dialog.alert({
message: response.message, title: '信息提示',
}) message: response.message,
return })
} return
resolve(res.data) }
}) resolve(res.data)
.catch(err => { })
reject(err.data) .catch((err) => {
}) reject(err.data)
}) })
}, })
},
} }
...@@ -34,6 +34,8 @@ document.write('<script type="text/javascript" src="' + contextPath + '/sdk/vue. ...@@ -34,6 +34,8 @@ document.write('<script type="text/javascript" src="' + contextPath + '/sdk/vue.
<script type="text/javascript" src="' + contextPath + '/sdk/flexible.js"></script>\ <script type="text/javascript" src="' + contextPath + '/sdk/flexible.js"></script>\
<script type="text/javascript" src="' + contextPath + '/sdk/util.js?rev=' + jsVersion + '"></script>\ <script type="text/javascript" src="' + contextPath + '/sdk/util.js?rev=' + jsVersion + '"></script>\
<script type="text/javascript" src="' + contextPath + '/sdk/jssdk2/apiKeyMap.js?rev=' + jsVersion + '"></script>\ <script type="text/javascript" src="' + contextPath + '/sdk/jssdk2/apiKeyMap.js?rev=' + jsVersion + '"></script>\
<script type="text/javascript" src="' + contextPath + '/sdk/axios.min.js"></script>\
<script type="text/javascript" src="' + contextPath + '/sdk/axios_http.js"></script>\
<script type="text/javascript" src="' + contextPath + '/sdk/http.js?rev=' + jsVersion + '"></script>'); <script type="text/javascript" src="' + contextPath + '/sdk/http.js?rev=' + jsVersion + '"></script>');
......
...@@ -14,36 +14,36 @@ ...@@ -14,36 +14,36 @@
<div class="header"> <div class="header">
<!-- <div class="level">安全等级</div> --> <!-- <div class="level">安全等级</div> -->
<div class="title"> <div class="title">
<img src="../image/code/sj.png" alt=""><span>威海市宝威酒店有限公司</span> <img src="../image/code/sj.png" alt=""><span>{{userInfo.unitName}}</span>
</div> </div>
<div class="detail"> <div class="detail">
<van-row> <van-row>
<van-col span="24">场所类型: 小餐饮</van-col> <van-col span="24">场所类型: {{userInfo.smallPlaceTypeName}}</van-col>
</van-row> </van-row>
<van-row type="flex" justify="space-around" <van-row type="flex" justify="space-around"
style="width:100%; margin-top: .3rem; margin-bottom: .3rem;"> style="width:100%; margin-top: .3rem; margin-bottom: .3rem;">
<van-col span="6">自查数:75</van-col> <van-col span="6">自查数:{{userData.checkSelfCount}}</van-col>
<van-col span="6">检查数:75</van-col> <van-col span="6">检查数:{{userData.checkCount}}</van-col>
<van-col span="6">隐患数:75</van-col> <van-col span="6">隐患数:{{userData.hiddenCount}}</van-col>
<van-col span="6">未整改:75</van-col> <van-col span="6">未整改:{{userData.hiddenNoReCount}}</van-col>
</van-row> </van-row>
<van-row> <van-row>
<van-col span="24">山东省威海市环翠区和谐街35-6</van-col> <van-col span="24">{{userInfo.businessAddress}}</van-col>
</van-row> </van-row>
</div> </div>
<!-- Tab栏 --> <!-- Tab栏 -->
<van-tabs v-model:active="activeTab" title-active-color="#1989fa" line-height="2px" <van-tabs v-model:active="activeTab" @click="getMerchantSelfCheckData" title-active-color="#1989fa" line-height="2px"
style="margin-bottom: 15px;"> style="margin-bottom: 15px;">
<van-tab title="检查记录"></van-tab> <van-tab title="检查记录" name="1"></van-tab>
<van-tab title="自查记录"></van-tab> <van-tab title="自查记录" name="2"></van-tab>
</van-tabs> </van-tabs>
</div> </div>
<van-list> <van-list>
<van-cell v-for="item in filteredHazards" :key="item.id"> <van-cell v-for="item in hazardList" :key="item.id">
<div style="width: 100%;"> <div style="width: 100%;">
<!-- 第一行:隐患描述 --> <!-- 第一行:隐患描述 -->
<div style=" <div style="
...@@ -54,17 +54,17 @@ ...@@ -54,17 +54,17 @@
font-size: 0.3rem; font-size: 0.3rem;
font-weight: bold; font-weight: bold;
font-family: PingFang SC; font-family: PingFang SC;
">{{ item.description }}</div> ">{{ item.remark }}</div>
<!-- 第二行:状态和时间 --> <!-- 第二行:状态和时间 -->
<div style="display: flex; justify-content: start; gap: .34rem; margin: 8px 0;"> <div style="display: flex; justify-content: start; gap: .34rem; margin: 8px 0;">
<span style="color: #737373; font-size: 0.28rem;">检查时间:{{ item.date }}</span> <span style="color: #737373; font-size: 0.28rem;">检查时间:{{ item.checkTime }}</span>
</div> </div>
<!-- 第三行:商家和箭头 --> <!-- 第三行:商家和箭头 -->
<div style="display: flex; justify-content: start; gap: .4rem; align-items: center;"> <div style="display: flex; justify-content: start; gap: .4rem; align-items: center;">
<span>检查人:XXX</span> <span>检查人:{{item.checkPeople}}</span>
<span>隐患数:985</span> <span>隐患数:{{item.hiddenCount}}</span>
<span>未整改:21</span> <span>未整改:{{item.notRectifiedCount}}</span>
</div> </div>
</div> </div>
</van-cell> </van-cell>
......
// 在原有Vue实例中添加 var VUE = null
new Vue({ window.addEventListener('load', function () {
el: '#app', VUE = new Vue({
data() { el: '#app',
return { data() {
// 新增子Tab数据 return {
subActiveTab: 0, // 新增子Tab数据
hazardList: [{ activeTab: '1',
id: 1, hazardList: [
description: '消防通道被货物堵塞,存在严重安全隐患', // 更多示例数据...
status: '待审核', ],
date: '2024-03-15', // 新增以下数据
shop: 'XX餐饮店', userInfo: {},
type: 2 userData: {
}, checkCount: 0, //检查数
{ checkSelfCount: 0, //自查数
id: 2, hiddenCount: 0, //隐患数
description: '消防通道被货物堵塞,存在严重安全隐患', hiddenNoReCount: 0, //未整改数
status: '待整改', },
date: '2024-03-15', }
shop: 'XX餐饮店', },
type: 2 created() {
}, this.init()
// 更多示例数据... },
], computed: {},
activeTab: 0, methods: {
showTimePicker: false, //初始化页面
// 新增以下数据 init() {
showTypePicker: false, this.getUserInfo()
typeOptions: ['小餐饮', '酒店', '商场', '学校', '医疗机构'], this.getUserData()
formData: { this.getMerchantSelfCheckData()
principal: '', },
phone: '', /**请求数据 */
area: '', // 获取用户数据的方法
businessHours: '', getUserData() {
type: '', // 新增类型字段 http
}, .get('/gq/checkRecord/merHomeStatistics?date=' + this.selectedDate)
checkList: [{ .then((res) => {
id: 1, if (res.code == 200) {
date: '2024-03-15', this.userData = res.data
result: '合格' }
}, })
{ },
id: 2, //获取用户信息
date: '2024-03-14', getUserInfo() {
result: '不合格' http.get('/gq/information/getAll/141 ').then((res) => {
} if (res.code !== 200 && res.data == null) {
] return
} }
}, if (res.data.roleDeptNameVo.roleName == '商户') {
computed: { this.userInfo = {
filteredHazards() { userType: 'sj', // 登录用户type
const statusMap = ['全部', '待审核', '待整改', '已整改']; userId: '1', // 登录用户id
return this.hazardList.filter(item => userName: '张三', // 登录用户name
this.subActiveTab === 0 ? true : item.status === statusMap[this.subActiveTab] deptId: '1', // 登录用户部门id
); deptName: res.data.roleDeptNameVo.deptName, // 登录用户部门name
} businessAddress: res.data.merchantInfoNumVo.businessAddress, //
}, smallPlaceTypeName: res.data.merchantInfoNumVo.smallPlaceTypeName, //
methods: { unitName: res.data.merchantInfoNumVo.unitName, //
// 新增选择确认方法 role: 'dudao',
onConfirmType(value) { roleName: '商家',
this.formData.type = value; }
this.showTypePicker = false; }
}, })
onConfirmTime(time) { },
this.formData.businessHours = time; //获取商户自查数据
this.showTimePicker = false; getMerchantSelfCheckData() {
}, http
statusTagType(status) { .get(
const types = { '/gq/checkRecord/list?merId=1&pageSize=10&pageNum=0&type=' +
'待审核': 'warning', this.activeTab
'待整改': 'primary', )
'已整改': 'success', .then((res) => {
'整改逾期': 'danger', this.hazardList = res.rows
}; })
return types[status] || ''; },
}, },
viewDetail(id) { })
console.log('查看详情:', id); })
// 这里添加跳转逻辑
}
}
});
\ No newline at end of file
// 在原有Vue实例中添加 var VUE = null
new Vue({ window.addEventListener("load", function() {
el: '#app', VUE = new Vue({
data() { // 在原有Vue实例中添加
return { el: '#app',
shanghuName: '', data() {
// 新增子Tab数据 return {
subActiveTab: 0, shanghuName: '',
hazardList: [{ // 新增子Tab数据
id: 1, subActiveTab: 0,
description: '消防通道被货物堵塞,存在严重安全隐患', hazardList: [{
status: '待审核', id: 1,
date: '2024-03-15', description: '消防通道被货物堵塞,存在严重安全隐患',
shop: 'XX餐饮店', status: '待审核',
type: 2 date: '2024-03-15',
}, shop: 'XX餐饮店',
{ type: 2
id: 2, },
description: '消防通道被货物堵塞,存在严重安全隐患', {
status: '待整改', id: 2,
date: '2024-03-15', description: '消防通道被货物堵塞,存在严重安全隐患',
shop: 'XX餐饮店', status: '待整改',
type: 2 date: '2024-03-15',
}, shop: 'XX餐饮店',
// 更多示例数据... type: 2
], },
activeTab: 0, // 更多示例数据...
} ],
}, activeTab: 0,
computed: { }
filteredHazards() {
const statusMap = ['全部', '待审核', '待整改', '已整改'];
return this.hazardList.filter(item =>
this.subActiveTab === 0 ? true : item.status === statusMap[this.subActiveTab]
);
}
},
methods: {
onSearch() {
console.log('xxxx')
},
// 新增选择确认方法
onConfirmType(value) {
this.formData.type = value;
this.showTypePicker = false;
},
onConfirmTime(time) {
this.formData.businessHours = time;
this.showTimePicker = false;
}, },
statusTagType(status) { computed: {
const types = { filteredHazards() {
'待审核': 'warning', const statusMap = ['全部', '待审核', '待整改', '已整改'];
'待整改': 'primary', return this.hazardList.filter(item =>
'已整改': 'success', this.subActiveTab === 0 ? true : item.status === statusMap[this.subActiveTab]
'整改逾期': 'danger', );
}; }
return types[status] || '';
}, },
viewDetail(id) { methods: {
console.log('查看详情:', id); onSearch() {
// 这里添加跳转逻辑 console.log('xxxx')
},
// 新增选择确认方法
onConfirmType(value) {
this.formData.type = value;
this.showTypePicker = false;
},
onConfirmTime(time) {
this.formData.businessHours = time;
this.showTimePicker = false;
},
statusTagType(status) {
const types = {
'待审核': 'warning',
'待整改': 'primary',
'已整改': 'success',
'整改逾期': 'danger',
};
return types[status] || '';
},
viewDetail(id) {
console.log('查看详情:', id);
// 这里添加跳转逻辑
}
} }
} });
}); })
\ No newline at end of file \ No newline at end of file
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment