This commit is contained in:
cxc
2022-09-13 18:23:31 +08:00
commit 3fd5da59a9
63 changed files with 17259 additions and 0 deletions

View File

@ -0,0 +1,22 @@
<template>
<view>
<h1>考勤管理</h1>
</view>
</template>
<script>
export default {
data() {
return {
}
},
methods: {
}
}
</script>
<style>
</style>

52
pages/index/index.vue Normal file
View File

@ -0,0 +1,52 @@
<template>
<view class="content">
<image class="logo" src="/static/logo.png"></image>
<view class="text-area">
<text class="title">{{title}}</text>
</view>
</view>
</template>
<script>
export default {
data() {
return {
title: 'Hello'
}
},
onLoad() {
},
methods: {
}
}
</script>
<style>
.content {
display: flex;
flex-direction: column;
align-items: center;
justify-content: center;
}
.logo {
height: 200rpx;
width: 200rpx;
margin-top: 200rpx;
margin-left: auto;
margin-right: auto;
margin-bottom: 50rpx;
}
.text-area {
display: flex;
justify-content: center;
}
.title {
font-size: 36rpx;
color: #8f8f94;
}
</style>

View File

@ -0,0 +1,55 @@
<template>
<view>
<u-tabs class="tabs" :list="tabList" @change="handleTabClick"></u-tabs>
<!-- <scroll-view scroll-y="true"> -->
<!-- <view> -->
<QualityInspection v-if="activeIndex==0"></QualityInspection>
<SecurityInspection v-else-if="activeIndex==1"></SecurityInspection>
<!-- </view> -->
<!-- </scroll-view> -->
</view>
</template>
<script>
import QualityInspection from './quality_inspection/quality_inspection.vue'
import SecurityInspection from './security_inspection/security_inspection.vue'
export default {
name: 'MobileInspection',
components: {
QualityInspection,
SecurityInspection
},
data() {
return {
activeIndex: 0,
tabList: [{
name: '质量巡检',
}, {
name: '安全巡检',
}, ]
}
},
methods: {
handleTabClick(item) {
console.log(item);
this.activeIndex = item.index;
}
}
}
</script>
<style lang="scss" scoped>
::v-deep .u-tabs__wrapper__nav {
justify-content: space-between;
.u-tabs__wrapper__nav__item {
width: 320rpx;
}
}
.test {
width: 370rpx;
height: 100rpx;
background-color: indianred;
}
</style>

View File

