Merge branch 'dev-sy-10-10'

This commit is contained in:
BianLzhaoMin 2024-10-23 11:35:49 +08:00
commit 3e0fb624ab
5 changed files with 636 additions and 24 deletions

View File

@ -761,6 +761,12 @@
"navigationStyle": "custom"
}
},
{
"path": "pages/workPlan/custody/index",
"style": {
"navigationStyle": "custom"
}
},
{
"path": "pages/workPlan/dayPlan/index",
"style": {

View File

@ -0,0 +1,245 @@
<template>
<view>
<u-navbar
class="u-navbar"
title="现场监护"
placeholder
@leftClick="leftClick"
leftIconColor="#fff"
bgColor="#00337A"
:titleStyle="{ color: '#FFF', fontSize: '32rpx' }"
/>
<view class="custody-container">
<view class="header-btn">
<view :class="{ active: current === 0 }" @tap="onCheckTap(0)">新增数据</view>
<view :class="{ active: current === 1 }" @tap="onCheckTap(1)">我的数据</view>
</view>
<view style="width: 100%">
<swiper style="width: 100%" :current="current" @change="onSwiperChange" :style="{ height: navHeight + 'px' }">
<swiper-item class="swiper-item-content" :style="{ height: navHeight + 'px' }">
<scroll-view scroll-y="true" class="scroll-view-y" :style="{ height: navHeight + 'px' }">
<view class="risk-header">
<view class="risk-left">
<view>今日</view>
<view>风险</view>
</view>
<view class="risk-right">
<view style="margin-top: 16rpx">
<text>我的项目</text>
<text style="color: #ca6d58">高风险 0</text>
<text style="color: #c2a95d; margin-left: 46rpx">中风险 0</text>
<text style="color: #b12d3f; margin-left: 46rpx">特高风险 0</text>
</view>
<view>
<text>全部项目</text>
<text style="color: #ca6d58">高风险 0</text>
<text style="color: #c2a95d; margin-left: 46rpx">中风险 0</text>
<text style="color: #b12d3f; margin-left: 46rpx">特高风险 0</text>
</view>
</view>
</view>
<!-- 选择今日 日计划风险 -->
<view class="change-today">
<view class="today-title">
<view class="title-bold">选择今日 日计划风险</view>
<view>去选择风险点</view>
</view>
<uni-forms label-position="top" label-width="200">
<uni-forms-item label="作业风险内容" required>
<uni-easyinput type="text" placeholder="请填写" />
</uni-forms-item>
<uni-forms-item label="风险等级" required>
<uni-easyinput type="text" placeholder="请填写" />
</uni-forms-item>
<uni-forms-item label="工程名称" required>
<uni-easyinput type="text" placeholder="请填写" />
</uni-forms-item>
</uni-forms>
</view>
<!-- 现场监护 -->
<view class="scene-container">
<view class="title-bold">现场监护</view>
<uni-forms label-position="top" label-width="200">
<uni-forms-item label="当前位置" required>
<uni-easyinput type="text" placeholder="请填写" />
</uni-forms-item>
<uni-forms-item label="附件上传(1-6张照片)" required>
<view class="example-body">
<uni-file-picker limit="6" title="最多选择6张图片"></uni-file-picker>
</view>
</uni-forms-item>
<uni-forms-item label="电子签名" required>
<uni-easyinput type="text" placeholder="请填写" />
</uni-forms-item>
<uni-forms-item label="备注" required>
<uni-easyinput type="text" placeholder="请填写" />
</uni-forms-item>
<button>提交</button>
</uni-forms>
</view>
</scroll-view>
</swiper-item>
<swiper-item></swiper-item>
</swiper>
</view>
</view>
<m-tabbar fixed fill :current="0" :tabbar="tabbar" class="bottom-tab"></m-tabbar>
</view>
</template>
<script>
import TabbarConfig from '../util/tabbar'
export default {
data() {
return {
current: 0,
tabbar: TabbarConfig,
navHeight: 100,
pH: 0 //
}
},
methods: {
leftClick() {
uni.navigateBack()
},
onCheckTap(type) {
this.current = type
},
onSwiperChange(e) {
console.log('轮播图change事件', e)
this.current = e.target.current
}
},
onReady() {
let that = this
uni.getSystemInfo({
//uni-app
success(res) {
//
that._data.pH = res.windowHeight //windoHeight使
console.log('res.windowHeight窗口高度', res.windowHeight)
let titleH = uni.createSelectorQuery().select('.scroll-view-y') //class/id
// let bottomBox = uni.createSelectorQuery().select('.bottom-tab')
// let bottomHeight = 0
// bottomBox
// .boundingClientRect(data => {
// console.log('data----', data)
// bottomHeight = data.height
// })
// .exec()
titleH
.boundingClientRect(data => {
let pH = that._data.pH
that._data.navHeight = pH - data.top //=-data.top
console.log('that._data.navHeight', that._data.navHeight)
})
.exec()
}
})
}
}
</script>
<style lang="scss" scoped>
.custody-container {
// background-color: #ccc;
.header-btn {
display: flex;
background-color: #fff;
view {
flex: 1;
padding: 30rpx 0;
color: #a8a8ad;
font-size: 36rpx;
text-align: center;
transition: all 0.3s ease;
}
.active {
color: #043372;
border-bottom: 2px solid #043372;
}
}
.swiper-item-content {
background-color: #efefef;
}
.scroll-view-y {
width: 100%;
background-color: #efefef;
.title-bold {
font-size: 32rpx;
font-weight: bold;
}
.risk-header {
width: 94%;
margin: 16rpx auto;
display: flex;
align-items: center;
background-color: #fff;
padding: 2rpx 14rpx;
border: 1px solid #ccc;
border-radius: 6rpx;
.risk-left {
padding: 10rpx;
border-radius: 10rpx;
background-color: #da0019;
color: #fff;
}
.risk-right {
margin-left: 6rpx;
}
}
.change-today {
width: 94%;
margin: 16rpx auto;
padding: 26rpx;
border: 1px solid #ccc;
background-color: #fff;
border-radius: 6rpx;
.today-title {
display: flex;
justify-content: space-between;
align-items: center;
}
.today-title view:last-child {
padding: 26rpx 6rpx;
background-color: #d6001a;
border-radius: 20rpx;
color: #fff;
}
::v-deep .uni-forms-item__label {
font-weight: bold;
color: #000;
font-size: 26rpx;
}
}
.scene-container {
width: 94%;
margin: 16rpx auto;
padding: 26rpx;
border: 1px solid #ccc;
background-color: #fff;
border-radius: 6rpx;
}
}
}
</style>

View File

@ -5,6 +5,32 @@
<text>{{ currentYear }}{{ currentMonth + 1 }}</text>
<text @click="changeMonth(1)"></text>
</view> -->
<view class="header">
<view v-show="activeType === 1">
<uni-icons type="left" size="16" @click="changeMonth(-1)"></uni-icons>
<text>{{ currentYear }}-{{ currentMonth + 1 }}</text>
<uni-icons type="right" size="16" @click="changeMonth(1)"></uni-icons>
</view>
<view v-show="activeType === 2">
<uni-icons type="left" size="16" @click="changeWeek(-1)"></uni-icons>
<text class="week-container">{{ weekStart }}~{{ weekEnd }}</text>
<uni-icons type="right" size="16" @click="changeWeek(1)"></uni-icons>
</view>
<view v-show="activeType === 3">
<uni-icons type="left" size="16" @click="changeDay(-1)"></uni-icons>
<text>{{ currentDay }}</text>
<uni-icons type="right" size="16" @click="changeDay(1)"></uni-icons>
</view>
<view>
<button :class="{ 'active-button ': activeType === 1 }" @tap="onCheckTime(1)"></button>
<button :class="{ 'active-button ': activeType === 2 }" @tap="onCheckTime(2)"></button>
<button :class="{ 'active-button ': activeType === 3 }" @tap="onCheckTime(3)"></button>
</view>
</view>
<!-- 选择月的时候的日历 -->
<view v-show="activeType === 1">
<view class="weekdays">
<text v-for="day in weekdays" :key="day">{{ day }}</text>
</view>
@ -21,10 +47,55 @@
<text>:30</text>
<text>可接受:4</text>
</view>
<!-- <view>999</view> -->
<!-- <view v-if="day.customContent" class="custom-content">
{{ day.customContent }}
</view> -->
</view>
</view>
</view>
<!-- 选择周的时候日历 -->
<view v-show="activeType === 2">
<view class="week-th">
<view v-for="(item, index) in weekList" :key="item">
<text>{{ item.title }}</text>
<text v-if="index !== 0" style="margin-top: 6rpx">{{ weekTimeChange(index) }}</text>
</view>
</view>
<view class="week-td" v-for="(item, index) in weekCompanyList" :key="index">
<view>
<text style="font-size: 26rpx">{{ item.name }}</text>
</view>
<view v-for="(i, j) in item.weekList" :key="j">
<text class="style_1">{{ i.height }}</text>
<text class="style_2">{{ i.height }}</text>
<text class="style_3">{{ i.kjs }}</text>
<text style="margin-bottom: 60rpx" class="style_4">可接受{{ i.height }}</text>
</view>
</view>
</view>
<!-- 选择天的时候日历 -->
<view v-show="activeType === 3">
<view class="day-th">
<view>工程名称</view>
<view>作业人数</view>
<view>
<text>{{ currentWeekDay }}</text>
<text>{{ currentDays }}</text>
</view>
</view>
<view class="day-td">
<view>10kv换东线10kv换东线10kv换东线10kv换东线10kv换东线</view>
<view>
<text>3</text>
</view>
<view>
<text class="style_1"></text>
<text class="style_2"></text>
<text class="style_3"></text>
<text class="style_4">可接受</text>
<text class="style_4">特高</text>
</view>
</view>
</view>
</view>
@ -34,15 +105,109 @@
export default {
data() {
return {
activeType: 1,
currentYear: new Date().getFullYear(),
currentMonth: new Date().getMonth(),
weekdays: ['周日', '周一', '周二', '周三', '周四', '周五', '周六'],
weekList: [
{ title: '分公司', time: '' },
{ title: '周一', time: this.$moment().week(this.$moment().week()).startOf('week').format('MM-DD') },
{
title: '周二',
time: this.$moment(this.$moment().week(this.$moment().week()).startOf('week').format('YYYY-MM-DD'))
.add(1, 'days')
.format('MM-DD')
},
{
title: '周三',
time: this.$moment(this.$moment().week(this.$moment().week()).startOf('week').format('YYYY-MM-DD'))
.add(2, 'days')
.format('MM-DD')
},
{
title: '周四',
time: this.$moment(this.$moment().week(this.$moment().week()).startOf('week').format('YYYY-MM-DD'))
.add(3, 'days')
.format('MM-DD')
},
{
title: '周五',
time: this.$moment(this.$moment().week(this.$moment().week()).startOf('week').format('YYYY-MM-DD'))
.add(4, 'days')
.format('MM-DD')
},
{
title: '周六',
time: this.$moment(this.$moment().week(this.$moment().week()).startOf('week').format('YYYY-MM-DD'))
.add(5, 'days')
.format('MM-DD')
},
{ title: '周日', time: this.$moment().week(this.$moment().week()).endOf('week').format('MM-DD') }
],
weekStart: this.$moment().week(this.$moment().week()).startOf('week').format('YYYY-MM-DD'),
weekEnd: this.$moment().week(this.$moment().week()).endOf('week').format('YYYY-MM-DD'),
currentDay: this.$moment().format('YYYY-MM-DD'),
weekCompanyList: [
{
name: '全部',
weekList: [
{
height: 3,
kjs: 6
},
{
height: 3,
kjs: 6
}
]
},
{
name: '分公司一',
weekList: [
{
height: 3,
kjs: 6
},
{
height: 3,
kjs: 6
}
]
},
{
name: '分公司二',
weekList: [
{
height: 3,
kjs: 6
},
{
height: 3,
kjs: 6
}
]
}
],
days: [],
// currentWeekDay: this.$moment().day(),
currentDays: this.$moment().format('MM-DD'),
customDates: {
'2023-06-15': '自定义内容'
}
}
},
computed: {
weekTimeChange() {
return index => {
return this.$moment(this.weekStart)
.add(index - 1, 'days')
.format('MM-DD')
}
},
currentWeekDay() {
return this.onTransWeek(this.$moment(this.currentDay).day())
}
},
mounted() {
this.generateCalendar()
},
@ -98,9 +263,58 @@ export default {
}
this.generateCalendar()
},
changeDay(delta) {
if (delta > 0) {
this.currentDay = this.$moment(this.currentDay).add(1, 'days').format('YYYY-MM-DD')
this.currentDays = this.$moment(this.currentDays).add(1, 'days').format('MM-DD')
} else {
this.currentDay = this.$moment(this.currentDay).subtract(1, 'days').format('YYYY-MM-DD')
this.currentDays = this.$moment(this.currentDays).subtract(1, 'days').format('MM-DD')
}
},
changeWeek(delta) {
if (delta > 0) {
this.weekStart = this.$moment(this.weekStart).add(7, 'days').format('YYYY-MM-DD')
this.weekEnd = this.$moment(this.weekEnd).add(7, 'days').format('YYYY-MM-DD')
} else {
this.weekStart = this.$moment(this.weekStart).subtract(7, 'days').format('YYYY-MM-DD')
this.weekEnd = this.$moment(this.weekEnd).subtract(7, 'days').format('YYYY-MM-DD')
}
},
selectDate(day) {
console.log('选择的日期', day.date)
//
},
onTransWeek(num) {
let weekStr = ''
switch (num) {
case 0:
weekStr = '周日'
break
case 1:
weekStr = '周一'
break
case 2:
weekStr = '周二'
break
case 3:
weekStr = '周三'
break
case 4:
weekStr = '周四'
break
case 5:
weekStr = '周五'
break
case 6:
weekStr = '周六'
break
}
return weekStr
},
onCheckTime(type) {
this.activeType = type
}
}
}
@ -113,10 +327,61 @@ export default {
/* padding: 20rpx; */
}
.header {
width: 100%;
display: flex;
justify-content: space-between;
align-items: center;
margin-bottom: 20rpx;
view {
flex: 1;
height: 80rpx;
display: flex;
align-items: center;
justify-content: space-between;
font-size: 36rpx;
font-weight: bold;
}
.week-container {
font-size: 24rpx !important;
font-weight: normal !important;
}
}
.header view:last-child {
width: 45%;
margin-right: 20rpx;
background-color: #f8f8f8;
border-radius: 40rpx;
button {
flex: 1;
height: 80rpx;
color: #000;
line-height: 80rpx;
font-weight: normal;
font-size: 36rpx;
cursor: pointer;
transition: all 0.3s ease;
}
button:last-child {
border-radius: 40rpx;
}
button:first-child {
border-radius: 40rpx;
}
.active-button {
border-radius: 40rpx;
background-color: #21a1f4;
color: #fff;
}
button::after {
border: none;
}
}
.weekdays {
display: flex;
@ -139,7 +404,7 @@ export default {
margin-bottom: 3rpx;
padding-left: 3rpx;
text-align: left;
font-size: 22rpx;
font-size: 24rpx;
}
}
.risk-container text:first-child {
@ -148,6 +413,12 @@ export default {
}
.risk-container text:nth-child(2) {
background-color: #cff2ec;
border-left: 2px solid #1db691;
}
.risk-container text:nth-child(3) {
background-color: #d8fbff;
border-left: 2px solid #45e6ed;
}
}
.days view {
@ -171,4 +442,88 @@ export default {
font-size: 20rpx;
color: #007aff;
}
.week-th,
.week-td {
width: 100%;
display: flex;
view {
width: 12.5%;
display: flex;
flex-direction: column;
align-items: center;
justify-content: center;
}
}
.week-td view text {
width: 100%;
margin-bottom: 3rpx;
padding-left: 2rpx;
display: inline-block;
font-size: 22rpx;
// font-weight: bold;
}
.style_1 {
background-color: #ffd5d6;
border-left: 2px solid #f6322a;
}
.style_2 {
background-color: #fee9ca;
border-left: 2px solid #f58b07;
}
.style_3 {
background-color: #d1f1ec;
border-left: 2px solid #14bb91;
}
.style_4 {
background-color: #d8fbfc;
border-left: 2px solid #3eebf7;
}
.day-th,
.day-td {
display: flex;
align-items: center;
view {
width: 33.33%;
display: flex;
flex-direction: column;
// align-items: center;
justify-content: center;
text {
width: 100%;
text-align: center;
}
}
}
.day-td {
// height: 180rpx;
view {
height: 100%;
padding: 30rpx 0;
}
}
.day-th view:nth-child(2) {
border-left: 1px solid #ccc;
border-right: 1px solid #ccc;
}
.day-td view:nth-child(2) {
border-left: 1px solid #ccc;
border-right: 1px solid #ccc;
}
.day-td view:last-child text {
width: 100%;
margin-left: 10rpx;
margin-bottom: 3rpx;
text-align: left;
}
</style>

View File

@ -10,7 +10,7 @@
:titleStyle="{ color: '#FFF', fontSize: '32rpx' }"
/>
<scroll-view :scroll-top="scrollTop" scroll-y="true">
<scroll-view scroll-y="true">
<!-- 日风险概况 -->
<DayRiskView />
<!-- 滚动提示 -->
@ -28,7 +28,7 @@ import TabbarConfig from '../util/tabbar'
import DayRiskView from './components/day-risk-view'
import HomeNoticeBar from './components/home-notice-bar'
import RiskCalendar from './components/risk-calendar.vue'
import RiskCalendar from './components/calendar.vue'
export default {
components: {
DayRiskView,
@ -66,7 +66,7 @@ export default {
}
.page {
width: 100vw;
height: 100vh;
// height: 100vh;
// background-color: #efefef;
background: #fff;
box-sizing: border-box;

View File

@ -3,7 +3,7 @@
<view class="custody">
<h4>现场监护</h4>
<view class="custody-content">
<view class="icon-box">
<view class="icon-box" @tap="onJumpCustody">
<image src="@/static/realName/attendance_statistics.png" mode="scaleToFill" />
现场监护
</view>
@ -12,7 +12,13 @@
</template>
<script>
export default {}
export default {
methods: {
onJumpCustody() {
uni.navigateTo({ url: '/pages/workPlan/custody/index' })
}
}
}
</script>
<style lang="scss" scoped>