@ -0,0 +1,175 @@
<template>
<view>
<view class="filter-bar">
</view>
<view class="task-item" v-for="(item,index) in taskList" :key="index">
<view class="task-status" :style="`background-color:${item.status==1?'#60a7e9':'#c85449'}`">
<text>
{{item.status==1?'正常':'异常'}}
</text>
</view>
<view class="task-title">
{{item.name}}
</view>
<view class="task-content">
<image src="@/static/inspector/inspector_example.png" mode=""></image>
<view class="desc-list">
<view class="desc-item">
<text class="desc-key">检查部位: </text>
<text class="desc-value">{{item.part}}</text>
</view>
<view class="desc-item">
<text class="desc-key">巡检单位: </text>
<text class="desc-value">{{item.unit}}</text>
</view>
<view class="desc-item">
<text class="desc-key">检查情况: </text>
<text class="desc-value">{{item.situation}}</text>
</view>
<view class="desc-item">
<text class="desc-key">巡检人员: </text>
<text class="desc-value">{{item.staff}}</text>
</view>
<view class="desc-item">
<text class="desc-key">纠正预防措施: </text>
<text class="desc-value">{{item.measure}}</text>
</view>
<view class="desc-item">
<text class="desc-key">巡检日期: </text>
<text class="desc-value">{{item.date}}</text>
</view>
</view>
</view>
</view>
</view>
</template>
<script>
export default {
data() {
return {
// 质量巡检任务列表
taskList: [{
name: '巡检任务1',
part: '南侧立柱',
unit: '遵宜科技',
situation: '正常',
staff: '金一南',
measure: '无',
date: '2020-06-13',
status: 1
}, {
name: '巡检任务1',
part: '南侧立柱',
unit: '遵宜科技',
situation: '正常',
staff: '金一南',
measure: '无',
date: '2020-06-13',
status: 0
}, {
name: '巡检任务1',
part: '南侧立柱',
unit: '遵宜科技',
situation: '正常',
staff: '金一南',
measure: '无',
date: '2020-06-13',
status: 1
}, {
name: '巡检任务1',
part: '南侧立柱',
unit: '遵宜科技',
situation: '正常',
staff: '金一南',
measure: '无',
date: '2020-06-13',
status: 1
}, {
name: '巡检任务1',
part: '南侧立柱',
unit: '遵宜科技',
situation: '正常',
staff: '金一南',
measure: '无',
date: '2020-06-13',
status: 1
}, ]
}
},
methods: {
}
}
</script>
<style lang="scss" scoped>
.task-item {
margin: 0 16rpx 0;
border-radius: 20rpx;
position: relative;
padding: 22rpx 34rpx 34rpx;
box-shadow: 0 4rpx 12rpx 0 rgba(0, 0, 0, 0.4);
.task-status {
position: absolute;
top: 0;
right: 0;
width: 88px;
height: 31px;
border-radius: 0px 10px 1px 26px;
box-shadow: 0 4rpx 12rpx 0 rgba(0, 0, 0, 0.4);
background-color: #60a7e9;
display: flex;
justify-content: center;
align-items: center;
text {
color: #EFEFEF;
font-size: 28rpx;
}
}
.task-title {
font-size: 32rpx;
margin-left: 14rpx;
}
.task-content {
margin-top: 16rpx;
display: flex;
image {
height: 182rpx;
width: 132rpx;
}
.desc-list {
display: flex;
flex-wrap: wrap;
margin-left: 8rpx;
width: 510rpx;
.desc-item {
width: 50%;
.desc-key {
color: #9a9a9a;
font-size: 12rpx;
}
.desc-value {
color: #101010;
font-size: 13rpx;
font-weight: 700;
}
}
}
}
}
.task-item:not(:last-child) {
margin-bottom: 34rpx;
}
</style>

View File

@ -0,0 +1,175 @@
<template>
<view>
<view class="filter-bar">
</view>
<view class="task-item" v-for="(item,index) in taskList" :key="index">
<view class="task-status" :style="`background-color:${item.status==1?'#50c2b0':'#c85449'}`">
<text>
{{item.status==1?'已整改':'未整改'}}
</text>
</view>
<view class="task-title">
{{item.name}}
</view>
<view class="task-content">
<image src="@/static/inspector/inspector_example.png" mode=""></image>
<view class="desc-list">
<view class="desc-item">
<text class="desc-key">检查内容: </text>
<text class="desc-value">{{item.content}}</text>
</view>
<view class="desc-item">
<text class="desc-key">巡检单位: </text>
<text class="desc-value">{{item.unit}}</text>
</view>
<view class="desc-item">
<text class="desc-key">检查情况: </text>
<text class="desc-value">{{item.situation}}</text>
</view>
<view class="desc-item">
<text class="desc-key">巡检人员: </text>
<text class="desc-value">{{item.staff}}</text>
</view>
<view class="desc-item">
<text class="desc-key">纠正预防措施: </text>
<text class="desc-value">{{item.measure}}</text>
</view>
<view class="desc-item">
<text class="desc-key">巡检日期: </text>
<text class="desc-value">{{item.date}}</text>
</view>
</view>
</view>
</view>
</view>
</template>
<script>
export default {
data() {
return {
// 质量巡检任务列表
taskList: [{
name: '巡检任务1',
content: '头盔佩戴',
unit: '遵宜科技',
situation: '正常',
staff: '金一南',
measure: '无',
date: '2020-06-13',
status: 1
}, {
name: '巡检任务1',
content: '头盔佩戴',
unit: '遵宜科技',
situation: '正常',
staff: '金一南',
measure: '无',
date: '2020-06-13',
status: 0
}, {
name: '巡检任务1',
content: '头盔佩戴',
unit: '遵宜科技',
situation: '正常',
staff: '金一南',
measure: '无',
date: '2020-06-13',
status: 1
}, {
name: '巡检任务1',
content: '头盔佩戴',
unit: '遵宜科技',
situation: '正常',
staff: '金一南',
measure: '无',
date: '2020-06-13',
status: 1
}, {
name: '巡检任务1',
content: '头盔佩戴',
unit: '遵宜科技',
situation: '正常',
staff: '金一南',
measure: '无',
date: '2020-06-13',
status: 1
}, ]
}
},
methods: {
}
}
</script>
<style lang="scss" scoped>
.task-item {
margin: 0 16rpx 0;
border-radius: 20rpx;
position: relative;
padding: 22rpx 34rpx 34rpx;
box-shadow: 0 4rpx 12rpx 0 rgba(0, 0, 0, 0.4);
.task-status {
position: absolute;
top: 0;
right: 0;
width: 88px;
height: 31px;
border-radius: 0px 10px 1px 26px;
box-shadow: 0 4rpx 12rpx 0 rgba(0, 0, 0, 0.4);
background-color: #60a7e9;
display: flex;
justify-content: center;
align-items: center;
text {
color: #EFEFEF;
font-size: 28rpx;
}
}
.task-title {
font-size: 32rpx;
margin-left: 14rpx;
}
.task-content {
margin-top: 16rpx;
display: flex;
image {
height: 182rpx;
width: 132rpx;
}
.desc-list {
display: flex;
flex-wrap: wrap;
margin-left: 8rpx;
width: 510rpx;
.desc-item {
width: 50%;
.desc-key {
color: #9a9a9a;
font-size: 12rpx;
}
.desc-value {
color: #101010;
font-size: 13rpx;
font-weight: 700;
}
}
}
}
}
.task-item:not(:last-child) {
margin-bottom: 34rpx;
}
</style>

210
pages/monitor/monitor.vue Normal file
View File

@ -0,0 +1,210 @@
<template>
<view>
<view class="search-bar">
<input type="text">
</view>
<view class="site-list">
<view class="site-item" v-for="item in siteList" :key="item.id">
<view class="site-title">
<text>{{item.name}}</text>
</view>
<view class="camera-list">
<view class="camera-item" v-for="(cameraItem,index) in item.camera_list" :key="index">
<image class="camera-image" src="../../static/camera_example.png" mode=""></image>
<view class="camera-title">
{{cameraItem.name}}
</view>
</view>
</view>
<view class="site-time">
<text>{{item.time}}</text>
</view>
</view>
</view>
</view>
</template>
<script>
export default {
data() {
return {
siteList: [{
id: 1,
name: '项目场地1',
time: '2022-09-12 12:12:12',
camera_list: [{
name: 'camera1'
},
{
name: 'camera1'
},
{
name: 'camera1'
}
]
},
{
id: 2,
name: '项目场地2',
time: '2022-09-12 12:12:12',
camera_list: [{
name: 'camera1'
},
{
name: 'camera1'
},
{
name: 'camera1'
}
]
}, {
id: 3,
name: '项目场地2',
time: '2022-09-12 12:12:12',
camera_list: [{
name: 'camera1'
},
{
name: 'camera1'
},
{
name: 'camera1'
}
]
}, {
id: 4,
name: '项目场地2',
time: '2022-09-12 12:12:12',
camera_list: [{
name: 'camera1'
},
{
name: 'camera1'
},
{
name: 'camera1'
}
]
}, {
id: 5,
name: '项目场地2',
time: '2022-09-12 12:12:12',
camera_list: [{
name: 'camera1'
},
{
name: 'camera1'
},
{
name: 'camera1'
}
]
}, {
id: 6,
name: '项目场地2',
time: '2022-09-12 12:12:12',
camera_list: [{
name: 'camera1'
},
{
name: 'camera1'
},
{
name: 'camera1'
}
]
}, {
id: 7,
name: '项目场地2',
time: '2022-09-12 12:12:12',
camera_list: [{
name: 'camera1'
},
{
name: 'camera1'
},
{
name: 'camera1'
}
]
}, {
id: 8,
name: '项目场地2',
time: '2022-09-12 12:12:12',
camera_list: [{
name: 'camera1'
},
{
name: 'camera1'
},
{
name: 'camera1'
}
]
}
]
}
},
methods: {
}
}
</script>
<style lang="scss" scoped>
.site-list {
.site-item {
box-shadow: 0 6rpx 0 rgba(0, 0, 0, 0.4);
margin-left: 16rpx;
margin-right: 16rpx;
margin-bottom: 40rpx;
border-radius: 20rpx;
.site-title {
background-color: rgb(153, 153, 153);
width: 92px;
height: 30px;
line-height: 20px;
border-radius: 20rpx 0rpx 18rpx 0rpx;
uni-text {
font-family: YSBiaoTiHei-regular;
color: white;
font-size: 20px;
}
}
.camera-list {
margin-top: 12rpx;
white-space: nowrap;
width: 100%;
display: flex;
justify-content: space-between;
.camera-item {
background-color: aquamarine;
// margin-right: 20rpx;
.camera-image {
width: 200rpx;
height: 140rpx;
}
.camera-title {
font-size: 20rpx;
text-align: center;
}
}
}
.site-time {
margin-top: 26rpx;
text-align: right;
height: 30rpx;
font-size: 28rpx;
color: #fff;
background-color: #d7d7d7;
}
}
}
</style>

126
pages/personal/personal.vue Normal file
View File

@ -0,0 +1,126 @@
<template>
<view>
<view class="avatar_name">
<view class="avatar">
<image src="../../static/personal/avatar_sample.png" mode=""></image>
</view>
<text class="username">
张三
</text>
</view>
<view class="user-info">
<view class="user-info-item">
<text class="key">
性别:&nbsp;
</text>
<text class="value">
{{userInfo.gender}}
</text>
</view>
<view class="user-info-item">
<text class="key">
年龄:&nbsp;
</text>
<text class="value">
{{userInfo.age}}
</text>
</view>
<view class="user-info-item">
<text class="key">
所属单位:&nbsp;
</text>
<text class="value">
{{userInfo.unit}}
</text>
</view>
<view class="user-info-item">
<text class="key">
部门:&nbsp;
</text>
<text class="value">
{{userInfo.department}}
</text>
</view>
<view class="user-info-item">
<text class="key">
岗位:&nbsp;
</text>
<text class="value">
{{userInfo.post}}
</text>
</view>
<view class="user-info-item">
<text class="key">
负责项目:&nbsp;
</text>
<text class="value">
{{userInfo.project}}
</text>
</view>
<view class="user-info-item">
<text class="key">
项目角色:&nbsp;
</text>
<text class="value">
{{userInfo.role}}
</text>
</view>
</view>
</view>
</template>
<script>
export default {
data() {
return {
userInfo: {
name: '张三',
gender: '男',
age: 26,
unit: '航天科工六院',
department: '**部',
post: '**经理',
project: '负责项目',
role: '**项目经理'
}
}
},
methods: {
}
}
</script>
<style lang="scss">
.avatar_name {
border: 1px solid rgb(186, 186, 186);
display: flex;
align-items: center;
height: 180rpx;
padding-left: 38rpx;
.avatar {
display: flex;
align-items: center;
uni-image {
width: 114rpx;
height: 114rpx;
}
}
.username {
margin-left: 100rpx;
font-size: 28px;
}
}
.user-info {
.user-info-item {
display: flex;
height: 120rpx;
align-items: center;
border: 1px solid #bbb;
}
}
</style>

View File

@ -0,0 +1,36 @@
<template>
<view>
<u-tabs :list="tabList"></u-tabs>
</view>
</template>
<script>
export default {
data() {
return {
tabList: [{
text: '主页'
}, {
text: '进度管理'
},
{
text: '质量管理'
},
{
text: '安全管理'
},
{
text: '材料管理'
}
]
}
},
methods: {
}
}
</script>
<style>
</style>

View File

@ -0,0 +1,359 @@
<template>
<view>
<view class="page-top" style="background-color: aqua">
<u-navbar title="个人中心" placeholder bgColor="transparent" :leftIcon="null" titleStyle="color:white">
</u-navbar>
<view class="search-bar">
<u--input placeholder="请输入项目名称" prefixIcon="search" prefixIconStyle="font-size: 32px;color: #909399">
</u--input>
</view>
<u-tabs :list="tabList" itemStyle="width:18%;height:80rpx" activeStyle="color:white"
inactiveStyle="color:white"></u-tabs>
</view>
<view class="filter-bar">
<view class="filter-item">
<text>时间</text>
<u-icon name="arrow-down-fill" color="#8F959E" size="14"></u-icon>
</view>
<view class="filter-item">
<text>金额</text>
<u-icon name="arrow-down-fill" color="#8F959E" size="14"></u-icon>
</view>
<view class="filter-item">
<text>级别</text>
<u-icon name="arrow-down-fill" color="#8F959E" size="14"></u-icon>
</view>
<view class="filter-item">
<text>筛选</text>
<u-icon name="arrow-down-fill" color="#8F959E" size="14"></u-icon>
</view>
</view>
<view class="scroll-y">
<u-swipe-action class="swiper-item" v-for="item in projectList" :key="item.id">
<u-swipe-action-item :options="options">
<!-- <navigator url='pages/project_supervision/project_detail/project_detail'> -->
<view class="project-item" @tap="goDetail">
<view class="project-status"
:style="`background-image: linear-gradient(219deg, ${statusDict[item.status].color1} 0%, ${statusDict[item.status].color2} 99%)`">
<text>{{statusDict[item.status].name}}</text>
</view>
<text>{{item.name}}</text>
<view class="project-desc">
<view class="project-desc-item">
<text class="project-desc-key">
建设性质
</text>
<text class="project-desc-value">
{{item.type}}
</text>
</view>
<view class="project-desc-item" style="text-align: end;">
<text class="project-desc-key">
施工单位
</text>
<text class="project-desc-value">
{{item.unit}}
</text>
</view>
<view class="project-desc-item">
<text class="project-desc-key">
监理单位
</text>
<text class="project-desc-value">
{{item.supervisorUnit}}
</text>
</view>
<view class="project-desc-item" style="text-align: end;">
<text class="project-desc-key">
总面积
</text>
<text class="project-desc-value">
{{item.area}}平方
</text>
</view>
<view class="project-desc-item">
<text class="project-desc-key">
总投资
</text>
<text class="project-desc-value">
{{item.invest}}万元
</text>
</view>
<view class="project-desc-item" style="text-align: end;">
<text class="project-desc-key">
建设性质
</text>
<text class="project-desc-value">
{{item.responsible}}
</text>
</view>
<view class="divider"></view>
<!-- <divider></divider> -->
<view class="project-desc-item">
<text class="project-desc-key">
项目编号
</text>
<text class="project-desc-value">
{{item.id}}
</text>
</view>
<view class="project-desc-item" style="text-align: end;">
<text class="project-desc-key">
立项时间
</text>
<text class="project-desc-value">
{{item.createTime}}
</text>
</view>
</view>
</view>
<!-- </navigator> -->
</u-swipe-action-item>
</u-swipe-action>
</view>
</view>
</template>
<script>
export default {
data() {
return {
statusDict: {
0: {
name: '已立项',
color1: '#39DAAA',
color2: '#02C489'
},
1: {
name: '进行中',
color1: '#FD934E',
color2: '#FF7442'
},
2: {
name: '已完成',
color1: '#39DAAA',
color2: '#02C489'
}
},
options: [{
text: '编辑',
style: {
backgroundColor: '#e99d42'
}
},
{
text: '删除',
style: {
backgroundColor: '#f56c6c'
}
}
],
tabList: [{
name: '全部'
},
{
name: '已立项'
},
{
name: '进行中'
},
{
name: '已验收'
},
],
projectList: [{
name: '六院信息化项目',
type: '商用',
unit: '内蒙航天建工集团',
supervisorUnit: '建华监理单位',
area: 1500,
invest: 200,
status: 0, //0:已立项, 1:进行中, 2:已完成
responsible: '郝昊',
id: "0e13werwr313",
createTime: '2022-02-32'
},
{
name: '工棚改造项目',
type: '商用',
unit: '内蒙航天建工集团',
supervisorUnit: '建华监理单位',
area: 1500,
invest: 200,
status: 0, //0:已立项, 1:进行中, 2:已完成
responsible: '郝昊',
id: "0e1rwerw748313",
createTime: '2022-02-32'
},
{
name: '工棚改造项目',
type: '商用',
unit: '内蒙航天建工集团',
supervisorUnit: '建华监理单位',
area: 1500,
invest: 200,
status: 0, //0:已立项, 1:进行中, 2:已完成
responsible: '郝昊',
id: "0e13wrw77587err",
createTime: '2022-02-32'
},
{
name: '工棚改造项目',
type: '商用',
unit: '内蒙航天建工集团',
supervisorUnit: '建华监理单位',
area: 1500,
invest: 200,
status: 0, //0:已立项, 1:进行中, 2:已完成
responsible: '郝昊',
id: "0e13wrw643542err",
createTime: '2022-02-32'
},
{
name: '工棚改造项目',
type: '商用',
unit: '内蒙航天建工集团',
supervisorUnit: '建华监理单位',
area: 1500,
invest: 200,
status: 0, //0:已立项, 1:进行中, 2:已完成
responsible: '郝昊',
id: "0e1335626wrwerr",
createTime: '2022-02-32'
},
{
name: '工棚改造项目',
type: '商用',
unit: '内蒙航天建工集团',
supervisorUnit: '建华监理单位',
area: 1500,
invest: 200,
status: 0, //0:已立项, 1:进行中, 2:已完成
responsible: '郝昊',
id: "0e312313wrwerr",
createTime: '2022-02-32'
}
]
}
},
methods: {
goDetail() {
console.log('跳转')
uni.navigateTo({
url: '/pages/project_supervision/project_detail/project_detail',
})
}
}
}
</script>
<style>
page {
background-color: #f6f6f6;
}
</style>
<style lang="scss" scoped>
.page-top {
background: linear-gradient(to top right, #496df6, #2e9ee8);
}
.search-bar {
margin: 0 32rpx 0;
.u-input {
height: 48rpx;
background-color: white;
}
}
.filter-bar {
height: 80rpx;
padding: 0 40rpx 0;
display: flex;
justify-content: space-between;
align-items: center;
.filter-item {
display: flex;
text {
color: #8F959E;
// margin-right: 8rpx;
}
}
}
.scroll-y {
height: 100%;
overflow-y: scroll;
}
.swiper-item {
margin: 0rpx 16rpx 0rpx;
}
.swiper-item:not(:last-child) {
margin-bottom: 20rpx;
}
.project-item {
position: relative;
background-color: white;
padding: 28rpx 20rpx 28rpx;
border-radius: 8rpx;
.project-status {
position: absolute;
top: 0;
right: 0;
display: flex;
justify-content: center;
align-items: center;
width: 112rpx;
height: 48rpx;
background-image: linear-gradient(219deg, #FD934E 0%, #FF7442 99%);
border-radius: 0 8rpx 0 32rpx;
text {
font-size: 12rpx;
color: #fff;
}
}
.project-desc {
display: flex;
flex-wrap: wrap;
.project-desc-item {
width: 50%;
.project-desc-key {
color: #8F959E;
font-size: 24rpx;
}
.project-desc-value {
margin-left: 8rpx;
color: #333;
font-size: 24rpx;
}
}
.divider {
margin: 15rpx 0 15rpx;
width: 100%;
height: 3rpx;
background-color: #f2f2f2;
}
}
}
</style>